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:
parent
83a13a64c7
commit
57ce0cf8d9
130 changed files with 789 additions and 770 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue