Decompile chrGoToTarget

This commit is contained in:
Ryan Dwyer
2019-12-18 18:14:56 +10:00
parent b25e80c230
commit d8bbbb02a4
3 changed files with 20 additions and 46 deletions
+16 -42
View File
@@ -33253,48 +33253,22 @@ bool chrFadeOut(struct chrdata *chr)
return true;
}
GLOBAL_ASM(
glabel func0f03aa38
/* f03aa38: 27bdffe8 */ addiu $sp,$sp,-24
/* f03aa3c: afbf0014 */ sw $ra,0x14($sp)
/* f03aa40: afa5001c */ sw $a1,0x1c($sp)
/* f03aa44: 0fc0e686 */ jal func0f039a18
/* f03aa48: afa40018 */ sw $a0,0x18($sp)
/* f03aa4c: 10400019 */ beqz $v0,.L0f03aab4
/* f03aa50: 8fa40018 */ lw $a0,0x18($sp)
/* f03aa54: 3c0e8006 */ lui $t6,0x8006
/* f03aa58: 8dce2cbc */ lw $t6,0x2cbc($t6)
/* f03aa5c: 29c10009 */ slti $at,$t6,0x9
/* f03aa60: 14200009 */ bnez $at,.L0f03aa88
/* f03aa64: 00000000 */ sll $zero,$zero,0x0
/* f03aa68: 8c8f0014 */ lw $t7,0x14($a0)
/* f03aa6c: 000fc240 */ sll $t8,$t7,0x9
/* f03aa70: 07010005 */ bgez $t8,.L0f03aa88
/* f03aa74: 00000000 */ sll $zero,$zero,0x0
/* f03aa78: 8c990114 */ lw $t9,0x114($a0)
/* f03aa7c: 00194340 */ sll $t0,$t9,0xd
/* f03aa80: 0503000d */ bgezl $t0,.L0f03aab8
/* f03aa84: 00001025 */ or $v0,$zero,$zero
.L0f03aa88:
/* f03aa88: 0fc0a221 */ jal chrGetTargetPosition
/* f03aa8c: afa40018 */ sw $a0,0x18($sp)
/* f03aa90: 8fa40018 */ lw $a0,0x18($sp)
/* f03aa94: 24450008 */ addiu $a1,$v0,0x8
/* f03aa98: 24460028 */ addiu $a2,$v0,0x28
/* f03aa9c: 0fc0e10f */ jal func0f03843c
/* f03aaa0: 8fa7001c */ lw $a3,0x1c($sp)
/* f03aaa4: 50400004 */ beqzl $v0,.L0f03aab8
/* f03aaa8: 00001025 */ or $v0,$zero,$zero
/* f03aaac: 10000002 */ beqz $zero,.L0f03aab8
/* f03aab0: 24020001 */ addiu $v0,$zero,0x1
.L0f03aab4:
/* f03aab4: 00001025 */ or $v0,$zero,$zero
.L0f03aab8:
/* f03aab8: 8fbf0014 */ lw $ra,0x14($sp)
/* f03aabc: 27bd0018 */ addiu $sp,$sp,0x18
/* f03aac0: 03e00008 */ jr $ra
/* f03aac4: 00000000 */ sll $zero,$zero,0x0
);
bool chrGoToTarget(struct chrdata *chr, u32 speed)
{
if (func0f039a18(chr)) {
if (var80062cbc <= 8 ||
(chr->hidden & CHRFLAG2_00400000) == 0 ||
(chr->flags & CHRFLAG0_CAN_RUN_FOR_ALARM)) {
struct position *pos = chrGetTargetPosition(chr);
if (func0f03843c(chr, &pos->coord, &pos->room, speed)) {
return true;
}
}
}
return false;
}
bool chrGoToChr(struct chrdata *chr, u32 dst_chrnum, u32 speed)
{
+3 -3
View File
@@ -1306,7 +1306,7 @@ bool ai002a(void)
*/
bool ai002b(void)
{
if (func0f03aa38(g_Vars.chrdata, 1)) {
if (chrGoToTarget(g_Vars.chrdata, 1)) {
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
} else {
@@ -1321,7 +1321,7 @@ bool ai002b(void)
*/
bool ai002c(void)
{
if (func0f03aa38(g_Vars.chrdata, 0)) {
if (chrGoToTarget(g_Vars.chrdata, 0)) {
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
} else {
@@ -1336,7 +1336,7 @@ bool ai002c(void)
*/
bool ai002d(void)
{
if (func0f03aa38(g_Vars.chrdata, 2)) {
if (chrGoToTarget(g_Vars.chrdata, 2)) {
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
} else {
+1 -1
View File
@@ -251,7 +251,7 @@ u32 func0f03a894(struct chrdata *chr, s32 pad, s32 arg2);
u32 func0f03a968(struct chrdata *chr);
u32 func0f03a9b8(struct chrdata *chr);
bool chrFadeOut(struct chrdata *chr);
u32 func0f03aa38(struct chrdata *chr, u32 arg1);
bool chrGoToTarget(struct chrdata *chr, u32 speed);
bool chrGoToChr(struct chrdata *chr, u32 dst_chrnum, u32 speed);
bool func0f03ab74(struct chrdata *chr, struct position *pos, s32 arg2);
u32 func0f03abd0(void);