From e259b6d51377d516ffa080e86c14837276b7a9a7 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 19 Oct 2019 13:52:42 +1000 Subject: [PATCH] Decompile aiIfMoraleLessThanRandom --- src/game/chr/chraicommands.c | 42 ++++++++-------------------- src/include/commands.h | 4 +++ src/include/game/chr/chraicommands.h | 2 +- src/setup/setup_000000.c | 2 +- 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index eb395db3c..9855a5207 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -5140,36 +5140,18 @@ bool aiIfMoraleLessThan(void) /** * @cmd 0089 */ -GLOBAL_ASM( -glabel ai0089 -/* f0534a0: 3c03800a */ lui $v1,0x800a -/* f0534a4: 24639fc0 */ addiu $v1,$v1,-24640 -/* f0534a8: 8c620424 */ lw $v0,0x424($v1) -/* f0534ac: 27bdffe8 */ addiu $sp,$sp,-24 -/* f0534b0: afbf0014 */ sw $ra,0x14($sp) -/* f0534b4: 904f0124 */ lbu $t7,0x124($v0) -/* f0534b8: 904e0112 */ lbu $t6,0x112($v0) -/* f0534bc: 8c640434 */ lw $a0,0x434($v1) -/* f0534c0: 8c650438 */ lw $a1,0x438($v1) -/* f0534c4: 01cf082a */ slt $at,$t6,$t7 -/* f0534c8: 10200007 */ beqz $at,.L0f0534e8 -/* f0534cc: 00853821 */ addu $a3,$a0,$a1 -/* f0534d0: 0fc13583 */ jal chraiGoToLabel -/* f0534d4: 90e60002 */ lbu $a2,0x2($a3) -/* f0534d8: 3c03800a */ lui $v1,0x800a -/* f0534dc: 24639fc0 */ addiu $v1,$v1,-24640 -/* f0534e0: 10000003 */ beqz $zero,.L0f0534f0 -/* f0534e4: ac620438 */ sw $v0,0x438($v1) -.L0f0534e8: -/* f0534e8: 24b80003 */ addiu $t8,$a1,0x3 -/* f0534ec: ac780438 */ sw $t8,0x438($v1) -.L0f0534f0: -/* f0534f0: 8fbf0014 */ lw $ra,0x14($sp) -/* f0534f4: 27bd0018 */ addiu $sp,$sp,0x18 -/* f0534f8: 00001025 */ or $v0,$zero,$zero -/* f0534fc: 03e00008 */ jr $ra -/* f053500: 00000000 */ sll $zero,$zero,0x0 -); +bool aiIfMoraleLessThanRandom(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + + if (g_Vars.chrdata->morale < g_Vars.chrdata->random) { + g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]); + } else { + g_Vars.aioffset += 3; + } + + return false; +} /** * @cmd 008a diff --git a/src/include/commands.h b/src/include/commands.h index f41f687d8..a8a5c455f 100644 --- a/src/include/commands.h +++ b/src/include/commands.h @@ -572,6 +572,10 @@ value, \ label, +#define if_morale_lt_random(label) \ + mkshort(0x0089), \ + label, + #define set_alertness(value) \ mkshort(0x008a), \ value, diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index a30768d53..05f016724 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -139,7 +139,7 @@ /*0x0086*/ bool aiChrAddMorale(void); /*0x0087*/ bool aiSubtractMorale(void); /*0x0088*/ bool aiIfMoraleLessThan(void); -/*0x0089*/ bool ai0089(void); +/*0x0089*/ bool aiIfMoraleLessThanRandom(void); /*0x008a*/ bool ai008a(void); /*0x008b*/ bool ai008b(void); /*0x008c*/ bool ai008c(void); diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index 6e5b5c716..9a6105322 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14090,7 +14090,7 @@ bool (*command_pointers[])(void) = { /*0x0086*/ aiChrAddMorale, /*0x0087*/ aiSubtractMorale, /*0x0088*/ aiIfMoraleLessThan, - /*0x0089*/ ai0089, + /*0x0089*/ aiIfMoraleLessThanRandom, /*0x008a*/ ai008a, /*0x008b*/ ai008b, /*0x008c*/ ai008c,