diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index 2b703e18..8585489b 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -512,7 +512,7 @@ segments: - [0xF5FF60, c, code_A600] #DONE - [0xF60040, c, code_A6E0] #DONE - [0xF602C0, c, code_A960] #DONE - - [0xF603C0, c, code_AA60] #DONE + - [0xF603C0, c, playerModel] #DONE - [0xF60FB0, c, code_B650] #DONE - [0xF611B0, c, code_B850] #DONE - [0xF614B0, c, code_BB50] #DONE @@ -749,7 +749,7 @@ segments: - [0xFCF5E0, c, code_79C80] #DONE - [0xFD00C0, c, code_7A760] #DONE - [0xFD08E0, c, code_7AF80] - - [0xFD7960, c, code_82000] #DONE + - [0xFD7960, c, levelModel] #DONE - [0xFD8CA0, c, code_83340] - [0xFD96D0, c, gc/section] #DONE - [0xFD9A30, c, gc/sky] #DONE @@ -887,7 +887,7 @@ segments: - [0x1032000, .data, code_47C0] - [0x1032060, .data, code_7060] - [0x10320A0, .data, code_90E0] - - [0x1032150, .data, code_AA60] + - [0x1032150, .data, playerModel] - [0x1032150, .data, code_B850] - [0x1032170, .data, code_BB50] - [0x10321C0, .data, code_C0E0] @@ -1023,7 +1023,7 @@ segments: - [0x10392E0, .data, code_79C80] - [0x1039330, .data, code_7A760] - [0x1039380, .data, code_7AF80] - - [0x10395B0, .data, code_82000] + - [0x10395B0, .data, levelModel] - [0x103A1D0, .data, code_83340] - [0x103A1E0, .data, gc/section] - [0x103A710, .data, gc/sky] @@ -1112,7 +1112,7 @@ segments: - [0x1042F90, .rodata, code_9450] - [0x1042FC0, .rodata, code_9900] - [0x1042FD0, .rodata, code_9BD0] - - [0x1043010, .rodata, code_AA60] + - [0x1043010, .rodata, playerModel] - [0x10430C0, .rodata, code_B650] - [0x10430D0, .rodata, code_B850] - [0x10430F0, .rodata, code_BD20] @@ -1267,7 +1267,7 @@ segments: - [0x1045E50, .rodata, code_79C80] - [0x1045E60, .rodata, code_7A760] - [0x1045E80, .rodata, code_7AF80] - - [0x1045F40, .rodata, code_82000] + - [0x1045F40, .rodata, levelModel] - [0x1046100, .rodata, code_83340] - [0x1046110, .rodata, gc/section] - [0x1046E10, .rodata, gc/sky] @@ -1366,7 +1366,7 @@ segments: - [0x1048560, .bss, code_9BD0] - [0x1048560, .bss, code_A600] - [0x1048560, .bss, code_A6E0] - - [0x1048560, .bss, code_AA60] + - [0x1048560, .bss, playerModel] - [0x1048560, .bss, code_B650] - [0x1048560, .bss, code_BB50] - [0x1048560, .bss, code_BD20] @@ -1530,7 +1530,7 @@ segments: - [0x1048560, .bss, code_79C80] - [0x1048560, .bss, code_7A760] - [0x1048560, .bss, code_7AF80] - - [0x1048560, .bss, code_82000] + - [0x1048560, .bss, levelModel] - [0x1048560, .bss, code_83340] - [0x1048560, .bss, gc/section] - [0x1048560, .bss, gc/sky] diff --git a/include/core2/modelRender.h b/include/core2/modelRender.h index 263e1f7b..ce43ed30 100644 --- a/include/core2/modelRender.h +++ b/include/core2/modelRender.h @@ -15,7 +15,7 @@ BKAnimationList *model_getAnimationList(BKModelBin *arg0); BKTextureList *model_getTextureList(BKModelBin *arg0); void modelRender_reset(void); -BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 arg3[3], f32 scale, f32*arg5, BKModelBin* model_bin); +BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 rotation[3], f32 scale, f32*arg5, BKModelBin* model_bin); void modelRender_preDraw(GenMethod_1 func, s32 arg); void modelRender_postDraw(GenMethod_1 func, s32 arg); diff --git a/include/core2/playerModel.h b/include/core2/playerModel.h new file mode 100644 index 00000000..3e43f685 --- /dev/null +++ b/include/core2/playerModel.h @@ -0,0 +1,16 @@ +#ifndef _PLAYER_MODEL_H_ +#define _PLAYER_MODEL_H_ + +enum player_model_direction_e { + PLAYER_MODEL_DIR_BANJO = 1, + PLAYER_MODEL_DIR_KAZOOIE = 2, + PLAYER_MODEL_DIR_GLOBAL = 3 +}; + +void playerModel_80292048(s32, f32, f32, f32); +void playerModel_setDirection(enum player_model_direction_e arg0); +void playerModel_setScale(f32); +void playerModel_8029217C(f32); +void playerModel_setVisible(s32 arg0); + +#endif diff --git a/include/enums.h b/include/enums.h index ebabcc7c..344785a2 100644 --- a/include/enums.h +++ b/include/enums.h @@ -3681,8 +3681,10 @@ enum asset_e ASSET_D96_TEXT_BEEHIVE = 0xd96, - ASSET_DA6_TEXT_BEEHIVE_WITH_BEES = 0xda6 + ASSET_DA6_TEXT_BEEHIVE_WITH_BEES = 0xda6, + ASSET_14CF_MODEL_SM_OPA = 0x14CF, + ASSET_14D0_MODEL_SM_XLU }; enum overlay_e{ diff --git a/include/functions.h b/include/functions.h index a47e666b..9b3a602c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -101,7 +101,7 @@ void _player_getPosition(f32 dst[3]); void player_getPosition(f32 dst[3]); void player_getRotation(f32 *dst); -void func_80291A60(s32 arg0, f32* arg1); +void playerModel_80291A50(s32 arg0, f32* arg1); int button_pressed(s32); u32 button_held(s32); @@ -311,9 +311,9 @@ int func_80291698(s32); int func_80291700(s32, f32); void func_802917E4(s32, f32); -void func_80292078(s32, f32); -void func_80292158(f32); -f32 func_80292230(void); +void playerModel_80292078(s32, f32); +void playerModel_80292158(f32); +f32 playerModel_80292230(void); void func_802927E0(f32, f32); diff --git a/src/CC/code_1F70.c b/src/CC/code_1F70.c index 510f3295..541564c2 100644 --- a/src/CC/code_1F70.c +++ b/src/CC/code_1F70.c @@ -24,7 +24,7 @@ extern void func_8033A45C(s32, s32); extern void func_8033A238(s32); extern void func_8033A450(s32); extern void func_8028FAB0(f32[3]); -extern void func_802921D4(f32[3]); +extern void playerModel_802921D4(f32[3]); /* .data */ f32 D_80389C00[3] = {5700.0f, 4300.0f, 0.0f}; @@ -209,7 +209,7 @@ void CC_func_80388760(Gfx **gfx, Mtx **mtx, Vtx **vtx){ modelRender_draw(gfx, mtx, D_80389FA0.unk28, NULL, 1.0f, NULL, D_80389FA0.unk24); if(func_80340020(D_80389FA0.unk18, D_80389FA0.unk28, 0, 1.0f, 0, D_80389FA0.unk40, spA4, spA4)){ func_8028FAB0(spA4); - func_802921D4(spA4); + playerModel_802921D4(spA4); } } diff --git a/src/FP/code_0.c b/src/FP/code_0.c index 7d41cddd..c88eb1cd 100644 --- a/src/FP/code_0.c +++ b/src/FP/code_0.c @@ -89,7 +89,7 @@ void func_80386630(Actor *this){ mlMtxIdent(); mlMtxRotYaw(sp64[1]); mlMtxRotPitch(sp64[0]); - func_802513B0(sp24); + mlMtxGet(sp24); sp70[0] = 0.0f; sp70[1] = 18.0f; diff --git a/src/GV/code_9DB0.c b/src/GV/code_9DB0.c index 1b048171..b23503b7 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(func_80309744(0), sp50, 0x190, 0x1a0); + sp4C = func_8033F3E8(levelModel_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(func_80309744(0), sp38, 0x190, 0x1a0); + sp48 = func_8033F3E8(levelModel_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/MMM/code_3D50.c b/src/MMM/code_3D50.c index 81f86e3b..bc3b1c83 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 = func_80309744(0); + MMM_D_8038C510.unk0 = levelModel_getModel(0); MMM_D_8038C510.unk4 = NULL; func_8038A2B8(); diff --git a/src/TTC/code_3E30.c b/src/TTC/code_3E30.c index 39ec2bcc..92883286 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 *func_80309744(s32); +extern BKModel *levelModel_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 = func_80309744(0); - D_8038D720.unk4 = func_80309744(1); + D_8038D720.unk0 = levelModel_getModel(0); + D_8038D720.unk4 = levelModel_getModel(1); D_8038D720.unk8 = 0; D_8038D720.unk10 = 0; D_8038D720.unkC = 0.0f; diff --git a/src/core1/code_13990.c b/src/core1/code_13990.c index 1028f33b..5f04c590 100644 --- a/src/core1/code_13990.c +++ b/src/core1/code_13990.c @@ -24,7 +24,7 @@ u8 pad_D_80282850[0x780]; Mtx * D_80282FD0; /*.code*/ -void func_802513B0(f32 *arg0) { +void mlMtxGet(f32 *arg0) { s32 var_v0, j; for(var_v0 = 0; var_v0 < 4; var_v0++){ @@ -388,14 +388,14 @@ void func_80252AF0(f32 arg0[3], f32 arg1[3], f32 rotation[3], f32 scale, f32 arg } -void func_80252C08(f32 arg0[3], f32 arg1[3], f32 scale, f32 arg3[3]){ +void func_80252C08(f32 arg0[3], f32 rotation[3], f32 scale, f32 arg3[3]){ if(arg0 != NULL) mlMtxTranslate(arg0[0], arg0[1], arg0[2]); - if(arg1 != NULL){ - mlMtxRotYaw(arg1[1]); - mlMtxRotPitch(arg1[0]); - mlMtxRotRoll(arg1[2]); + if(rotation != NULL){ + mlMtxRotYaw(rotation[1]); + mlMtxRotPitch(rotation[0]); + mlMtxRotRoll(rotation[2]); } if(scale != 1.0f){ diff --git a/src/core1/code_EAF0.c b/src/core1/code_EAF0.c index 865789be..939acf2e 100644 --- a/src/core1/code_EAF0.c +++ b/src/core1/code_EAF0.c @@ -167,7 +167,7 @@ void func_8024CCC4(void){ mlMtxIdent(); mlMtxRotYaw(-60.0f); mlMtxRotPitch(-90.0f); - func_802513B0(&D_80280FD8); + mlMtxGet(&D_80280FD8); } void func_8024CD7C(int arg0){ @@ -247,7 +247,7 @@ void func_8024CFD4(void){ mlMtxIdent(); mlMtxRotYaw(D_80280EC0[1]); mlMtxRotPitch(D_80280EC0[0]); - func_802513B0(&D_80280F98); + mlMtxGet(&D_80280F98); D_80280EA0[0] = 0.0f; D_80280EA0[1] = 0.0f; D_80280EA0[2] = -1.0f; diff --git a/src/core2/bs/bFly.c b/src/core2/bs/bFly.c index 443adf7d..96647ffb 100644 --- a/src/core2/bs/bFly.c +++ b/src/core2/bs/bFly.c @@ -3,7 +3,7 @@ #include "variables.h" extern void func_8028FDC8(f32); -extern void func_802921BC(f32); +extern void playerModel_setYDisplacement(f32); extern f32 func_8029B2D0(void); extern void func_802BFE50(f32, f32, f32); extern void func_80354030(f32[3], f32); @@ -47,7 +47,7 @@ void func_802A3404(void){ } void func_802A3430(void){ - func_802921BC(60.0f); + playerModel_setYDisplacement(60.0f); func_802991A8(3); func_80299234(500.0f, 2.0f); roll_setAngularVelocity(500.0f, 2.0f); @@ -63,7 +63,7 @@ void func_802A34C8(void){ gravity_reset(); func_80297B94(); func_8029E070(0); - func_802921BC(0.0f); + playerModel_setYDisplacement(0.0f); func_8029CB84(); func_802991A8(1); func_80291548(); @@ -462,7 +462,7 @@ void func_802A4430(void){ pitch_setIdeal(0.0f); gravity_reset(); func_80297B94(); - func_802921BC(0.0f); + playerModel_setYDisplacement(0.0f); func_80299CF4(SFX_31_BANJO_OHHWAAOOO, 1.0f, 0x7fff); func_80299D2C(SFX_61_CARTOONY_FALL, 1.0f, 0x7fff); D_8037D320 = 0.35f; diff --git a/src/core2/bs/bLongLeg.c b/src/core2/bs/bLongLeg.c index a2d31047..70fa66cf 100644 --- a/src/core2/bs/bLongLeg.c +++ b/src/core2/bs/bLongLeg.c @@ -1,6 +1,7 @@ #include #include "functions.h" #include "variables.h" +#include "core2/playerModel.h" /* .data */ const f32 D_80364A40 = 80.0f; @@ -57,7 +58,7 @@ void func_802A531C(void){ } void func_802A5374(void){ - func_80292078(1, -50.0f); + playerModel_80292078(1, -50.0f); func_8029B324(0, 0.03f); func_8029B324(1, 1.0f); func_8029E070(1); @@ -72,12 +73,12 @@ void func_802A5404(void){ if(bslongleg_inSet(bs_getNextState())) return; - func_80292078(1,0); + playerModel_80292078(1,0); func_8029B0C0(); func_8029E070(0); func_8029E064(0); func_8029E0F4(0); - func_80292090(1); + playerModel_setDirection(PLAYER_MODEL_DIR_BANJO); pitch_setIdeal(0.0f); roll_setIdeal(0.0f); func_802917C4(2); @@ -154,7 +155,7 @@ void bsblongleg_stand_enter(void){ func_8028A010(ASSET_41_ANIM_BSLONGLEG_IDLE, 1.0f); func_8029C7F4(1,1,1,2); func_80297970(0.0f); - func_80292090(2); + playerModel_setDirection(PLAYER_MODEL_DIR_KAZOOIE); func_802A5374(); } @@ -462,7 +463,7 @@ void func_802A6394(void){ func_8029C7F4(1,1,3,2); func_80297970(0.0f); func_802A5374(); - func_80292090(2); + playerModel_setDirection(PLAYER_MODEL_DIR_KAZOOIE); func_8029C674(); } diff --git a/src/core2/bs/bPeck.c b/src/core2/bs/bPeck.c index 020e4d58..31acd06e 100644 --- a/src/core2/bs/bPeck.c +++ b/src/core2/bs/bPeck.c @@ -2,7 +2,7 @@ #include "functions.h" #include "variables.h" -void func_80292048(s32, f32, f32, f32); +void playerModel_80292048(s32, f32, f32, f32); void func_802875AC(AnimCtrl *, char *, s32); /* .data */ @@ -42,8 +42,8 @@ void bsbpeck_init(void){ func_8029E070(1); gravity_set(D_80364A60); player_setYVelocity(D_80364A64); - func_80292048(1, -38.0f, 0.0f, 105.0f); - func_80292048(0, -38.0f, 0.0f, -7.0f); + playerModel_80292048(1, -38.0f, 0.0f, 105.0f); + playerModel_80292048(0, -38.0f, 0.0f, -7.0f); func_8028D638(0x23, 0x2A); D_8037D375 = 0; D_8037D374 = 0; @@ -129,8 +129,8 @@ void bsbpeck_update(void){ void bsbpeck_end(void){ D_8037D376 = 0; ability_use(0xa); - func_80292048(1, 0.0f, 0.0f, 0.0f); - func_80292048(0, 0.0f, 0.0f, 0.0f); + playerModel_80292048(1, 0.0f, 0.0f, 0.0f); + playerModel_80292048(0, 0.0f, 0.0f, 0.0f); func_8028D638(0, 0); func_8029E070(0); gravity_reset(); diff --git a/src/core2/bs/bShock.c b/src/core2/bs/bShock.c index 6c5f1252..f9b14680 100644 --- a/src/core2/bs/bShock.c +++ b/src/core2/bs/bShock.c @@ -35,7 +35,7 @@ void bsbshock_charge_init(void){ D_8037D382 = func_8030D90C(); sfxsource_setSfxId(D_8037D382, SFX_2C_PULLING_NOISE); func_8030E04C(D_8037D382, 1.4f, 0.4f, -1.2f); - func_80292158(-50.0f); + playerModel_80292158(-50.0f); func_80298528(-50.0f); D_8037D380 = 1; D_8037D381 = 0; @@ -103,7 +103,7 @@ void bsbshock_charge_update(void){ if(animctrl_isAt(aCtrl, 0.5551f)){ player_setYVelocity(180.0f); - func_80292158(0.0f); + playerModel_80292158(0.0f); func_80298528(50.0f); } @@ -116,8 +116,8 @@ void bsbshock_charge_end(void){ func_8030DA44(D_8037D382); func_8029E064(0); func_8029E070(0); - if(func_80292230() != 0.0f){ - func_80292158(0.0f); + if(playerModel_80292230() != 0.0f){ + playerModel_80292158(0.0f); func_80298528(50.0f); } } @@ -146,7 +146,7 @@ void bsbshock_init(void){ func_8029E064(1); func_8029E070(1); ability_use(9); - func_80292158(-50.0f); + playerModel_80292158(-50.0f); func_80298528(-50.0f); D_8037D381 = 0; } @@ -190,6 +190,6 @@ void bsbshock_end(void){ func_8029E064(0); func_8029E070(0); - func_80292158(0.0f); + playerModel_80292158(0.0f); func_80298528(50.0f); } diff --git a/src/core2/bs/bSwim.c b/src/core2/bs/bSwim.c index dd683575..c116a51a 100644 --- a/src/core2/bs/bSwim.c +++ b/src/core2/bs/bSwim.c @@ -2,7 +2,7 @@ #include "functions.h" #include "variables.h" -extern void func_802921BC(f32); +extern void playerModel_setYDisplacement(f32); extern f32 func_8029494C(void); extern f32 func_8029B2D0(void); extern bool func_8029E284(s32, f32); @@ -76,7 +76,7 @@ void func_802A744C(void) { func_8029B324(1, 1.0f); func_8029E070(1); func_80294378(3); - func_802921BC(60.0f); + playerModel_setYDisplacement(60.0f); func_80297B64(2.0f); } @@ -106,7 +106,7 @@ void func_802A75B0(void) { func_8029B0C0(); func_8029E070(0); func_80294378(1); - func_802921BC(0.0f); + playerModel_setYDisplacement(0.0f); } } diff --git a/src/core2/bs/bTrot.c b/src/core2/bs/bTrot.c index be8a65af..51f73506 100644 --- a/src/core2/bs/bTrot.c +++ b/src/core2/bs/bTrot.c @@ -2,6 +2,7 @@ #include "functions.h" #include "variables.h" +#include "core2/playerModel.h" /* .data */ f32 D_80364A90 = 30.0f; @@ -104,7 +105,7 @@ void func_802A8A40(void){ roll_setAngularVelocity(1000.0f, 12.0f); miscflag_set(3); func_8029CF48(4,1,0.24f); - func_80292090(2); + playerModel_setDirection(PLAYER_MODEL_DIR_KAZOOIE); } void func_802A8AD8(void){ @@ -133,7 +134,7 @@ void func_802A8BB0(void){ if(bsbtrot_inSet(next_state)) return; - func_80292090(1); + playerModel_setDirection(PLAYER_MODEL_DIR_BANJO); func_8029B0C0(); func_8029E070(0); func_8029E064(0); @@ -378,7 +379,7 @@ void bsbtrot_jump_update(void){ else func_802A89D4(); - _get_velocity(&sp1C); + _get_velocity(sp1C); if(button_released(BUTTON_A) && 0.0f < sp1C[1]) gravity_reset(); @@ -589,7 +590,7 @@ void bsbtrot_fall_update(void){ else func_802A89D4(); - _get_velocity(&sp1C); + _get_velocity(sp1C); switch (D_8037D3A4){ case 0://L802A9D90 if(func_8028B254(0x8C)){ @@ -679,7 +680,7 @@ void bsbtrot_unk79_init(void){ func_8029C7F4(1,1,3,2); func_80297970(0.0f); func_802A8A40(); - func_80292090(2); + playerModel_setDirection(PLAYER_MODEL_DIR_KAZOOIE); func_8029C674(); } @@ -707,7 +708,7 @@ void bsbtrot_ow_init(void){ func_80298760(func_80296560()); func_8028A274(0x66, 1.1f); func_80299BFC(1.0f); - _player_getPosition(&sp30); + _player_getPosition(sp30); func_80294980(sp24); func_80257F18(sp24, sp30, &sp3C); yaw_setIdeal(mlNormalizeAngle(sp3C + 180.0f));\ diff --git a/src/core2/bs/beeFly.c b/src/core2/bs/beeFly.c index 96427458..11f32360 100644 --- a/src/core2/bs/beeFly.c +++ b/src/core2/bs/beeFly.c @@ -8,7 +8,7 @@ f32 func_8029B33C(void); void func_8029797C(f32); void func_80297970(f32); -void func_802921BC(f32); +void playerModel_setYDisplacement(f32); void func_80297BF8(f32); void func_802BFE50(f32, f32, f32); void func_80299234(f32, f32); @@ -94,7 +94,7 @@ void func_802A0750(void){ void _bsbeefly_end(void){ if(bsBeeFly_inSet(bs_getNextState())) return; - func_802921BC(0.0f); + playerModel_setYDisplacement(0.0f); roll_setIdeal(0.0f); pitch_setIdeal(0.0f); func_80291548(); @@ -107,7 +107,7 @@ void _bsbeefly_end(void){ void func_802A07F8(void){ if(bsBeeFly_inSet(bs_getPrevState())) return; - func_802921BC(65.0f); + playerModel_setYDisplacement(65.0f); func_802991A8(3); roll_setAngularVelocity(500.0f, 2.0f); func_802A0724(); diff --git a/src/core2/bs/croc.c b/src/core2/bs/croc.c index 8e3a33ba..47b389a4 100644 --- a/src/core2/bs/croc.c +++ b/src/core2/bs/croc.c @@ -612,7 +612,7 @@ void func_802AD318(void){ void bscroc_eat_good_init(void){ func_8028A010(0x122, 0.25f); func_8029C7F4(1,1,1,2); - func_80292188(func_802AD2A8); + playerModel_setPostDraw(func_802AD2A8); D_8037D3E8 = assetcache_get(func_80294974()); D_8037D3F0 = 1.0f; D_8037D3F5 = 0; @@ -661,7 +661,7 @@ void bscroc_eat_good_update(void){ void bscroc_eat_good_end(void){ D_8037D3F5 = 0; assetcache_release(D_8037D3E8); - func_80292188(0); + playerModel_setPostDraw(0); func_802ABFBC(); } diff --git a/src/core2/bs/dronexform.c b/src/core2/bs/dronexform.c index b07e4547..265e87af 100644 --- a/src/core2/bs/dronexform.c +++ b/src/core2/bs/dronexform.c @@ -291,7 +291,7 @@ static void __bsdronexform_setState(int arg0){ yaw_applyIdeal(); } func_8029A95C(func_80294A4C()); //set player transformation - func_80291D04(); //update player model + playerModel_updateModel(); //update player model func_8029BD44(&sp34, &sp30); func_8028A010(sp34, sp30); func_8029E3C0(0, 0.1f); diff --git a/src/core2/bs/jump.c b/src/core2/bs/jump.c index e315ff2e..56735628 100644 --- a/src/core2/bs/jump.c +++ b/src/core2/bs/jump.c @@ -9,7 +9,7 @@ f32 func_80297A64(void); void func_80299B58(f32, f32); f32 func_8029B2E8(void); f32 func_8029B33C(void); -void func_802921BC(f32); +void playerModel_setYDisplacement(f32); void func_8028A084(s32, f32); /* .data */ @@ -387,7 +387,7 @@ bool bsjump_jumpingFromWater(void){ void bsjump_tumble_init(void){ func_8028A084(0x68, 0.35f); func_8029C7F4(1,1,3,6); - func_802921BC(60.0f); + playerModel_setYDisplacement(60.0f); if(func_80293234() == 1){ func_8029E3C0(0, 0.5f); func_8029E3C0(1, 0.41f); @@ -438,6 +438,6 @@ void bsjump_tumble_end(void){ func_80293240(3); } func_8029CB84(); - func_802921BC(0.0f); + playerModel_setYDisplacement(0.0f); func_80299E6C(); } diff --git a/src/core2/bs/pumpkin.c b/src/core2/bs/pumpkin.c index 7440f60e..c44adbdf 100644 --- a/src/core2/bs/pumpkin.c +++ b/src/core2/bs/pumpkin.c @@ -2,7 +2,7 @@ #include "functions.h" #include "variables.h" -extern void func_802920FC(f32); +extern void playerModel_setScale(f32); extern void func_8028A084(s32, f32); extern void func_8029AD68(f32, s32); @@ -321,7 +321,7 @@ void func_802B2C58(void) { sp3C = ml_map_f(sp34, 0.0f, 2.3f, 0.0f, 45.0f); yaw_setIdeal(mlNormalizeAngle(sp38 + sp3C)); yaw_applyIdeal(); - func_802920FC(ml_map_f(sp34, 0.0f, 2.3f, 1.0f, 0.3f)); + playerModel_setScale(ml_map_f(sp34, 0.0f, 2.3f, 1.0f, 0.3f)); ml_vec3f_copy(sp28, D_8037D4E8); sp28[1] = ml_map_f(sp34, 0.0f, 2.3f, D_8037D4E8[1], D_8037D4E8[1] - 50.0); func_8028FAB0(sp28); @@ -329,7 +329,7 @@ void func_802B2C58(void) { void func_802B2D50(void) { func_80294378(1); - func_802920FC(1.0f); + playerModel_setScale(1.0f); } void func_802B2D80(s32 arg0) { diff --git a/src/core2/bs/swim.c b/src/core2/bs/swim.c index a0f0dbad..009d04e8 100644 --- a/src/core2/bs/swim.c +++ b/src/core2/bs/swim.c @@ -34,9 +34,9 @@ void func_802B5480(void) { if (func_80294574()) { if (randf() > 0.5) { - func_8029223C(sp2C); + playerModel_8029223C(sp2C); } else { - func_80292260(sp2C); + playerModel_80292260(sp2C); } sp28 = func_8029B950(&sp2C, 0.0f); particleEmitter_setParticleVelocityRange(sp28, -60.0f, -100.0f, -60.0f, 60.0f, 0.0f, 60.0f); diff --git a/src/core2/bs/walrus.c b/src/core2/bs/walrus.c index 3aaeb955..e42341f0 100644 --- a/src/core2/bs/walrus.c +++ b/src/core2/bs/walrus.c @@ -567,9 +567,9 @@ void bswalrus_sled_update(void){ if(50.0f < func_80297AB8()){ if(func_8023DB4C(1)){ - func_80292554(&sp20); + playerModel_80292554(&sp20); }else{ - func_80292578(&sp20); + playerModel_80292578(&sp20); } particleEmitter_emitN(func_802F1EC8(sp20), 1); }//L802B927C diff --git a/src/core2/code_14420.c b/src/core2/code_14420.c index 6e4b699d..49027c73 100644 --- a/src/core2/code_14420.c +++ b/src/core2/code_14420.c @@ -677,9 +677,9 @@ void func_8029C4E4(bool arg0) { if (func_80294574()) { if (arg0) { - func_80292260(sp3C); + playerModel_80292260(sp3C); } else { - func_8029223C(sp3C); + playerModel_8029223C(sp3C); } sp3C[1] = func_80294500(); sp38 = yaw_get(); diff --git a/src/core2/code_16C60.c b/src/core2/code_16C60.c index bc37b99a..71dd1ce7 100644 --- a/src/core2/code_16C60.c +++ b/src/core2/code_16C60.c @@ -26,7 +26,7 @@ f32 D_8037D240; /* .code */ void func_8029DBF0(void){ s32 temp_s0; - switch(func_80291FAC()){ + switch(playerModel_getModelId()){ case 0x34D: //L8029DC24 case 0x34E: //L8029DC24 temp_s0 = (s32) func_80257C48(D_8037D23C, 1.0f, 8.0f); @@ -61,7 +61,7 @@ void func_8029DD6C(void) { bool temp_s0; func_8033A1FC(); - switch (func_80291FAC()) { + switch (playerModel_getModelId()) { case 0x34D: case 0x34E: func_8033A45C(1, D_8037D238); diff --git a/src/core2/code_27550.c b/src/core2/code_27550.c index 88bb5111..440c7d59 100644 --- a/src/core2/code_27550.c +++ b/src/core2/code_27550.c @@ -22,8 +22,8 @@ void func_802AE4E0(s32 arg0) { func_8025A6CC(COMUSIC_43_ENTER_LEVEL_GLITTER, 32000); func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER); func_8029E3C0(0, 0.4f); - func_80291FB8(0); - func_80291D04(); + playerModel_setEnvAlpha(0); + playerModel_updateModel(); break; case 3: comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000); @@ -120,7 +120,7 @@ void func_802AEA2C(void) { case 2: func_802AE914(); sp20 = func_8029E1A8(0); - func_80291FB8((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 255.0f, 0.0f)); + playerModel_setEnvAlpha((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 255.0f, 0.0f)); if (sp20) { func_802AE4E0(3); } @@ -137,5 +137,5 @@ void func_802AEA2C(void) { void func_802AEB24(void){ func_802AE874(); func_80294378(1); - func_80291D04(); + playerModel_updateModel(); } diff --git a/src/core2/code_28220.c b/src/core2/code_28220.c index 9a708024..1b5e1b0f 100644 --- a/src/core2/code_28220.c +++ b/src/core2/code_28220.c @@ -25,7 +25,7 @@ void bsdronevanish_setState(s32 next_state) { break; case 3: gcpausemenu_returnToLair(); - func_802921C8(0); + playerModel_setVisible(FALSE); comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000); func_8029E3C0(0, 2.0f); break; @@ -115,7 +115,7 @@ void bsdronevanish_update(void) { case 2: func_802AF550(); sp20 = func_8029E1A8(0); - func_80291FB8((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 0.0f, 255.0f)); + playerModel_setEnvAlpha((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 0.0f, 255.0f)); if (sp20) { bsdronevanish_setState(3); } @@ -132,5 +132,5 @@ void bsdronevanish_update(void) { void func_802AF768(void){ func_802AF4B0(); func_80294378(1); - func_80291D04(); + playerModel_updateModel(); } diff --git a/src/core2/code_43800.c b/src/core2/code_43800.c index 5ea8325a..0191a439 100644 --- a/src/core2/code_43800.c +++ b/src/core2/code_43800.c @@ -52,7 +52,7 @@ Actor *func_802CA7BC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){ sp48[1] = this->yaw; sp48[2] = this->roll; sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, 0.28f); - modelRender_preDraw(func_802CA790, this); + modelRender_preDraw((GenMethod_1)func_802CA790, (s32)this); modelRender_draw(gfx, mtx, this->position, sp48, sp44, NULL, func_80330B1C(marker)); return this; } diff --git a/src/core2/code_47C0.c b/src/core2/code_47C0.c index 0ba18ae4..8fd158e3 100644 --- a/src/core2/code_47C0.c +++ b/src/core2/code_47C0.c @@ -20,7 +20,7 @@ extern void func_8035644C(s32); extern void func_8035646C(s32 arg0); extern void func_80291634(ActorMarker *, ActorMarker *); extern void func_80291610(ActorMarker *, ActorMarker *); -extern void func_80291AAC(void); +extern void playerModel_80291AAC(void); extern void func_8028D7B8(s32 arg0, ActorMarker *arg1, struct5Cs *collision_flags); extern void func_802EE6CC(f32[3], s32, s32[4], s32, f32, f32, s32,s32,s32); extern void func_80320ED8(ActorMarker *, f32, s32); @@ -861,7 +861,7 @@ void func_8028BCA0(Prop *prop){ void playerMarker_init(void){ f32 sp1C[3]; _player_getPosition(sp1C); - playerMarker = func_8032FBE4(sp1C, func_80291AAC, 1, 0); + playerMarker = func_8032FBE4(sp1C, playerModel_80291AAC, 1, 0); playerMarker->unk2C_1 = 1; marker_setCollisionScripts(playerMarker, NULL, func_80291634, func_80291610); func_803300B8(playerMarker, func_8028D7B8); @@ -907,7 +907,7 @@ void func_8028D2E4(void){ func_8032F64C(sp168, playerMarker); for(D_8037BF8C = NULL, i = 0, temp_s2 = 0; i < 2;i++){//L8028D3DC D_8037BF90 = i; - func_80292284(sp174, i); //get top of player? + playerModel_80292284(sp174, i); //get top of player? playerMarker->unk38[0] = sp174[0] - sp168[0]; playerMarker->unk38[1] = sp174[1] - sp168[1]; playerMarker->unk38[2] = sp174[2] - sp168[2]; diff --git a/src/core2/code_5C870.c b/src/core2/code_5C870.c index 8e1d6adc..9c0fbc20 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(); - func_8030A298(); + levelModel_defrag(); func_803086B4(); func_8032AF94(); func_802C4320(); diff --git a/src/core2/code_630D0.c b/src/core2/code_630D0.c index 64ea5b31..5cbe9df2 100644 --- a/src/core2/code_630D0.c +++ b/src/core2/code_630D0.c @@ -18,7 +18,7 @@ void func_802EA060(struct58s **arg0, BKAnimationList *anim_list){ end_ptr = (Mtx *)(sp24->size_40*sizeof(Mtx) + (s32)sp24 +sizeof(struct58s)); mlMtxIdent(); for(i_ptr = sp24->data; i_ptr < end_ptr; i_ptr++){ - func_802513B0(i_ptr); + mlMtxGet(i_ptr); } } @@ -39,7 +39,7 @@ struct58s *func_802EA154(void){ this->size_40 = 0; this->capacity_44 = 0; mlMtxIdent(); - func_802513B0(this); + mlMtxGet(this); return this; } @@ -95,7 +95,7 @@ void func_802EA1A8(struct58s **arg0, BKAnimationList *anim_list, s32 arg2){ mlMtxScale_xyz(sp68[0], sp68[1], sp68[2]); mlMtxTranslate(-s0->unk0[0], -s0->unk0[1], -s0->unk0[2]); - func_802513B0(i_ptr); + mlMtxGet(i_ptr); } } diff --git a/src/core2/code_637D0.c b/src/core2/code_637D0.c index 94f6d5aa..ab033f09 100644 --- a/src/core2/code_637D0.c +++ b/src/core2/code_637D0.c @@ -374,7 +374,7 @@ s32 func_802EBAE0(BKModelUnk14List *arg0, f32 position[3], f32 rotation[3], f32 { mlMtxIdent(); func_80252C08(position, rotation, scale, arg4); - func_802513B0(&D_80380880); + mlMtxGet(&D_80380880); phi_v0 = func_802EB8A0(arg0, position, rotation, scale, arg4, arg5, arg6, arg7); if (phi_v0 == 0) { diff --git a/src/core2/code_6B030.c b/src/core2/code_6B030.c index effe3474..5c006062 100644 --- a/src/core2/code_6B030.c +++ b/src/core2/code_6B030.c @@ -330,7 +330,7 @@ void func_802F2ED0(Struct64s *arg0, Gfx **gfx, Mtx **mtx, Vtx **vtx) { mlMtxIdent(); mlMtxRotPitch(-sp38[0]); mlMtxRotYaw(-sp38[1]); - func_802513B0(&D_80380A18); + mlMtxGet(&D_80380A18); for(phi_s0 = arg0->unk0; phi_s0 < arg0->unk0 + arg0->unk4; phi_s0++){ if (phi_s0->unk23 & 1) { func_802F1FC0(phi_s0, gfx, mtx, vtx); diff --git a/src/core2/code_6B30.c b/src/core2/code_6B30.c index 2f70410d..955c5a92 100644 --- a/src/core2/code_6B30.c +++ b/src/core2/code_6B30.c @@ -113,7 +113,7 @@ void func_8028DE0C(enum actor_e actor_id){ Actor *actor; f32 sp20[3]; - banjo_getPosition(sp20); + playerModel_getPosition(sp20); actor = func_8032813C(actor_id, sp20, (s32) yaw_get()); actor->unk138_22 = TRUE; func_802948F8(actor->marker); diff --git a/src/core2/code_7060.c b/src/core2/code_7060.c index b11986a9..bdc14458 100644 --- a/src/core2/code_7060.c +++ b/src/core2/code_7060.c @@ -233,7 +233,7 @@ void func_8028E668(f32 arg0[3], f32 arg1, f32 arg2, f32 arg3) { void func_8028E6A4(Gfx **gfx, Mtx **mtx, Vtx **vtx) { if (D_8037BFB8) { eggShatter_draw(gfx, mtx, vtx); - func_80291AF0(gfx, mtx, vtx); + playerModel_draw(gfx, mtx, vtx); } } @@ -316,7 +316,7 @@ f32 func_8028E904(void){ f32 func_8028E924(f32 arg0[3], s32 arg1){ s32 *sp1C; - func_80292284(arg0, arg1); + playerModel_80292284(arg0, arg1); func_8028D6F0(&sp1C); return (f32) sp1C[arg1]; } @@ -336,19 +336,19 @@ void player_getPosition(f32 dst[3]){ void func_8028E9C4(s32 arg0, f32 arg1[3]) { switch(arg0){ case 1: //L8028E9EC - banjo_getPosition(arg1); + playerModel_getPosition(arg1); break; case 2: //L8028E9FC - func_802924E8(arg1); + playerModel_802924E8(arg1); break; case 3: //L8028EA0C - func_8029223C(arg1); + playerModel_8029223C(arg1); break; case 4: //L8028EA1C - func_80292260(arg1); + playerModel_80292260(arg1); break; case 5: //L8028EA2C @@ -603,7 +603,7 @@ bool func_8028F12C(void){ } bool func_8028F150(void){ - return func_80292548(); + return playerModel_isVisible(); } bool func_8028F170(void){ @@ -951,7 +951,7 @@ void func_8028FCBC(void){ } void func_8028FCC8(bool arg0){ - func_802921C8(arg0); + playerModel_setVisible(arg0); } void func_8028FCE8(void) { diff --git a/src/core2/code_9450.c b/src/core2/code_9450.c index 46bd0c9f..6e49d53e 100644 --- a/src/core2/code_9450.c +++ b/src/core2/code_9450.c @@ -32,10 +32,10 @@ void func_80290494(void){ f32 sp2C[3]; ParticleEmitter *sp28; if(!D_8037C03D || player_getTransformation() != TRANSFORM_1_BANJO){ - func_802924E8(sp2C); + playerModel_802924E8(sp2C); } else{ - func_802924B8(sp2C); + playerModel_802924B8(sp2C); } sp28 = func_8029B950(sp2C, 0.0f); particleEmitter_setParticleVelocityRange(sp28, -15.0f, 0.0f, -15.0f, 15.0f, 50.0f, 15.0f); diff --git a/src/core2/code_A960.c b/src/core2/code_A960.c index 44c3607c..2cd371d1 100644 --- a/src/core2/code_A960.c +++ b/src/core2/code_A960.c @@ -19,7 +19,7 @@ void func_80291930(s32 arg0){ func_8029E3C0(5, 2.0f); func_8029C984(); bs_setState(BS_5A_LOADZONE); - func_802921C8(0); + playerModel_setVisible(FALSE); func_802978DC(7); func_8029151C(6); } diff --git a/src/core2/code_AA60.c b/src/core2/code_AA60.c deleted file mode 100644 index 7cf5aa30..00000000 --- a/src/core2/code_AA60.c +++ /dev/null @@ -1,392 +0,0 @@ -#include -#include "functions.h" -#include "variables.h" - -void func_80254008(void); -extern void func_80256E24(f32[3], f32, f32, f32, f32, f32); -void assetcache_release(void *); //assetcache_free -extern void ml_vec3f_assign(f32[3], f32, f32, f32); -void func_8033A280(f32); - - -void func_80292048(s32, f32, f32, f32); -void func_80292090(s32 arg0); -void func_802920FC(f32); -void func_8029217C(f32); -void func_802921C8(s32 arg0); - - -extern s32 D_80000310; - -/* .data */ -struct5Bs *D_80363780 = NULL; - -/* .bss */ -void *D_8037C0E0; //playerModelPtr -s16 D_8037C0E4; //playerModel asset_id -u8 D_8037C0E6; -u8 D_8037C0E7; -u8 D_8037C0E8; -f32 D_8037C0EC; -f32 D_8037C0F0; -f32 D_8037C0F4; -f32 D_8037C0F8; -f32 D_8037C100[3]; -f32 D_8037C110[3]; -f32 D_8037C120[3]; -void (*D_8037C12C)(Gfx **gfx, Mtx **mtx, Vtx **vtx); -f32 D_8037C130[2][4]; -struct { - u8 unk0; - f32 unk4[3]; -} D_8037C150; - -//public -void playerModel_set(s32 asset_id); - -//.data -void func_802919F0(void){ - switch(D_8037C0E7){ - case 2: - D_8037C0F8 = mlNormalizeAngle(yaw_get() + 180.0f); - break; - default: - D_8037C0F8 = yaw_get(); - break; - case 3: - break; - } -} - -void func_80291A60(s32 arg0, f32 arg1[3]){ - func_8034A174(D_80363780, arg0, arg1); - if(func_802582EC(arg1)){ - _player_getPosition(arg1); - } -} - -int func_80291AAC(s32 arg0, s32 arga, s32 arg2, s32 arg3){ - return 0; -} - -void func_80291AC4(int arg0){ - _player_getMarker()->unk14_21 = 1; -} - -void func_80291AF0(Gfx **gfx, Mtx **mtx, Vtx **vtx){ - f32 sp5C[3]; - s32 sp50[3]; - f32 plyr_pos[3]; //sp44 - f32 sp38[3]; - - if(!D_8037C0E8) - return; - - func_802919F0(); - D_8037C0F4 = roll_get(); - D_8037C0F0 = pitch_get(); - _player_getPosition(plyr_pos); - plyr_pos[1] += 2.0f; - ml_vec3f_assign(sp5C, D_8037C0F0, D_8037C0F8, D_8037C0F4); - func_8029A47C(sp50); - ml_vec3f_copy(sp38, D_8037C100); - - plyr_pos[0] += D_8037C120[0];\ - plyr_pos[1] += D_8037C120[1];\ - plyr_pos[2] += D_8037C120[2]; - - sp38[0] += D_8037C120[0];\ - sp38[1] += D_8037C120[1];\ - sp38[2] += D_8037C120[2]; - - if(D_8037C0E0){ - func_80289F30(); - func_8029DD6C(); - modelRender_setEnvColor(sp50[0], sp50[1], sp50[2], D_8037C0E6); - func_8033A280(2.0f); - modelRender_preDraw(func_80291AC4, 0); - func_8033A450(D_80363780); - modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL); - if(D_8037C150.unk0){ - D_8037C150.unk0 = 0; - modelRender_draw(gfx, mtx, D_8037C150.unk4, sp5C, D_8037C0EC, sp38, D_8037C0E0); - } - else{ - modelRender_draw(gfx, mtx, plyr_pos, sp5C, D_8037C0EC, sp38, D_8037C0E0); - } - }//L80291CD4 - - if(D_8037C12C){ - D_8037C12C(gfx, mtx, vtx); - } -} - -void func_80291D04(void){ - playerModel_set(func_802985F0()); -} - -void func_80291D2C(void){ - f32 plyr_pos[3]; - int i; - for(i = 0; i < 2 ; i++){ - func_80292048(i, 0.0f, 0.0f, 0.0f); - func_80292078(i, 0.0f); - } - D_8037C0E6 = -1; - D_8037C0E0 = NULL; - D_8037C0E4 = 0; - D_8037C12C = 0; - D_80363780 = func_8034A2C8(); - func_8034A130(D_80363780); - ml_vec3f_clear(D_8037C100); - ml_vec3f_clear(D_8037C110); - ml_vec3f_clear(D_8037C120); - D_8037C0F8 = D_8037C0F4 = D_8037C0F0 = 0.0f; - D_8037C150.unk0 = 0; - func_802921C8(1); - func_802920FC(1.0f); - D_8037C0E7 = 0; - func_80292090(1); - if(!func_8028ADB4()) - func_80291D04(); - player_getPosition(plyr_pos); - func_802C3F04(func_802C4140, 0x17, - reinterpret_cast(s32, plyr_pos[0]), - reinterpret_cast(s32, plyr_pos[1]), - reinterpret_cast(s32, plyr_pos[2]) - ); -} - -void func_80291E88(void){ - assetcache_release(D_8037C0E0); - D_8037C0E0 = NULL; - D_8037C0E4 = 0; - func_8034A2A8(D_80363780); - D_80363780 = NULL; -} - -void func_80291ECC(void){ - f32 sp1C; - f32 temp_f0; - - sp1C = D_8037C110[1] - D_8037C100[1]; - temp_f0 = mlAbsF(sp1C); - if( temp_f0 < 0.01){ - D_8037C100[1] = D_8037C110[1]; - } - else{ - if(5.0f < temp_f0){ - temp_f0 = 1.0f; - } - if(0.0f < sp1C){ - D_8037C100[1] += temp_f0; - } - else{ - D_8037C100[1] -= temp_f0; - } - {//L80291F7C - _player_getMarker()->unk14_21 = 0; - } - } -} - -BKModelBin *func_80291FA0(void){ - return D_8037C0E0; -} - -enum asset_e func_80291FAC(void){ - return D_8037C0E4; -} - -void func_80291FB8(s32 arg0){ - D_8037C0E6 = arg0; -} - -void playerModel_set(s32 asset_id){ - if(asset_id != D_8037C0E4){ - if(D_8037C0E0){ - func_80254008(); - assetcache_release(D_8037C0E0); - D_8037C0E0 = NULL; - } - D_8037C0E4 = asset_id; - if(D_8037C0E4) - D_8037C0E0 = assetcache_get(D_8037C0E4); - } -} - -void func_80292048(s32 arg0, f32 arg1, f32 arg2, f32 arg3){ - D_8037C130[arg0][2] = arg1; - D_8037C130[arg0][3] = arg2; - D_8037C130[arg0][1] = arg3; -} - -void func_80292078(s32 arg0, f32 arg1){ - D_8037C130[arg0][0] = arg1; -} - -void func_80292090(s32 arg0){ - if(arg0 != D_8037C0E7){ - if(arg0 == 2 || 2 == D_8037C0E7){ - yaw_setIdeal(mlNormalizeAngle(yaw_get() + 180.0f)); - yaw_applyIdeal(); - } - } - D_8037C0E7 = arg0; -} - -void func_802920FC(f32 arg0){ - if(D_80000310 + -0x17D7){ - arg0 = arg0*0.25; - } - D_8037C0EC = arg0; -} - -void func_80292134(f32 arg0){ - D_8037C0F8 = mlNormalizeAngle(arg0); -} - -void func_80292158(f32 arg0){ - D_8037C100[1] = arg0; - func_8029217C(arg0); -} - -void func_8029217C(f32 arg0){ - D_8037C110[1] = arg0; -} - -void func_80292188(void (*draw_func)(Gfx **gfx, Mtx **mtx, Vtx **vtx)){ - D_8037C12C = draw_func; -} - -void func_80292194(f32 arg0[3]){ - ml_vec3f_copy(D_8037C120, arg0); -} - -void func_802921BC(f32 arg0){ - D_8037C120[1] = arg0; -} - -void func_802921C8(s32 arg0){ - D_8037C0E8 = arg0; -} - -void func_802921D4(f32 arg0[3]){ - if(func_8028EE84() == BSWATERGROUP_0_NONE){ - D_8037C150.unk0 = 1; - D_8037C150.unk4[0] = arg0[0]; - D_8037C150.unk4[1] = arg0[1]; - D_8037C150.unk4[2] = arg0[2]; - } -} - -f32 func_80292224(void){ - return D_8037C0F8; -} - -f32 func_80292230(void){ - return D_8037C100[1]; -} - -void func_8029223C(f32 arg0[3]){ - func_80291A60(8, arg0); -} - -void func_80292260(f32 arg0[3]){ - func_80291A60(7, arg0); -} - -void func_80292284(f32 arg0[3], s32 arg1){ - f32 sp44[3]; - f32 sp38[3]; - - if(_player_getMarker()->unk14_21 && D_8037C0E8){ - switch(func_80291FAC()){ - case 0x34D: - case 0x34E: - case ASSET_34F_MODEL_BANJO_TERMITE: //802922E8 - case ASSET_359_MODEL_BANJO_WALRUS: //802922E8 - case ASSET_362_MODEL_BANJO_BEE: - case ASSET_36F_MODEL_BANJO_PUMPKIN: - case ASSET_374_MODEL_BANJO_CROC: - func_8034A174(D_80363780, arg1 + 1, arg0); - if(func_802582EC(arg0)){ - _player_getPosition(arg0); - } - - arg0[1] += D_8037C130[arg1][0]; - if(D_8037C130[arg1][1] != 0.0f){ - func_80256E24(sp44, D_8037C130[arg1][2], mlNormalizeAngle(yaw_get() + D_8037C130[arg1][3]), 0.0f, 0.0f, D_8037C130[arg1][1]); - arg0[0] += sp44[0]; - arg0[1] += sp44[1]; - arg0[2] += sp44[2]; - } - func_802976C0(sp38); - arg0[0] = arg0[0] + sp38[0]; - arg0[1] = arg0[1] + sp38[1]; - arg0[2] = arg0[2] + sp38[2]; - break; - default: ////80292400 - _player_getPosition(arg0); - break; - } - } - else{//L80292410 - _player_getPosition(arg0); - if(arg1){ - arg0[1] += 33.0f; - } - else{ - arg0[1] += 75.0f; - } - } -} - -void banjo_getPosition(f32* dst){ - f32 tmp1[3]; - f32 tmp2[3]; - func_80291A60(5,tmp1); - func_80291A60(6,tmp2); - ml_vec3f_add(dst, tmp1, tmp2); - ml_vec3f_scale(dst, 0.5); -} - -void func_802924B8(f32 arg0[3]){ - func_80291A60(0xA, arg0); -} - -s32 func_802924DC(void){ - return D_8037C0E7; -} - -void func_802924E8(f32 arg0[3]){ - switch(player_getTransformation()){ - case TRANSFORM_5_CROC: - func_80291A60(5, arg0); - break; - case TRANSFORM_4_WALRUS: //L80292520 - func_80291A60(0xB, arg0); - break; - default: //L80292530 - func_80291A60(0x9, arg0); - break; - } -} - -s32 func_80292548(void){ - return D_8037C0E8; -} - -void func_80292554(f32 arg0[3]){ - func_80291A60(0x9, arg0); -} - -void func_80292578(f32 arg0[3]){ - func_80291A60(0xA, arg0); -} - -void func_8029259C(void){ - if(D_80363780){ - D_80363780 = func_8034A348(D_80363780); - } -} diff --git a/src/core2/code_D6180.c b/src/core2/code_D6180.c index 9b0f162d..7b92b430 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(func_80309744(0), actor->position, 0x190, 0x1A0) == arg1){ + if(func_8033F3E8(levelModel_getModel(0), actor->position, 0x190, 0x1A0) == arg1){ func_802C9334(0x1C, actor); func_8035D2C0(marker, 0); } diff --git a/src/core2/code_D800.c b/src/core2/code_D800.c index 8ba408fa..6e6e76a2 100644 --- a/src/core2/code_D800.c +++ b/src/core2/code_D800.c @@ -41,7 +41,7 @@ void func_80294828(void){ player_getRotation(banjoRot); - banjo_getPosition(banjoPos); + playerModel_getPosition(banjoPos); banjoRot[1] = mlNormalizeAngle(banjoRot[1] + D_8037C290.unk4); banjoPos[1] += D_8037C290.unk0; func_802947CC(D_8037C298, banjoPos, banjoRot); diff --git a/src/core2/code_E910.c b/src/core2/code_E910.c index f8daa4ca..927cceb6 100644 --- a/src/core2/code_E910.c +++ b/src/core2/code_E910.c @@ -218,7 +218,7 @@ void func_80295914(void){ func_80294790(); func_80293DA4(); func_80289D1C(); - func_80291D2C(); + playerModel_reset(); playerMarker_init(); func_80299900(); func_8029A4D0(); @@ -259,7 +259,7 @@ void func_80295B04(void){ func_8029065C(); func_8029175C(); eggShatter_free(); - func_80291E88(); + playerModel_free(); func_80289DDC(); func_80293E88(); func_802947C4(); @@ -299,7 +299,7 @@ void func_80295C14(void){ func_80290108(); eggShatter_update(); func_80292EDC(); - func_80291ECC(); + playerModel_update(); func_8029842C(); func_8028D2E4(); func_80294890(); @@ -321,7 +321,7 @@ void func_80295C14(void){ void func_80295D74(void){ if(D_80363820){ func_80289E74(); - func_8029259C(); + playerModel_defrag(); eggShatter_defrag(); func_80294750(); func_8029AF1C(); diff --git a/src/core2/gc/zoombox.c b/src/core2/gc/zoombox.c index c3e40eff..8f98b408 100644 --- a/src/core2/gc/zoombox.c +++ b/src/core2/gc/zoombox.c @@ -845,7 +845,7 @@ void func_803163A8(gczoombox_t *this, Gfx **gfx, Mtx **mtx) { if (this->anim_ctrl != NULL) { func_8028781C(this->anim_ctrl, sp50, 1); } - modelRender_draw(gfx, mtx, sp50, sp5C, this->unk198 * sp34, &sp38, this->model); + modelRender_draw(gfx, mtx, sp50, sp5C, this->unk198 * sp34, sp38, this->model); } void func_803164B0(gczoombox_t *this, Gfx **gfx, Mtx **mtx, s32 arg3, s32 arg4, s32 arg5, f32 arg6) { diff --git a/src/core2/code_82000.c b/src/core2/levelModel.c similarity index 98% rename from src/core2/code_82000.c rename to src/core2/levelModel.c index 137590bf..b1fb7846 100644 --- a/src/core2/code_82000.c +++ b/src/core2/levelModel.c @@ -6,10 +6,8 @@ extern UNK_TYPE(s32) func_802E8E88(BKCollisionList *, BKVertexList *, f32[3], f32[3], f32, f32[3], s32, s32); extern UNK_TYPE(s32) func_802E92AC(BKCollisionList *, BKVertexList *, f32[3], f32, f32[3], s32); -extern UNK_TYPE(s32) func_802EC394(BKMeshList *, UNK_TYPE(s32), UNK_TYPE(s32), f32, UNK_TYPE(s32), UNK_TYPE(s32), UNK_TYPE(s32)); +extern s32 func_802EC394(BKModelUnk14List *arg0, s32 arg1, s32 arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6); extern void func_802EC458(BKVertexList *, s32[3], s32[3]); -extern void func_8033A494(s32); -extern void modelRender_setEnvColor(s32, s32, s32, s32); extern void func_802F7BC0(Gfx **, Mtx **, Vtx **); extern void func_8033A450(s32); extern void func_8033A45C(s32, s32); @@ -179,7 +177,7 @@ struct { f32 unk30; }levelModel; -enum asset_e func_8030A068(void); +enum asset_e levelModel_getOpaModelId(void); /* .code */ Struct_core2_82000_0 *func_80308F90(enum map_e map_id){ @@ -241,7 +239,7 @@ void levelModel_opa_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { s32 temp_a0; if (func_80320708() && levelSpecificFlags_validateCRC2() && func_80320248()) { - if (func_8030A068() == 0x14CF) { + if (levelModel_getOpaModelId() == ASSET_14CF_MODEL_SM_OPA) { func_8033A45C(1, 0); func_8033A45C(2, 1); } @@ -381,11 +379,11 @@ f32 func_80309724(f32 arg0[3]){ return func_80308FDC(arg0, 0x1e0000); } -BKModel *func_80309744(s32 arg0){ +BKModel *levelModel_getModel(s32 arg0){ return (arg0) ? levelModel.model_xlu : levelModel.model_opa; } -BKModelBin *func_80309764(s32 arg0){ +BKModelBin *levelModel_getModelBin(s32 arg0){ if(arg0 == 0) return levelModel.model_bin_opa; if(arg0 == 1) @@ -573,7 +571,7 @@ void levelModel_free(void){ func_8034A2A8(levelModel.unk24); } -enum asset_e func_8030A068(void){ +enum asset_e levelModel_getOpaModelId(void){ return levelModel.unk28->model1_id; } @@ -647,7 +645,7 @@ void levelModel_setEnvColor(s32 r, s32 g, s32 b){ levelModel.env_blue = b; } -void func_8030A298(void){ +void levelModel_defrag(void){ if(levelModel.unk24 != NULL){ levelModel.unk24 = func_8034A348(levelModel.unk24); } diff --git a/src/core2/modelRender.c b/src/core2/modelRender.c index 881c4c3c..abfb6f79 100644 --- a/src/core2/modelRender.c +++ b/src/core2/modelRender.c @@ -615,7 +615,7 @@ s32 D_80383724; static BKVertexList * modelRenderVextureList; BKModelUnk20List * D_8038372C; struct58s * D_80383730; -f32 D_80383734; +f32 modelRenderScale; struct{ s32 env[4]; @@ -665,7 +665,7 @@ Mtx D_80383BF8; f32 modelRenderCameraPosition[3]; f32 modelRenderCameraRotation[3]; BKModelBin *modelRenderModelBin; -f32 D_80383C58[3]; +f32 modelRenderRotation[3]; f32 D_80383C64; f32 D_80383C68[3]; f32 D_80383C78[3]; @@ -718,7 +718,7 @@ void func_803384A8(Gfx **gfx, Mtx **mtx, void *arg2){ if(!cmd->unkA){ mlMtxRotPitch(modelRenderCameraRotation[0]); } - mlMtxScale(D_80383734); + mlMtxScale(modelRenderScale); mlMtxTranslate(-cmd->unkC[0], -cmd->unkC[1], -cmd->unkC[2]); mlMtxApply(*mtx); gSPMatrix((*gfx)++, (*mtx)++, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -932,13 +932,13 @@ void func_80338DCC(Gfx ** gfx, Mtx ** mtx, void *arg2){ f32 sp20[3]; GeoCmdD * cmd = (GeoCmdD *)arg2; if(cmd->unk14){ - sp2C[0] = (f32)cmd->unk8[0] * D_80383734; - sp2C[1] = (f32)cmd->unk8[1] * D_80383734; - sp2C[2] = (f32)cmd->unk8[2] * D_80383734; + sp2C[0] = (f32)cmd->unk8[0] * modelRenderScale; + sp2C[1] = (f32)cmd->unk8[1] * modelRenderScale; + sp2C[2] = (f32)cmd->unk8[2] * modelRenderScale; - sp20[0] = (f32)cmd->unkE[0] * D_80383734; - sp20[1] = (f32)cmd->unkE[1] * D_80383734; - sp20[2] = (f32)cmd->unkE[2] * D_80383734; + sp20[0] = (f32)cmd->unkE[0] * modelRenderScale; + sp20[1] = (f32)cmd->unkE[1] * modelRenderScale; + sp20[2] = (f32)cmd->unkE[2] * modelRenderScale; if(func_8024D374(sp2C, sp20)){ func_80339124(gfx, mtx, (BKGeoList*)((s32)cmd + cmd->unk14)); } @@ -952,10 +952,10 @@ void func_80338EB8(Gfx ** gfx, Mtx ** mtx, void *arg2){ GeoCmdE * cmd = (GeoCmdE *)arg2; if(cmd->unk12 == -1){ - sp34[0] = (f32)cmd->unk8[0] * D_80383734; - sp34[1] = (f32)cmd->unk8[1] * D_80383734; - sp34[2] = (f32)cmd->unk8[2] * D_80383734; - sp30 = (f32)cmd->unkE*D_80383734; + sp34[0] = (f32)cmd->unk8[0] * modelRenderScale; + sp34[1] = (f32)cmd->unk8[1] * modelRenderScale; + sp34[2] = (f32)cmd->unk8[2] * modelRenderScale; + sp30 = (f32)cmd->unkE*modelRenderScale; if(func_8024DB50(sp34, sp30) && cmd->unk10){ func_80339124(gfx, mtx, (BKGeoList*)((s32)cmd + cmd->unk10)); } @@ -965,7 +965,7 @@ void func_80338EB8(Gfx ** gfx, Mtx ** mtx, void *arg2){ sp34[1] = (f32)cmd->unk8[1]; sp34[2] = (f32)cmd->unk8[2]; - sp30 = (f32)cmd->unkE*D_80383734; + sp30 = (f32)cmd->unkE*modelRenderScale; if(D_8038371C){ func_802519C8(&D_80383BF8, func_802EA110(D_8038371C, cmd->unk12)); func_8025235C(sp34, sp34); @@ -1009,7 +1009,7 @@ void func_80339124(Gfx ** gfx, Mtx ** mtx, BKGeoList *geo_list){ }while(1); } -BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 arg3[3], f32 scale, f32*arg5, BKModelBin* model_bin){ +BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 rotation[3], f32 scale, f32*arg5, BKModelBin* model_bin){ f32 camera_focus[3]; f32 camera_focus_distance; f32 padEC; @@ -1253,28 +1253,28 @@ BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 arg3[3], mlMtxIdent(); if(D_80383758.unk18){ - func_80252AF0(D_80383758.unk1C, object_position, arg3, scale, arg5); + func_80252AF0(D_80383758.unk1C, object_position, rotation, scale, arg5); } else{ - func_80252AF0(modelRenderCameraPosition, object_position, arg3, scale, arg5); + func_80252AF0(modelRenderCameraPosition, object_position, rotation, scale, arg5); } if(D_803837B0.unk0){ mlMtxRotate(D_803837B0.unk4[0], D_803837B0.unk4[1], D_803837B0.unk4[2]); } + mlMtxGet(&D_80383BF8); - func_802513B0(&D_80383BF8); mlMtxApply(*mtx); gSPMatrix((*gfx)++, (*mtx)++, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - D_80383734 = scale; - if(arg3){ - D_80383C58[0] = arg3[0]; - D_80383C58[1] = arg3[1]; - D_80383C58[2] = arg3[2]; + modelRenderScale = scale; + if(rotation){ + modelRenderRotation[0] = rotation[0]; + modelRenderRotation[1] = rotation[1]; + modelRenderRotation[2] = rotation[2]; } else{ - D_80383C58[0] = D_80383C58[1] = D_80383C58[2] = 0.0f; + modelRenderRotation[0] = modelRenderRotation[1] = modelRenderRotation[2] = 0.0f; } func_80339124(gfx, mtx, (BKGeoList *)((u8 *)model_bin + model_bin->geo_list_offset_4)); diff --git a/src/core2/playerModel.c b/src/core2/playerModel.c new file mode 100644 index 00000000..97799905 --- /dev/null +++ b/src/core2/playerModel.c @@ -0,0 +1,388 @@ +#include +#include "functions.h" +#include "variables.h" + +#include "core2/playerModel.h" + +void func_80254008(void); +extern void func_80256E24(f32[3], f32, f32, f32, f32, f32); +void assetcache_release(void *); //assetcache_free +extern void ml_vec3f_assign(f32[3], f32, f32, f32); +void func_8033A280(f32); + +extern s32 osCicId; + +/* .data */ +struct5Bs *D_80363780 = NULL; + +/* .bss */ +void *playerModelBin; //playerModelPtr +s16 playerModelId; //playerModel asset_id +u8 playerModelEnvAlpha; +u8 playerModelDirection; +u8 playerModelIsVisible; +f32 playerModelScale; +f32 playerModelPitch; +f32 playerModelRoll; +f32 playerModelYaw; +f32 D_8037C100[3]; +f32 D_8037C110[3]; +f32 playerModelDisplacement[3]; +void (*playerModelPostDrawMethod)(Gfx **gfx, Mtx **mtx, Vtx **vtx); +f32 D_8037C130[2][4]; +struct { + u8 unk0; + f32 unk4[3]; +} D_8037C150; + +//public +void playerModel_set(enum asset_e asset_id); + +//.data +static void _playerModel_updateModelYaw(void){ + switch(playerModelDirection){ + case PLAYER_MODEL_DIR_KAZOOIE: + playerModelYaw = mlNormalizeAngle(yaw_get() + 180.0f); + break; + default: + playerModelYaw = yaw_get(); + break; + case PLAYER_MODEL_DIR_GLOBAL: + break; + } +} + +void playerModel_80291A50(s32 arg0, f32 arg1[3]){ + func_8034A174(D_80363780, arg0, arg1); + if(func_802582EC(arg1)){ + _player_getPosition(arg1); + } +} + +int playerModel_80291AAC(s32 arg0, s32 arga, s32 arg2, s32 arg3){ + return 0; +} + +static void _playerModel_preDraw(int arg0){ + _player_getMarker()->unk14_21 = 1; +} + +void playerModel_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){ + f32 rotation[3]; + s32 env_color[3]; + f32 plyr_pos[3]; //sp44 + f32 sp38[3]; + + if(!playerModelIsVisible) + return; + + _playerModel_updateModelYaw(); + playerModelRoll = roll_get(); + playerModelPitch = pitch_get(); + _player_getPosition(plyr_pos); + plyr_pos[1] += 2.0f; + ml_vec3f_assign(rotation, playerModelPitch, playerModelYaw, playerModelRoll); + func_8029A47C(env_color); + ml_vec3f_copy(sp38, D_8037C100); + + plyr_pos[0] += playerModelDisplacement[0];\ + plyr_pos[1] += playerModelDisplacement[1];\ + plyr_pos[2] += playerModelDisplacement[2]; + + sp38[0] += playerModelDisplacement[0];\ + sp38[1] += playerModelDisplacement[1];\ + sp38[2] += playerModelDisplacement[2]; + + if(playerModelBin){ + func_80289F30(); + func_8029DD6C(); + modelRender_setEnvColor(env_color[0], env_color[1], env_color[2], playerModelEnvAlpha); + func_8033A280(2.0f); + modelRender_preDraw((GenMethod_1)_playerModel_preDraw, 0); + func_8033A450(D_80363780); + modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL); + if(D_8037C150.unk0){ + D_8037C150.unk0 = 0; + modelRender_draw(gfx, mtx, D_8037C150.unk4, rotation, playerModelScale, sp38, playerModelBin); + } + else{ + modelRender_draw(gfx, mtx, plyr_pos, rotation, playerModelScale, sp38, playerModelBin); + } + }//L80291CD4 + + if(playerModelPostDrawMethod){ + playerModelPostDrawMethod(gfx, mtx, vtx); + } +} + +void playerModel_updateModel(void){ + playerModel_set(func_802985F0()); +} + +void playerModel_reset(void){ + f32 plyr_pos[3]; + int i; + for(i = 0; i < 2 ; i++){ + playerModel_80292048(i, 0.0f, 0.0f, 0.0f); + playerModel_80292078(i, 0.0f); + } + playerModelEnvAlpha = 0xFF; + playerModelBin = NULL; + playerModelId = 0; + playerModelPostDrawMethod = NULL; + D_80363780 = func_8034A2C8(); + func_8034A130(D_80363780); + ml_vec3f_clear(D_8037C100); + ml_vec3f_clear(D_8037C110); + ml_vec3f_clear(playerModelDisplacement); + playerModelYaw = playerModelRoll = playerModelPitch = 0.0f; + D_8037C150.unk0 = 0; + playerModel_setVisible(TRUE); + playerModel_setScale(1.0f); + playerModelDirection = 0; + playerModel_setDirection(PLAYER_MODEL_DIR_BANJO); + if(!func_8028ADB4()) + playerModel_updateModel(); + player_getPosition(plyr_pos); + func_802C3F04((GenMethod_4)func_802C4140, + ACTOR_17_PLAYER_SHADOW, + reinterpret_cast(s32, plyr_pos[0]), + reinterpret_cast(s32, plyr_pos[1]), + reinterpret_cast(s32, plyr_pos[2]) + ); +} + +void playerModel_free(void){ + assetcache_release(playerModelBin); + playerModelBin = NULL; + playerModelId = 0; + func_8034A2A8(D_80363780); + D_80363780 = NULL; +} + +void playerModel_update(void){ + f32 sp1C; + f32 temp_f0; + + sp1C = D_8037C110[1] - D_8037C100[1]; + temp_f0 = mlAbsF(sp1C); + if( temp_f0 < 0.01){ + D_8037C100[1] = D_8037C110[1]; + } + else{ + if(5.0f < temp_f0){ + temp_f0 = 1.0f; + } + if(0.0f < sp1C){ + D_8037C100[1] += temp_f0; + } + else{ + D_8037C100[1] -= temp_f0; + } + {//L80291F7C + _player_getMarker()->unk14_21 = 0; + } + } +} + +BKModelBin *playerModel_getModelBin(void){ + return playerModelBin; +} + +enum asset_e playerModel_getModelId(void){ + return playerModelId; +} + +void playerModel_setEnvAlpha(s32 alpha){ + playerModelEnvAlpha = alpha; +} + +void playerModel_set(enum asset_e asset_id){ + if(asset_id != playerModelId){ + if(playerModelBin){ + func_80254008(); + assetcache_release(playerModelBin); + playerModelBin = NULL; + } + playerModelId = asset_id; + if(playerModelId) + playerModelBin = assetcache_get(playerModelId); + } +} + +void playerModel_80292048(s32 arg0, f32 arg1, f32 arg2, f32 arg3){ + D_8037C130[arg0][2] = arg1; + D_8037C130[arg0][3] = arg2; + D_8037C130[arg0][1] = arg3; +} + +void playerModel_80292078(s32 arg0, f32 arg1){ + D_8037C130[arg0][0] = arg1; +} + +void playerModel_setDirection(enum player_model_direction_e direction){ + if(direction != playerModelDirection){ + if(direction == PLAYER_MODEL_DIR_KAZOOIE || PLAYER_MODEL_DIR_KAZOOIE == playerModelDirection){ + //flip model + yaw_setIdeal(mlNormalizeAngle(yaw_get() + 180.0f)); + yaw_applyIdeal(); + } + } + playerModelDirection = direction; +} + +void playerModel_setScale(f32 scale){ + if(osCicId + -6103){ + scale = scale*0.25; + } + playerModelScale = scale; +} + +void playerModel_setYaw(f32 angleDegrees){ + playerModelYaw = mlNormalizeAngle(angleDegrees); +} + +void playerModel_80292158(f32 arg0){ + D_8037C100[1] = arg0; + playerModel_8029217C(arg0); +} + +void playerModel_8029217C(f32 arg0){ + D_8037C110[1] = arg0; +} + +void playerModel_setPostDraw(void (*draw_func)(Gfx **gfx, Mtx **mtx, Vtx **vtx)){ + playerModelPostDrawMethod = draw_func; +} + +void playerModel_setDisplacement(f32 arg0[3]){ + ml_vec3f_copy(playerModelDisplacement, arg0); +} + +void playerModel_setYDisplacement(f32 arg0){ + playerModelDisplacement[1] = arg0; +} + +void playerModel_setVisible(s32 arg0){ + playerModelIsVisible = arg0; +} + +void playerModel_802921D4(f32 arg0[3]){ + if(func_8028EE84() == BSWATERGROUP_0_NONE){ + D_8037C150.unk0 = 1; + D_8037C150.unk4[0] = arg0[0]; + D_8037C150.unk4[1] = arg0[1]; + D_8037C150.unk4[2] = arg0[2]; + } +} + +f32 playerModel_getYaw(void){ + return playerModelYaw; +} + +f32 playerModel_80292230(void){ + return D_8037C100[1]; +} + +void playerModel_8029223C(f32 arg0[3]){ + playerModel_80291A50(8, arg0); +} + +void playerModel_80292260(f32 arg0[3]){ + playerModel_80291A50(7, arg0); +} + +void playerModel_80292284(f32 arg0[3], s32 arg1){ + f32 sp44[3]; + f32 sp38[3]; + + if(_player_getMarker()->unk14_21 && playerModelIsVisible){ + switch(playerModel_getModelId()){ + case 0x34D: + case 0x34E: + case ASSET_34F_MODEL_BANJO_TERMITE: //802922E8 + case ASSET_359_MODEL_BANJO_WALRUS: //802922E8 + case ASSET_362_MODEL_BANJO_BEE: + case ASSET_36F_MODEL_BANJO_PUMPKIN: + case ASSET_374_MODEL_BANJO_CROC: + func_8034A174(D_80363780, arg1 + 1, arg0); + if(func_802582EC(arg0)){ + _player_getPosition(arg0); + } + + arg0[1] += D_8037C130[arg1][0]; + if(D_8037C130[arg1][1] != 0.0f){ + func_80256E24(sp44, D_8037C130[arg1][2], mlNormalizeAngle(yaw_get() + D_8037C130[arg1][3]), 0.0f, 0.0f, D_8037C130[arg1][1]); + arg0[0] += sp44[0]; + arg0[1] += sp44[1]; + arg0[2] += sp44[2]; + } + func_802976C0(sp38); + arg0[0] = arg0[0] + sp38[0]; + arg0[1] = arg0[1] + sp38[1]; + arg0[2] = arg0[2] + sp38[2]; + break; + default: ////80292400 + _player_getPosition(arg0); + break; + } + } + else{//L80292410 + _player_getPosition(arg0); + if(arg1){ + arg0[1] += 33.0f; + } + else{ + arg0[1] += 75.0f; + } + } +} + +void playerModel_getPosition(f32* dst){ + f32 tmp1[3]; + f32 tmp2[3]; + playerModel_80291A50(5,tmp1); + playerModel_80291A50(6,tmp2); + ml_vec3f_add(dst, tmp1, tmp2); + ml_vec3f_scale(dst, 0.5); +} + +void playerModel_802924B8(f32 arg0[3]){ + playerModel_80291A50(0xA, arg0); +} + +enum player_model_direction_e playerModel_getDirection(void){ + return playerModelDirection; +} + +void playerModel_802924E8(f32 arg0[3]){ + switch(player_getTransformation()){ + case TRANSFORM_5_CROC: + playerModel_80291A50(5, arg0); + break; + case TRANSFORM_4_WALRUS: //L80292520 + playerModel_80291A50(0xB, arg0); + break; + default: //L80292530 + playerModel_80291A50(0x9, arg0); + break; + } +} + +s32 playerModel_isVisible(void){ + return playerModelIsVisible; +} + +void playerModel_80292554(f32 arg0[3]){ + playerModel_80291A50(0x9, arg0); +} + +void playerModel_80292578(f32 arg0[3]){ + playerModel_80291A50(0xA, arg0); +} + +void playerModel_defrag(void){ + if(D_80363780){ + D_80363780 = func_8034A348(D_80363780); + } +} diff --git a/src/lair/code_5ED0.c b/src/lair/code_5ED0.c index dd921263..ebe488e0 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 *func_80309744(s32); +extern void *levelModel_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 = func_80309744(0); + D_8037DCB8->unk0 = levelModel_getModel(0); D_8037DCB8->unk11 = 0; if (func_803203FC(2) && !func_803203FC(4)) diff --git a/symbol_addrs.us.v10.txt b/symbol_addrs.us.v10.txt index 5dd835d4..08e2677d 100644 --- a/symbol_addrs.us.v10.txt +++ b/symbol_addrs.us.v10.txt @@ -599,8 +599,8 @@ player_getVelocity = 0x8028EF68; player_is_in_jiggy_jig = 0x8028F108; player_is_present = 0x8028F1D4; func_8028F45C = 0x8028F45C; -func_80291A60 = 0x80291A60; -banjo_getPosition = 0x80292468; +playerModel_80291A50 = 0x80291A60; +playerModel_getPosition = 0x80292468; func_802947CC = 0x802947CC; get_slope_timer = 0x802949D4; should_beak_barge = 0x80294F00; diff --git a/undefined_syms.libultra.txt b/undefined_syms.libultra.txt index dbbfcf74..78fa6052 100644 --- a/undefined_syms.libultra.txt +++ b/undefined_syms.libultra.txt @@ -1,6 +1,7 @@ osTvType = 0x80000300; osRomBase = 0x80000308; osResetType = 0x8000030C; +osCicId = 0x80000310; osAppNMIBuffer = 0x8000031C; D_8023DA20 = 0x8023DA20; gOverlayTable = 0x803FFE10;