Decompile aiSetLights

This commit is contained in:
Ryan Dwyer 2019-11-29 23:49:05 +10:00
parent 50942f2ea3
commit 121b82e0ac
5 changed files with 30 additions and 58 deletions

View File

@ -2,6 +2,7 @@
#include "constants.h"
#include "gvars/gvars.h"
#include "game/chr/chr.h"
#include "game/game_000920.h"
#include "game/game_066310.h"
#include "game/game_0b28d0.h"
#include "game/game_165670.h"
@ -8427,58 +8428,29 @@ bool ai0101(void)
/**
* @cmd 0102
*/
GLOBAL_ASM(
glabel ai0102
/* f0589e8: 3c06800a */ lui $a2,%hi(g_Vars)
/* f0589ec: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars)
/* f0589f0: 8cce0434 */ lw $t6,0x434($a2)
/* f0589f4: 8ccf0438 */ lw $t7,0x438($a2)
/* f0589f8: 27bdffd8 */ addiu $sp,$sp,-40
/* f0589fc: afbf001c */ sw $ra,0x1c($sp)
/* f058a00: 01cf1821 */ addu $v1,$t6,$t7
/* f058a04: 90780002 */ lbu $t8,0x2($v1)
/* f058a08: 90680003 */ lbu $t0,0x3($v1)
/* f058a0c: afa30024 */ sw $v1,0x24($sp)
/* f058a10: 0018ca00 */ sll $t9,$t8,0x8
/* f058a14: 03281025 */ or $v0,$t9,$t0
/* f058a18: 3045ffff */ andi $a1,$v0,0xffff
/* f058a1c: 0fc12574 */ jal func0f0495d0
/* f058a20: 8cc40424 */ lw $a0,0x424($a2)
/* f058a24: 8fa30024 */ lw $v1,0x24($sp)
/* f058a28: 04400014 */ bltz $v0,.L0f058a7c
/* f058a2c: 00402025 */ or $a0,$v0,$zero
/* f058a30: 90650004 */ lbu $a1,0x4($v1)
/* f058a34: 24010006 */ addiu $at,$zero,0x6
/* f058a38: 10a10007 */ beq $a1,$at,.L0f058a58
/* f058a3c: 24010007 */ addiu $at,$zero,0x7
/* f058a40: 54a1000a */ bnel $a1,$at,.L0f058a6c
/* f058a44: 906a0007 */ lbu $t2,0x7($v1)
/* f058a48: 0fc00ad6 */ jal func0f002b58
/* f058a4c: 00002825 */ or $a1,$zero,$zero
/* f058a50: 1000000a */ beqz $zero,.L0f058a7c
/* f058a54: 00000000 */ sll $zero,$zero,0x0
.L0f058a58:
/* f058a58: 0fc00ad6 */ jal func0f002b58
/* f058a5c: 24050001 */ addiu $a1,$zero,0x1
/* f058a60: 10000006 */ beqz $zero,.L0f058a7c
/* f058a64: 00000000 */ sll $zero,$zero,0x0
/* f058a68: 906a0007 */ lbu $t2,0x7($v1)
.L0f058a6c:
/* f058a6c: 90660005 */ lbu $a2,0x5($v1)
/* f058a70: 90670006 */ lbu $a3,0x6($v1)
/* f058a74: 0fc00b0a */ jal func0f002c28
/* f058a78: afaa0010 */ sw $t2,0x10($sp)
.L0f058a7c:
/* f058a7c: 3c03800a */ lui $v1,%hi(g_Vars)
/* f058a80: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
/* f058a84: 8c6b0438 */ lw $t3,0x438($v1)
/* f058a88: 8fbf001c */ lw $ra,0x1c($sp)
/* f058a8c: 27bd0028 */ addiu $sp,$sp,0x28
/* f058a90: 256c000b */ addiu $t4,$t3,0xb
/* f058a94: ac6c0438 */ sw $t4,0x438($v1)
/* f058a98: 03e00008 */ jr $ra
/* f058a9c: 00001025 */ or $v0,$zero,$zero
);
bool aiSetLights(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
u16 room_id = cmd[3] | (cmd[2] << 8);
s32 thing = func0f0495d0(g_Vars.chrdata, room_id);
if (thing >= 0) {
switch (cmd[4]) {
case 7:
func0f002b58(thing, false);
break;
case 6:
func0f002b58(thing, true);
break;
default:
func0f002c28(thing, cmd[4], cmd[5], cmd[6], cmd[7]);
}
}
g_Vars.aioffset += 11;
return false;
}
/**
* @cmd 0103

View File

@ -1062,13 +1062,13 @@
value, \
label,
#define set_lights_state(room, u1, u2, u3, u4) \
#define set_lights_state(room, operation, u1, u2, u3) \
mkshort(0x0102), \
mkshort(room), \
operation, \
u1, \
u2, \
u3, \
u4, \
0x00, \
0x00, \
0x00,

View File

@ -258,7 +258,7 @@
/*0x00ff*/ bool ai00ff(void);
/*0x0100*/ bool ai0100(void);
/*0x0101*/ bool ai0101(void);
/*0x0102*/ bool ai0102(void);
/*0x0102*/ bool aiSetLights(void);
/*0x0103*/ bool ai0103(void);
/*0x0104*/ bool ai0104(void);
/*0x0105*/ bool ai0105(void);

View File

@ -31,8 +31,8 @@ u32 func0f0023b8(void);
u32 func0f00259c(void);
u32 func0f002844(void);
u32 func0f002a98(void);
u32 func0f002b58(void);
u32 func0f002c28(void);
void func0f002b58(s32 roomthing, bool enable);
void func0f002c28(s32 roomthing, s32 operation, s32 arg2, s32 arg3, s32 arg4);
u32 func0f002ef8(void);
u32 func0f0033b0(void);
u32 func0f003444(void);

View File

@ -14390,7 +14390,7 @@ bool (*g_CommandPointers[])(void) = {
/*0x00ff*/ ai00ff,
/*0x0100*/ ai0100,
/*0x0101*/ ai0101,
/*0x0102*/ ai0102,
/*0x0102*/ aiSetLights,
/*0x0103*/ ai0103,
/*0x0104*/ ai0104,
/*0x0105*/ ai0105,