diff --git a/include/bs_funcs.h b/include/bs_funcs.h
index 271ec66c..4db85e14 100644
--- a/include/bs_funcs.h
+++ b/include/bs_funcs.h
@@ -710,6 +710,6 @@ void func_802AE9C8(void);
void func_802AEA2C(void);
void func_802AEB24(void);
void func_802AF604(void);
-void func_802AF668(void);
+void bsdronevanish_update(void);
void func_802AF768(void);
#endif
diff --git a/include/enums.h b/include/enums.h
index 7c5238b4..68739629 100644
--- a/include/enums.h
+++ b/include/enums.h
@@ -351,6 +351,13 @@ enum button_e{
BUTTON_C_RIGHT = 0xD
};
+#define FACE_BUTTON(button) (button - BUTTON_A)
+
+enum joystick_e{
+ JOYSTICK_X = 0x0,
+ JOYSTICK_Y = 0x1
+};
+
enum map_e
{
MAP_1_SM_SPIRAL_MOUNTAIN = 0x01,
diff --git a/include/structs.h b/include/structs.h
index 8447d2ae..9e7d277c 100644
--- a/include/structs.h
+++ b/include/structs.h
@@ -318,15 +318,6 @@ typedef struct struct_16_s{
s32 unkC;
}struct16s;
-typedef struct struct_1A_s{
- f32 unk0;
- f32 unk4;
- u8 *str;
- s16 unkC;
- u8 unkE;
- u8 unkF;
-}struct1As;
-
typedef struct struct_1B_s{
s16 map;
s16 exit;
@@ -338,13 +329,6 @@ typedef struct struct_1C_1_s{
u8 *string; //0x4
}struct1Cs_1;
-typedef struct struct_1C_s{
- s8 unk0;
- s8 unk1;
- s16 x; //0x2
- u8 *string; //0x4
-}struct1Cs;
-
typedef struct struct_1D_s{
BKModel *unk0;
s16 unk4;
@@ -891,4 +875,8 @@ typedef struct{
s16 count;
s32 offset[];
}Struct84s;
+
+typedef struct{
+ u8 pad0[1];
+}struct85s;
#endif
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index 2053e283..ac9c0206 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
core2
- 80.9535%
- 80.9535%
+ 81.1645%
+ 81.1645%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 023d9168..ce4f906a 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 84.0543%
- 84.0543%
+ 84.1753%
+ 84.1753%
\ No newline at end of file
diff --git a/src/BGS/code_3420.c b/src/BGS/code_3420.c
index ea6dd00e..a2e14072 100644
--- a/src/BGS/code_3420.c
+++ b/src/BGS/code_3420.c
@@ -595,7 +595,7 @@ void chvilegame_update(Actor *this) {
if (this->state == 5) {
if (local->unkC == 7) {
func_8024E55C(0, sp30);
- if ((sp30[BUTTON_Z] > 0) && func_8038C2A8(local->vile_marker)) {
+ if ((sp30[FACE_BUTTON(BUTTON_B)] > 0) && func_8038C2A8(local->vile_marker)) {
func_8038A068(this, 0xA);
}
} else {
diff --git a/src/FP/code_2350.c b/src/FP/code_2350.c
index 54900db0..2a400b9c 100644
--- a/src/FP/code_2350.c
+++ b/src/FP/code_2350.c
@@ -473,7 +473,7 @@ void func_803896FC(Actor *this){
&& func_8028ECAC() == 0
&& func_8028F20C()
&& func_8028EFC8()
- && sp3C[1] == 1
+ && sp3C[FACE_BUTTON(BUTTON_B)] == 1
&& !func_803114B0()
){
if( local->unk19 == 1
diff --git a/src/MM/ch/juju.c b/src/MM/ch/juju.c
index c8cd9093..a2f5b13f 100644
--- a/src/MM/ch/juju.c
+++ b/src/MM/ch/juju.c
@@ -94,7 +94,7 @@ void func_803891E8(s32 x, s32 y, s32 z, s32 yaw){
void func_80389244(s32 x, s32 y, s32 z, s32 yaw){
func_802C3F04(func_803891E8, x, y, z, yaw);
func_802BB3DC(0, 10.0f, 0.8f);
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
}
void func_803892A8(ActorMarker **ptr){
@@ -113,7 +113,7 @@ void func_803892A8(ActorMarker **ptr){
jujuPtr->unk4 = 0xC;
func_8030E484(0x3f6);
if(i == 3){
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
timedFunc_set_4(1.25f, func_80389244, jujuPtr->unk8_x, jujuPtr->unk8_y, jujuPtr->unk8_z, actorPtr->yaw);
func_8025A6EC(COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 0x6d60);
}
diff --git a/src/SM/code_2990.c b/src/SM/code_2990.c
index 731b917f..4aad842e 100644
--- a/src/SM/code_2990.c
+++ b/src/SM/code_2990.c
@@ -450,7 +450,7 @@ void func_803899B0(Actor * this){
){
if(this->unkF4_8 != 8 || !func_8031FF1C(0xFC)){
if( func_8028EFC8()
- && sp50[1] == 1
+ && sp50[FACE_BUTTON(BUTTON_B)] == 1
){
if(sp34 || this->unkF4_8 == 1 || this->unkF4_8 == 8){
func_80388FA0(this, 5);
@@ -528,9 +528,9 @@ void func_803899B0(Actor * this){
if(this->unk38_0){
this->unk60 += time_getDelta();
if(func_803114C4() != 0xe1d){
- if(sp50[0] == 1)
+ if(sp50[FACE_BUTTON(BUTTON_A)] == 1)
sp38 = 1; //A button pressed
- else if(sp50[1] == 1)
+ else if(sp50[FACE_BUTTON(BUTTON_B)] == 1)
sp38 = 0; //B button pressed
}//L8038A218
diff --git a/src/SM/code_4070.c b/src/SM/code_4070.c
index 9d5e9e08..74fd7d22 100644
--- a/src/SM/code_4070.c
+++ b/src/SM/code_4070.c
@@ -130,7 +130,7 @@ void func_8038A5D8(Actor *this){
sp5C[2] = this->velocity_z;
func_8028FAB0(sp5C);
if( func_8028EFC8()
- && sp44[1] == 1
+ && sp44[FACE_BUTTON(BUTTON_B)] == 1
&& func_8028F20C()
){
if(this->sm_4070.unk0)
diff --git a/src/TTC/code_35D0.c b/src/TTC/code_35D0.c
index 4c00e545..b1d8e754 100644
--- a/src/TTC/code_35D0.c
+++ b/src/TTC/code_35D0.c
@@ -167,9 +167,9 @@ void func_80389CC4(s16 arg0[3], s32 arg1){
func_802EFB98(D_8038D700, &D_8038C928);
particleEmitter_emitN(D_8038D700, 5);
D_8038D708[2] += 300.0f;
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
timedFunc_set_2(0.1f, (TFQM2) func_8028F45C, 9, (s32)&D_8038D708);
- timedFunc_set_1(0.1f, (TFQM1) func_80314AC8, 1);
+ timedFunc_set_1(0.1f, (TFQM1) gcpausemenu_80314AC8, 1);
func_80311480(ASSET_A17_TEXT_BURIED_TREASURE_SPAWNED, 4, NULL, NULL, NULL, NULL);
D_8037DCB4++;
}//L80389E70
diff --git a/src/core2/bs/drone.c b/src/core2/bs/drone.c
index cd24e66f..a7c8b1cb 100644
--- a/src/core2/bs/drone.c
+++ b/src/core2/bs/drone.c
@@ -13,7 +13,7 @@ struct_drone D_80364B30[] = {
{02, {func_802AEEF4, func_802AEFB0, func_802AF164, func_80296608}},
{04, {bsdronexform_init, bsdronexform_update, bsdronexform_end, bsdronexform_interrupt}},
{05, {func_802AE9C8, func_802AEA2C, func_802AEB24, NULL}},
- {06, {func_802AF604, func_802AF668, func_802AF768, NULL}},
+ {06, {func_802AF604, bsdronevanish_update, func_802AF768, NULL}},
{0}
};
diff --git a/src/core2/bs/washy.c b/src/core2/bs/washy.c
index 86299e09..edefb23e 100644
--- a/src/core2/bs/washy.c
+++ b/src/core2/bs/washy.c
@@ -98,6 +98,6 @@ void func_802B9B14(void){
}
void func_802B9D00(void){
- if(bs_getInterruptType() == 0xA)
+ if(bs_getInterruptType() == BS_INTR_A)
func_80296608();
}
diff --git a/src/core2/ch/gameSelect.c b/src/core2/ch/gameSelect.c
index 62f894ac..d7f041f2 100644
--- a/src/core2/ch/gameSelect.c
+++ b/src/core2/ch/gameSelect.c
@@ -373,9 +373,9 @@ void func_802C4C14(Actor *this){
break;
case 5://L802C5040
if(D_8037DD2C == 0 &&
- (sp5C[0] == 1 || sp5C[1] == 1)
+ (sp5C[FACE_BUTTON(BUTTON_A)] == 1 || sp5C[FACE_BUTTON(BUTTON_B)] == 1)
){
- if(sp5C[0] == 1){
+ if(sp5C[FACE_BUTTON(BUTTON_A)] == 1){
func_802C4AC8(sp84);
func_8025A6EC(COMUSIC_2B_DING_B, 22000);
}
@@ -419,7 +419,7 @@ void func_802C4C14(Actor *this){
func_8025A6EC(COMUSIC_2C_BUZZER, 22000);
}
}
- else if(sp5C[0] == 1){//L802C5250
+ else if(sp5C[FACE_BUTTON(BUTTON_A)] == 1){//L802C5250
if(func_8033D1BC(sp84)){
if(randf() < 0.1){
switch(sp84){
diff --git a/src/core2/ch/mole.c b/src/core2/ch/mole.c
index 25a74e3b..da2b89d1 100644
--- a/src/core2/ch/mole.c
+++ b/src/core2/ch/mole.c
@@ -361,7 +361,7 @@ void func_802D9D60(Actor *this){
if( !func_8028ECAC()
&& func_80329530(this, 0xFA)
&& func_8028EFC8()
- && sp50[BUTTON_Z] == 1
+ && sp50[FACE_BUTTON(BUTTON_B)] == 1
){
func_802D9CBC(this);
}
diff --git a/src/core2/code_28220.c b/src/core2/code_28220.c
index a27f45d8..9a708024 100644
--- a/src/core2/code_28220.c
+++ b/src/core2/code_28220.c
@@ -13,8 +13,8 @@ struct {
u8 D_8037D468;
/* .code */
-void func_802AF1B0(s32 arg0) {
- switch (arg0) {
+void bsdronevanish_setState(s32 next_state) {
+ switch (next_state) {
case 1:
func_8029E3C0(0, 0.3f);
break;
@@ -24,13 +24,13 @@ void func_802AF1B0(s32 arg0) {
func_8029E3C0(0, 0.4f);
break;
case 3:
- func_80314B30();
+ gcpausemenu_returnToLair();
func_802921C8(0);
comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000);
func_8029E3C0(0, 2.0f);
break;
}
- D_8037D468 = arg0;
+ D_8037D468 = next_state;
}
void func_802AF268(void) {
@@ -97,10 +97,10 @@ void func_802AF604(void){
func_80294378(6);
func_802AF4E0();
D_8037D468 = 0;
- func_802AF1B0(1);
+ bsdronevanish_setState(1);
}
-void func_802AF668(void) {
+void bsdronevanish_update(void) {
s32 next_state;
bool sp20;
@@ -109,7 +109,7 @@ void func_802AF668(void) {
case 1:
func_802AF550();
if (func_8029E1A8(0)) {
- func_802AF1B0(2);
+ bsdronevanish_setState(2);
}
break;
case 2:
@@ -117,7 +117,7 @@ void func_802AF668(void) {
sp20 = func_8029E1A8(0);
func_80291FB8((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 0.0f, 255.0f));
if (sp20) {
- func_802AF1B0(3);
+ bsdronevanish_setState(3);
}
break;
case 3:
diff --git a/src/core2/code_47C0.c b/src/core2/code_47C0.c
index 2d5ad13b..14ebb601 100644
--- a/src/core2/code_47C0.c
+++ b/src/core2/code_47C0.c
@@ -563,7 +563,7 @@ void func_8028BCA0(Prop *prop){
timedFunc_set_1(2.0f, func_8035644C, 0xB);
item_inc(ITEM_13_EMPTY_HONEYCOMB);
if(!(item_getCount(ITEM_13_EMPTY_HONEYCOMB) < 6)){
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
}
func_802F36DC(&prop->actorProp.x);
marker_despawn(marker);
diff --git a/src/core2/code_4A6F0.c b/src/core2/code_4A6F0.c
index 1432c1bd..cbc0ed3d 100644
--- a/src/core2/code_4A6F0.c
+++ b/src/core2/code_4A6F0.c
@@ -141,7 +141,7 @@ void func_802D1998(ActorMarker *caller, enum asset_e text_id, s32 arg2){
case 0xd90: //L802D1A40
func_80320004(BKPROG_12_HAS_TRANSFORMED_BEFORE, TRUE);
func_80311480(0xD8F + D_8037DDF0, 4, NULL, NULL, NULL, NULL);
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
break;
case 0xdaa: //L802D1A7C /* fall-through */
@@ -175,7 +175,7 @@ void func_802D1998(ActorMarker *caller, enum asset_e text_id, s32 arg2){
return;
default: //L802D1B64
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
break;
}
func_80328A84(this, 4);
@@ -196,7 +196,7 @@ void func_802D1B8C(Actor *this, enum transformation_e transform_id) {
func_80320004(BKPROG_F7_HAS_TRANSFORMED_IN_CRYPT, TRUE);
return;
}
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
func_80328A84(this, 4U);
return;
}
@@ -306,7 +306,7 @@ void func_802D1CF0(Actor *this) {
&& func_8028EFC8()
){
func_8024E55C(0, &sp58);
- if(sp58[BUTTON_Z] == 1){
+ if(sp58[FACE_BUTTON(BUTTON_B)] == 1){
if (D_8037DDF0 == TRANSFORM_7_WISHWASHY) {
this->unk38_31 = 0;
} else if (player_getTransformation() == TRANSFORM_1_BANJO && !func_8031FF1C(func_802D17A0(D_8037DDF0)) && map_get() != MAP_7A_GL_CRYPT){
@@ -346,7 +346,7 @@ void func_802D1CF0(Actor *this) {
}
func_80328A84(this, 5);
}
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
break;
}
@@ -412,7 +412,7 @@ void func_802D1CF0(Actor *this) {
func_80311480(0xDAF, 6, NULL, this->marker, func_802D1998, NULL);
break;
}
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
func_80328A84(this, 4);
}
break;
diff --git a/src/core2/code_4C020.c b/src/core2/code_4C020.c
index 3aa3d0a2..8dfd6584 100644
--- a/src/core2/code_4C020.c
+++ b/src/core2/code_4C020.c
@@ -630,7 +630,7 @@ void func_802D5058(enum map_e map_id, s32 arg1, bool arg2) {
} else {
timedFunc_set_0(0.25f, func_802D63D4);
}
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
}
@@ -877,7 +877,7 @@ void func_802D5628(void){
}
else{//L802D5B24
func_8024E55C(0, sp50); //get button inputs
- if(sp50[4] == 1){
+ if(sp50[FACE_BUTTON(BUTTON_C_UP)] == 1){
func_80324C58();
func_802D6114();
}
@@ -1000,7 +1000,7 @@ void func_802D6114(void){
}
else{//L802D61DC
func_80347A14(1);
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
}
}
@@ -1029,7 +1029,7 @@ void func_802D6264(f32 arg0, enum map_e arg1, s32 arg2, s32 arg3, s32 arg4, enum
else{
timedFunc_set_0(arg0, func_802D63D4);
}
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
}
void func_802D6310(f32 arg0, enum map_e arg1, s32 arg2, s32 arg3, enum bkprog_e arg4){
diff --git a/src/core2/code_5C870.c b/src/core2/code_5C870.c
index ea106190..58e2c0b1 100644
--- a/src/core2/code_5C870.c
+++ b/src/core2/code_5C870.c
@@ -140,7 +140,7 @@ void func_802E39D0(Gfx **gdl, Mtx **mptr, Vtx **vptr, s32 arg3, s32 arg4){
func_8032D474(gdl, mptr, vptr);
}
- func_80314320(gdl, mptr, vptr);
+ gcpausemenu_draw(gdl, mptr, vptr);
if(!func_802E49F0()){
func_8025AFC0(gdl, mptr, vptr);
}
@@ -186,7 +186,7 @@ void func_802E3BF8(enum game_mode_e next_mode, s32 arg1){
}
if(D_8037E8E0.game_mode == GAME_MODE_4_PAUSED && next_mode != GAME_MODE_4_PAUSED ){
- func_803117E8();
+ gcpausemenu_free();
}
//L802E3C84
@@ -242,7 +242,7 @@ void func_802E3BF8(enum game_mode_e next_mode, s32 arg1){
func_8024E7C8();
func_8025A430(0, 2000, 3);
func_8025A23C(COMUSIC_6F_PAUSE_SCREEN);
- func_80312B8C();
+ gcpausemenu_init();
}//L802E3E6C
}
@@ -534,7 +534,7 @@ bool func_802E4424(void) {
&& gctransition_8030BD98()
&& (level_get() != 0)
&& (0.6 < D_8037E8E0.unk10)
- && func_80314B00()
+ && gcpausemenu_80314B00()
&& !func_8028F22C()
&& func_8032056C()
&& levelSpecificFlags_validateCRC1()
@@ -549,7 +549,7 @@ bool func_802E4424(void) {
break;
case GAME_MODE_4_PAUSED: /* switch 2 */
- if (func_80313380() || func_8031C880()) {
+ if (gcPauseMenu_update() || func_8031C880()) {
FUNC_8030E624(SFX_C9_PAUSEMENU_ENTER, 0.899316, 32736);
func_80335110(1);
func_8025A430(-1, 2000, 3);
@@ -593,8 +593,8 @@ s32 func_802E48D8(void){
func_802F3300();
func_802F542C();
gcdialog_defrag();
- if(D_8037E8E0.game_mode == 4)
- func_80311740();
+ if(D_8037E8E0.game_mode == GAME_MODE_4_PAUSED)
+ gcpausemenu_defrag();
switch(get_loaded_overlay_id()){
case OVERLAY_2_WHALE:
func_803894A0();
diff --git a/src/core2/code_76D90.c b/src/core2/code_76D90.c
index 93447bc6..d4667164 100644
--- a/src/core2/code_76D90.c
+++ b/src/core2/code_76D90.c
@@ -10,7 +10,7 @@ f32 func_802FDE60(f32);
void timedFunc_set_1(f32, void (*)(s32), s32);
void timedFunc_set_2(f32, void (*)(s32,s32), s32, s32);
void item_inc(s32);
-void func_80314AC8(s32);
+void gcpausemenu_80314AC8(s32);
void item_set(s32, s32);
@@ -246,7 +246,7 @@ void func_802FE844(s32 arg0, struct8s *arg1){
timedFunc_set_1(1.25f, (TFQM1)item_inc, ITEM_15_HEALTH_TOTAL);
timedFunc_set_1(1.25f, (TFQM1)func_8030E484, SFX_3EA_UNKNOWN);
timedFunc_set_2(1.25f, (TFQM2)item_set, ITEM_14_HEALTH, item_getCount(ITEM_15_HEALTH_TOTAL)+1);
- timedFunc_set_1(1.5f, (TFQM1)func_80314AC8, 1);
+ timedFunc_set_1(1.5f, (TFQM1)gcpausemenu_80314AC8, 1);
}
break;
case 2://L802FECD4
diff --git a/src/core2/code_87E30.c b/src/core2/code_87E30.c
index 3a7c15dd..50681352 100644
--- a/src/core2/code_87E30.c
+++ b/src/core2/code_87E30.c
@@ -536,7 +536,7 @@ void gcdialog_update(void) {
break;
case 3: /* switch 1 */
temp_v1_2 = D_80382E20.unk128_31 & 0x80;
- if (D_80382E20.unk128_0 && (sp90[1] == 1)) {
+ if (D_80382E20.unk128_0 && (sp90[FACE_BUTTON(BUTTON_B)] == 1)) {
gcdialog_setState(6);
}
else{
@@ -550,9 +550,9 @@ void gcdialog_update(void) {
break;
case 4: /* switch 1 */
- if (sp90[0] == 1) {
+ if (sp90[FACE_BUTTON(BUTTON_A)] == 1) {
D_80382E20.unk12C_23 = 1;
- } else if (sp90[1] == (s32) 1) {
+ } else if (sp90[FACE_BUTTON(BUTTON_B)] == 1) {
D_80382E20.unk12C_23 = 0;
}
if (D_80382E20.unk12C_23 != -1) {
diff --git a/src/core2/code_91E10.c b/src/core2/code_91E10.c
index 86a5dd22..8af326d9 100644
--- a/src/core2/code_91E10.c
+++ b/src/core2/code_91E10.c
@@ -483,7 +483,7 @@ void func_80319EA4(void) {
switch (D_803830E0->unk10) {
case 1:
- if (func_8028EFC8() && (sp58[BUTTON_Z] == 1)) {
+ if (func_8028EFC8() && (sp58[FACE_BUTTON(BUTTON_B)] == 1)) {
sp44 = func_80319040(0);
func_803184C8(D_803830E0->unk24[0], 100.0f, 2, 4, sp44, func_80319028(0), 0);
return;
@@ -511,7 +511,7 @@ void func_80319EA4(void) {
}
}
}
- if ((sp58[BUTTON_START] == 1) || (item_empty(ITEM_0_HOURGLASS_TIMER))) {
+ if ((sp58[FACE_BUTTON(BUTTON_A)] == 1) || (item_empty(ITEM_0_HOURGLASS_TIMER))) {
D_803830E0->unk12 = (u8) D_803830E0->unk13;
}
if ((s8) D_803830E0->unk12 != -1) {
diff --git a/src/core2/code_935F0.c b/src/core2/code_935F0.c
index 503e7200..e49737a4 100644
--- a/src/core2/code_935F0.c
+++ b/src/core2/code_935F0.c
@@ -2,8 +2,20 @@
#include "functions.h"
#include "variables.h"
+extern void func_8028F918(s32);
+
void func_8031A9E4(Actor *this);
+enum minigame_e {
+ MINIGAME_0_BOSS_BOOM_BOX,
+ MINIGAME_1_VILE,
+ MINIGAME_2_GV_MATCHING,
+ MINIGAME_3_ZUBBAS,
+ MINIGAME_4_TIPTUP,
+ MINIGAME_5_SANDCASTLE,
+ MINIGAME_F_INVALID = 0xF
+};
+
/* .data */
extern ActorInfo D_8036D970 = {
0x1E1, 0x376, 0x0,
@@ -13,35 +25,119 @@ extern ActorInfo D_8036D970 = {
};
/* .code */
-int func_8031A580(void){
+enum minigame_e func_8031A580(void){
switch(map_get()){
case MAP_3A_RBB_BOSS_BOOM_BOX:
- return 0;
+ return MINIGAME_0_BOSS_BOOM_BOX;
case MAP_10_BGS_MR_VILE:
- return 1;
+ return MINIGAME_1_VILE;
case MAP_13_GV_MEMORY_GAME:
- return 2;
+ return MINIGAME_2_GV_MATCHING;
case MAP_5A_CCW_SUMMER_ZUBBA_HIVE:
case MAP_5B_CCW_SPRING_ZUBBA_HIVE:
case MAP_5C_CCW_AUTUMN_ZUBBA_HIVE:
- return 3;
+ return MINIGAME_3_ZUBBAS;
case MAP_11_BGS_TIPTUP:
- return 4;
+ return MINIGAME_4_TIPTUP;
case MAP_A_TTC_SANDCASTLE:
- return 5;
+ return MINIGAME_5_SANDCASTLE;
}
- return 0xf;
+ return MINIGAME_F_INVALID;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_935F0/func_8031A618.s")
+void func_8031A618(Actor *this) {
+ Actor *jiggy;
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_935F0/func_8031A678.s")
+ if (this->unk10_12 == MINIGAME_5_SANDCASTLE) {
+ jiggy = func_80326EEC(ACTOR_46_JIGGY);
+ if (jiggy != NULL) {
+ actor_collisionOff(jiggy);
+ jiggy->position[1] -= 1000.0f;
+ }
+ }
+}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_935F0/func_8031A794.s")
+void func_8031A678(Actor *this){
+ Struct6Ds *sp2C;
+ f32 sp20[3];
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_935F0/func_8031A7C4.s")
+ sp2C = func_8034C528(0x190);
+ switch (this->unk10_12) {
+ case MINIGAME_0_BOSS_BOOM_BOX:
+ sp20[0] = -2000.0f;
+ sp20[1] = 0.0f;
+ sp20[2] = 0.0f;
+ func_8034DDF0(sp2C, sp20, sp20, 0.0f, 1);
+ return;
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_935F0/func_8031A7F4.s")
+ case MINIGAME_3_ZUBBAS:
+ if (map_get() != MAP_5B_CCW_SPRING_ZUBBA_HIVE) {
+ sp20[0] = 0.0f;
+ sp20[1] = 0.0f;
+ sp20[2] = -1000.0f;
+ func_8034DDF0(sp2C, sp20, sp20, 0.0f, 1);
+ }
+ break;
+
+ case MINIGAME_5_SANDCASTLE:
+ sp2C = func_8034C528(0x191);
+ func_8034DEB4(sp2C, -1000.0f);
+ break;
+
+ case MINIGAME_2_GV_MATCHING:
+ sp2C = func_8034C528(0x1E7);
+ func_8034DEB4(sp2C, -1000.0f);
+ break;
+
+ case MINIGAME_1_VILE:
+ case MINIGAME_4_TIPTUP:
+ func_8034DEB4(sp2C, -1000.0f);
+ break;
+ }
+}
+
+void func_8031A794(ActorMarker *marker, enum asset_e text_id, s32 arg2){
+ Actor *this = marker_getActor(marker);
+ this->unk138_24 = TRUE;
+}
+
+void func_8031A7C4(ActorMarker *marker, enum asset_e text_id, s32 arg2){
+ if(arg2 == 1){
+ func_8028FB88(TRANSFORM_5_CROC);
+ }
+}
+
+void func_8031A7F4(Actor *this, u32 arg1) {
+ switch (arg1) {
+ case 1:
+ func_8028F918(2);
+ if (this->unk10_12 == MINIGAME_1_VILE) {
+ func_80347A14(0);
+ }
+ if (func_803203FC(this->unk10_12 + 6) == 0) {
+ func_80324DBC(2.0f, this->unk10_12 + 0x1026, 0xA2, NULL, this->marker, func_8031A794, func_8031A7C4);
+ func_803204E4(this->unk10_12 + 6, 1);
+ this->unk138_23 = TRUE;
+ } else {
+ func_80324DBC(2.0f, 0xD38, 0x20, NULL, this->marker, func_8031A794, NULL);
+ }
+ break;
+ case 2:
+ func_8028F918(0);
+ func_803204E4(3, 1);
+ break;
+ case 3:
+ func_803204E4(4, 1);
+ func_8028F918(2);
+ func_8025AB00();
+ func_8025A70C((func_803203FC(5)) ? COMUSIC_3B_MINIGAME_VICTORY : COMUSIC_3C_MINIGAME_LOSS);
+ func_802E4A70();
+ func_803204E4(0x21, TRUE);
+ timedFunc_set_3(2.0f, (TFQM3)func_802E4078, MAP_8E_GL_FURNACE_FUN, 1, 1);
+ break;
+ }
+ func_80328A84(this, arg1);
+}
void func_8031A9BC(Actor *this){
func_803204E4(3, 0);
@@ -70,7 +166,7 @@ void func_8031A9E4(Actor *this){
func_803204E4(5, 0);
func_803204E4(3, 0);
func_8031A7F4(this, 1);
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
}
if(func_803203FC(2)){
switch(this->state){
@@ -79,9 +175,9 @@ void func_8031A9E4(Actor *this){
func_8031A7F4(this, 2);
break;
case 2://L8031AB50
- func_8028FA14(0x8E, 2);
+ func_8028FA14(MAP_8E_GL_FURNACE_FUN, 2);
if(item_getCount(ITEM_14_HEALTH) == 0)
- item_set(ITEM_6_HOURGLASS, FALSE);
+ item_set(ITEM_6_HOURGLASS, 0);
if(!func_803203FC(3)){
func_8031A7F4(this, 3);
}
diff --git a/src/core2/code_93C10.c b/src/core2/code_93C10.c
index 870f450e..0bc4b909 100644
--- a/src/core2/code_93C10.c
+++ b/src/core2/code_93C10.c
@@ -2,38 +2,152 @@
#include "functions.h"
#include "variables.h"
+extern void func_8028A8D0(void);
+extern void func_8028F918(s32);
+extern void func_80311714(int);
+
+typedef struct struct_1C_s{
+ u8 map;
+ s8 exit;
+ s16 x; //0x2
+ char *str; //0x4
+ s8 unk8;
+}struct1Cs;
+
+
+
+/* .data */
+extern s8 D_8036DD9C[];
+extern struct85s D_8036DDAC[];
+
/* .bss */
struct{
- u8 pad0[3];
+ u8 unk0;
+ u8 unk1;
+ u8 pad2[1];
s8 unk3;
- u8 pad4[3];
- s8 unk7;
- u8 pad8[4];
+ s8 unk4;
+ u8 unk5;
+ u8 unk6;
+ s8 unk7; //jiggy total
+ s32 unk8;
struct1Cs *unkC;
}D_803830F0;
-s32 D_80383100[20];
+NodeProp *D_80383100[20];
+
+/* public */
+void func_8031B554(void);
/* .code */
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031ABA0.s")
+void func_8031ABA0(void) {
+ func_8031FBF8();
+ func_8031FBA0();
+ if (D_803830F0.unk8 != -1) {
+ func_802C5A3C(D_803830F0.unk8);
+ func_8033D13C(D_803830F0.unk8);
+ func_80347AA8();
+ }
+}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031ABF8.s")
+void func_8031ABF8(void) {
+ D_803830F0.unk8 = func_802C5A30();
+ func_8030AFD8(1);
+ mapSavestate_free_all();
+ levelSpecificFlags_clear();
+ func_80347A7C();
+ func_8031FBF8();
+ func_8031FBA0();
+ func_803204E4(0x1F, 1);
+ if (D_803830F0.unk6 == 1) {
+ func_803204E4(0xC1, 1);
+ }
+ func_803228D8();
+ func_802E4A70();
+}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031AC8C.s")
+void func_8031AC8C(void) {
+ func_803228D8();
+ if (map_getLevel(D_803830F0.unkC->map) != level_get()) {
+ func_802E4A70();
+ }
+
+ if (D_803830F0.unkC->exit < 0) {
+ func_8034BA7C(D_803830F0.unkC->map, 0x5A - D_803830F0.unkC->exit);
+ } else {
+ func_802E40D0(D_803830F0.unkC->map, 0x65);
+ func_802E412C(1, 8);
+ func_802E40C4(9);
+ }
+ D_803830F0.unk5 = 1;
+}
+
+void func_8031AD2C(s32);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031AD2C.s")
void func_8031B010(void){
func_8031AD2C(6);
}
+void func_8031B030(ActorMarker *caller, enum asset_e text_id, s32 arg2);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031B030.s")
void func_8031B070(s32 arg0){
struct1Cs *v0 = D_803830F0.unkC;
- print_bold_overlapping(v0->x, D_803830F0.unk3, -1.2f, v0->string);
+ print_bold_overlapping(v0->x, D_803830F0.unk3, -1.2f, v0->str);
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031B0B0.s")
+void func_8031B0B0(void) {
+ s32 sp34;
+
+ if ((map_get() == MAP_96_CS_END_BEACH_1) && mapSpecificFlags_get(4)) {
+ mapSpecificFlags_set(4, FALSE);
+ func_8031B554();
+ return;
+ }
+ if (func_803203FC(0x1F) != 0) {
+ func_8028A8D0();
+ switch (D_803830F0.unk0) {
+ case 3:
+ if (D_803830F0.unk5 == 0) {
+ if (map_get() == D_803830F0.unkC->map) {
+ if (D_803830F0.unk6 == 0) {
+ sp34 = 0xA0;
+ if (D_803830F0.unkC->exit >= 0)
+ sp34 = 0xA8;
+ timedFunc_set_1(1.0f, (TFQM1)func_80311714, 0);
+ func_80324DBC(1.0f, D_803830F0.unk1 + 0x11AF, sp34, NULL, NULL, func_8031B030, NULL);
+ timedFunc_set_1(1.0f, (TFQM1)func_80311714, 1);
+ } else if (D_803830F0.unkC->exit >= 0) {
+ func_8028F918(2);
+ }
+ timedFunc_set_1(1.0f, (TFQM1)func_8031AD2C, 4);
+ D_803830F0.unk5 = 1U;
+ }
+ }
+ break;
+ case 4:
+ func_8031B070(D_803830F0.unk1);
+ D_803830F0.unk4 ++;
+ D_803830F0.unk3 += D_8036DD9C[D_803830F0.unk4];
+ if (D_803830F0.unk4 == 0xC) {
+ func_8031AD2C(5);
+ }
+ break;
+ case 5:
+ func_8031B070(D_803830F0.unk1);
+ return;
+ case 6:
+ func_8031B070(D_803830F0.unk1);
+ D_803830F0.unk4--;
+ D_803830F0.unk3 -= D_8036DD9C[D_803830F0.unk4];
+ if (D_803830F0.unk4 == 0) {
+ func_8031AD2C(7);
+ }
+ break;
+ }
+ }
+}
void func_8031B2F0(void){}
@@ -46,15 +160,56 @@ void func_8031B2F8(void){
func_8031AD2C(1);
}
-
+#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031B354.s")
+#else
+void func_8031B354(void) {
+ f32 sp40[3];
+ u32 var_s0;
+ u32 temp_v0;
+ s32 var_s2;
+
+ if (func_803203FC(0x20) != 0) {
+ func_8031B2F8();
+ return;
+ }
+ if (func_803203FC(0x1F) != 0) {
+ func_80347A14(0);
+ if ((D_803830F0.unk0 == 3)){
+ D_803830F0.unk5 = 0;
+ if(D_803830F0.unkC->exit >= 0) {
+ func_802BBC58(1);
+ set_camera_to_node(D_803830F0.unkC->exit);
+ if (D_803830F0.unkC->unk8 > 0) {
+ temp_v0 = func_80304FC4(&D_8036DDAC, &D_80383100, 0x14);
+ for(var_s2 = FALSE, var_s0 = 0; (var_s0 < temp_v0) && (var_s2 == FALSE); var_s0++){
+ if (temp_v0 > 0) {
+ if (nodeprop_getRadius(D_80383100[var_s0]) == D_803830F0.unkC->unk8) {
+ var_s2 = TRUE;
+ nodeprop_getPosition(D_80383100[var_s0], sp40);
+ func_8028F85C(sp40);
+ }
+ }
+ }
+ }
+ if (var_s2 == FALSE) {
+ func_802BAEF4(sp40);
+ func_8028F85C(sp40);
+ }
+ }
+ }
+ } else {
+ func_8031AD2C(0);
+ }
+}
+#endif
int func_8031B4CC(void){
- return (D_803830F0.unkC && D_803830F0.unkC->unk1 < 0);
+ return ((D_803830F0.unkC != NULL) && (D_803830F0.unkC[0].exit < 0));
}
int func_8031B4F4(void){
- return (D_803830F0.unkC) ? D_803830F0.unkC[1].unk0 : 0;
+ return (D_803830F0.unkC != NULL) ? D_803830F0.unkC->unk8 : 0;
}
void func_8031B51C(void){
diff --git a/src/core2/gc/pauseMenu.c b/src/core2/gc/pauseMenu.c
index 90be15bc..3a9a9926 100644
--- a/src/core2/gc/pauseMenu.c
+++ b/src/core2/gc/pauseMenu.c
@@ -9,8 +9,18 @@
#ifndef MAX
#define MAX(s,t) (((s) > t)?(s):(t))
#endif
+
+
+typedef struct struct_1A_s{
+ f32 delay;
+ f32 unk4;
+ u8 *str;
+ s16 y;
+ u8 portrait;
+ u8 unkF;
+}struct1As;
+
extern void func_803160A8(gczoombox_t *);
-extern void func_80312E80(struct1As *, s32);
extern void gczoombox_close(gczoombox_t *);
extern void gczoombox_minimize(gczoombox_t *);
extern void gczoombox_maximize(gczoombox_t *);
@@ -28,49 +38,49 @@ void func_8024E60C(s32, void *);
void func_8024E71C(s32, void *);
void func_8024E55C(s32, void *);
s32 getGameMode(void);
-void func_803120FC(s32);
void gczoombox_highlight(gczoombox_t *, int);
-void func_80312F88(s32 arg0);
-void func_80312FD0(s32 arg0);
-void func_80313134(void);
void func_802DC5B8(void);
void func_802DC560(s32, s32);
-void func_8031307C(s32);
s32 func_8024E67C(enum button_e);
-s32 func_80313070(void);
bool func_803188B4(gczoombox_t*);
bool func_803183A4(gczoombox_t*, char *);
bool func_8031FF1C(enum bkprog_e);
-s32 func_80312034(enum level_e);
enum map_e map_get(void);
bool func_802FD2D4(void);
bool func_802FC3C4(void);
-s32 func_80312D78(struct1As *, s32);
-void func_80311954(void);
-extern void func_802FACA4(enum item_e);
-extern void func_80318964(gczoombox_t *);
+extern void func_8025A2B0(void);
+extern void func_8025A430(s32, s32, s32);
+extern void func_802DC528(s32,s32);
extern void func_802F5060(enum asset_e);
extern void func_802F5188(void);
-extern void func_80311854(void);
+extern void func_802FACA4(enum item_e);
+extern void func_803184C8(gczoombox_t *, f32, s32, s32, f32, s32, s32);
+extern void func_80318640(gczoombox_t *, s32, f32, f32, s32);
+extern void func_80318734(gczoombox_t *, f32);
+extern void func_80318964(gczoombox_t *);
extern void func_8033BD20(void *);
-extern void func_8025A430(s32, s32, s32);
-extern void func_8025A2B0(void);
-extern void func_802DC528(s32,s32);
+
+enum gcpausemenu_state_e {
+ PAUSE_STATE_0_CLOSED = 0,
+ PAUSE_STATE_1_OPENING = 1,
+};
+
+
/* .data */
struct1As D_8036C4E0[4] = {
- {0.0f, 0.0f, "RETURN TO GAME", 55, 04, 0},
- {0.3f, 0.0f, "EXIT TO WITCH'S LAIR", -100, 04, 0},
- {0.1f, 0.0f, "VIEW TOTALS", 90, 06, 0},
- {0.2f, 0.0f, "SAVE AND QUIT", 125, 07, 0},
+ {0.0f, 0.0f, "RETURN TO GAME", 55, TALK_PIC_4_BANJO_1, 0},
+ {0.3f, 0.0f, "EXIT TO WITCH'S LAIR", -100, TALK_PIC_4_BANJO_1, 0},
+ {0.1f, 0.0f, "VIEW TOTALS", 90, TALK_PIC_6_JIGGY_1, 0},
+ {0.2f, 0.0f, "SAVE AND QUIT", 125, TALK_PIC_7_TOOTY_1, 0},
};
struct1As D_8036C520[4] = {
- {0.0f, 0.0f, "cc999 / 999cc", 0x1E, 8, 0},
- {0.1f, 0.0f, "cc999 / 999cc", 0x42, 9, 0},
- {0.2f, 0.0f, "cc999 / 999cc", 0x66, 10, 0},
- {0.3f, 0.0f, "cc999 : 999cc", 0x8A, 11, 0},
+ {0.0f, 0.0f, "cc999 / 999cc", 30, TALK_PIC_8_MUSIC_NOTE_1, 0},
+ {0.1f, 0.0f, "cc999 / 999cc", 66, TALK_PIC_9_JIGGY_2, 0},
+ {0.2f, 0.0f, "cc999 / 999cc", 102, TALK_PIC_A_EXTRA_HEALTH_MAX, 0},
+ {0.3f, 0.0f, "cc999 : 999cc", 138, TALK_PIC_B_CLOCK, 0},
};
struct1Bs D_8036C560[] = {
@@ -104,7 +114,7 @@ struct1Cs_1 D_8036C58C[0xD] = {
};
s8 D_8036C5F4[] = {1, 1, 1, 1, 0xb, 0x8, 0x6, 0x4, 0x3, 0x2, -1, -1, 0};
-u8 D_8036C604[0x7] = {0x14, 0x26, 0x25, 0x10, 0xf, 0xd, 0xc};
+u8 D_8036C604[0x7] = {ITEM_14_HEALTH, ITEM_26_JIGGY_TOTAL, ITEM_25_MUMBO_TOKEN_TOTAL, ITEM_10_GOLD_FEATHER, ITEM_F_RED_FEATHER, ITEM_D_EGGS, ITEM_C_NOTE};
u8 D_8036C60C[0xC] = {
0x28,
0x29,
@@ -124,64 +134,60 @@ u8 D_8036C60C[0xC] = {
/* .bss */
struct{
- u8 unk0; //menu state
+ u8 state;
u8 unk1;
- u8 unk2; //menu page
- u8 unk0_7:1;
- u8 unk0_6:1;
- u8 unk0_5:1;
- u8 unk0_4:1;
- u8 unk0_3:1;
- u8 unk0_2:1;
- u8 unk0_1:1;
- u8 unk0_0:1;
+ u8 selection; //menu page
+ u8 unk3_7:1;
+ u8 unk3_6:1; //busy?
+ u8 unk3_5:1;
+ u8 unk3_4:1;
+ u8 left_joystick_visible:1;
+ u8 right_joystick_visible:1;
+ u8 b_button_visible:1;
+ u8 unk3_0:1;
s8 unk4;
s8 unk5;
u8 unk6;
u8 unk7;
- s8 unk8;
+ s8 unk8; //header position
s8 unk9;
- s8 unkA; //joystick frame
- u8 unkB; //joystick total frames
+ s8 joystick_frame;
+ u8 joystick_frame_count;
f32 unkC;
gczoombox_t *zoombox[4];
f32 unk20;
- BKSprite * unk24; //joystick sprite
+ BKSprite * joystick_sprite;
f32 unk28;
- BKSprite * unk2C; //B-button sprite
- u8 unk30; //B-button frame
- u8 unk31; //B-button total frames
- s16 unk32; //B-button alpha
- s16 unk34; //left joystick alpha
- s16 unk36; //right joystick alpha
- u8 unk38;
+ BKSprite * b_button_sprite;
+ u8 b_button_frame;
+ u8 b_button_frame_count; //B-button total frames
+ s16 b_button_alpha; //B-button alpha
+ s16 left_joystick_alpha; //left joystick alpha
+ s16 right_joystick_alpha; //right joystick alpha
+ u8 page_cnt;
u8 unk39;
- u8 unk3A;
- u8 pad3B[1];
- s16 unk3C;
- s16 unk3E[6];
- s16 unk4A[7];
- u8 pad58[0x4];
- void * unk5C; //SnS Egg Model
- void * unk60; //Ice key model
+ u8 sns_visible;
+ // u8 pad3B[1];
+ s16 sns_alpha; //sns opacity
+ s16 unk3E[7];
+ s16 unk4C[7];
+ // u8 pad5A[0x3];
+ BKModelBin *sns_egg_model; //SnS Egg Model
+ BKModelBin *ice_key_model; //Ice key model
u8 pad64[0xC];
u32 unk70_31:1;
u32 unk70_30:1;
- u32 unk70_29:1;
+ u32 return_to_lair_disabled:1;
u32 pad70_28:29;
}D_80383010;
s32 D_80383084;
char D_80383088[0x18];
/* public */
-void func_803129DC(s32,s32);
-void func_803184C8(gczoombox_t *, f32, s32, s32, f32, s32, s32);
-void func_80318640(gczoombox_t *, s32, f32, f32, s32);
-void func_80318734(gczoombox_t *, f32);
-
+void gcpausemenu_803129DC(s32,s32);
/* .code */
-void func_80311740(void){
+void gcpausemenu_defrag(void){
s32 i;
for(i =0; i< 4; i++){
if(D_80383010.zoombox[i]){
@@ -191,8 +197,7 @@ void func_80311740(void){
}
}
-//_gcpausemenu_freeZoomboxes
-void func_803117A0(void){
+void gcpausemenu_zoomboxes_free(void){
s32 i;
for(i =0; i< 4; i++){
gczoombox_free(D_80383010.zoombox[i]);
@@ -200,34 +205,33 @@ void func_803117A0(void){
}
}
-void func_803117E8(void){
+void gcpausemenu_free(void){
s32 i;
for( i=0; i<2; i++){
- assetcache_release(D_80383010.unk24);
- D_80383010.unk24 = NULL;
- assetcache_release(D_80383010.unk2C);
- D_80383010.unk2C = NULL;
+ assetcache_release(D_80383010.joystick_sprite);
+ D_80383010.joystick_sprite = NULL;
+ assetcache_release(D_80383010.b_button_sprite);
+ D_80383010.b_button_sprite = NULL;
}
- func_803117A0();
+ gcpausemenu_zoomboxes_free();
func_80311650();
}
-//gc_zoombox_init
-void func_80311854(void){
+void gcpausemenu_zoomboxes_initMainMenu(void){
s32 i;
for(i = 0; i<4; i++){
- D_80383010.zoombox[i] = gczoombox_new(D_8036C4E0[i].unkC,D_8036C4E0[i].unkE, 2, 0,func_803129DC);
+ D_80383010.zoombox[i] = gczoombox_new(D_8036C4E0[i].y,D_8036C4E0[i].portrait, 2, 0,gcpausemenu_803129DC);
func_803184C8(D_80383010.zoombox[i], 60.0f, 5, 2, 0.3f, 0, 0);
func_80318640(D_80383010.zoombox[i], 0x1C, 0.75f, 0.9f, 0);
func_80318760(D_80383010.zoombox[i], 8000);
}
}
-void func_80311954(void){
+void gcpausemenu_zoomboxes_initTotalsMenu(void){
s32 i;
for(i = 0; i<4; i++){
- D_80383010.zoombox[i] = gczoombox_new(D_8036C520[i].unkC,D_8036C520[i].unkE, (i == 3) ? 1 : 2 , 0,func_803129DC);
+ D_80383010.zoombox[i] = gczoombox_new(D_8036C520[i].y,D_8036C520[i].portrait, (i == 3) ? 1 : 2 , 0,gcpausemenu_803129DC);
func_803184C8(D_80383010.zoombox[i], 40.0f, 5, 2, 0.3f, 0, 0);
func_80318640(D_80383010.zoombox[i], 0x46, 0.9f, 0.7f, 1);
func_80318760(D_80383010.zoombox[i], 8000);
@@ -235,7 +239,7 @@ void func_80311954(void){
func_80318734(D_80383010.zoombox[3], 24.0f);
}
-void func_80311A84(void){
+void gcpausemenu_80311A84(void){
s32 i;
func_802FA5D0();
@@ -258,8 +262,7 @@ void func_80311A84(void){
}
}
-
-void func_80311B44(void){
+void gcpausemenu_80311B44(void){
s32 i;
for(i = 0; i<7; i++){
@@ -269,22 +272,22 @@ void func_80311B44(void){
func_802FAD64(ITEM_16_LIFE);
}
-void func_80311B9C(s32 level, s32 *valPtr, s32 *maxPtr){
- *valPtr = itemscore_noteScores_get(level); //get note highscore
+void gcpausemenu_getLevelNoteScore(enum level_e level, s32 *valPtr, s32 *maxPtr){
+ *valPtr = itemscore_noteScores_get(level);
*maxPtr = 100;
}
-void func_80311BD4(s32 level, s32 *valPtr, s32 *maxPtr){
- *valPtr = jiggyscore_leveltotal(level); //get note highscore
+void gcpausemenu_getLevelJiggyScore(enum level_e level, s32 *valPtr, s32 *maxPtr){
+ *valPtr = jiggyscore_leveltotal(level);
*maxPtr = 10;
}
-void func_80311C0C(s32 level, s32 *valPtr, s32 *maxPtr){
+void gcpausemenu_getLevelHoneycombScore(enum level_e level, s32 *valPtr, s32 *maxPtr){
*valPtr = honeycombscore_get_level_total(level);
*maxPtr = (level == LEVEL_B_SPIRAL_MOUNTAIN)? 6 : 2;
}
-u8 *func_80311C64(int time){
+char *gcpausemenu_TimeToA(int time){
s32 hours;
s32 minutes;
s32 seconds;
@@ -307,13 +310,13 @@ u8 *func_80311C64(int time){
return D_80383088;
}
-void func_80311D74(s32 level){
+void gcpausemenu_printLevelTotals(enum level_e level){
s32 val;
s32 max;
const char empty[1] = 0; //empty
//note ratio 2 string
- func_80311B9C(level, &val, &max);
+ gcpausemenu_getLevelNoteScore(level, &val, &max);
strcpy(D_8036C520[0].str, empty);
strIToA(D_8036C520[0].str, val);
strcat(D_8036C520[0].str, "/");
@@ -321,7 +324,7 @@ void func_80311D74(s32 level){
strcat(D_8036C520[0].str, empty);
//jiggy_ratio_2_string
- func_80311BD4(level, &val, &max);
+ gcpausemenu_getLevelJiggyScore(level, &val, &max);
strcpy(D_8036C520[1].str, empty);
strIToA(D_8036C520[1].str, val);
strcat(D_8036C520[1].str, "/");
@@ -329,7 +332,7 @@ void func_80311D74(s32 level){
strcat(D_8036C520[1].str, empty);
//honeycomb_ratio_2_string
- func_80311C0C(level, &val, &max);
+ gcpausemenu_getLevelHoneycombScore(level, &val, &max);
strcpy(D_8036C520[2].str, empty);
strIToA(D_8036C520[2].str, val);
strcat(D_8036C520[2].str, "/");
@@ -338,49 +341,49 @@ void func_80311D74(s32 level){
//gametime_2_sting
strcpy(D_8036C520[3].str, empty);
- strcat(D_8036C520[3].str, func_80311C64(itemscore_timeScores_get(level)));
+ strcat(D_8036C520[3].str, gcpausemenu_TimeToA(itemscore_timeScores_get(level)));
}
-void func_80311ED0(s32 *dst){
- *dst = itemscore_noteScores_getTotal(); //note_total
+void gcpausemenu_getTotalNoteScore(s32 *dst){
+ *dst = itemscore_noteScores_getTotal();
}
-void func_80311EF8(s32 *dst){
+void gcpausemenu_getTotalJiggyScore(s32 *dst){
*dst = jiggyscore_total();
}
-void func_80311F20(s32 *dst){
- *dst = honeycombscore_get_total(); //honeycomb_total
+void gcpausemenu_getTotalHoneycombScore(s32 *dst){
+ *dst = honeycombscore_get_total();
}
-void func_80311F48(void){
+void gcpausemenu_printTotals(void){
s32 val;
const char D_8036C61C[] = 0;
//note ratio 2 string
- func_80311ED0(&val);
+ gcpausemenu_getTotalNoteScore(&val);
strcpy(D_8036C520[0].str, D_8036C61C);
strIToA(D_8036C520[0].str, val);
strcat(D_8036C520[0].str, D_8036C61C);
//jiggy_ratio_2_string
- func_80311EF8(&val);
+ gcpausemenu_getTotalJiggyScore(&val);
strcpy(D_8036C520[1].str, D_8036C61C);
strIToA(D_8036C520[1].str, val);
strcat(D_8036C520[1].str, D_8036C61C);
//honeycomb_ratio_2_string
- func_80311F20(&val);
+ gcpausemenu_getTotalHoneycombScore(&val);
strcpy(D_8036C520[2].str, D_8036C61C);
strIToA(D_8036C520[2].str, val);
strcat(D_8036C520[2].str, D_8036C61C);
//gametime_2_sting
strcpy(D_8036C520[3].str, D_8036C61C);
- strcat(D_8036C520[3].str, func_80311C64(itemscore_timeScores_getTotal()));
+ strcat(D_8036C520[3].str, gcpausemenu_TimeToA(itemscore_timeScores_getTotal()));
}
-s32 func_80312034(enum level_e arg0){
+s32 gcpausemenu_levelToMenuPage(enum level_e arg0){
switch (arg0)
{
case LEVEL_1_MUMBOS_MOUNTAIN:
@@ -408,7 +411,7 @@ s32 func_80312034(enum level_e arg0){
}
}
-void func_8031209C(struct1As *arg0, s32 arg1){
+void gcpausemenu_8031209C(struct1As *arg0, s32 arg1){
s32 i;
s32 j;
@@ -417,51 +420,51 @@ void func_8031209C(struct1As *arg0, s32 arg1){
}
}
-void func_803120FC(s32 arg0){
+void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
s32 i;
- switch(arg0){
+ switch(next_state){
case 0:
- func_80311A84();
+ gcpausemenu_80311A84();
D_80383010.unk1 = 0;
- D_80383010.unk0_3 = D_80383010.unk0_2 = D_80383010.unk0_7 = D_80383010.unk2 = D_80383010.unk4 = 0;
+ D_80383010.left_joystick_visible = D_80383010.right_joystick_visible = D_80383010.unk3_7 = D_80383010.selection = D_80383010.unk4 = 0;
break;
case 1:
- D_80383010.unkC = D_80383010.unk0_6 = D_80383010.unk7 = 0;
- func_8031209C(D_8036C4E0, 4);
+ D_80383010.unkC = D_80383010.unk3_6 = D_80383010.unk7 = 0;
+ gcpausemenu_8031209C(D_8036C4E0, 4);
for(i = 0; i < 4; i++){
gczoombox_highlight(D_80383010.zoombox[i], 1);
}
- if(D_80383010.unk70_29){
+ if(D_80383010.return_to_lair_disabled){
gczoombox_highlight(D_80383010.zoombox[1],0);
}
break;
case 2:
- D_80383010.unk0_6 = 0;
+ D_80383010.unk3_6 = 0;
break;
case 3:
- func_80311B44();
- D_80383010.unkC = D_80383010.unk0_6 = 0;
+ gcpausemenu_80311B44();
+ D_80383010.unkC = D_80383010.unk3_6 = 0;
D_80383010.unk5 = 3;
- func_8031209C(D_8036C4E0, 4);
+ gcpausemenu_8031209C(D_8036C4E0, 4);
break;
case 5:/* 8B334 803122C4 3C128038 */
D_80383010.unkC = 3;
- D_80383010.unk5 = D_80383010.unk0_6 = 0;
- func_8031209C(D_8036C4E0, 4);
+ D_80383010.unk5 = D_80383010.unk3_6 = 0;
+ gcpausemenu_8031209C(D_8036C4E0, 4);
for(i = 0; i < 4; i++){
D_80383010.unk5 += func_803188B4(D_80383010.zoombox[i]);
}
break;
case 6:/* 8B3A8 80312338 0C0C46D1 */
- func_80311B44();
+ gcpausemenu_80311B44();
D_80383010.unkC = 0.0f;
- D_80383010.unk4 = D_80383010.unk2 = 0;
+ D_80383010.unk4 = D_80383010.selection = 0;
// 0;
for(i = 0; i < 4; i++){
func_80318964(D_80383010.zoombox[i]);
@@ -470,24 +473,24 @@ void func_803120FC(s32 arg0){
case 7:/* 8B3F4 80312384 44803000 */
D_80383010.unk1 = 1;
- D_80383010.unk0_1 = 1;
+ D_80383010.b_button_visible = 1;
D_80383010.unk20 = D_80383010.unk28 = 0.0f;
- func_803117A0();
- func_80311954();
- if(D_80383010.unk2 == func_80312034(level_get())){
+ gcpausemenu_zoomboxes_free();
+ gcpausemenu_zoomboxes_initTotalsMenu();
+ if(D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
func_802F5060(0x6e7);
}
- if(D_80383010.unk2){
- func_80311D74(D_8036C58C[D_80383010.unk2].level_id);
+ if(D_80383010.selection){
+ gcpausemenu_printLevelTotals(D_8036C58C[D_80383010.selection].level_id);
}else{
- func_80311F48();
+ gcpausemenu_printTotals();
}
for(i = 0; i<4; i++){//L80312420
- if(D_8036C58C[D_80383010.unk2].level_id == 6){
+ if(D_8036C58C[D_80383010.selection].level_id == 6){
gczoombox_highlight(D_80383010.zoombox[i], (!(i == 0) && !(i == 2)));
}
- else if(D_8036C58C[D_80383010.unk2].level_id == 0xB){
+ else if(D_8036C58C[D_80383010.selection].level_id == 0xB){
gczoombox_highlight(D_80383010.zoombox[i], (!(i == 0) && !(i == 1)));
}
else{
@@ -499,34 +502,34 @@ void func_803120FC(s32 arg0){
case 8: /* 8B54C 803124DC 44809000 */
D_80383010.unk4 = 0;
D_80383010.unkC = 0.0f;
- func_8031209C(D_8036C520, 4);
+ gcpausemenu_8031209C(D_8036C520, 4);
D_80383010.unk8 = -0x10;
D_80383010.unk6 = 0xFF;
- D_80383010.unk0_5 = 1;
+ D_80383010.unk3_5 = 1;
break;
case 0xA:
- D_80383010.unk0_5 = 1;
+ D_80383010.unk3_5 = 1;
D_80383010.unkC = 0.0f;
D_80383010.unk5 = 4;
if(D_80383010.unk9 != 0xC){
- D_80383010.unk0_1 = 0;
+ D_80383010.b_button_visible = 0;
}
- func_8031209C(D_8036C520, 4);
+ gcpausemenu_8031209C(D_8036C520, 4);
break;
case 0xB:
- if(D_80383010.unk2 && D_80383010.unk2 == func_80312034(level_get())){
+ if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
func_802F5188();
}
- func_803117A0();
- func_80311854();
+ gcpausemenu_zoomboxes_free();
+ gcpausemenu_zoomboxes_initMainMenu();
break;
case 0xC:
D_80383010.unk1 = 2;
D_80383010.unk6++;
- D_80383010.unk0_5 = 1;
+ D_80383010.unk3_5 = 1;
D_80383010.unk5 = 0;
for(i = 0; i<4; i++){
D_80383010.unk5 += func_803188B4(D_80383010.zoombox[i]);
@@ -535,25 +538,25 @@ void func_803120FC(s32 arg0){
case 0xD:/* 8B694 80312624 3C128038 */
D_80383010.unk6 = 0xFF;
- D_80383010.unk0_5 = 1;
- if(D_80383010.unk2 && D_80383010.unk2 == func_80312034(level_get())){
+ D_80383010.unk3_5 = 1;
+ if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
func_802F5188();
}
- D_80383010.unk2 = D_80383010.unk9;
- if(D_80383010.unk2 && D_80383010.unk2 == func_80312034(level_get())){
+ D_80383010.selection = D_80383010.unk9;
+ if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
func_802F5060(0x6e7);
}
- if(D_80383010.unk2)
- func_80311D74(D_8036C58C[D_80383010.unk2].level_id);
+ if(D_80383010.selection)
+ gcpausemenu_printLevelTotals(D_8036C58C[D_80383010.selection].level_id);
else{
- func_80311F48();
+ gcpausemenu_printTotals();
}
for(i = 0; i < 4; i++){//L803126D8
//L80312764
- if(D_8036C58C[D_80383010.unk2].level_id == 6){
+ if(D_8036C58C[D_80383010.selection].level_id == 6){
gczoombox_highlight(D_80383010.zoombox[i], !((i == 0) || (i == 2)));
}
- else if(D_8036C58C[D_80383010.unk2].level_id == 0xB){//L80312728
+ else if(D_8036C58C[D_80383010.selection].level_id == 0xB){//L80312728
gczoombox_highlight(D_80383010.zoombox[i], (!(i == 0) && !(i == 1)));
}
else{
@@ -569,44 +572,44 @@ void func_803120FC(s32 arg0){
case 0xE:/* 8B824 803127B4 3C128038 */
D_80383010.unk1 = 4;
- D_80383010.unk2 = D_80383010.unk9;
+ D_80383010.selection = D_80383010.unk9;
D_80383010.unk9 = -1;
- D_80383010.unk5C = assetcache_get(0x50D);
- D_80383010.unk60 = assetcache_get(0x50C);
+ D_80383010.sns_egg_model = assetcache_get(0x50D);
+ D_80383010.ice_key_model = assetcache_get(0x50C);
for(i = 0; i < 7; i++){
D_80383010.unk3E[i] = randf2(0.0f, 360.0f);
- D_80383010.unk4A[i+1] = ((i & 1)? -1.0: 1.0)*randf2( 60.0f, 180.0f);
+ D_80383010.unk4C[i] = ((i & 1)? -1.0: 1.0)*randf2( 60.0f, 180.0f);
}
break;
case 0xF: /* 8B8FC 8031288C 3C128038 */
D_80383010.unk8 = -0x10;
D_80383010.unk6 = 0xff;
- D_80383010.unk0_5 = D_80383010.unk3A = 1;
+ D_80383010.unk3_5 = D_80383010.sns_visible = 1;
break;
case 0x10:
break;
case 0x11: /* 8B944 803128D4 3C128038 */
- D_80383010.unk0_5 = 1;
- D_80383010.unk3A = 0;
+ D_80383010.unk3_5 = 1;
+ D_80383010.sns_visible = 0;
if(D_80383010.unk9 == -1)
- D_80383010.unk0_1 = 0;
+ D_80383010.b_button_visible = 0;
break;
case 0x12: /* 8B978 80312908 3C128038 */
- D_80383010.unk2 = D_80383010.unk9;
- func_8033BD20(&D_80383010.unk5C);
- func_8033BD20(&D_80383010.unk60);
+ D_80383010.selection = D_80383010.unk9;
+ func_8033BD20(&D_80383010.sns_egg_model); //free
+ func_8033BD20(&D_80383010.ice_key_model); //free
break;
case 0x13: /* 8B9A8 80312938 3C128038 */
- D_80383010.unk0_7 = 0;
+ D_80383010.unk3_7 = 0;
break;
case 0x14: /* 8B9C0 80312950 3C128038 */
- D_80383010.unk0_7 = D_80383010.unk0_6 = 0;
+ D_80383010.unk3_7 = D_80383010.unk3_6 = 0;
D_80383010.unkC = 0.0f;
func_8025A430(-1, 0x7D0, 3);
func_8025A2B0();
@@ -615,14 +618,14 @@ void func_803120FC(s32 arg0){
default:
break;
}
- D_80383010.unk0 = arg0;
+ D_80383010.state = next_state;
}
-void func_803129DC(s32 arg0, s32 arg1) {
+void gcpausemenu_803129DC(s32 arg0, s32 arg1) {
s8 var_t9;
u8 temp_t6;
- switch (D_80383010.unk0) {
+ switch (D_80383010.state) {
case 3:
case 10:
if (arg1 == 6) {
@@ -655,32 +658,32 @@ void func_803129DC(s32 arg0, s32 arg1) {
}
if( (arg1 == 2)
&& (D_80383010.unk1 == 0)
- && (arg0 - 4 != D_80383010.unk2)
+ && (arg0 - 4 != D_80383010.selection)
) {
gczoombox_highlight(D_80383010.zoombox[arg0 - 4], 0);
}
}
-s32 func_80312B04(void) {
+s32 gcpausemenu_initLargestPageIndex(void) {
s16 *var_s1;
s32 var_s0;
s32 var_s3;
var_s3 = 0;
if (D_80383010.unk39 != 0) {
- return 0xC;
+ return 0xC; //if any SnS items collected return last page
}
for(var_s0 = 1; var_s0 < 0xC; var_s0++){
- if(func_8034717C(D_8036C58C[var_s0].level_id)){
+ if(itemscore_timeScores_get(D_8036C58C[var_s0].level_id) != 0){
var_s3 = var_s0;
}
}
return var_s3;
}
-s32 func_80312B84(void){ return 1; }
+bool gcpausemenu_isReturnToLairDisabled(void){ return TRUE; }
-void func_80312B8C(void) {
+void gcpausemenu_init(void) {
s32 i;
s32 sp38;
s32 sp34;
@@ -707,31 +710,31 @@ void func_80312B8C(void) {
+ sp28
+ sp24
+ sns_get_item_state(7, 0);
- D_80383010.unk70_29 = func_80312B84();
+ D_80383010.return_to_lair_disabled = gcpausemenu_isReturnToLairDisabled();
func_80311604();
- func_80311854();
- D_80383010.unk24 = assetcache_get(0x7EB);
- D_80383010.unkB = spriteGetFrameCount(D_80383010.unk24);
- D_80383010.unk34 = temp_v1 = D_80383010.unk36 = 0;
- D_80383010.unkA = D_80383010.unk0_4 = temp_v1;
+ gcpausemenu_zoomboxes_initMainMenu();
+ D_80383010.joystick_sprite = assetcache_get(0x7EB);
+ D_80383010.joystick_frame_count = spriteGetFrameCount(D_80383010.joystick_sprite);
+ D_80383010.left_joystick_alpha = temp_v1 = D_80383010.right_joystick_alpha = 0;
+ D_80383010.joystick_frame = D_80383010.unk3_4 = temp_v1;
- D_80383010.unk2C = assetcache_get(0x7ED);
- D_80383010.unk31 = spriteGetFrameCount(D_80383010.unk2C);
- D_80383010.unk30 = D_80383010.unk0_0 = D_80383010.unk32 = 0;
- D_80383010.unk38 = func_80312B04();
- D_80383010.unk3C = D_80383010.unk3A = D_80383010.unk70_31 = D_80383010.unk70_30 = 0;
+ D_80383010.b_button_sprite = assetcache_get(0x7ED);
+ D_80383010.b_button_frame_count = spriteGetFrameCount(D_80383010.b_button_sprite);
+ D_80383010.b_button_frame = D_80383010.unk3_0 = D_80383010.b_button_alpha = 0;
+ D_80383010.page_cnt = gcpausemenu_initLargestPageIndex();
+ D_80383010.sns_alpha = D_80383010.sns_visible = D_80383010.unk70_31 = D_80383010.unk70_30 = 0;
func_80250FC0();
- func_803120FC(0);
+ gcPauseMenu_setState(0);
}
-s32 func_80312D78(struct1As *arg0, s32 arg1) {
+s32 gcpausemenu_80312D78(struct1As *arg0, s32 arg1) {
s32 var_s2;
s32 var_s4;
s32 var_v0;
var_s4 = 0;
for(var_s2 = 0; var_s2 < arg1; var_s2++){
- if (arg0[var_s2].unk0 <= D_80383010.unkC) {
+ if (arg0[var_s2].delay <= D_80383010.unkC) {
if (!arg0[var_s2].unkF) {
var_v0 = func_803183A4(D_80383010.zoombox[var_s2], arg0[var_s2].str) ? TRUE : FALSE;
arg0[var_s2].unkF = var_v0;
@@ -752,12 +755,12 @@ s32 func_80312D78(struct1As *arg0, s32 arg1) {
return var_s4;
}
-void func_80312E80(struct1As *arg0, s32 arg1) {
+void gcpausemenu_80312E80(struct1As *arg0, s32 arg1) {
f32 var_f0;
s32 var_s1;
for(var_s1 = 0; var_s1 < arg1; var_s1++){
- var_f0 = ((var_s1 == D_80383010.unk2) && (D_80383010.unk1 == 0)) ? 0.2 : arg0[var_s1].unk4;
+ var_f0 = ((var_s1 == D_80383010.selection) && (D_80383010.unk1 == 0)) ? 0.2 : arg0[var_s1].unk4;
if (var_f0 <= D_80383010.unkC) {
if (arg0[var_s1].unkF == 0) {
func_80318498(D_80383010.zoombox[var_s1]);
@@ -770,51 +773,56 @@ void func_80312E80(struct1As *arg0, s32 arg1) {
}
}
-void func_80312F88(s32 arg0){
- struct1Cs *v0 = D_8036C58C + arg0;
+void gcpausemenu_printTotalsHeader(s32 page_id){
+ struct1Cs_1 *v0 = D_8036C58C + page_id;
print_bold_overlapping(v0->x, D_80383010.unk8, -1.05f, v0->string);
}
-void func_80312FD0(s32 arg0) {
+void gcpausemenu_80312FD0(s32 arg0) {
s32 temp_v1;
- if (D_80383010.unk0_5) {
+ if (D_80383010.unk3_5) {
if (arg0 > 0) {
D_80383010.unk6++;
temp_v1 = D_8036C5F4[D_80383010.unk6];
D_80383010.unk8 += temp_v1;
if (D_80383010.unk6 == 0xC) {
- D_80383010.unk0_5 = FALSE;
+ D_80383010.unk3_5 = FALSE;
}
} else {
D_80383010.unk6--;
temp_v1 = D_8036C5F4[D_80383010.unk6];
D_80383010.unk8 -= temp_v1;
if (D_80383010.unk6 == 0) {
- D_80383010.unk0_5 = FALSE;
+ D_80383010.unk3_5 = FALSE;
}
}
}
}
-s32 func_80313070(void){
- return D_80383010.unk38;
+s32 gcpausemenu_getMaxPage(void){
+ return D_80383010.page_cnt;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/gc/pauseMenu/func_8031307C.s")
-// void func_8031307C(s32 arg0) {
-// D_80383010.unk9 = D_80383010.unk2;
-// do {
-// D_80383010.unk9 += arg0;
-// }while(((D_80383010.unk39 == 0) || (D_80383010.unk9 != 0xC))
-// && (D_80383010.unk9 != 0)
-// && !func_8034717C(D_8036C58C[D_80383010.unk9].level_id)
-// );
-// func_803120FC((D_80383010.unk9 == 0xC) ? 0xA : 0xC);
-// D_80383010.unk7 = 6;
-// }
+#ifndef NONMATCHING
+void gcpausemenu_getNextPage(s32);
+#pragma GLOBAL_ASM("asm/nonmatchings/core2/gc/pauseMenu/gcpausemenu_getNextPage.s")
+#else
+void gcpausemenu_getNextPage(s32 arg0) {
+ D_80383010.unk9 = D_80383010.selection;
+ do{
+ D_80383010.unk9 += arg0;
+ }
+ while(((D_80383010.unk39 == 0) || (D_80383010.unk9 != 0xC))
+ && (D_80383010.unk9 != 0)
+ && itemscore_timeScores_get(D_8036C58C[D_80383010.unk9].level_id) == 0
+ );
+ gcPauseMenu_setState((D_80383010.unk9 == 0xC) ? 0xA : 0xC);
+ D_80383010.unk7 = 6;
+}
+#endif
-void func_80313134(void) {
+void gcpausemenu_updateBButtonAndJoystickSprites(void) {
f32 temp_f12;
f32 var_f0;
f32 var_f0_2;
@@ -826,41 +834,41 @@ void func_80313134(void) {
u8 temp_v0_2;
D_80383010.unk20 += time_getDelta();
- var_f0 = (D_80383010.unk0_4) ? 0.05 : 0.066666666666666666;
+ var_f0 = (D_80383010.unk3_4) ? 0.05 : 0.066666666666666666;
while (var_f0 < D_80383010.unk20) {
- if (D_80383010.unk0_4) {
- if (D_80383010.unkA-- == 0) {
- D_80383010.unkA = 0;
- D_80383010.unk0_4 = FALSE;
+ if (D_80383010.unk3_4) {
+ if (D_80383010.joystick_frame-- == 0) {
+ D_80383010.joystick_frame = 0;
+ D_80383010.unk3_4 = FALSE;
var_f0 = 0.066666666666666666;
}
} else {
- D_80383010.unkA++;
- if (D_80383010.unkA >= D_80383010.unkB) {
- D_80383010.unk0_4 = TRUE;
- D_80383010.unkA = D_80383010.unkB - 1;
+ D_80383010.joystick_frame++;
+ if (D_80383010.joystick_frame >= D_80383010.joystick_frame_count) {
+ D_80383010.unk3_4 = TRUE;
+ D_80383010.joystick_frame = D_80383010.joystick_frame_count - 1;
var_f0 = 0.05f;
}
}
D_80383010.unk20 -= var_f0;
}
- D_80383010.unk0_3 = (D_80383010.unk2 != 0) ? TRUE : FALSE;
- D_80383010.unk0_2 = (func_80313070() == D_80383010.unk2) ? FALSE : TRUE;
+ D_80383010.left_joystick_visible = (D_80383010.selection != 0) ? TRUE : FALSE;
+ D_80383010.right_joystick_visible = (gcpausemenu_getMaxPage() == D_80383010.selection) ? FALSE : TRUE;
D_80383010.unk28 += time_getDelta();
- var_f12 = (D_80383010.unk0_0) ? 0.04 : 0.04;
+ var_f12 = (D_80383010.unk3_0) ? 0.04 : 0.04;
while (D_80383010.unk28 > var_f12) {
- if (D_80383010.unk0_0) {
- if (D_80383010.unk30-- <= 0) {
- D_80383010.unk30 = 0;
- D_80383010.unk0_0 = FALSE;
+ if (D_80383010.unk3_0) {
+ if (D_80383010.b_button_frame-- <= 0) {
+ D_80383010.b_button_frame = 0;
+ D_80383010.unk3_0 = FALSE;
var_f12 = 0.04;
}
} else {
- D_80383010.unk30++;
- if (D_80383010.unk30 >= D_80383010.unk31) {
- D_80383010.unk0_0 = TRUE;
- D_80383010.unk30 = D_80383010.unk31 - 1;
+ D_80383010.b_button_frame++;
+ if (D_80383010.b_button_frame >= D_80383010.b_button_frame_count) {
+ D_80383010.unk3_0 = TRUE;
+ D_80383010.b_button_frame = D_80383010.b_button_frame_count - 1;
var_f12 = 0.04;
}
}
@@ -869,20 +877,20 @@ void func_80313134(void) {
}
}
-s32 func_80313380(void){
+s32 gcPauseMenu_update(void){
s32 i;
- s32 sp6C[6];
+ s32 face_button[6];
s32 sp60[3];
s32 sp50[4];
- f32 sp48[2];
+ f32 joystick[2];
s32 level = level_get(); //sp44
if(getGameMode() != GAME_MODE_4_PAUSED)
return 0;
- func_8024E55C(0, sp6C);
- func_8024E71C(0, sp48);
+ func_8024E55C(0, face_button);
+ func_8024E71C(0, joystick);
func_8024E60C(0, sp60);
func_8024E6E0(0, sp50);
func_80310D2C();
@@ -892,21 +900,23 @@ s32 func_80313380(void){
D_80383010.unkC += time_getDelta();
- switch(D_80383010.unk0){
- case 0: //closed
- func_803120FC(1);
+ switch(D_80383010.state){
+ case PAUSE_STATE_0_CLOSED: //closed
+ gcPauseMenu_setState(PAUSE_STATE_1_OPENING);
break;
- case 1: //opening
- if(func_80312D78(D_8036C4E0, 4) == 4){
- if(((D_80383010.unk70_29)? 3: 4 ) == D_80383010.unk4){
+
+ case PAUSE_STATE_1_OPENING: //opening
+ if(gcpausemenu_80312D78(D_8036C4E0, 4) == 4){
+ if(((D_80383010.return_to_lair_disabled)? 3: 4 ) == D_80383010.unk4){
D_80383010.unk4 = 0;
- func_803120FC(2);
+ gcPauseMenu_setState(2);
}
}
if(func_8024E67C(BUTTON_START) == 1){
- func_803120FC(6);
+ gcPauseMenu_setState(6);
}
break;
+
case 2: //open
if(D_80383010.unk70_31 && !func_802FC3C4()){
func_802FACA4(ITEM_12_JINJOS);
@@ -917,68 +927,68 @@ s32 func_80313380(void){
D_80383010.unk70_30 = 0;
}
if(func_8024E67C(BUTTON_START) == 1){
- func_803120FC(6);
- }else if(sp6C[0] == 1){
- switch(D_80383010.unk2){
+ gcPauseMenu_setState(6);
+ }else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){
+ switch(D_80383010.selection){
case 1://L80313594
if(level > 0 && level < 0xC)
if(D_8036C560[level-1].map != -1)
- func_803120FC(5);
+ gcPauseMenu_setState(5);
break;
case 3://L803135D0
- func_803120FC(5);
+ gcPauseMenu_setState(5);
break;
default://L803135E4
- func_803120FC(3);
+ gcPauseMenu_setState(3);
break;
}
}
- else if(sp6C[1] == 1){//L803135F8
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 0);
- D_80383010.unk2 = 0;
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 1);
- func_803120FC(3);
+ else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){//L803135F8
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 0);
+ D_80383010.selection = 0;
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 1);
+ gcPauseMenu_setState(3);
}
else if(D_80383010.unk7 > 0) {//L8031364C
D_80383010.unk7--;
}//L80313664
else {
- if( D_80383010.unk2 == 2 && !D_80383010.unk0_6){
- func_803160A8(D_80383010.zoombox[D_80383010.unk2]);
- D_80383010.unk0_6 = 1;
+ if( D_80383010.selection == 2 && !D_80383010.unk3_6){
+ func_803160A8(D_80383010.zoombox[D_80383010.selection]);
+ D_80383010.unk3_6 = 1;
}
- if(0.75 < sp48[1]){
- if((s32)D_80383010.unk2 > 0){
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 0);
- D_80383010.unk2--;
- if(D_80383010.unk70_29 && D_80383010.unk2 == 1)
- D_80383010.unk2 --;
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 1);
- func_803160A8(D_80383010.zoombox[D_80383010.unk2]);
- D_80383010.unk0_6 = 0;
+ if(0.75 < joystick[JOYSTICK_Y]){
+ if((s32)D_80383010.selection > 0){
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], FALSE);
+ D_80383010.selection--;
+ if(D_80383010.return_to_lair_disabled && D_80383010.selection == 1)
+ D_80383010.selection --;
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], TRUE);
+ func_803160A8(D_80383010.zoombox[D_80383010.selection]);
+ D_80383010.unk3_6 = 0;
D_80383010.unk7 = 6;
}
- }else if(sp48[1] < -0.75){
- if((s32)D_80383010.unk2 < 3){
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 0);
- D_80383010.unk2++;
- if(D_80383010.unk70_29 && D_80383010.unk2 == 1)
- D_80383010.unk2++;
- gczoombox_highlight(D_80383010.zoombox[D_80383010.unk2], 1);
- func_803160A8(D_80383010.zoombox[D_80383010.unk2]);
- D_80383010.unk0_6 = 0;
+ }else if(joystick[JOYSTICK_Y] < -0.75){
+ if((s32)D_80383010.selection < 3){
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 0);
+ D_80383010.selection++;
+ if(D_80383010.return_to_lair_disabled && D_80383010.selection == 1)
+ D_80383010.selection++;
+ gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 1);
+ func_803160A8(D_80383010.zoombox[D_80383010.selection]);
+ D_80383010.unk3_6 = 0;
D_80383010.unk7 = 6;
}
}
}
- if(D_80383010.unk2 == 2 && !D_80383010.unk0_6 && D_80383010.unk7 == 3){
- func_803160A8(D_80383010.zoombox[D_80383010.unk2]);
- D_80383010.unk0_6 = 1;
+ if(D_80383010.selection == 2 && !D_80383010.unk3_6 && D_80383010.unk7 == 3){
+ func_803160A8(D_80383010.zoombox[D_80383010.selection]);
+ D_80383010.unk3_6 = 1;
}
break;
case 3: //returning to game
- func_80312E80(D_8036C4E0,4);
+ gcpausemenu_80312E80(D_8036C4E0,4);
if(D_80383010.unk5 <= 0){
for(i = 0; i<4; i++){
gczoombox_close(D_80383010.zoombox[i]);
@@ -987,13 +997,13 @@ s32 func_80313380(void){
}
if(D_80383010.unk4 == 4){
D_80383010.unk4 = 0;
- func_803120FC(4);
+ gcPauseMenu_setState(4);
}
break;
case 4:
- switch(D_80383010.unk2){
+ switch(D_80383010.selection){
case 0://L803138FC
- D_80383010.unk0_7 = 1;
+ D_80383010.unk3_7 = 1;
break;
case 1://L80313908 //return to lair
func_803204E4(0x16, 1);
@@ -1003,43 +1013,43 @@ s32 func_80313380(void){
}else{
func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1);
}
- func_803120FC(0x13);
+ gcPauseMenu_setState(0x13);
break;
case 2://L80313978
- D_80383010.unk2 = func_80312034(level_get());
- func_803120FC(7);
+ D_80383010.selection = gcpausemenu_levelToMenuPage(level_get());
+ gcPauseMenu_setState(7);
break;
case 3://L8031399C
func_802C5994();
func_803204E4(0,0);
if(!func_8031FF1C(BKPROG_BD_ENTER_LAIR_CUTSCENE) || func_8031FF1C(BKPROG_A6_FURNACE_FUN_COMPLETE)){
- func_803120FC(0x14);
+ gcPauseMenu_setState(0x14);
}else{
func_802E412C(1,0);
func_802E4078(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, 1);
- func_803120FC(0x13);
+ gcPauseMenu_setState(0x13);
}
break;
}
break;
case 5:
if(3.0 < D_80383010.unkC){
- if( D_8036C4E0[D_80383010.unk2].unkF){
- gczoombox_minimize(D_80383010.zoombox[D_80383010.unk2]);
+ if( D_8036C4E0[D_80383010.selection].unkF){
+ gczoombox_minimize(D_80383010.zoombox[D_80383010.selection]);
}
- D_80383010.unk0_6 ^= 1;
- gczoombox_maximize(D_80383010.zoombox[D_80383010.unk2]);
- if(D_8036C4E0[D_80383010.unk2].unkF = func_803183A4(D_80383010.zoombox[D_80383010.unk2], (D_80383010.unk0_6)? "ARE YOU SURE?" : "A - YES, B - NO"))
+ D_80383010.unk3_6 ^= 1;
+ gczoombox_maximize(D_80383010.zoombox[D_80383010.selection]);
+ if(D_8036C4E0[D_80383010.selection].unkF = func_803183A4(D_80383010.zoombox[D_80383010.selection], (D_80383010.unk3_6)? "ARE YOU SURE?" : "A - YES, B - NO"))
D_80383010.unkC = 0.0;
}//L80313AF4
if(func_8024E67C(BUTTON_START) == 1){
- func_803120FC(6);
- }else if(sp6C[1] == 1){
- D_80383010.unk4 = (D_80383010.unk70_29)? 3 : 4;
- func_803188B4(D_80383010.zoombox[D_80383010.unk2]);
- func_803120FC(1);
- }else if(sp6C[0] == 1){//L80313B68
- func_803120FC(3);
+ gcPauseMenu_setState(6);
+ }else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
+ D_80383010.unk4 = (D_80383010.return_to_lair_disabled)? 3 : 4;
+ func_803188B4(D_80383010.zoombox[D_80383010.selection]);
+ gcPauseMenu_setState(1);
+ }else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){//L80313B68
+ gcPauseMenu_setState(3);
}
break;
@@ -1047,51 +1057,51 @@ s32 func_80313380(void){
if(D_80383010.unk4 == 4){
if(0.2 < D_80383010.unkC){
D_80383010.unk4 = 0;
- func_803120FC(4);
+ gcPauseMenu_setState(4);
}
}
break;
case 7:
- func_803120FC(8);
+ gcPauseMenu_setState(8);
break;
case 8:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(1);
- func_80312D78(D_8036C520,4);
- func_80313134();
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(1);
+ gcpausemenu_80312D78(D_8036C520,4);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk4 == 4){
D_80383010.unk4 = 0;
- func_803120FC(9);
+ gcPauseMenu_setState(9);
}
break;
case 9:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(1);
- func_80313134();
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(1);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(BUTTON_START) == 1){
D_80383010.unk1 = 3;
- func_803120FC(0xA);
- }else if(sp6C[1] == 1){
- func_803120FC(0xA);
- }else if(0.75 < sp48[0]){
- if((s32)D_80383010.unk2 < func_80313070())
- func_8031307C(1);
- }else if(sp48[0] < -0.75){//L80313CCC
- if((s32)D_80383010.unk2 > 0){
- func_8031307C(-1);
+ gcPauseMenu_setState(0xA);
+ }else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
+ gcPauseMenu_setState(0xA);
+ }else if(0.75 < joystick[JOYSTICK_X]){
+ if((s32)D_80383010.selection < gcpausemenu_getMaxPage())
+ gcpausemenu_getNextPage(1);
+ }else if(joystick[JOYSTICK_X] < -0.75){//L80313CCC
+ if((s32)D_80383010.selection > 0){
+ gcpausemenu_getNextPage(-1);
}
}
break;
case 0xA://80313D00
- func_80312F88(D_80383010.unk2);
- func_80312FD0(-1);
- func_80312E80(D_8036C520, 4);
- func_80313134();
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(-1);
+ gcpausemenu_80312E80(D_8036C520, 4);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk9 != 0xC){
- D_80383010.unk0_3 = 0;
- D_80383010.unk0_2 = 0;
+ D_80383010.left_joystick_visible = 0;
+ D_80383010.right_joystick_visible = 0;
}//L80313D50
if(!D_80383010.unk5){
for(i = 0; i < 4; i++){
@@ -1101,105 +1111,105 @@ s32 func_80313380(void){
}//L80313D8C
if( D_80383010.unk4 == 4){
D_80383010.unk4 = 0;
- func_803120FC(0xB);
+ gcPauseMenu_setState(0xB);
}
break;
case 0xB:
if(D_80383010.unk1 == 3){
- D_80383010.unk0_7 = 1;
+ D_80383010.unk3_7 = 1;
}
else{
- func_803120FC((D_80383010.unk9 == 0xC)? 0xE : 0);
+ gcPauseMenu_setState((D_80383010.unk9 == 0xC)? 0xE : 0);
}
break;
- case 0xC:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(-1);
- func_80313134();
- if(D_80383010.unk5 == 0 && !D_80383010.unk0_5){
- func_803120FC(0xd);
+ case 0xC: //Flip to Sns Total page
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(-1);
+ gcpausemenu_updateBButtonAndJoystickSprites();
+ if(D_80383010.unk5 == 0 && !D_80383010.unk3_5){
+ gcPauseMenu_setState(0xd);
}
break;
- case 0xD:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(1);
- func_80313134();
+ case 0xD: //Open SnS Total Page
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(1);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk7 > 0)
D_80383010.unk7--;
else
- func_803120FC(9);
+ gcPauseMenu_setState(9);
break;
case 0xE:
- func_803120FC(0xF);
+ gcPauseMenu_setState(0xF);
break;
case 0xF:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(1);
- func_80313134();
- if(!D_80383010.unk0_5){
- func_803120FC(0x10);
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(1);
+ gcpausemenu_updateBButtonAndJoystickSprites();
+ if(!D_80383010.unk3_5){
+ gcPauseMenu_setState(0x10);
}
break;
case 0x10:
- func_80312F88(D_80383010.unk2);
- func_80313134();
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(BUTTON_START) == 1){
D_80383010.unk1 = 3;
- func_803120FC(0x11);
+ gcPauseMenu_setState(0x11);
}//L80313EFC
- else if(sp6C[1] == 1){
- func_803120FC(0x11);
+ else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
+ gcPauseMenu_setState(0x11);
}
- else if(sp48[0] < -0.75){
- func_8031307C(-1);
- func_803120FC(0x11);
+ else if(joystick[JOYSTICK_X] < -0.75){
+ gcpausemenu_getNextPage(-1);
+ gcPauseMenu_setState(0x11);
}
break;
case 0x11:
- func_80312F88(D_80383010.unk2);
- func_80312FD0(-1);
- func_80313134();
+ gcpausemenu_printTotalsHeader(D_80383010.selection);
+ gcpausemenu_80312FD0(-1);
+ gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk9 == -1){
- D_80383010.unk0_3 = 0;
- D_80383010.unk0_2 = 0;
+ D_80383010.left_joystick_visible = 0;
+ D_80383010.right_joystick_visible = 0;
}
- if(D_80383010.unk3C == 0){
- func_803120FC(0x12);
+ if(D_80383010.sns_alpha == 0){
+ gcPauseMenu_setState(0x12);
}
break;
case 0x12:
if(D_80383010.unk1 == 3){
- D_80383010.unk0_7 = 1;
+ D_80383010.unk3_7 = 1;
}else{
- func_803120FC((D_80383010.unk9 != -1)?7:0);
+ gcPauseMenu_setState((D_80383010.unk9 != -1)?7:0);
}
break;
case 0x14:
func_802DC5B8();
if( 5.0 < D_80383010.unkC){
- if(!D_80383010.unk0_6){
+ if(!D_80383010.unk3_6){
func_802DC560(0,0);
func_802E412C(1,0);
func_802E4078(0x1f, 0, 1);
- D_80383010.unk0_6 = 1;
+ D_80383010.unk3_6 = 1;
}
}
break;
}
- return D_80383010.unk0_7;
+ return D_80383010.unk3_7;
}
-void __pause_drawSprite(Gfx** gdl, Mtx** mptr, void* vptr, BKSprite* sprite, s32 frame, f32 x, f32 y, f32 w, f32 h, u8 a){
+void __gcpausemenu_drawSprite(Gfx** gdl, Mtx** mptr, Vtx** vptr, BKSprite* sprite, s32 frame, f32 x, f32 y, f32 w, f32 h, u8 a){
f32 sp5C[3];
f32 sp50[3];
f32 sp44[3];
@@ -1236,17 +1246,17 @@ void __pause_drawSprite(Gfx** gdl, Mtx** mptr, void* vptr, BKSprite* sprite, s32
}
-void func_80314234(Gfx** gdl, Mtx** mptr, s32 vptr, BKSprite *sprite, s32 frame, f32 x, f32 y, s32 mirror, u8 a){
+void gcpausemenu_drawSprite(Gfx** gdl, Mtx** mptr, s32 vptr, BKSprite *sprite, s32 frame, f32 x, f32 y, s32 mirror, u8 a){
BKSpriteFrame *_frame;
s32 w;
s32 h;
_frame = spriteGetFramePtr(sprite, frame);
w = ((mirror)? -1 : 1) * _frame->w;
h = _frame->h;
- __pause_drawSprite(gdl, mptr, vptr, sprite, frame, (x - w * 0.5), (y - h * 0.5), w, h, a);
+ __gcpausemenu_drawSprite(gdl, mptr, vptr, sprite, frame, (x - w * 0.5), (y - h * 0.5), w, h, a);
}
-void func_80314320(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
+void gcpausemenu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
static int D_8036C620 = 1;
s32 var_a0;
@@ -1277,50 +1287,50 @@ void func_80314320(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
gczoombox_draw(D_80383010.zoombox[i], gfx, mtx, vtx);
}
- func_80314234(gfx, mtx, vtx, D_80383010.unk24, D_80383010.unkA, 30.0f, 196.0f, 1, (s32) D_80383010.unk34);
- func_80314234(gfx, mtx, vtx, D_80383010.unk24, D_80383010.unkA, (f32) (D_80276588 - 0x1E), 196.0f, 0, (s32) D_80383010.unk36);
- var_a0 =((*((u32 *)&D_80383010.unk0) << 0x1c) >> 0x1f);
+ gcpausemenu_drawSprite(gfx, mtx, vtx, D_80383010.joystick_sprite, D_80383010.joystick_frame, 30.0f, 196.0f, 1, (s32) D_80383010.left_joystick_alpha);
+ gcpausemenu_drawSprite(gfx, mtx, vtx, D_80383010.joystick_sprite, D_80383010.joystick_frame, (f32) (D_80276588 - 0x1E), 196.0f, 0, (s32) D_80383010.right_joystick_alpha);
+ var_a0 =((*((u32 *)&D_80383010.state) << 0x1c) >> 0x1f); //left_joystick_visible
if ( var_a0 != 0) {
- if (D_80383010.unk34 < 0xFF) {
- D_80383010.unk34 = (D_80383010.unk34 + 0xC < 0xFF) ?D_80383010.unk34 + 0xC : 0xFF;
+ if (D_80383010.left_joystick_alpha < 0xFF) {
+ D_80383010.left_joystick_alpha = (D_80383010.left_joystick_alpha + 0xC < 0xFF) ?D_80383010.left_joystick_alpha + 0xC : 0xFF;
}
}
- var_a0 =((*((u32 *)&D_80383010.unk0) << 0x1c) >> 0x1f);
+ var_a0 =((*((u32 *)&D_80383010.state) << 0x1c) >> 0x1f); //left_joystick_visible
if (var_a0 == 0) {
- if (D_80383010.unk34 > 0) {
- D_80383010.unk34 = (D_80383010.unk34 - 0xC > 0) ? D_80383010.unk34 - 0xC : 0;
+ if (D_80383010.left_joystick_alpha > 0) {
+ D_80383010.left_joystick_alpha = (D_80383010.left_joystick_alpha - 0xC > 0) ? D_80383010.left_joystick_alpha - 0xC : 0;
}
}
- if (((*((u32 *)&D_80383010.unk0) << 0x1d) >> 0x1f) != 0) {
- if (D_80383010.unk36 < 0xFF) {
- D_80383010.unk36 = (D_80383010.unk36 + 0xC < 0xFF) ? D_80383010.unk36 + 0xC : 0xFF;
+ if (((*((u32 *)&D_80383010.state) << 0x1d) >> 0x1f) != 0) { //right_joystick_visible
+ if (D_80383010.right_joystick_alpha < 0xFF) {
+ D_80383010.right_joystick_alpha = (D_80383010.right_joystick_alpha + 0xC < 0xFF) ? D_80383010.right_joystick_alpha + 0xC : 0xFF;
}
}
- if (((*((u32 *)&D_80383010.unk0) << 0x1d) >> 0x1f) == 0) {
- if (D_80383010.unk36 > 0) {
- D_80383010.unk36 = (D_80383010.unk36 - 0xC > 0) ? D_80383010.unk36 - 0xC : 0;
+ if (((*((u32 *)&D_80383010.state) << 0x1d) >> 0x1f) == 0) {//right_joystick_visible
+ if (D_80383010.right_joystick_alpha > 0) {
+ D_80383010.right_joystick_alpha = (D_80383010.right_joystick_alpha - 0xC > 0) ? D_80383010.right_joystick_alpha - 0xC : 0;
}
}
- func_80314234(gfx, mtx, vtx, D_80383010.unk2C, (s32) D_80383010.unk30, D_80276588 * 0.5, 196.0f, 0, (s32) D_80383010.unk32);
- var_a0 = ((*((u32 *)&D_80383010.unk0) << 0x1e) >> 0x1f);
+ gcpausemenu_drawSprite(gfx, mtx, vtx, D_80383010.b_button_sprite, (s32) D_80383010.b_button_frame, D_80276588 * 0.5, 196.0f, 0, (s32) D_80383010.b_button_alpha);
+ var_a0 = ((*((u32 *)&D_80383010.state) << 0x1e) >> 0x1f);//b_button_visible
if (var_a0 != 0) {
- if (D_80383010.unk32 < 0xFF) {
- D_80383010.unk32 = (D_80383010.unk32 + 0xC < 0xFF) ? D_80383010.unk32 + 0xC : 0xFF;
+ if (D_80383010.b_button_alpha < 0xFF) {
+ D_80383010.b_button_alpha = (D_80383010.b_button_alpha + 0xC < 0xFF) ? D_80383010.b_button_alpha + 0xC : 0xFF;
}
}
- if (var_a0 == 0) {
- if (D_80383010.unk32 > 0) {
- D_80383010.unk32 = (D_80383010.unk32 - 0xC > 0) ? D_80383010.unk32 - 0xC : 0;
+ if (var_a0 == 0) { //b_button_visible
+ if (D_80383010.b_button_alpha > 0) {
+ D_80383010.b_button_alpha = (D_80383010.b_button_alpha - 0xC > 0) ? D_80383010.b_button_alpha - 0xC : 0;
}
}
- if (D_80383010.unk3C != 0) {
+ if (D_80383010.sns_alpha != 0) {
sp7C = time_getDelta();
for(i = 1; i < 7; i++){
if (sns_get_item_state(i, 0)) {
- D_80383010.unk3E[i] += (f32) D_80383010.unk4A[i + 1] * sp7C;
+ D_80383010.unk3E[i] += (f32) D_80383010.unk4C[i] * sp7C;
if (D_80383010.unk3E[i] > 360.0) {
D_80383010.unk3E[i] -= 360.0;
}
@@ -1356,14 +1366,14 @@ void func_80314320(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
}
func_8033A45C(i, 1);
set_model_render_mode(0);
- func_8033A410(D_80383010.unk3C);
- func_803391A4(gfx, mtx, &sp98, &sp8C, 0.8f, &sp80, D_80383010.unk5C);
+ func_8033A410(D_80383010.sns_alpha);
+ func_803391A4(gfx, mtx, &sp98, &sp8C, 0.8f, &sp80, D_80383010.sns_egg_model);
func_8024E2FC();
func_8024C904(gfx, mtx);
}
}
if (sns_get_item_state(7, 0)) {
- D_80383010.unk3E[0] += D_80383010.unk4A[1] * sp7C;
+ D_80383010.unk3E[0] += D_80383010.unk4C[0] * sp7C;
if (D_80383010.unk3E[0] > 360.0) {
D_80383010.unk3E[0] -= 360.0;
}
@@ -1397,49 +1407,49 @@ void func_80314320(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
sp80[1] = 120.0f;
sp80[2] = 0.0f;
set_model_render_mode(0);
- func_8033A410(D_80383010.unk3C);
- func_803391A4(gfx, mtx, sp98, sp8C, 0.8f, sp80, D_80383010.unk60);
+ func_8033A410(D_80383010.sns_alpha);
+ func_803391A4(gfx, mtx, sp98, sp8C, 0.8f, sp80, D_80383010.ice_key_model);
func_8024E2FC();
func_8024C904(gfx, mtx);
}
}
- if (D_80383010.unk3A != 0) {
- if (D_80383010.unk3C < 0xFF) {
- D_80383010.unk3C = (D_80383010.unk3C + 0xC < 0xFF) ? D_80383010.unk3C + 0xC : 0xFF;
+ if (D_80383010.sns_visible != 0) {
+ if (D_80383010.sns_alpha < 0xFF) {
+ D_80383010.sns_alpha = (D_80383010.sns_alpha + 0xC < 0xFF) ? D_80383010.sns_alpha + 0xC : 0xFF;
}
}
- if (D_80383010.unk3A == 0) {
- if (D_80383010.unk3C > 0) {
- D_80383010.unk3C = (D_80383010.unk3C - 0xC > 0) ? D_80383010.unk3C - 0xC : 0;
+ if (D_80383010.sns_visible == 0) {
+ if (D_80383010.sns_alpha > 0) {
+ D_80383010.sns_alpha = (D_80383010.sns_alpha - 0xC > 0) ? D_80383010.sns_alpha - 0xC : 0;
}
}
- if (D_80383010.unk0 == 0x14) {
+ if (D_80383010.state == 0x14) {
func_802DC604(gfx, mtx, vtx);
}
}
-void func_80314AC8(int arg0){
+void gcpausemenu_80314AC8(int arg0){
if(arg0)
D_80383084--;
else
D_80383084++;
}
-int func_80314B00(void){
+int gcpausemenu_80314B00(void){
return (!D_80383084) ? 1: 0;
}
-void func_80314B24(void){
+void gcpausemenu_80314B24(void){
D_80383084 = 0;
}
-void func_80314B30(void){
+void gcpausemenu_returnToLair(void){
s32 level = level_get();
if(0 < level && level < 0xC && D_8036C560[level-1].map != -1){
- func_803204E4(0x16, 1);
+ func_803204E4(0x16, TRUE);
func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1);
}
}
diff --git a/src/core2/code_83D70.c b/src/core2/gc/section.c
similarity index 99%
rename from src/core2/code_83D70.c
rename to src/core2/gc/section.c
index 42c97bce..ec2e8e4d 100644
--- a/src/core2/code_83D70.c
+++ b/src/core2/gc/section.c
@@ -278,6 +278,6 @@ void func_8030AFD8(s32 arg0){
}
func_8034789C();
func_80250FC0(); //stop controller motor
- func_80314B24();
+ gcpausemenu_80314B24();
func_80347A70();
}
\ No newline at end of file
diff --git a/src/core2/code_840D0.c b/src/core2/gc/sky.c
similarity index 100%
rename from src/core2/code_840D0.c
rename to src/core2/gc/sky.c
diff --git a/src/core2/gc/zoombox.c b/src/core2/gc/zoombox.c
index f8af60cb..4cf4cc74 100644
--- a/src/core2/gc/zoombox.c
+++ b/src/core2/gc/zoombox.c
@@ -911,7 +911,7 @@ void func_80316764(gczoombox_t *this, s32 arg1) {
return;
}
- if (arg1 && this->unk1A4_12 && sp38[0]) {
+ if (arg1 && this->unk1A4_12 && sp38[FACE_BUTTON(BUTTON_A)]) {
if (this->unk110[0] == -1.0f) {
func_80315C90(this, 1);
} else {
@@ -1142,7 +1142,7 @@ void gczoombox_update(gczoombox_t *this){
if(this->unk1A4_19){
sp44 *= 1.5;
}
- if(sp58[0] && this->unk1A4_12){
+ if(sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12){
sp44 *= 0.5;
}
else if(sp4C[0] && this->unk1A4_12){
@@ -1152,7 +1152,7 @@ void gczoombox_update(gczoombox_t *this){
while(sp44 < this->unk18C && this->unk15C >= this->unk15E){
this->unk15E++;
if(func_803156F0(this->unk60[this->unk15E], this->unk1A4_19)){
- this->unk18C -= (sp58[0] && this->unk1A4_12) ? 0.05 : 0.1;
+ this->unk18C -= (sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12) ? 0.05 : 0.1;
}//L803172B4
this->unk18C -= sp44;
}//L803172EC
@@ -1171,7 +1171,7 @@ void gczoombox_update(gczoombox_t *this){
}
break;
case 0x3: //L80317360
- if((sp58[0] && this->unk1A4_12) || this->unk181 < 0){
+ if((sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12) || this->unk181 < 0){
this->state = 4;
this->unk183 = 0.5*sp48*this->unk184;
@@ -1180,7 +1180,7 @@ void gczoombox_update(gczoombox_t *this){
}
break;
case 0x4: //L80317470
- if(sp58[0] && this->unk1A4_12){
+ if(sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12){
this->unk183 = 0.5*sp48*(this->unk184 + 2);
this->unk1A4_23 = 0;
}
diff --git a/src/lair/code_5640.c b/src/lair/code_5640.c
index 28fd6756..58c6f7f8 100644
--- a/src/lair/code_5640.c
+++ b/src/lair/code_5640.c
@@ -184,7 +184,7 @@ void func_8038BCF0(Actor *this) {
func_80328A84(this, 2);
return;
}
- if (func_8028EFC8() && (sp78[BUTTON_Z] == 1)) {
+ if (func_8028EFC8() && (sp78[FACE_BUTTON(BUTTON_B)] == 1)) {
this->unk10_12++;
this->unk10_12 %= 3;
func_80311174(local->unk0 + this->unk10_12, 0xB, this->position, this->marker, func_8038BADC, NULL, func_8038BA30);
diff --git a/src/lair/code_5ED0.c b/src/lair/code_5ED0.c
index b5a3f798..b58aa0a6 100644
--- a/src/lair/code_5ED0.c
+++ b/src/lair/code_5ED0.c
@@ -703,7 +703,7 @@ void func_8038D670(enum FF_Action next_state) {
}
} else {
if (D_8037DCB8->unk4->unk8 == FFTT_6_SKULL) {
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
if (func_80305248(sp30, 0x377, D_8037DCB8->playerPosition)) {
func_8038D548(1);
func_8028F5F8(sp30);
@@ -973,7 +973,7 @@ void func_8038E0B0(void) {
func_80356540(0xAA);
}
if ((D_8037DCB8->unk4->unk9 == 2) && (func_8028ECAC() == 0)) {
- if (func_8028EFEC() && (sp48[BUTTON_START] == 1)) {
+ if (func_8028EFEC() && (sp48[FACE_BUTTON(BUTTON_A)] == 1)) {
func_803114D0();
player_getRotation(D_8037DCB8->playerRotation);
D_8037DCB8->ffQuestionType = func_8038DCD4(sp38);
@@ -981,7 +981,7 @@ void func_8038E0B0(void) {
func_8038D670(3);
return;
}
- if (func_8028EFC8() && (sp48[BUTTON_Z] == 1)) {
+ if (func_8028EFC8() && (sp48[FACE_BUTTON(BUTTON_B)] == 1)) {
if ((item_getCount(ITEM_27_JOKER_CARD) > 0) && (sp28 < 0x5B)) {
func_8038C640(D_8037DCB8->unk8, D_8037DCB8->unk4);
item_dec(ITEM_27_JOKER_CARD);
@@ -1006,7 +1006,7 @@ void func_8038E0B0(void) {
if ((D_8037DCB8->ffQuestionType == 2) && D_80394354[D_8037DCB8->unkC].unk0 == 2){
gczoombox_update(D_8037DCB8->unk20);
}
- if ((D_8037DCB8->unk12 == 0) && func_8028EFC8() && (sp48[BUTTON_Z] == 1)) {
+ if ((D_8037DCB8->unk12 == 0) && func_8028EFC8() && (sp48[FACE_BUTTON(BUTTON_B)] == 1)) {
func_80324C58();
func_8038D670(4);
}
diff --git a/src/lair/code_86F0.c b/src/lair/code_86F0.c
index fd03f32a..214c4264 100644
--- a/src/lair/code_86F0.c
+++ b/src/lair/code_86F0.c
@@ -75,7 +75,7 @@ void func_8038EB94(void){
func_80320004(BKPROG_B9_DOUBLE_HEALTH, TRUE);
func_80347958();
func_803463D4(ITEM_14_HEALTH, 0);
- func_80314AC8(1);
+ gcpausemenu_80314AC8(1);
}
void func_8038EBEC(ActorMarker *marker) {
@@ -95,7 +95,7 @@ void func_8038EBEC(ActorMarker *marker) {
}
if (this->unkF4_8 == 0xB) {
timedFunc_set_0(1.5f, func_8038EB94);
- func_80314AC8(0);
+ gcpausemenu_80314AC8(0);
}
}
@@ -493,13 +493,13 @@ void func_8038F924(Actor *this) {
case 4: //L8038FE28
if ((func_803114C4() != 0xF7C) && (func_803114C4() != 0xF7D)) {
- if (sp7C[BUTTON_START] == 1) {
+ if (sp7C[FACE_BUTTON(BUTTON_A)] == 1) {
func_8038F894(this, 5);
- } else if (sp7C[BUTTON_Z] == 1) {
+ } else if (sp7C[FACE_BUTTON(BUTTON_B)] == 1) {
func_8038F350(this, 1);
} else if ((sp6C[0] == 1) && func_8031FF1C(0xE0)) {
func_8038F894(this, 6);
- } else if (sp7C[BUTTON_R] == 1) {
+ } else if (sp7C[FACE_BUTTON(BUTTON_C_DOWN)] == 1) {
if (local->unk4) {
func_8038F350(this, 8);
} else {
diff --git a/src/lair/code_9C40.c b/src/lair/code_9C40.c
index fb002e72..bd0d8a70 100644
--- a/src/lair/code_9C40.c
+++ b/src/lair/code_9C40.c
@@ -108,7 +108,7 @@ void func_803902B8(Actor *this) {
sp58 = func_80259384(this->position, sp5C, 400.0f);
if (func_8031FF1C(sp54 + 0xAD)) {
func_8024E55C(0, sp3C);
- sp58 &= (sp3C[BUTTON_Z] == TRUE) || func_8028EC04();
+ sp58 &= (sp3C[FACE_BUTTON(BUTTON_B)] == 1) || func_8028EC04();
}
if (sp58 && !*(s32 *)&this->local) {
func_80390174(this->marker, 0);
diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml
index fe6c5b83..a33bf0ae 100644
--- a/subyaml/core2.us.v10.yaml
+++ b/subyaml/core2.us.v10.yaml
@@ -287,8 +287,8 @@ segments:
- [0x7AF80, c, code_7AF80]
- [0x82000, c, code_82000]
- [0x83340, c, code_83340]
- - [0x83D70, c, code_83D70] #DONE
- - [0x840D0, c, code_840D0] #DONE
+ - [0x83D70, c, gc/section] #DONE
+ - [0x840D0, c, gc/sky] #DONE
- [0x84470, c, gc/transition] #DONE
- [0x851D0, c, code_851D0]
- [0x857B0, c, code_857B0] #DONE
@@ -298,7 +298,7 @@ segments:
- [0x8DC20, c, code_8DC20]
- [0x8E270, c, gc/zoombox] #DONE
- [0x91E10, c, code_91E10]
- - [0x935F0, c, code_935F0]
+ - [0x935F0, c, code_935F0] #DONE #chminigmae
- [0x93C10, c, code_93C10]
- [0x94620, c, code_94620] #DONE
- [0x94780, c, code_94780] #DONE
@@ -539,8 +539,8 @@ segments:
- [0xE3A20, bin, data_E3A20]
- [0xE3C50, .data, code_82000]
- [0xE4870, bin, data_E4870]
- - [0xE4880, .data, code_83D70]
- - [0xE4DB0, .data, code_840D0]
+ - [0xE4880, .data, gc/section]
+ - [0xE4DB0, .data, gc/sky]
- [0xE51C0, .data, gc/transition]
- [0xE54C0, .data, code_851D0]
- [0xE5540, bin, data_E5540]
@@ -762,8 +762,8 @@ segments:
- [0xF0520, .rodata, code_7AF80]
# - [0xF0540, bin, data_F0540]
- [0xF05E0, bin, data_F05E0]
- - [0xF07B0, .rodata, code_83D70]
- - [0xF14B0, .rodata, code_840D0]
+ - [0xF07B0, .rodata, gc/section]
+ - [0xF14B0, .rodata, gc/sky]
- [0xF14C0, .rodata, gc/transition]
- [0xF1520, .rodata, code_85800]
- [0xF1540, .rodata, code_87E30]
@@ -772,7 +772,8 @@ segments:
- [0xF18F0, .rodata, gc/zoombox]
# - [0xF1960, bin, data_F1960]
- [0xF19C0, .rodata, code_91E10]
- - [0xF1A00, bin, data_F1A00]
+ - [0xF1A00, .rodata, code_935F0]
+ - [0xF1A20, bin, data_F1A20]
- [0xF1DC0, .rodata, code_9A9D0]
- [0xF1DF0, .rodata, code_9B180]
- [0xF1E10, .rodata, code_9C170]
@@ -1029,8 +1030,8 @@ segments:
- [0xf2c00, .bss, code_7AF80]
- [0xf2c00, .bss, code_82000]
- [0xf2c00, .bss, code_83340]
- - [0xf2c00, .bss, code_83D70]
- - [0xf2c00, .bss, code_840D0]
+ - [0xf2c00, .bss, gc/section]
+ - [0xf2c00, .bss, gc/sky]
- [0xf2c00, .bss, gc/transition]
- [0xf2c00, .bss, code_851D0]
- [0xf2c00, .bss, code_857B0]
diff --git a/symbol_addrs.core2.us.v10.txt b/symbol_addrs.core2.us.v10.txt
index 73ed22a9..b9bcc939 100644
--- a/symbol_addrs.core2.us.v10.txt
+++ b/symbol_addrs.core2.us.v10.txt
@@ -278,6 +278,8 @@ sfxsource_setSfxId = 0x8030DA80;
sfxsource_setSampleRate = 0x8030DABC;
gcdialog_setState = 0x8030F488;
gcdialog_update = 0x8030F990;
+gcpausemenu_getNextPage = 0x8031307C;
+gcPauseMenu_setState = 0x803120FC;
gczoombox_free = 0x80315374;
_gczoombox_memClear = 0x80315430;
gczoombox_draw = 0x80316B8C;
@@ -418,6 +420,7 @@ sSpawnableActorSize = 0x8036A9B0;
sSpawnableActorList = 0x8036A9B4;
D_8036B810 = 0x8036B810;
D_8036D940 = 0x8036D940;
+D_8036DD9C = 0x8036DD9C;
D_8036E598 = 0x8036E598;
D_8036E5B0 = 0x8036E5B0;
D_8036E5C0 = 0x8036E5C0;
diff --git a/undefined_syms.us.v10.txt b/undefined_syms.us.v10.txt
index e0a7404b..68102d7d 100644
--- a/undefined_syms.us.v10.txt
+++ b/undefined_syms.us.v10.txt
@@ -37,7 +37,7 @@ func_802E4078 = 0x802E4078;
func_8030E484 = 0x8030E484;
func_8030E510 = 0x8030E510;
func_80311714 = 0x80311714;
-func_80314AC8 = 0x80314AC8;
+gcpausemenu_80314AC8 = 0x80314AC8;
func_8031CC40 = 0x8031CC40;
func_8031F678 = 0x8031F678;
func_8031FB14 = 0x8031FB14;