diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index 8585489b..8d88d9aa 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -749,7 +749,7 @@ segments: - [0xFCF5E0, c, code_79C80] #DONE - [0xFD00C0, c, code_7A760] #DONE - [0xFD08E0, c, code_7AF80] - - [0xFD7960, c, levelModel] #DONE + - [0xFD7960, c, mapModel] #DONE - [0xFD8CA0, c, code_83340] - [0xFD96D0, c, gc/section] #DONE - [0xFD9A30, c, gc/sky] #DONE @@ -1023,7 +1023,7 @@ segments: - [0x10392E0, .data, code_79C80] - [0x1039330, .data, code_7A760] - [0x1039380, .data, code_7AF80] - - [0x10395B0, .data, levelModel] + - [0x10395B0, .data, mapModel] - [0x103A1D0, .data, code_83340] - [0x103A1E0, .data, gc/section] - [0x103A710, .data, gc/sky] @@ -1267,7 +1267,7 @@ segments: - [0x1045E50, .rodata, code_79C80] - [0x1045E60, .rodata, code_7A760] - [0x1045E80, .rodata, code_7AF80] - - [0x1045F40, .rodata, levelModel] + - [0x1045F40, .rodata, mapModel] - [0x1046100, .rodata, code_83340] - [0x1046110, .rodata, gc/section] - [0x1046E10, .rodata, gc/sky] @@ -1530,7 +1530,7 @@ segments: - [0x1048560, .bss, code_79C80] - [0x1048560, .bss, code_7A760] - [0x1048560, .bss, code_7AF80] - - [0x1048560, .bss, levelModel] + - [0x1048560, .bss, mapModel] - [0x1048560, .bss, code_83340] - [0x1048560, .bss, gc/section] - [0x1048560, .bss, gc/sky] diff --git a/include/core2/playerModel.h b/include/core2/playerModel.h index 3e43f685..798d538d 100644 --- a/include/core2/playerModel.h +++ b/include/core2/playerModel.h @@ -10,6 +10,7 @@ enum player_model_direction_e { void playerModel_80292048(s32, f32, f32, f32); void playerModel_setDirection(enum player_model_direction_e arg0); void playerModel_setScale(f32); +void playerModel_setYDisplacement(f32); void playerModel_8029217C(f32); void playerModel_setVisible(s32 arg0); diff --git a/include/functions.h b/include/functions.h index 9b3a602c..7d8f1f4f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -101,7 +101,6 @@ void _player_getPosition(f32 dst[3]); void player_getPosition(f32 dst[3]); void player_getRotation(f32 *dst); -void playerModel_80291A50(s32 arg0, f32* arg1); int button_pressed(s32); u32 button_held(s32); @@ -311,11 +310,11 @@ int func_80291698(s32); int func_80291700(s32, f32); void func_802917E4(s32, f32); +void playerModel_80291A50(s32 arg0, f32* arg1); void playerModel_80292078(s32, f32); void playerModel_80292158(f32); f32 playerModel_80292230(void); - void func_802927E0(f32, f32); void func_80292974(f32, f32, f32); void func_80292900(f32, f32); diff --git a/src/BGS/ch/mrvile.c b/src/BGS/ch/mrvile.c index cbefe8dc..7502db56 100644 --- a/src/BGS/ch/mrvile.c +++ b/src/BGS/ch/mrvile.c @@ -246,8 +246,7 @@ Actor *chvile_draw(ActorMarker *marker, Gfx **gfx, Mtx** mtx, Vtx **vtx){ return this; } -//chvile_get_position -f32 *func_8038C284(ActorMarker *marker){ +f32 *chVile_getPostion(ActorMarker *marker){ Actor *this; this = marker_getActor(marker); @@ -255,15 +254,15 @@ f32 *func_8038C284(ActorMarker *marker){ } bool func_8038C2A8(ActorMarker *marker) { - f32 sp24[3]; + f32 player_position[3]; Actor *this; ActorLocal_MrVile *local; this = marker_getActor(marker); local = (ActorLocal_MrVile *)&this->local; - player_getPosition(&sp24); + player_getPosition(player_position); if (this->state == 6) { - return ml_vec3f_distance(this->position, &sp24) < 150.0f; + return ml_vec3f_distance(this->position, player_position) < 150.0f; } return local->unk0 == 1; } diff --git a/src/BGS/code_3420.c b/src/BGS/code_3420.c index 5147e761..dda50381 100644 --- a/src/BGS/code_3420.c +++ b/src/BGS/code_3420.c @@ -4,7 +4,7 @@ extern f32 func_80256AB4(f32, f32, f32, f32); extern f32 func_8025715C(f32, f32); -extern f32 *func_8038C284(ActorMarker *); +extern f32 *chVile_getPostion(ActorMarker *); extern void func_802C8F7C(f32); extern void func_802FDCB8(s32); @@ -159,7 +159,7 @@ void func_80389C58(ActorMarker *marker) { this = marker_getActor(marker); local = (ActorLocal_BGS_3420 *)&this->local; BGS_func_80389850(this, 0); - func_80311480(D_80390984[local->unkC], 0xF, func_8038C284(local->vile_marker), this->marker, func_80389BF8, NULL); + func_80311480(D_80390984[local->unkC], 0xF, chVile_getPostion(local->vile_marker), this->marker, func_80389BF8, NULL); } void BGS_func_80389CD8(ActorMarker *marker, enum asset_e text_id, s32 arg2){ @@ -179,9 +179,9 @@ void func_80389D20(ActorMarker *marker) { local = (ActorLocal_BGS_3420 *)&this->local; BGS_func_80389850(this, 0); if (local->unkC == local->unkD) { - func_80311480(D_803909A4[local->unkC], 0xF, func_8038C284(local->vile_marker), this->marker, BGS_func_80389CD8, NULL); + func_80311480(D_803909A4[local->unkC], 0xF, chVile_getPostion(local->vile_marker), this->marker, BGS_func_80389CD8, NULL); } else { - func_80311480(D_803909C0[local->unkC], 0xF, func_8038C284(local->vile_marker), this->marker, BGS_func_80389CD8, NULL); + func_80311480(D_803909C0[local->unkC], 0xF, chVile_getPostion(local->vile_marker), this->marker, BGS_func_80389CD8, NULL); } func_80347A14(0); } @@ -203,7 +203,7 @@ void func_80389E40(ActorMarker *marker) { local = (ActorLocal_BGS_3420 *)&this->local; BGS_func_80389850(this, 1); - func_80311480(0xC6B, 0xF, func_8038C284(local->vile_marker), this->marker, func_80389DF8, NULL); + func_80311480(0xC6B, 0xF, chVile_getPostion(local->vile_marker), this->marker, func_80389DF8, NULL); } void func_80389EAC(ActorMarker *marker, enum asset_e text_id, s32 arg2){ @@ -243,7 +243,7 @@ void func_80389F08(ActorMarker *marker) { item_inc(ITEM_16_LIFE); } } - func_80311480(0xC98, 0xF, func_8038C284(local->vile_marker), this->marker, func_80389EAC, NULL); + func_80311480(0xC98, 0xF, chVile_getPostion(local->vile_marker), this->marker, func_80389EAC, NULL); } @@ -265,22 +265,22 @@ void func_8038A068(Actor *this, s32 next_state) { func_8038C3B0(local->vile_marker); if (local->unkC == 3) { if (local->unkD >= 4) { - func_80311480(0xC91, 0xE, func_8038C284(local->vile_marker), this->marker, func_80389B48, NULL); + func_80311480(0xC91, 0xE, chVile_getPostion(local->vile_marker), this->marker, func_80389B48, NULL); } else { - func_80311480((local->unkC == local->unkD) ? 0xC8D : 0xC90, 0xE, func_8038C284(local->vile_marker), this->marker, func_80389B48, NULL); + func_80311480((local->unkC == local->unkD) ? 0xC8D : 0xC90, 0xE, chVile_getPostion(local->vile_marker), this->marker, func_80389B48, NULL); } } else { - func_80311480((local->unkC == local->unkD) ? 0xC63 : 0xC6C, 0xE, func_8038C284(local->vile_marker), this->marker, func_80389B48, NULL); + func_80311480((local->unkC == local->unkD) ? 0xC63 : 0xC6C, 0xE, chVile_getPostion(local->vile_marker), this->marker, func_80389B48, NULL); } } if (next_state == 3) { - func_80311480(D_803909DC[local->unkC], 4, func_8038C284(local->vile_marker), this->marker, func_80389B98, NULL); + func_80311480(D_803909DC[local->unkC], 4, chVile_getPostion(local->vile_marker), this->marker, func_80389B98, NULL); } if (next_state == 4) { if (local->unkC == local->unkD) { - func_80311480(BGS_D_803909F8[local->unkC], 0xE | ((BGS_D_803909F8[local->unkC] == 0xC8E) ? 1 : 0) | 0xE, func_8038C284(local->vile_marker), this->marker, func_80389BC8, NULL); + func_80311480(BGS_D_803909F8[local->unkC], 0xE | ((BGS_D_803909F8[local->unkC] == 0xC8E) ? 1 : 0) | 0xE, chVile_getPostion(local->vile_marker), this->marker, func_80389BC8, NULL); } else { - func_80311480(D_80390A18[local->unkC], 0xF , func_8038C284(local->vile_marker), this->marker, func_80389BC8, NULL); + func_80311480(D_80390A18[local->unkC], 0xF , chVile_getPostion(local->vile_marker), this->marker, func_80389BC8, NULL); } func_80347A14(0); } diff --git a/src/GV/code_9DB0.c b/src/GV/code_9DB0.c index b23503b7..d9c0145d 100644 --- a/src/GV/code_9DB0.c +++ b/src/GV/code_9DB0.c @@ -159,7 +159,7 @@ void func_803904A8(void){ if(D_80391AE0.tile1_0 == NULL || D_80391AE0.tile2_4 == NULL){ if( player_getActiveHitbox(0) == HITBOX_1_BEAK_BUSTER && func_8028F20C()){ player_getPosition(sp50); - sp4C = func_8033F3E8(levelModel_getModel(0), sp50, 0x190, 0x1a0); + sp4C = func_8033F3E8(mapModel_getModel(0), sp50, 0x190, 0x1a0); if(sp4C){ sp48 = func_8034C528(sp4C); if(D_80391AE0.state_9 == 1){ @@ -197,7 +197,7 @@ void func_803904A8(void){ func_8034E120(D_80391AE0.tile1_0->unk4, 180.0f, 0.0f, 0.5f, 2); func_8034E120(D_80391AE0.tile2_4->unk4, 180.0f, 0.0f, 0.5f, 2); player_getPosition(sp38); - sp48 = func_8033F3E8(levelModel_getModel(0), sp38, 0x190, 0x1a0); + sp48 = func_8033F3E8(mapModel_getModel(0), sp38, 0x190, 0x1a0); if(sp48 == D_80391AE0.tile1_0->unk0 || sp48 == D_80391AE0.tile2_4->unk0){ func_8028F66C(BS_INTR_14); } diff --git a/src/MM/ch/hut.c b/src/MM/ch/hut.c index 818a9ba2..af386fc8 100644 --- a/src/MM/ch/hut.c +++ b/src/MM/ch/hut.c @@ -47,7 +47,7 @@ Actor *chhut_draw(ActorMarker *this, Gfx **arg1, Mtx **arg2, Vtx **arg3){ temp_a1 = actorPtr->state != 2; temp_a2 = actorPtr->state == 0 || actorPtr->state == 2; this->propPtr->unk8_3 = temp_a2; - func_8033A45C(1, temp_a1, temp_a2); + func_8033A45C(1, temp_a1); return func_80325888(this, arg1, arg2, arg3); } diff --git a/src/MMM/code_3D50.c b/src/MMM/code_3D50.c index bc3b1c83..6643d7c1 100644 --- a/src/MMM/code_3D50.c +++ b/src/MMM/code_3D50.c @@ -220,7 +220,7 @@ void func_8038A9B4(void){ if(map_get() == MAP_24_MMM_TUMBLARS_SHED){ MMM_D_8038C510.unkC = NULL; - MMM_D_8038C510.unk0 = levelModel_getModel(0); + MMM_D_8038C510.unk0 = mapModel_getModel(0); MMM_D_8038C510.unk4 = NULL; func_8038A2B8(); diff --git a/src/TTC/code_3E30.c b/src/TTC/code_3E30.c index 92883286..83c9991f 100644 --- a/src/TTC/code_3E30.c +++ b/src/TTC/code_3E30.c @@ -6,7 +6,7 @@ /* extern */ extern void func_802D6310(f32, enum map_e, s32, s32, enum bkprog_e); -extern BKModel *levelModel_getModel(s32); +extern BKModel *mapModel_getModel(s32); extern u8 D_8037DCC0[7]; @@ -417,8 +417,8 @@ void func_8038B094(void){ func_8034E71C(sp28, -500, 0.0f); }//L8038B1EC - D_8038D720.unk0 = levelModel_getModel(0); - D_8038D720.unk4 = levelModel_getModel(1); + D_8038D720.unk0 = mapModel_getModel(0); + D_8038D720.unk4 = mapModel_getModel(1); D_8038D720.unk8 = 0; D_8038D720.unk10 = 0; D_8038D720.unkC = 0.0f; diff --git a/src/core2/bs/bSwim.c b/src/core2/bs/bSwim.c index c116a51a..d40b176c 100644 --- a/src/core2/bs/bSwim.c +++ b/src/core2/bs/bSwim.c @@ -2,7 +2,8 @@ #include "functions.h" #include "variables.h" -extern void playerModel_setYDisplacement(f32); +#include "core2/playerModel.h" + extern f32 func_8029494C(void); extern f32 func_8029B2D0(void); extern bool func_8029E284(s32, f32); diff --git a/src/core2/bs/jump.c b/src/core2/bs/jump.c index 56735628..0b2d2032 100644 --- a/src/core2/bs/jump.c +++ b/src/core2/bs/jump.c @@ -2,6 +2,8 @@ #include "functions.h" #include "variables.h" +#include "core2/playerModel.h" + f32 func_80294438(void); void func_8029797C(f32); void func_802979AC(f32, f32); @@ -9,7 +11,6 @@ f32 func_80297A64(void); void func_80299B58(f32, f32); f32 func_8029B2E8(void); f32 func_8029B33C(void); -void playerModel_setYDisplacement(f32); void func_8028A084(s32, f32); /* .data */ diff --git a/src/core2/bs/pumpkin.c b/src/core2/bs/pumpkin.c index c44adbdf..0851b426 100644 --- a/src/core2/bs/pumpkin.c +++ b/src/core2/bs/pumpkin.c @@ -2,7 +2,8 @@ #include "functions.h" #include "variables.h" -extern void playerModel_setScale(f32); +#include "core2/playerModel.h" + extern void func_8028A084(s32, f32); extern void func_8029AD68(f32, s32); diff --git a/src/core2/bs/swim.c b/src/core2/bs/swim.c index 009d04e8..2b1814e5 100644 --- a/src/core2/bs/swim.c +++ b/src/core2/bs/swim.c @@ -29,18 +29,18 @@ u32 D_8037D550; /* .code */ void func_802B5480(void) { - f32 sp2C[3]; - ParticleEmitter *sp28; + f32 bubble_spawn_position[3]; + ParticleEmitter *bubble_emitter; if (func_80294574()) { if (randf() > 0.5) { - playerModel_8029223C(sp2C); + playerModel_8029223C(bubble_spawn_position); } else { - playerModel_80292260(sp2C); + playerModel_80292260(bubble_spawn_position); } - sp28 = func_8029B950(&sp2C, 0.0f); - particleEmitter_setParticleVelocityRange(sp28, -60.0f, -100.0f, -60.0f, 60.0f, 0.0f, 60.0f); - particleEmitter_emitN(sp28, 1); + bubble_emitter = func_8029B950(bubble_spawn_position, 0.0f); + particleEmitter_setParticleVelocityRange(bubble_emitter, -60.0f, -100.0f, -60.0f, 60.0f, 0.0f, 60.0f); + particleEmitter_emitN(bubble_emitter, 1); } } diff --git a/src/core2/code_5C870.c b/src/core2/code_5C870.c index 9c0fbc20..8109c91e 100644 --- a/src/core2/code_5C870.c +++ b/src/core2/code_5C870.c @@ -592,7 +592,7 @@ s32 func_802E48D8(void){ modelRender_defrag(); func_8028FB68(); func_802F0E58(); - levelModel_defrag(); + mapModel_defrag(); func_803086B4(); func_8032AF94(); func_802C4320(); diff --git a/src/core2/code_94780.c b/src/core2/code_94780.c index cc59180a..b7550e94 100644 --- a/src/core2/code_94780.c +++ b/src/core2/code_94780.c @@ -24,7 +24,7 @@ void func_8031B718(void){ } void func_8031B760(void){ - levelModel_setEnvColor(D_80383170.rgb[0], D_80383170.rgb[1], D_80383170.rgb[2]); + mapModel_setEnvColor(D_80383170.rgb[0], D_80383170.rgb[1], D_80383170.rgb[2]); } void func_8031B790(void) { diff --git a/src/core2/code_AD5B0.c b/src/core2/code_AD5B0.c index 35448214..5b725711 100644 --- a/src/core2/code_AD5B0.c +++ b/src/core2/code_AD5B0.c @@ -42,7 +42,7 @@ void func_80334540(Gfx** gdl, Mtx **mptr, Vtx **vptr) { func_8024CE60(sp44, sp40); func_8024C904(gdl, mptr); if (func_80309F78() != 0) { - levelModel_opa_draw(gdl, mptr, vptr); + mapModel_opa_draw(gdl, mptr, vptr); if (func_802E49F0() == 0) { func_80322E64(gdl, mptr, vptr); } @@ -65,7 +65,7 @@ void func_80334540(Gfx** gdl, Mtx **mptr, Vtx **vptr) { func_802F0A34(gdl, mptr, vptr); } if (func_802E49F0() == 0) { - levelModel_xlu_draw(gdl, mptr, vptr); + mapModel_xlu_draw(gdl, mptr, vptr); } if (func_802E49F0() == 0) { func_8032D3D8(gdl, mptr, vptr); @@ -78,7 +78,7 @@ void func_80334540(Gfx** gdl, Mtx **mptr, Vtx **vptr) { } func_802D520C(gdl, mptr, vptr); } else { - levelModel_opa_draw(gdl, mptr, vptr); + mapModel_opa_draw(gdl, mptr, vptr); func_80322E64(gdl, mptr, vptr); func_8034F6F0(gdl, mptr, vptr); func_8028E6A4(gdl, mptr, vptr); @@ -154,7 +154,7 @@ void func_80334910(void) { func_80323100(); cubeList_free(); func_8031B710(); - levelModel_free(); + mapModel_free(); func_8030A6B0(); func_80333918(); sky_free(); diff --git a/src/core2/code_C4B0.c b/src/core2/code_C4B0.c index 962cf4d7..09e9f5e9 100644 --- a/src/core2/code_C4B0.c +++ b/src/core2/code_C4B0.c @@ -473,8 +473,8 @@ int func_80294560(void){ return D_8037C280 == 3; } -void func_80294574(void){ - func_8031C594(D_8037C200); +bool func_80294574(void){ + return func_8031C594(D_8037C200); } bool func_80294598(void) { diff --git a/src/core2/code_D6180.c b/src/core2/code_D6180.c index 7b92b430..f3fb3726 100644 --- a/src/core2/code_D6180.c +++ b/src/core2/code_D6180.c @@ -145,7 +145,7 @@ void func_8035D4F0(ActorMarker *marker, s32 arg1){ if(map_get() == MAP_13_GV_MEMORY_GAME){ actor = marker_getActor(marker); if(actor->state != 9){ - if(func_8033F3E8(levelModel_getModel(0), actor->position, 0x190, 0x1A0) == arg1){ + if(func_8033F3E8(mapModel_getModel(0), actor->position, 0x190, 0x1A0) == arg1){ func_802C9334(0x1C, actor); func_8035D2C0(marker, 0); } diff --git a/src/core2/levelModel.c b/src/core2/mapModel.c similarity index 74% rename from src/core2/levelModel.c rename to src/core2/mapModel.c index b1fb7846..9c9d63c4 100644 --- a/src/core2/levelModel.c +++ b/src/core2/mapModel.c @@ -17,16 +17,16 @@ BKCollisionTri *func_80309B48(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 arg3) ; typedef struct { s16 map_id; //enum map_e - s16 model1_id; //enum asset_e level_model_id - s16 model2_id; //enum asset_e level2_model_id + s16 opa_model_id; //enum asset_e level_model_id + s16 xlu_model_id; //enum asset_e level2_model_id s16 unk6[3]; s16 unkC[3]; // u8 pad12[0x2]; - f32 unk14; -}Struct_core2_82000_0; + f32 scale; +}MapModelDescription; /* .data */ -Struct_core2_82000_0 D_8036ABE0[] = { +MapModelDescription D_8036ABE0[] = { {MAP_1_SM_SPIRAL_MOUNTAIN, 0x14CF, 0x14D0, {1, 0, 1}, {-3, -4, -2}, 1.0f}, {MAP_2_MM_MUMBOS_MOUNTAIN, 0x14AA, 0x14AB, {1, 0, 2}, {-2, 0, -2}, 1.0f}, {MAP_5_TTC_BLUBBERS_SHIP, 0x146F, 0x1470, {0, 0, 0}, {0, 0, 0}, 1.0f}, @@ -170,18 +170,18 @@ struct { BKModelBin *model_bin_xlu; s32 unk20; struct5Bs *unk24; - Struct_core2_82000_0 *unk28; + MapModelDescription *description; u8 env_red; u8 env_green; u8 env_blue; - f32 unk30; -}levelModel; + f32 scale; +}mapModel; -enum asset_e levelModel_getOpaModelId(void); +enum asset_e mapModel_getOpaModelId(void); /* .code */ -Struct_core2_82000_0 *func_80308F90(enum map_e map_id){ - Struct_core2_82000_0 *i_ptr; +static MapModelDescription *_mapModel_mapIdToDescription(enum map_e map_id){ + MapModelDescription *i_ptr; for(i_ptr = D_8036ABE0; i_ptr->map_id != 0; i_ptr++){ if(map_id == i_ptr->map_id){ @@ -235,15 +235,14 @@ f32 func_80308FDC(f32 arg0[3], u32 arg1) { return 0.0f; } -void levelModel_opa_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { +void mapModel_opa_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { s32 temp_a0; if (func_80320708() && levelSpecificFlags_validateCRC2() && func_80320248()) { - if (levelModel_getOpaModelId() == ASSET_14CF_MODEL_SM_OPA) { + if (mapModel_getOpaModelId() == ASSET_14CF_MODEL_SM_OPA) { func_8033A45C(1, 0); func_8033A45C(2, 1); } - // temp_v0 = map_get(); switch (map_get()) { /* irregular */ case MAP_88_CS_SPIRAL_MOUNTAIN_6: if (mapSpecificFlags_get(0) != 0) { @@ -337,34 +336,34 @@ void levelModel_opa_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { func_8033A45C(6, (func_8038EAE0(0xA) || func_8031FF1C(0xE2) || func_803203FC(0xC1))); break; } - func_8033A450(levelModel.unk24); + func_8033A450(mapModel.unk24); modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL); - temp_a0 = levelModel.unk0; + temp_a0 = mapModel.unk0; if (temp_a0 != 0) { func_8033A494(temp_a0); } - modelRender_setEnvColor(levelModel.env_red, levelModel.env_green, levelModel.env_blue, 0xFF); - modelRender_draw(gfx, mtx, NULL, NULL, levelModel.unk28->unk14, NULL, levelModel.model_bin_opa); + modelRender_setEnvColor(mapModel.env_red, mapModel.env_green, mapModel.env_blue, 0xFF); + modelRender_draw(gfx, mtx, NULL, NULL, mapModel.description->scale, NULL, mapModel.model_bin_opa); if (!func_80309F78()) { func_802F7BC0(gfx, mtx, vtx); } } } -void levelModel_xlu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { +void mapModel_xlu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { s32 temp_a0; - if (levelModel.model_bin_xlu != NULL) { + if (mapModel.model_bin_xlu != NULL) { if (map_get() == MAP_1D_MMM_CELLAR) { func_8033A45C(1, (func_80326EEC(0x191) != NULL) ? 0 : 1); } modelRender_setDepthMode(MODEL_RENDER_DEPTH_COMPARE); - temp_a0 = levelModel.unk4; + temp_a0 = mapModel.unk4; if (temp_a0 != 0) { func_8033A494(temp_a0); } - modelRender_setEnvColor(levelModel.env_red, levelModel.env_green, levelModel.env_blue, 0xFF); - modelRender_draw(gfx, mtx, NULL, NULL, levelModel.unk28->unk14, NULL, levelModel.model_bin_xlu); + modelRender_setEnvColor(mapModel.env_red, mapModel.env_green, mapModel.env_blue, 0xFF); + modelRender_draw(gfx, mtx, NULL, NULL, mapModel.description->scale, NULL, mapModel.model_bin_xlu); func_802F7BC0(gfx, mtx, vtx); } } @@ -372,52 +371,52 @@ void levelModel_xlu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { void func_80309704(s32 arg0, s32 arg1, s32 arg2){} s32 func_80309714(void){ - return levelModel.collision_opa->unk12; + return mapModel.collision_opa->unk12; } f32 func_80309724(f32 arg0[3]){ return func_80308FDC(arg0, 0x1e0000); } -BKModel *levelModel_getModel(s32 arg0){ - return (arg0) ? levelModel.model_xlu : levelModel.model_opa; +BKModel *mapModel_getModel(s32 arg0){ + return (arg0) ? mapModel.model_xlu : mapModel.model_opa; } -BKModelBin *levelModel_getModelBin(s32 arg0){ +BKModelBin *mapModel_getModelBin(s32 arg0){ if(arg0 == 0) - return levelModel.model_bin_opa; + return mapModel.model_bin_opa; if(arg0 == 1) - return levelModel.model_bin_xlu; + return mapModel.model_bin_xlu; return 0; } s32 func_80309794(void){ - return levelModel.unk20; + return mapModel.unk20; } struct5Bs *func_803097A0(void){ - return levelModel.unk24; + return mapModel.unk24; } void func_803097AC(s32 arg0[3], s32 arg1[3]) { - func_802EC458(func_8033A148(levelModel.model_bin_opa), arg0, arg1); - func_8033ECD8(arg0, arg1, 0x3E8); - arg0[0] = arg0[0] + levelModel.unk28->unk6[0]; - arg0[1] = arg0[1] + levelModel.unk28->unk6[1]; - arg0[2] = arg0[2] + levelModel.unk28->unk6[2]; - arg1[0] = arg1[0] + levelModel.unk28->unkC[0]; - arg1[1] = arg1[1] + levelModel.unk28->unkC[1]; - arg1[2] = arg1[2] + levelModel.unk28->unkC[2]; + func_802EC458(func_8033A148(mapModel.model_bin_opa), arg0, arg1); + func_8033ECD8(arg0, arg1, 1000); + arg0[0] = arg0[0] + mapModel.description->unk6[0]; + arg0[1] = arg0[1] + mapModel.description->unk6[1]; + arg0[2] = arg0[2] + mapModel.description->unk6[2]; + arg1[0] = arg1[0] + mapModel.description->unkC[0]; + arg1[1] = arg1[1] + mapModel.description->unkC[1]; + arg1[2] = arg1[2] + mapModel.description->unkC[2]; } void func_80309888(s32 arg0[3], s32 arg1[3]) { s32 i; - func_802EC458(func_8033A148(levelModel.model_bin_opa), arg0, arg1); + func_802EC458(func_8033A148(mapModel.model_bin_opa), arg0, arg1); for(i = 0; i < 3; i++){ - arg0[i] *= levelModel.unk30; - arg1[i] *= levelModel.unk30; + arg0[i] *= mapModel.scale; + arg1[i] *= mapModel.scale; } } @@ -426,14 +425,14 @@ void func_80309998(s32 arg0[3], s32 arg1[3]) { s32 sp3C[3]; s32 sp30[3]; - func_802EC458(func_8033A148(levelModel.model_bin_opa), arg0, arg1); + func_802EC458(func_8033A148(mapModel.model_bin_opa), arg0, arg1); for(i = 0; i < 3; i++){ - arg0[i] *= levelModel.unk30; - arg1[i] *= levelModel.unk30; + arg0[i] *= mapModel.scale; + arg1[i] *= mapModel.scale; } - if (levelModel.model_bin_xlu != NULL) { - func_802EC458(func_8033A148(levelModel.model_bin_xlu), sp3C, sp30); + if (mapModel.model_bin_xlu != NULL) { + func_802EC458(func_8033A148(mapModel.model_bin_xlu), sp3C, sp30); for(j = 0; j < 3; j++){ if(sp3C[j] < arg0[j]){ arg0[j] = sp3C[j]; @@ -454,27 +453,27 @@ BKCollisionTri *func_80309B48(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 arg3) { BKCollisionTri *sp2C; BKCollisionTri *temp_v0; - levelModel.unk20 = 0; - if (levelModel.collision_xlu != NULL) { + mapModel.unk20 = 0; + if (mapModel.collision_xlu != NULL) { if ((arg3 & 0x80001F00) == 0x80001F00) { sp2C = NULL; } else { - sp2C = func_802E76B0(levelModel.collision_opa, func_8033A148(levelModel.model_bin_opa), arg0, arg1, arg2, arg3); + sp2C = func_802E76B0(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3); } - temp_v0 = func_802E76B0(levelModel.collision_xlu, func_8033A148(levelModel.model_bin_xlu), arg0, arg1, arg2, arg3); + temp_v0 = func_802E76B0(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3); if (temp_v0 != NULL) { - levelModel.unk20 = (s32) levelModel.model_bin_xlu; + mapModel.unk20 = (s32) mapModel.model_bin_xlu; return temp_v0; } if (sp2C != NULL) { - levelModel.unk20 = (s32) levelModel.model_bin_opa; + mapModel.unk20 = (s32) mapModel.model_bin_opa; } return sp2C; } else{ - sp2C = func_802E76B0(levelModel.collision_opa, func_8033A148(levelModel.model_bin_opa), arg0, arg1, arg2, arg3); + sp2C = func_802E76B0(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3); if (sp2C != NULL) { - levelModel.unk20 = (s32) levelModel.model_bin_opa; + mapModel.unk20 = (s32) mapModel.model_bin_opa; } } return sp2C; @@ -484,17 +483,17 @@ BKCollisionTri *func_80309C74(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 arg3, B BKCollisionTri *sp2C; BKCollisionTri *phi_v0; - sp2C = func_802E76B0(levelModel.collision_opa, func_8033A148(levelModel.model_bin_opa), arg0, arg1, arg2, arg3); + sp2C = func_802E76B0(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3); if (sp2C != NULL) { - *arg4 = levelModel.model_bin_opa; + *arg4 = mapModel.model_bin_opa; } - if (levelModel.collision_xlu == NULL) { + if (mapModel.collision_xlu == NULL) { return sp2C; } - phi_v0 = func_802E76B0(levelModel.collision_xlu, func_8033A148(levelModel.model_bin_xlu), arg0, arg1, arg2, arg3); + phi_v0 = func_802E76B0(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3); if (phi_v0 != 0) { - *arg4 = levelModel.model_bin_xlu; + *arg4 = mapModel.model_bin_xlu; } return (phi_v0 != NULL) ? phi_v0 : sp2C; } @@ -502,7 +501,7 @@ BKCollisionTri *func_80309C74(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 arg3, B UNK_TYPE(s32) func_80309D58(UNK_TYPE(s32) arg0, UNK_TYPE(s32) arg1) { BKMeshList *temp_v0; - temp_v0 = func_8033A12C(levelModel.model_bin_opa); + temp_v0 = func_8033A12C(mapModel.model_bin_opa); if (temp_v0 != NULL) { return func_802EC394(temp_v0, 0, 0, 1.0f, 0, arg0, arg1); } @@ -513,17 +512,17 @@ UNK_TYPE(s32) func_80309DBC(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 s32 sp34; s32 temp_v0_2; - levelModel.unk20 = 0; - sp34 = func_802E8E88(levelModel.collision_opa, func_8033A148(levelModel.model_bin_opa), arg0, arg1, arg2, arg3, arg4, arg5); + mapModel.unk20 = 0; + sp34 = func_802E8E88(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3, arg4, arg5); if (sp34 != 0) { - levelModel.unk20 = (s32) levelModel.model_bin_opa; + mapModel.unk20 = (s32) mapModel.model_bin_opa; } - if (levelModel.collision_xlu == 0) { + if (mapModel.collision_xlu == 0) { return sp34; } - temp_v0_2 = func_802E8E88(levelModel.collision_xlu, func_8033A148(levelModel.model_bin_xlu), arg0, arg1, arg2, arg3, arg4, arg5); + temp_v0_2 = func_802E8E88(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3, arg4, arg5); if (temp_v0_2 != 0) { - levelModel.unk20 = (s32) levelModel.model_bin_xlu; + mapModel.unk20 = (s32) mapModel.model_bin_xlu; return temp_v0_2; } return sp34; @@ -533,20 +532,20 @@ UNK_TYPE(s32) func_80309EB0(f32 arg0[3], f32 arg1, f32 arg2[3], s32 arg3) { s32 sp24; s32 temp_v0_2; - sp24 = func_802E92AC(levelModel.collision_opa, func_8033A148(levelModel.model_bin_opa), arg0, arg1, arg2, arg3); - if (levelModel.collision_xlu == 0) { + sp24 = func_802E92AC(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3); + if (mapModel.collision_xlu == 0) { return sp24; } - temp_v0_2 = func_802E92AC(levelModel.collision_xlu, func_8033A148(levelModel.model_bin_xlu), arg0, arg1, arg2, arg3); + temp_v0_2 = func_802E92AC(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3); return (temp_v0_2 != 0) ? temp_v0_2 : sp24; } bool func_80309F78(void) { - return (levelModel.model_bin_opa != NULL) && (levelModel.model_bin_xlu != NULL); + return (mapModel.model_bin_opa != NULL) && (mapModel.model_bin_xlu != NULL); } bool func_80309FA4(enum map_e map_id){ - Struct_core2_82000_0 *i_ptr; + MapModelDescription *i_ptr; for(i_ptr = D_8036ABE0; i_ptr->map_id != 0; i_ptr++){ if(map_id == i_ptr->map_id){ @@ -556,97 +555,97 @@ bool func_80309FA4(enum map_e map_id){ return FALSE; } -void levelModel_free(void){ - assetcache_release(levelModel.model_bin_opa); +void mapModel_free(void){ + assetcache_release(mapModel.model_bin_opa); - if(levelModel.model_bin_xlu) - assetcache_release(levelModel.model_bin_xlu); + if(mapModel.model_bin_xlu) + assetcache_release(mapModel.model_bin_xlu); - if(levelModel.model_opa) - model_free(levelModel.model_opa); + if(mapModel.model_opa) + model_free(mapModel.model_opa); - if(levelModel.model_xlu) - model_free(levelModel.model_xlu); + if(mapModel.model_xlu) + model_free(mapModel.model_xlu); - func_8034A2A8(levelModel.unk24); + func_8034A2A8(mapModel.unk24); } -enum asset_e levelModel_getOpaModelId(void){ - return levelModel.unk28->model1_id; +enum asset_e mapModel_getOpaModelId(void){ + return mapModel.description->opa_model_id; } void func_8030A078(void) { BKMeshList *sp24; - Struct_core2_82000_0 *temp_v0; + MapModelDescription *description; - levelModel.env_blue = 0xFF; - levelModel.env_green = 0xFF; - levelModel.env_red = 0xFF; + mapModel.env_blue = 0xFF; + mapModel.env_green = 0xFF; + mapModel.env_red = 0xFF; - temp_v0 = func_80308F90(map_get());; - levelModel.unk28 = temp_v0; - levelModel.unk30 = (f32) temp_v0->unk14; - levelModel.model_bin_opa = (BKModelBin *)assetcache_get(levelModel.unk28->model1_id); - levelModel.collision_opa = func_8033A084(levelModel.model_bin_opa); - levelModel.unk20 = 0; - if (levelModel.unk28->model2_id != 0) { - levelModel.model_bin_xlu = (BKModelBin *)assetcache_get(levelModel.unk28->model2_id); - levelModel.collision_xlu = func_8033A084(levelModel.model_bin_xlu); + description = _mapModel_mapIdToDescription(map_get());; + mapModel.description = description; + mapModel.scale = (f32) description->scale; + mapModel.model_bin_opa = (BKModelBin *)assetcache_get(mapModel.description->opa_model_id); + mapModel.collision_opa = func_8033A084(mapModel.model_bin_opa); + mapModel.unk20 = 0; + if (mapModel.description->xlu_model_id != 0) { + mapModel.model_bin_xlu = (BKModelBin *)assetcache_get(mapModel.description->xlu_model_id); + mapModel.collision_xlu = func_8033A084(mapModel.model_bin_xlu); } else { - levelModel.model_bin_xlu = NULL; - levelModel.collision_xlu = NULL; + mapModel.model_bin_xlu = NULL; + mapModel.collision_xlu = NULL; } - sp24 = func_8033A0B0(levelModel.model_bin_opa); + sp24 = func_8033A0B0(mapModel.model_bin_opa); if (sp24 != NULL) { - levelModel.model_opa = func_8033F5F8(sp24, func_8033A148(levelModel.model_bin_opa)); + mapModel.model_opa = func_8033F5F8(sp24, func_8033A148(mapModel.model_bin_opa)); } else { - levelModel.model_opa = NULL; + mapModel.model_opa = NULL; } - if (levelModel.model_opa != NULL) { - func_8034C6DC(levelModel.model_opa); + if (mapModel.model_opa != NULL) { + func_8034C6DC(mapModel.model_opa); } - if (levelModel.model_bin_xlu != NULL) { - sp24 = func_8033A0B0(levelModel.model_bin_xlu); + if (mapModel.model_bin_xlu != NULL) { + sp24 = func_8033A0B0(mapModel.model_bin_xlu); } else{ sp24 = NULL; } if (sp24 != NULL) { - levelModel.model_xlu = func_8033F5F8(sp24, func_8033A148(levelModel.model_bin_xlu)); + mapModel.model_xlu = func_8033F5F8(sp24, func_8033A148(mapModel.model_bin_xlu)); } else { - levelModel.model_xlu = 0; + mapModel.model_xlu = 0; } - if (levelModel.model_xlu != NULL) { - func_8034C6DC(levelModel.model_xlu); + if (mapModel.model_xlu != NULL) { + func_8034C6DC(mapModel.model_xlu); } - levelModel.unk24 = func_8034A2C8(); + mapModel.unk24 = func_8034A2C8(); func_80320B44(func_80309B48, func_80309DBC, func_80309EB0, func_80309794); - if (( levelModel.model_bin_opa != NULL) && (func_8033A110( levelModel.model_bin_opa) != NULL)) { - levelModel.unk0 = func_80349C3C(); - func_80349D00(levelModel.unk0, func_8033A110(levelModel.model_bin_opa)); + if (( mapModel.model_bin_opa != NULL) && (func_8033A110( mapModel.model_bin_opa) != NULL)) { + mapModel.unk0 = func_80349C3C(); + func_80349D00(mapModel.unk0, func_8033A110(mapModel.model_bin_opa)); } else { - levelModel.unk0 = NULL; + mapModel.unk0 = NULL; } - if ((levelModel.model_bin_xlu != NULL) && (func_8033A110(levelModel.model_bin_xlu) != 0)) { - levelModel.unk4 = func_80349C3C(); - func_80349D00(levelModel.unk4, func_8033A110(levelModel.model_bin_xlu)); + if ((mapModel.model_bin_xlu != NULL) && (func_8033A110(mapModel.model_bin_xlu) != 0)) { + mapModel.unk4 = func_80349C3C(); + func_80349D00(mapModel.unk4, func_8033A110(mapModel.model_bin_xlu)); } else{ - levelModel.unk4 = NULL; + mapModel.unk4 = NULL; } } -void levelModel_setEnvColor(s32 r, s32 g, s32 b){ - levelModel.env_red = r; - levelModel.env_green = g; - levelModel.env_blue = b; +void mapModel_setEnvColor(s32 r, s32 g, s32 b){ + mapModel.env_red = r; + mapModel.env_green = g; + mapModel.env_blue = b; } -void levelModel_defrag(void){ - if(levelModel.unk24 != NULL){ - levelModel.unk24 = func_8034A348(levelModel.unk24); +void mapModel_defrag(void){ + if(mapModel.unk24 != NULL){ + mapModel.unk24 = func_8034A348(mapModel.unk24); } } diff --git a/src/core2/modelRender.c b/src/core2/modelRender.c index abfb6f79..abca6a3e 100644 --- a/src/core2/modelRender.c +++ b/src/core2/modelRender.c @@ -890,7 +890,7 @@ void func_80338BFC(Gfx **gfx, Mtx **mtx, void *arg2){ //CmdC_SELECTOR #ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_B1400/func_80338CD0.s") +#pragma GLOBAL_ASM("asm/nonmatchings/core2/modelRender/func_80338CD0.s") #else void func_80338CD0(Gfx **gfx, Mtx **mtx, void *arg2){ GeoCmdC *cmd = (GeoCmdC *)arg2; diff --git a/src/core2/playerModel.c b/src/core2/playerModel.c index 97799905..a21f06b2 100644 --- a/src/core2/playerModel.c +++ b/src/core2/playerModel.c @@ -52,10 +52,10 @@ static void _playerModel_updateModelYaw(void){ } } -void playerModel_80291A50(s32 arg0, f32 arg1[3]){ - func_8034A174(D_80363780, arg0, arg1); - if(func_802582EC(arg1)){ - _player_getPosition(arg1); +void playerModel_80291A50(s32 arg0, f32 dst[3]){ + func_8034A174(D_80363780, arg0, dst); + if(func_802582EC(dst)){ + _player_getPosition(dst); } } diff --git a/src/lair/code_5ED0.c b/src/lair/code_5ED0.c index ebe488e0..03512fb8 100644 --- a/src/lair/code_5ED0.c +++ b/src/lair/code_5ED0.c @@ -78,7 +78,7 @@ extern void func_80324CFC(f32, s16, s16); extern void gczoombox_open(gczoombox_t *); extern void gczoombox_maximize(gczoombox_t *); -extern void *levelModel_getModel(s32); +extern void *mapModel_getModel(s32); extern void func_8029A95C(s32); // set transformation //typedef migrated to "inlcude/core2/code_C9E70.h" @@ -628,7 +628,7 @@ void lair_func_8038CF18(void) if (map_get() != MAP_8E_GL_FURNACE_FUN) return; - D_8037DCB8->unk0 = levelModel_getModel(0); + D_8037DCB8->unk0 = mapModel_getModel(0); D_8037DCB8->unk11 = 0; if (func_803203FC(2) && !func_803203FC(4))