mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-04 15:04:31 +00:00
Macros: PLAYER
-> GET_PLAYER(globalCtx)
, ACTIVE_CAM
-> GET_ACTIVE_CAM(globalCtx)
(#921)
* PLAYER -> GET_PLAYER(globalCtx) * ACTIVE_CAM -> GET_ACTIVE_CAM(globalCtx) * PR Suggestions * formatter * Add brackets * remove from actorfixer.py * Bring back actorfixer.py change
This commit is contained in:
parent
f8498478c4
commit
1117783731
281 changed files with 1013 additions and 979 deletions
|
@ -294,14 +294,14 @@ extern Vec3f D_80A88CF0;
|
|||
```
|
||||
(you must include the `.0f` parts even for integer floats: it can affect codegen, and as such it is part of our style).
|
||||
|
||||
- replace the mysterious `globalCtx->unk1C44 + 0x24`. The first part is so common that most people on decomp know it by heart: it is the location of the Player actor. `+ 0x24` is obviously an offset that leats to a `Vec3f`, and if you look in the actor struct, you find that this is the location of `world.pos`. To use `Player`, we put `Player* player = PLAYER` at the top of the function.
|
||||
- replace the mysterious `globalCtx->unk1C44 + 0x24`. The first part is so common that most people on decomp know it by heart: it is the location of the Player actor. `+ 0x24` is obviously an offset that leats to a `Vec3f`, and if you look in the actor struct, you find that this is the location of `world.pos`. To use `Player`, we put `Player* player = GET_PLAYER(globalCtx)` at the top of the function.
|
||||
|
||||
**NOTE:** mips_to_c will now output something like `&globalCtx->actorCtx.actorLists[2].head` for the Player pointer instead: this makes a lot more sense, but is not so easy to spot in the ASM without the characteristic `1C44`.
|
||||
|
||||
After all this, the function becomes
|
||||
```C
|
||||
void func_80A87C30(EnJj *this, GlobalContext *globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
Player* player = GET_PLAYER(globalCtx);
|
||||
|
||||
if ((Math_Vec3f_DistXZ(&D_80A88CF0, &player->actor.world.pos) < 300.0f) && (globalCtx->isPlayerDroppingFish(globalCtx) != 0)) {
|
||||
this->unk_30C = 100;
|
||||
|
@ -344,7 +344,7 @@ typedef struct EnJj {
|
|||
The diff now looks fine for this function, but it gives compiler warnings about `CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider);`: the last argument is the wrong type: we need to give it `&this->collider.base` instead, which points to the same address, but is the right type. So the matching function is
|
||||
```C
|
||||
void func_80A87C30(EnJj *this, GlobalContext *globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
Player* player = GET_PLAYER(globalCtx);
|
||||
|
||||
if ((Math_Vec3f_DistXZ(&D_80A88CF0, &player->actor.world.pos) < 300.0f) && (globalCtx->isPlayerDroppingFish(globalCtx) != 0)) {
|
||||
this->unk_30C = 100;
|
||||
|
@ -394,9 +394,9 @@ Easy things to sort out:
|
|||
|
||||
- We can remove the casts from `(u8)1U` and just leave `1`.
|
||||
|
||||
- `globalCtx->cameraPtrs[globalCtx->activeCamera]` has a macro: it is `ACTIVE_CAM`, so this line can be written as
|
||||
- `globalCtx->cameraPtrs[globalCtx->activeCamera]` has a macro: it is `GET_ACTIVE_CAM(globalCtx)`, so this line can be written as
|
||||
```C
|
||||
func_8005B1A4(ACTIVE_CAM);
|
||||
func_8005B1A4(GET_ACTIVE_CAM(globalCtx));
|
||||
```
|
||||
|
||||
- `gSaveContext.unkEDA` we have dealt with before: it is `gSaveContext.eventChkInf[3]`. This is a flag-setting function; it can be written more compactly as
|
||||
|
@ -418,7 +418,7 @@ void func_80A87CEC(EnJj *this, GlobalContext *globalCtx) {
|
|||
globalCtx->csCtx.segment = &D_80A88164;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
func_8003EBF8(globalCtx, &globalCtx->colCtx.dyna, child->bgId);
|
||||
func_8005B1A4(ACTIVE_CAM);
|
||||
func_8005B1A4(GET_ACTIVE_CAM(globalCtx));
|
||||
gSaveContext.eventChkInf[3] |= 0x400;
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
}
|
||||
|
@ -437,7 +437,7 @@ void func_80A87CEC(EnJj* this, GlobalContext* globalCtx) {
|
|||
globalCtx->csCtx.segment = &D_80A88164;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
func_8003EBF8(globalCtx, &globalCtx->colCtx.dyna, child->bgId);
|
||||
func_8005B1A4(ACTIVE_CAM);
|
||||
func_8005B1A4(GET_ACTIVE_CAM(globalCtx));
|
||||
gSaveContext.eventChkInf[3] |= 0x400;
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
}
|
||||
|
@ -827,4 +827,4 @@ void func_80A87D94(EnJj* this, GlobalContext* globalCtx) {
|
|||
|
||||
With that, the last remaining function is `EnJj_Draw`. Draw functions have an extra layer of macroing that is required, so we shall cover them separately.
|
||||
|
||||
Next: [Draw functions](draw_functions.md)
|
||||
Next: [Draw functions](draw_functions.md)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue