From d545b6b99478a4d8eda97bea2418efb07058a40f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 25 Mar 2020 23:05:00 +1000 Subject: [PATCH] Decompile menuResolveParam1Text and menuResolveParam2Text --- src/game/game_0e5ce0.c | 16 ++++----- src/game/game_0f09f0.c | 60 +++++++++++++--------------------- src/include/game/game_0f09f0.h | 6 ++-- src/include/types.h | 2 +- 4 files changed, 34 insertions(+), 50 deletions(-) diff --git a/src/game/game_0e5ce0.c b/src/game/game_0e5ce0.c index 68b1fd629..031cf7ab1 100644 --- a/src/game/game_0e5ce0.c +++ b/src/game/game_0e5ce0.c @@ -6307,7 +6307,7 @@ glabel func0f0e7a8c /* f0e7aa8: afae0074 */ sw $t6,0x74($sp) /* f0e7aac: 84af0002 */ lh $t7,0x2($a1) /* f0e7ab0: afaf0070 */ sw $t7,0x70($sp) -/* f0e7ab4: 0fc3c557 */ jal func0f0f155c +/* f0e7ab4: 0fc3c557 */ jal menuResolveParam2Text /* f0e7ab8: 8ca40008 */ lw $a0,0x8($a1) /* f0e7abc: afa20078 */ sw $v0,0x78($sp) /* f0e7ac0: 8e030010 */ lw $v1,0x10($s0) @@ -9265,7 +9265,7 @@ glabel func0f0ea52c /* f0ea598: afae00a0 */ sw $t6,0xa0($sp) /* f0ea59c: 8ca70008 */ lw $a3,0x8($a1) .L0f0ea5a0: -/* f0ea5a0: 0fc3c557 */ jal func0f0f155c +/* f0ea5a0: 0fc3c557 */ jal menuResolveParam2Text /* f0ea5a4: 00e02025 */ or $a0,$a3,$zero /* f0ea5a8: 14400003 */ bnez $v0,.L0f0ea5b8 /* f0ea5ac: afa200a4 */ sw $v0,0xa4($sp) @@ -9842,7 +9842,7 @@ glabel func0f0eac18 /* f0eae14: 0fc54e0e */ jal func0f153838 /* f0eae18: ac4c0004 */ sw $t4,0x4($v0) /* f0eae1c: afa20078 */ sw $v0,0x78($sp) -/* f0eae20: 0fc3c557 */ jal func0f0f155c +/* f0eae20: 0fc3c557 */ jal menuResolveParam2Text /* f0eae24: 8e040008 */ lw $a0,0x8($s0) /* f0eae28: 1040001f */ beqz $v0,.L0f0eaea8 /* f0eae2c: 8fa40078 */ lw $a0,0x78($sp) @@ -9921,7 +9921,7 @@ glabel func0f0eaec0 /* f0eaf38: 8ce7fb14 */ lw $a3,%lo(var8007fb14)($a3) .L0f0eaf3c: /* f0eaf3c: afa30068 */ sw $v1,0x68($sp) -/* f0eaf40: 0fc3c557 */ jal func0f0f155c +/* f0eaf40: 0fc3c557 */ jal menuResolveParam2Text /* f0eaf44: afa70064 */ sw $a3,0x64($sp) /* f0eaf48: afa20074 */ sw $v0,0x74($sp) /* f0eaf4c: 8e030010 */ lw $v1,0x10($s0) @@ -10369,7 +10369,7 @@ glabel func0f0eb508 /* f0eb5ac: afa80094 */ sw $t0,0x94($sp) /* f0eb5b0: 8e270008 */ lw $a3,0x8($s1) .L0f0eb5b4: -/* f0eb5b4: 0fc3c557 */ jal func0f0f155c +/* f0eb5b4: 0fc3c557 */ jal menuResolveParam2Text /* f0eb5b8: 00e02025 */ or $a0,$a3,$zero /* f0eb5bc: 8fac0070 */ lw $t4,0x70($sp) /* f0eb5c0: afa200a8 */ sw $v0,0xa8($sp) @@ -11555,7 +11555,7 @@ glabel func0f0ec64c /* f0ec6b0: afa90068 */ sw $t1,0x68($sp) /* f0ec6b4: 8e240008 */ lw $a0,0x8($s1) /* f0ec6b8: afa30054 */ sw $v1,0x54($sp) -/* f0ec6bc: 0fc3c557 */ jal func0f0f155c +/* f0ec6bc: 0fc3c557 */ jal menuResolveParam2Text /* f0ec6c0: afa20058 */ sw $v0,0x58($sp) /* f0ec6c4: afa20070 */ sw $v0,0x70($sp) /* f0ec6c8: a3a00064 */ sb $zero,0x64($sp) @@ -12590,7 +12590,7 @@ glabel func0f0ed528 /* f0ed53c: 8cae0014 */ lw $t6,0x14($a1) /* f0ed540: 00a08825 */ or $s1,$a1,$zero /* f0ed544: afae0084 */ sw $t6,0x84($sp) -/* f0ed548: 0fc3c557 */ jal func0f0f155c +/* f0ed548: 0fc3c557 */ jal menuResolveParam2Text /* f0ed54c: 8ca40008 */ lw $a0,0x8($a1) /* f0ed550: 3c0f8007 */ lui $t7,%hi(var800711ec) /* f0ed554: 3c188008 */ lui $t8,%hi(var8007fb0c) @@ -12936,7 +12936,7 @@ glabel func0f0eda34 /* f0eda3c: afb00020 */ sw $s0,0x20($sp) /* f0eda40: 00a08025 */ or $s0,$a1,$zero /* f0eda44: afa40058 */ sw $a0,0x58($sp) -/* f0eda48: 0fc3c557 */ jal func0f0f155c +/* f0eda48: 0fc3c557 */ jal menuResolveParam2Text /* f0eda4c: a7a0003e */ sh $zero,0x3e($sp) /* f0eda50: 8fae0058 */ lw $t6,0x58($sp) /* f0eda54: afa20038 */ sw $v0,0x38($sp) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index ecc31a233..a07aa20bb 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -1048,21 +1048,21 @@ void func0f0f1494(void) } } -char *menuResolveText(void *thing, struct menu_item *item) +char *menuResolveText(u32 thing, struct menu_item *item) { - char *(*handler)(struct menu_item *item) = thing; + char *(*handler)(struct menu_item *item) = (void *)thing; // Null/zero - if (thing == NULL) { + if (thing == 0) { return NULL; } // Text ID - if ((u32)thing < 0x5a00) { + if (thing < 0x5a00) { return langGet((u32)thing); } - if ((u32)thing > (u32)func0f1a78b0) { + if (thing > (u32)func0f1a78b0) { return NULL; } @@ -1120,31 +1120,15 @@ const u32 var7f1b264c[] = {0x88445500}; const u32 var7f1b2650[] = {0x48242000}; const u32 var7f1b2654[] = {0x88445500}; -GLOBAL_ASM( -glabel func0f0f155c -/* f0f155c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f0f1560: afbf0014 */ sw $ra,0x14($sp) -/* f0f1564: 00802825 */ or $a1,$a0,$zero -/* f0f1568: 0fc3c539 */ jal menuResolveText -/* f0f156c: 8c840008 */ lw $a0,0x8($a0) -/* f0f1570: 8fbf0014 */ lw $ra,0x14($sp) -/* f0f1574: 27bd0018 */ addiu $sp,$sp,0x18 -/* f0f1578: 03e00008 */ jr $ra -/* f0f157c: 00000000 */ sll $zero,$zero,0x0 -); +char *menuResolveParam2Text(struct menu_item *item) +{ + return menuResolveText(item->param2, item); +} -GLOBAL_ASM( -glabel func0f0f1580 -/* f0f1580: 27bdffe8 */ addiu $sp,$sp,-24 -/* f0f1584: afbf0014 */ sw $ra,0x14($sp) -/* f0f1588: 00802825 */ or $a1,$a0,$zero -/* f0f158c: 0fc3c539 */ jal menuResolveText -/* f0f1590: 8c840004 */ lw $a0,0x4($a0) -/* f0f1594: 8fbf0014 */ lw $ra,0x14($sp) -/* f0f1598: 27bd0018 */ addiu $sp,$sp,0x18 -/* f0f159c: 03e00008 */ jr $ra -/* f0f15a0: 00000000 */ sll $zero,$zero,0x0 -); +char *menuResolveParam1Text(struct menu_item *item) +{ + return menuResolveText(item->param1, item); +} void func0f0f15a4(u8 *arg0, u32 *arg1) { @@ -1330,7 +1314,7 @@ glabel var7f1b28c0 .L0f0f177c: /* f0f177c: 10000175 */ beqz $zero,.L0f0f1d54 /* f0f1780: a6580000 */ sh $t8,0x0($s2) -/* f0f1784: 0fc3c557 */ jal func0f0f155c +/* f0f1784: 0fc3c557 */ jal menuResolveParam2Text /* f0f1788: 02002025 */ or $a0,$s0,$zero /* f0f178c: 1040000b */ beqz $v0,.L0f0f17bc /* f0f1790: 00403025 */ or $a2,$v0,$zero @@ -1435,7 +1419,7 @@ glabel var7f1b28c0 /* f0f190c: afa90068 */ sw $t1,0x68($sp) /* f0f1910: afaa0064 */ sw $t2,0x64($sp) .L0f0f1914: -/* f0f1914: 0fc3c557 */ jal func0f0f155c +/* f0f1914: 0fc3c557 */ jal menuResolveParam2Text /* f0f1918: 02002025 */ or $a0,$s0,$zero /* f0f191c: 14400004 */ bnez $v0,.L0f0f1930 /* f0f1920: 00403025 */ or $a2,$v0,$zero @@ -1496,7 +1480,7 @@ glabel var7f1b28c0 .L0f0f19ec: /* f0f19ec: 100000d9 */ beqz $zero,.L0f0f1d54 /* f0f19f0: a64c0000 */ sh $t4,0x0($s2) -/* f0f19f4: 0fc3c557 */ jal func0f0f155c +/* f0f19f4: 0fc3c557 */ jal menuResolveParam2Text /* f0f19f8: 02002025 */ or $a0,$s0,$zero /* f0f19fc: 14400004 */ bnez $v0,.L0f0f1a10 /* f0f1a00: 00403025 */ or $a2,$v0,$zero @@ -2108,7 +2092,7 @@ glabel func0f0f2134 /* f0f2298: 00a31021 */ addu $v0,$a1,$v1 .L0f0f229c: /* f0f229c: 2610000c */ addiu $s0,$s0,0xc -/* f0f22a0: 0fc3c560 */ jal func0f0f1580 +/* f0f22a0: 0fc3c560 */ jal menuResolveParam1Text /* f0f22a4: 8d640000 */ lw $a0,0x0($t3) /* f0f22a8: 3c0c8008 */ lui $t4,%hi(var8007fb0c) /* f0f22ac: 8d8cfb0c */ lw $t4,%lo(var8007fb0c)($t4) @@ -2553,7 +2537,7 @@ glabel func0f0f288c /* f0f28f4: 5420fff2 */ bnezl $at,.L0f0f28c0 /* f0f28f8: 8e460000 */ lw $a2,0x0($s2) .L0f0f28fc: -/* f0f28fc: 0fc3c560 */ jal func0f0f1580 +/* f0f28fc: 0fc3c560 */ jal menuResolveParam1Text /* f0f2900: 8e440000 */ lw $a0,0x0($s2) /* f0f2904: 8e580000 */ lw $t8,0x0($s2) /* f0f2908: 8f020008 */ lw $v0,0x8($t8) @@ -2602,7 +2586,7 @@ glabel func0f0f2928 /* f0f2998: 5420fff2 */ bnezl $at,.L0f0f2964 /* f0f299c: 8e460000 */ lw $a2,0x0($s2) .L0f0f29a0: -/* f0f29a0: 0fc3c560 */ jal func0f0f1580 +/* f0f29a0: 0fc3c560 */ jal menuResolveParam1Text /* f0f29a4: 8e440000 */ lw $a0,0x0($s2) /* f0f29a8: 8e580000 */ lw $t8,0x0($s2) /* f0f29ac: 8f020008 */ lw $v0,0x8($t8) @@ -5798,7 +5782,7 @@ glabel func0f0f5360 /* f0f5654: 02021821 */ addu $v1,$s0,$v0 /* f0f5658: afa301d4 */ sw $v1,0x1d4($sp) /* f0f565c: afa30084 */ sw $v1,0x84($sp) -/* f0f5660: 0fc3c560 */ jal func0f0f1580 +/* f0f5660: 0fc3c560 */ jal menuResolveParam1Text /* f0f5664: afa201dc */ sw $v0,0x1dc($sp) /* f0f5668: 8fa701ec */ lw $a3,0x1ec($sp) /* f0f566c: 0040b825 */ or $s7,$v0,$zero @@ -7706,7 +7690,7 @@ glabel func0f0f5360 .L0f0f7298: /* f0f7298: 02386021 */ addu $t4,$s1,$t8 /* f0f729c: 8d8f0000 */ lw $t7,0x0($t4) -/* f0f72a0: 0fc3c560 */ jal func0f0f1580 +/* f0f72a0: 0fc3c560 */ jal menuResolveParam1Text /* f0f72a4: 8de40000 */ lw $a0,0x0($t7) /* f0f72a8: 3c138008 */ lui $s3,%hi(var8007fb04) /* f0f72ac: 2673fb04 */ addiu $s3,$s3,%lo(var8007fb04) @@ -7773,7 +7757,7 @@ glabel func0f0f5360 .L0f0f7398: /* f0f7398: 02397021 */ addu $t6,$s1,$t9 /* f0f739c: 8dcb0000 */ lw $t3,0x0($t6) -/* f0f73a0: 0fc3c560 */ jal func0f0f1580 +/* f0f73a0: 0fc3c560 */ jal menuResolveParam1Text /* f0f73a4: 8d640000 */ lw $a0,0x0($t3) /* f0f73a8: 8e780000 */ lw $t8,0x0($s3) /* f0f73ac: 00408025 */ or $s0,$v0,$zero diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index fac3b0f08..16dcbf73d 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -14,9 +14,9 @@ u32 func0f0f139c(void); u32 func0f0f13ec(void); void func0f0f1418(void); void func0f0f1494(void); -char *menuResolveText(void *thing, struct menu_item *item); -u32 func0f0f155c(void); -u32 func0f0f1580(void); +char *menuResolveText(u32 thing, struct menu_item *item); +char *menuResolveParam2Text(struct menu_item *item); +char *menuResolveParam1Text(struct menu_item *item); void func0f0f15a4(u8 *arg0, u32 *arg1); u32 func0f0f1618(void); u32 func0f0f1d6c(void); diff --git a/src/include/types.h b/src/include/types.h index 86398b1b7..208d3c9f3 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3203,7 +3203,7 @@ struct hoverprop { struct menu_item { u8 type; u8 param; - u32 flags; + u32 param1; u32 param2; u32 param3; void *handler;