diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index ace5963a..880622a1 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -17,7 +17,7 @@ core2 - 75.5725% - 75.5725% + 75.7777% + 75.7777% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 2577081f..9544e88b 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 80.7765% - 80.7765% + 80.8942% + 80.8942% \ No newline at end of file diff --git a/src/core2/code_BEF20.c b/src/core2/code_BEF20.c index df84d79b..4ea68f75 100644 --- a/src/core2/code_BEF20.c +++ b/src/core2/code_BEF20.c @@ -14,8 +14,10 @@ extern s32 D_80385FE0; extern s32 D_80385FE4; extern s32 D_80385FE8; extern f32 D_80385FEC; -extern u8 D_80385FF0[]; +extern u8 D_80385FF0[]; extern f32 D_80386000[]; +extern s32 D_80386038; +extern s32 D_80386068; void func_80345EB0(enum item_e item){ if(func_802FAFE8(item)){ @@ -386,7 +388,6 @@ s32 notescore_getLevelScore(enum level_e lvl_id){ #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034722C.s") extern u8 D_80386060[]; //saved item array -extern s32 D_80385F68; //itemscore_getSavedItemArray void func_80347630(s32 *size, u8 **buffer){ @@ -405,56 +406,57 @@ void func_80347630(s32 *size, u8 **buffer){ #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034789C.s") -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347958.s") +void func_80347958(void){ + func_8034789C(); + D_80385F30[ITEM_14_HEALTH] = D_80385F30[ITEM_15_HEALTH_TOTAL]; +} void func_80347984(void){} void func_8034798C(void){ - D_80385F68 = jiggyscore_leveltotal(level_get()); + D_80385F30[ITEM_E_JIGGY] = jiggyscore_leveltotal(level_get()); func_802FA5D0(); } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803479C0.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A14.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A4C.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A70.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A7C.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347AA8.s") - -/// =============== BREAK????? -extern void func_80329904(ActorMarker *, s32, f32 *); - -void func_80347B10(Struct81s *arg0){ - Actor *actor; - actor = func_802C937C(0x10, arg0->position); - actor->unk54 = 3.0f; - func_803333DC(arg0, actor); +//restore item counts from savestate +void func_803479C0(u8 *arg0){ + D_80385F30[ITEM_1C_MUMBO_TOKEN] = D_80385F30[ITEM_25_MUMBO_TOKEN_TOTAL] = arg0[0]; + D_80385F30[ITEM_D_EGGS] = arg0[1]; + D_80385F30[ITEM_F_RED_FEATHER] = arg0[2]; + D_80385F30[ITEM_10_GOLD_FEATHER] = arg0[3]; + D_80385F30[ITEM_26_JIGGY_TOTAL] = D_80385F30[ITEM_2B_UNKNOWN] = arg0[4]; + func_802FA5D0(); } -void func_80347B54(Struct81s *arg0){ - func_802C3C88((GenMethod_1)func_80347B10, reinterpret_cast(s32, arg0)); -} -void func_80347B80(Struct81s *arg0) { - Actor *sp1C; - Actor *temp_v0; - - sp1C = marker_getActor(arg0->marker); - if (sp1C->unk54 > 0.0) { - if (randf() < ((sp1C->unk54 / 3.0) * 2)) { - func_8033E73C(arg0->marker, 5, func_80329904); - func_8033E3F0(0xF, ((ActorMarker *)arg0->marker)->unk14_21); - // func_8033E3F0(0xF, arg0->marker->unk14_21); - } - sp1C->unk54 -= time_getDelta(); +void func_80347A14(s32 arg0){ + if(arg0){ + D_80386038--; + } + else{ + D_80386038++; } } -void func_80347C5C(Struct81s *arg0, Gfx **arg1, Mtx **arg2, Vtx **arg3){} +bool func_80347A4C(void){ + return (D_80386038 != 0) ? FALSE : TRUE; +} -void func_80347C70(Struct81s *arg0){} \ No newline at end of file +void func_80347A70(void){ + D_80386038 = 0; +} + +void func_80347A7C(void){ + func_80320748(); + D_80386068 = item_getCount(ITEM_16_LIFE); +} + +void func_80347AA8(void) { + func_80320798(); + func_803204E4(0x1F, FALSE); + func_803204E4(0x20, FALSE); + func_803204E4(0xC1, FALSE); + func_803204E4(0xC0, FALSE); + item_set(ITEM_16_LIFE, D_80386068); + func_802FA5D0(); +} diff --git a/src/core2/code_C0B80.c b/src/core2/code_C0B80.c new file mode 100644 index 00000000..0af74125 --- /dev/null +++ b/src/core2/code_C0B80.c @@ -0,0 +1,35 @@ +#include +#include "functions.h" +#include "variables.h" + +extern void func_80329904(ActorMarker *, s32, f32 *); + +void func_80347B10(Struct81s *arg0){ + Actor *actor; + actor = func_802C937C(0x10, arg0->position); + actor->unk54 = 3.0f; + func_803333DC(arg0, actor); +} + +void func_80347B54(Struct81s *arg0){ + func_802C3C88((GenMethod_1)func_80347B10, reinterpret_cast(s32, arg0)); +} + +void func_80347B80(Struct81s *arg0) { + Actor *sp1C; + Actor *temp_v0; + + sp1C = marker_getActor(arg0->marker); + if (sp1C->unk54 > 0.0) { + if (randf() < ((sp1C->unk54 / 3.0) * 2)) { + func_8033E73C(arg0->marker, 5, func_80329904); + func_8033E3F0(0xF, ((ActorMarker *)arg0->marker)->unk14_21); + // func_8033E3F0(0xF, arg0->marker->unk14_21); + } + sp1C->unk54 -= time_getDelta(); + } +} + +void func_80347C5C(Struct81s *arg0, Gfx **arg1, Mtx **arg2, Vtx **arg3){} + +void func_80347C70(Struct81s *arg0){} diff --git a/src/core2/code_CB050.c b/src/core2/code_CB050.c index 33c61649..44297048 100644 --- a/src/core2/code_CB050.c +++ b/src/core2/code_CB050.c @@ -2,7 +2,130 @@ #include "functions.h" #include "variables.h" +extern f32 func_80258780(f32[3], f32[3]); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_CB050/func_80351FE0.s") +typedef struct{ + f32 unk0; + f32 unk4[3]; + f32 unk10[3]; + f32 unk1C[3]; + f32 unk28[3]; + f32 unk34[3]; + f32 unk40[3]; + f32 unk4C[3]; + f32 unk58[3]; + f32 unk64; + f32 unk68; + s32 unk6C; +}Struct_core2_CB050_0; -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_CB050/func_80352114.s") +/* .code */ +void func_80351FE0(Struct_core2_CB050_0 *arg0, Struct68s *arg1) { + f32 sp3C[3]; + f32 sp30[3]; + f32 sp24[3]; + + arg0->unk0 = randf2(80.0f, 100.0f); + arg0->unk4[0] = arg0->unk4[1] = arg0->unk4[2] = 0.0f; + arg0->unk10[0] = arg0->unk10[1] = arg0->unk10[2] = 0.0f; + arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f; + arg0->unk28[0] = arg0->unk28[1] = arg0->unk28[2] = 0.0f; + arg0->unk34[0] = arg0->unk34[1] = arg0->unk34[2] = 0.0f; + arg0->unk40[0] = arg0->unk40[1] = arg0->unk40[2] = 0.0f; + func_8035179C(arg1, arg0->unk4C); + func_80351814(arg1, arg0->unk58); + arg0->unk64 = 0.0f; + arg0->unk6C = 0; + if (map_get() == MAP_22_CC_INSIDE_CLANKER) { + sp3C[0] = arg0->unk4C[0]; + sp3C[1] = arg0->unk4C[1] + 1000.0f; + sp3C[2] = arg0->unk4C[2]; + + sp30[0] = arg0->unk4C[0]; + sp30[1] = arg0->unk4C[1] - 200.0f; + sp30[2] = arg0->unk4C[2]; + + if (func_80309B48(sp3C, sp30, sp24, 0xF800FF0F)) { + arg0->unk68 = arg0->unk4C[1] - sp30[1]; + } + } +} + +void func_80352114(Struct_core2_CB050_0 *arg0, s32 arg1, f32 arg2) { + f32 sp6C[3]; + f32 player_position[3]; + s32 pad; + f32 sp58; + f32 sp54; + f32 sp50; + f32 temp_f0; + f32 sp40[3]; + f32 sp34[3]; + f32 sp28[3]; + + arg0->unk64 = (f32) (arg0->unk64 + arg2); + player_getPosition(player_position); + if( (func_80294660() == 0x100) + && func_8028F20C() + && (func_80258780(player_position, arg0->unk4C) < 50000.0f) + ) { + sp58 = arg0->unk4C[0] - player_position[0]; + sp54 = arg0->unk4C[2] - player_position[2]; + sp50 = cosf((arg0->unk58[1] * M_PI) / 180.0); + temp_f0 = sinf((arg0->unk58[1] * M_PI) / 180.0); + arg0->unk1C[0] = -((sp58 * temp_f0) + (sp54 * sp50)) / 4; + arg0->unk1C[2] = ((sp58 * sp50) - (sp54 * temp_f0)) / 4; + if (arg0->unk6C) { + if (arg0->unk34[1] < -20.0f) { + arg0->unk40[1] = -7.0f; + } + } else { + arg0->unk40[1] = -32.0f; + } + arg0->unk6C = TRUE; + + } else { + arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f; + if (!arg0->unk6C) { + if (arg0->unk34[1] > 5.0f) { + arg0->unk40[1] = 0.0f; + } + } else { + arg0->unk40[1] = 10.0f; + } + arg0->unk6C = FALSE; + } + arg0->unk28[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 10.0f; + arg0->unk4[0] = cosf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 4.5; + arg0->unk4[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * RARE_PI) * 2; + if (map_get() == MAP_22_CC_INSIDE_CLANKER) { + sp40[0] = arg0->unk4C[0]; + sp40[1] = arg0->unk4C[1] + 1000.0f; + sp40[2] = arg0->unk4C[2]; + + sp34[0] = arg0->unk4C[0]; + sp34[1] = arg0->unk4C[1] - 200.0f; + sp34[2] = arg0->unk4C[2]; + if (func_80309B48(sp40, sp34, sp28, 0xF800FF0F)) { + arg0->unk4C[1] = sp34[1] + arg0->unk68; + } + } + sp6C[0] = arg0->unk4C[0] + arg0->unk34[0]; + sp6C[1] = arg0->unk4C[1] + arg0->unk34[1]; + sp6C[2] = arg0->unk4C[2] + arg0->unk34[2]; + sp6C[0] = sp6C[0] + arg0->unk28[0]; + sp6C[1] = sp6C[1] + arg0->unk28[1]; + sp6C[2] = sp6C[2] + arg0->unk28[2]; + func_80351B28(arg1, sp6C); + + arg0->unk10[2] += (arg0->unk1C[2] - arg0->unk10[2]) * 0.075; + arg0->unk10[0] += (arg0->unk1C[0] - arg0->unk10[0]) * 0.075; + arg0->unk34[1] += (arg0->unk40[1] - arg0->unk34[1]) * 0.2; + sp6C[0] = arg0->unk58[0] + arg0->unk4[0]; + sp6C[1] = arg0->unk58[1] + arg0->unk4[1]; + sp6C[2] = arg0->unk58[2] + arg0->unk4[2]; + sp6C[0] = sp6C[0] + arg0->unk10[0]; + sp6C[1] = sp6C[1] + arg0->unk10[1]; + sp6C[2] = sp6C[2] + arg0->unk10[2]; + func_80351C2C(arg1, sp6C); +} diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index 77623b3a..1b39d0bf 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -341,6 +341,7 @@ segments: - [0xBDCC0, c, code_BDCC0] #DONE - [0xBE2C0, c, code_BE2C0] - [0xBEF20, c, code_BEF20] + - [0xC0B80, c, code_C0B80] #DONE - [0xC0CF0, c, code_C0CF0] #DONE - [0xC0E60, c, code_C0E60] - [0xC2C20, c, code_C2C20] #DONE @@ -367,7 +368,7 @@ segments: - [0xC97F0, c, code_C97F0] - [0xC9E70, c, code_C9E70] #DONE - [0xC9F00, c, code_C9F00] - - [0xCB050, c, code_CB050] + - [0xCB050, c, code_CB050] #DONE - [0xCB610, c, code_CB610] #DONE - [0xCB8A0, c, code_CB8A0] #DONE - [0xCBBF0, c, code_CBBF0] #DONE @@ -774,6 +775,8 @@ segments: - [0xF2390, bin, data_F2390] # .rodata, code_C89C0] - [0xF23B0, bin, data_C97F0] # .rodata, code_C97F0] - [0xF23C0, bin, data_F23C0] + - [0xF23F0, .rodata, code_CB050] + - [0xF2460, bin, data_F2460] - [0xF2480, .rodata, code_CBD10] - [0xF24A0, bin, data_F24A0] - [0xF24C0, .rodata, code_CD0A0] diff --git a/symbol_addrs.core2.us.v10.txt b/symbol_addrs.core2.us.v10.txt index 92bc1f6c..9a91a6d4 100644 --- a/symbol_addrs.core2.us.v10.txt +++ b/symbol_addrs.core2.us.v10.txt @@ -502,6 +502,7 @@ D_80378E38 = 0x80378E38; D_803791A8 = 0x803791A8; D_80379208 = 0x80379208; D_80379210 = 0x80379210; +D_803793E0 = 0x803793E0; D_80379400 = 0x80379400; D_80379458 = 0x80379458; D_80379460 = 0x80379460;