From 27dbab7b7f6756b543696635b0e0d418c2040beb Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Wed, 3 Aug 2022 21:52:54 -0500 Subject: [PATCH] core2/code_94780.c done --- progress/progress_core2.svg | 6 +- progress/progress_total.svg | 6 +- src/core2/code_94620.c | 1961 +------------------------------- src/core2/code_94780.c | 69 ++ src/core2/code_94A20.c | 1924 +++++++++++++++++++++++++++++++ src/core2/levelspecificflags.c | 2 +- subyaml/core2.us.v10.yaml | 7 +- 7 files changed, 2030 insertions(+), 1945 deletions(-) create mode 100644 src/core2/code_94780.c create mode 100644 src/core2/code_94A20.c diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index 73341903..72c26a96 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 77.3371% - 77.3371% + 77.4315% + 77.4315% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index a0b09d6d..e9b9f689 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 81.7889% - 81.7889% + 81.8431% + 81.8431% \ No newline at end of file diff --git a/src/core2/code_94620.c b/src/core2/code_94620.c index c61e1dc7..d9e30d4a 100644 --- a/src/core2/code_94620.c +++ b/src/core2/code_94620.c @@ -3,6 +3,7 @@ #include "variables.h" #include "structs.h" +/* .bss */ s32 D_80383150; s32 pad_80383154; struct { @@ -38,1945 +39,33 @@ s32 func_8031B638(void) { return D_80383150; } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B644.s") +void func_8031B644(void){ + D_80383158.unk4 = NULL; + D_80383158.unk8 = -1; +} void func_8031B65C(void){} void func_8031B664(void){} -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B66C.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B6D8.s") - -void func_8031B710(void){} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B718.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B760.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B790.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B908.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031B990.s") - - -/***BREAK***/ - -//f32 mlAbsF(f32, f32); - -void *func_80309B48(f32 *, f32 *, f32 *, u32); -void *func_80309B98(f32 *, f32 *, f32 *, u32); - - -void func_8031C608(struct0 *this); -void *func_8031BABC(f32 *, f32, f32, u32, void*); -void func_8031BD98(struct0 *, f32, s32, s32, f32 *, void *, s32); - -void func_8031BE98(struct0*, f32, s32); -extern f32 D_8036DDC0[]; -extern f32 D_80378D30; -extern f32 D_80378D34; - - -void func_8031B9B0(struct0 *this, s32 arg1){ - if(arg1 == 1) - this->unk5D = 5; - if(arg1 == 4) - this->unk5C = 1; - this->unk5E = arg1; -} - -struct0 *func_8031B9D8(void){ - struct0 *this; - - this = (struct0 *)malloc(0x60); - ml_vec3f_clear(this->unk1C); - ml_vec3f_clear(this->unk28); - this->normX = 0.0f; - this->normZ = 0.0f; - this->normY = 1.0f; - this->posX = D_80378D30; - this->unk4C = 0; - this->unk50 = 0; - this->posY = D_80378D34; - this->unk58 = 0; - this->unk5A = 0; - this->unk59 = 0; - this->unk5B = 0; - this->unk54 = 0; - this->model = NULL; - func_8031C608(this); - this->unk5E = 0; - func_8031B9B0(this, 1); - return this; -} - -void func_8031BA7C(struct0 *this){ - func_8031B9B0(this, 1); -} - -void func_8031BA9C(struct0 *this){ - free(this); -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031BABC.s") -// void *func_8031BABC(f32 *arg0, f32 arg1, f32 arg2, u32 arg3, void *arg4) { -// //f32 sp38; -// f32 sp34[3]; -// //f32 sp2C; -// f32 sp28[3]; -// void *sp24; -// void *temp_v1; -// void *phi_v0; - -// ml_vec3f_copy(&sp34, arg0); -// sp34[1] = sp34[1] + arg1; -// ml_vec3f_copy(&sp28, arg0); -// sp28[1] = sp28[1] + arg2; -// if (arg3 == 0xF800FF0F) { -// phi_v0 = func_80309B48(&sp34, &sp28, arg4, arg3); -// } else { -// phi_v0 = func_80320B98(&sp34, &sp28, arg4, arg3); -// } -// temp_v1 = phi_v0; -// if (phi_v0 != 0) { -// arg4->unk10 = (s32) phi_v0->unk8; -// arg4->unk14 = (s16) phi_v0->unk6; -// } else { -// arg4->unk10 = 0; -// arg4->unk14 = (u16)0; -// } -// arg4->unkC = sp28[1]; -// sp24 = temp_v1; -// arg4->unk18 = func_803209EC(); -// return temp_v1; -// } - -s32 *func_8031BBA0(f32 *this, f32 arg1, f32 arg2, u32 arg3, void *arg4) { - s32* phi_v1; - - if (mlAbsF(arg2 - arg1) > 500.0f) { - if (arg1 < arg2) { - phi_v1 = func_8031BABC(this, arg1, arg1 + 500.0f, arg3, arg4); - if (phi_v1 == NULL) { - phi_v1 = func_8031BABC(this, arg1 + 500.0f - 1.0f, arg2, arg3, arg4); - } - } else { - phi_v1 = func_8031BABC(this, arg1, arg1 - 500.0f, arg3, arg4); - if (phi_v1 == NULL) { - phi_v1 = func_8031BABC(this, arg1 - 500.0f + 1.0f, arg2, arg3, arg4); - } - } - } else { - phi_v1 = func_8031BABC(this, arg1, arg2, arg3, arg4); - } - return phi_v1; -} - -s32 func_8031BCF4(struct0 *this) { - f32 temp_f0; - f32 temp_f2; - - if (this->unk59 == 0) { - return 2; - } - if ((this->unk59 != 0) && (this->unk58 == 0)) { - return 4; - } - temp_f0 = this->posY; - if (temp_f0 < this->unk1C[1]) { - return 2; - } - temp_f2 = temp_f0 - this->posX; - if (temp_f2 < -20.0f) { - return 2; - } - if (temp_f2 > 100.0f) { - return 4; - } - return 3; -} - -void func_8031BD98(struct0 *this, f32 arg1, s32 arg2, s32 arg3, f32 *normPtr, void *model, s32 arg6){ - if(arg6){ - func_8024587C(&this->unk4, arg6); - } - this->unk58 = 1; - this->unk4C = arg2; - this->unk50 = arg3; - this->posX = arg1; - this->model = model; - ml_vec3f_copy(&this->normX, normPtr); -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031BE0C.s") -// void func_8031BE0C(struct0 *this, s32 *arg1, s32 arg2) { -// s32 a = arg1[4]; -// s32 b = arg1[5]; -// func_8031BD98(this, *(f32*)&arg1[3], a, b, &this->model, arg1[6], arg2); -// // func_8031BD98(this, *(f32*)&arg1[3], arg1[4], arg1[5], this, *(s32*)&this->unk10[4], arg2); -// } - - -void func_8031BE58(struct0 *this){ - func_8031BD98(this, -9000.0f, 0, 0, D_8036DDC0, 0, 0); -} - -void func_8031BE98(struct0 *this, f32 arg1, s32 arg2){ - if(arg2) - func_8024587C(&this->unk10, arg2); - this->unk59 = 1; - this->posY = arg1; -} - -void func_8031BEE0(struct0 *this){ - func_8031BE98(this, -10000.0, 0); -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031BF08.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C1A4.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C29C.s") - -void func_8031C444(struct0 * this){} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C44C.s") - -u8 func_8031C58C(struct0 *this){ - return this->unk58; -} - -u8 func_8031C594(struct0 *this){ - return this->unk59; -} - -s32 func_8031C59C(struct0 *this){ - return this->unk4C; -} - -s32 func_8031C5A4(struct0 *this){ - return this->unk50; -} - -void func_8031C5AC(struct0 *this, f32 *dst) -{ ml_vec3f_copy(dst, &this->normX); -} - -f32 func_8031C5D4(struct0 *this){ - return this->posX; -} - -BKModelBin *func_8031C5DC(struct0 *this){ - return this->model; -} - -f32 func_8031C5E4(struct0 *this){ - return this->posY; -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C5EC.s") - -Struct60s *func_8031C5F4(struct0* this){ - return &this->unk4; -} - -void func_8031C5FC(struct0* this, f32 arg1){ - this->posZ = arg1; -} - -void func_8031C608(struct0 *this){ - this->posZ = 56.0f; -} - -void func_8031C618(struct0 *this, f32 *arg1){ - ml_vec3f_copy(this->unk1C, arg1); -} - -void func_8031C638(struct0 *this, s32 arg1){ - this->unk54 = arg1; -} - -/**** BREAK ***/ - -void mapSpecificFlags_set(s32, s32); - -u32 func_8031C688(void); -u32 func_8031C6E4(void); -u32 func_8031C640(void); -u32 func_8031C7C8(void); - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C640.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C688.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C6E4.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031C7C8.s") - -//checks is a cutscene can be inturrupted and performs take me there -void func_8031C7EC(s32 cs_map, s32 arg1, s32 return_map, s32 return_exit, u32 (* condFunc)(void)){ - if(map_get() != cs_map) - return; - - if((condFunc && condFunc()) || mapSpecificFlags_get(arg1)){ - mapSpecificFlags_set(arg1, 0); - func_802E4078(return_map, (return_exit == -1)? 0: return_exit, 1); - } -} - -//check cutscene interrupts -s32 func_8031C880(void){ - func_8031C7EC(MAP_86_CS_SPIRAL_MOUNTAIN_4, 0, MAP_89_CS_INTRO_BANJOS_HOUSE_2, -1, NULL); - func_8031C7EC(MAP_7D_CS_SPIRAL_MOUNTAIN_1, 0, MAP_7C_CS_INTRO_BANJOS_HOUSE_1, -1, NULL); - func_8031C7EC(MAP_7C_CS_INTRO_BANJOS_HOUSE_1, 0, MAP_86_CS_SPIRAL_MOUNTAIN_4, -1, NULL); - func_8031C7EC(MAP_89_CS_INTRO_BANJOS_HOUSE_2, 0, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, NULL); - func_8031C7EC(MAP_85_CS_SPIRAL_MOUNTAIN_3, 0, MAP_7B_CS_INTRO_GL_DINGPOT_1, -1, NULL); - func_8031C7EC(MAP_7B_CS_INTRO_GL_DINGPOT_1, 1, MAP_81_CS_INTRO_GL_DINGPOT_2, -1, NULL); - func_8031C7EC(MAP_81_CS_INTRO_GL_DINGPOT_2, 0, MAP_7D_CS_SPIRAL_MOUNTAIN_1, -1, NULL); - func_8031C7EC(MAP_82_CS_ENTERING_GL_MACHINE_ROOM, 0, MAP_69_GL_MM_LOBBY, 0x12, func_8031C688); - func_8031C7EC(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, MAP_1F_CS_START_RAREWARE, -1, func_8031C6E4); - func_8031C7EC(MAP_87_CS_SPIRAL_MOUNTAIN_5, 0, MAP_88_CS_SPIRAL_MOUNTAIN_6, -1, NULL); - func_8031C7EC(MAP_94_CS_INTRO_SPIRAL_7, 0, MAP_8E_GL_FURNACE_FUN, 4, NULL); - func_8031C7EC(MAP_88_CS_SPIRAL_MOUNTAIN_6, 1, MAP_96_CS_END_BEACH_1, -1, NULL); - func_8031C7EC(MAP_98_CS_END_SPIRAL_MOUNTAIN_1, 0, MAP_1F_CS_START_RAREWARE, -1, NULL); - func_8031C7EC(MAP_99_CS_END_SPIRAL_MOUNTAIN_2, 0, MAP_1F_CS_START_RAREWARE, -1, NULL); - func_8031C7EC(MAP_20_CS_END_NOT_100, 0, MAP_98_CS_END_SPIRAL_MOUNTAIN_1, -1, NULL); - func_8031C7EC(MAP_95_CS_END_ALL_100, 0, MAP_99_CS_END_SPIRAL_MOUNTAIN_2, -1, NULL); - func_8031C7EC(MAP_97_CS_END_BEACH_2, 0, MAP_99_CS_END_SPIRAL_MOUNTAIN_2, -1, func_8031C7C8); - func_8031C7EC(MAP_85_CS_SPIRAL_MOUNTAIN_3, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_7B_CS_INTRO_GL_DINGPOT_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_81_CS_INTRO_GL_DINGPOT_2, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_7D_CS_SPIRAL_MOUNTAIN_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_7C_CS_INTRO_BANJOS_HOUSE_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_86_CS_SPIRAL_MOUNTAIN_4, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - func_8031C7EC(MAP_89_CS_INTRO_BANJOS_HOUSE_2, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); - if(map_get() == MAP_95_CS_END_ALL_100 && mapSpecificFlags_get(1)){ - func_8034B9E4(); - mapSpecificFlags_set(1, 0); - } - return 0; -} - -// Struct pointer returned by func_80304ED0 -struct unkfunc_80304ED0 { - s16 unk0[3]; - u16 unk6; - u16 unk8; - u16 unkA; - u32 unkC; -}; - -s32 func_8031FF1C(s32); -void func_8031FFAC(void); -void func_80320004(s32 index, s32 set); -s32 func_803200A4(u8 *array, s32 index); -s32 func_803200E4(u8 *array, s32 offset, s32 numBits); -void func_8032015C(u8 *array, s32 index, s32 set); -void func_803201C8(u8 *array, s32 startIndex, s32 set, s32 length); -void func_8032048C(void); -void func_803204E4(s32 arg0, s32 arg1); -s32 func_8031FF44(s32 offset, s32 numBits); -void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2); -void ml_vec3h_to_vec3f(f32 *, s32); -void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *); -struct unkfunc_80304ED0 *func_80304ED0(void*, f32 *); -void func_8031CD44(s32, s32, f32, f32, s32); -void func_80256E24(f32 *, f32, f32, f32, f32, f32); - -extern u8 D_80383190; -extern u32 D_8036DDD4; - -// probably rodata -extern f32 D_80378D40; -extern f32 D_80378D44; - -void func_8031CB50(enum map_e map_id, s32 arg1, s32 arg2) { - s32 sp1C; - - if ((D_80383190 == 0) && (getGameMode() != 8) && (getGameMode() != 7)) { - sp1C = func_803226E8(map_get()); - if ((func_803226E8(map_id) != sp1C) && (func_80322914() == 0)) { - func_8025A388(0, 0x4E2); - func_8025AB00(); - func_8024BD08(0); - } - if (func_802E4A08() != 0) { - func_802E40D0(map_id, arg1); - func_802E40E8(1); - func_802E40C4(0xB); - } else { - func_802E4078(map_id, arg1, 1); - } - func_80335110(arg2); - } -} - -void func_8031CC40(enum map_e map_id, s32 arg1) { - func_8031CB50(map_id, arg1, 0); -} - -void func_8031CC60(s32 arg0) { - func_8031CB50(arg0 >> 8, arg0 & 0xFF, 1); -} - -void func_8031CC8C(s32 arg0, s32 arg1) { - f32 vec[3]; - f32 unused[3]; - - if ((D_80383190 == 0) && (getGameMode() != 8)) { - if (getGameMode() != 7) { - if (arg0 != 0) { - ml_vec3h_to_vec3f(vec, arg0); - func_8031CE70(vec, arg1 >> 8, arg1 & 0xFF); - } else { - func_8031CE70(NULL, arg1 >> 8, arg1 & 0xFF); - } - } - } -} - -void func_8031CD20(s32 arg0, s32 arg1, s32 arg2) { - func_8031CC8C(arg0, (arg1 << 8) + arg2); -} - -void func_8031CD44(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) { - f32 sp3C[3]; - f32 sp30[3]; - f32 sp24[3]; - - player_getPosition((f32 *) &sp3C); - func_80256E24(sp24, 0.0f, arg3, 0.0f, 0.0f, ml_map_f((f32) arg4, 0.0f, 200.0f, 10.0f, 800.0f)); - sp24[0] = sp3C[0] + sp24[0]; - sp24[1] = sp3C[1] + sp24[1]; - sp24[2] = sp3C[2] + sp24[2]; - sp30[0] = sp24[0]; - sp30[1] = arg2; - sp30[2] = sp24[2]; - func_802BD328(0); - func_8031CB50(arg0, arg1, 1); - func_8028F3D8(sp30, 1.0f, NULL, NULL); -} - -void func_8031CE28(s32 arg0, s32 arg1, f32 arg2) { - f32 vec[3]; - - player_getPosition(vec); - func_8031CD44(arg0, arg1, vec[1], arg2, 0x25); -} - -void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) { - f32 playerPos[3]; - f32 sp38[3]; - struct unkfunc_80304ED0 *phi_s0; - f32 phi_f2; - - if ((D_80383190 == 0) && (getGameMode() != 8) && (getGameMode() != 7)) { - if (arg0 != 0) { - phi_s0 = func_80304ED0(&D_8036DDD4, arg0); - } else { - phi_s0 = NULL; - } - player_getPosition(playerPos); - if (phi_s0 != NULL) { - nodeprop_getPosition(&phi_s0->unk0, sp38); - phi_f2 = 500.0f; - if (phi_s0->unk8 == 0x186) { - phi_f2 = 1000.0f; - } - if (ml_vec3f_distance(arg0, sp38) < phi_f2) { - if (phi_s0->unk8 == 0x184) { - func_802BD328(0); - func_8031CB50(arg1, arg2, 1); - func_8028F3D8(sp38, 1.0f, NULL, NULL); - } else if (phi_s0->unk8 == 0x185) { - func_8031CD44(arg1, arg2, sp38[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); - } else { - func_8031CD44(arg1, arg2, playerPos[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); - } - return; - } - } - func_8031CB50(arg1, arg2, 0); - } -} - -void func_8031D04C(s32 arg0, s32 arg1) { - func_8031CB50(arg0, arg1, 0); -} - -void func_8031D06C(s32 arg0, s32 arg1) { - func_8031CB50(0x20, 0, 0); -} - -void func_8031D09C(s32 arg0, s32 arg1) { - func_8034B968(); -} - -void func_8031D0C0(s32 arg0, s32 arg1) { - if (func_8024E698(0) == 1) { - func_802E412C(1, 2); - func_8025A2FC(0, 0x320); - func_8025AB00(); - func_8031D09C(arg0, arg1); - } -} - -void func_8031D11C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0E01); -} - -void func_8031D140(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0201); -} - -void func_8031D164(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0C02); -} - -void func_8031D188(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0202); -} - -void func_8031D1AC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0C01); -} - -void func_8031D1D0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0203); -} - -void func_8031D1F4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1E00); -} - -void func_8031D218(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1506); -} - -void func_8031D23C(s32 arg0, s32 arg1) { - item_set(ITEM_6_HOURGLASS, 0); - func_80244C78(1); - func_8031CC8C(arg0, 0x1607); -} - -void func_8031D27C(s32 arg0, s32 arg1) { - item_set(ITEM_6_HOURGLASS, 0); - func_8031CC8C(arg0, 0x1301); -} - -void func_8031D2B4(s32 arg0, s32 arg1) { - func_80244C78(0); - func_803204E4(0xAC, 1); - func_8031CC8C(arg0, 0x1502); -} - -void func_8031D2F4(s32 arg0, s32 arg1) { - if (func_8031FF44(0xF8, 2) == 3) { - func_8031CC8C(arg0, 0x1401); - } -} - -void func_8031D334(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1203); -} - -void func_8031D358(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1204); -} - -void func_8031D37C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1205); -} - -void func_8031D3A0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1206); -} - -void func_8031D3C4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1101); -} - -void func_8031D3E8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0D03); -} - -void func_8031D40C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0D04); -} - -void func_8031D430(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0D05); -} - -void func_8031D454(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0A01); -} - -void func_8031D478(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x070F); -} - -void func_8031D49C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x070E); -} - -void func_8031D4C0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0505); -} - -void func_8031D4E4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0506); -} - -void func_8031D508(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0708); -} - -void func_8031D52C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0703); -} - -void func_8031D550(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0704); -} - -void func_8031D574(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0705); -} - -void func_8031D598(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0706); -} - -void func_8031D5BC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0707); -} - -void func_8031D5E0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0708); -} - -void func_8031D604(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0709); -} - -void func_8031D628(s32 arg0, s32 arg1) { - Actor *actor; - - actor = func_80326EEC(0x13E); - if (actor) { - marker_despawn(actor->marker); - } - func_8031CB50(7, 0xC, 0); -} - -void func_8031D670(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2601); -} - -void func_8031D694(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2602); -} - -void func_8031D6B8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2501); -} - -void func_8031D6DC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2401); -} - -void func_8031D700(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1D01); -} - -void func_8031D724(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2A01); -} - -void func_8031D748(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2801); -} - -void func_8031D76C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2901); -} - -void func_8031D790(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2E01); -} - -void func_8031D7B4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2D01); -} - -void func_8031D7D8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2C01); -} - -void func_8031D7FC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B01); -} - -void func_8031D820(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B02); -} - -void func_8031D844(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B03); -} - -void func_8031D868(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B04); -} - -void func_8031D88C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B05); -} - -void func_8031D8B0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B06); -} - -void func_8031D8D4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B07); -} - -void func_8031D8F8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B08); -} - -void func_8031D91C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B09); -} - -void func_8031D940(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0A); -} - -void func_8031D964(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0B); -} - -void func_8031D988(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0C); -} - -void func_8031D9AC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0D); -} - -void func_8031D9D0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0E); -} - -void func_8031D9F4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B0F); -} - -void func_8031DA18(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B10); -} - -void func_8031DA3C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B11); -} - -void func_8031DA60(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B12); -} - -void func_8031DA84(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2B01); -} - -void func_8031DAA8(s32 arg0, s32 arg1) { - func_8028F918(0); - func_8031CB50(arg0, arg1, 0); -} - -void func_8031DAE0(s32 arg0, s32 arg1) { - if (mapSpecificFlags_get(2) == 0) { - func_803204E4(0xAD, 1); - func_80244C78(0); - mapSpecificFlags_set(2, 1); - func_8025A6EC(COMUSIC_3B_MINIGAME_VICTORY, 0x6D60); - func_8028F918(1); - timedFunc_set_2(D_80378D40, &func_8031DAA8, 0x1C, 1); - func_802D6924(); - } -} - -void func_8031DB64(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3001); -} - -void func_8031DB88(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3001); -} - -void func_8031DBAC(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, arg1 + 0x2F00); - } -} - -void func_8031DBE8(void) { - func_8031CB50(0x2F, 1, 1); -} - -void func_8031DC10(s32 arg0, s32 arg1) { - f32 vec[3]; - - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - ml_vec3h_to_vec3f(vec, arg0); - func_8028F6E4(0x2F, vec); - timedFunc_set_0(D_80378D44, &func_8031DBE8); - } -} - -void func_8031DC68(s32 arg0, s32 arg1) { - func_8031DBAC(arg0, 2); -} - -void func_8031DC8C(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_5_CROC) { - func_8031CC8C(arg0, arg1 + 0x1000); - } -} - -void func_8031DCC8(s32 arg0, s32 arg1) { - func_8031DC8C(arg0, 3); -} - -void func_8031DCEC(s32 arg0, s32 arg1) { - func_8031DC8C(arg0, 4); -} - -// BGS? -void func_8031DD10(s32 arg0, s32 arg1) { - if (func_8038F570() != 0) { - func_8031CC8C(arg0, 0x1101); - } -} - -// TTC? -void func_8031DD44(s32 arg0, s32 arg1) { - if (func_80388A44() != 0) { - func_8031CC8C(arg0, 0x601); - } -} - -void func_8031DD78(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2203); -} - -void func_8031DD9C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2201); -} - -void func_8031DDC0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2202); -} - -void func_8031DDE4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2301); -} - -void func_8031DE08(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0205); -} - -void func_8031DE2C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1A02); -} - -void func_8031DE50(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1202); -} - -void func_8031DE74(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3F01); -} - -void func_8031DE98(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3901); -} - -void func_8031DEBC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3404); -} - -void func_8031DEE0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3401); -} - -void func_8031DF04(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3C01); -} - -void func_8031DF28(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3D01); -} - -void func_8031DF4C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3B01); -} - -void func_8031DF70(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3502); -} - -void func_8031DF94(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3601); -} - -void func_8031DFB8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3701); -} - -void func_8031DFDC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3E01); -} - -void func_8031E000(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3801); -} - -void func_8031E024(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3101); -} - -void func_8031E048(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3102); -} - -void func_8031E06C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3103); -} - -void func_8031E090(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3104); -} - -void func_8031E0B4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3105); -} - -void func_8031E0D8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3106); -} - -void func_8031E0FC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3107); -} - -void func_8031E120(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3108); -} - -void func_8031E144(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3109); -} - -void func_8031E168(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x310A); -} - -void func_8031E18C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x310B); -} - -void func_8031E1B0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x310C); -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031E1D4.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031E204.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031E2B8.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031E2E0.s") - -void func_8031E308(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3206); -} - -void func_8031E32C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5200); -} - -void func_8031E350(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5100); -} - -void func_8031E374(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5101); -} - -void func_8031E398(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4200); -} - -void func_8031E3BC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3201); -} - -void func_8031E3E0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3202); -} - -void func_8031E404(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3203); -} - -void func_8031E428(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3204); -} - -void func_8031E44C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3205); -} - -void func_8031E470(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3207); -} - -void func_8031E494(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3208); -} - -void func_8031E4B8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3209); -} - -void func_8031E4DC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320A); -} - -void func_8031E500(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320B); -} - -void func_8031E524(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320C); -} - -void func_8031E548(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320D); -} - -void func_8031E56C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320E); -} - -void func_8031E590(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x320F); -} - -void func_8031E5B4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3210); -} - -void func_8031E5D8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3211); -} - -void func_8031E5FC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3212); -} - -void func_8031E620(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3213); -} - -void func_8031E644(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3214); -} - -void func_8031E668(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3215); -} - -void func_8031E68C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3216); -} - -void func_8031E6B0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3217); -} - -void func_8031E6D4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4001); -} - -void func_8031E6F8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4002); -} - -void func_8031E71C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4003); -} - -void func_8031E740(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4004); -} - -void func_8031E764(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4601); -} - -void func_8031E788(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4301); -} - -void func_8031E7AC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4401); -} - -void func_8031E7D0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4501); -} - -void func_8031E7F4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1207); -} - -void func_8031E818(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0D06); -} - -void func_8031E83C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4701); -} - -void func_8031E860(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0704); -} - -void func_8031E884(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0B05); -} - -void func_8031E8A8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x0D02); -} - -void func_8031E8CC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1208); -} - -void func_8031E8F0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x1B14); -} - -void func_8031E914(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3110); -} - -void func_8031E938(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x070A); -} - -void func_8031E95C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4A01); -} - -void func_8031E980(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4B01); -} - -void func_8031E9A4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4C01); -} - -void func_8031E9C8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4D01); -} - -void func_8031E9EC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4309); -} - -void func_8031EA10(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4409); -} - -void func_8031EA34(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4509); -} - -void func_8031EA58(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4609); -} - -void func_8031EA7C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6501); -} - -void func_8031EAA0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6601); -} - -void func_8031EAC4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6701); -} - -void func_8031EAE8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6801); -} - -void func_8031EB0C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4308); -} - -void func_8031EB30(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4408); -} - -void func_8031EB54(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4508); -} - -void func_8031EB78(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4608); -} - -void func_8031EB9C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5E01); -} - -void func_8031EBC0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5F01); -} - -void func_8031EBE4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6001); -} - -void func_8031EC08(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4307); -} - -void func_8031EC2C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4407); -} - -void func_8031EC50(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4507); -} - -void func_8031EC74(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4607); -} - -void func_8031EC98(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6201); -} - -void func_8031ECBC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6301); -} - -void func_8031ECE0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6401); -} - -void func_8031ED04(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4606); -} - -void func_8031ED28(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4506); -} - -void func_8031ED4C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4605); -} - -void func_8031ED70(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4801); -} - -void func_8031ED94(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4101); -} - -void func_8031EDB8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5301); +char *func_8031B66C(enum asset_e text_id) { + char *sp1C; + s32 var_v0; + s32 var_a0; + + D_80383158.unk4 = assetcache_get(text_id); + sp1C = (s32)D_80383158.unk4 + 1; + sp1C += func_8031B5B0()*2; + var_a0 = *(sp1C++); + var_a0 += *(sp1C++)<< 8; + if(sp1C); + var_v0 = (s32)D_80383158.unk4 + var_a0; + D_80383158.unk8 = text_id; + return var_v0; +} + +void func_8031B6D8(s32 arg0){ + assetcache_release(D_80383158.unk4); + D_80383158.unk4 = NULL; + D_80383158.unk8 = -1; } - -void func_8031EDDC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2707); -} - -void func_8031EE00(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2708); -} - -void func_8031EE24(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2709); -} - -void func_8031EE48(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6E01); -} - -void func_8031EE6C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6901); -} - -void func_8031EE90(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6F01); -} - -void func_8031EEB4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6E02); -} - -void func_8031EED8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6E03); -} - -void func_8031EEFC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6902); -} - -void func_8031EF20(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6903); -} - -void func_8031EF44(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6A01); -} - -void func_8031EF68(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7101); -} - -void func_8031EF8C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6A02); -} - -void func_8031EFB0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6B01); -} - -void func_8031EFD4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6B02); -} - -void func_8031EFF8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6C01); -} - -void func_8031F01C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6B03); -} - -void func_8031F040(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6D01); -} - -void func_8031F064(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6B04); -} - -void func_8031F088(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7001); -} - -void func_8031F0AC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7002); -} - -void func_8031F0D0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2701); -} - -void func_8031F0F4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6F03); -} - -void func_8031F118(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6F04); -} - -void func_8031F13C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6B05); -} - -void func_8031F160(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7102); -} - -void func_8031F184(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7401); -} - -void func_8031F1A8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7501); -} - -void func_8031F1CC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7402); -} - -void func_8031F1F0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6F05); -} - -void func_8031F214(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7103); -} - -void func_8031F238(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7201); -} - -void func_8031F25C(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, 0x7A01); - } -} - -void func_8031F294(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, 0x7503); - } -} - -void func_8031F2CC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x2706); -} - -void func_8031F2F0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7F01); -} - -void func_8031F314(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7202); -} - -void func_8031F338(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7601); -} - -void func_8031F35C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7602); -} - -void func_8031F380(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7603); -} - -void func_8031F3A4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7604); -} - -void func_8031F3C8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7701); -} - -void func_8031F3EC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7901); -} - -void func_8031F410(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7902); -} - -void func_8031F434(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5A02); -} - -void func_8031F458(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5C02); -} - -void func_8031F47C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4306); -} - -void func_8031F4A0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4406); -} - -void func_8031F4C4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4505); -} - -void func_8031F4E8(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_6_BEE) { - func_8031CC8C(arg0, 0x5B01); - } -} - -void func_8031F520(s32 arg0, s32 arg1) { - item_set(ITEM_6_HOURGLASS, 0); - func_8031CC8C(arg0, 0x6F02); -} - -void func_8031F558(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7702); -} - -void func_8031F57C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7703); -} - -void func_8031F5A0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7704); -} - -void func_8031F5C4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7801); -} - -void func_8031F5E8(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7802); -} - -void func_8031F60C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7903); -} - -void func_8031F630(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x8001); -} - -void func_8031F654(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x8C01); -} - -void func_8031F678(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x112); -} - -void func_8031F69C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6912); -} - -void func_8031F6C0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x113); -} - -void func_8031F6E4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x3113); -} - -void func_8031F708(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x8B04); -} - -void func_8031F72C(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, 0x2504); - } -} - -void func_8031F764(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, 0x1B13); - } -} - -void func_8031F79C(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC8C(arg0, 0x2C04); - } -} - -void func_8031F7D4(s32 arg0, s32 arg1) { - if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { - func_8031CC60(0x8D04); - } -} - -void func_8031F80C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7502); -} - -void func_8031F830(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6D04); -} - -void func_8031F854(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x7906); -} - -void func_8031F878(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4007); -} - -void func_8031F89C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6F06); -} - -void func_8031F8C0(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5E02); -} - -void func_8031F8E4(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x5F02); -} - -void func_8031F908(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6002); -} - -void func_8031F92C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x6102); -} - -void func_8031F950(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4304); -} - -void func_8031F974(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4404); -} - -void func_8031F998(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4504); -} - -void func_8031F9BC(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x4604); -} - -void func_8031F9E0(void){} - -void func_8031F9E8(){ - D_80383190 = 0; -} - -void func_8031F9F4(s32 arg0){ - D_80383190 = arg0; -} - -void func_8031FA00(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x780); -} - -void func_8031FA24(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x9205); -} - -void func_8031FA48(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x120A); -} - -void func_8031FA6C(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x9305); -} - -void func_8031FA90(s32 arg0, s32 arg1) { - func_8031CC8C(arg0, 0x8E05); -} - -void func_8031FAB4(s32 arg0, s32 arg1) { - if ((func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY) != 0) && (jiggyscore_total() == 100)) { - func_8031CC8C(arg0, 0x9501); - } else { - func_8031CC8C(arg0, 0x9001); - } -} - -void func_8031FB14(s32 arg0, s32 arg1) { - if (func_8031FF1C(BKPROG_BD_ENTER_LAIR_CUTSCENE) != 0) { - func_8031CC8C(arg0, 0x6912); - } else { - func_80320004(BKPROG_BD_ENTER_LAIR_CUTSCENE, 1); - func_8031CC8C(arg0, 0x8204); - } -} - -void func_8031FB6C(s32 arg0, s32 arg1) { - func_8030E6D4(SFX_7C_CHEBOOF); - func_8031CC8C(arg0, 0x7104); -} - -void func_8031FBA0(void) { - func_8029A8B0(); - func_8031FFAC(); - func_8034646C(); - jiggyscore_clearAll(); - honeycombscore_clear(); - mumboscore_clear(); - func_8032048C(); - func_802D6344(); -} - -void func_8031FBF8(void) { - mumboscore_debug(); - honeycombscore_debug(); - jiggyscore_debug(); - func_803465DC(); - func_8029A890(); - func_802C5A48(); -} - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031FC40.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031FE40.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_8031FEC0.s") - -struct { - s32 unk0; - s32 unk4; - u8 unk8[37]; -} D_803831A0; - -s32 func_8031FF1C(s32 index) { - return func_803200A4(D_803831A0.unk8, index); -} - -s32 func_8031FF44(s32 offset, s32 numBits) { - return func_803200E4(D_803831A0.unk8, offset, numBits); -} - -s32 func_8031FF74(s32 index, s32 set) { - s32 ret; - - ret = func_8031FF1C(index); - func_80320004(index, set); - return ret; -} - -void func_8031FFAC(void) { - s32 i; - - for (i = 0; i < 37; i++) { - D_803831A0.unk8[i] = 0; - } - func_8031FC40(); - func_8031FEC0(); -} - -void func_80320004(s32 index, s32 set) { - func_8032015C(D_803831A0.unk8, index, set); - func_8031FC40(); - func_8031FEC0(); -} - -void func_80320044(s32 startIndex, s32 set, s32 length) { - func_803201C8(D_803831A0.unk8, startIndex, set, length); - func_8031FC40(); - func_8031FEC0(); -} - -void func_8032008C(s32 *arg0, u8 **arg1) { - *arg0 = 0x25; - *arg1 = D_803831A0.unk8; -} - -// Returns a single bit from a byte array -s32 func_803200A4(u8 *array, s32 index) { - s32 ret; - if (array[index / 8] & (1 << (index & 7))) { - ret = 1; - } else { - ret = 0; - } - return ret; -} - -// Extracts an integer of the given number of bits from a byte array at the starting bit offset -s32 func_803200E4(u8 *array, s32 offset, s32 numBits) { - s32 ret = 0; - s32 i; - - for (i = 0; i < numBits; i++) { - ret |= (func_803200A4(array, offset + i) << i); - } - return ret; -} - -// Sets or clears a single bit in a byte array -void func_8032015C(u8 *array, s32 index, s32 set) { - if (set) { - array[index / 8] |= (1 << (index & 7)); - } else { - array[index / 8] &= ~(1 << (index & 7)); - } -} - -// Sets or clears a range of bits in a byte array -void func_803201C8(u8 *array, s32 startIndex, s32 set, s32 length) { - s32 i; - - for (i = 0; i < length; i++) { - func_8032015C(array, startIndex + i, (1 << i) & set); - } -} - -s32 func_80320240(void){return 1;} - -s32 func_80320248(void){return 1;} - -struct { - s32 unk0; - s32 unk4; - u8 unk8[25]; -} D_803831D0; - -// regalloc -// s32 func_80320250(void) { -// s32 addr = (s32) &D_803831D0.unk8[0]; -// u32 checksum = 0x6CE9E91F; -// s32 len = 25; -// s32 scrambled; -// u32 i; - -// // Scrambles the input address -// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19 -// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19 -// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19 -// // Unscrambles the input address - -// for (i = 0; i < len; i++) { -// s32 val = ((u8*)(scrambled ^ 0x19))[i]; -// checksum = val ^ (((checksum + val & 0xF) << 0x18) ^ (checksum >> 3)); -// } - -// return checksum; -// } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_80320250.s") - -extern s32 D_8036DDF0; - -void func_803202D0(void) { - s32 addr = (s32) &D_803831D0.unk0; - addr ^= 0x7EDDF5F4; - addr ^= 0x7BEF9D80; - addr ^= 0x5326874; - *(s32*)(addr) = func_80320250(); -} - -s32 func_80320320(void) { - s32 addr = (s32) &D_803831D0.unk8[0]; - s32 checksum = 0x281E421C; - s32 len = 25; - s32 scrambled; - u32 i; - - // Scrambles the address of D_803831D8 - scrambled = (addr >> 8) & 0xFF0000; - scrambled += (addr & 0xFF) << 8; - scrambled = addr ^ scrambled; - // Unscrambles the address of D_803831D8 - addr = (scrambled & 0xFF000000) >> 8; - addr += (scrambled << 8) & 0xFF00; - addr ^= scrambled; - - for (i = 0; i < len; i++) { - checksum += (1 + i) * ((u8*)addr)[i]; - } - - return checksum; -} - -// regalloc -// void func_803203A0(void) { -// s32 addr = (s32) &D_803831D0.unk4; -// s32 scrambled; -// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19 -// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19 -// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19 -// *(s32*)(scrambled ^ 0x19) = func_80320320(); -// } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_803203A0.s") - -s32 func_803203FC(s32 index) { - return func_803200A4(D_803831D0.unk8, index); -} - -void func_80320424(s32 index, s32 numBits) { - func_803200E4(D_803831D0.unk8, index, numBits); -} - -s32 func_80320454(s32 index, s32 arg1) { - s32 temp_v0; - - temp_v0 = func_803203FC(index); - func_803204E4(index, arg1); - return temp_v0; -} - -void func_8032048C(void) { - s32 i; - for (i = 0; i < 25; i++) { - D_803831D0.unk8[i] = 0; - } - func_803202D0(); - func_803203A0(); -} - -void func_803204E4(s32 index, s32 set) { - func_8032015C(D_803831D0.unk8, index, set); - func_803202D0(); - func_803203A0(); -} - -void func_80320524(s32 startIndex, s32 set, s32 length) { - func_803201C8(D_803831D0.unk8, startIndex, set, length); - func_803202D0(); - func_803203A0(); -} - -s32 func_8032056C(void) { - s32 temp_a0; - s32 temp_a1; - s32 temp_a1_2; - s32 phi_t9; - s32 addr = (s32)&D_803831D0; - s32 temp_v1; - - temp_v1 = ((addr & 0xE0000000) >> 15) + - ((addr & 0x1FC00000) >> 22) + - ((addr & 0x00300000) << 10) + - ((addr & 0x000F0000) << 7) + - ((addr & 0x0000E000) << 14) + - ((addr & 0x00001800) >> 4) + - ((addr & 0x00000780) << 10) + - ((addr & 0x00000060) << 4) + - ((addr & 0x00000018) << 18) + - ((addr & 0x00000007) << 11); - phi_t9 = (temp_v1 & 0x38000000) / (1 << 24); - temp_a0 = ((temp_v1 & 0x1E0600) << 0xB) | ((s32) (temp_v1 & 0x603800) / 8); - temp_a1 = (((temp_v1 & 0x1C07F) << 15) + ((temp_v1 & 0xC7800000) >> 17)) | - (phi_t9 + ((s32) (temp_v1 & 0x180) >> 6)); - temp_a1 = ((temp_a1 & 0x3FE000) << 7) | - (((temp_a0 >> 8) & 7) + ((temp_a1 << 0xA) & 0xFF800)) | - ((((u32) (temp_a0 & 0xF0000000) >> 0x15) + (temp_a1 & 0xE0000000)) ^ ((s32) ((temp_a0 / 0x40) & 0xF000) >> 9)); - return func_80320250() == *(s32*)temp_a1; -} - -s32 func_80320708(void) { - u16 temp_t6; - s32 addr; - - temp_t6 = ((s32) &D_803831D0.unk4 >> 0x10); - addr = (s32) &D_803831D0.unk4 ^ temp_t6; - return func_80320320() == *(s32*)(addr ^ temp_t6); -} - -extern u8 D_803831F8[]; - -// regalloc -// void func_80320748(void) { -// s32 *addr = &D_8036DDF0; -// s32 phi_v0; - -// for (phi_v0 = 0; phi_v0 < *addr; phi_v0++) { -// *(D_803831F8 + phi_v0) = *((u8*)&D_803831D0 + phi_v0); -// } -// } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_80320748.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94620/func_80320798.s") diff --git a/src/core2/code_94780.c b/src/core2/code_94780.c new file mode 100644 index 00000000..fc219345 --- /dev/null +++ b/src/core2/code_94780.c @@ -0,0 +1,69 @@ +#include +#include "functions.h" +#include "variables.h" + +/* .bss */ +struct { + f32 unk0; + f32 unk4; + u8 rgb[3]; + u8 unkB[3]; + u8 unkE[3]; + u8 unk11; +}D_80383170; + +/* .code */ +void func_8031B710(void){} + +void func_8031B718(void){ + D_80383170.unk11 = 0; + D_80383170.unk0 = D_80383170.unk4 = 0.0f; + D_80383170.unkE[0] = D_80383170.unkE[1] = D_80383170.unkE[2] = 0xFF; + D_80383170.unkB[0] = D_80383170.unkB[1] = D_80383170.unkB[2] = 0xFF; + D_80383170.rgb[0] = D_80383170.rgb[1] = D_80383170.rgb[2] = 0xFF; +} + +void func_8031B760(void){ + func_8030A280(D_80383170.rgb[0], D_80383170.rgb[1], D_80383170.rgb[2]); +} + +void func_8031B790(void) { + s32 i; + + if (D_80383170.unk11 != 0) { + D_80383170.unk0 = max_f(0.0f, D_80383170.unk0 - time_getDelta()); + for(i = 0; i < 3; i++){ + D_80383170.rgb[i] = ml_map_f(D_80383170.unk0, D_80383170.unk4, 0.0f,D_80383170.unkE[i], D_80383170.unkB[i]); + } + func_8031B760(); + if (D_80383170.unk0 == 0.0f) { + D_80383170.unk11 = 0; + } + } +} + +void func_8031B908(s32 red, s32 blue, s32 green, f32 arg3) { + if (arg3 != 0.0f) { + D_80383170.unk11 = 1; + D_80383170.unk0 = arg3; + D_80383170.unk4 = arg3; + D_80383170.unkB[0] = red; + D_80383170.unkB[1] = blue; + D_80383170.unkB[2] = green; + D_80383170.unkE[0] = D_80383170.rgb[0]; + D_80383170.unkE[1] = D_80383170.rgb[1]; + D_80383170.unkE[2] = D_80383170.rgb[2]; + return; + } + else{ + D_80383170.unk11 = 0; + D_80383170.rgb[0] = red; + D_80383170.rgb[1] = blue; + D_80383170.rgb[2] = green; + func_8031B760(); + } +} + +void func_8031B990(s32 red, s32 blue, s32 green) { + func_8031B908(red, blue, green, 0.0f); +} diff --git a/src/core2/code_94A20.c b/src/core2/code_94A20.c new file mode 100644 index 00000000..a904ec9e --- /dev/null +++ b/src/core2/code_94A20.c @@ -0,0 +1,1924 @@ +#include +#include "functions.h" +#include "variables.h" + + +//f32 mlAbsF(f32, f32); + +void *func_80309B48(f32 *, f32 *, f32 *, u32); +void *func_80309B98(f32 *, f32 *, f32 *, u32); + + +void func_8031C608(struct0 *this); +void *func_8031BABC(f32 *, f32, f32, u32, void*); +void func_8031BD98(struct0 *, f32, s32, s32, f32 *, void *, s32); + +void func_8031BE98(struct0*, f32, s32); +extern f32 D_8036DDC0[]; +extern f32 D_80378D30; +extern f32 D_80378D34; + + +void func_8031B9B0(struct0 *this, s32 arg1){ + if(arg1 == 1) + this->unk5D = 5; + if(arg1 == 4) + this->unk5C = 1; + this->unk5E = arg1; +} + +struct0 *func_8031B9D8(void){ + struct0 *this; + + this = (struct0 *)malloc(0x60); + ml_vec3f_clear(this->unk1C); + ml_vec3f_clear(this->unk28); + this->normX = 0.0f; + this->normZ = 0.0f; + this->normY = 1.0f; + this->posX = D_80378D30; + this->unk4C = 0; + this->unk50 = 0; + this->posY = D_80378D34; + this->unk58 = 0; + this->unk5A = 0; + this->unk59 = 0; + this->unk5B = 0; + this->unk54 = 0; + this->model = NULL; + func_8031C608(this); + this->unk5E = 0; + func_8031B9B0(this, 1); + return this; +} + +void func_8031BA7C(struct0 *this){ + func_8031B9B0(this, 1); +} + +void func_8031BA9C(struct0 *this){ + free(this); +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031BABC.s") +// void *func_8031BABC(f32 *arg0, f32 arg1, f32 arg2, u32 arg3, void *arg4) { +// //f32 sp38; +// f32 sp34[3]; +// //f32 sp2C; +// f32 sp28[3]; +// void *sp24; +// void *temp_v1; +// void *phi_v0; + +// ml_vec3f_copy(&sp34, arg0); +// sp34[1] = sp34[1] + arg1; +// ml_vec3f_copy(&sp28, arg0); +// sp28[1] = sp28[1] + arg2; +// if (arg3 == 0xF800FF0F) { +// phi_v0 = func_80309B48(&sp34, &sp28, arg4, arg3); +// } else { +// phi_v0 = func_80320B98(&sp34, &sp28, arg4, arg3); +// } +// temp_v1 = phi_v0; +// if (phi_v0 != 0) { +// arg4->unk10 = (s32) phi_v0->unk8; +// arg4->unk14 = (s16) phi_v0->unk6; +// } else { +// arg4->unk10 = 0; +// arg4->unk14 = (u16)0; +// } +// arg4->unkC = sp28[1]; +// sp24 = temp_v1; +// arg4->unk18 = func_803209EC(); +// return temp_v1; +// } + +s32 *func_8031BBA0(f32 *this, f32 arg1, f32 arg2, u32 arg3, void *arg4) { + s32* phi_v1; + + if (mlAbsF(arg2 - arg1) > 500.0f) { + if (arg1 < arg2) { + phi_v1 = func_8031BABC(this, arg1, arg1 + 500.0f, arg3, arg4); + if (phi_v1 == NULL) { + phi_v1 = func_8031BABC(this, arg1 + 500.0f - 1.0f, arg2, arg3, arg4); + } + } else { + phi_v1 = func_8031BABC(this, arg1, arg1 - 500.0f, arg3, arg4); + if (phi_v1 == NULL) { + phi_v1 = func_8031BABC(this, arg1 - 500.0f + 1.0f, arg2, arg3, arg4); + } + } + } else { + phi_v1 = func_8031BABC(this, arg1, arg2, arg3, arg4); + } + return phi_v1; +} + +s32 func_8031BCF4(struct0 *this) { + f32 temp_f0; + f32 temp_f2; + + if (this->unk59 == 0) { + return 2; + } + if ((this->unk59 != 0) && (this->unk58 == 0)) { + return 4; + } + temp_f0 = this->posY; + if (temp_f0 < this->unk1C[1]) { + return 2; + } + temp_f2 = temp_f0 - this->posX; + if (temp_f2 < -20.0f) { + return 2; + } + if (temp_f2 > 100.0f) { + return 4; + } + return 3; +} + +void func_8031BD98(struct0 *this, f32 arg1, s32 arg2, s32 arg3, f32 *normPtr, void *model, s32 arg6){ + if(arg6){ + func_8024587C(&this->unk4, arg6); + } + this->unk58 = 1; + this->unk4C = arg2; + this->unk50 = arg3; + this->posX = arg1; + this->model = model; + ml_vec3f_copy(&this->normX, normPtr); +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031BE0C.s") +// void func_8031BE0C(struct0 *this, s32 *arg1, s32 arg2) { +// s32 a = arg1[4]; +// s32 b = arg1[5]; +// func_8031BD98(this, *(f32*)&arg1[3], a, b, &this->model, arg1[6], arg2); +// // func_8031BD98(this, *(f32*)&arg1[3], arg1[4], arg1[5], this, *(s32*)&this->unk10[4], arg2); +// } + + +void func_8031BE58(struct0 *this){ + func_8031BD98(this, -9000.0f, 0, 0, D_8036DDC0, 0, 0); +} + +void func_8031BE98(struct0 *this, f32 arg1, s32 arg2){ + if(arg2) + func_8024587C(&this->unk10, arg2); + this->unk59 = 1; + this->posY = arg1; +} + +void func_8031BEE0(struct0 *this){ + func_8031BE98(this, -10000.0, 0); +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031BF08.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C1A4.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C29C.s") + +void func_8031C444(struct0 * this){} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C44C.s") + +u8 func_8031C58C(struct0 *this){ + return this->unk58; +} + +u8 func_8031C594(struct0 *this){ + return this->unk59; +} + +s32 func_8031C59C(struct0 *this){ + return this->unk4C; +} + +s32 func_8031C5A4(struct0 *this){ + return this->unk50; +} + +void func_8031C5AC(struct0 *this, f32 *dst) +{ ml_vec3f_copy(dst, &this->normX); +} + +f32 func_8031C5D4(struct0 *this){ + return this->posX; +} + +BKModelBin *func_8031C5DC(struct0 *this){ + return this->model; +} + +f32 func_8031C5E4(struct0 *this){ + return this->posY; +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C5EC.s") + +Struct60s *func_8031C5F4(struct0* this){ + return &this->unk4; +} + +void func_8031C5FC(struct0* this, f32 arg1){ + this->posZ = arg1; +} + +void func_8031C608(struct0 *this){ + this->posZ = 56.0f; +} + +void func_8031C618(struct0 *this, f32 *arg1){ + ml_vec3f_copy(this->unk1C, arg1); +} + +void func_8031C638(struct0 *this, s32 arg1){ + this->unk54 = arg1; +} + +/**** BREAK ***/ + +void mapSpecificFlags_set(s32, s32); + +u32 func_8031C688(void); +u32 func_8031C6E4(void); +u32 func_8031C640(void); +u32 func_8031C7C8(void); + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C640.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C688.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C6E4.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031C7C8.s") + +//checks is a cutscene can be inturrupted and performs take me there +void func_8031C7EC(s32 cs_map, s32 arg1, s32 return_map, s32 return_exit, u32 (* condFunc)(void)){ + if(map_get() != cs_map) + return; + + if((condFunc && condFunc()) || mapSpecificFlags_get(arg1)){ + mapSpecificFlags_set(arg1, 0); + func_802E4078(return_map, (return_exit == -1)? 0: return_exit, 1); + } +} + +//check cutscene interrupts +s32 func_8031C880(void){ + func_8031C7EC(MAP_86_CS_SPIRAL_MOUNTAIN_4, 0, MAP_89_CS_INTRO_BANJOS_HOUSE_2, -1, NULL); + func_8031C7EC(MAP_7D_CS_SPIRAL_MOUNTAIN_1, 0, MAP_7C_CS_INTRO_BANJOS_HOUSE_1, -1, NULL); + func_8031C7EC(MAP_7C_CS_INTRO_BANJOS_HOUSE_1, 0, MAP_86_CS_SPIRAL_MOUNTAIN_4, -1, NULL); + func_8031C7EC(MAP_89_CS_INTRO_BANJOS_HOUSE_2, 0, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, NULL); + func_8031C7EC(MAP_85_CS_SPIRAL_MOUNTAIN_3, 0, MAP_7B_CS_INTRO_GL_DINGPOT_1, -1, NULL); + func_8031C7EC(MAP_7B_CS_INTRO_GL_DINGPOT_1, 1, MAP_81_CS_INTRO_GL_DINGPOT_2, -1, NULL); + func_8031C7EC(MAP_81_CS_INTRO_GL_DINGPOT_2, 0, MAP_7D_CS_SPIRAL_MOUNTAIN_1, -1, NULL); + func_8031C7EC(MAP_82_CS_ENTERING_GL_MACHINE_ROOM, 0, MAP_69_GL_MM_LOBBY, 0x12, func_8031C688); + func_8031C7EC(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, MAP_1F_CS_START_RAREWARE, -1, func_8031C6E4); + func_8031C7EC(MAP_87_CS_SPIRAL_MOUNTAIN_5, 0, MAP_88_CS_SPIRAL_MOUNTAIN_6, -1, NULL); + func_8031C7EC(MAP_94_CS_INTRO_SPIRAL_7, 0, MAP_8E_GL_FURNACE_FUN, 4, NULL); + func_8031C7EC(MAP_88_CS_SPIRAL_MOUNTAIN_6, 1, MAP_96_CS_END_BEACH_1, -1, NULL); + func_8031C7EC(MAP_98_CS_END_SPIRAL_MOUNTAIN_1, 0, MAP_1F_CS_START_RAREWARE, -1, NULL); + func_8031C7EC(MAP_99_CS_END_SPIRAL_MOUNTAIN_2, 0, MAP_1F_CS_START_RAREWARE, -1, NULL); + func_8031C7EC(MAP_20_CS_END_NOT_100, 0, MAP_98_CS_END_SPIRAL_MOUNTAIN_1, -1, NULL); + func_8031C7EC(MAP_95_CS_END_ALL_100, 0, MAP_99_CS_END_SPIRAL_MOUNTAIN_2, -1, NULL); + func_8031C7EC(MAP_97_CS_END_BEACH_2, 0, MAP_99_CS_END_SPIRAL_MOUNTAIN_2, -1, func_8031C7C8); + func_8031C7EC(MAP_85_CS_SPIRAL_MOUNTAIN_3, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_7B_CS_INTRO_GL_DINGPOT_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_81_CS_INTRO_GL_DINGPOT_2, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_7D_CS_SPIRAL_MOUNTAIN_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_7C_CS_INTRO_BANJOS_HOUSE_1, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_86_CS_SPIRAL_MOUNTAIN_4, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + func_8031C7EC(MAP_89_CS_INTRO_BANJOS_HOUSE_2, 0xC, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12, func_8031C640); + if(map_get() == MAP_95_CS_END_ALL_100 && mapSpecificFlags_get(1)){ + func_8034B9E4(); + mapSpecificFlags_set(1, 0); + } + return 0; +} + +// Struct pointer returned by func_80304ED0 +struct unkfunc_80304ED0 { + s16 unk0[3]; + u16 unk6; + u16 unk8; + u16 unkA; + u32 unkC; +}; + +s32 func_8031FF1C(s32); +void func_8031FFAC(void); +void func_80320004(s32 index, s32 set); +s32 func_803200A4(u8 *array, s32 index); +s32 func_803200E4(u8 *array, s32 offset, s32 numBits); +void func_8032015C(u8 *array, s32 index, s32 set); +void func_803201C8(u8 *array, s32 startIndex, s32 set, s32 length); +void func_8032048C(void); +void func_803204E4(s32 arg0, s32 arg1); +s32 func_8031FF44(s32 offset, s32 numBits); +void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2); +void ml_vec3h_to_vec3f(f32 *, s32); +void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *); +struct unkfunc_80304ED0 *func_80304ED0(void*, f32 *); +void func_8031CD44(s32, s32, f32, f32, s32); +void func_80256E24(f32 *, f32, f32, f32, f32, f32); + +extern u32 D_8036DDD4; + +// probably rodata +extern f32 D_80378D40; +extern f32 D_80378D44; + +/* .bss */ +extern u8 D_80383190; + +void func_8031CB50(enum map_e map_id, s32 arg1, s32 arg2) { + s32 sp1C; + + if ((D_80383190 == 0) && (getGameMode() != 8) && (getGameMode() != 7)) { + sp1C = func_803226E8(map_get()); + if ((func_803226E8(map_id) != sp1C) && (func_80322914() == 0)) { + func_8025A388(0, 0x4E2); + func_8025AB00(); + func_8024BD08(0); + } + if (func_802E4A08() != 0) { + func_802E40D0(map_id, arg1); + func_802E40E8(1); + func_802E40C4(0xB); + } else { + func_802E4078(map_id, arg1, 1); + } + func_80335110(arg2); + } +} + +void func_8031CC40(enum map_e map_id, s32 arg1) { + func_8031CB50(map_id, arg1, 0); +} + +void func_8031CC60(s32 arg0) { + func_8031CB50(arg0 >> 8, arg0 & 0xFF, 1); +} + +void func_8031CC8C(s32 arg0, s32 arg1) { + f32 vec[3]; + f32 unused[3]; + + if ((D_80383190 == 0) && (getGameMode() != GAME_MODE_8_BOTTLES_BONUS)) { + if (getGameMode() != GAME_MODE_7_ATTRACT_DEMO) { + if (arg0 != 0) { + ml_vec3h_to_vec3f(vec, arg0); + func_8031CE70(vec, arg1 >> 8, arg1 & 0xFF); + } else { + func_8031CE70(NULL, arg1 >> 8, arg1 & 0xFF); + } + } + } +} + +void func_8031CD20(s32 arg0, s32 arg1, s32 arg2) { + func_8031CC8C(arg0, (arg1 << 8) + arg2); +} + +void func_8031CD44(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) { + f32 sp3C[3]; + f32 sp30[3]; + f32 sp24[3]; + + player_getPosition((f32 *) &sp3C); + func_80256E24(sp24, 0.0f, arg3, 0.0f, 0.0f, ml_map_f((f32) arg4, 0.0f, 200.0f, 10.0f, 800.0f)); + sp24[0] = sp3C[0] + sp24[0]; + sp24[1] = sp3C[1] + sp24[1]; + sp24[2] = sp3C[2] + sp24[2]; + sp30[0] = sp24[0]; + sp30[1] = arg2; + sp30[2] = sp24[2]; + func_802BD328(0); + func_8031CB50(arg0, arg1, 1); + func_8028F3D8(sp30, 1.0f, NULL, NULL); +} + +void func_8031CE28(s32 arg0, s32 arg1, f32 arg2) { + f32 vec[3]; + + player_getPosition(vec); + func_8031CD44(arg0, arg1, vec[1], arg2, 0x25); +} + +void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) { + f32 playerPos[3]; + f32 sp38[3]; + struct unkfunc_80304ED0 *phi_s0; + f32 phi_f2; + + if ((D_80383190 == 0) && (getGameMode() != 8) && (getGameMode() != 7)) { + if (arg0 != 0) { + phi_s0 = func_80304ED0(&D_8036DDD4, arg0); + } else { + phi_s0 = NULL; + } + player_getPosition(playerPos); + if (phi_s0 != NULL) { + nodeprop_getPosition(&phi_s0->unk0, sp38); + phi_f2 = 500.0f; + if (phi_s0->unk8 == 0x186) { + phi_f2 = 1000.0f; + } + if (ml_vec3f_distance(arg0, sp38) < phi_f2) { + if (phi_s0->unk8 == 0x184) { + func_802BD328(0); + func_8031CB50(arg1, arg2, 1); + func_8028F3D8(sp38, 1.0f, NULL, NULL); + } else if (phi_s0->unk8 == 0x185) { + func_8031CD44(arg1, arg2, sp38[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); + } else { + func_8031CD44(arg1, arg2, playerPos[1], (f32) (phi_s0->unkC >> 0x17), phi_s0->unkC & 0x7FFFFF); + } + return; + } + } + func_8031CB50(arg1, arg2, 0); + } +} + +void func_8031D04C(s32 arg0, s32 arg1) { + func_8031CB50(arg0, arg1, 0); +} + +void func_8031D06C(s32 arg0, s32 arg1) { + func_8031CB50(0x20, 0, 0); +} + +void func_8031D09C(s32 arg0, s32 arg1) { + func_8034B968(); +} + +void func_8031D0C0(s32 arg0, s32 arg1) { + if (func_8024E698(0) == 1) { + func_802E412C(1, 2); + func_8025A2FC(0, 0x320); + func_8025AB00(); + func_8031D09C(arg0, arg1); + } +} + +void func_8031D11C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0E01); +} + +void func_8031D140(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0201); +} + +void func_8031D164(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0C02); +} + +void func_8031D188(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0202); +} + +void func_8031D1AC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0C01); +} + +void func_8031D1D0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0203); +} + +void func_8031D1F4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1E00); +} + +void func_8031D218(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1506); +} + +void func_8031D23C(s32 arg0, s32 arg1) { + item_set(ITEM_6_HOURGLASS, 0); + func_80244C78(1); + func_8031CC8C(arg0, 0x1607); +} + +void func_8031D27C(s32 arg0, s32 arg1) { + item_set(ITEM_6_HOURGLASS, 0); + func_8031CC8C(arg0, 0x1301); +} + +void func_8031D2B4(s32 arg0, s32 arg1) { + func_80244C78(0); + func_803204E4(0xAC, 1); + func_8031CC8C(arg0, 0x1502); +} + +void func_8031D2F4(s32 arg0, s32 arg1) { + if (func_8031FF44(0xF8, 2) == 3) { + func_8031CC8C(arg0, 0x1401); + } +} + +void func_8031D334(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1203); +} + +void func_8031D358(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1204); +} + +void func_8031D37C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1205); +} + +void func_8031D3A0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1206); +} + +void func_8031D3C4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1101); +} + +void func_8031D3E8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0D03); +} + +void func_8031D40C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0D04); +} + +void func_8031D430(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0D05); +} + +void func_8031D454(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0A01); +} + +void func_8031D478(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x070F); +} + +void func_8031D49C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x070E); +} + +void func_8031D4C0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0505); +} + +void func_8031D4E4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0506); +} + +void func_8031D508(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0708); +} + +void func_8031D52C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0703); +} + +void func_8031D550(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0704); +} + +void func_8031D574(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0705); +} + +void func_8031D598(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0706); +} + +void func_8031D5BC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0707); +} + +void func_8031D5E0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0708); +} + +void func_8031D604(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0709); +} + +void func_8031D628(s32 arg0, s32 arg1) { + Actor *actor; + + actor = func_80326EEC(0x13E); + if (actor) { + marker_despawn(actor->marker); + } + func_8031CB50(7, 0xC, 0); +} + +void func_8031D670(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2601); +} + +void func_8031D694(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2602); +} + +void func_8031D6B8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2501); +} + +void func_8031D6DC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2401); +} + +void func_8031D700(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1D01); +} + +void func_8031D724(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2A01); +} + +void func_8031D748(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2801); +} + +void func_8031D76C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2901); +} + +void func_8031D790(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2E01); +} + +void func_8031D7B4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2D01); +} + +void func_8031D7D8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2C01); +} + +void func_8031D7FC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B01); +} + +void func_8031D820(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B02); +} + +void func_8031D844(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B03); +} + +void func_8031D868(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B04); +} + +void func_8031D88C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B05); +} + +void func_8031D8B0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B06); +} + +void func_8031D8D4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B07); +} + +void func_8031D8F8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B08); +} + +void func_8031D91C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B09); +} + +void func_8031D940(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0A); +} + +void func_8031D964(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0B); +} + +void func_8031D988(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0C); +} + +void func_8031D9AC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0D); +} + +void func_8031D9D0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0E); +} + +void func_8031D9F4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B0F); +} + +void func_8031DA18(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B10); +} + +void func_8031DA3C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B11); +} + +void func_8031DA60(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B12); +} + +void func_8031DA84(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2B01); +} + +void func_8031DAA8(s32 arg0, s32 arg1) { + func_8028F918(0); + func_8031CB50(arg0, arg1, 0); +} + +void func_8031DAE0(s32 arg0, s32 arg1) { + if (mapSpecificFlags_get(2) == 0) { + func_803204E4(0xAD, 1); + func_80244C78(0); + mapSpecificFlags_set(2, 1); + func_8025A6EC(COMUSIC_3B_MINIGAME_VICTORY, 0x6D60); + func_8028F918(1); + timedFunc_set_2(D_80378D40, &func_8031DAA8, 0x1C, 1); + func_802D6924(); + } +} + +void func_8031DB64(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3001); +} + +void func_8031DB88(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3001); +} + +void func_8031DBAC(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, arg1 + 0x2F00); + } +} + +void func_8031DBE8(void) { + func_8031CB50(0x2F, 1, 1); +} + +void func_8031DC10(s32 arg0, s32 arg1) { + f32 vec[3]; + + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + ml_vec3h_to_vec3f(vec, arg0); + func_8028F6E4(0x2F, vec); + timedFunc_set_0(D_80378D44, &func_8031DBE8); + } +} + +void func_8031DC68(s32 arg0, s32 arg1) { + func_8031DBAC(arg0, 2); +} + +void func_8031DC8C(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_5_CROC) { + func_8031CC8C(arg0, arg1 + 0x1000); + } +} + +void func_8031DCC8(s32 arg0, s32 arg1) { + func_8031DC8C(arg0, 3); +} + +void func_8031DCEC(s32 arg0, s32 arg1) { + func_8031DC8C(arg0, 4); +} + +// BGS? +void func_8031DD10(s32 arg0, s32 arg1) { + if (func_8038F570() != 0) { + func_8031CC8C(arg0, 0x1101); + } +} + +// TTC? +void func_8031DD44(s32 arg0, s32 arg1) { + if (func_80388A44() != 0) { + func_8031CC8C(arg0, 0x601); + } +} + +void func_8031DD78(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2203); +} + +void func_8031DD9C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2201); +} + +void func_8031DDC0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2202); +} + +void func_8031DDE4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2301); +} + +void func_8031DE08(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0205); +} + +void func_8031DE2C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1A02); +} + +void func_8031DE50(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1202); +} + +void func_8031DE74(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3F01); +} + +void func_8031DE98(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3901); +} + +void func_8031DEBC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3404); +} + +void func_8031DEE0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3401); +} + +void func_8031DF04(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3C01); +} + +void func_8031DF28(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3D01); +} + +void func_8031DF4C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3B01); +} + +void func_8031DF70(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3502); +} + +void func_8031DF94(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3601); +} + +void func_8031DFB8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3701); +} + +void func_8031DFDC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3E01); +} + +void func_8031E000(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3801); +} + +void func_8031E024(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3101); +} + +void func_8031E048(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3102); +} + +void func_8031E06C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3103); +} + +void func_8031E090(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3104); +} + +void func_8031E0B4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3105); +} + +void func_8031E0D8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3106); +} + +void func_8031E0FC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3107); +} + +void func_8031E120(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3108); +} + +void func_8031E144(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3109); +} + +void func_8031E168(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x310A); +} + +void func_8031E18C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x310B); +} + +void func_8031E1B0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x310C); +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031E1D4.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031E204.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031E2B8.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031E2E0.s") + +void func_8031E308(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3206); +} + +void func_8031E32C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5200); +} + +void func_8031E350(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5100); +} + +void func_8031E374(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5101); +} + +void func_8031E398(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4200); +} + +void func_8031E3BC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3201); +} + +void func_8031E3E0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3202); +} + +void func_8031E404(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3203); +} + +void func_8031E428(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3204); +} + +void func_8031E44C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3205); +} + +void func_8031E470(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3207); +} + +void func_8031E494(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3208); +} + +void func_8031E4B8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3209); +} + +void func_8031E4DC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320A); +} + +void func_8031E500(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320B); +} + +void func_8031E524(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320C); +} + +void func_8031E548(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320D); +} + +void func_8031E56C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320E); +} + +void func_8031E590(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x320F); +} + +void func_8031E5B4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3210); +} + +void func_8031E5D8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3211); +} + +void func_8031E5FC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3212); +} + +void func_8031E620(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3213); +} + +void func_8031E644(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3214); +} + +void func_8031E668(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3215); +} + +void func_8031E68C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3216); +} + +void func_8031E6B0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3217); +} + +void func_8031E6D4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4001); +} + +void func_8031E6F8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4002); +} + +void func_8031E71C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4003); +} + +void func_8031E740(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4004); +} + +void func_8031E764(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4601); +} + +void func_8031E788(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4301); +} + +void func_8031E7AC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4401); +} + +void func_8031E7D0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4501); +} + +void func_8031E7F4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1207); +} + +void func_8031E818(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0D06); +} + +void func_8031E83C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4701); +} + +void func_8031E860(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0704); +} + +void func_8031E884(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0B05); +} + +void func_8031E8A8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x0D02); +} + +void func_8031E8CC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1208); +} + +void func_8031E8F0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x1B14); +} + +void func_8031E914(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3110); +} + +void func_8031E938(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x070A); +} + +void func_8031E95C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4A01); +} + +void func_8031E980(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4B01); +} + +void func_8031E9A4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4C01); +} + +void func_8031E9C8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4D01); +} + +void func_8031E9EC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4309); +} + +void func_8031EA10(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4409); +} + +void func_8031EA34(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4509); +} + +void func_8031EA58(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4609); +} + +void func_8031EA7C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6501); +} + +void func_8031EAA0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6601); +} + +void func_8031EAC4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6701); +} + +void func_8031EAE8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6801); +} + +void func_8031EB0C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4308); +} + +void func_8031EB30(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4408); +} + +void func_8031EB54(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4508); +} + +void func_8031EB78(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4608); +} + +void func_8031EB9C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5E01); +} + +void func_8031EBC0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5F01); +} + +void func_8031EBE4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6001); +} + +void func_8031EC08(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4307); +} + +void func_8031EC2C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4407); +} + +void func_8031EC50(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4507); +} + +void func_8031EC74(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4607); +} + +void func_8031EC98(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6201); +} + +void func_8031ECBC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6301); +} + +void func_8031ECE0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6401); +} + +void func_8031ED04(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4606); +} + +void func_8031ED28(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4506); +} + +void func_8031ED4C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4605); +} + +void func_8031ED70(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4801); +} + +void func_8031ED94(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4101); +} + +void func_8031EDB8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5301); +} + +void func_8031EDDC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2707); +} + +void func_8031EE00(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2708); +} + +void func_8031EE24(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2709); +} + +void func_8031EE48(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6E01); +} + +void func_8031EE6C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6901); +} + +void func_8031EE90(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6F01); +} + +void func_8031EEB4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6E02); +} + +void func_8031EED8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6E03); +} + +void func_8031EEFC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6902); +} + +void func_8031EF20(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6903); +} + +void func_8031EF44(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6A01); +} + +void func_8031EF68(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7101); +} + +void func_8031EF8C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6A02); +} + +void func_8031EFB0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6B01); +} + +void func_8031EFD4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6B02); +} + +void func_8031EFF8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6C01); +} + +void func_8031F01C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6B03); +} + +void func_8031F040(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6D01); +} + +void func_8031F064(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6B04); +} + +void func_8031F088(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7001); +} + +void func_8031F0AC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7002); +} + +void func_8031F0D0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2701); +} + +void func_8031F0F4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6F03); +} + +void func_8031F118(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6F04); +} + +void func_8031F13C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6B05); +} + +void func_8031F160(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7102); +} + +void func_8031F184(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7401); +} + +void func_8031F1A8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7501); +} + +void func_8031F1CC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7402); +} + +void func_8031F1F0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6F05); +} + +void func_8031F214(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7103); +} + +void func_8031F238(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7201); +} + +void func_8031F25C(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, 0x7A01); + } +} + +void func_8031F294(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, 0x7503); + } +} + +void func_8031F2CC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x2706); +} + +void func_8031F2F0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7F01); +} + +void func_8031F314(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7202); +} + +void func_8031F338(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7601); +} + +void func_8031F35C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7602); +} + +void func_8031F380(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7603); +} + +void func_8031F3A4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7604); +} + +void func_8031F3C8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7701); +} + +void func_8031F3EC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7901); +} + +void func_8031F410(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7902); +} + +void func_8031F434(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5A02); +} + +void func_8031F458(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5C02); +} + +void func_8031F47C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4306); +} + +void func_8031F4A0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4406); +} + +void func_8031F4C4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4505); +} + +void func_8031F4E8(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_6_BEE) { + func_8031CC8C(arg0, 0x5B01); + } +} + +void func_8031F520(s32 arg0, s32 arg1) { + item_set(ITEM_6_HOURGLASS, 0); + func_8031CC8C(arg0, 0x6F02); +} + +void func_8031F558(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7702); +} + +void func_8031F57C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7703); +} + +void func_8031F5A0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7704); +} + +void func_8031F5C4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7801); +} + +void func_8031F5E8(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7802); +} + +void func_8031F60C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7903); +} + +void func_8031F630(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x8001); +} + +void func_8031F654(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x8C01); +} + +void func_8031F678(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x112); +} + +void func_8031F69C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6912); +} + +void func_8031F6C0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x113); +} + +void func_8031F6E4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x3113); +} + +void func_8031F708(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x8B04); +} + +void func_8031F72C(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, 0x2504); + } +} + +void func_8031F764(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, 0x1B13); + } +} + +void func_8031F79C(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC8C(arg0, 0x2C04); + } +} + +void func_8031F7D4(s32 arg0, s32 arg1) { + if (player_getTransformation() == TRANSFORM_3_PUMPKIN) { + func_8031CC60(0x8D04); + } +} + +void func_8031F80C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7502); +} + +void func_8031F830(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6D04); +} + +void func_8031F854(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x7906); +} + +void func_8031F878(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4007); +} + +void func_8031F89C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6F06); +} + +void func_8031F8C0(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5E02); +} + +void func_8031F8E4(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x5F02); +} + +void func_8031F908(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6002); +} + +void func_8031F92C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x6102); +} + +void func_8031F950(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4304); +} + +void func_8031F974(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4404); +} + +void func_8031F998(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4504); +} + +void func_8031F9BC(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x4604); +} + +void func_8031F9E0(void){} + +void func_8031F9E8(){ + D_80383190 = 0; +} + +void func_8031F9F4(s32 arg0){ + D_80383190 = arg0; +} + +void func_8031FA00(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x780); +} + +void func_8031FA24(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x9205); +} + +void func_8031FA48(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x120A); +} + +void func_8031FA6C(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x9305); +} + +void func_8031FA90(s32 arg0, s32 arg1) { + func_8031CC8C(arg0, 0x8E05); +} + +void func_8031FAB4(s32 arg0, s32 arg1) { + if ((func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY) != 0) && (jiggyscore_total() == 100)) { + func_8031CC8C(arg0, 0x9501); + } else { + func_8031CC8C(arg0, 0x9001); + } +} + +void func_8031FB14(s32 arg0, s32 arg1) { + if (func_8031FF1C(BKPROG_BD_ENTER_LAIR_CUTSCENE) != 0) { + func_8031CC8C(arg0, 0x6912); + } else { + func_80320004(BKPROG_BD_ENTER_LAIR_CUTSCENE, 1); + func_8031CC8C(arg0, 0x8204); + } +} + +void func_8031FB6C(s32 arg0, s32 arg1) { + func_8030E6D4(SFX_7C_CHEBOOF); + func_8031CC8C(arg0, 0x7104); +} + +void func_8031FBA0(void) { + func_8029A8B0(); + func_8031FFAC(); + func_8034646C(); + jiggyscore_clearAll(); + honeycombscore_clear(); + mumboscore_clear(); + func_8032048C(); + func_802D6344(); +} + +void func_8031FBF8(void) { + mumboscore_debug(); + honeycombscore_debug(); + jiggyscore_debug(); + func_803465DC(); + func_8029A890(); + func_802C5A48(); +} + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031FC40.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031FE40.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_8031FEC0.s") + +struct { + s32 unk0; + s32 unk4; + u8 unk8[37]; +} D_803831A0; + +s32 func_8031FF1C(s32 index) { + return func_803200A4(D_803831A0.unk8, index); +} + +s32 func_8031FF44(s32 offset, s32 numBits) { + return func_803200E4(D_803831A0.unk8, offset, numBits); +} + +s32 func_8031FF74(s32 index, s32 set) { + s32 ret; + + ret = func_8031FF1C(index); + func_80320004(index, set); + return ret; +} + +void func_8031FFAC(void) { + s32 i; + + for (i = 0; i < 37; i++) { + D_803831A0.unk8[i] = 0; + } + func_8031FC40(); + func_8031FEC0(); +} + +void func_80320004(s32 index, s32 set) { + func_8032015C(D_803831A0.unk8, index, set); + func_8031FC40(); + func_8031FEC0(); +} + +void func_80320044(s32 startIndex, s32 set, s32 length) { + func_803201C8(D_803831A0.unk8, startIndex, set, length); + func_8031FC40(); + func_8031FEC0(); +} + +void func_8032008C(s32 *arg0, u8 **arg1) { + *arg0 = 0x25; + *arg1 = D_803831A0.unk8; +} + +// Returns a single bit from a byte array +s32 func_803200A4(u8 *array, s32 index) { + s32 ret; + if (array[index / 8] & (1 << (index & 7))) { + ret = 1; + } else { + ret = 0; + } + return ret; +} + +// Extracts an integer of the given number of bits from a byte array at the starting bit offset +s32 func_803200E4(u8 *array, s32 offset, s32 numBits) { + s32 ret = 0; + s32 i; + + for (i = 0; i < numBits; i++) { + ret |= (func_803200A4(array, offset + i) << i); + } + return ret; +} + +// Sets or clears a single bit in a byte array +void func_8032015C(u8 *array, s32 index, s32 set) { + if (set) { + array[index / 8] |= (1 << (index & 7)); + } else { + array[index / 8] &= ~(1 << (index & 7)); + } +} + +// Sets or clears a range of bits in a byte array +void func_803201C8(u8 *array, s32 startIndex, s32 set, s32 length) { + s32 i; + + for (i = 0; i < length; i++) { + func_8032015C(array, startIndex + i, (1 << i) & set); + } +} + +s32 func_80320240(void){return 1;} + +s32 func_80320248(void){return 1;} + +struct { + s32 unk0; + s32 unk4; + u8 unk8[25]; +} D_803831D0; + +// regalloc +// s32 func_80320250(void) { +// s32 addr = (s32) &D_803831D0.unk8[0]; +// u32 checksum = 0x6CE9E91F; +// s32 len = 25; +// s32 scrambled; +// u32 i; + +// // Scrambles the input address +// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19 +// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19 +// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19 +// // Unscrambles the input address + +// for (i = 0; i < len; i++) { +// s32 val = ((u8*)(scrambled ^ 0x19))[i]; +// checksum = val ^ (((checksum + val & 0xF) << 0x18) ^ (checksum >> 3)); +// } + +// return checksum; +// } +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_80320250.s") + +extern s32 D_8036DDF0; + +void func_803202D0(void) { + s32 addr = (s32) &D_803831D0.unk0; + addr ^= 0x7EDDF5F4; + addr ^= 0x7BEF9D80; + addr ^= 0x5326874; + *(s32*)(addr) = func_80320250(); +} + +s32 func_80320320(void) { + s32 addr = (s32) &D_803831D0.unk8[0]; + s32 checksum = 0x281E421C; + s32 len = 25; + s32 scrambled; + u32 i; + + // Scrambles the address of D_803831D8 + scrambled = (addr >> 8) & 0xFF0000; + scrambled += (addr & 0xFF) << 8; + scrambled = addr ^ scrambled; + // Unscrambles the address of D_803831D8 + addr = (scrambled & 0xFF000000) >> 8; + addr += (scrambled << 8) & 0xFF00; + addr ^= scrambled; + + for (i = 0; i < len; i++) { + checksum += (1 + i) * ((u8*)addr)[i]; + } + + return checksum; +} + +// regalloc +// void func_803203A0(void) { +// s32 addr = (s32) &D_803831D0.unk4; +// s32 scrambled; +// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19 +// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19 +// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19 +// *(s32*)(scrambled ^ 0x19) = func_80320320(); +// } +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_803203A0.s") + +s32 func_803203FC(s32 index) { + return func_803200A4(D_803831D0.unk8, index); +} + +void func_80320424(s32 index, s32 numBits) { + func_803200E4(D_803831D0.unk8, index, numBits); +} + +s32 func_80320454(s32 index, s32 arg1) { + s32 temp_v0; + + temp_v0 = func_803203FC(index); + func_803204E4(index, arg1); + return temp_v0; +} + +void func_8032048C(void) { + s32 i; + for (i = 0; i < 25; i++) { + D_803831D0.unk8[i] = 0; + } + func_803202D0(); + func_803203A0(); +} + +void func_803204E4(s32 index, s32 set) { + func_8032015C(D_803831D0.unk8, index, set); + func_803202D0(); + func_803203A0(); +} + +void func_80320524(s32 startIndex, s32 set, s32 length) { + func_803201C8(D_803831D0.unk8, startIndex, set, length); + func_803202D0(); + func_803203A0(); +} + +s32 func_8032056C(void) { + s32 temp_a0; + s32 temp_a1; + s32 temp_a1_2; + s32 phi_t9; + s32 addr = (s32)&D_803831D0; + s32 temp_v1; + + temp_v1 = ((addr & 0xE0000000) >> 15) + + ((addr & 0x1FC00000) >> 22) + + ((addr & 0x00300000) << 10) + + ((addr & 0x000F0000) << 7) + + ((addr & 0x0000E000) << 14) + + ((addr & 0x00001800) >> 4) + + ((addr & 0x00000780) << 10) + + ((addr & 0x00000060) << 4) + + ((addr & 0x00000018) << 18) + + ((addr & 0x00000007) << 11); + phi_t9 = (temp_v1 & 0x38000000) / (1 << 24); + temp_a0 = ((temp_v1 & 0x1E0600) << 0xB) | ((s32) (temp_v1 & 0x603800) / 8); + temp_a1 = (((temp_v1 & 0x1C07F) << 15) + ((temp_v1 & 0xC7800000) >> 17)) | + (phi_t9 + ((s32) (temp_v1 & 0x180) >> 6)); + temp_a1 = ((temp_a1 & 0x3FE000) << 7) | + (((temp_a0 >> 8) & 7) + ((temp_a1 << 0xA) & 0xFF800)) | + ((((u32) (temp_a0 & 0xF0000000) >> 0x15) + (temp_a1 & 0xE0000000)) ^ ((s32) ((temp_a0 / 0x40) & 0xF000) >> 9)); + return func_80320250() == *(s32*)temp_a1; +} + +s32 func_80320708(void) { + u16 temp_t6; + s32 addr; + + temp_t6 = ((s32) &D_803831D0.unk4 >> 0x10); + addr = (s32) &D_803831D0.unk4 ^ temp_t6; + return func_80320320() == *(s32*)(addr ^ temp_t6); +} + +extern u8 D_803831F8[]; + +// regalloc +// void func_80320748(void) { +// s32 *addr = &D_8036DDF0; +// s32 phi_v0; + +// for (phi_v0 = 0; phi_v0 < *addr; phi_v0++) { +// *(D_803831F8 + phi_v0) = *((u8*)&D_803831D0 + phi_v0); +// } +// } +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_80320748.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_94A20/func_80320798.s") diff --git a/src/core2/levelspecificflags.c b/src/core2/levelspecificflags.c index 765a65c8..85c165db 100644 --- a/src/core2/levelspecificflags.c +++ b/src/core2/levelspecificflags.c @@ -6,9 +6,9 @@ void levelSpecificFlags_set(arg0, arg1); //levelSpecificFlags -extern u8 D_80383328[]; extern u32 D_80383320; extern u32 D_80383324; +extern u8 D_80383328[]; #pragma GLOBAL_ASM("asm/nonmatchings/core2/levelspecificflags/_levelSpecificFlags_calcCRC1.s") diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index d5bdbaa3..0b5cab9f 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -288,7 +288,7 @@ segments: - [0x82000, c, code_82000] - [0x83340, c, code_83340] - [0x83D70, c, code_83D70] - - [0x840D0, c, code_840D0] + - [0x840D0, c, code_840D0] #DONE - [0x84470, c, gc/transition] #DONE - [0x851D0, c, code_851D0] - [0x857B0, c, code_857B0] #DONE @@ -300,7 +300,9 @@ segments: - [0x91E10, c, code_91E10] - [0x935F0, c, code_935F0] - [0x93C10, c, code_93C10] - - [0x94620, c, code_94620] + - [0x94620, c, code_94620] #DONE + - [0x94780, c, code_94780] #DONE + - [0x94A20, c, code_94A20] - [0x99860, c, code_99860] #DONE - [0x999A0, c, code_999A0] #DONE - [0x99F80, c, jiggyscore] #DONE @@ -1014,5 +1016,6 @@ segments: - [0xf2c00, .bss, code_91E10] - [0xf2c00, .bss, code_93C10] - [0xf2c00, .bss, code_94620] + - [0xf2c00, .bss, code_94780] # - [0xf2c00, .bss, code_CD6E0] # D_803863E0 - [0xf2c00] # core2 end