Rename heaps of title related symbols and discover AI commands for changing the title mode

This commit is contained in:
Ryan Dwyer
2020-05-30 21:21:43 +10:00
parent a3b178af23
commit d2109cb9eb
19 changed files with 232 additions and 219 deletions
+7 -8
View File
@@ -40,25 +40,24 @@ struct path paths[] = {
};
/**
* Some kind of camera movement test? When you press a button it jumps forward
* to the next camera animation rather than ending the cutscene.
* This function is an old and unused method of programming the title screen.
*/
u8 func0c00_017c[] = {
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_music_track(MUSIC_G5_INTRO)
camera_movement(0x045d)
cmd01c8(2)
title_init_mode(TITLEAIMODE_RARELOGO)
beginloop(0x12)
cmd01c9(/*goto*/ 0x59)
try_exit_title(/*goto*/ 0x59)
endloop(0x12)
label(0x59)
cmd01c8(3)
title_init_mode(TITLEAIMODE_NINTENDOLOGO)
beginloop(0x13)
cmd01c9(/*goto*/ 0x59)
try_exit_title(/*goto*/ 0x59)
endloop(0x13)
label(0x59)
@@ -149,10 +148,10 @@ u8 func0c00_017c[] = {
label(0x59)
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
cmd01c8(5)
title_init_mode(TITLEAIMODE_PDLOGO)
beginloop(0x15)
cmd01c9(/*goto*/ 0x59)
try_exit_title(/*goto*/ 0x59)
endloop(0x15)
label(0x59)
+2 -2
View File
@@ -474,8 +474,8 @@ bool (*g_CommandPointers[])(void) = {
/*0x01c5*/ ai01c5,
/*0x01c6*/ aiSetDodgeRating,
/*0x01c7*/ aiSetUnarmedDodgeRating,
/*0x01c8*/ ai01c8,
/*0x01c9*/ ai01c9,
/*0x01c8*/ aiTitleInitMode,
/*0x01c9*/ aiTryExitTitle,
/*0x01ca*/ aiChrSetCutsceneWeapon,
/*0x01cb*/ aiFadeScreen,
/*0x01cc*/ aiIfFadeComplete,
+5 -5
View File
@@ -10906,11 +10906,11 @@ bool ai01c5(void)
/**
* @cmd 01c8
*/
bool ai01c8(void)
bool aiTitleInitMode(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
g_Vars.aioffset += 3;
func0f01aca8(cmd[2]);
titleInitFromAiCmd(cmd[2]);
return false;
}
@@ -10918,12 +10918,12 @@ bool ai01c8(void)
/**
* @cmd 01c9
*/
bool ai01c9(void)
bool aiTryExitTitle(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
if (func0f01ab94()) {
func0f01abf0();
if (titleIsChangingMode()) {
titleExit();
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
} else {
g_Vars.aioffset = g_Vars.aioffset + 3;
+3 -3
View File
@@ -75,9 +75,9 @@ u32 var800624a8 = 0x00000000;
u32 var800624ac = 0x00000000;
u32 var800624b0 = 0x00000000;
s32 g_TitleMode = -1;
s32 var800624b8 = -1;
u32 var800624bc = 0x00000002;
s32 var800624c0 = -1;
s32 g_TitleNextMode = -1;
u32 g_TitleDelayedTimer = 2;
s32 g_TitleDelayedMode = -1;
s32 g_TitleTimer = 0;
u32 var800624c8 = 0x00000000;
u32 var800624cc = 0x00000000;
+1 -1
View File
@@ -17,7 +17,7 @@
void func0f000090(void)
{
g_TitleMode = -1;
var800624b8 = 0;
g_TitleNextMode = TITLEMODE_LEGAL;
g_TitleTimer = 0;
var800624e4 = -1;
var800624e0 = 0;
+6 -6
View File
@@ -24,13 +24,13 @@ glabel func0f00b480
/* f00b498: ac2024d8 */ sw $zero,%lo(var800624d8)($at)
/* f00b49c: 3c018006 */ lui $at,%hi(var800624dc)
/* f00b4a0: ac2024dc */ sw $zero,%lo(var800624dc)($at)
/* f00b4a4: 3c018006 */ lui $at,%hi(var800624bc)
/* f00b4a4: 3c018006 */ lui $at,%hi(g_TitleDelayedTimer)
/* f00b4a8: 240e0002 */ addiu $t6,$zero,0x2
/* f00b4ac: ac2e24bc */ sw $t6,%lo(var800624bc)($at)
/* f00b4ac: ac2e24bc */ sw $t6,%lo(g_TitleDelayedTimer)($at)
/* f00b4b0: 3c188006 */ lui $t8,%hi(var800624f0)
/* f00b4b4: 8f1824f0 */ lw $t8,%lo(var800624f0)($t8)
/* f00b4b8: 3c018006 */ lui $at,%hi(var800624c0)
/* f00b4bc: ac2224c0 */ sw $v0,%lo(var800624c0)($at)
/* f00b4b8: 3c018006 */ lui $at,%hi(g_TitleDelayedMode)
/* f00b4bc: ac2224c0 */ sw $v0,%lo(g_TitleDelayedMode)($at)
/* f00b4c0: 27bdffe8 */ addiu $sp,$sp,-24
/* f00b4c4: 3c018006 */ lui $at,%hi(var800624f4)
/* f00b4c8: 240f0001 */ addiu $t7,$zero,0x1
@@ -38,8 +38,8 @@ glabel func0f00b480
/* f00b4d0: 13000004 */ beqz $t8,.L0f00b4e4
/* f00b4d4: ac2f24f4 */ sw $t7,%lo(var800624f4)($at)
/* f00b4d8: 24190005 */ addiu $t9,$zero,0x5
/* f00b4dc: 3c018006 */ lui $at,%hi(var800624b8)
/* f00b4e0: ac3924b8 */ sw $t9,%lo(var800624b8)($at)
/* f00b4dc: 3c018006 */ lui $at,%hi(g_TitleNextMode)
/* f00b4e0: ac3924b8 */ sw $t9,%lo(g_TitleNextMode)($at)
.L0f00b4e4:
/* f00b4e4: 3c040004 */ lui $a0,0x4
/* f00b4e8: 34847800 */ ori $a0,$a0,0x7800
+129 -124
View File
@@ -239,7 +239,7 @@ glabel func0f01616c
/* f016400: a0980012 */ sb $t8,0x12($a0)
);
void func0f016404(void)
void titleInitLegal(void)
{
func0f16d3d0();
var800624f4 = 1;
@@ -248,12 +248,12 @@ void func0f016404(void)
var800624ac = 0;
}
void func0f016444(void)
void titleExitLegal(void)
{
// empty
}
void func0f01644c(void)
void titleTickLegal(void)
{
func0000bd30(60);
func0000bd7c(1.33333333f);
@@ -263,25 +263,25 @@ void func0f01644c(void)
g_TitleTimer += g_Vars.lvupdate240_60;
if (g_TitleTimer > 180) {
func0f01a7e4(1);
titleSetNextMode(TITLEMODE_CHECKCONTROLLERS);
}
}
void func0f0164c8(void)
void titleInitCheckControllers(void)
{
g_TitleTimer = 0;
func00009ec4(1);
func00009ec4(true);
}
void func0f0164f0(void)
void titleExitCheckControllers(void)
{
var800624e8 = 0;
func00009ab0();
func0000aab0(2);
func00009ec4(0);
func00009ec4(false);
}
void func0f016524(void)
void titleTickCheckControllers(void)
{
g_TitleTimer++;
func0000be84(100, 10000);
@@ -289,15 +289,15 @@ void func0f016524(void)
if (g_TitleTimer > 6) {
if ((func0001404c() % 2) == 0) {
func0f01a7e4(TITLEMODE_NOCONTROLLER);
titleSetNextMode(TITLEMODE_NOCONTROLLER);
} else {
func0f01a7e4(TITLEMODE_RARELOGO);
titleSetNextMode(TITLEMODE_RARELOGO);
}
}
}
GLOBAL_ASM(
glabel titleRenderMode1
glabel titleRenderCheckControllers
/* f0165ac: 3c028006 */ lui $v0,%hi(g_TitleTimer)
/* f0165b0: 8c4224c4 */ lw $v0,%lo(g_TitleTimer)($v0)
/* f0165b4: 27bdffe8 */ addiu $sp,$sp,-24
@@ -818,7 +818,7 @@ glabel var7f1a83e4
);
GLOBAL_ASM(
glabel func0f016d34
glabel titleInitPdLogo
/* f016d34: 27bdff90 */ addiu $sp,$sp,-112
/* f016d38: 3c018006 */ lui $at,%hi(g_TitleTimer)
/* f016d3c: 3c0f8006 */ lui $t7,%hi(var80062738)
@@ -1028,7 +1028,7 @@ glabel func0f016d34
/* f017068: 27bd0070 */ addiu $sp,$sp,0x70
);
void func0f01706c(void)
void titleExitPdLogo(void)
{
func0f0b30cc(var800624f8);
func0f0b30cc(var800624fc);
@@ -1038,7 +1038,7 @@ void func0f01706c(void)
}
GLOBAL_ASM(
glabel func0f0170bc
glabel titleTickPdLogo
.late_rodata
glabel var7f1a83e8
.word 0x3faaaaab
@@ -1111,7 +1111,7 @@ glabel var7f1a83ec
/* f0171b8: 10000003 */ beqz $zero,.L0f0171c8
/* f0171bc: 00000000 */ sll $zero,$zero,0x0
.L0f0171c0:
/* f0171c0: 0fc069f9 */ jal func0f01a7e4
/* f0171c0: 0fc069f9 */ jal titleSetNextMode
/* f0171c4: 24040005 */ addiu $a0,$zero,0x5
.L0f0171c8:
/* f0171c8: 3c0f8006 */ lui $t7,%hi(var800624a8)
@@ -1123,7 +1123,7 @@ glabel var7f1a83ec
/* f0171e0: 2b01029b */ slti $at,$t8,0x29b
/* f0171e4: 54200004 */ bnezl $at,.L0f0171f8
/* f0171e8: 00002025 */ or $a0,$zero,$zero
/* f0171ec: 0fc069f9 */ jal func0f01a7e4
/* f0171ec: 0fc069f9 */ jal titleSetNextMode
/* f0171f0: 24040005 */ addiu $a0,$zero,0x5
/* f0171f4: 00002025 */ or $a0,$zero,$zero
.L0f0171f8:
@@ -1141,7 +1141,7 @@ glabel var7f1a83ec
/* f017224: 29210225 */ slti $at,$t1,0x225
/* f017228: 50200004 */ beqzl $at,.L0f01723c
/* f01722c: 8fbf0014 */ lw $ra,0x14($sp)
/* f017230: 0fc069f9 */ jal func0f01a7e4
/* f017230: 0fc069f9 */ jal titleSetNextMode
/* f017234: 24040002 */ addiu $a0,$zero,0x2
.L0f017238:
/* f017238: 8fbf0014 */ lw $ra,0x14($sp)
@@ -3076,7 +3076,7 @@ glabel var7f1a8468
/* f018dac: 00000000 */ sll $zero,$zero,0x0
);
void func0f018db0(void)
void titleInitRarePresents(void)
{
g_TitleTimer = 0;
func00014810(0);
@@ -3084,7 +3084,7 @@ void func0f018db0(void)
}
GLOBAL_ASM(
glabel func0f018ddc
glabel titleExitRarePresents
/* f018ddc: 3c048006 */ lui $a0,%hi(var80062864)
/* f018de0: 8c842864 */ lw $a0,%lo(var80062864)($a0)
/* f018de4: 27bdffe8 */ addiu $sp,$sp,-24
@@ -3105,7 +3105,7 @@ glabel func0f018ddc
);
GLOBAL_ASM(
glabel func0f018e1c
glabel titleTickRarePresents
.late_rodata
glabel var7f1a846c
.word 0x3faaaaab
@@ -3138,7 +3138,7 @@ glabel var7f1a8470
/* f018e78: 2b01012d */ slti $at,$t8,0x12d
/* f018e7c: 14200005 */ bnez $at,.L0f018e94
/* f018e80: ac580000 */ sw $t8,0x0($v0)
/* f018e84: 0fc069f9 */ jal func0f01a7e4
/* f018e84: 0fc069f9 */ jal titleSetNextMode
/* f018e88: 24040002 */ addiu $a0,$zero,0x2
/* f018e8c: 10000008 */ beqz $zero,.L0f018eb0
/* f018e90: 8fbf0014 */ lw $ra,0x14($sp)
@@ -3147,7 +3147,7 @@ glabel var7f1a8470
/* f018e98: 3405ffff */ dli $a1,0xffff
/* f018e9c: 50400004 */ beqzl $v0,.L0f018eb0
/* f018ea0: 8fbf0014 */ lw $ra,0x14($sp)
/* f018ea4: 0fc069f9 */ jal func0f01a7e4
/* f018ea4: 0fc069f9 */ jal titleSetNextMode
/* f018ea8: 24040005 */ addiu $a0,$zero,0x5
/* f018eac: 8fbf0014 */ lw $ra,0x14($sp)
.L0f018eb0:
@@ -3519,7 +3519,7 @@ glabel titleRenderRarePresents
);
GLOBAL_ASM(
glabel func0f0193fc
glabel titleInitNintendoLogo
/* f0193fc: 3c0e8006 */ lui $t6,%hi(var800624a8)
/* f019400: 8dce24a8 */ lw $t6,%lo(var800624a8)($t6)
/* f019404: 27bdffd8 */ addiu $sp,$sp,-40
@@ -3581,14 +3581,14 @@ glabel func0f0193fc
/* f0194dc: 00000000 */ sll $zero,$zero,0x0
);
void func0f0194e0(void)
void titleExitNintendoLogo(void)
{
func0f0b30cc(var800624f8);
func00014810(1);
}
GLOBAL_ASM(
glabel func0f01950c
glabel titleTickNintendoLogo
.late_rodata
glabel var7f1a8474
.word 0x3faaaaab
@@ -3640,7 +3640,7 @@ glabel var7f1a8478
/* f0195b0: 14490009 */ bne $v0,$t1,.L0f0195d8
/* f0195b4: 3c0a8006 */ lui $t2,%hi(var800624a8)
/* f0195b8: ac2224a8 */ sw $v0,%lo(var800624a8)($at)
/* f0195bc: 0fc069f9 */ jal func0f01a7e4
/* f0195bc: 0fc069f9 */ jal titleSetNextMode
/* f0195c0: 24040002 */ addiu $a0,$zero,0x2
/* f0195c4: 3c038006 */ lui $v1,%hi(g_TitleTimer)
/* f0195c8: 3c068006 */ lui $a2,%hi(var800624ac)
@@ -3668,7 +3668,7 @@ glabel var7f1a8478
/* f019614: 14200006 */ bnez $at,.L0f019630
/* f019618: 3c018006 */ lui $at,%hi(var800624a8)
/* f01961c: ac2224a8 */ sw $v0,%lo(var800624a8)($at)
/* f019620: 0fc069f9 */ jal func0f01a7e4
/* f019620: 0fc069f9 */ jal titleSetNextMode
/* f019624: acc00000 */ sw $zero,0x0($a2)
/* f019628: 3c038006 */ lui $v1,%hi(g_TitleTimer)
/* f01962c: 246324c4 */ addiu $v1,$v1,%lo(g_TitleTimer)
@@ -3678,7 +3678,7 @@ glabel var7f1a8478
/* f019634: 29c100f1 */ slti $at,$t6,0xf1
/* f019638: 54200004 */ bnezl $at,.L0f01964c
/* f01963c: 8fbf0014 */ lw $ra,0x14($sp)
/* f019640: 0fc069f9 */ jal func0f01a7e4
/* f019640: 0fc069f9 */ jal titleSetNextMode
/* f019644: 24040002 */ addiu $a0,$zero,0x2
/* f019648: 8fbf0014 */ lw $ra,0x14($sp)
.L0f01964c:
@@ -3988,7 +3988,7 @@ glabel var7f1a84a0
);
GLOBAL_ASM(
glabel func0f019a80
glabel titleInitRareLogo
/* f019a80: 27bdffd8 */ addiu $sp,$sp,-40
/* f019a84: 240efffd */ addiu $t6,$zero,-3
/* f019a88: 3c018006 */ lui $at,%hi(g_TitleTimer)
@@ -4053,14 +4053,14 @@ glabel func0f019a80
/* f019b70: 00000000 */ sll $zero,$zero,0x0
);
void func0f019b74(void)
void titleExitRareLogo(void)
{
func0f0b30cc(var800624f8);
func00014810(1);
}
GLOBAL_ASM(
glabel func0f019ba0
glabel titleTickRareLogo
.late_rodata
glabel var7f1a84a4
.word 0x3faaaaab
@@ -4119,7 +4119,7 @@ glabel var7f1a84a8
/* f019c5c: 248424a8 */ addiu $a0,$a0,%lo(var800624a8)
/* f019c60: 3c018006 */ lui $at,%hi(var800624a8)
/* f019c64: ac2324a8 */ sw $v1,%lo(var800624a8)($at)
/* f019c68: 0fc069f9 */ jal func0f01a7e4
/* f019c68: 0fc069f9 */ jal titleSetNextMode
/* f019c6c: 24040002 */ addiu $a0,$zero,0x2
/* f019c70: 3c088006 */ lui $t0,%hi(g_TitleTimer)
/* f019c74: 10000010 */ beqz $zero,.L0f019cb8
@@ -4159,7 +4159,7 @@ glabel var7f1a84a8
/* f019cec: 54200004 */ bnezl $at,.L0f019d00
/* f019cf0: 8fbf0014 */ lw $ra,0x14($sp)
.L0f019cf4:
/* f019cf4: 0fc069f9 */ jal func0f01a7e4
/* f019cf4: 0fc069f9 */ jal titleSetNextMode
/* f019cf8: 24040003 */ addiu $a0,$zero,0x3
.L0f019cfc:
/* f019cfc: 8fbf0014 */ lw $ra,0x14($sp)
@@ -4645,7 +4645,7 @@ glabel func0f01a360
);
GLOBAL_ASM(
glabel func0f01a3b8
glabel titleInitModeSkip
.late_rodata
glabel var7f1a84c0
.word 0x3fba2e8c
@@ -4709,17 +4709,17 @@ glabel var7f1a84c0
/* f01a490: 00000000 */ sll $zero,$zero,0x0
);
void func0f01a494(void)
void titleInitNoController(void)
{
g_TitleTimer = 0;
}
void func0f01a4a0(void)
void titleExitNoController(void)
{
// empty
}
void func0f01a4a8(void)
void titleTickNoController(void)
{
func0000bd30(60);
func0000bd7c(1.33333333f);
@@ -4920,10 +4920,10 @@ glabel titleRenderNoController
/* f01a7e0: 00000000 */ sll $zero,$zero,0x0
);
void func0f01a7e4(s32 arg0)
void titleSetNextMode(s32 mode)
{
if (var800624c0 != arg0) {
var800624b8 = arg0;
if (g_TitleDelayedMode != mode) {
g_TitleNextMode = mode;
}
}
@@ -4932,7 +4932,7 @@ s32 titleGetMode(void)
return g_TitleMode;
}
void func0f01a810(void)
void titleTick(void)
{
func0000bd7c(576.0f / var800624a0);
func0000bbe4(576, var800624a0);
@@ -4942,191 +4942,196 @@ void func0f01a810(void)
currentPlayerSetViewPosition(0, 0);
func0000bca8(0, 0);
if (var800624b8 >= 0) {
var800624bc = 3;
var800624c0 = var800624b8;
// If there's a new mode to transition to, schedule it to apply in 3 ticks
// time and call the exit function for the current mode.
if (g_TitleNextMode >= 0) {
g_TitleDelayedTimer = 3;
g_TitleDelayedMode = g_TitleNextMode;
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
func0f016444();
titleExitLegal();
break;
case TITLEMODE_1:
func0f0164f0();
case TITLEMODE_CHECKCONTROLLERS:
titleExitCheckControllers();
break;
case TITLEMODE_PDLOGO:
func0f01706c();
titleExitPdLogo();
break;
case TITLEMODE_NINTENDOLOGO:
func0f0194e0();
titleExitNintendoLogo();
break;
case TITLEMODE_RARELOGO:
func0f019b74();
titleExitRareLogo();
break;
case TITLEMODE_NOCONTROLLER:
func0f01a4a0();
titleExitNoController();
break;
}
if (g_TitleMode != 1) {
func00009ec4(1);
if (g_TitleMode != TITLEMODE_CHECKCONTROLLERS) {
func00009ec4(true);
}
var800624b8 = -1;
g_TitleNextMode = -1;
}
if (var800624bc != 0) {
var800624bc--;
// If there's a new mode scheduled, tick the timer down
if (g_TitleDelayedTimer != 0) {
g_TitleDelayedTimer--;
if (g_TitleMode == -1) {
var800624bc = 0;
g_TitleDelayedTimer = 0;
}
if (var800624bc == 0 && var800624c0 != -1) {
var800624b8 = var800624c0;
var800624c0 = -1;
if (g_TitleDelayedTimer == 0 && g_TitleDelayedMode != -1) {
g_TitleNextMode = g_TitleDelayedMode;
g_TitleDelayedMode = -1;
}
}
if (var800624b8 >= 0) {
g_TitleMode = var800624b8;
var800624b8 = -1;
// Apply new mode
if (g_TitleNextMode >= 0) {
g_TitleMode = g_TitleNextMode;
g_TitleNextMode = -1;
var800624ac = 0;
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
func0f016404();
titleInitLegal();
break;
case TITLEMODE_1:
func0f0164c8();
case TITLEMODE_CHECKCONTROLLERS:
titleInitCheckControllers();
break;
case TITLEMODE_PDLOGO:
func0f016d34();
titleInitPdLogo();
break;
case TITLEMODE_NINTENDOLOGO:
func0f0193fc();
titleInitNintendoLogo();
break;
case TITLEMODE_RARELOGO:
func0f019a80();
titleInitRareLogo();
break;
case TITLEMODE_5:
func0f01a3b8();
case TITLEMODE_SKIP:
titleInitModeSkip();
break;
case TITLEMODE_NOCONTROLLER:
func0f01a494();
titleInitNoController();
break;
}
if (g_TitleMode != TITLEMODE_1 && g_TitleMode != TITLEMODE_5) {
func00009ec4(0);
if (g_TitleMode != TITLEMODE_CHECKCONTROLLERS && g_TitleMode != TITLEMODE_SKIP) {
func00009ec4(false);
}
}
// Run the current mode's tick function
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
func0f01644c();
titleTickLegal();
break;
case TITLEMODE_1:
func0f016524();
case TITLEMODE_CHECKCONTROLLERS:
titleTickCheckControllers();
break;
case TITLEMODE_PDLOGO:
func0f0170bc();
titleTickPdLogo();
break;
case TITLEMODE_NINTENDOLOGO:
func0f01950c();
titleTickNintendoLogo();
break;
case TITLEMODE_RARELOGO:
func0f019ba0();
titleTickRareLogo();
break;
case TITLEMODE_NOCONTROLLER:
func0f01a4a8();
titleTickNoController();
break;
case TITLEMODE_5:
case TITLEMODE_SKIP:
func0000bd20(0);
func0f01a7e4(4);
titleSetNextMode(TITLEMODE_RARELOGO);
break;
}
}
bool func0f01ab94(void)
bool titleIsChangingMode(void)
{
return var800624b8 >= 0;
return g_TitleNextMode >= 0;
}
bool func0f01aba8(void)
bool titleIsKeepingMode(void)
{
if (var800624b8 >= 0) {
if (g_TitleNextMode >= 0) {
return false;
}
if (g_TitleMode == -1 || g_TitleMode == TITLEMODE_5) {
if (g_TitleMode == -1 || g_TitleMode == TITLEMODE_SKIP) {
return false;
}
return true;
}
void func0f01abf0(void)
void titleExit(void)
{
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
func0f016444();
titleExitLegal();
break;
case TITLEMODE_1:
func0f0164f0();
case TITLEMODE_CHECKCONTROLLERS:
titleExitCheckControllers();
break;
case TITLEMODE_PDLOGO:
func0f01706c();
titleExitPdLogo();
break;
case TITLEMODE_NINTENDOLOGO:
func0f0194e0();
titleExitNintendoLogo();
break;
case TITLEMODE_RARELOGO:
func0f019b74();
titleExitRareLogo();
break;
case TITLEMODE_NOCONTROLLER:
func0f01a4a0();
titleExitNoController();
break;
case TITLEMODE_RAREPRESENTS1:
case TITLEMODE_RAREPRESENTS2:
func0f018ddc();
titleExitRarePresents();
break;
}
var800624b8 = -1;
g_TitleNextMode = -1;
g_TitleMode = -1;
}
void func0f01aca8(u32 value)
void titleInitFromAiCmd(u32 value)
{
switch (value) {
case 1:
case TITLEAIMODE_RAREPRESENTS1:
g_TitleMode = TITLEMODE_RAREPRESENTS1;
func0f018db0();
titleInitRarePresents();
break;
case 2:
case TITLEAIMODE_RARELOGO:
g_TitleMode = TITLEMODE_RARELOGO;
func0f019a80();
titleInitRareLogo();
break;
case 4:
case TITLEAIMODE_RAREPRESENTS2:
g_TitleMode = TITLEMODE_RAREPRESENTS2;
func0f018db0();
titleInitRarePresents();
break;
case 3:
case TITLEAIMODE_NINTENDOLOGO:
g_TitleMode = TITLEMODE_NINTENDOLOGO;
func0f0193fc();
titleInitNintendoLogo();
break;
case 5:
case TITLEAIMODE_PDLOGO:
g_TitleMode = TITLEMODE_PDLOGO;
func0f016d34();
titleInitPdLogo();
break;
}
var800624b8 = -1;
g_TitleNextMode = -1;
}
bool func0f01ad5c(void)
{
if (!func0f01aba8()) {
if (!titleIsKeepingMode()) {
return false;
}
@@ -5154,29 +5159,29 @@ void func0f01adb8(void)
void func0f01ae30(void)
{
if (func0f01aba8()) {
if (titleIsKeepingMode()) {
func00014810(0);
if (var800624bc == 0) {
if (g_TitleDelayedTimer == 0) {
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
func0f01644c();
titleTickLegal();
break;
case TITLEMODE_1:
func0f016524();
case TITLEMODE_CHECKCONTROLLERS:
titleTickCheckControllers();
break;
case TITLEMODE_PDLOGO:
func0f0170bc();
titleTickPdLogo();
break;
case TITLEMODE_NINTENDOLOGO:
func0f01950c();
titleTickNintendoLogo();
break;
case TITLEMODE_RAREPRESENTS1:
case TITLEMODE_RAREPRESENTS2:
func0f018e1c();
titleTickRarePresents();
break;
case TITLEMODE_RARELOGO:
func0f019ba0();
titleTickRareLogo();
break;
}
}
@@ -5185,13 +5190,13 @@ void func0f01ae30(void)
Gfx *titleRender(Gfx *gdl)
{
if (var800624bc == 0) {
if (g_TitleDelayedTimer == 0) {
switch (g_TitleMode) {
case TITLEMODE_LEGAL:
gdl = titleRenderLegal(gdl);
break;
case TITLEMODE_1:
gdl = titleRenderMode1(gdl);
case TITLEMODE_CHECKCONTROLLERS:
gdl = titleRenderCheckControllers(gdl);
break;
case TITLEMODE_PDLOGO:
gdl = titleRenderPdLogo(gdl);
+4 -4
View File
@@ -1164,7 +1164,7 @@ glabel var7f1a863c
/* f01cdc4: 0004ce42 */ srl $t9,$a0,0x19
/* f01cdc8: 0fc5b36a */ jal setDifficulty
/* f01cdcc: 03202025 */ or $a0,$t9,$zero
/* f01cdd0: 0fc069f9 */ jal func0f01a7e4
/* f01cdd0: 0fc069f9 */ jal titleSetNextMode
/* f01cdd4: 24040005 */ addiu $a0,$zero,0x5
/* f01cdd8: 0c003a57 */ jal func0000e95c
/* f01cddc: 92440001 */ lbu $a0,0x1($s2)
@@ -1532,7 +1532,7 @@ glabel var7f1a863c
/* f01d2f8: 24040026 */ addiu $a0,$zero,0x26
/* f01d2fc: 0fc068d5 */ jal setNumPlayers
/* f01d300: 02c02025 */ or $a0,$s6,$zero
/* f01d304: 0fc069f9 */ jal func0f01a7e4
/* f01d304: 0fc069f9 */ jal titleSetNextMode
/* f01d308: 24040005 */ addiu $a0,$zero,0x5
/* f01d30c: 0c003a57 */ jal func0000e95c
/* f01d310: 24040026 */ addiu $a0,$zero,0x26
@@ -1543,7 +1543,7 @@ glabel var7f1a863c
/* f01d320: 2404005d */ addiu $a0,$zero,0x5d
/* f01d324: 0fc068d5 */ jal setNumPlayers
/* f01d328: 02c02025 */ or $a0,$s6,$zero
/* f01d32c: 0fc069f9 */ jal func0f01a7e4
/* f01d32c: 0fc069f9 */ jal titleSetNextMode
/* f01d330: 24040005 */ addiu $a0,$zero,0x5
/* f01d334: 0c003a57 */ jal func0000e95c
/* f01d338: 2404005d */ addiu $a0,$zero,0x5d
@@ -1562,7 +1562,7 @@ glabel var7f1a863c
/* f01d368: 24040026 */ addiu $a0,$zero,0x26
/* f01d36c: 0fc068d5 */ jal setNumPlayers
/* f01d370: 02c02025 */ or $a0,$s6,$zero
/* f01d374: 0fc069f9 */ jal func0f01a7e4
/* f01d374: 0fc069f9 */ jal titleSetNextMode
/* f01d378: 24040005 */ addiu $a0,$zero,0x5
/* f01d37c: 0c003a57 */ jal func0000e95c
/* f01d380: 24040026 */ addiu $a0,$zero,0x26
+2 -2
View File
@@ -757,7 +757,7 @@ glabel menuhandlerAcceptMission
/* f103514: 00046642 */ srl $t4,$a0,0x19
/* f103518: 0fc5b36a */ jal setDifficulty
/* f10351c: 01802025 */ or $a0,$t4,$zero
/* f103520: 0fc069f9 */ jal func0f01a7e4
/* f103520: 0fc069f9 */ jal titleSetNextMode
/* f103524: 24040005 */ addiu $a0,$zero,0x5
/* f103528: 3c04800a */ lui $a0,%hi(g_MissionConfig+0x1)
/* f10352c: 0c003a57 */ jal func0000e95c
@@ -818,7 +818,7 @@ glabel menuhandlerAcceptMission
// }
//
// setDifficulty(g_MissionConfig.difficulty);
// func0f01a7e4(5);
// titleSetNextMode(TITLEMODE_SKIP);
// func0000e95c(g_MissionConfig.stagenum);
// func00009ec4(1);
// }
+2 -2
View File
@@ -677,7 +677,7 @@ glabel func0f10d910
/* f10db34: 0004c642 */ srl $t8,$a0,0x19
/* f10db38: 0fc5b36a */ jal setDifficulty
/* f10db3c: 03002025 */ or $a0,$t8,$zero
/* f10db40: 0fc069f9 */ jal func0f01a7e4
/* f10db40: 0fc069f9 */ jal titleSetNextMode
/* f10db44: 24040005 */ addiu $a0,$zero,0x5
/* f10db48: 3c04800a */ lui $a0,%hi(g_MissionConfig+0x1)
/* f10db4c: 0c003a57 */ jal func0000e95c
@@ -699,7 +699,7 @@ glabel func0f10d910
/* f10db88: 00044642 */ srl $t0,$a0,0x19
/* f10db8c: 0fc5b36a */ jal setDifficulty
/* f10db90: 01002025 */ or $a0,$t0,$zero
/* f10db94: 0fc069f9 */ jal func0f01a7e4
/* f10db94: 0fc069f9 */ jal titleSetNextMode
/* f10db98: 24040005 */ addiu $a0,$zero,0x5
/* f10db9c: 3c04800a */ lui $a0,%hi(g_MissionConfig+0x1)
/* f10dba0: 0c003a57 */ jal func0000e95c
+6 -6
View File
@@ -1579,7 +1579,7 @@ glabel var7f1b7868
/* f1693d0: 2401004e */ addiu $at,$zero,0x4e
/* f1693d4: 54410060 */ bnel $v0,$at,.L0f169558
/* f1693d8: 8e6204b4 */ lw $v0,0x4b4($s3)
/* f1693dc: 0fc06aea */ jal func0f01aba8
/* f1693dc: 0fc06aea */ jal titleIsKeepingMode
/* f1693e0: 00000000 */ sll $zero,$zero,0x0
/* f1693e4: 1040005b */ beqz $v0,.L0f169554
.L0f1693e8:
@@ -3486,7 +3486,7 @@ glabel var7f1b7868
/* f16af9c: a20a0003 */ sb $t2,0x3($s0)
/* f16afa0: 0fc068d5 */ jal setNumPlayers
/* f16afa4: a26f04d2 */ sb $t7,0x4d2($s3)
/* f16afa8: 0fc069f9 */ jal func0f01a7e4
/* f16afa8: 0fc069f9 */ jal titleSetNextMode
/* f16afac: 24040005 */ addiu $a0,$zero,0x5
/* f16afb0: 920e0000 */ lbu $t6,0x0($s0)
/* f16afb4: 00002025 */ or $a0,$zero,$zero
@@ -4844,7 +4844,7 @@ glabel func0f16b96c
/* f16c1d4: 2401005a */ addiu $at,$zero,0x5a
/* f16c1d8: 51810006 */ beql $t4,$at,.L0f16c1f4
/* f16c1dc: ae000000 */ sw $zero,0x0($s0)
/* f16c1e0: 0fc069f9 */ jal func0f01a7e4
/* f16c1e0: 0fc069f9 */ jal titleSetNextMode
/* f16c1e4: 24040005 */ addiu $a0,$zero,0x5
/* f16c1e8: 0c003a57 */ jal func0000e95c
/* f16c1ec: 2404005a */ addiu $a0,$zero,0x5a
@@ -5323,7 +5323,7 @@ glabel func0f16b96c
.L0f16c8a4:
/* f16c8a4: 5441000a */ bnel $v0,$at,.L0f16c8d0
/* f16c8a8: 2401005b */ addiu $at,$zero,0x5b
/* f16c8ac: 0fc06a04 */ jal func0f01a810
/* f16c8ac: 0fc06a04 */ jal titleTick
/* f16c8b0: 00000000 */ sll $zero,$zero,0x0
/* f16c8b4: 0fc07618 */ jal func0f01d860
/* f16c8b8: 00000000 */ sll $zero,$zero,0x0
@@ -5648,7 +5648,7 @@ glabel func0f16b96c
// || func00014eb8(3) > 10
// || func00014eb8(3) < -10) && var800624a4) {
// if (g_Vars.stagenum != STAGE_TITLE) {
// func0f01a7e4(5);
// titleSetNextMode(TITLEMODE_SKIP);
// func0000e95c(STAGE_TITLE);
// }
//
@@ -5777,7 +5777,7 @@ glabel func0f16b96c
// }
//
// if (g_Vars.stagenum == STAGE_TITLE) {
// func0f01a810();
// titleTick();
// func0f01d860();
// func00011d84();
// } else if (g_Vars.stagenum == STAGE_BOOTPAKMENU) {
+1 -1
View File
@@ -138,7 +138,7 @@ glabel func0f187864
/* f187914: 8fa40024 */ lw $a0,0x24($sp)
/* f187918: 0fc068d5 */ jal setNumPlayers
/* f18791c: 02002025 */ or $a0,$s0,$zero
/* f187920: 0fc069f9 */ jal func0f01a7e4
/* f187920: 0fc069f9 */ jal titleSetNextMode
/* f187924: 24040005 */ addiu $a0,$zero,0x5
/* f187928: 8fbf001c */ lw $ra,0x1c($sp)
/* f18792c: 240b0001 */ addiu $t3,$zero,0x1
+13 -10
View File
@@ -3818,18 +3818,21 @@
mkshort(0x01c7), \
value,
// Only used in test levels. Value can be 0-4.
// Looks up the index in a pointer array and calls the function at the pointer.
// If passed a value > 4, sets 800624b8 to -1.
// Related to cmd01c9
#define cmd01c8(value) \
/**
* Sets the title mode (legal, Rare logo, etc). This is an unused feature - it
* appears that at one point the title screen could be controlled via AI
* commands.
*
* Expects a TITLEAIMODE constant.
*/
#define title_init_mode(mode) \
mkshort(0x01c8), \
value,
mode,
// Test levels only. Checks if value at 800624b8 is >= 0.
// If so, runs some function and goes to label.
// Related to cmd01c8.
#define cmd01c9(label) \
/**
* Exits the title screen. This is an unused feature.
*/
#define try_exit_title(label) \
mkshort(0x01c9), \
label,
+15 -9
View File
@@ -2610,15 +2610,21 @@
#define TILEFLAG_0020 0x0020
#define TILEFLAG_0200 0x0200
#define TITLEMODE_LEGAL 0
#define TITLEMODE_1 1
#define TITLEMODE_PDLOGO 2
#define TITLEMODE_NINTENDOLOGO 3
#define TITLEMODE_RARELOGO 4
#define TITLEMODE_5 5
#define TITLEMODE_NOCONTROLLER 6
#define TITLEMODE_RAREPRESENTS1 7
#define TITLEMODE_RAREPRESENTS2 8
#define TITLEMODE_LEGAL 0
#define TITLEMODE_CHECKCONTROLLERS 1
#define TITLEMODE_PDLOGO 2
#define TITLEMODE_NINTENDOLOGO 3
#define TITLEMODE_RARELOGO 4
#define TITLEMODE_SKIP 5
#define TITLEMODE_NOCONTROLLER 6
#define TITLEMODE_RAREPRESENTS1 7
#define TITLEMODE_RAREPRESENTS2 8
#define TITLEAIMODE_RAREPRESENTS1 1
#define TITLEAIMODE_RARELOGO 2
#define TITLEAIMODE_NINTENDOLOGO 3
#define TITLEAIMODE_RAREPRESENTS2 4
#define TITLEAIMODE_PDLOGO 5
#define VISIONMODE_NORMAL 0
#define VISIONMODE_XRAY 1
+2 -2
View File
@@ -419,8 +419,8 @@
/*0x01c5*/ bool ai01c5(void);
/*0x01c6*/ bool aiSetDodgeRating(void);
/*0x01c7*/ bool aiSetUnarmedDodgeRating(void);
/*0x01c8*/ bool ai01c8(void);
/*0x01c9*/ bool ai01c9(void);
/*0x01c8*/ bool aiTitleInitMode(void);
/*0x01c9*/ bool aiTryExitTitle(void);
/*0x01ca*/ bool aiChrSetCutsceneWeapon(void);
/*0x01cb*/ bool aiFadeScreen(void);
/*0x01cc*/ bool aiIfFadeComplete(void);
+3 -3
View File
@@ -22,9 +22,9 @@ extern u32 var800624a8;
extern u32 var800624ac;
extern u32 var800624b0;
extern s32 g_TitleMode;
extern s32 var800624b8;
extern u32 var800624bc;
extern s32 var800624c0;
extern s32 g_TitleNextMode;
extern u32 g_TitleDelayedTimer;
extern s32 g_TitleDelayedMode;
extern s32 g_TitleTimer;
extern u32 var800624e0;
extern s32 var800624e4;
+29 -29
View File
@@ -5,50 +5,50 @@
char *mpPlayerGetWeaponOfChoiceName(u32 playernum, u32 slot);
u32 func0f01616c(void);
void func0f016404(void);
void func0f01644c(void);
void func0f0164c8(void);
void func0f0164f0(void);
void func0f016524(void);
Gfx *titleRenderMode1(Gfx *gdl);
void titleInitLegal(void);
void titleTickLegal(void);
void titleInitCheckControllers(void);
void titleExitCheckControllers(void);
void titleTickCheckControllers(void);
Gfx *titleRenderCheckControllers(Gfx *gdl);
Gfx *titleRenderLegal(Gfx *gdl);
void func0f016d34(void);
void func0f01706c(void);
void func0f0170bc(void);
void titleInitPdLogo(void);
void titleExitPdLogo(void);
void titleTickPdLogo(void);
u32 func0f017248(void);
u32 func0f017980(void);
Gfx *titleRenderPdLogo(Gfx *gdl);
void func0f018db0(void);
void func0f018ddc(void);
void func0f018e1c(void);
void titleInitRarePresents(void);
void titleExitRarePresents(void);
void titleTickRarePresents(void);
u32 func0f018ebc(void);
Gfx *titleRenderRarePresents(Gfx *gdl);
void func0f0193fc(void);
void func0f0194e0(void);
void func0f01950c(void);
void titleInitNintendoLogo(void);
void titleExitNintendoLogo(void);
void titleTickNintendoLogo(void);
Gfx *titleRenderNintendoLogo(Gfx *gdl);
void func0f019a80(void);
void func0f019b74(void);
void func0f019ba0(void);
void titleInitRareLogo(void);
void titleExitRareLogo(void);
void titleTickRareLogo(void);
u32 func0f019d0c(void);
Gfx *titleRenderRareLogo(Gfx *gdl);
u32 func0f01a3b8(void);
void func0f01a494(void);
void func0f01a4a8(void);
void titleInitModeSkip(void);
void titleInitNoController(void);
void titleTickNoController(void);
Gfx *titleRenderNoController(Gfx *gdl);
void func0f01a7e4(s32 arg0);
void func0f01a810(void);
bool func0f01ab94(void);
bool func0f01aba8(void);
void func0f01abf0(void);
void func0f01aca8(u32 arg0);
void titleSetNextMode(s32 mode);
void titleTick(void);
bool titleIsChangingMode(void);
bool titleIsKeepingMode(void);
void titleExit(void);
void titleInitFromAiCmd(u32 arg0);
bool func0f01ad5c(void);
void func0f01adb8(void);
void func0f01ae30(void);
Gfx *titleRender(Gfx *gdl);
void func0f016444(void);
void titleExitLegal(void);
s32 getNumPlayers(void);
void setNumPlayers(s32 numplayers);
void func0f01a4a0(void);
void titleExitNoController(void);
#endif
+1 -1
View File
@@ -16,7 +16,7 @@ u32 func00009ab0(void);
u32 func00009b50(void);
u32 func00009bf8(void);
u32 func00009c3c(void);
void func00009ec4(s32 arg0);
void func00009ec4(bool arg0);
u32 func00009ed4(void);
u32 func0000a044(void);
u32 func0000aa50(void);
+1 -1
View File
@@ -1272,7 +1272,7 @@ glabel func0000e324
/* e4e8: 2401004e */ addiu $at,$zero,0x4e
/* e4ec: 55c10006 */ bnel $t6,$at,.L0000e508
/* e4f0: 8e300284 */ lw $s0,0x284($s1)
/* e4f4: 0fc06aea */ jal func0f01aba8
/* e4f4: 0fc06aea */ jal titleIsKeepingMode
/* e4f8: 00000000 */ sll $zero,$zero,0x0
/* e4fc: 1440000b */ bnez $v0,.L0000e52c
/* e500: 00000000 */ sll $zero,$zero,0x0