Decompile menuhandlerPdModeSetting

This commit is contained in:
Ryan Dwyer 2020-03-22 11:56:41 +10:00
parent 828bba7b78
commit a0af56ba5a
4 changed files with 47 additions and 110 deletions

View File

@ -24,10 +24,10 @@ void func0f000090(void)
var800624ec = 0;
var800624f0 = 0;
var800624f4 = 1;
g_MissionConfig.unk04 = 0;
g_MissionConfig.updmodehealth = 128;
g_MissionConfig.updmodedamage = 128;
g_MissionConfig.updmodeaccuracy = 128;
g_MissionConfig.pdmodereaction = 0;
g_MissionConfig.pdmodehealth = 128;
g_MissionConfig.pdmodedamage = 128;
g_MissionConfig.pdmodeaccuracy = 128;
}
void func0f000100(void)

View File

@ -39,9 +39,6 @@
const char var7f1b2cf0[] = "%s\n";
const char var7f1b2cf4[] = "%s: %s\n";
const char var7f1b2cfc[] = "%s%s%.00f%%\n";
const char var7f1b2d0c[] = "";
const char var7f1b2d10[] = "";
GLOBAL_ASM(
glabel func0f102240
@ -1273,105 +1270,45 @@ glabel func0f1036ac
/* f103704: 00000000 */ sll $zero,$zero,0x0
);
GLOBAL_ASM(
glabel menuhandlerPdModeSetting
/* f103708: 27bdffe0 */ addiu $sp,$sp,-32
/* f10370c: afbf001c */ sw $ra,0x1c($sp)
/* f103710: afa50024 */ sw $a1,0x24($sp)
/* f103714: 90a70001 */ lbu $a3,0x1($a1)
/* f103718: 24010001 */ addiu $at,$zero,0x1
/* f10371c: 10e00009 */ beqz $a3,.L0f103744
/* f103720: 00e01025 */ or $v0,$a3,$zero
/* f103724: 1041000a */ beq $v0,$at,.L0f103750
/* f103728: 24010002 */ addiu $at,$zero,0x2
/* f10372c: 1041000b */ beq $v0,$at,.L0f10375c
/* f103730: 24010003 */ addiu $at,$zero,0x3
/* f103734: 1041000c */ beq $v0,$at,.L0f103768
/* f103738: 00000000 */ sll $zero,$zero,0x0
/* f10373c: 1000003b */ beqz $zero,.L0f10382c
/* f103740: 00001025 */ or $v0,$zero,$zero
.L0f103744:
/* f103744: 3c02800a */ lui $v0,%hi(g_MissionConfig+0x4)
/* f103748: 1000000c */ beqz $zero,.L0f10377c
/* f10374c: 2442dfec */ addiu $v0,$v0,%lo(g_MissionConfig+0x4)
.L0f103750:
/* f103750: 3c02800a */ lui $v0,%hi(g_MissionConfig+0x5)
/* f103754: 10000009 */ beqz $zero,.L0f10377c
/* f103758: 2442dfed */ addiu $v0,$v0,%lo(g_MissionConfig+0x5)
.L0f10375c:
/* f10375c: 3c02800a */ lui $v0,%hi(g_MissionConfig+0x6)
/* f103760: 10000006 */ beqz $zero,.L0f10377c
/* f103764: 2442dfee */ addiu $v0,$v0,%lo(g_MissionConfig+0x6)
.L0f103768:
/* f103768: 3c02800a */ lui $v0,%hi(g_MissionConfig+0x7)
/* f10376c: 10000003 */ beqz $zero,.L0f10377c
/* f103770: 2442dfef */ addiu $v0,$v0,%lo(g_MissionConfig+0x7)
/* f103774: 1000002d */ beqz $zero,.L0f10382c
/* f103778: 00001025 */ or $v0,$zero,$zero
.L0f10377c:
/* f10377c: 24010006 */ addiu $at,$zero,0x6
/* f103780: 1081000a */ beq $a0,$at,.L0f1037ac
/* f103784: 24010009 */ addiu $at,$zero,0x9
/* f103788: 10810005 */ beq $a0,$at,.L0f1037a0
/* f10378c: 2401000a */ addiu $at,$zero,0xa
/* f103790: 10810009 */ beq $a0,$at,.L0f1037b8
/* f103794: 00e02825 */ or $a1,$a3,$zero
/* f103798: 10000024 */ beqz $zero,.L0f10382c
/* f10379c: 00001025 */ or $v0,$zero,$zero
.L0f1037a0:
/* f1037a0: 904f0000 */ lbu $t7,0x0($v0)
/* f1037a4: 10000020 */ beqz $zero,.L0f103828
/* f1037a8: accf0000 */ sw $t7,0x0($a2)
.L0f1037ac:
/* f1037ac: 94d80002 */ lhu $t8,0x2($a2)
/* f1037b0: 1000001d */ beqz $zero,.L0f103828
/* f1037b4: a0580000 */ sb $t8,0x0($v0)
.L0f1037b8:
/* f1037b8: 90440000 */ lbu $a0,0x0($v0)
/* f1037bc: 0fc40dab */ jal func0f1036ac
/* f1037c0: afa60028 */ sw $a2,0x28($sp)
/* f1037c4: 8fb90024 */ lw $t9,0x24($sp)
/* f1037c8: 46000086 */ mov.s $f2,$f0
/* f1037cc: 3c014080 */ lui $at,0x4080
/* f1037d0: 93280001 */ lbu $t0,0x1($t9)
/* f1037d4: 55000007 */ bnezl $t0,.L0f1037f4
/* f1037d8: 3c0142c8 */ lui $at,0x42c8
/* f1037dc: 44812000 */ mtc1 $at,$f4
/* f1037e0: 3c013f80 */ lui $at,0x3f80
/* f1037e4: 44814000 */ mtc1 $at,$f8
/* f1037e8: 46040182 */ mul.s $f6,$f0,$f4
/* f1037ec: 46083080 */ add.s $f2,$f6,$f8
/* f1037f0: 3c0142c8 */ lui $at,0x42c8
.L0f1037f4:
/* f1037f4: 44815000 */ mtc1 $at,$f10
/* f1037f8: 8fa90028 */ lw $t1,0x28($sp)
/* f1037fc: 3c057f1b */ lui $a1,%hi(var7f1b2cfc)
/* f103800: 460a1402 */ mul.s $f16,$f2,$f10
/* f103804: 3c067f1b */ lui $a2,%hi(var7f1b2d0c)
/* f103808: 3c077f1b */ lui $a3,%hi(var7f1b2d10)
/* f10380c: 8d240004 */ lw $a0,0x4($t1)
/* f103810: 24e72d10 */ addiu $a3,$a3,%lo(var7f1b2d10)
/* f103814: 24c62d0c */ addiu $a2,$a2,%lo(var7f1b2d0c)
/* f103818: 24a52cfc */ addiu $a1,$a1,%lo(var7f1b2cfc)
/* f10381c: 460084a1 */ cvt.d.s $f18,$f16
/* f103820: 0c004dad */ jal sprintf
/* f103824: f7b20010 */ sdc1 $f18,0x10($sp)
.L0f103828:
/* f103828: 00001025 */ or $v0,$zero,$zero
.L0f10382c:
/* f10382c: 8fbf001c */ lw $ra,0x1c($sp)
/* f103830: 27bd0020 */ addiu $sp,$sp,0x20
/* f103834: 03e00008 */ jr $ra
/* f103838: 00000000 */ sll $zero,$zero,0x0
);
s32 menuhandlerPdModeSetting(u32 operation, struct menu_item *item, struct numandtext *value)
{
u8 *property;
f32 fvalue;
switch (item->param) {
case 0: property = &g_MissionConfig.pdmodereaction; break;
case 1: property = &g_MissionConfig.pdmodehealth; break;
case 2: property = &g_MissionConfig.pdmodedamage; break;
case 3: property = &g_MissionConfig.pdmodeaccuracy; break;
default: return 0;
}
switch (operation) {
case MENUOP_GETSLIDER:
value->num = *property;
break;
case MENUOP_SET:
*property = (u16)value->num;
break;
case MENUOP_GETSLIDERLABEL:
fvalue = func0f1036ac(*property, item->param);
if (item->param == 0) {
fvalue = fvalue * 4 + 1.0f;
}
sprintf(value->text, "%s%s%.00f%%\n", "", "", fvalue * 100.0f);
break;
}
return 0;
}
s32 menuhandlerAcceptPdModeSettings(s32 operation, struct menu_item *item, bool *value)
{
if (operation == MENUOP_SET) {
g_MissionConfig.pdmode = true;
g_MissionConfig.fpdmodehealth = func0f1036ac(g_MissionConfig.updmodehealth, 1);
g_MissionConfig.fpdmodedamage = func0f1036ac(g_MissionConfig.updmodedamage, 2);
g_MissionConfig.fpdmodeaccuracy = func0f1036ac(g_MissionConfig.updmodeaccuracy, 3);
g_MissionConfig.pdmodehealthf = func0f1036ac(g_MissionConfig.pdmodehealth, 1);
g_MissionConfig.pdmodedamagef = func0f1036ac(g_MissionConfig.pdmodedamage, 2);
g_MissionConfig.pdmodeaccuracyf = func0f1036ac(g_MissionConfig.pdmodeaccuracy, 3);
g_MissionConfig.difficulty = DIFF_PA;
setDifficulty(g_MissionConfig.difficulty);
menuPopDialog();

View File

@ -62,7 +62,7 @@ s32 menuhandlerLookAhead(u32 operation, struct menu_item *item, bool *enable);
s32 menuhandlerMusicVolume(u32 operation, struct menu_item *item, u32 *volume);
s32 menuhandlerPaintball(u32 operation, struct menu_item *item, bool *enable);
s32 menuhandlerPdMode(u32 operation, struct menu_item *item, s32 *value);
s32 menuhandlerPdModeSetting(u32 operation, struct menu_item *item, bool *enable);
s32 menuhandlerPdModeSetting(u32 operation, struct menu_item *item, struct numandtext *value);
s32 menuhandlerReversePitch(u32 operation, struct menu_item *item, bool *enable);
s32 menuhandlerScreenRatio(u32 operation, struct menu_item *item, bool *enable);
s32 menuhandlerScreenSize(u32 operation, struct menu_item *item, bool *enable);

View File

@ -4403,14 +4403,14 @@ struct missionconfig {
u8 iscoop : 1;
u8 isanti : 1;
/*0x04*/ u8 unk04;
/*0x05*/ u8 updmodehealth;
/*0x06*/ u8 updmodedamage;
/*0x07*/ u8 updmodeaccuracy;
/*0x08*/ u32 unk08;
/*0x0c*/ f32 fpdmodehealth;
/*0x10*/ f32 fpdmodedamage;
/*0x14*/ f32 fpdmodeaccuracy;
/*0x04*/ u8 pdmodereaction;
/*0x05*/ u8 pdmodehealth;
/*0x06*/ u8 pdmodedamage;
/*0x07*/ u8 pdmodeaccuracy;
/*0x08*/ f32 pdmodereactionf;
/*0x0c*/ f32 pdmodehealthf;
/*0x10*/ f32 pdmodedamagef;
/*0x14*/ f32 pdmodeaccuracyf;
};
struct mpsetup {