1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-10 17:00:19 +00:00

Doc/Cleanup pass on object handling (#1227)

* `Object_InitBank` -> `Object_InitContext`

* Add and use `OBJECT_SPACE_SIZE_BASE`

* Remove `OBJECT_EXCHANGE_BANK_MAX` -> use `ARRAY_COUNT()` instead

* "object status" -> "object load entry"

* Misc. cleanup/renames

* Partial docs and way too much batch renaming and cleanup for a single commit

* ctrl shift h

* format

* format clang-11.1

* fix regressions

* Improve a `@bug` comment

* Move `OBJECT_SPACE_SIZE_BASE` from header to near `Object_InitContext`

* "objectID" -> "objectId"

* Revert iterator index to `i` in `Actor_KillActorsWithUnloadedObject`

* "object load entry index" -> "object entry"

* `Object_UpdateLoadEntries` -> `Object_UpdateEntries`

* Run format.sh

* "object entry" -> "object slot" (except internal usage)

* Proper `Object_SpawnPersistent` doc

Co-authored-by: fig02 <fig02srl@gmail.com>

* fixup one comment "object bank index" -> "object slot"

* Amend `Object_SpawnPersistent` comment to mention running out of free slots

* `Actor_KillActorsWithUnloadedObject` -> `Actor_KillAllWithMissingObject`

* Remove useless mention of what uses `Object_SpawnPersistent`

* Fix mistake on `Object_SpawnPersistent` doing sync dma, not async

* run formatter

* `Object_InitContext` -> `Object_Init`

* `waitObjectSlot` -> `requiredObjectSlot`

* `Object_Init` -> `func_80097DD8`

* one objectIndex -> objectSlot

* Remove `OBJECT_SPACE_SIZE_BASE`

* light fix on the merge (rm OBJECT_EXCHANGE_BANK_MAX)

* `func_80097DD8` -> `Object_InitContext`

---------

Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
Dragorn421 2023-09-19 20:10:12 +02:00 committed by GitHub
parent 83a13a64c7
commit 57ce0cf8d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
130 changed files with 789 additions and 770 deletions

View file

@ -15,7 +15,7 @@
#define rPrimColorA regs[5]
#define rFadeDelay regs[6]
#define rScaleStep regs[9]
#define rObjBankIdx regs[10]
#define rObjectSlot regs[10]
#define rYAccelStep regs[11] // has no effect due to how it's implemented
u32 EffectSsDFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx);
@ -29,9 +29,9 @@ EffectSsInit Effect_Ss_D_Fire_InitVars = {
u32 EffectSsDFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) {
EffectSsDFireInitParams* initParams = (EffectSsDFireInitParams*)initParamsx;
s32 objBankIndex = Object_GetIndex(&play->objectCtx, OBJECT_DODONGO);
s32 objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_DODONGO);
if (objBankIndex >= 0) {
if (objectSlot >= 0) {
this->pos = initParams->pos;
this->velocity = initParams->velocity;
this->accel = initParams->accel;
@ -45,7 +45,7 @@ u32 EffectSsDFire_Init(PlayState* play, u32 index, EffectSs* this, void* initPar
this->rScale = initParams->scale;
this->rScaleStep = initParams->scaleStep;
this->rYAccelStep = 0;
this->rObjBankIdx = objBankIndex;
this->rObjectSlot = objectSlot;
this->draw = EffectSsDFire_Draw;
this->update = EffectSsDFire_Update;
this->rTexIndex = ((s16)(play->state.frames % 4) ^ 3);
@ -70,17 +70,17 @@ void EffectSsDFire_Draw(PlayState* play, u32 index, EffectSs* this) {
MtxF mfResult;
MtxF mfTransBillboard;
s32 pad;
void* object;
void* objectPtr;
Mtx* mtx;
f32 scale;
object = play->objectCtx.status[this->rObjBankIdx].segment;
objectPtr = play->objectCtx.slots[this->rObjectSlot].segment;
OPEN_DISPS(gfxCtx, "../z_eff_ss_d_fire.c", 276);
if (Object_GetIndex(&play->objectCtx, OBJECT_DODONGO) > -1) {
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSPSegment(POLY_XLU_DISP++, 0x06, object);
if (Object_GetSlot(&play->objectCtx, OBJECT_DODONGO) >= 0) {
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x06, objectPtr);
scale = this->rScale / 100.0f;
SkinMatrix_SetTranslate(&mfTrans, this->pos.x, this->pos.y, this->pos.z);
SkinMatrix_SetScale(&mfScale, scale, scale, 1.0f);
@ -95,7 +95,7 @@ void EffectSsDFire_Draw(PlayState* play, u32 index, EffectSs* this) {
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 0);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, this->rPrimColorR, this->rPrimColorG, this->rPrimColorB,
this->rPrimColorA);
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sTextures[this->rTexIndex]));
gSPDisplayList(POLY_XLU_DISP++, this->gfx);
}

View file

@ -7,7 +7,7 @@
#include "z_eff_ss_extra.h"
#include "assets/objects/object_yabusame_point/object_yabusame_point.h"
#define rObjBankIdx regs[0]
#define rObjectSlot regs[0]
#define rTimer regs[1]
#define rScoreIdx regs[2]
#define rScale regs[3]
@ -26,14 +26,14 @@ EffectSsInit Effect_Ss_Extra_InitVars = {
u32 EffectSsExtra_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) {
EffectSsExtraInitParams* initParams = (EffectSsExtraInitParams*)initParamsx;
s32 pad;
s32 objBankIndex;
s32 objectSlot;
uintptr_t oldSeg6;
objBankIndex = Object_GetIndex(&play->objectCtx, OBJECT_YABUSAME_POINT);
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_YABUSAME_POINT);
if ((objBankIndex >= 0) && Object_IsLoaded(&play->objectCtx, objBankIndex)) {
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
oldSeg6 = gSegments[6];
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objBankIndex].segment);
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[objectSlot].segment);
this->pos = initParams->pos;
this->velocity = initParams->velocity;
this->accel = initParams->accel;
@ -43,7 +43,7 @@ u32 EffectSsExtra_Init(PlayState* play, u32 index, EffectSs* this, void* initPar
this->rScoreIdx = initParams->scoreIdx;
this->rScale = initParams->scale;
this->rTimer = 5;
this->rObjBankIdx = objBankIndex;
this->rObjectSlot = objectSlot;
gSegments[6] = oldSeg6;
return 1;
@ -61,12 +61,12 @@ static void* sTextures[] = {
void EffectSsExtra_Draw(PlayState* play, u32 index, EffectSs* this) {
s32 pad;
f32 scale = this->rScale / 100.0f;
void* object = play->objectCtx.status[this->rObjBankIdx].segment;
void* objectPtr = play->objectCtx.slots[this->rObjectSlot].segment;
OPEN_DISPS(play->state.gfxCtx, "../z_eff_ss_extra.c", 168);
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSPSegment(POLY_XLU_DISP++, 0x06, object);
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x06, objectPtr);
Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW);
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);

View file

@ -9,7 +9,7 @@
#include "assets/objects/object_fhg/object_fhg.h"
#define rAlpha regs[0]
#define rObjBankIdx regs[2]
#define rObjectSlot regs[2]
#define rXZRot regs[3]
#define rParam regs[4]
#define rScale regs[8]
@ -32,18 +32,18 @@ static Gfx sShockDL[15];
u32 EffectSsFhgFlash_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) {
EffectSsFhgFlashInitParams* initParams = (EffectSsFhgFlashInitParams*)initParamsx;
s32 pad;
s32 objBankIdx;
s32 objectSlot;
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
Vec3f farAwayVec = { 0.0f, -1000.0f, 0.0f };
uintptr_t oldSeg6;
uintptr_t prevSeg6;
if (initParams->type == FHGFLASH_LIGHTBALL) {
objBankIdx = Object_GetIndex(&play->objectCtx, OBJECT_FHG);
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_FHG);
if ((objBankIdx > -1) && Object_IsLoaded(&play->objectCtx, objBankIdx)) {
oldSeg6 = gSegments[6];
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objBankIdx].segment);
this->rObjBankIdx = objBankIdx;
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
prevSeg6 = gSegments[6];
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[objectSlot].segment);
this->rObjectSlot = objectSlot;
this->pos = initParams->pos;
this->velocity = initParams->velocity;
this->accel = initParams->accel;
@ -54,7 +54,7 @@ u32 EffectSsFhgFlash_Init(PlayState* play, u32 index, EffectSs* this, void* init
this->draw = EffectSsFhgFlash_DrawLightBall;
this->update = EffectSsFhgFlash_UpdateLightBall;
this->gfx = SEGMENTED_TO_VIRTUAL(gPhantomEnergyBallDL);
gSegments[6] = oldSeg6;
gSegments[6] = prevSeg6;
} else {
osSyncPrintf("Effect_Ss_Fhg_Flash_ct():pffd->modeエラー\n");
return 0;
@ -89,17 +89,17 @@ void EffectSsFhgFlash_DrawLightBall(PlayState* play, u32 index, EffectSs* this)
GraphicsContext* gfxCtx = play->state.gfxCtx;
s32 pad;
f32 scale;
void* object;
void* objectPtr;
scale = this->rScale / 100.0f;
object = play->objectCtx.status[this->rObjBankIdx].segment;
objectPtr = play->objectCtx.slots[this->rObjectSlot].segment;
OPEN_DISPS(gfxCtx, "../z_eff_fhg_flash.c", 268);
Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW);
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSPSegment(POLY_XLU_DISP++, 0x06, object);
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x06, objectPtr);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, this->rAlpha);
gDPSetEnvColor(POLY_XLU_DISP++, sLightBallColors[this->rParam].r, sLightBallColors[this->rParam].g,

View file

@ -17,7 +17,7 @@
#define rTimer regs[7]
#define rUpdateRate regs[8]
#define rDrawMode regs[9]
#define rObjBankIdx regs[10]
#define rObjectSlot regs[10]
#define rScale regs[11]
u32 EffectSsGMagma2_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx);
@ -38,15 +38,15 @@ EffectSsInit Effect_Ss_G_Magma2_InitVars = {
};
u32 EffectSsGMagma2_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) {
s32 objBankIndex = Object_GetIndex(&play->objectCtx, OBJECT_KINGDODONGO);
s32 objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_KINGDODONGO);
s32 pad;
if ((objBankIndex >= 0) && Object_IsLoaded(&play->objectCtx, objBankIndex)) {
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
EffectSsGMagma2InitParams* initParams = (EffectSsGMagma2InitParams*)initParamsx;
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objBankIndex].segment);
this->rObjBankIdx = objBankIndex;
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[objectSlot].segment);
this->rObjectSlot = objectSlot;
this->pos = initParams->pos;
this->velocity = zeroVec;
this->accel = zeroVec;
@ -75,17 +75,17 @@ void EffectSsGMagma2_Draw(PlayState* play, u32 index, EffectSs* this) {
GraphicsContext* gfxCtx = play->state.gfxCtx;
s32 pad;
f32 scale;
void* object;
void* objectPtr;
scale = this->rScale / 100.0f;
object = play->objectCtx.status[this->rObjBankIdx].segment;
objectPtr = play->objectCtx.slots[this->rObjectSlot].segment;
OPEN_DISPS(gfxCtx, "../z_eff_ss_g_magma2.c", 261);
Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW);
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSPSegment(POLY_XLU_DISP++, 0x06, object);
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x06, objectPtr);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx, "../z_eff_ss_g_magma2.c", 282),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);

View file

@ -7,7 +7,7 @@
#include "z_eff_ss_g_splash.h"
#include "assets/objects/gameplay_keep/gameplay_keep.h"
//! @bug the reuse of regs[11] means that EffectSs_DrawGEffect will treat the type as an object bank index
//! @bug the reuse of regs[11] means that EffectSs_DrawGEffect will treat the type as an object slot (`rgObjectSlot`)
// this ends up having no effect because the texture provided does not use segment 6
#define rType regs[11]

View file

@ -12,7 +12,7 @@
#define rUnused regs[2]
#define rScale regs[3]
#define rObjId regs[4]
#define rObjBankIdx regs[5]
#define rObjectSlot regs[5]
#define rMinLife regs[6]
u32 EffectSsHahen_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx);
@ -26,8 +26,8 @@ EffectSsInit Effect_Ss_Hahen_InitVars = {
};
void EffectSsHahen_CheckForObject(EffectSs* this, PlayState* play) {
if (((this->rObjBankIdx = Object_GetIndex(&play->objectCtx, this->rObjId)) < 0) ||
!Object_IsLoaded(&play->objectCtx, this->rObjBankIdx)) {
if (((this->rObjectSlot = Object_GetSlot(&play->objectCtx, this->rObjId)) < 0) ||
!Object_IsLoaded(&play->objectCtx, this->rObjectSlot)) {
this->life = -1;
this->draw = NULL;
}
@ -74,7 +74,7 @@ void EffectSsHahen_Draw(PlayState* play, u32 index, EffectSs* this) {
OPEN_DISPS(gfxCtx, "../z_eff_hahen.c", 208);
if (this->rObjId != -1) {
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->rObjBankIdx].segment);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->rObjectSlot].segment);
}
Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW);
@ -98,7 +98,7 @@ void EffectSsHahen_DrawGray(PlayState* play, u32 index, EffectSs* this) {
OPEN_DISPS(gfxCtx, "../z_eff_hahen.c", 253);
if (this->rObjId != -1) {
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->rObjBankIdx].segment);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->rObjectSlot].segment);
}
Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW);

View file

@ -7,7 +7,7 @@
#include "z_eff_ss_ice_smoke.h"
#include "assets/objects/object_fz/object_fz.h"
#define rObjBankIdx regs[0]
#define rObjectSlot regs[0]
#define rAlpha regs[1]
#define rScale regs[2]
@ -23,24 +23,24 @@ EffectSsInit Effect_Ss_Ice_Smoke_InitVars = {
u32 EffectSsIceSmoke_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) {
EffectSsIceSmokeInitParams* initParams = (EffectSsIceSmokeInitParams*)initParamsx;
s32 pad;
s32 objBankIdx;
uintptr_t oldSeg6;
s32 objectSlot;
uintptr_t prevSeg6;
objBankIdx = Object_GetIndex(&play->objectCtx, OBJECT_FZ);
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_FZ);
if ((objBankIdx > -1) && Object_IsLoaded(&play->objectCtx, objBankIdx)) {
oldSeg6 = gSegments[6];
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objBankIdx].segment);
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
prevSeg6 = gSegments[6];
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[objectSlot].segment);
Math_Vec3f_Copy(&this->pos, &initParams->pos);
Math_Vec3f_Copy(&this->velocity, &initParams->velocity);
Math_Vec3f_Copy(&this->accel, &initParams->accel);
this->rObjBankIdx = objBankIdx;
this->rObjectSlot = objectSlot;
this->rAlpha = 0;
this->rScale = initParams->scale;
this->life = 50;
this->draw = EffectSsIceSmoke_Draw;
this->update = EffectSsIceSmoke_Update;
gSegments[6] = oldSeg6;
gSegments[6] = prevSeg6;
return 1;
}
@ -52,22 +52,22 @@ u32 EffectSsIceSmoke_Init(PlayState* play, u32 index, EffectSs* this, void* init
void EffectSsIceSmoke_Draw(PlayState* play, u32 index, EffectSs* this) {
s32 pad;
void* object;
void* objectPtr;
Mtx* mtx;
f32 scale;
s32 objBankIdx;
s32 objectSlot;
object = play->objectCtx.status[this->rObjBankIdx].segment;
objectPtr = play->objectCtx.slots[this->rObjectSlot].segment;
OPEN_DISPS(play->state.gfxCtx, "../z_eff_ss_ice_smoke.c", 155);
objBankIdx = Object_GetIndex(&play->objectCtx, OBJECT_FZ);
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_FZ);
if ((objBankIdx > -1) && Object_IsLoaded(&play->objectCtx, objBankIdx)) {
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
gDPPipeSync(POLY_XLU_DISP++);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gSegments[6] = VIRTUAL_TO_PHYSICAL(object);
gSPSegment(POLY_XLU_DISP++, 0x06, object);
gSegments[6] = VIRTUAL_TO_PHYSICAL(objectPtr);
gSPSegment(POLY_XLU_DISP++, 0x06, objectPtr);
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gFreezardSteamStartDL));
gDPPipeSync(POLY_XLU_DISP++);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 195, 235, 235, this->rAlpha);
@ -93,11 +93,11 @@ void EffectSsIceSmoke_Draw(PlayState* play, u32 index, EffectSs* this) {
}
void EffectSsIceSmoke_Update(PlayState* play, u32 index, EffectSs* this) {
s32 objBankIdx;
s32 objectSlot;
objBankIdx = Object_GetIndex(&play->objectCtx, OBJECT_FZ);
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_FZ);
if ((objBankIdx > -1) && Object_IsLoaded(&play->objectCtx, objBankIdx)) {
if ((objectSlot >= 0) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
if (this->rAlpha < 100) {
this->rAlpha += 10;
}

View file

@ -17,7 +17,7 @@
#define rReg8 regs[8]
#define rReg9 regs[9]
#define rObjId regs[10]
#define rObjBankIdx regs[11]
#define rObjectSlot regs[11]
#define rColorIdx regs[12]
u32 EffectSsKakera_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx);
@ -100,9 +100,9 @@ void EffectSsKakera_Draw(PlayState* play, u32 index, EffectSs* this) {
if (this->rObjId != KAKERA_OBJECT_DEFAULT) {
if ((((this->rReg4 >> 7) & 1) << 7) == 0x80) {
gSPSegment(POLY_XLU_DISP++, 0x06, play->objectCtx.status[this->rObjBankIdx].segment);
gSPSegment(POLY_XLU_DISP++, 0x06, play->objectCtx.slots[this->rObjectSlot].segment);
} else {
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->rObjBankIdx].segment);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->rObjectSlot].segment);
}
}
@ -137,9 +137,9 @@ void EffectSsKakera_Draw(PlayState* play, u32 index, EffectSs* this) {
}
void func_809A9BA8(EffectSs* this, PlayState* play) {
this->rObjBankIdx = Object_GetIndex(&play->objectCtx, this->rObjId);
this->rObjectSlot = Object_GetSlot(&play->objectCtx, this->rObjId);
if ((this->rObjBankIdx < 0) || !Object_IsLoaded(&play->objectCtx, this->rObjBankIdx)) {
if ((this->rObjectSlot < 0) || !Object_IsLoaded(&play->objectCtx, this->rObjectSlot)) {
this->life = 0;
this->draw = NULL;
}

View file

@ -8,7 +8,7 @@
#include "assets/objects/object_link_boy/object_link_boy.h"
#include "assets/objects/object_link_child/object_link_child.h"
#define rObjBankIdx regs[0]
#define rObjectSlot regs[0]
#define rYaw regs[1]
u32 EffectSsStick_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx);
@ -21,7 +21,7 @@ EffectSsInit Effect_Ss_Stick_InitVars = {
};
typedef struct {
/* 0x00 */ s16 objectID;
/* 0x00 */ s16 objectId;
/* 0x04 */ Gfx* displayList;
} StickDrawInfo;
@ -33,7 +33,7 @@ u32 EffectSsStick_Init(PlayState* play, u32 index, EffectSs* this, void* initPar
StickDrawInfo* ageInfoEntry = gSaveContext.save.linkAge + drawInfo;
EffectSsStickInitParams* initParams = (EffectSsStickInitParams*)initParamsx;
this->rObjBankIdx = Object_GetIndex(&play->objectCtx, ageInfoEntry->objectID);
this->rObjectSlot = Object_GetSlot(&play->objectCtx, ageInfoEntry->objectId);
this->gfx = ageInfoEntry->displayList;
this->vec = this->pos = initParams->pos;
this->rYaw = initParams->yaw;
@ -67,7 +67,7 @@ void EffectSsStick_Draw(PlayState* play, u32 index, EffectSs* this) {
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx, "../z_eff_ss_stick.c", 176),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
Gfx_SetupDL_25Opa(gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->rObjBankIdx].segment);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->rObjectSlot].segment);
gSPSegment(POLY_OPA_DISP++, 0x0C, gCullBackDList);
gSPDisplayList(POLY_OPA_DISP++, this->gfx);