Decompile aiIfChrTeleportFullWhite

This commit is contained in:
Ryan Dwyer 2019-12-11 17:12:08 +10:00
parent 401406abe8
commit f6650ab673
8 changed files with 87 additions and 105 deletions

View File

@ -13,8 +13,12 @@
#include "setup/setup_020df0.h"
#include "types.h"
#include "game/chr/chraicommands.h"
#include "library/library_0e9d0.h"
#include "library/library_12dc0.h"
#include "library/library_16110.h"
#include "library/library_317f0.h"
#include "library/library_481e0.h"
#include "library/library_48830.h"
const u32 var7f1a9c30[] = {0x40c907a9};
const u32 var7f1a9c34[] = {0x40c907a9};
@ -111,7 +115,8 @@ const u32 var7f1a9d9c[] = {0x453b8000};
const u32 var7f1a9da0[] = {0x453b8000};
const u32 var7f1a9da4[] = {0x3dcccccd};
const u32 var7f1a9da8[] = {0x3ecccccd};
const u32 var7f1a9dac[] = {0x3ecccccd};
const float var7f1a9dac[] = {0.4};
/**
* @cmd 0000
@ -14267,100 +14272,43 @@ glabel ai01bf
/**
* @cmd 01c0
*/
GLOBAL_ASM(
glabel ai01c0
/* f05ee08: 27bdffb8 */ addiu $sp,$sp,-72
/* f05ee0c: afb00028 */ sw $s0,0x28($sp)
/* f05ee10: 3c10800a */ lui $s0,%hi(g_Vars)
/* f05ee14: 26109fc0 */ addiu $s0,$s0,%lo(g_Vars)
/* f05ee18: 8e0e0434 */ lw $t6,0x434($s0)
/* f05ee1c: 8e0f0438 */ lw $t7,0x438($s0)
/* f05ee20: afbf002c */ sw $ra,0x2c($sp)
/* f05ee24: 8e040424 */ lw $a0,0x424($s0)
/* f05ee28: 01cf1021 */ addu $v0,$t6,$t7
/* f05ee2c: 90450003 */ lbu $a1,0x3($v0)
/* f05ee30: 0fc126d1 */ jal chrFindById
/* f05ee34: afa20044 */ sw $v0,0x44($sp)
/* f05ee38: 8e18028c */ lw $t8,0x28c($s0)
/* f05ee3c: 1040000c */ beqz $v0,.L0f05ee70
/* f05ee40: afb8003c */ sw $t8,0x3c($sp)
/* f05ee44: 8c43001c */ lw $v1,0x1c($v0)
/* f05ee48: 5060000a */ beqzl $v1,.L0f05ee74
/* f05ee4c: 8e080284 */ lw $t0,0x284($s0)
/* f05ee50: 90790000 */ lbu $t9,0x0($v1)
/* f05ee54: 24010006 */ addiu $at,$zero,0x6
/* f05ee58: 57210006 */ bnel $t9,$at,.L0f05ee74
/* f05ee5c: 8e080284 */ lw $t0,0x284($s0)
/* f05ee60: 0fc4a25f */ jal posGetPlayerNum
/* f05ee64: 8c44001c */ lw $a0,0x1c($v0)
/* f05ee68: 0fc4a24b */ jal setCurrentPlayerNum
/* f05ee6c: 00402025 */ or $a0,$v0,$zero
.L0f05ee70:
/* f05ee70: 8e080284 */ lw $t0,0x284($s0)
.L0f05ee74:
/* f05ee74: 91091bfc */ lbu $t1,0x1bfc($t0)
/* f05ee78: 29210003 */ slti $at,$t1,0x3
/* f05ee7c: 10200005 */ beqz $at,.L0f05ee94
/* f05ee80: 00000000 */ sll $zero,$zero,0x0
/* f05ee84: 8e0a0438 */ lw $t2,0x438($s0)
/* f05ee88: 254b0004 */ addiu $t3,$t2,0x4
/* f05ee8c: 1000002d */ beqz $zero,.L0f05ef44
/* f05ee90: ae0b0438 */ sw $t3,0x438($s0)
.L0f05ee94:
/* f05ee94: 3c017f1b */ lui $at,%hi(var7f1a9dac)
/* f05ee98: c4249dac */ lwc1 $f4,%lo(var7f1a9dac)($at)
/* f05ee9c: 00002025 */ or $a0,$zero,$zero
/* f05eea0: 0c012230 */ jal func000488c0
/* f05eea4: e7a40034 */ swc1 $f4,0x34($sp)
/* f05eea8: 3c048009 */ lui $a0,%hi(var800915e0)
/* f05eeac: afa20038 */ sw $v0,0x38($sp)
/* f05eeb0: 0c012230 */ jal func000488c0
/* f05eeb4: 248415e0 */ addiu $a0,$a0,%lo(var800915e0)
/* f05eeb8: 00002025 */ or $a0,$zero,$zero
/* f05eebc: 0c01210c */ jal func00048430
/* f05eec0: 24450001 */ addiu $a1,$v0,0x1
/* f05eec4: 3c01bf80 */ lui $at,0xbf80
/* f05eec8: 44813000 */ mtc1 $at,$f6
/* f05eecc: 3c048009 */ lui $a0,0x8009
/* f05eed0: 240cffff */ addiu $t4,$zero,-1
/* f05eed4: 240dffff */ addiu $t5,$zero,-1
/* f05eed8: 240effff */ addiu $t6,$zero,-1
/* f05eedc: afae001c */ sw $t6,0x1c($sp)
/* f05eee0: afad0018 */ sw $t5,0x18($sp)
/* f05eee4: afac0010 */ sw $t4,0x10($sp)
/* f05eee8: 8c845200 */ lw $a0,0x5200($a0)
/* f05eeec: 24058055 */ addiu $a1,$zero,-32683
/* f05eef0: 00003025 */ or $a2,$zero,$zero
/* f05eef4: 2407ffff */ addiu $a3,$zero,-1
/* f05eef8: 0c004241 */ jal func00010904
/* f05eefc: e7a60014 */ swc1 $f6,0x14($sp)
/* f05ef00: 10400004 */ beqz $v0,.L0f05ef14
/* f05ef04: 00402025 */ or $a0,$v0,$zero
/* f05ef08: 24050010 */ addiu $a1,$zero,0x10
/* f05ef0c: 0c00cf94 */ jal func00033e50
/* f05ef10: 8fa60034 */ lw $a2,0x34($sp)
.L0f05ef14:
/* f05ef14: 00002025 */ or $a0,$zero,$zero
/* f05ef18: 0c01210c */ jal func00048430
/* f05ef1c: 8fa50038 */ lw $a1,0x38($sp)
/* f05ef20: 8e180284 */ lw $t8,0x284($s0)
/* f05ef24: 240f0003 */ addiu $t7,$zero,0x3
/* f05ef28: a30f1bfc */ sb $t7,0x1bfc($t8)
/* f05ef2c: 8fb90044 */ lw $t9,0x44($sp)
/* f05ef30: 8e050438 */ lw $a1,0x438($s0)
/* f05ef34: 8e040434 */ lw $a0,0x434($s0)
/* f05ef38: 0fc13583 */ jal chraiGoToLabel
/* f05ef3c: 93260002 */ lbu $a2,0x2($t9)
/* f05ef40: ae020438 */ sw $v0,0x438($s0)
.L0f05ef44:
/* f05ef44: 0fc4a24b */ jal setCurrentPlayerNum
/* f05ef48: 8fa4003c */ lw $a0,0x3c($sp)
/* f05ef4c: 8fbf002c */ lw $ra,0x2c($sp)
/* f05ef50: 8fb00028 */ lw $s0,0x28($sp)
/* f05ef54: 27bd0048 */ addiu $sp,$sp,0x48
/* f05ef58: 03e00008 */ jr $ra
/* f05ef5c: 00001025 */ or $v0,$zero,$zero
);
bool aiIfChrTeleportFullWhite(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[3]);
u32 prevplayernum = g_Vars.currentplayernum;
s32 a;
float fvalue;
s32 b;
s32 c;
if (chr && chr->pos && chr->pos->type == POSITIONTYPE_PLAYER) {
u32 playernum = posGetPlayerNum(chr->pos);
setCurrentPlayerNum(playernum);
}
if (g_Vars.currentplayer->unk1bfc < 3) {
g_Vars.aioffset += 4;
} else {
fvalue = var7f1a9dac[0];
a = func000488c0(0);
b = func000488c0(&var800915e0);
func00048430(0, b + 1);
c = func00010904(var80095200, -32683, 0, -1, -1, -1, -1, -1);
if (c) {
func00033e50(c, 16, fvalue);
}
func00048430(0, a);
g_Vars.currentplayer->unk1bfc = 3;
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
}
setCurrentPlayerNum(prevplayernum);
return false;
}
/**
* @cmd 01c5

View File

@ -411,7 +411,7 @@
/*0x01bd*/ bool ai01bd(void);
/*0x01be*/ bool aiIfChrWeaponEquipped(void);
/*0x01bf*/ bool ai01bf(void);
/*0x01c0*/ bool ai01c0(void);
/*0x01c0*/ bool aiIfChrTeleportFullWhite(void);
/*0x01c1*/ bool aiSetPunchDodgeList(void);
/*0x01c2*/ bool aiSetShootingAtMeList(void);
/*0x01c3*/ bool aiSetDarkRoomList(void);

View File

@ -33,13 +33,13 @@ u32 func00010360(void);
u32 func0001036c(void);
u32 func000104a0(void);
u32 func00010718(void);
u32 func00010904(void);
s32 func00010904(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, float arg5, s32 arg6, s32 arg7);
u32 func00010ae4(void);
u32 func00010db0(void);
u32 func00010de0(void);
void func00010db0(s32 room_id);
void func00010de0(s32 room_id);
u32 func00010e10(void);
u32 func000110bc(void);
u32 func000110ec(void);
void func000110bc(s32 value);
void func000110ec(s32 room_id);
u32 func0001111c(void);
#endif

View File

@ -21,7 +21,7 @@ u32 func00033c30(void);
u32 func00033cf0(void);
u32 func00033db0(void);
u32 func00033dd8(void);
u32 func00033e50(void);
void func00033e50(s32 arg0, s32 arg1, float arg2);
u32 func00033ec4(void);
u32 func00033f08(void);
u32 func00033f24(void);

View File

@ -7,7 +7,7 @@ u32 func000481e0(void);
u32 func000481f0(void);
void func00048340(u32 *arg0, u32 *arg1, s32 arg2);
u32 func00048370(void);
u32 func00048430(void);
void func00048430(s32 arg0, s32 arg1);
void func00048510(void);
#endif

View File

@ -6,6 +6,6 @@
u32 func00048830(void);
u32 func00048870(void);
u32 func000488b0(void);
u32 func000488c0(void);
s32 func000488c0(void *ptr);
#endif

View File

@ -2245,6 +2245,40 @@ struct player {
/*0x1b6c*/ float unk1b6c;
/*0x1b70*/ float unk1b70;
/*0x1b74*/ float unk1b74;
/*0x1b78*/ u32 unk1b78;
/*0x1b7c*/ u32 unk1b7c;
/*0x1b80*/ u32 unk1b80;
/*0x1b84*/ u32 unk1b84;
/*0x1b88*/ u32 unk1b88;
/*0x1b8c*/ u32 unk1b8c;
/*0x1b90*/ u32 unk1b90;
/*0x1b94*/ u32 unk1b94;
/*0x1b98*/ u32 unk1b98;
/*0x1b9c*/ u32 unk1b9c;
/*0x1ba0*/ u32 unk1ba0;
/*0x1ba4*/ u32 unk1ba4;
/*0x1ba8*/ u32 unk1ba8;
/*0x1bac*/ u32 unk1bac;
/*0x1bb0*/ u32 unk1bb0;
/*0x1bb4*/ u32 unk1bb4;
/*0x1bb8*/ u32 unk1bb8;
/*0x1bbc*/ u32 unk1bbc;
/*0x1bc0*/ u32 unk1bc0;
/*0x1bc4*/ u32 unk1bc4;
/*0x1bc8*/ u32 unk1bc8;
/*0x1bcc*/ u32 unk1bcc;
/*0x1bd0*/ u32 unk1bd0;
/*0x1bd4*/ u32 unk1bd4;
/*0x1bd8*/ u32 unk1bd8;
/*0x1bdc*/ u32 unk1bdc;
/*0x1be0*/ u32 unk1be0;
/*0x1be4*/ u32 unk1be4;
/*0x1be8*/ u32 unk1be8;
/*0x1bec*/ u32 unk1bec;
/*0x1bf0*/ u32 unk1bf0;
/*0x1bf4*/ u32 unk1bf4;
/*0x1bf8*/ u32 unk1bf8;
/*0x1bfc*/ u8 unk1bfc;
};
struct ailist {

View File

@ -14580,7 +14580,7 @@ bool (*g_CommandPointers[])(void) = {
/*0x01bd*/ ai01bd,
/*0x01be*/ aiIfChrWeaponEquipped,
/*0x01bf*/ ai01bf,
/*0x01c0*/ ai01c0,
/*0x01c0*/ aiIfChrTeleportFullWhite,
/*0x01c1*/ aiSetPunchDodgeList,
/*0x01c2*/ aiSetShootingAtMeList,
/*0x01c3*/ aiSetDarkRoomList,