Decompile frDetailsOkMenuHandler

This commit is contained in:
Ryan Dwyer 2020-04-12 09:58:05 +10:00
parent d1a648e24a
commit 8442f00659
6 changed files with 47 additions and 82 deletions

View File

@ -91,7 +91,7 @@ struct menu_item menuitems_frtraininginfo[] = {
{ MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
{ MENUITEMTYPE_SCROLLABLE, 6, 0x00004000, 0x0000010e, 0x0000005f, NULL },
{ MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(428), menuhandler001a3340 }, // "", "Resume"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(428), frDetailsOkMenuHandler }, // "", "Resume"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(430), menuhandler001a3448 }, // "", "Abort"
{ MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
};
@ -116,7 +116,7 @@ struct menu_item menuitems_frtraininginfo2[] = {
{ MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
{ MENUITEMTYPE_SCROLLABLE, 6, 0x00004000, 0x0000010e, 0x0000005f, NULL },
{ MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(427), menuhandler001a3340 }, // "", "Ok"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(427), frDetailsOkMenuHandler }, // "", "Ok"
{ MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(429), menuhandler001a3448 }, // "", "Cancel"
{ MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
};

View File

@ -1312,7 +1312,7 @@ void func0f19de24(void)
}
}
u32 var8008889c = 1;
s32 g_FrWeaponNum = WEAPON_UNARMED;
GLOBAL_ASM(
glabel func0f19def4

View File

@ -36,82 +36,47 @@
const char var7f1b97d0[] = "\n";
const char var7f1b97d4[] = "\n";
GLOBAL_ASM(
glabel menuhandler001a3340
/* f1a3340: 27bdffe0 */ addiu $sp,$sp,-32
/* f1a3344: 24010006 */ addiu $at,$zero,0x6
/* f1a3348: afbf0014 */ sw $ra,0x14($sp)
/* f1a334c: afa50024 */ sw $a1,0x24($sp)
/* f1a3350: 10810006 */ beq $a0,$at,.L0f1a336c
/* f1a3354: afa60028 */ sw $a2,0x28($sp)
/* f1a3358: 2401000f */ addiu $at,$zero,0xf
/* f1a335c: 54810036 */ bnel $a0,$at,.L0f1a3438
/* f1a3360: 00001025 */ or $v0,$zero,$zero
/* f1a3364: 10000034 */ beqz $zero,.L0f1a3438
/* f1a3368: 24020001 */ addiu $v0,$zero,0x1
.L0f1a336c:
/* f1a336c: 0fc6830c */ jal frIsInTraining
/* f1a3370: 00000000 */ sll $zero,$zero,0x0
/* f1a3374: 1440002d */ bnez $v0,.L0f1a342c
/* f1a3378: 00000000 */ sll $zero,$zero,0x0
/* f1a337c: 0fc67494 */ jal frGetSlot
/* f1a3380: 00000000 */ sll $zero,$zero,0x0
/* f1a3384: 0fc6749a */ jal frGetWeaponBySlot
/* f1a3388: 00402025 */ or $a0,$v0,$zero
/* f1a338c: 3c048009 */ lui $a0,%hi(var8008889c)
/* f1a3390: 8c84889c */ lw $a0,%lo(var8008889c)($a0)
/* f1a3394: 24010001 */ addiu $at,$zero,0x1
/* f1a3398: afa20018 */ sw $v0,0x18($sp)
/* f1a339c: 50810004 */ beql $a0,$at,.L0f1a33b0
/* f1a33a0: 8fae0018 */ lw $t6,0x18($sp)
/* f1a33a4: 0fc447a9 */ jal currentPlayerRemoveWeapon
/* f1a33a8: 00000000 */ sll $zero,$zero,0x0
/* f1a33ac: 8fae0018 */ lw $t6,0x18($sp)
.L0f1a33b0:
/* f1a33b0: 24010001 */ addiu $at,$zero,0x1
/* f1a33b4: 11c10003 */ beq $t6,$at,.L0f1a33c4
/* f1a33b8: 00000000 */ sll $zero,$zero,0x0
/* f1a33bc: 0fc44762 */ jal currentPlayerGiveWeapon
/* f1a33c0: 01c02025 */ or $a0,$t6,$zero
.L0f1a33c4:
/* f1a33c4: 0fc44bd8 */ jal currentPlayerSetEquipCurItem
/* f1a33c8: 24040001 */ addiu $a0,$zero,0x1
/* f1a33cc: 0fc2866a */ jal getCurrentPlayerWeaponId
/* f1a33d0: 00002025 */ or $a0,$zero,$zero
/* f1a33d4: 8fa50018 */ lw $a1,0x18($sp)
/* f1a33d8: 10450004 */ beq $v0,$a1,.L0f1a33ec
/* f1a33dc: 00000000 */ sll $zero,$zero,0x0
/* f1a33e0: 0fc28824 */ jal currentPlayerEquipWeapon
/* f1a33e4: 00002025 */ or $a0,$zero,$zero
/* f1a33e8: 8fa50018 */ lw $a1,0x18($sp)
.L0f1a33ec:
/* f1a33ec: 3c018009 */ lui $at,%hi(var8008889c)
/* f1a33f0: 3c03800a */ lui $v1,%hi(g_Vars)
/* f1a33f4: ac25889c */ sw $a1,%lo(var8008889c)($at)
/* f1a33f8: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
/* f1a33fc: 00001025 */ or $v0,$zero,$zero
/* f1a3400: 24040008 */ addiu $a0,$zero,0x8
.L0f1a3404:
/* f1a3404: 8c6f0284 */ lw $t7,0x284($v1)
/* f1a3408: 01e2c021 */ addu $t8,$t7,$v0
/* f1a340c: a7000d74 */ sh $zero,0xd74($t8)
/* f1a3410: 8c790284 */ lw $t9,0x284($v1)
/* f1a3414: 03224021 */ addu $t0,$t9,$v0
/* f1a3418: 24420002 */ addiu $v0,$v0,0x2
/* f1a341c: 1444fff9 */ bne $v0,$a0,.L0f1a3404
/* f1a3420: a5001518 */ sh $zero,0x1518($t0)
/* f1a3424: 0fc67a70 */ jal func0f19e9c0
/* f1a3428: 00a02025 */ or $a0,$a1,$zero
.L0f1a342c:
/* f1a342c: 0fc3e048 */ jal func0f0f8120
/* f1a3430: 00000000 */ sll $zero,$zero,0x0
/* f1a3434: 00001025 */ or $v0,$zero,$zero
.L0f1a3438:
/* f1a3438: 8fbf0014 */ lw $ra,0x14($sp)
/* f1a343c: 27bd0020 */ addiu $sp,$sp,0x20
/* f1a3440: 03e00008 */ jr $ra
/* f1a3444: 00000000 */ sll $zero,$zero,0x0
);
s32 frDetailsOkMenuHandler(u32 operation, struct menu_item *item, s32 *value)
{
s32 i;
switch (operation) {
case MENUOP_CHECKPREFOCUSED:
return true;
case MENUOP_SET:
if (frIsInTraining() == false) {
s32 weapon = frGetWeaponBySlot(frGetSlot());
if (g_FrWeaponNum != 1) {
currentPlayerRemoveWeapon(g_FrWeaponNum);
}
if (weapon != WEAPON_UNARMED) {
currentPlayerGiveWeapon(weapon);
}
currentPlayerSetEquipCurItem(1);
if (getCurrentPlayerWeaponId(0) != weapon) {
currentPlayerEquipWeapon(0, weapon);
}
g_FrWeaponNum = weapon;
for (i = 0; i < 4; i++) {
g_Vars.currentplayer->unk0638[0].unk0d74[i] = 0;
g_Vars.currentplayer->unk0638[1].unk0d74[i] = 0;
}
func0f19e9c0(weapon);
}
func0f0f8120();
break;
}
return 0;
}
s32 menuhandler001a3448(u32 operation, struct menu_item *item, s32 *value)
{

View File

@ -4,6 +4,7 @@
#include "types.h"
extern u8 var80088804;
extern s32 g_FrWeaponNum;
extern u8 var800888a0;
bool ciIsTourDone(void);

View File

@ -45,7 +45,7 @@ bool menudialogDeviceTrainingResults(u32 operation, struct menu_dialog *dialog,
bool menudialog001a6aa4(u32 operation, struct menu_dialog *dialog, struct menustackitem *stackitem);
bool menudialogFiringRangeResults(u32 operation, struct menu_dialog *dialog, struct menustackitem *stackitem);
s32 menudialog001a737c(u32, u32, u32 *);
s32 menuhandler001a3340(u32, u32, u32 *);
s32 frDetailsOkMenuHandler(u32 operation, struct menu_item *item, s32 *value);
s32 menuhandler001a3448(u32 operation, struct menu_item *item, s32 *value);
s32 menuhandler001a348c(u32, u32, u32 *);
s32 menuhandler001a44c0(u32, u32, u32 *);

View File

@ -1621,8 +1621,7 @@ struct player638 {
/*0x0d68*/ u32 unk0d68;
/*0x0d6c*/ u32 unk0d6c;
/*0x0d70*/ u32 unk0d70;
/*0x0d74*/ u32 unk0d74;
/*0x0d78*/ u32 unk0d78;
/*0x0d74*/ u16 unk0d74[4];
/*0x0d7c*/ u32 unk0d7c;
/*0x0d80*/ u32 unk0d80;
/*0x0d84*/ void *unk0d84;