From 2d84faca1f3fedc608be6be3848cd30612417612 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Thu, 30 May 2024 08:14:52 -0500 Subject: [PATCH] Decompile m416dll/map.c --- config/GMPE01_00/rels/m416Dll/symbols.txt | 50 ++-- configure.py | 2 +- include/REL/m416Dll.h | 4 + include/game/hsfman.h | 1 + src/REL/m416Dll/main.c | 9 +- src/REL/m416Dll/map.c | 331 ++++++++++++++++++++++ 6 files changed, 366 insertions(+), 31 deletions(-) create mode 100644 src/REL/m416Dll/map.c diff --git a/config/GMPE01_00/rels/m416Dll/symbols.txt b/config/GMPE01_00/rels/m416Dll/symbols.txt index 4d506d60..29a36a1d 100644 --- a/config/GMPE01_00/rels/m416Dll/symbols.txt +++ b/config/GMPE01_00/rels/m416Dll/symbols.txt @@ -132,30 +132,30 @@ lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data: lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0x1 data:byte lbl_1_data_3C = .data:0x0000003C; // type:object size:0x1 data:byte @@ -177,7 +177,7 @@ lbl_1_data_218 = .data:0x00000218; // type:object size:0x48 lbl_1_data_260 = .data:0x00000260; // type:object size:0x8 data:float lbl_1_data_268 = .data:0x00000268; // type:object size:0x4 data:byte lbl_1_data_26C = .data:0x0000026C; // type:object size:0x60 data:float -lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x18 +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x18 data:float lbl_1_data_2E4 = .data:0x000002E4; // type:object size:0x8 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte diff --git a/configure.py b/configure.py index fc1de292..e1697cfa 100644 --- a/configure.py +++ b/configure.py @@ -948,7 +948,7 @@ config.libs = [ objects={ Object(Matching, "REL/executor.c"), Object(Matching, "REL/m416Dll/main.c"), - Object(NonMatching, "REL/m416Dll/map.c"), + Object(Matching, "REL/m416Dll/map.c"), }, ), Rel( diff --git a/include/REL/m416Dll.h b/include/REL/m416Dll.h index ddaf3133..c6eba127 100644 --- a/include/REL/m416Dll.h +++ b/include/REL/m416Dll.h @@ -2,7 +2,11 @@ #define M416DLL_H #include "game/object.h" +#include "game/hsfman.h" +s32 fn_1_1240(void); +void fn_1_1250(s32 arg0); +void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_79D0(Process *objman); void fn_1_7A54(void); void fn_1_8EB4(s16 model); diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 7e04d841..afc7fb52 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -242,5 +242,6 @@ extern s32 shadowModelDrawF; extern s16 Hu3DCameraNo; extern s16 Hu3DCameraBit; extern s16 Hu3DPauseF; +extern GXColor BGColor; #endif diff --git a/src/REL/m416Dll/main.c b/src/REL/m416Dll/main.c index b509b2df..689f8bf5 100644 --- a/src/REL/m416Dll/main.c +++ b/src/REL/m416Dll/main.c @@ -41,7 +41,7 @@ typedef struct struct_bss_14 { float unkC; } StructBss14; -u32 lbl_1_bss_960; +s32 lbl_1_bss_960; s16 lbl_1_bss_95C; omObjData *lbl_1_bss_958; omObjData *lbl_1_bss_954; @@ -64,8 +64,7 @@ s32 lbl_1_bss_0; void fn_1_458(omObjData *object); void fn_1_4FC(omObjData *object); -s32 fn_1_1240(void); -void fn_1_1250(u32 arg0); + void fn_1_1260(Process *objman); void fn_1_6E5C(omObjData *object); @@ -370,7 +369,7 @@ s32 fn_1_1240(void) return lbl_1_bss_960; } -void fn_1_1250(u32 arg0) +void fn_1_1250(s32 arg0) { lbl_1_bss_960 = arg0; } @@ -516,7 +515,7 @@ u32 lbl_1_data_10C[9][2] = { void fn_1_29DC(omObjData *object); -void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix); + void fn_1_1964(omObjData *object) diff --git a/src/REL/m416Dll/map.c b/src/REL/m416Dll/map.c new file mode 100644 index 00000000..76dd799c --- /dev/null +++ b/src/REL/m416Dll/map.c @@ -0,0 +1,331 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfanim.h" +#include "game/hsfmotion.h" +#include "game/audio.h" +#include "game/wipe.h" +#include "game/sprite.h" +#include "game/chrman.h" +#include "game/pad.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/frand.h" + +#include "math.h" +#include "ext_math.h" + +#include "REL/m416Dll.h" + +GXColor lbl_1_data_268 = { 0, 0, 0, 255 }; +Vec lbl_1_data_26C[8] = { + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, +}; +Vec lbl_1_data_2CC[2] = { + { 370, 615, -245 }, + { -370, 615, -245 } +}; +float lbl_1_data_2E4[2] = { + 0, 1 +}; + +omObjData *lbl_1_bss_118C; +omObjData *lbl_1_bss_1188; +u32 lbl_1_bss_1184; +void *lbl_1_bss_1180; +float lbl_1_bss_117C; +s16 lbl_1_bss_1174[4]; +float lbl_1_bss_116C[2]; +s16 lbl_1_bss_1168; +s16 lbl_1_bss_968[256][4]; + +void fn_1_7A74(omObjData *object); +void fn_1_7D74(omObjData *object); +void fn_1_7F30(omObjData *object); +void fn_1_83B4(omObjData *object); + +void fn_1_89BC(ModelData *model, Mtx mtx); + +void fn_1_8EA0(void); +void fn_1_8FF0(void); + +void fn_1_79D0(Process *objman) +{ + lbl_1_bss_118C = omAddObjEx(objman, 20, 2, 0, -1, fn_1_7A74); + lbl_1_bss_1188 = omAddObjEx(objman, 20, 10, 0, -1, fn_1_7F30); + fn_1_8EA0(); +} + +void fn_1_7A54(void) +{ + fn_1_8FF0(); +} + +void fn_1_7A74(omObjData *object) +{ + s16 i; + object->model[0] = Hu3DModelCreateFile(0x2F0000); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelLayerSet(object->model[0], 0); + object->trans.x = 0; + object->trans.y = 0; + object->trans.z = 0; + fn_1_8EB4(object->model[0]); + for(i=0; i<2; i++) { + lbl_1_bss_1174[i+2] = Hu3DLLightCreate(object->model[0], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[0], lbl_1_bss_1174[i+2], 1); + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], 45, 0.8, 3); + Hu3DLLightColorSet(object->model[0], lbl_1_bss_1174[i+2], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[0], lbl_1_bss_1174[i+2], lbl_1_data_2CC[i].x, 475, lbl_1_data_2CC[i].z, 0, 1, 0); + } + object->model[1] = Hu3DHookFuncCreate(fn_1_89BC); + Hu3DModelLayerSet(object->model[1], 1); + lbl_1_bss_1184 = GXGetTexBufferSize(640, 480, GX_TF_RGBA8, GX_FALSE, 0); + lbl_1_bss_1180 = HuMemDirectMallocNum(HEAP_DATA, lbl_1_bss_1184, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_1180, 0, lbl_1_bss_1184); + object->func = fn_1_7D74; +} + +void fn_1_7D74(omObjData *object) +{ + s32 i; + for(i=0; i<2; i++) { + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], (15*sind(object->work[i]))+45, 0.8, 3); + object->work[i] += 8.0f; + if(object->work[i] > 360.0f) { + object->work[i] -= 360.0f; + } + } +} + +void fn_1_7F30(omObjData *object) +{ + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 temp_r30; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + AnimData *temp_r23; + object->stat |= 0x100; + for(temp_r30=0; temp_r30<2; temp_r30++) { + if(temp_r30 == 0) { + temp_r25 = Hu3DModelCreateFile(0x2F0001); + temp_r26 = temp_r25; + } else { + temp_r24 = Hu3DModelLink(temp_r25); + temp_r26 = temp_r24; + } + object->model[temp_r30] = temp_r26; + Hu3DModelLayerSet(temp_r26, 2); + fn_1_8EB4(object->model[temp_r30]); + Hu3DModelPosSet(object->model[temp_r30], lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + } + temp_r23 = HuSprAnimReadFile(0x2F0006); + temp_r29 = &lbl_1_data_26C[0]; + for(temp_r30=0; temp_r30<2; temp_r30++) { + for(temp_r27=0; temp_r27<4; temp_r27++, temp_r29++) { + temp_r28 = (temp_r30*4)+2; + temp_r28 = temp_r27+temp_r28; + object->model[temp_r28] = Hu3DParticleCreate(temp_r23, 50); + Hu3DParticleHookSet(object->model[temp_r28], fn_1_613C); + Hu3DParticleBlendModeSet(object->model[temp_r28], 1); + Hu3DModelLayerSet(object->model[temp_r28], 6); + Hu3DModelScaleSet(object->model[temp_r28], 0.5f, 0.7f, 0.5f); + MTXTrans(sp68, lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + MTXTrans(sp38, 0, -150, 0); + MTXConcat(sp68, sp38, sp68); + MTXTrans(sp8, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp68, sp8, sp68); + Hu3DModelPosSet(object->model[temp_r28], sp68[0][3], sp68[1][3], sp68[2][3]); + } + } + for(temp_r30=0; temp_r30<2; temp_r30++) { + lbl_1_bss_1174[temp_r30] = Hu3DLLightCreate(object->model[temp_r30], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1); + Hu3DLLightPointSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1000, 0.8, 3); + Hu3DLLightColorSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], lbl_1_data_2CC[temp_r30].x, 475, lbl_1_data_2CC[temp_r30].z, 0, 1, 0); + } + object->work[0] = 0; + object->work[1] = 45; + lbl_1_bss_117C = 0; + object->func = fn_1_83B4; +} + +void fn_1_83B4(omObjData *object) +{ + float temp_f31; + + s32 temp_r31; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + ModelData *temp_r26; + + Mtx sp130[2]; + Mtx sp100; + Mtx spD0; + Mtx spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + float sp8[2]; + MTXIdentity(sp100); + MTXIdentity(sp130[0]); + MTXIdentity(sp130[1]); + MTXIdentity(spD0); + MTXIdentity(spA0); + MTXIdentity(sp70); + MTXIdentity(sp40); + MTXIdentity(sp10); + lbl_1_bss_117C = fmod(1+lbl_1_bss_117C, 360); + sp8[0] = 20*sind(lbl_1_bss_117C); + sp8[1] = 20*cosd(lbl_1_bss_117C); + if(fn_1_1240() == 6) { + for(temp_r31=0; temp_r31<2; temp_r31++) { + temp_f31 = sp8[temp_r31]-lbl_1_bss_116C[temp_r31]; + if(temp_f31*lbl_1_data_2E4[temp_r31] <= 0.0f) { + temp_r26 = &Hu3DData[object->model[temp_r31]]; + HuAudFXEmiterPlay(1467, &temp_r26->pos); + } + lbl_1_data_2E4[temp_r31] = temp_f31; + } + } + lbl_1_bss_116C[0] = sp8[0]; + lbl_1_bss_116C[1] = sp8[1]; + temp_r29 = &lbl_1_data_26C[0]; + for(temp_r31=0; temp_r31<2; temp_r31++) { + MTXRotDeg(sp130[temp_r31], 'y', lbl_1_bss_116C[temp_r31]); + for(temp_r28=0; temp_r28<4; temp_r28++, temp_r29++) { + temp_r27 = (temp_r31*4)+2; + temp_r27 = temp_r28+temp_r27; + MTXTrans(spA0, lbl_1_data_2CC[temp_r31].x, lbl_1_data_2CC[temp_r31].y, lbl_1_data_2CC[temp_r31].z); + MTXTrans(sp70, 0, -150, 0); + MTXConcat(spA0, sp70, spA0); + MTXTrans(sp40, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp130[temp_r31], sp40, sp10); + MTXConcat(spA0, sp10, spA0); + Hu3DModelPosSet(object->model[temp_r27], spA0[0][3], spA0[1][3], spA0[2][3]); + } + } + Hu3DModelRotSet(object->model[0], 0, lbl_1_bss_116C[0], 0); + Hu3DModelRotSet(object->model[1], 0, lbl_1_bss_116C[1], 0); + for(temp_r31=0; temp_r31<2; temp_r31++) { + Hu3DLLightPointSet(object->model[temp_r31], lbl_1_bss_1174[temp_r31], (15*sind(object->work[temp_r31]))+45, 0.9, 3); + object->work[temp_r31] += 8.0f; + if(object->work[temp_r31] > 360.0f) { + object->work[temp_r31] -= 360.0f; + } + } +} + +void fn_1_8904(void *arg0, u8 arg1) +{ + GXSetTexCopySrc(0, 0, 640, 480); + GXSetTexCopyDst(640, 480, GX_TF_RGBA8, GX_FALSE); + GXSetCopyClear(BGColor, 0xFFFFFF); + GXCopyTex(arg0, arg1); + DCFlushRange(arg0, lbl_1_bss_1184); +} + +void fn_1_89BC(ModelData *model, Mtx mtx) +{ + Mtx44 sp34; + GXTexObj sp14; + MTXOrtho(sp34, 0, 480, 0, 576, 0, 1000); + GXSetProjection(sp34, GX_ORTHOGRAPHIC); + MTXIdentity(mtx); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_data_268); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_268); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXInitTexObj(&sp14, lbl_1_bss_1180, 640, 480, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp14, GX_TEXMAP0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(0, 0, -10); + GXTexCoord2f32(0, 0); + GXPosition3f32(576, 0, -10); + GXTexCoord2f32(1, 0); + GXPosition3f32(576, 480, -10); + GXTexCoord2f32(1, 1); + GXPosition3f32(0, 480, -10); + GXTexCoord2f32(0, 1); + GXEnd(); + fn_1_8904(lbl_1_bss_1180, GX_FALSE); +} + +void fn_1_8EA0(void) +{ + lbl_1_bss_1168 = 0; +} + +void fn_1_8EB4(s16 model) +{ + HsfMaterial *temp_r31; + HsfData *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + s16 *temp_r27; + s16 temp_r26; + temp_r28 = &Hu3DData[model]; + temp_r30 = temp_r28->hsfData; + temp_r26 = temp_r30->materialCnt; + temp_r27 = &lbl_1_bss_968[lbl_1_bss_1168][0]; + *temp_r27 = model; + temp_r31 = temp_r30->material; + for(temp_r29=0; temp_r29vtxMode = 1; + } + lbl_1_bss_1168++; +} + +void fn_1_8F60(float arg0) +{ + s16 *temp_r31; + s32 temp_r30; + temp_r31 = &lbl_1_bss_968[0][0]; + for(temp_r30=0; temp_r30