Decompile frDifficultyMenuHandler

This commit is contained in:
Ryan Dwyer 2020-08-13 20:55:55 +10:00
parent 02b571be8d
commit 829e8b4b0b
3 changed files with 27 additions and 62 deletions

View File

@ -47,9 +47,9 @@ u32 var80088ca8 = 0x00000000;
// 2eccc
struct menuitem menuitems_frdifficulty[] = {
{ MENUITEMTYPE_LABEL, 0, 0x00000012, L_MPMENU(444), L_MPMENU(445), NULL }, // "Select Difficulty:"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPMENU(439), L_OPTIONS(3), menuhandlerFrDifficulty }, // "Bronze"
{ MENUITEMTYPE_SELECTABLE, 1, 0x00000020, L_MPMENU(440), L_OPTIONS(3), menuhandlerFrDifficulty }, // "Silver"
{ MENUITEMTYPE_SELECTABLE, 2, 0x00000020, L_MPMENU(441), L_OPTIONS(3), menuhandlerFrDifficulty }, // "Gold"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPMENU(439), L_OPTIONS(3), frDifficultyMenuHandler }, // "Bronze"
{ MENUITEMTYPE_SELECTABLE, 1, 0x00000020, L_MPMENU(440), L_OPTIONS(3), frDifficultyMenuHandler }, // "Silver"
{ MENUITEMTYPE_SELECTABLE, 2, 0x00000020, L_MPMENU(441), L_OPTIONS(3), frDifficultyMenuHandler }, // "Gold"
{ MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPMENU(429), 0x00000000, NULL }, // "Cancel"
{ MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL },

View File

@ -656,65 +656,30 @@ glabel menudialog001a3af4
/* f1a3c14: 00000000 */ nop
);
s32 frDifficultyMenuHandler(u32 operation, struct menuitem *item, s32 *value)
{
switch (operation) {
case MENUOP_CHECKHIDDEN:
if (ciGetFiringRangeScore(frGetWeaponIndexByWeapon(frGetWeaponBySlot(frGetSlot()))) < item->param) {
return true;
}
break;
case MENUOP_SET:
frSetDifficulty(item->param);
menuPushDialog(&menudialog_frtraininginfo2);
break;
case MENUOP_CHECKPREFOCUSED:
if (ciGetFiringRangeScore(frGetWeaponIndexByWeapon(frGetWeaponBySlot(frGetSlot()))) >= item->param) {
return true;
}
break;
}
return 0;
}
GLOBAL_ASM(
glabel menuhandlerFrDifficulty
/* f1a3c18: 27bdffe8 */ addiu $sp,$sp,-24
/* f1a3c1c: 24010006 */ addiu $at,$zero,0x6
/* f1a3c20: afbf0014 */ sw $ra,0x14($sp)
/* f1a3c24: afa5001c */ sw $a1,0x1c($sp)
/* f1a3c28: 10810015 */ beq $a0,$at,.L0f1a3c80
/* f1a3c2c: afa60020 */ sw $a2,0x20($sp)
/* f1a3c30: 2401000f */ addiu $at,$zero,0xf
/* f1a3c34: 1081001a */ beq $a0,$at,.L0f1a3ca0
/* f1a3c38: 24010018 */ addiu $at,$zero,0x18
/* f1a3c3c: 54810028 */ bnel $a0,$at,.L0f1a3ce0
/* f1a3c40: 00001025 */ or $v0,$zero,$zero
/* f1a3c44: 0fc67494 */ jal frGetSlot
/* f1a3c48: 00000000 */ nop
/* f1a3c4c: 0fc6749a */ jal frGetWeaponBySlot
/* f1a3c50: 00402025 */ or $a0,$v0,$zero
/* f1a3c54: 0fc67330 */ jal frGetWeaponIndexByWeapon
/* f1a3c58: 00402025 */ or $a0,$v0,$zero
/* f1a3c5c: 0fc6726c */ jal ciGetFiringRangeScore
/* f1a3c60: 00402025 */ or $a0,$v0,$zero
/* f1a3c64: 8fae001c */ lw $t6,0x1c($sp)
/* f1a3c68: 91cf0001 */ lbu $t7,0x1($t6)
/* f1a3c6c: 004f082a */ slt $at,$v0,$t7
/* f1a3c70: 5020001b */ beqzl $at,.L0f1a3ce0
/* f1a3c74: 00001025 */ or $v0,$zero,$zero
/* f1a3c78: 10000019 */ b .L0f1a3ce0
/* f1a3c7c: 24020001 */ addiu $v0,$zero,0x1
.L0f1a3c80:
/* f1a3c80: 8fb8001c */ lw $t8,0x1c($sp)
/* f1a3c84: 0fc67570 */ jal frSetDifficulty
/* f1a3c88: 93040001 */ lbu $a0,0x1($t8)
/* f1a3c8c: 3c048009 */ lui $a0,%hi(menudialog_frtraininginfo2)
/* f1a3c90: 0fc3cbd3 */ jal menuPushDialog
/* f1a3c94: 24848f60 */ addiu $a0,$a0,%lo(menudialog_frtraininginfo2)
/* f1a3c98: 10000011 */ b .L0f1a3ce0
/* f1a3c9c: 00001025 */ or $v0,$zero,$zero
.L0f1a3ca0:
/* f1a3ca0: 0fc67494 */ jal frGetSlot
/* f1a3ca4: 00000000 */ nop
/* f1a3ca8: 0fc6749a */ jal frGetWeaponBySlot
/* f1a3cac: 00402025 */ or $a0,$v0,$zero
/* f1a3cb0: 0fc67330 */ jal frGetWeaponIndexByWeapon
/* f1a3cb4: 00402025 */ or $a0,$v0,$zero
/* f1a3cb8: 0fc6726c */ jal ciGetFiringRangeScore
/* f1a3cbc: 00402025 */ or $a0,$v0,$zero
/* f1a3cc0: 8fb9001c */ lw $t9,0x1c($sp)
/* f1a3cc4: 93280001 */ lbu $t0,0x1($t9)
/* f1a3cc8: 0048082a */ slt $at,$v0,$t0
/* f1a3ccc: 54200004 */ bnezl $at,.L0f1a3ce0
/* f1a3cd0: 00001025 */ or $v0,$zero,$zero
/* f1a3cd4: 10000002 */ b .L0f1a3ce0
/* f1a3cd8: 24020001 */ addiu $v0,$zero,0x1
/* f1a3cdc: 00001025 */ or $v0,$zero,$zero
.L0f1a3ce0:
/* f1a3ce0: 8fbf0014 */ lw $ra,0x14($sp)
/* f1a3ce4: 27bd0018 */ addiu $sp,$sp,0x18
/* f1a3ce8: 03e00008 */ jr $ra
/* f1a3cec: 00000000 */ nop
glabel func0f1a3cf0
/* f1a3cf0: 27bdffe8 */ addiu $sp,$sp,-24
/* f1a3cf4: afbf0014 */ sw $ra,0x14($sp)
/* f1a3cf8: 0fc67494 */ jal frGetSlot

View File

@ -59,6 +59,6 @@ s32 menuhandler001a6a34(u32 operation, struct menuitem *item, s32 *value);
s32 menuhandler001a6a70(u32 operation, struct menuitem *item, s32 *value);
s32 menuhandler001a6d4c(u32, u32, u32 *);
s32 menuhandler001a6ea4(u32, u32, u32 *);
s32 menuhandlerFrDifficulty(u32, u32, u32 *);
s32 frDifficultyMenuHandler(u32 operation, struct menuitem *item, s32 *value);
#endif