From 0bcd98f0d53f846d374bce6147add08fbd7d3a79 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 6 Aug 2020 22:29:06 +1000 Subject: [PATCH] Decompile frExecuteMainScript --- src/game/training.c | 166 +++++++++++--------------------------------- 1 file changed, 39 insertions(+), 127 deletions(-) diff --git a/src/game/training.c b/src/game/training.c index c8382b293..b9f5a875b 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -1117,134 +1117,46 @@ char *frGetInstructionalText(u32 index) return langGet(textid); } -GLOBAL_ASM( -glabel frExecuteMainScript -/* f19df58: 3c07800b */ lui $a3,%hi(g_FiringRangeData) -/* f19df5c: 24e7cd20 */ addiu $a3,$a3,%lo(g_FiringRangeData) -/* f19df60: 90ee0468 */ lbu $t6,0x468($a3) -/* f19df64: 27bdffe8 */ addiu $sp,$sp,-24 -/* f19df68: afbf0014 */ sw $ra,0x14($sp) -/* f19df6c: 11c00044 */ beqz $t6,.L0f19e080 -/* f19df70: 3c03800a */ lui $v1,%hi(g_Vars) -/* f19df74: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f19df78: 8c6f0034 */ lw $t7,0x34($v1) -/* f19df7c: 51e00041 */ beqzl $t7,.L0f19e084 -/* f19df80: 8fbf0014 */ lw $ra,0x14($sp) -/* f19df84: 8ce2046c */ lw $v0,0x46c($a3) -/* f19df88: 3c188009 */ lui $t8,%hi(g_FrOffsets) -/* f19df8c: 3c0b8009 */ lui $t3,%hi(g_FrRomData) -/* f19df90: 54400037 */ bnezl $v0,.L0f19e070 -/* f19df94: 8c6a0038 */ lw $t2,0x38($v1) -/* f19df98: 90e30466 */ lbu $v1,0x466($a3) -/* f19df9c: 8f188800 */ lw $t8,%lo(g_FrOffsets)($t8) -/* f19dfa0: 8d6b8810 */ lw $t3,%lo(g_FrRomData)($t3) -/* f19dfa4: 24630071 */ addiu $v1,$v1,0x71 -/* f19dfa8: 0003c840 */ sll $t9,$v1,0x1 -/* f19dfac: 03194821 */ addu $t1,$t8,$t9 -/* f19dfb0: 952a0000 */ lhu $t2,0x0($t1) -/* f19dfb4: 90e80467 */ lbu $t0,0x467($a3) -/* f19dfb8: 24010010 */ addiu $at,$zero,0x10 -/* f19dfbc: 014b2021 */ addu $a0,$t2,$t3 -/* f19dfc0: 00883021 */ addu $a2,$a0,$t0 -/* f19dfc4: 90c20000 */ lbu $v0,0x0($a2) -/* f19dfc8: 1041000f */ beq $v0,$at,.L0f19e008 -/* f19dfcc: 24010011 */ addiu $at,$zero,0x11 -/* f19dfd0: 10410020 */ beq $v0,$at,.L0f19e054 -/* f19dfd4: 24010012 */ addiu $at,$zero,0x12 -/* f19dfd8: 10410016 */ beq $v0,$at,.L0f19e034 -/* f19dfdc: 24010013 */ addiu $at,$zero,0x13 -/* f19dfe0: 10410007 */ beq $v0,$at,.L0f19e000 -/* f19dfe4: 240100fb */ addiu $at,$zero,0xfb -/* f19dfe8: 10410005 */ beq $v0,$at,.L0f19e000 -/* f19dfec: 240100fc */ addiu $at,$zero,0xfc -/* f19dff0: 10410003 */ beq $v0,$at,.L0f19e000 -/* f19dff4: 240100fd */ addiu $at,$zero,0xfd -/* f19dff8: 54410022 */ bnel $v0,$at,.L0f19e084 -/* f19dffc: 8fbf0014 */ lw $ra,0x14($sp) -.L0f19e000: -/* f19e000: 1000001f */ b .L0f19e080 -/* f19e004: a0e00468 */ sb $zero,0x468($a3) -.L0f19e008: -/* f19e008: 0fc677c6 */ jal frGetInstructionalText -/* f19e00c: 90c40001 */ lbu $a0,0x1($a2) -/* f19e010: 00402025 */ or $a0,$v0,$zero -/* f19e014: 0fc377c7 */ jal hudmsgCreateViaPreset -/* f19e018: 2405000a */ addiu $a1,$zero,0xa -/* f19e01c: 3c07800b */ lui $a3,%hi(g_FiringRangeData) -/* f19e020: 24e7cd20 */ addiu $a3,$a3,%lo(g_FiringRangeData) -/* f19e024: 90ec0467 */ lbu $t4,0x467($a3) -/* f19e028: 258d0002 */ addiu $t5,$t4,0x2 -/* f19e02c: 10000014 */ b .L0f19e080 -/* f19e030: a0ed0467 */ sb $t5,0x467($a3) -.L0f19e034: -/* f19e034: 90ce0001 */ lbu $t6,0x1($a2) -/* f19e038: 25180002 */ addiu $t8,$t0,0x2 -/* f19e03c: a0f80467 */ sb $t8,0x467($a3) -/* f19e040: 000e7900 */ sll $t7,$t6,0x4 -/* f19e044: 01ee7823 */ subu $t7,$t7,$t6 -/* f19e048: 000f7880 */ sll $t7,$t7,0x2 -/* f19e04c: 1000000c */ b .L0f19e080 -/* f19e050: acef046c */ sw $t7,0x46c($a3) -.L0f19e054: -/* f19e054: 94f90458 */ lhu $t9,0x458($a3) -/* f19e058: 25090001 */ addiu $t1,$t0,0x1 -/* f19e05c: 53200009 */ beqzl $t9,.L0f19e084 -/* f19e060: 8fbf0014 */ lw $ra,0x14($sp) -/* f19e064: 10000006 */ b .L0f19e080 -/* f19e068: a0e90467 */ sb $t1,0x467($a3) -/* f19e06c: 8c6a0038 */ lw $t2,0x38($v1) -.L0f19e070: -/* f19e070: 004a5823 */ subu $t3,$v0,$t2 -/* f19e074: 1d600002 */ bgtz $t3,.L0f19e080 -/* f19e078: aceb046c */ sw $t3,0x46c($a3) -/* f19e07c: ace0046c */ sw $zero,0x46c($a3) -.L0f19e080: -/* f19e080: 8fbf0014 */ lw $ra,0x14($sp) -.L0f19e084: -/* f19e084: 27bd0018 */ addiu $sp,$sp,0x18 -/* f19e088: 03e00008 */ jr $ra -/* f19e08c: 00000000 */ nop -); +void frExecuteMainScript(void) +{ + if (!g_FiringRangeData.scriptenabled || g_Vars.lvupdate240 == 0) { + return; + } -//void frExecuteMainScript(void) -//{ -// if (!g_FiringRangeData.scriptenabled || g_Vars.lvupdate240 == 0) { -// return; -// } -// -// if (g_FiringRangeData.scriptsleep == 0) { -// s32 offset = g_FiringRangeData.unk466 + 0x71; -// u8 *cmd = g_FrRomData + g_FrOffsets[offset] + g_FiringRangeData.scriptoffset; -// -// switch (cmd[0]) { -// case FRCMD_13: -// case FRCMD_FB: -// case FRCMD_FC: -// case FRCMD_FD: -// g_FiringRangeData.scriptenabled = false; -// break; -// case FRCMD_HUDMSG: -// hudmsgCreateViaPreset(frGetInstructionalText(cmd[1]), HUDMSGTYPE_TRAINING); -// g_FiringRangeData.scriptoffset += 2; -// break; -// case FRCMD_WAITSECONDS: -// g_FiringRangeData.scriptsleep = cmd[1] * 60; -// g_FiringRangeData.scriptoffset += 2; -// break; -// case FRCMD_WAITUNTILSHOOT: -// if (g_FiringRangeData.numshots) { -// g_FiringRangeData.scriptoffset++; -// } -// break; -// } -// } else { -// g_FiringRangeData.scriptsleep -= g_Vars.lvupdate240_60; -// -// if (g_FiringRangeData.scriptsleep <= 0) { -// g_FiringRangeData.scriptsleep = 0; -// } -// } -//} + if (g_FiringRangeData.scriptsleep == 0) { + s32 index = g_FiringRangeData.unk466 + 0x71; + u8 *script = &g_FrRomData[g_FrOffsets[index]]; + u32 offset = g_FiringRangeData.scriptoffset; + + switch (script[offset]) { + case FRCMD_13: + case FRCMD_FB: + case FRCMD_FC: + case FRCMD_FD: + g_FiringRangeData.scriptenabled = false; + break; + case FRCMD_HUDMSG: + hudmsgCreateViaPreset(frGetInstructionalText(script[offset + 1]), HUDMSGTYPE_TRAINING); + g_FiringRangeData.scriptoffset += 2; + break; + case FRCMD_WAITSECONDS: + g_FiringRangeData.scriptsleep = script[offset + 1] * 60; + g_FiringRangeData.scriptoffset += 2; + break; + case FRCMD_WAITUNTILSHOOT: + if (g_FiringRangeData.numshots) { + g_FiringRangeData.scriptoffset++; + } + break; + } + } else { + g_FiringRangeData.scriptsleep -= g_Vars.lvupdate240_60; + + if (g_FiringRangeData.scriptsleep <= 0) { + g_FiringRangeData.scriptsleep = 0; + } + } +} GLOBAL_ASM( glabel frExecuteTargetScript