Attempt to decompile menuhandlerSaveLocation

This commit is contained in:
Ryan Dwyer
2020-01-04 18:02:04 +10:00
parent 3986b30e99
commit f2f82e9006
6 changed files with 234 additions and 27 deletions
+34 -12
View File
@@ -1304,10 +1304,10 @@ glabel func0f108d8c
/* f108e04: 0fc45a18 */ jal func0f116860
/* f108e08: 03002025 */ or $a0,$t8,$zero
.L0f108e0c:
/* f108e0c: 3c028007 */ lui $v0,%hi(var80075bc0)
/* f108e0c: 3c028007 */ lui $v0,%hi(g_SaveLocations)
/* f108e10: 3c058007 */ lui $a1,%hi(var80075bd0)
/* f108e14: 24a55bd0 */ addiu $a1,$a1,%lo(var80075bd0)
/* f108e18: 24425bc0 */ addiu $v0,$v0,%lo(var80075bc0)
/* f108e18: 24425bc0 */ addiu $v0,$v0,%lo(g_SaveLocations)
/* f108e1c: 24040001 */ addiu $a0,$zero,0x1
/* f108e20: 8c430000 */ lw $v1,0x0($v0)
.L0f108e24:
@@ -2475,8 +2475,8 @@ glabel func0f109ec4
/* f109eec: 000f7900 */ sll $t7,$t7,0x4
/* f109ef0: 01f81821 */ addu $v1,$t7,$t8
/* f109ef4: 90790e3f */ lbu $t9,0xe3f($v1)
/* f109ef8: 3c088007 */ lui $t0,%hi(var80075bc0)
/* f109efc: 25085bc0 */ addiu $t0,$t0,%lo(var80075bc0)
/* f109ef8: 3c088007 */ lui $t0,%hi(g_SaveLocations)
/* f109efc: 25085bc0 */ addiu $t0,$t0,%lo(g_SaveLocations)
/* f109f00: 00194880 */ sll $t1,$t9,0x2
/* f109f04: 01095021 */ addu $t2,$t0,$t1
/* f109f08: 8d4b0000 */ lw $t3,0x0($t2)
@@ -2511,8 +2511,8 @@ glabel func0f109ec4
/* f109f78: 000e7100 */ sll $t6,$t6,0x4
/* f109f7c: 01cf1821 */ addu $v1,$t6,$t7
/* f109f80: 90620e3e */ lbu $v0,0xe3e($v1)
/* f109f84: 3c088007 */ lui $t0,%hi(var80075bc0)
/* f109f88: 25085bc0 */ addiu $t0,$t0,%lo(var80075bc0)
/* f109f84: 3c088007 */ lui $t0,%hi(g_SaveLocations)
/* f109f88: 25085bc0 */ addiu $t0,$t0,%lo(g_SaveLocations)
/* f109f8c: 14400005 */ bnez $v0,.L0f109fa4
/* f109f90: 24010005 */ addiu $at,$zero,0x5
/* f109f94: 0fc42655 */ jal func0f109954
@@ -2839,6 +2839,28 @@ glabel menuhandlerSaveLocation
/* f10a450: 00000000 */ sll $zero,$zero,0x0
);
// Mismatch because the game's code calculates g_MenuStack by loading a lower
// number into %hi then compensating with a larger number in %lo.
//s32 menuhandlerSaveLocation(u32 operation, struct menu_item *item, s32 *value)
//{
// if (g_SaveLocations[g_MenuStack[g_MpPlayerNum].unk947] == NULL) {
// return 0;
// }
//
// if (operation == MENUOP_CHECKDISABLED) {
// if (g_SaveLocations[g_MenuStack[g_MpPlayerNum].unk947]->unk2d2[item->param] < 1) {
// return true;
// }
// }
//
// if (operation == MENUOP_SET) {
// g_MenuStack[g_MpPlayerNum].unk95a = item->param;
// func0f109ec4();
// }
//
// return 0;
//}
s32 menuhandlerPakCancelSave(u32 operation, struct menu_item *item, s32 *value)
{
if (operation == MENUOP_SET) {
@@ -3257,8 +3279,8 @@ glabel func0f10aad8
/* f10aae4: afb00034 */ sw $s0,0x34($sp)
/* f10aae8: afa40088 */ sw $a0,0x88($sp)
/* f10aaec: 90ae0001 */ lbu $t6,0x1($a1)
/* f10aaf0: 3c088007 */ lui $t0,%hi(var80075bc0)
/* f10aaf4: 25085bc0 */ addiu $t0,$t0,%lo(var80075bc0)
/* f10aaf0: 3c088007 */ lui $t0,%hi(g_SaveLocations)
/* f10aaf4: 25085bc0 */ addiu $t0,$t0,%lo(g_SaveLocations)
/* f10aaf8: 24010001 */ addiu $at,$zero,0x1
/* f10aafc: 00c08025 */ or $s0,$a2,$zero
/* f10ab00: 8d030000 */ lw $v1,0x0($t0)
@@ -3446,8 +3468,8 @@ glabel menucustomFileToDelete
/* f10ada8: 3c07800a */ lui $a3,%hi(var8009e000)
/* f10adac: 01c90019 */ multu $t6,$t1
/* f10adb0: 24e7e000 */ addiu $a3,$a3,%lo(var8009e000)
/* f10adb4: 3c038007 */ lui $v1,%hi(var80075bc0)
/* f10adb8: 24635bc0 */ addiu $v1,$v1,%lo(var80075bc0)
/* f10adb4: 3c038007 */ lui $v1,%hi(g_SaveLocations)
/* f10adb8: 24635bc0 */ addiu $v1,$v1,%lo(g_SaveLocations)
/* f10adbc: 27bdffe0 */ addiu $sp,$sp,-32
/* f10adc0: afa40020 */ sw $a0,0x20($sp)
/* f10adc4: afbf0014 */ sw $ra,0x14($sp)
@@ -3477,12 +3499,12 @@ glabel menucustomFileToDelete
/* f10ae20: 00c02025 */ or $a0,$a2,$zero
/* f10ae24: 0fc42a5f */ jal func0f10a97c
/* f10ae28: afa6001c */ sw $a2,0x1c($sp)
/* f10ae2c: 3c038007 */ lui $v1,%hi(var80075bc0)
/* f10ae2c: 3c038007 */ lui $v1,%hi(g_SaveLocations)
/* f10ae30: 3c07800a */ lui $a3,%hi(var8009e000)
/* f10ae34: 3c088007 */ lui $t0,%hi(g_MpPlayerNum)
/* f10ae38: 25081448 */ addiu $t0,$t0,%lo(g_MpPlayerNum)
/* f10ae3c: 24e7e000 */ addiu $a3,$a3,%lo(var8009e000)
/* f10ae40: 24635bc0 */ addiu $v1,$v1,%lo(var80075bc0)
/* f10ae40: 24635bc0 */ addiu $v1,$v1,%lo(g_SaveLocations)
/* f10ae44: 8fa6001c */ lw $a2,0x1c($sp)
/* f10ae48: 10400011 */ beqz $v0,.L0f10ae90
/* f10ae4c: 24090e70 */ addiu $t1,$zero,0xe70
+8 -8
View File
@@ -4493,11 +4493,11 @@ glabel func0f110bf8
/* f110bf8: 27bdffe0 */ addiu $sp,$sp,-32
/* f110bfc: afb10018 */ sw $s1,0x18($sp)
/* f110c00: afb00014 */ sw $s0,0x14($sp)
/* f110c04: 3c108007 */ lui $s0,%hi(var80075bc0)
/* f110c04: 3c108007 */ lui $s0,%hi(g_SaveLocations)
/* f110c08: 3c118007 */ lui $s1,%hi(var80075bd0)
/* f110c0c: afbf001c */ sw $ra,0x1c($sp)
/* f110c10: 26315bd0 */ addiu $s1,$s1,%lo(var80075bd0)
/* f110c14: 26105bc0 */ addiu $s0,$s0,%lo(var80075bc0)
/* f110c14: 26105bc0 */ addiu $s0,$s0,%lo(g_SaveLocations)
/* f110c18: 8e0e0000 */ lw $t6,0x0($s0)
.L0f110c1c:
/* f110c1c: 51c00008 */ beqzl $t6,.L0f110c40
@@ -4521,8 +4521,8 @@ glabel func0f110bf8
GLOBAL_ASM(
glabel func0f110c5c
/* f110c5c: 3c0f8007 */ lui $t7,%hi(var80075bc0)
/* f110c60: 25ef5bc0 */ addiu $t7,$t7,%lo(var80075bc0)
/* f110c5c: 3c0f8007 */ lui $t7,%hi(g_SaveLocations)
/* f110c60: 25ef5bc0 */ addiu $t7,$t7,%lo(g_SaveLocations)
/* f110c64: 00047080 */ sll $t6,$a0,0x2
/* f110c68: 01cf3021 */ addu $a2,$t6,$t7
/* f110c6c: 8cc30000 */ lw $v1,0x0($a2)
@@ -4570,10 +4570,10 @@ glabel func0f110cf8
/* f110cfc: afb00018 */ sw $s0,0x18($sp)
/* f110d00: 309000ff */ andi $s0,$a0,0xff
/* f110d04: afa40028 */ sw $a0,0x28($sp)
/* f110d08: 3c058007 */ lui $a1,%hi(var80075bc0)
/* f110d08: 3c058007 */ lui $a1,%hi(g_SaveLocations)
/* f110d0c: afbf001c */ sw $ra,0x1c($sp)
/* f110d10: 2406ffff */ addiu $a2,$zero,-1
/* f110d14: 24a55bc0 */ addiu $a1,$a1,%lo(var80075bc0)
/* f110d14: 24a55bc0 */ addiu $a1,$a1,%lo(g_SaveLocations)
/* f110d18: 24040004 */ addiu $a0,$zero,0x4
/* f110d1c: 00001825 */ or $v1,$zero,$zero
/* f110d20: 2407ffff */ addiu $a3,$zero,-1
@@ -4677,12 +4677,12 @@ glabel func0f110da8
/* f110e68: 2a410005 */ slti $at,$s2,0x5
/* f110e6c: 5420ffe6 */ bnezl $at,.L0f110e08
/* f110e70: 00128e00 */ sll $s1,$s2,0x18
/* f110e74: 3c108007 */ lui $s0,%hi(var80075bc0)
/* f110e74: 3c108007 */ lui $s0,%hi(g_SaveLocations)
/* f110e78: 3c148007 */ lui $s4,%hi(var80075bd0)
/* f110e7c: 3c118007 */ lui $s1,%hi(var80075bd0)
/* f110e80: 26315bd0 */ addiu $s1,$s1,%lo(var80075bd0)
/* f110e84: 26945bd0 */ addiu $s4,$s4,%lo(var80075bd0)
/* f110e88: 26105bc0 */ addiu $s0,$s0,%lo(var80075bc0)
/* f110e88: 26105bc0 */ addiu $s0,$s0,%lo(g_SaveLocations)
/* f110e8c: 24120001 */ addiu $s2,$zero,0x1
/* f110e90: 8e040000 */ lw $a0,0x0($s0)
.L0f110e94: