From 36a6745d7fc444c6911db6cc3c76b8f5ebaa4f9d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 9 Oct 2019 18:08:37 +1000 Subject: [PATCH] Decompile getDifficulty --- src/game/chr/chraicommands.c | 10 +++++----- src/game/game_000000.c | 24 ++++++++++++------------ src/game/game_0601b0.c | 29 ++++++++++++++--------------- src/include/game/game_0601b0.h | 2 ++ src/include/setup/setup_020df0.h | 2 ++ src/setup/setup_020df0.c | 4 +++- 6 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 40cb70a32..8f8d18f9d 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -4516,7 +4516,7 @@ glabel ai0073 /* f05266c: 8fa80024 */ lw $t0,0x24($sp) /* f052670: 0fc25594 */ jal func0f095650 /* f052674: 91040002 */ lbu $a0,0x2($t0) -/* f052678: 0fc5b367 */ jal func0f16cd9c +/* f052678: 0fc5b367 */ jal getDifficulty /* f05267c: afa20020 */ sw $v0,0x20($sp) /* f052680: 8fab0020 */ lw $t3,0x20($sp) /* f052684: 24090001 */ addiu $t1,$zero,0x1 @@ -4570,7 +4570,7 @@ glabel ai0074 /* f05271c: 8fa80024 */ lw $t0,0x24($sp) /* f052720: 0fc25594 */ jal func0f095650 /* f052724: 91040002 */ lbu $a0,0x2($t0) -/* f052728: 0fc5b367 */ jal func0f16cd9c +/* f052728: 0fc5b367 */ jal getDifficulty /* f05272c: afa20020 */ sw $v0,0x20($sp) /* f052730: 8fab0020 */ lw $t3,0x20($sp) /* f052734: 24090001 */ addiu $t1,$zero,0x1 @@ -5256,7 +5256,7 @@ glabel ai0077 /* f052fd4: 27bdffe0 */ addiu $sp,$sp,-32 /* f052fd8: afbf0014 */ sw $ra,0x14($sp) /* f052fdc: 01cf3821 */ addu $a3,$t6,$t7 -/* f052fe0: 0fc5b367 */ jal func0f16cd9c +/* f052fe0: 0fc5b367 */ jal getDifficulty /* f052fe4: afa7001c */ sw $a3,0x1c($sp) /* f052fe8: 8fa7001c */ lw $a3,0x1c($sp) /* f052fec: 3c03800a */ lui $v1,0x800a @@ -5297,7 +5297,7 @@ glabel ai0078 /* f053054: 27bdffe0 */ addiu $sp,$sp,-32 /* f053058: afbf0014 */ sw $ra,0x14($sp) /* f05305c: 01cf3821 */ addu $a3,$t6,$t7 -/* f053060: 0fc5b367 */ jal func0f16cd9c +/* f053060: 0fc5b367 */ jal getDifficulty /* f053064: afa7001c */ sw $a3,0x1c($sp) /* f053068: 8fa7001c */ lw $a3,0x1c($sp) /* f05306c: 3c03800a */ lui $v1,0x800a @@ -8608,7 +8608,7 @@ glabel ai00c8 /* f055950: 24010033 */ addiu $at,$zero,0x33 /* f055954: 1581000e */ bne $t4,$at,.L0f055990 /* f055958: 00000000 */ sll $zero,$zero,0x0 -/* f05595c: 0fc5b367 */ jal func0f16cd9c +/* f05595c: 0fc5b367 */ jal getDifficulty /* f055960: afa70020 */ sw $a3,0x20($sp) /* f055964: 24010002 */ addiu $at,$zero,0x2 /* f055968: 8fa5001c */ lw $a1,0x1c($sp) diff --git a/src/game/game_000000.c b/src/game/game_000000.c index 61292c807..a46577ddb 100644 --- a/src/game/game_000000.c +++ b/src/game/game_000000.c @@ -15029,7 +15029,7 @@ glabel func0f00d670 /* f00d77c: 24010033 */ addiu $at,$zero,0x33 /* f00d780: 57210007 */ bnel $t9,$at,.L0f00d7a0 /* f00d784: 24080018 */ addiu $t0,$zero,0x18 -/* f00d788: 0fc5b367 */ jal func0f16cd9c +/* f00d788: 0fc5b367 */ jal getDifficulty /* f00d78c: afa60030 */ sw $a2,0x30($sp) /* f00d790: 24010002 */ addiu $at,$zero,0x2 /* f00d794: 10410007 */ beq $v0,$at,.L0f00d7b4 @@ -16329,13 +16329,13 @@ glabel func0f00e980 /* f00ea38: 02589821 */ addu $s3,$s2,$t8 /* f00ea3c: 52600040 */ beqzl $s3,.L0f00eb40 /* f00ea40: 8fbf0034 */ lw $ra,0x34($sp) -/* f00ea44: 0fc5b367 */ jal func0f16cd9c +/* f00ea44: 0fc5b367 */ jal getDifficulty /* f00ea48: 24160001 */ addiu $s6,$zero,0x1 /* f00ea4c: 14400002 */ bnez $v0,.L0f00ea58 /* f00ea50: 00000000 */ sll $zero,$zero,0x0 /* f00ea54: 24160003 */ addiu $s6,$zero,0x3 .L0f00ea58: -/* f00ea58: 0fc5b367 */ jal func0f16cd9c +/* f00ea58: 0fc5b367 */ jal getDifficulty /* f00ea5c: 00000000 */ sll $zero,$zero,0x0 /* f00ea60: 24010001 */ addiu $at,$zero,0x1 /* f00ea64: 14410002 */ bne $v0,$at,.L0f00ea70 @@ -17034,7 +17034,7 @@ glabel func0f00f174 /* f00f440: 8defd040 */ lw $t7,-0x2fc0($t7) /* f00f444: 11e0050f */ beqz $t7,.L0f010884 /* f00f448: 00000000 */ sll $zero,$zero,0x0 -/* f00f44c: 0fc5b367 */ jal func0f16cd9c +/* f00f44c: 0fc5b367 */ jal getDifficulty /* f00f450: 00000000 */ sll $zero,$zero,0x0 /* f00f454: 3c0a800a */ lui $t2,0x800a /* f00f458: 254a9fc0 */ addiu $t2,$t2,-24640 @@ -17892,13 +17892,13 @@ glabel func0f00f174 /* f01010c: 24100001 */ addiu $s0,$zero,0x1 /* f010110: 0fc042a0 */ jal func0f010a80 /* f010114: 02402025 */ or $a0,$s2,$zero -/* f010118: 0fc5b367 */ jal func0f16cd9c +/* f010118: 0fc5b367 */ jal getDifficulty /* f01011c: 00000000 */ sll $zero,$zero,0x0 /* f010120: 14400002 */ bnez $v0,.L0f01012c /* f010124: 00000000 */ sll $zero,$zero,0x0 /* f010128: 24100003 */ addiu $s0,$zero,0x3 .L0f01012c: -/* f01012c: 0fc5b367 */ jal func0f16cd9c +/* f01012c: 0fc5b367 */ jal getDifficulty /* f010130: 00000000 */ sll $zero,$zero,0x0 /* f010134: 24010001 */ addiu $at,$zero,0x1 /* f010138: 54410003 */ bnel $v0,$at,.L0f010148 @@ -50854,7 +50854,7 @@ glabel func0f02d4fc /* f02d5a4: 304a0020 */ andi $t2,$v0,0x20 /* f02d5a8: 51400007 */ beqzl $t2,.L0f02d5c8 /* f02d5ac: 304b0040 */ andi $t3,$v0,0x40 -/* f02d5b0: 0fc5b367 */ jal func0f16cd9c +/* f02d5b0: 0fc5b367 */ jal getDifficulty /* f02d5b4: 00000000 */ sll $zero,$zero,0x0 /* f02d5b8: 50400013 */ beqzl $v0,.L0f02d608 /* f02d5bc: 3c0dffff */ lui $t5,0xffff @@ -50863,7 +50863,7 @@ glabel func0f02d4fc .L0f02d5c8: /* f02d5c8: 51600008 */ beqzl $t3,.L0f02d5ec /* f02d5cc: 304c0080 */ andi $t4,$v0,0x80 -/* f02d5d0: 0fc5b367 */ jal func0f16cd9c +/* f02d5d0: 0fc5b367 */ jal getDifficulty /* f02d5d4: 00000000 */ sll $zero,$zero,0x0 /* f02d5d8: 24010001 */ addiu $at,$zero,0x1 /* f02d5dc: 5041000a */ beql $v0,$at,.L0f02d608 @@ -50873,7 +50873,7 @@ glabel func0f02d4fc .L0f02d5ec: /* f02d5ec: 5180016b */ beqzl $t4,.L0f02db9c /* f02d5f0: 8fbf002c */ lw $ra,0x2c($sp) -/* f02d5f4: 0fc5b367 */ jal func0f16cd9c +/* f02d5f4: 0fc5b367 */ jal getDifficulty /* f02d5f8: 00000000 */ sll $zero,$zero,0x0 /* f02d5fc: 24010002 */ addiu $at,$zero,0x2 /* f02d600: 14410165 */ bne $v0,$at,.L0f02db98 @@ -55950,14 +55950,14 @@ glabel func0f0319a8 /* f031c60: 10000010 */ beqz $zero,.L0f031ca4 /* f031c64: afa000d4 */ sw $zero,0xd4($sp) .L0f031c68: -/* f031c68: 0fc5b367 */ jal func0f16cd9c +/* f031c68: 0fc5b367 */ jal getDifficulty /* f031c6c: 00000000 */ sll $zero,$zero,0x0 /* f031c70: 14400003 */ bnez $v0,.L0f031c80 /* f031c74: 24190002 */ addiu $t9,$zero,0x2 /* f031c78: 1000000a */ beqz $zero,.L0f031ca4 /* f031c7c: afb900d4 */ sw $t9,0xd4($sp) .L0f031c80: -/* f031c80: 0fc5b367 */ jal func0f16cd9c +/* f031c80: 0fc5b367 */ jal getDifficulty /* f031c84: 00000000 */ sll $zero,$zero,0x0 /* f031c88: 24010001 */ addiu $at,$zero,0x1 /* f031c8c: 14410004 */ bne $v0,$at,.L0f031ca0 @@ -75032,7 +75032,7 @@ glabel func0f042808 /* f042884: adac0008 */ sw $t4,0x8($t5) /* f042888: 8e0e0348 */ lw $t6,0x348($s0) /* f04288c: c4249194 */ lwc1 $f4,-0x6e6c($at) -/* f042890: 0fc5b367 */ jal func0f16cd9c +/* f042890: 0fc5b367 */ jal getDifficulty /* f042894: e5c4000c */ swc1 $f4,0xc($t6) /* f042898: 384f0002 */ xori $t7,$v0,0x2 /* f04289c: 2def0001 */ sltiu $t7,$t7,0x1 diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index 999468be8..059bb85a0 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -5,6 +5,7 @@ #include "game/game_0601b0.h" #include "library/library.h" #include "setup/setup_000000.h" +#include "setup/setup_020df0.h" GLOBAL_ASM( glabel func0f0601b0 @@ -60937,7 +60938,7 @@ glabel func0f095b64 .L0f095b88: /* f095b88: 0fc25594 */ jal func0f095650 /* f095b8c: 02002025 */ or $a0,$s0,$zero -/* f095b90: 0fc5b367 */ jal func0f16cd9c +/* f095b90: 0fc5b367 */ jal getDifficulty /* f095b94: 00408825 */ or $s1,$v0,$zero /* f095b98: 240e0001 */ addiu $t6,$zero,0x1 /* f095b9c: 004e7804 */ sllv $t7,$t6,$v0 @@ -61131,7 +61132,7 @@ glabel func0f095d64 /* f095e24: 00000000 */ sll $zero,$zero,0x0 /* f095e28: 0fc25594 */ jal func0f095650 /* f095e2c: ae820000 */ sw $v0,0x0($s4) -/* f095e30: 0fc5b367 */ jal func0f16cd9c +/* f095e30: 0fc5b367 */ jal getDifficulty /* f095e34: 00408025 */ or $s0,$v0,$zero /* f095e38: 240c0001 */ addiu $t4,$zero,0x1 /* f095e3c: 004c6804 */ sllv $t5,$t4,$v0 @@ -61184,7 +61185,7 @@ glabel func0f095d64 .L0f095ef0: /* f095ef0: 0fc25594 */ jal func0f095650 /* f095ef4: 02602025 */ or $a0,$s3,$zero -/* f095ef8: 0fc5b367 */ jal func0f16cd9c +/* f095ef8: 0fc5b367 */ jal getDifficulty /* f095efc: 00408025 */ or $s0,$v0,$zero /* f095f00: 240f0001 */ addiu $t7,$zero,0x1 /* f095f04: 004fc804 */ sllv $t9,$t7,$v0 @@ -100459,7 +100460,7 @@ glabel func0f0b872c /* f0b88e8: 8c6b0284 */ lw $t3,0x284($v1) /* f0b88ec: afa50018 */ sw $a1,0x18($sp) /* f0b88f0: afa70024 */ sw $a3,0x24($sp) -/* f0b88f4: 0fc5b367 */ jal func0f16cd9c +/* f0b88f4: 0fc5b367 */ jal getDifficulty /* f0b88f8: afa8001c */ sw $t0,0x1c($sp) /* f0b88fc: 3c03800a */ lui $v1,0x800a /* f0b8900: 28410002 */ slti $at,$v0,0x2 @@ -155648,7 +155649,7 @@ glabel func0f0ea290 /* f0ea2e4: 968e0002 */ lhu $t6,0x2($s4) /* f0ea2e8: 51c0002b */ beqzl $t6,.L0f0ea398 /* f0ea2ec: 26730001 */ addiu $s3,$s3,0x1 -/* f0ea2f0: 0fc5b367 */ jal func0f16cd9c +/* f0ea2f0: 0fc5b367 */ jal getDifficulty /* f0ea2f4: 00000000 */ sll $zero,$zero,0x0 /* f0ea2f8: 9699000e */ lhu $t9,0xe($s4) /* f0ea2fc: 240f0001 */ addiu $t7,$zero,0x1 @@ -164047,7 +164048,7 @@ glabel func0f0f1618 /* f0f1c08: 11a0000d */ beqz $t5,.L0f0f1c40 /* f0f1c0c: 00000000 */ sll $zero,$zero,0x0 /* f0f1c10: afa30034 */ sw $v1,0x34($sp) -/* f0f1c14: 0fc5b367 */ jal func0f16cd9c +/* f0f1c14: 0fc5b367 */ jal getDifficulty /* f0f1c18: afa40038 */ sw $a0,0x38($sp) /* f0f1c1c: 8fa30034 */ lw $v1,0x34($sp) /* f0f1c20: 240e0001 */ addiu $t6,$zero,0x1 @@ -186995,7 +186996,7 @@ glabel func0f105e80 /* f105f14: 24010034 */ addiu $at,$zero,0x34 /* f105f18: 15e10039 */ bne $t7,$at,.L0f106000 /* f105f1c: 00000000 */ sll $zero,$zero,0x0 -/* f105f20: 0fc5b367 */ jal func0f16cd9c +/* f105f20: 0fc5b367 */ jal getDifficulty /* f105f24: afa5004c */ sw $a1,0x4c($sp) /* f105f28: 28410002 */ slti $at,$v0,0x2 /* f105f2c: 14200034 */ bnez $at,.L0f106000 @@ -187349,13 +187350,13 @@ glabel menudialog001063e4 /* f106408: afa60030 */ sw $a2,0x30($sp) /* f10640c: 3c10800a */ lui $s0,0x800a /* f106410: 8e10d0b4 */ lw $s0,-0x2f4c($s0) -/* f106414: 0fc5b367 */ jal func0f16cd9c +/* f106414: 0fc5b367 */ jal getDifficulty /* f106418: 24110001 */ addiu $s1,$zero,0x1 /* f10641c: 14400002 */ bnez $v0,.L0f106428 /* f106420: 00000000 */ sll $zero,$zero,0x0 /* f106424: 24110003 */ addiu $s1,$zero,0x3 .L0f106428: -/* f106428: 0fc5b367 */ jal func0f16cd9c +/* f106428: 0fc5b367 */ jal getDifficulty /* f10642c: 00000000 */ sll $zero,$zero,0x0 /* f106430: 24010001 */ addiu $at,$zero,0x1 /* f106434: 14410002 */ bne $v0,$at,.L0f106440 @@ -302781,12 +302782,10 @@ glabel func0f16cd90 /* f16cd98: 8c424014 */ lw $v0,0x4014($v0) ); -GLOBAL_ASM( -glabel func0f16cd9c -/* f16cd9c: 3c028008 */ lui $v0,0x8008 -/* f16cda0: 03e00008 */ jr $ra -/* f16cda4: 8c424020 */ lw $v0,0x4020($v0) -); +u32 getDifficulty(void) +{ + return g_Difficulty; +} GLOBAL_ASM( glabel func0f16cda8 diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index e5f28ecfa..5b786292e 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -558,4 +558,6 @@ u32 menuhandler001a6d4c(u32, u32, u32); char *textGet(u16 textid); +u32 getDifficulty(void); + #endif diff --git a/src/include/setup/setup_020df0.h b/src/include/setup/setup_020df0.h index d2879e9cc..e6e8608a9 100644 --- a/src/include/setup/setup_020df0.h +++ b/src/include/setup/setup_020df0.h @@ -22,4 +22,6 @@ extern struct menu_dialog menudialog_mpchallengedetails; extern struct menu_dialog menudialog_mpscenario; extern struct menu_dialog menudialog_mpquickteam; +extern u32 g_Difficulty; + #endif diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index a9add8846..6b4d1b5bc 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -6081,7 +6081,9 @@ u32 var0002a030 = 0x00000000; u32 var0002a034 = 0x00000000; u32 var0002a038 = 0x3f800000; u32 var0002a03c = 0x00000001; -u32 var0002a040 = 0x00000000; + +u32 g_Difficulty = 0; + u32 var0002a044 = 0x00000000; u32 var0002a048 = 0x00008ca0; u32 var0002a04c = 0x0000000a;