From 7d65381a504436502fbf420c1919752541c87f51 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 29 Nov 2019 20:12:30 +1000 Subject: [PATCH] Decompile aiEndLevel --- src/game/chr/chraicommands.c | 54 +++++++++------------------- src/include/game/chr/chraicommands.h | 2 +- src/include/gvars/gvars.h | 9 +++-- src/setup/setup_000000.c | 2 +- 4 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 0396338e8..189bfae9b 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -6952,44 +6952,22 @@ bool ai00db(void) /** * @cmd 00dc */ -GLOBAL_ASM( -glabel ai00dc -/* f056c84: 27bdffe8 */ addiu $sp,$sp,-24 -/* f056c88: afbf0014 */ sw $ra,0x14($sp) -/* f056c8c: 0fc47bd2 */ jal func0f11ef48 -/* f056c90: 00000000 */ sll $zero,$zero,0x0 -/* f056c94: 10400012 */ beqz $v0,.L0f056ce0 -/* f056c98: 3c0e8006 */ lui $t6,0x8006 -/* f056c9c: 8dce24a4 */ lw $t6,0x24a4($t6) -/* f056ca0: 3c03800a */ lui $v1,%hi(g_Vars) -/* f056ca4: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f056ca8: 51c00006 */ beqzl $t6,.L0f056cc4 -/* f056cac: 806f04d3 */ lb $t7,0x4d3($v1) -/* f056cb0: 0c003a57 */ jal func0000e95c -/* f056cb4: 2404005a */ addiu $a0,$zero,0x5a -/* f056cb8: 10000009 */ beqz $zero,.L0f056ce0 -/* f056cbc: 00000000 */ sll $zero,$zero,0x0 -/* f056cc0: 806f04d3 */ lb $t7,0x4d3($v1) -.L0f056cc4: -/* f056cc4: 24180001 */ addiu $t8,$zero,0x1 -/* f056cc8: 11e00003 */ beqz $t7,.L0f056cd8 -/* f056ccc: 00000000 */ sll $zero,$zero,0x0 -/* f056cd0: 10000003 */ beqz $zero,.L0f056ce0 -/* f056cd4: a07804d6 */ sb $t8,0x4d6($v1) -.L0f056cd8: -/* f056cd8: 0c003a64 */ jal func0000e990 -/* f056cdc: 00000000 */ sll $zero,$zero,0x0 -.L0f056ce0: -/* f056ce0: 3c03800a */ lui $v1,%hi(g_Vars) -/* f056ce4: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f056ce8: 8c790438 */ lw $t9,0x438($v1) -/* f056cec: 8fbf0014 */ lw $ra,0x14($sp) -/* f056cf0: 27bd0018 */ addiu $sp,$sp,0x18 -/* f056cf4: 27280002 */ addiu $t0,$t9,0x2 -/* f056cf8: ac680438 */ sw $t0,0x438($v1) -/* f056cfc: 03e00008 */ jr $ra -/* f056d00: 00001025 */ or $v0,$zero,$zero -); +bool aiEndLevel(void) +{ + if (func0f11ef48()) { + if (var800624a4) { + func0000e95c(90); + } else if (g_Vars.unk0004d3) { + g_Vars.unk0004d6 = 1; + } else { + func0000e990(); + } + } + + g_Vars.aioffset += 2; + + return false; +} /** * @cmd 00dd diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index dcb08368d..5f594d3d7 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -222,7 +222,7 @@ /*0x00d9*/ bool ai00d9(void); /*0x00da*/ bool aiSetObjImage(void); /*0x00db*/ bool ai00db(void); -/*0x00dc*/ bool ai00dc(void); +/*0x00dc*/ bool aiEndLevel(void); /*0x00dd*/ bool ai00dd(void); /*0x00de*/ bool ai00de(void); /*0x00df*/ bool ai00df(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 4d6376e16..cceaf4129 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -192,8 +192,13 @@ struct g_vars { /*0004c4*/ u32 unk0004c4; /*0004c8*/ u32 unk0004c8; /*0004cc*/ s32 in_cutscene; - /*0004d0*/ u32 unk0004d0; - /*0004d4*/ u32 unk0004d4; + /*0004d0*/ u8 unk0004d0; + /*0004d1*/ u8 unk0004d1; + /*0004d2*/ u8 unk0004d2; + /*0004d3*/ s8 unk0004d3; + /*0004d4*/ u8 unk0004d4; + /*0004d5*/ u8 unk0004d5; + /*0004d6*/ s8 unk0004d6; /*0004d8*/ u32 unk0004d8; /*0004dc*/ u32 unk0004dc; /*0004e0*/ u8 unk0004e0; diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index 1f3bdddac..bc83dde3c 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14352,7 +14352,7 @@ bool (*g_CommandPointers[])(void) = { /*0x00d9*/ ai00d9, /*0x00da*/ aiSetObjImage, /*0x00db*/ ai00db, - /*0x00dc*/ ai00dc, + /*0x00dc*/ aiEndLevel, /*0x00dd*/ ai00dd, /*0x00de*/ ai00de, /*0x00df*/ ai00df,