diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 0d20b256..ce2533fb 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -6,6 +6,76 @@ #include "game/memory.h" #include "game/data.h" +#define HU3D_MODEL_MAX 512 +#define HU3D_MOTION_MAX 256 +#define HU3D_TEXANIM_MAX 256 +#define HU3D_TEXSCROLL_MAX 16 + +#define HU3D_MOTATTR 0x40000000 + +#define HU3D_MOTATTR_LOOP 0x40000001 +#define HU3D_MOTATTR_PAUSE 0x40000002 +#define HU3D_MOTATTR_REV 0x40000004 +#define HU3D_MOTATTR_SHIFT_LOOP 0x40000008 +#define HU3D_MOTATTR_SHIFT_PAUSE 0x40000010 +#define HU3D_MOTATTR_SHIFT_REV 0x40000020 +#define HU3D_MOTATTR_SHAPE_LOOP 0x40000040 +#define HU3D_MOTATTR_SHAPE_PAUSE 0x40000080 +#define HU3D_MOTATTR_SHAPE_REV 0x40000100 +#define HU3D_MOTATTR_OVL_LOOP 0x40000200 +#define HU3D_MOTATTR_OVL_PAUSE 0x40000400 +#define HU3D_MOTATTR_OVL_REV 0x40000800 + +#define HU3D_CLUSTER_ATTR ((s32)0xC0000000) +#define HU3D_CLUSTER_ATTR_LOOP ((s32)0xC0000001) +#define HU3D_CLUSTER_ATTR_PAUSE ((s32)0xC0000002) +#define HU3D_CLUSTER_ATTR_REV ((s32)0xC0000004) + +#define HU3D_ATTR_NONE 0 + +#define HU3D_ATTR_DISPOFF 0x1 +#define HU3D_ATTR_ZWRITE_OFF 0x2 +#define HU3D_ATTR_SHADOW 0x4 +#define HU3D_ATTR_MOTION_OFF 0x8 +#define HU3D_ATTR_HOOKFUNC 0x10 +#define HU3D_ATTR_PARTICLE_KILL 0x20 +#define HU3D_ATTR_TEX_NEAR 0x40 +#define HU3D_ATTR_ENVELOPE_OFF 0x80 +#define HU3D_ATTR_MOT_SLOW 0x100 +#define HU3D_ATTR_TOON_MAP 0x200 +#define HU3D_ATTR_CLUSTER_ON 0x400 +#define HU3D_ATTR_MOT_EXEC 0x800 +#define HU3D_ATTR_LLIGHT 0x1000 +#define HU3D_ATTR_CAMERA_MOTON 0x2000 +#define HU3D_ATTR_NOCULL 0x4000 +#define HU3D_ATTR_HOOK 0x8000 +#define HU3D_ATTR_CAMERA 0x10000 +#define HU3D_ATTR_HILITE 0x20000 +#define HU3D_ATTR_TPLVL_SET 0x40000 +#define HU3D_ATTR_CURVE_MOTOFF 0x80000 +#define HU3D_ATTR_LINK 0x100000 +#define HU3D_ATTR_NOPAUSE 0x200000 +#define HU3D_ATTR_ZCMP_OFF 0x400000 +#define HU3D_ATTR_CULL_FRONT 0x800000 + +#define HU3D_CAM0 (1 << 0) +#define HU3D_CAM1 (1 << 1) +#define HU3D_CAM2 (1 << 2) +#define HU3D_CAM3 (1 << 3) +#define HU3D_CAM4 (1 << 4) +#define HU3D_CAM5 (1 << 5) +#define HU3D_CAM6 (1 << 6) +#define HU3D_CAM7 (1 << 7) +#define HU3D_CAM8 (1 << 8) +#define HU3D_CAM9 (1 << 9) +#define HU3D_CAM10 (1 << 10) +#define HU3D_CAM11 (1 << 11) +#define HU3D_CAM12 (1 << 12) +#define HU3D_CAM13 (1 << 13) +#define HU3D_CAM14 (1 << 14) +#define HU3D_CAM15 (1 << 15) +#define HU3D_CAM_MAX 16 + #define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) typedef struct particle_data ParticleData; diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index e8ffafbd..3ab18cf8 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -32,7 +32,7 @@ u32 frand(void); extern u32 GlobalCounter; -Hu3DTexAnimDataStruct Hu3DTexAnimData[256]; +Hu3DTexAnimDataStruct Hu3DTexAnimData[HU3D_TEXANIM_MAX]; Hu3DTexScrDataStruct Hu3DTexScrData[16]; static Process *parManProc[64]; @@ -42,11 +42,11 @@ void Hu3DAnimInit(void) { s16 i; var_r30 = Hu3DTexAnimData; - for (i = 0; i < 256; i++, var_r30++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) { var_r30->unk06 = -1; } var_r29 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r29++) { + for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r29++) { var_r29->unk02 = -1; } } @@ -61,12 +61,12 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) { s16 var_r28; var_r31 = Hu3DTexAnimData; - for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) { if (var_r31->unk06 == -1) { break; } } - if (var_r28 == 256) { + if (var_r28 == HU3D_TEXANIM_MAX) { OSReport("Error: TexAnim Over\n"); return -1; } @@ -118,12 +118,12 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) { s16 var_r25; var_r31 = Hu3DTexAnimData; - for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) { if (var_r31->unk06 == -1) { break; } } - if (var_r28 == 256) { + if (var_r28 == HU3D_TEXANIM_MAX) { OSReport("Error: TexAnim Over\n"); return -1; } @@ -190,7 +190,7 @@ void Hu3DAnimModelKill(s16 arg0) { Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0]; s16 i; - for (i = 0; i < 256; i++, var_r26++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) { if (var_r26->unk06 == arg0) { Hu3DAnimKill(i); } @@ -201,7 +201,7 @@ void Hu3DAnimAllKill(void) { Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0]; s16 i; - for (i = 0; i < 256; i++, var_r26++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) { if (var_r26->unk06 != -1) { Hu3DAnimKill(i); } @@ -265,7 +265,7 @@ s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) { temp_r31 = temp_r25->layer; temp_r28 = &temp_r27->bmp[temp_r31->bmpNo]; HuSprTexLoad(temp_r29->unk10, temp_r31->bmpNo, arg2, var_r23, var_r22, - (arg0->attr & 0x40) ? GX_NEAR : GX_LINEAR); + (arg0->attr & HU3D_ATTR_TEX_NEAR) ? GX_NEAR : GX_LINEAR); temp_r30->unk2C = (float) temp_r31->sizeX / temp_r28->sizeX; temp_r30->unk30 = (float) temp_r31->sizeY / temp_r28->sizeY; temp_r30->unk34.x = (float) temp_r31->startX / temp_r28->sizeX; @@ -283,7 +283,7 @@ void Hu3DAnimExec(void) { s16 i; var_r30 = Hu3DTexAnimData; - for (i = 0; i < 256; i++, var_r30++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) { if (var_r30->unk06 != -1 && (Hu3DPauseF == 0 || (var_r30->unk00 & 0x20))) { var_r25 = var_r30->unk10; temp_r28 = &var_r25->bank[var_r30->unk02]; @@ -312,7 +312,7 @@ void Hu3DAnimExec(void) { } } var_r31 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r31++) { + for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r31++) { if (var_r31->unk02 != -1) { if (Hu3DPauseF != 0 && !(var_r31->unk00 & 8)) { PSMTXRotRad(var_r31->unk3C, 'Z', MTXDegToRad(var_r31->unk34)); @@ -365,12 +365,12 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) { s16 var_r28; var_r31 = Hu3DTexScrData; - for (var_r28 = 0; var_r28 < 16; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXSCROLL_MAX; var_r28++, var_r31++) { if (var_r31->unk02 == -1) { break; } } - if (var_r28 == 16) { + if (var_r28 == HU3D_TEXSCROLL_MAX) { OSReport("Error: TexScroll Over\n"); return -1; } @@ -434,7 +434,7 @@ void Hu3DTexScrollAllKill(void) { s16 i; var_r27 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r27++) { + for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r27++) { if (var_r27->unk02 != -1) { Hu3DTexScrollKill(i); } @@ -689,7 +689,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { PSMTXIdentity(sp128); } PSMTXReorder(sp128, sp8); - if ((Hu3DPauseF == 0 || (arg0->attr & 0x200000)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) { + if ((Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) { var_r17 = temp_r31->unk_54; var_r17(arg0, temp_r31, arg1); } @@ -758,7 +758,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { } else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } - if (arg0->attr & 2) { + if (arg0->attr & HU3D_ATTR_ZWRITE_OFF) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); } else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); @@ -774,7 +774,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { var_r28 = &temp_r25->frame[temp_r31->unk_22]; temp_r21 = &temp_r22->pat[var_r28->pat]; HuSprTexLoad(temp_r31->unk_44, temp_r21->layer->bmpNo, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); - if (Hu3DPauseF == 0 || (arg0->attr & 0x200000)) { + if (Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) { for (i = 0; i < (s32) temp_r31->unk_24 * minimumVcount; i++) { temp_r31->unk_28 += 1.0f; if (temp_r31->unk_28 >= var_r28->time) { @@ -1079,7 +1079,7 @@ static void ParManFunc(void) { temp_r30 = temp_r31->unk3C; temp_r27 = &Hu3DData[temp_r31->unk00]; while (1) { - if (Hu3DPauseF != 0 && !(temp_r27->attr & 0x200000)) { + if (Hu3DPauseF != 0 && !(temp_r27->attr & HU3D_ATTR_NOPAUSE)) { HuPrcVSleep(); continue; } @@ -1229,7 +1229,7 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) { s16 sp8; s16 i; - if (Hu3DPauseF == 0 || (model->attr & 0x200000)) { + if (Hu3DPauseF == 0 || (model->attr & HU3D_ATTR_NOPAUSE)) { var_r29 = particle->unk_48; for (i = 0; i < particle->unk_30; i++, var_r29++) { if (var_r29->unk2C) { diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index ba1a9404..42d4a217 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -46,13 +46,13 @@ void GXResetWriteGatherPipe(void); static const Vec lbl_8011DD20 = { 0.0f, 0.0f, -1.0f }; -static HsfDrawObject DrawObjData[512]; +static HsfDrawObject DrawObjData[HU3D_MODEL_MAX]; static HsfAttribute *BmpPtrBak[8]; static Mtx MTXBuf[96]; static Vec scaleBuf[96]; static GXColor texCol[16]; static Mtx hiliteMtx; -static s16 DrawObjNum[512]; +static s16 DrawObjNum[HU3D_MODEL_MAX]; static Vec NBTB; static Vec NBTT; Vec PGMaxPos; @@ -129,7 +129,7 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { s16 i; temp_r28 = arg0->hsfData; - if (arg0->attr & 0x10) { + if (arg0->attr & HU3D_ATTR_HOOKFUNC) { temp_r31 = &DrawObjData[DrawObjIdx]; PSMTXCopy(arg1, temp_r31->matrix); sp8.x = temp_r31->matrix[0][3]; @@ -267,7 +267,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { PSMTXCopy(temp_r29->matrix, temp_r25->matrix); if (temp_r25->hook != -1) { temp_r31 = &Hu3DData[temp_r25->hook]; - if (!(temp_r31->attr & 1)) { + if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) { temp_r21 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; @@ -293,12 +293,12 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { attachMotionF = temp_r21; } } else { - if (arg0->attr & 0x4000) { + if (arg0->attr & HU3D_ATTR_NOCULL) { var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix); } else { var_r19 = 1; } - if ((temp_r25->flags & 0x2000) || (arg1->flags & 0x400)) { + if ((temp_r25->flags & 0x2000) || (arg1->flags & HU3D_ATTR_CLUSTER_ON)) { var_r19 = 0; } if (var_r19 != 0 && (var_r30->scale.x != 0.0f || var_r30->scale.y != 0.0f || var_r30->scale.z != 0.0f)) { @@ -319,7 +319,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { OSReport("Error: DrawObjIdx Over\n"); DrawObjIdx--; } - } else if (arg0->attr & 0x400000) { + } else if (arg0->attr & HU3D_ATTR_ZCMP_OFF) { temp_r29->z = -1000000.0f; DrawObjIdx++; if (DrawObjIdx > 0x200) { @@ -453,12 +453,12 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { sp2C.b = temp_r30->color[2]; sp2C.a = 0xFF; GXSetChanMatColor(GX_COLOR0A0, sp2C); - if (temp_r29->attr & 0x400000) { + if (temp_r29->attr & HU3D_ATTR_ZCMP_OFF) { var_r31 = GX_FALSE; } else { var_r31 = GX_TRUE; } - if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & 2) | (temp_r19 & 0x1200))) { + if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & HU3D_ATTR_ZWRITE_OFF) | (temp_r19 & 0x1200))) { GXSetZMode(var_r31, GX_LEQUAL, GX_FALSE); } else { GXSetZMode(var_r31, GX_LEQUAL, GX_TRUE); @@ -468,7 +468,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); } - if (temp_r29->attr & 0x800000) { + if (temp_r29->attr & HU3D_ATTR_CULL_FRONT) { GXSetCullMode(GX_CULL_FRONT); } else if (temp_r19 & 2) { GXSetCullMode(GX_CULL_NONE); @@ -522,7 +522,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { SetShadowTex(); BmpPtrBak[1] = (HsfAttribute*) -1; } - if (temp_r29->attr & 0x200) { + if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { toonMapNo = 2; HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); BmpPtrBak[2] = (HsfAttribute*) -1; @@ -540,7 +540,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { hiliteMapNo = 3; } - if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { + if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; @@ -674,7 +674,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { toonMapNo = shadowMapNo; } - if (temp_r29->attr & 0x200) { + if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); BmpPtrBak[toonMapNo] = (HsfAttribute*) -1; projectionMapNo = toonMapNo + 1; @@ -692,7 +692,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { hiliteMapNo = projectionMapNo; } - if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { + if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; @@ -761,7 +761,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r22 = 0; } sp1C.a = 255.0f * (1.0f - arg1->invAlpha); - if (temp_r28->attr & 0x200) { + if (temp_r28->attr & HU3D_ATTR_TOON_MAP) { sp1C.r = arg1->color[0]; sp1C.g = arg1->color[1]; sp1C.b = arg1->color[2]; @@ -792,7 +792,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r29++; } if (var_r26 != 0) { - if ((temp_r28->attr & 0x20000) || (sp18 & 0x100)) { + if ((temp_r28->attr & HU3D_ATTR_HILITE) || (sp18 & 0x100)) { GXSetTexCoordGen2(var_r29, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r30, var_r29, hiliteMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_ONE, GX_CC_TEXC, GX_CC_CPREV); @@ -983,7 +983,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r31++; } else { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0); - if (!(temp_r25->attr & 0x200)) { + if (!(temp_r25->attr & HU3D_ATTR_TOON_MAP)) { if (texCol[0].a == 1) { sp50 = texCol[0]; sp50.a = 0xFF; @@ -1030,7 +1030,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } else { GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); } - if (temp_r25->attr & 0x200) { + if (temp_r25->attr & HU3D_ATTR_TOON_MAP) { GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); @@ -1053,7 +1053,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r31++; } if (var_r21 != 0) { - if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) { + if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, hiliteMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV); @@ -1270,7 +1270,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } var_r31++; } - if (temp_r25->attr & 0x200) { + if (temp_r25->attr & HU3D_ATTR_TOON_MAP) { GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); @@ -1323,7 +1323,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { sp50.a = (1.0f - arg1->invAlpha) * 255.0f; GXSetTevColor(GX_TEVREG0, sp50); if (var_r21 != 0) { - if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) { + if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) { var_f31 = (arg1->hilite_scale / 300.0f) * 6.0f; if (var_f31 < 0.1) { var_f31 = 0.1f; @@ -1835,7 +1835,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 TL32F = 1; break; } - if ((arg0->attr & 0x40) || (arg2->flag & 0x40)) { + if ((arg0->attr & HU3D_ATTR_TEX_NEAR) || (arg2->flag & 0x40)) { GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } else if (var_r20) { GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg2->unk78, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_2); @@ -2107,7 +2107,7 @@ void Hu3DDrawPost(void) { GXSetCullMode(GX_CULL_BACK); for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) { temp_r28 = &DrawObjData[DrawObjNum[var_r23]]; - if (temp_r28->model->attr & 0x10) { + if (temp_r28->model->attr & HU3D_ATTR_HOOKFUNC) { sp28 = (void*) temp_r28->model->hsfData; sp28(temp_r28->model, temp_r28->matrix); for (i = 0; i < 8; i++) { @@ -2145,7 +2145,7 @@ void Hu3DDrawPost(void) { } } } - if ((temp_r28->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((temp_r28->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) { sp54 = lbl_8011DD20; temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03]; sp30 = temp_r22->unk_28; @@ -2284,7 +2284,7 @@ static void ObjDraw(HsfDrawObject *arg0) { } } } - if ((arg0->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((arg0->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) { sp44 = lbl_8011DD20; temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03]; sp20 = temp_r24->unk_28; @@ -2379,7 +2379,7 @@ void MakeDisplayList(s16 arg0, u32 arg1) { faceNumBuf = HuMemDirectMallocNum(HEAP_DATA, 0x800 * sizeof(u16), mallocNo); MDObjCall(temp_r31, temp_r31->root); HuMemDirectFree(faceNumBuf); - if (var_r30->attr & 4) { + if (var_r30->attr & HU3D_ATTR_SHADOW) { Hu3DShadowCamBit++; } } @@ -3067,7 +3067,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { temp_r28 = arg1->constData; if (temp_r28 && temp_r28->hook != -1) { temp_r31 = &Hu3DData[temp_r28->hook]; - if (!(temp_r31->attr & 1)) { + if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) { var_r27 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; diff --git a/src/game/hsfex.c b/src/game/hsfex.c index a09129ec..acf7f822 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -18,7 +18,7 @@ void CamMotionEx2(s16 arg0, s16 arg1, float arg2, s16 arg3) { CameraData *temp_r30; s16 i; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } @@ -57,7 +57,7 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 temp_r22 = temp_r23->hsfData; temp_r18 = temp_r19->unk_04; temp_r26 = temp_r18->motion; - for (var_r25 = 0; var_r25 < 16; var_r25++) { + for (var_r25 = 0; var_r25 < HU3D_CAM_MAX; var_r25++) { if (arg1 & (1 << var_r25)) { break; } @@ -422,7 +422,7 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) { s16 i; Mtx spC; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } @@ -449,7 +449,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { s16 i; Mtx sp1C; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 1cbbe341..a9c2d84f 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -15,8 +15,8 @@ #include "math.h" #include "ext_math.h" -ModelData Hu3DData[0x200]; -CameraData Hu3DCamera[0x10]; +ModelData Hu3DData[HU3D_MODEL_MAX]; +CameraData Hu3DCamera[HU3D_CAM_MAX]; static s16 layerNum[8]; static void (*layerHook[8])(s16); AnimData *reflectAnim[5]; @@ -63,11 +63,11 @@ void Hu3DInit(void) { s16 i; data = Hu3DData; - for (i = 0; i < 0x200; i++, data++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { data->hsfData = NULL; } camera = Hu3DCamera; - for (i = 0; i < 0x10; i++, camera++) { + for (i = 0; i < HU3D_CAM_MAX; i++, camera++) { camera->fov = -1.0f; } Hu3DMotionInit(); @@ -111,9 +111,9 @@ void Hu3DPreProc(void) { GXSetCopyClear(BGColor, 0xFFFFFF); data = &Hu3DData[0]; - for (i = 0; i < 0x200; i++, data++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { if (data->hsfData != 0) { - data->attr &= ~0x800; + data->attr &= ~HU3D_ATTR_MOT_EXEC; } } totalPolyCnted = totalPolyCnt; @@ -123,6 +123,8 @@ void Hu3DPreProc(void) { totalPolyCnt = totalMatCnt = totalTexCnt = totalTexCacheCnt = 0; } +#define HU3D_ATTR_CAMERA_UPDATE (HU3D_ATTR_CAMERA_MOTON|HU3D_ATTR_DISPOFF) + void Hu3DExec(void) { GXColor unusedColor = {0, 0, 0, 0}; CameraData* camera; @@ -144,7 +146,7 @@ void Hu3DExec(void) { shadowModelDrawF = 0; HuSprBegin(); var_r24 = 0; - for (Hu3DCameraNo = 0; Hu3DCameraNo < 0x10; Hu3DCameraNo++, camera++) { + for (Hu3DCameraNo = 0; Hu3DCameraNo < HU3D_CAM_MAX; Hu3DCameraNo++, camera++) { if (-1.0f != camera->fov) { GXInvalidateVtxCache(); temp_r22 = (s16) (1 << Hu3DCameraNo); @@ -186,18 +188,18 @@ void Hu3DExec(void) { Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); data = Hu3DData; - for (i = 0, var_r23 = i; i < 0x200; i++, data++) { + for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) { if (data->hsfData != 0) { - if ((data->attr & 0x10000) != 0) { + if ((data->attr & HU3D_ATTR_CAMERA) != 0) { Hu3DCameraMotionExec(i); } else { - if ((data->attr & 0x2001) == 0x2001 && data->unk_08 != -1) { + if ((data->attr & HU3D_ATTR_CAMERA_UPDATE) == HU3D_ATTR_CAMERA_UPDATE && data->unk_08 != -1) { Hu3DMotionExec(i, data->unk_08, data->unk_64, 0); } - if ((data->attr & 9) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) { - if (((data->attr & 0x800) == 0 && (data->attr & 0x100) == 0) || ((data->attr & 0x100) != 0 && (data->unk_00 & 1) != 0)) { + if ((data->attr & (HU3D_ATTR_DISPOFF|HU3D_ATTR_MOTION_OFF)) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) { + if (((data->attr & HU3D_ATTR_MOT_EXEC) == 0 && (data->attr & HU3D_ATTR_MOT_SLOW) == 0) || ((data->attr & HU3D_ATTR_MOT_SLOW) != 0 && (data->unk_00 & 1) != 0)) { var_r25 = 0; - data->motion_attr &= 0xBFFFFFFF; + data->motion_attr &= ~HU3D_MOTATTR; if (data->unk_08 != -1) { Hu3DMotionExec(i, data->unk_08, data->unk_64, 0); } @@ -207,7 +209,7 @@ void Hu3DExec(void) { if (data->unk_0A != -1) { Hu3DMotionExec(i, data->unk_0A, data->unk_74, 1); } - if ((data->attr & 0x400) != 0) { + if ((data->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterMotionExec(data); var_r25 = 1; } @@ -219,7 +221,7 @@ void Hu3DExec(void) { } var_r25 = 1; } - if ((data->attr & 0x90) == 0 && (data->motion_attr & 0x40000002) == 0) { + if ((data->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) == 0 && (data->motion_attr & HU3D_MOTATTR_PAUSE) == 0) { var_r25 = 1; InitVtxParm(data->hsfData); if (data->unk_0E != -1) { @@ -238,11 +240,11 @@ void Hu3DExec(void) { } data->attr |= 0x800; } - if (var_r24 != 0 && (data->attr & 0x10) != 0) { + if (var_r24 != 0 && (data->attr & HU3D_ATTR_HOOKFUNC) != 0) { GXWaitDrawDone(); var_r24 = 0; } - if ((data->attr & 0x8000) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) { + if ((data->attr & HU3D_ATTR_HOOK) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) { mtxRot(sp40, data->rot.x, data->rot.y, data->rot.z); mtxScaleCat(sp40, data->scale.x, data->scale.y, data->scale.z); mtxTransCat(sp40, data->pos.x, data->pos.y, data->pos.z); @@ -267,8 +269,8 @@ void Hu3DExec(void) { HuSprDispInit(); HuSprExec(0); data = Hu3DData; - for (i = 0; i < 0x200; i++, data++) { - if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & 0x400) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & 0x200000) != 0)) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { + if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & HU3D_ATTR_CLUSTER_ON) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & HU3D_ATTR_NOPAUSE) != 0)) { Hu3DMotionNext(i); } } @@ -334,19 +336,19 @@ s16 Hu3DModelCreate(void *arg0) { var_r31 = Hu3DData; - for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) { + for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) { if (var_r31->hsfData == 0x0) { break; } } - if (var_r30 == 0x200) { + if (var_r30 == HU3D_MODEL_MAX) { OSReport("Error: Create Model Over!\n"); return -1; } var_r31->hsfData = LoadHSF(arg0); var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData; - var_r31->attr = 0; - var_r31->motion_attr = 0; + var_r31->attr = HU3D_ATTR_NONE; + var_r31->motion_attr = HU3D_ATTR_NONE; var_r31->unk_02 = 0; MakeDisplayList(var_r30, var_r31->unk_48); var_r31->unk_68 = 1.0f; @@ -416,12 +418,12 @@ s16 Hu3DModelLink(s16 arg0) { temp_r30 = &Hu3DData[arg0]; var_r31 = Hu3DData; - for (var_r28 = 0; var_r28 < 0x200; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_MODEL_MAX; var_r28++, var_r31++) { if (var_r31->hsfData == 0x0) { break; } } - if (var_r28 == 0x200) { + if (var_r28 == HU3D_MODEL_MAX) { return -1; } var_r31->unk_C8 = temp_r30->hsfData; @@ -433,7 +435,7 @@ s16 Hu3DModelLink(s16 arg0) { var_r31->hsfData->object = temp_r3_2; var_r31->unk_48 = temp_r30->unk_48; var_r31->attr = temp_r30->attr; - temp_r30->attr |= 0x100000; + temp_r30->attr |= HU3D_ATTR_LINK; var_r31->motion_attr = temp_r30->motion_attr; var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f; var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f; @@ -448,7 +450,7 @@ s16 Hu3DModelLink(s16 arg0) { var_r31->unk_10[i] = temp_r30->unk_10[i]; if (var_r31->unk_10[i] != -1) { ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].unk_04); - var_r31->attr |= 0x400; + var_r31->attr |= HU3D_ATTR_CLUSTER_ON; } } var_r31->unk_64 = temp_r30->unk_64; @@ -479,18 +481,18 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) { s16 i; var_r31 = Hu3DData; - for (var_r29 = 0; var_r29 < 0x200; var_r29++, var_r31++) { + for (var_r29 = 0; var_r29 < HU3D_MODEL_MAX; var_r29++, var_r31++) { if (var_r31->hsfData == 0) { break; } } - if (var_r29 == 0x200) { + if (var_r29 == HU3D_MODEL_MAX) { return -1; } var_r31->hook = hook; var_r31->unk_48 = var_r29+10000; - var_r31->attr = 0x10; - var_r31->motion_attr = 0; + var_r31->attr = HU3D_ATTR_HOOKFUNC; + var_r31->motion_attr = HU3D_ATTR_NONE; var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f; var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f; var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 1.0f; @@ -531,14 +533,14 @@ void Hu3DModelKill(s16 arg0) { temp_r31 = &Hu3DData[arg0]; var_r28 = temp_r31->hsfData; if (var_r28 != 0) { - if ((temp_r31->attr & 4) != 0) { + if ((temp_r31->attr & HU3D_ATTR_SHADOW) != 0) { Hu3DShadowCamBit -= 1; } layerNum[temp_r31->layer] -= 1; - if ((temp_r31->attr & 0x10) != 0) { + if ((temp_r31->attr & HU3D_ATTR_HOOKFUNC) != 0) { HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48); - if ((temp_r31->attr & 0x20) != 0) { + if ((temp_r31->attr & HU3D_ATTR_PARTICLE_KILL) != 0) { copy = temp_r31->unk_120; HuSprAnimKill(copy->unk_44); } @@ -548,7 +550,7 @@ void Hu3DModelKill(s16 arg0) { } return; } - if ((temp_r31->attr & 0x10000) != 0) { + if ((temp_r31->attr & HU3D_ATTR_CAMERA) != 0) { if (temp_r31->unk_08 != -1) { Hu3DMotionKill(temp_r31->unk_08); } @@ -564,7 +566,7 @@ void Hu3DModelKill(s16 arg0) { temp_r31->hsfData = var_r28; } var_r30 = Hu3DData; - for (var_r27 = i = 0; i < 0x200; i++, var_r30++) { + for (var_r27 = i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if ((var_r30->hsfData != 0) && (var_r30->hsfData == var_r28 || (var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28))) { var_r27++; } @@ -573,7 +575,7 @@ void Hu3DModelKill(s16 arg0) { temp_r31->hsfData = NULL; var_r30 = Hu3DData; if (temp_r31->unk_20 != -1) { - for (i = 0; i < 0x200; i++, var_r30++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if (var_r30->hsfData != 0 && var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28) { Hu3DMotion[temp_r31->unk_20].unk_02 = i; break; @@ -618,7 +620,7 @@ void Hu3DModelAllKill(void) { modelKillAllF = 1; var_r30 = Hu3DData; - for (i = 0; i < 0x200; i++, var_r30++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if (var_r30->hsfData != 0) { Hu3DModelKill(i); } @@ -685,8 +687,8 @@ void Hu3DModelAttrSet(s16 arg0, u32 arg1) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - if ((arg1 & (1 << 30)) != 0) { - temp_r31->motion_attr |= arg1 & 0xBFFFFFFF; + if ((arg1 & HU3D_MOTATTR) != 0) { + temp_r31->motion_attr |= arg1 & ~HU3D_MOTATTR; } else { temp_r31->attr |= arg1; } @@ -696,7 +698,7 @@ void Hu3DModelAttrReset(s16 arg0, u32 arg1) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - if ((arg1 & (1 << 30)) != 0) { + if ((arg1 & HU3D_MOTATTR) != 0) { temp_r31->motion_attr &= ~arg1; } else { temp_r31->attr &= ~arg1; @@ -805,7 +807,7 @@ void Hu3DModelTPLvlSet(s16 arg0, f32 arg8) { temp_r25->flags |= 1; } } - temp_r28->attr |= 0x40000; + temp_r28->attr |= HU3D_ATTR_TPLVL_SET; } void Hu3DModelHiliteMapSet(s16 arg0, AnimData *arg1) { @@ -859,10 +861,10 @@ void Hu3DModelShadowSet(s16 arg0) { temp_r31 = &Hu3DData[arg0]; temp_r30 = temp_r31->hsfData; - if ((temp_r31->attr & 4) == 0) { + if ((temp_r31->attr & HU3D_ATTR_SHADOW) == 0) { Hu3DShadowCamBit++; } - temp_r31->attr |= 4; + temp_r31->attr |= HU3D_ATTR_SHADOW; var_r27 = temp_r30->object; for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) { @@ -880,7 +882,7 @@ void Hu3DModelShadowReset(s16 arg0) { temp_r31 = &Hu3DData[(s16) arg0]; temp_r30 = temp_r31->hsfData; - temp_r31->attr &= ~4; + temp_r31->attr &= ~HU3D_ATTR_SHADOW; Hu3DShadowCamBit -= 1; var_r27 = temp_r30->object; for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) { @@ -892,14 +894,14 @@ void Hu3DModelShadowDispOn(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr |= 4; + temp_r31->attr |= HU3D_ATTR_SHADOW; } void Hu3DModelShadowDispOff(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr &= ~4; + temp_r31->attr &= ~HU3D_ATTR_SHADOW; } void Hu3DModelShadowMapSet(s16 arg0) { @@ -967,7 +969,7 @@ void Hu3DModelHookSet(s16 arg0, char *arg1, s16 arg2) { constData = copy->constData; constData->hook = arg2; data = &Hu3DData[arg2]; - data->attr |= 0x8000; + data->attr |= HU3D_ATTR_HOOK; (void)data; return; } @@ -994,7 +996,7 @@ void Hu3DModelHookReset(s16 arg0) { if (temp_r31->hook != -1) { temp_r0 = temp_r31->hook; temp_r28 = &Hu3DData[temp_r0]; - temp_r28->attr &= ~0x8000; + temp_r28->attr &= ~HU3D_ATTR_HOOK; temp_r31->hook = -1; (void)temp_r28; } @@ -1023,7 +1025,7 @@ void Hu3DModelHookObjReset(s16 arg0, char *arg1) { temp_r29 = copy->constData; temp_r0 = temp_r29->hook; temp_r28 = &Hu3DData[temp_r0]; - temp_r28->attr &= ~0x8000; + temp_r28->attr &= ~HU3D_ATTR_HOOK; temp_r29->hook = -1; (void)temp_r28; return; @@ -1067,7 +1069,7 @@ void Hu3DModelHiliteTypeSet(s16 arg0, s16 arg1) { var_r31->flags |= 0x100; } temp_r29 = &Hu3DData[arg0]; - temp_r29->attr |= 0x20000; + temp_r29->attr |= HU3D_ATTR_HILITE; (void)temp_r29; } @@ -1101,7 +1103,7 @@ void Hu3DCameraCreate(s32 cam) { defCamera.scissor_h = RenderMode->efbHeight; Hu3DCameraExistF |= cam; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; *cam_ptr = defCamera; @@ -1114,7 +1116,7 @@ void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 near, f32 far, f32 aspect) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->fov = fov; @@ -1130,7 +1132,7 @@ void Hu3DCameraViewportSet(s32 cam, f32 vx, f32 vy, f32 vw, f32 vh, f32 nz, f32 s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->viewport_x = vx; @@ -1148,7 +1150,7 @@ void Hu3DCameraScissorSet(s32 cam, u32 x, u32 y, u32 w, u32 h) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->scissor_x = x; @@ -1164,7 +1166,7 @@ void Hu3DCameraPosSet(s32 cam, f32 x, f32 y, f32 z, f32 ux, f32 uy, f32 uz, f32 s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->pos.x = x; @@ -1185,7 +1187,7 @@ void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->pos = *pos; @@ -1200,7 +1202,7 @@ void Hu3DCameraKill(s32 cam) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->fov = -1.0f; @@ -1217,9 +1219,9 @@ void Hu3DCameraAllKill(void) { s16 mask2; cam_ptr = &Hu3DCamera[0]; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1, cam_ptr++) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1, cam_ptr++) { if (-1.0f != cam_ptr->fov) { - for (j = 0, mask2 = 1; j < 0x10; j++, mask2 <<= 1) { + for (j = 0, mask2 = 1; j < HU3D_CAM_MAX; j++, mask2 <<= 1) { if ((mask & mask2) != 0) { cam_ptr2 = &Hu3DCamera[j]; cam_ptr2->fov = -1.0f; @@ -1291,7 +1293,7 @@ BOOL Hu3DModelCameraInfoSet(s16 arg0, u16 arg1) { temp_r28->unk_01 = arg1; temp_r24 = &Hu3DData[arg0]; - temp_r24->attr |= 0x2000; + temp_r24->attr |= HU3D_ATTR_CAMERA_MOTON; (void)temp_r24; return 1; } @@ -1305,8 +1307,8 @@ s16 Hu3DModelCameraCreate(s16 arg0, u16 arg1) { temp_r3 = Hu3DHookFuncCreate((ModelHookFunc)-1); temp_r31 = &Hu3DData[(s16) temp_r3]; - temp_r31->attr &= ~0x10; - temp_r31->attr |= 0x10000 | 0x2000; + temp_r31->attr &= ~HU3D_ATTR_HOOKFUNC; + temp_r31->attr |= HU3D_ATTR_CAMERA | HU3D_ATTR_CAMERA_MOTON; temp_r31->unk_08 = arg0; temp_r31->unk_01 = arg1; return temp_r3; @@ -1319,7 +1321,7 @@ void Hu3DCameraMotionOn(s16 arg0, s8 arg1) { copy2 = &Hu3DData[arg0]; copy2->unk_01 = arg1; copy = &Hu3DData[arg0]; - copy->attr |= 0x2000; + copy->attr |= HU3D_ATTR_CAMERA_MOTON; } void Hu3DCameraMotionStart(s16 arg0, u16 arg1) { @@ -1332,9 +1334,9 @@ void Hu3DCameraMotionStart(s16 arg0, u16 arg1) { temp_r27 = &Hu3DData[arg0]; temp_r27->unk_01 = arg1; temp_r29 = &Hu3DData[arg0]; - temp_r29->attr |= 0x2000; + temp_r29->attr |= HU3D_ATTR_CAMERA_MOTON; temp_r30 = &Hu3DData[arg0]; - temp_r30->motion_attr &= ~0x40000002; + temp_r30->motion_attr &= ~HU3D_MOTATTR_PAUSE; Hu3DMotionStartEndSet(arg0, 0.0f, Hu3DMotionMotionMaxTimeGet(temp_r28->unk_08)); Hu3DMotionTimeSet(arg0, 0.0f); } @@ -1343,7 +1345,7 @@ void Hu3DCameraMotionOff(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr &= ~0x2000; + temp_r31->attr &= ~HU3D_ATTR_CAMERA_MOTON; } void Hu3DLighInit(void) { @@ -1456,7 +1458,7 @@ s16 Hu3DLLightCreateV(s16 arg0, Vec* arg1, Vec* arg2, GXColor* arg3) { return -1; } temp_r29->unk_38[var_r30] = var_r28; - temp_r29->attr |= 0x1000; + temp_r29->attr |= HU3D_ATTR_LLIGHT; return var_r30; } @@ -1544,7 +1546,7 @@ void Hu3DLLightKill(s16 dataIndex, s16 lightIndex) { } } if (var_r30 == 8) { - temp_r31->attr &= ~0x1000; + temp_r31->attr &= ~HU3D_ATTR_LLIGHT; } } @@ -1789,7 +1791,7 @@ s16 Hu3DLightSet(ModelData* arg0, Mtx *arg1, Mtx *arg2, f32 arg8) { var_r30 <<= 1; } } - if ((arg0->attr & 0x1000) != 0) { + if ((arg0->attr & HU3D_ATTR_LLIGHT) != 0) { for (i = 0; i < 8; i++) { if (arg0->unk_38[i] != -1) { var_r29 = &Hu3DLocalLight[arg0->unk_38[i]]; @@ -1939,9 +1941,9 @@ void Hu3DShadowExec(void) { GXInvalidateTexAll(); GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, BGColor); - for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) { - if (var_r31->hsfData != 0 && (var_r31->attr & 4) != 0 && (var_r31->attr & 1) == 0 && (var_r31->attr & 0x8000) == 0) { - if ((var_r31->attr & 8) != 0) { + for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) { + if (var_r31->hsfData != 0 && (var_r31->attr & HU3D_ATTR_SHADOW) != 0 && (var_r31->attr & HU3D_ATTR_DISPOFF) == 0 && (var_r31->attr & HU3D_ATTR_HOOK) == 0) { + if ((var_r31->attr & HU3D_ATTR_MOTION_OFF) != 0) { test2 = 0; if (var_r31->unk_08 != -1) { Hu3DMotionExec(var_r30, var_r31->unk_08, var_r31->unk_64, 0); @@ -1952,7 +1954,7 @@ void Hu3DShadowExec(void) { if (var_r31->unk_0A != -1) { Hu3DMotionExec(var_r30, var_r31->unk_0A, var_r31->unk_74, 1); } - if ((var_r31->attr & 0x400) != 0) { + if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterMotionExec(var_r31); test2 = 1; } @@ -1963,13 +1965,13 @@ void Hu3DShadowExec(void) { Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 1); } } - if ((var_r31->attr & 0x90) == 0 || (var_r31->motion_attr & 0x40000002) == 0) { + if ((var_r31->attr & (HU3D_ATTR_HOOKFUNC|HU3D_ATTR_ENVELOPE_OFF)) == 0 || (var_r31->motion_attr & HU3D_MOTATTR_PAUSE) == 0) { test2 = 1; InitVtxParm(var_r31->hsfData); if (var_r31->unk_0E != -1) { ShapeProc(var_r31->hsfData); } - if ((var_r31->attr & 0x400) != 0) { + if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterProc(var_r31); } if (var_r31->hsfData->cenvCnt != 0) { @@ -1977,7 +1979,7 @@ void Hu3DShadowExec(void) { } PPCSync(); } - var_r31->attr |= 0x800; + var_r31->attr |= HU3D_ATTR_MOT_EXEC; } mtxRot(sp58, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); PSMTXScale(spB8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index 258e7103..e21ad90f 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -10,10 +10,14 @@ #include "ext_math.h" #include "string.h" +#define HU3D_MOTATTR_SHIFT_ALL (HU3D_MOTATTR_SHIFT_LOOP|HU3D_MOTATTR_SHIFT_PAUSE|HU3D_MOTATTR_SHIFT_REV) +#define HU3D_MOTATTR_NOSHIFT_ALL (HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE|HU3D_MOTATTR_REV) +#define HU3D_MOTATTR_ALL (HU3D_MOTATTR_SHIFT_ALL|HU3D_MOTATTR_NOSHIFT_ALL) + static s32 SearchObjectIndex(HsfData *arg0, u32 arg1); static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1); -MotionData Hu3DMotion[256]; +MotionData Hu3DMotion[HU3D_MOTION_MAX]; static HsfBitmap *bitMapPtr; @@ -22,7 +26,7 @@ void Hu3DMotionInit(void) { s16 i; var_r31 = (MotionData*) Hu3DData; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { var_r31->unk_04 = 0; } } @@ -32,12 +36,12 @@ s16 Hu3DMotionCreate(void *arg0) { s16 i; var_r31 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { if (var_r31->unk_04 == 0) { break; } } - if (i == 256) { + if (i == HU3D_MOTION_MAX) { OSReport("Error: Create Motion Over!\n"); return -1; } @@ -53,12 +57,12 @@ s16 Hu3DMotionModelCreate(s16 arg0) { s16 i; var_r31 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { if (var_r31->unk_04 == 0) { break; } } - if (i == 256) { + if (i == HU3D_MOTION_MAX) { OSReport("Error: Create Motion Over!\n"); return -1; } @@ -101,7 +105,7 @@ void Hu3DMotionAllKill(void) { s16 i; var_r27 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r27++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r27++) { if (var_r27->unk_04) { Hu3DMotionKill(i); } @@ -143,7 +147,7 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { MotionData *sp10 = &Hu3DMotion[arg1]; s32 var_r30; - arg4 &= ~0x40000000; + arg4 &= ~HU3D_MOTATTR; var_r30 = 0; if (temp_r31->unk_0C != -1) { temp_r31->unk_08 = temp_r31->unk_0C; @@ -151,20 +155,20 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->unk_68 = temp_r31->unk_88; temp_r31->unk_6C = temp_r31->unk_8C; temp_r31->unk_70 = temp_r31->unk_90; - if (arg4 & 0x40000008) { - var_r30 |= 0x40000000 | 1; + if (arg4 & HU3D_MOTATTR_SHIFT_LOOP) { + var_r30 |= HU3D_MOTATTR_LOOP; } - if (arg4 & 0x40000010) { - var_r30 |= 0x40000000 | 2; + if (arg4 & HU3D_MOTATTR_SHIFT_PAUSE) { + var_r30 |= HU3D_MOTATTR_PAUSE; } - if (arg4 & 0x40000020) { - var_r30 |= 0x40000000 | 4; + if (arg4 & HU3D_MOTATTR_SHIFT_REV) { + var_r30 |= HU3D_MOTATTR_REV; } - temp_r31->motion_attr &= ~0x4000003F; + temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL; temp_r31->motion_attr |= var_r30; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; } else { - temp_r31->motion_attr &= ~0x40000038; + temp_r31->motion_attr &= ~HU3D_MOTATTR_SHIFT_ALL; } temp_r31->unk_0C = arg1; temp_r31->unk_84 = arg2; @@ -173,18 +177,18 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->unk_80 = arg3; temp_r31->unk_8C = 0.0f; temp_r31->unk_90 = Hu3DMotionShiftMaxTimeGet(arg0); - if (arg4 & 0x40000001) { - var_r30 |= 0x40000000 | 8; + if (arg4 & HU3D_MOTATTR_LOOP) { + var_r30 |= HU3D_MOTATTR_SHIFT_LOOP; } - if (arg4 & 0x40000002) { - var_r30 |= 0x40000000 | 0x10; + if (arg4 & HU3D_MOTATTR_PAUSE) { + var_r30 |= HU3D_MOTATTR_SHIFT_PAUSE; } - if (arg4 & 0x40000004) { - var_r30 |= 0x40000000 | 0x20; + if (arg4 & HU3D_MOTATTR_REV) { + var_r30 |= HU3D_MOTATTR_SHIFT_REV; } - arg4 &= ~0x40000007; + arg4 &= ~HU3D_MOTATTR_NOSHIFT_ALL; temp_r31->motion_attr |= var_r30 | arg4; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; } void Hu3DMotionShapeSet(s16 arg0, s16 arg1) { @@ -231,8 +235,8 @@ s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) { temp_r31->unk_10[i] = arg1; temp_r31->unk_A4[i] = 0.0f; temp_r31->unk_B4[i] = 1.0f; - temp_r31->cluster_attr[i] = 0; - temp_r31->attr |= 0x400; + temp_r31->cluster_attr[i] = HU3D_ATTR_NONE; + temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); return i; } @@ -248,7 +252,7 @@ s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) { temp_r31->unk_10[arg2] = arg1; temp_r31->unk_A4[arg2] = 0.0f; temp_r31->unk_B4[arg2] = 1.0f; - temp_r31->attr |= 0x400; + temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); return arg2; } @@ -265,7 +269,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { for (i = 0; i < 4; i++) { temp_r31->unk_10[i] = -1; } - temp_r31->attr &= ~0x400; + temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON; } else { temp_r31->unk_10[arg1] = -1; for (i = 0; i < 4; i++) { @@ -273,7 +277,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { return; } } - temp_r31->attr &= ~0x400; + temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON; } } @@ -299,7 +303,7 @@ void Hu3DMotionTimeSet(s16 arg0, float arg1) { arg1 = 0.0f; } temp_r31->unk_64 = arg1; - if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & 0x40000002)) { + if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { Hu3DMotionExec(arg0, temp_r31->unk_08, arg1, 0); if (temp_r31->unk_0C != -1) { Hu3DSubMotionExec(arg0); @@ -378,7 +382,7 @@ void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2) { } s32 Hu3DMotionEndCheck(s16 arg0) { - if (!(Hu3DData[arg0].motion_attr & 0x40000004)) { + if (!(Hu3DData[arg0].motion_attr & HU3D_MOTATTR_REV)) { return (Hu3DMotionMaxTimeGet(arg0) <= Hu3DMotionTimeGet(arg0)); } else { return (Hu3DMotionTimeGet(arg0) <= 0.0f); @@ -480,13 +484,13 @@ void Hu3DMotionNext(s16 arg0) { temp_r28 = temp_r31->motion_attr; if (temp_r31->unk_08 != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_08]; - if (!(temp_r28 & 0x40000002)) { - if (!(temp_r28 & 0x40000004)) { + if (!(temp_r28 & HU3D_MOTATTR_PAUSE)) { + if (!(temp_r28 & HU3D_MOTATTR_REV)) { temp_r31->unk_64 += temp_r31->unk_68 * minimumVcountf; } else { temp_r31->unk_64 -= temp_r31->unk_68 * minimumVcountf; } - if (temp_r28 & 0x40000001) { + if (temp_r28 & HU3D_MOTATTR_LOOP) { if (temp_r31->unk_64 < temp_r31->unk_6C) { temp_r31->unk_64 = temp_r31->unk_70 - (temp_r31->unk_6C - temp_r31->unk_64); } else if (temp_r31->unk_64 >= temp_r31->unk_70) { @@ -502,13 +506,13 @@ void Hu3DMotionNext(s16 arg0) { if (temp_r31->unk_0A != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_0A]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r28 & 0x40000400)) { - if (!(temp_r28 & 0x40000800)) { + if (!(temp_r28 & HU3D_MOTATTR_OVL_PAUSE)) { + if (!(temp_r28 & HU3D_MOTATTR_OVL_REV)) { temp_r31->unk_74 += temp_r31->unk_78 * minimumVcountf; } else { temp_r31->unk_74 -= temp_r31->unk_78 * minimumVcountf; } - if (temp_r28 & 0x40000200) { + if (temp_r28 & HU3D_MOTATTR_OVL_LOOP) { if (temp_r31->unk_74 < 0.0f) { temp_r31->unk_74 = temp_r29->len; } else if (temp_r31->unk_74 >= temp_r29->len) { @@ -531,28 +535,28 @@ void Hu3DMotionNext(s16 arg0) { temp_r31->unk_70 = temp_r31->unk_90; temp_r31->unk_0C = -1; temp_r28 = 0; - if (temp_r31->motion_attr & 0x40000008) { - temp_r28 |= 0x40000000 | 1; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) { + temp_r28 |= HU3D_MOTATTR_LOOP; } - if (temp_r31->motion_attr & 0x40000010) { - temp_r28 |= 0x40000000 | 2; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE) { + temp_r28 |= HU3D_MOTATTR_PAUSE; } - if (temp_r31->motion_attr & 0x40000020) { - temp_r28 |= 0x40000000 | 4; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV) { + temp_r28 |= HU3D_MOTATTR_REV; } - temp_r31->motion_attr &= ~0x4000003F; + temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL; temp_r31->motion_attr |= temp_r28; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; return; } - if (!(temp_r31->motion_attr & 0x40000010)) { + if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_0C]; - if (!(temp_r31->motion_attr & 0x40000020)) { + if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV)) { temp_r31->unk_84 += temp_r31->unk_88 * minimumVcountf; } else { temp_r31->unk_84 -= temp_r31->unk_88 * minimumVcountf; } - if (temp_r31->motion_attr & 0x40000008) { + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) { if (temp_r31->unk_84 < temp_r31->unk_8C) { temp_r31->unk_84 = temp_r31->unk_90; } else if (temp_r31->unk_84 >= temp_r31->unk_90) { @@ -565,15 +569,15 @@ void Hu3DMotionNext(s16 arg0) { } } } - if (temp_r31->unk_0E != -1 && !(temp_r28 & 0x40000080)) { + if (temp_r31->unk_0E != -1 && !(temp_r28 & HU3D_MOTATTR_SHAPE_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_0E]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r28 & 0x40000100)) { + if (!(temp_r28 & HU3D_MOTATTR_SHAPE_REV)) { temp_r31->unk_94 += temp_r31->unk_98 * minimumVcountf; } else { temp_r31->unk_94 -= temp_r31->unk_98 * minimumVcountf; } - if (temp_r28 & 0x40000040) { + if (temp_r28 & HU3D_MOTATTR_SHAPE_LOOP) { if (temp_r31->unk_94 < temp_r31->unk_9C) { temp_r31->unk_94 = temp_r31->unk_A0; } else if (temp_r31->unk_94 >= temp_r31->unk_A0) { @@ -585,17 +589,17 @@ void Hu3DMotionNext(s16 arg0) { temp_r31->unk_94 = temp_r31->unk_A0; } } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { for (i = 0; i < 4; i++) { - if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & (s32) 0xC0000002)) { + if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_10[i]]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r31->cluster_attr[i] & (s32) 0xC0000004)) { + if (!(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_REV)) { temp_r31->unk_A4[i] += temp_r31->unk_B4[i] * minimumVcountf; } else { temp_r31->unk_A4[i] -= temp_r31->unk_B4[i] * minimumVcountf; } - if (temp_r31->cluster_attr[i] & (s32) 0xC0000001) { + if (temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_LOOP) { if (temp_r31->unk_A4[i] < 0.0f) { temp_r31->unk_A4[i] = temp_r29->len; } else if (temp_r31->unk_A4[i] >= temp_r29->len) { @@ -679,7 +683,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { if (var_r30->channel == 0x28) { temp_r31->data.mesh.baseMorph = GetCurve(var_r30, arg2); } else if (temp_r31->type == 7) { - if (temp_r27->attr & 0x2000) { + if (temp_r27->attr & HU3D_ATTR_CAMERA_MOTON) { SetObjCameraMotion(arg0, var_r30, GetCurve(var_r30, arg2)); } } else if (temp_r31->type == 8) { @@ -718,20 +722,20 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { } break; case 9: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { if (var_r30->param < temp_r29->materialCnt) { SetObjMatMotion(arg0, var_r30, GetCurve(var_r30, arg2)); } } break; case 5: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { var_r23 = &temp_r29->cluster[var_r30->target_s16]; var_r23->unk10 = GetClusterCurve(var_r30, arg2); } break; case 6: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { temp_r22 = var_r30; var_r23 = &temp_r29->cluster[temp_r22->target_s16]; var_r23->unk14[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2); @@ -739,7 +743,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { break; case 10: var_r26 = var_r30; - if (var_r26->target_s16 != -1 || !(temp_r27->attr & 0x80000)) { + if (var_r26->target_s16 != -1 || !(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { if (var_r26->param != -1 && var_r26->param < temp_r29->attributeCnt) { SetObjAttrMotion(arg0, var_r26, GetCurve(var_r26, arg2)); } @@ -762,7 +766,7 @@ void Hu3DCameraMotionExec(s16 arg0) { temp_r27 = temp_r28->unk_04; temp_r29 = temp_r27->motion; var_r31 = temp_r29->track; - if (temp_r30->attr & 0x2000) { + if (temp_r30->attr & HU3D_ATTR_CAMERA_MOTON) { temp_r26 = &var_r31[temp_r29->numTracks]; for (; var_r31 < temp_r26; var_r31++) { if (var_r31->type == 2 && var_r31->param_u16 == 7) { @@ -928,7 +932,7 @@ void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) { temp_r31->shadowColor[2] = var_f31 * 255.0f; break; case 0x39: - if (!(temp_r30->attr & 0x40000)) { + if (!(temp_r30->attr & HU3D_ATTR_TPLVL_SET)) { temp_r31->invAlpha = var_f31; } break; @@ -1047,7 +1051,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { switch (arg1->channel) { case 8: var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.x = var_f30; } @@ -1055,7 +1059,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 9: var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.y = var_f30; } @@ -1063,7 +1067,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 10: var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.z = var_f30; } @@ -1071,7 +1075,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 11: var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.x = var_f30; } @@ -1079,7 +1083,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 12: var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.y = var_f30; } @@ -1087,14 +1091,14 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 13: var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.z = var_f30; } } break; case 14: - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { VECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC); VECNormalize(&spC, &spC); @@ -1107,7 +1111,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { } break; case 15: - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].fov = arg2; } @@ -1357,7 +1361,7 @@ void JointModel_Motion(s16 arg0, s16 arg1) { void Hu3DMotionCalc(s16 arg0) { ModelData *temp_r31 = &Hu3DData[arg0]; - if ((temp_r31->attr & 1) || (temp_r31->attr & 0x8000)) { + if ((temp_r31->attr & HU3D_ATTR_DISPOFF) || (temp_r31->attr & HU3D_ATTR_HOOK)) { return; } if (temp_r31->unk_08 != -1) { @@ -1369,7 +1373,7 @@ void Hu3DMotionCalc(s16 arg0) { if (temp_r31->unk_0A != -1) { Hu3DMotionExec(arg0, temp_r31->unk_0A, temp_r31->unk_74, 1); } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { ClusterMotionExec(temp_r31); } if (temp_r31->unk_0E != -1) { @@ -1379,12 +1383,12 @@ void Hu3DMotionCalc(s16 arg0) { Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 1); } } - if (!(temp_r31->attr & 0x90) || !(temp_r31->motion_attr & 0x40000002)) { + if (!(temp_r31->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) || !(temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { InitVtxParm(temp_r31->hsfData); if (temp_r31->unk_0E != -1) { ShapeProc(temp_r31->hsfData); } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { ClusterProc(temp_r31); } if (temp_r31->hsfData->cenvCnt != 0) { @@ -1392,7 +1396,7 @@ void Hu3DMotionCalc(s16 arg0) { } PPCSync(); } - temp_r31->attr |= 0x800; + temp_r31->attr |= HU3D_ATTR_MOT_EXEC; } static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) {