diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 809566613..06f49ef5d 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -14897,6 +14897,25 @@ glabel ai0172 /* f05cb2c: 00001025 */ or $v0,$zero,$zero ); +// Mismatch because some stores/loads to SP is in the opposite order +//bool ai0172(void) +//{ +// u8 *cmd = g_Vars.ailist + g_Vars.aioffset; +// struct position *pos = g_Vars.chrdata->gungroundpos; +// g_Vars.chrdata->gungroundpos = NULL; +// +// if (pos && pos->unk04 && pos->unk18 == 0 && pos->unk00 == 4) { +// func0f065c44(pos); +// func0f0605c4(pos); +// func0f060300(pos); +// func0f08ae54(pos->unk04, g_Vars.chrdata); +// } +// +// g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[3]); +// +// return false; +//} + /** * @cmd 0173 */ diff --git a/src/include/types.h b/src/include/types.h index 14745515a..6179b28bd 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -11,18 +11,44 @@ struct coord { float z; }; +struct position04 { + /*0x00*/ u32 unk00; + /*0x04*/ u32 unk04; + /*0x08*/ u32 unk08; + /*0x0c*/ u32 unk0c; + /*0x10*/ u32 unk10; + /*0x14*/ u32 unk14; + /*0x18*/ u32 unk18; + /*0x1c*/ u32 unk1c; + /*0x20*/ u32 unk20; + /*0x24*/ u32 unk24; + /*0x28*/ u32 unk28; + /*0x2c*/ u32 unk2c; + /*0x30*/ u32 unk30; + /*0x34*/ u32 unk34; + /*0x38*/ u32 unk38; + /*0x3c*/ u32 unk3c; + /*0x40*/ u32 flags; +}; + struct position { u8 unk00; u8 flags; u16 unk02; - u32 unk04; + struct position04 *unk04; struct coord coord; u32 unk14; - u32 unk18; + u32 unk18; // related to gun recovery u32 unk1c; u32 unk20; u32 unk24; s16 room; + u32 unk2c; + u32 unk30; + u32 unk34; + u32 unk38; + u32 unk3c; + u32 unk40; }; struct bitfielddata {