Decompile menuTick

This commit is contained in:
Ryan Dwyer
2022-01-12 12:25:24 +10:00
parent 9e8654b4eb
commit 763fba657b
13 changed files with 795 additions and 6154 deletions
+2 -2
View File
@@ -522,7 +522,7 @@ struct menudialog g_MissionContinueOrReplyMenuDialog = {
* Context is:
*
* 0 when closing a completed endscreen
* 1 unsure - is invoked directly by menuTickAll
* 1 unsure - is invoked directly by menuTick
* 2 when pressing continue
*/
void endscreenHandleContinue(s32 context)
@@ -1640,7 +1640,7 @@ void soloPushCoopModeEndscreen(void)
* (ie. retry, next mission or continue), and it looks like it might be for coop
* only but I'm not 100% sure.
*
* This function is only called from menuTickAll, which is a bit weird...
* This function is only called from menuTick, which is a bit weird...
*/
void soloPushSoloModeEndscreen(void)
{
+698 -6056
View File
File diff suppressed because it is too large Load Diff
+49 -49
View File
@@ -15853,7 +15853,7 @@ glabel var7f1b296c
/* f0f7590: 00000000 */ nop
);
u32 var800714d8 = 0x00000001;
u32 g_MpNumJoined = 1;
#if VERSION >= VERSION_NTSC_1_0
GLOBAL_ASM(
@@ -15866,7 +15866,7 @@ glabel func0f0f7594
/* f0f75a8: aca00000 */ sw $zero,0x0($a1)
/* f0f75ac: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7)
/* f0f75b0: 3c02800a */ lui $v0,%hi(g_Menus+0x83b)
/* f0f75b4: 3c038007 */ lui $v1,%hi(var800714d8)
/* f0f75b4: 3c038007 */ lui $v1,%hi(g_MpNumJoined)
/* f0f75b8: 000fc0c0 */ sll $t8,$t7,0x3
/* f0f75bc: 030fc023 */ subu $t8,$t8,$t7
/* f0f75c0: 0018c080 */ sll $t8,$t8,0x2
@@ -15878,7 +15878,7 @@ glabel func0f0f7594
/* f0f75d8: 9042e83b */ lbu $v0,%lo(g_Menus+0x83b)($v0)
/* f0f75dc: aca00000 */ sw $zero,0x0($a1)
/* f0f75e0: acc00000 */ sw $zero,0x0($a2)
/* f0f75e4: 8c6314d8 */ lw $v1,%lo(var800714d8)($v1)
/* f0f75e4: 8c6314d8 */ lw $v1,%lo(g_MpNumJoined)($v1)
/* f0f75e8: 24010001 */ addiu $at,$zero,0x1
/* f0f75ec: 10610009 */ beq $v1,$at,.L0f0f7614
/* f0f75f0: 24010002 */ addiu $at,$zero,0x2
@@ -16257,8 +16257,8 @@ glabel var7f1b2990
/* f0f790c: 00000000 */ nop
/* f0f7910: 2484fff6 */ addiu $a0,$a0,-10
.L0f0f7914:
/* f0f7914: 3c028007 */ lui $v0,%hi(var800714d8)
/* f0f7918: 8c4214d8 */ lw $v0,%lo(var800714d8)($v0)
/* f0f7914: 3c028007 */ lui $v0,%hi(g_MpNumJoined)
/* f0f7918: 8c4214d8 */ lw $v0,%lo(g_MpNumJoined)($v0)
/* f0f791c: 24010001 */ addiu $at,$zero,0x1
/* f0f7920: 1041000a */ beq $v0,$at,.L0f0f794c
/* f0f7924: 24010002 */ addiu $at,$zero,0x2
@@ -23750,34 +23750,34 @@ void func0f0fa6ac(void)
#if VERSION >= VERSION_PAL_FINAL
GLOBAL_ASM(
glabel func0f0fa704
glabel menuDialogTick
.late_rodata
glabel var7f1b2a98
.word func0f0fa704+0xd64
.word menuDialogTick+0xd64
glabel var7f1b2a9c
.word func0f0fa704+0xd64
.word menuDialogTick+0xd64
glabel var7f1b2aa0
.word func0f0fa704+0xc8c
.word menuDialogTick+0xc8c
glabel var7f1b2aa4
.word func0f0fa704+0xd14
.word menuDialogTick+0xd14
glabel var7f1b2aa8
.word func0f0fa704+0xd64
.word menuDialogTick+0xd64
glabel var7f1b2aac
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2ab0
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2ab4
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2ab8
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2abc
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2ac0
.word func0f0fa704+0xc8c
.word menuDialogTick+0xc8c
glabel var7f1b2ac4
.word func0f0fa704+0xda8
.word menuDialogTick+0xda8
glabel var7f1b2ac8
.word func0f0fa704+0xd64
.word menuDialogTick+0xd64
.text
/* f0fae40: 27bdfed0 */ addiu $sp,$sp,-304
/* f0fae44: afb70034 */ sw $s7,0x34($sp)
@@ -24801,34 +24801,34 @@ glabel var7f1b2ac8
);
#elif VERSION >= VERSION_NTSC_1_0
GLOBAL_ASM(
glabel func0f0fa704
glabel menuDialogTick
.late_rodata
glabel var7f1b2a98
.word func0f0fa704+0xd10 # f0fb414
.word menuDialogTick+0xd10 # f0fb414
glabel var7f1b2a9c
.word func0f0fa704+0xd10 # f0fb414
.word menuDialogTick+0xd10 # f0fb414
glabel var7f1b2aa0
.word func0f0fa704+0xc38 # f0fb33c
.word menuDialogTick+0xc38 # f0fb33c
glabel var7f1b2aa4
.word func0f0fa704+0xcc0 # f0fb3c4
.word menuDialogTick+0xcc0 # f0fb3c4
glabel var7f1b2aa8
.word func0f0fa704+0xd10 # f0fb414
.word menuDialogTick+0xd10 # f0fb414
glabel var7f1b2aac
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2ab0
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2ab4
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2ab8
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2abc
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2ac0
.word func0f0fa704+0xc38 # f0fb33c
.word menuDialogTick+0xc38 # f0fb33c
glabel var7f1b2ac4
.word func0f0fa704+0xd54 # f0fb458
.word menuDialogTick+0xd54 # f0fb458
glabel var7f1b2ac8
.word func0f0fa704+0xd10 # f0fb414
.word menuDialogTick+0xd10 # f0fb414
.text
/* f0fa704: 27bdfed0 */ addiu $sp,$sp,-304
/* f0fa708: afb70034 */ sw $s7,0x34($sp)
@@ -25828,34 +25828,34 @@ glabel var7f1b2ac8
);
#else
GLOBAL_ASM(
glabel func0f0fa704
glabel menuDialogTick
.late_rodata
glabel var7f1b2a98
.word func0f0fa704+0xd10
.word menuDialogTick+0xd10
glabel var7f1b2a9c
.word func0f0fa704+0xd10
.word menuDialogTick+0xd10
glabel var7f1b2aa0
.word func0f0fa704+0xc38
.word menuDialogTick+0xc38
glabel var7f1b2aa4
.word func0f0fa704+0xcc0
.word menuDialogTick+0xcc0
glabel var7f1b2aa8
.word func0f0fa704+0xd10
.word menuDialogTick+0xd10
glabel var7f1b2aac
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2ab0
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2ab4
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2ab8
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2abc
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2ac0
.word func0f0fa704+0xc38
.word menuDialogTick+0xc38
glabel var7f1b2ac4
.word func0f0fa704+0xd54
.word menuDialogTick+0xd54
glabel var7f1b2ac8
.word func0f0fa704+0xd10
.word menuDialogTick+0xd10
.text
/* f0f6e54: 27bdfed0 */ addiu $sp,$sp,-304
/* f0f6e58: afb70034 */ sw $s7,0x34($sp)
@@ -28862,7 +28862,7 @@ glabel var7f1b2afc
/* f0fc340: 15610013 */ bne $t3,$at,.L0f0fc390
/* f0fc344: 24010002 */ addiu $at,$zero,0x2
/* f0fc348: 1441000d */ bne $v0,$at,.L0f0fc380
/* f0fc34c: 3c108007 */ lui $s0,%hi(var800714d8)
/* f0fc34c: 3c108007 */ lui $s0,%hi(g_MpNumJoined)
/* f0fc350: 3c02800a */ lui $v0,%hi(g_Vars)
/* f0fc354: 24100001 */ addiu $s0,$zero,0x1
/* f0fc358: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars)
@@ -28878,7 +28878,7 @@ glabel var7f1b2afc
/* f0fc378: 10000005 */ b .L0f0fc390
/* f0fc37c: 00000000 */ nop
.L0f0fc380:
/* f0fc380: 8e1014d8 */ lw $s0,%lo(var800714d8)($s0)
/* f0fc380: 8e1014d8 */ lw $s0,%lo(g_MpNumJoined)($s0)
/* f0fc384: 2e0e0002 */ sltiu $t6,$s0,0x2
/* f0fc388: 10000001 */ b .L0f0fc390
/* f0fc38c: 01c08025 */ or $s0,$t6,$zero
+7 -7
View File
@@ -137,7 +137,7 @@ void func0f10cb2c(void)
if (g_FileState != FILESTATE_UNSELECTED) {
if (var80087260 == 0) {
g_Vars.unk000490 = 2;
g_Vars.mpsetupmenu = MPSETUPMENU_GENERAL;
menuPushRootDialog(&g_MainMenu4MbMenuDialog, MENUROOT_4MBMAINMENU);
}
} else {
@@ -163,18 +163,18 @@ void func0f10cb2c(void)
s32 menudialog4MbMainMenu(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_OPEN) {
g_Vars.unk000494[0] = 0;
g_Vars.unk000494[1] = 0;
g_Vars.unk000494[2] = 0;
g_Vars.unk000494[3] = 0;
g_Vars.waitingtojoin[0] = false;
g_Vars.waitingtojoin[1] = false;
g_Vars.waitingtojoin[2] = false;
g_Vars.waitingtojoin[3] = false;
}
if (g_Menus[g_MpPlayerNum].curframe &&
g_Menus[g_MpPlayerNum].curframe->dialog == &g_MainMenu4MbMenuDialog &&
operation == MENUOP_TICK) {
g_Vars.unk000490 = 2;
g_Vars.mpsetupmenu = MPSETUPMENU_GENERAL;
g_Vars.mpquickteam = MPQUICKTEAM_NONE;
g_Vars.unk00049c = 0;
g_Vars.usingadvsetup = false;
mpClearCurrentChallenge();
mpRemoveLock();
}
+11 -11
View File
@@ -3642,7 +3642,7 @@ Gfx *lvRender(Gfx *gdl)
gdl = currentPlayerScissorToViewport(gdl);
mtx00016748(1);
if (g_Vars.currentplayer->unk1c50_01) {
if (g_Vars.currentplayer->menuisactive) {
gdl = func0f0fbc30(gdl);
}
} else {
@@ -4059,7 +4059,7 @@ Gfx *lvRender(Gfx *gdl)
gdl = amRender(gdl);
mtx00016748(1);
if (g_Vars.currentplayer->unk1c50_01) {
if (g_Vars.currentplayer->menuisactive) {
gdl = func0f0fbc30(gdl);
}
@@ -7676,7 +7676,7 @@ glabel var7f1b8ed0pf
/* f16d720: 00002025 */ move $a0,$zero
/* f16d724: 0fc2f738 */ jal currentPlayerConfigureVi
/* f16d728: 00000000 */ nop
/* f16d72c: 0fc07006 */ jal menuTickAll
/* f16d72c: 0fc07006 */ jal menuTick
/* f16d730: 00000000 */ nop
/* f16d734: 0c0046c5 */ jal musicTick
/* f16d738: 00000000 */ nop
@@ -7690,7 +7690,7 @@ glabel var7f1b8ed0pf
.PF0f16d758:
/* f16d758: 5441000c */ bnel $v0,$at,.PF0f16d78c
/* f16d75c: 2401005c */ li $at,0x5c
/* f16d760: 0fc07006 */ jal menuTickAll
/* f16d760: 0fc07006 */ jal menuTick
/* f16d764: 00000000 */ nop
/* f16d768: 0c0046c5 */ jal musicTick
/* f16d76c: 00000000 */ nop
@@ -7759,7 +7759,7 @@ glabel var7f1b8ed0pf
/* f16d858: 00000000 */ nop
/* f16d85c: 0fc06c94 */ jal amTick
/* f16d860: 00000000 */ nop
/* f16d864: 0fc07006 */ jal menuTickAll
/* f16d864: 0fc07006 */ jal menuTick
/* f16d868: 00000000 */ nop
/* f16d86c: 0fc619ac */ jal scenarioTick
/* f16d870: 00000000 */ nop
@@ -8102,12 +8102,12 @@ void lvTick(void)
musicTick();
} else if (g_Vars.stagenum == STAGE_BOOTPAKMENU) {
setCurrentPlayerNum(0);
menuTickAll();
menuTick();
musicTick();
func0f01d860();
pakExecuteDebugOperations();
} else if (g_Vars.stagenum == STAGE_4MBMENU) {
menuTickAll();
menuTick();
musicTick();
func0f01d860();
pakExecuteDebugOperations();
@@ -8141,7 +8141,7 @@ void lvTick(void)
func0f0b2904();
func0f0aefb8();
amTick();
menuTickAll();
menuTick();
scenarioTick();
if (!g_MainIsEndscreen) {
@@ -9278,7 +9278,7 @@ glabel lvTick
/* f16768c: 2401005d */ addiu $at,$zero,0x5d
/* f167690: 0fc48d5b */ jal setCurrentPlayerNum
/* f167694: 00002025 */ or $a0,$zero,$zero
/* f167698: 0fc06f0a */ jal menuTickAll
/* f167698: 0fc06f0a */ jal menuTick
/* f16769c: 00000000 */ sll $zero,$zero,0x0
/* f1676a0: 0c004848 */ jal musicTick
/* f1676a4: 00000000 */ sll $zero,$zero,0x0
@@ -9292,7 +9292,7 @@ glabel lvTick
.NB0f1676c4:
/* f1676c4: 5441000c */ bnel $v0,$at,.NB0f1676f8
/* f1676c8: 2401005c */ addiu $at,$zero,0x5c
/* f1676cc: 0fc06f0a */ jal menuTickAll
/* f1676cc: 0fc06f0a */ jal menuTick
/* f1676d0: 00000000 */ sll $zero,$zero,0x0
/* f1676d4: 0c004848 */ jal musicTick
/* f1676d8: 00000000 */ sll $zero,$zero,0x0
@@ -9361,7 +9361,7 @@ glabel lvTick
/* f1677c4: 00000000 */ sll $zero,$zero,0x0
/* f1677c8: 0fc06ba4 */ jal amTick
/* f1677cc: 00000000 */ sll $zero,$zero,0x0
/* f1677d0: 0fc06f0a */ jal menuTickAll
/* f1677d0: 0fc06f0a */ jal menuTick
/* f1677d4: 00000000 */ sll $zero,$zero,0x0
/* f1677d8: 0fc5ff13 */ jal scenarioTick
/* f1677dc: 00000000 */ sll $zero,$zero,0x0
+2 -2
View File
@@ -6098,8 +6098,8 @@ s32 menuhandlerMainMenuCombatSimulator(s32 operation, struct menuitem *item, uni
g_Vars.coopplayernum = -1;
g_Vars.antiplayernum = -1;
mpDetermineUnlockedFeatures();
g_Vars.unk000490 = 2;
func0f0f820c(&g_CombatSimulatorMenuDialog, 3);
g_Vars.mpsetupmenu = MPSETUPMENU_GENERAL;
func0f0f820c(&g_CombatSimulatorMenuDialog, MENUROOT_MPSETUP);
func0f0f8300();
}
+9 -9
View File
@@ -3507,8 +3507,8 @@ char *mpMenuTextWeaponSetName(struct menuitem *item)
s32 menudialogMpGameSetup(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_OPEN) {
g_Vars.unk000490 = 1;
g_Vars.unk00049c = 1;
g_Vars.mpsetupmenu = MPSETUPMENU_ADVSETUP;
g_Vars.usingadvsetup = true;
}
return false;
@@ -3517,7 +3517,7 @@ s32 menudialogMpGameSetup(s32 operation, struct menudialog *dialog, union handle
s32 menudialogMpQuickGo(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_OPEN) {
g_Vars.unk000490 = 3;
g_Vars.mpsetupmenu = MPSETUPMENU_QUICKGO;
}
return false;
@@ -3806,18 +3806,18 @@ s32 menuhandlerMpQuickTeamOption(s32 operation, struct menuitem *item, union han
s32 menudialogCombatSimulator(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_OPEN) {
g_Vars.unk000494[0] = 0;
g_Vars.unk000494[1] = 0;
g_Vars.unk000494[2] = 0;
g_Vars.unk000494[3] = 0;
g_Vars.waitingtojoin[0] = false;
g_Vars.waitingtojoin[1] = false;
g_Vars.waitingtojoin[2] = false;
g_Vars.waitingtojoin[3] = false;
}
if (g_Menus[g_MpPlayerNum].curframe
&& g_Menus[g_MpPlayerNum].curframe->dialog == &g_CombatSimulatorMenuDialog
&& operation == MENUOP_TICK) {
g_Vars.unk000490 = 2;
g_Vars.mpsetupmenu = MPSETUPMENU_GENERAL;
g_Vars.mpquickteam = MPQUICKTEAM_NONE;
g_Vars.unk00049c = 0;
g_Vars.usingadvsetup = false;
mpClearCurrentChallenge();
mpRemoveLock();
}
+4
View File
@@ -2720,6 +2720,10 @@
#define MPSCENARIO_KINGOFTHEHILL 4
#define MPSCENARIO_CAPTURETHECASE 5
#define MPSETUPMENU_ADVSETUP 1
#define MPSETUPMENU_GENERAL 2
#define MPSETUPMENU_QUICKGO 3
#define MPTEAM_0 0
#define MPTEAM_1 1
#define MPTEAM_2 2
+1 -1
View File
@@ -283,7 +283,7 @@ extern char g_StringPointer[];
extern char g_StringPointer2[];
#endif
extern s32 g_MpPlayerNum;
extern u32 var800714d8;
extern u32 g_MpNumJoined;
extern u16 g_ControlStyleOptions[];
extern struct menudialog g_PreAndPostMissionBriefingMenuDialog;
extern struct stageoverviewentry g_StageNames[NUM_SOLOSTAGES];
+1 -1
View File
@@ -6,6 +6,6 @@
void func0f01bea0(void);
void menuCountDialogs(void);
void menuTickAll(void);
void menuTick(void);
#endif
+1 -1
View File
@@ -69,7 +69,7 @@ u32 func0f0f9030(void);
u32 func0f0f935c(void);
void func0f0fa574(struct menuframe *frame);
void func0f0fa6ac(void);
void func0f0fa704(void);
void menuDialogTick(void);
u32 func0f0fb488(void);
Gfx *func0f0fbba0(Gfx *gdl, u8 param_2, s32 arg2);
Gfx *func0f0fbc30(Gfx *gdl);
+4 -9
View File
@@ -214,15 +214,10 @@ struct g_vars {
/*000484*/ s32 mphilltime;
/*000488*/ s32 totalkills;
/*00048c*/ bool unk00048c;
// 1 when entering game setup
// 2 when entering combat simulator
// 3 when entering Quick Go
/*000490*/ s32 unk000490;
/*000494*/ s8 unk000494[4];
/*000490*/ s32 mpsetupmenu;
/*000494*/ s8 waitingtojoin[4];
/*000498*/ s32 unk000498;
/*00049c*/ s32 unk00049c;
/*00049c*/ bool usingadvsetup;
/*0004a0*/ s32 unk0004a0;
/*0004a4*/ s32 mpquickteamnumsims;
/*0004a8*/ s32 mpsimdifficulty;
@@ -2942,7 +2937,7 @@ struct player {
/*0x1c3c*/ s32 unk1c3c;
/*0x1c40*/ u32 joybutinhibit;
/*0x1c44*/ struct coord bondextrapos;
/*0x1c50*/ u8 unk1c50_01 : 1;
/*0x1c50*/ u8 menuisactive : 1;
/*0x1c51*/ u8 disguised : 1;
/*0x1c54*/ u32 devicesinhibit;
/*0x1c58*/ f32 grabbedforcez;
+6 -6
View File
@@ -54,13 +54,13 @@ void gvarsInit(void)
g_Vars.enableslopes = false;
g_Vars.restartlevel = 0;
g_Vars.unk00048c = 0;
g_Vars.unk000490 = 0;
g_Vars.unk000494[0] = 0;
g_Vars.unk000494[1] = 0;
g_Vars.unk000494[2] = 0;
g_Vars.unk000494[3] = 0;
g_Vars.mpsetupmenu = 0;
g_Vars.waitingtojoin[0] = false;
g_Vars.waitingtojoin[1] = false;
g_Vars.waitingtojoin[2] = false;
g_Vars.waitingtojoin[3] = false;
g_Vars.unk000498 = 0;
g_Vars.unk00049c = 0;
g_Vars.usingadvsetup = false;
g_Vars.unk0004a0 = 1;
g_Vars.mpquickteamnumsims = 1;
g_Vars.mpsimdifficulty = BOTDIFF_NORMAL;