diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 7b624770b..d898acdaf 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -27713,13 +27713,13 @@ void func0f036358(struct chrdata *chr, s32 arg1) chr->aioffset = 0; func0f0b09f4(arg1, mpPlayerGetIndex(chr)); - func0f199964(chr, chr->unk2d4->unk20); + func0f199964(chr, chr->unk2d4->unk020); - chr->unk2d4->unk9c_00 = 0; - chr->unk2d4->unk9c_01 = 0; - chr->unk2d4->unk4c_04 = 0; - chr->unk2d4->unk4c_03 = 0; - chr->unk2d4->unk4c_05 = 0; + chr->unk2d4->unk09c_00 = 0; + chr->unk2d4->unk09c_01 = 0; + chr->unk2d4->unk04c_04 = 0; + chr->unk2d4->unk04c_03 = 0; + chr->unk2d4->unk04c_05 = 0; } } @@ -36560,7 +36560,7 @@ glabel func0f03e45c void func0f03e538(struct chrdata *chr, f32 arg1) { if (chr->unk2d4) { - chr->unk2d4->unkb0 = arg1; + chr->unk2d4->unk0b0 = arg1; } else { func0001ae90(chr->unk020, arg1); } @@ -36569,7 +36569,7 @@ void func0f03e538(struct chrdata *chr, f32 arg1) f32 func0f03e578(struct chrdata *chr) { if (chr->unk2d4) { - return chr->unk2d4->unka4; + return chr->unk2d4->unk0a4; } return func0001ae44(chr->unk020); @@ -36578,7 +36578,7 @@ f32 func0f03e578(struct chrdata *chr) void func0f03e5b0(struct chrdata *chr, f32 arg1) { if (chr->unk2d4) { - chr->unk2d4->unka4 = arg1; + chr->unk2d4->unk0a4 = arg1; } else { func0001ae90(chr->unk020, arg1); } diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 5e3cff70e..983e85f19 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -6849,7 +6849,7 @@ s32 menuhandlerMpChangeSimulantType(u32 operation, struct menu_item *item, s32 * s32 i; s32 count = 0; s32 maxunlocked = func0f18cd68( - g_MpSimulants[g_MenuStack[g_MpPlayerNum].slotindex].base.unk47, + g_MpSimulants[g_MenuStack[g_MpPlayerNum].slotindex].base.simtype, g_MpSimulants[g_MenuStack[g_MpPlayerNum].slotindex].unk48); for (i = 0; i < maxunlocked; i++) { @@ -9985,7 +9985,7 @@ void scenarioHtbCallback10(void) // Check if a simulant is holding it if (g_ScenarioData.htb.token == NULL) { for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) { - if (g_MpPlayerChrs[i]->prop && g_MpPlayerChrs[i]->unk2d4->unk9c_00) { + if (g_MpPlayerChrs[i]->prop && g_MpPlayerChrs[i]->unk2d4->unk09c_00) { g_ScenarioData.htb.token = g_MpPlayerChrs[i]->prop; break; } @@ -10011,16 +10011,16 @@ void scenarioHtbCallback10(void) void scenarioHtbCallback14(struct chrdata *chr) { if (chr) { - if (chr->unk2d4->unk9c_00) { - chr->unk2d4->unka0 += g_Vars.lvupdate240; + if (chr->unk2d4->unk09c_00) { + chr->unk2d4->unk0a0 += g_Vars.lvupdate240; - if (chr->unk2d4->unka0 >= SECSTOFRAMES240(30)) { + if (chr->unk2d4->unk0a0 >= SECSTOFRAMES240(30)) { func00010904(var80095200, 0x5b8, 0, -1, -1, -1, -1, -1); var800ac500[mpPlayerGetIndex(chr)]->unk3e++; - chr->unk2d4->unka0 = 0; + chr->unk2d4->unk0a0 = 0; } } else { - chr->unk2d4->unka0 = 0; + chr->unk2d4->unk0a0 = 0; } } else { if (func0f112844()) { @@ -12447,7 +12447,7 @@ void scenarioHtmCallback10(void) // Check if a simulant is holding it if (g_ScenarioData.htm.uplink == NULL) { for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) { - if (g_MpPlayerChrs[i]->unk2d4->unk4c_05) { + if (g_MpPlayerChrs[i]->unk2d4->unk04c_05) { g_ScenarioData.htm.uplink = g_MpPlayerChrs[i]->prop; break; } diff --git a/src/game/game_187770.c b/src/game/game_187770.c index f5d323031..001e18d69 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -10257,7 +10257,7 @@ glabel func0f190260 ); GLOBAL_ASM( -glabel func0f19028c +glabel mpChrReset /* f19028c: 27bdffe0 */ addiu $sp,$sp,-32 /* f190290: afbf001c */ sw $ra,0x1c($sp) /* f190294: afb10018 */ sw $s1,0x18($sp) @@ -10486,6 +10486,146 @@ glabel func0f19028c /* f1905ec: 27bd0020 */ addiu $sp,$sp,0x20 ); +//void mpChrReset(struct chrdata *chr, u8 full) +//{ +// s32 i; +// u32 rand; +// +// if (chr->unk2d4) { +// struct chr2d4 *chr2d4 = chr->unk2d4; +// +// chr->fadealpha = -1; +// chr->chrflags &= ~CHRCFLAG_JUST_INJURED; +// chr->hidden &= ~CHRHFLAG_CLOAKED; +// chr->myaction = MA_AIBOTMAINLOOP; +// chr->shotbondsum = 0; +// +// if (full) { +// chr->numclosearghs = 0; +// chr->damage = 0; +// chr->target = -1; +// chr->chrpreset1 = -1; +// chr->cover = -1; +// chrSetShield(chr, 0); +// chr->cmnum = 0; +// chr->cmnum2 = 0; +// freeFireslot(chr->fireslot[0]); +// freeFireslot(chr->fireslot[1]); +// chr->unk32c_12 = 0; +// chr->fireslot[0] = -1; +// chr->fireslot[1] = -1; +// chr->firecount[0] = 0; +// chr->firecount[1] = 0; +// chr->weapons_held[0] = NULL; +// chr->weapons_held[1] = NULL; +// chr->unk178 = 0; +// chr->unk32c_00 = 0; +// chr->unk32c_08 = 0; +// chr->unk364 = 0; +// chr->chrheight = 185; +// +// for (i = 0; i < 33; i++) { +// chr2d4->unk01c->unk00[i] = 0; +// } +// +// func0f197c00(chr); +// +// chr2d4->unk04c_02 = 0; +// chr2d4->unk04c_01 = 1; +// chr2d4->unk09c_00 = 0; +// chr2d4->unk04c_06 = 0; +// chr2d4->unk04c_04 = 0; +// chr2d4->unk04c_03 = 0; +// chr2d4->unk09c_01 = 0; +// chr2d4->unk04c_05 = 0; +// chr2d4->unk020 = 1; +// chr2d4->unk024 = 0; +// chr2d4->unk028 = 0; +// chr2d4->prop = NULL; +// chr2d4->unk02c = 0; +// chr2d4->unk02e = 0; +// chr2d4->unk05c = 0; +// chr2d4->unk060 = 0; +// chr2d4->unk074 = -1; +// chr2d4->unk030 = 301; +// chr2d4->unk034 = 0; +// chr2d4->unk04d = 0; +// chr2d4->unk04e = 0; +// chr2d4->unk044 = 0; +// chr2d4->unk0a0 = 0; +// chr2d4->unk09c_02 = 0; +// chr2d4->unk064 = 0; +// chr2d4->unk04c_00 = 0; +// chr2d4->unk048 = -1; +// chr2d4->unk04a = -1; +// chr2d4->unk0bc = -1; +// chr2d4->unk0c8 = 0; +// chr2d4->unk0c4 = 0; +// chr2d4->unk0cc = 0; +// chr2d4->unk0d0 = 0; +// chr2d4->unk0d8 = 0; +// chr2d4->unk0dc = 0; +// chr2d4->unk03e = -1; +// chr2d4->unk03c = 0; +// chr2d4->unk0e2 = 0; +// chr2d4->unk0e0 = 0; +// chr2d4->unk118 = 0; +// chr2d4->unk11c = 0; +// chr2d4->unk120 = -1; +// chr2d4->unk124 = -1; +// chr2d4->unk128 = 0; +// chr2d4->unk12c = 0; +// chr2d4->unk040 = 0; +// chr2d4->unk06c = 0; +// chr2d4->unk070 = 0; +// chr2d4->unk0e8 = 0; +// chr2d4->unk0e4 = 0; +// chr2d4->unk108 = 0; +// chr2d4->unk10c = 0; +// chr2d4->unk110 = 0; +// +// for (i = 0; i != 12; i++) { +// chr2d4->unk130[i] = -1; +// chr2d4->unk13c[i] = 4294967296; +// chr2d4->unk16c[i] = 0; +// chr2d4->unk178[i] = -1; +// chr2d4->unk1a8[i] = -1; +// } +// +// chr2d4->unk1e8 = 0; +// chr2d4->unk208 = 0; +// chr2d4->unk210 = random(); +// chr2d4->unk20c = 0; +// chr2d4->unk2c8 = 0; +// chr2d4->unk09c_03 = 0; +// chr2d4->unk2cc = 0; +// chr2d4->unk2c4 = 0; +// +// chr2d4->unk2d0 = random(); +// chr2d4->unk2d4 = random(); +// chr2d4->unk078 = 0; +// chr2d4->unk09c_07 = 0; +// chr2d4->unk050 = 0; +// chr2d4->unk09d = 0; +// } +// +// if (chr2d4->simulant->type == SIMTYPE_TURTLE || chr2d4->simulant->type == SIMTYPE_SHIELD) { +// chr->cshield = 8; +// } +// +// if (chr2d4->simulant->unk48 == 5) { +// chr2d4->unk064 &= ~1; +// +// if (func0f198278()) { +// chr->cshield = 8; +// } +// } +// +// chr2d4->unk059 = 1; +// chr2d4->unk058 = 120; +// } +//} + GLOBAL_ASM( glabel func0f1905f0 /* f1905f0: 27bdffa8 */ addiu $sp,$sp,-88 @@ -10515,7 +10655,7 @@ glabel func0f1905f0 .L0f190648: /* f190648: 50c0002b */ beqzl $a2,.L0f1906f8 /* f19064c: 8fbf0024 */ lw $ra,0x24($sp) -/* f190650: 0fc640a3 */ jal func0f19028c +/* f190650: 0fc640a3 */ jal mpChrReset /* f190654: 02002025 */ or $a0,$s0,$zero /* f190658: 0fc52719 */ jal func0f149c64 /* f19065c: 02002025 */ or $a0,$s0,$zero @@ -11588,7 +11728,7 @@ glabel func0f191448 u32 func0f1915b4(struct chrdata *chr) { if (chr->unk2d4) { - return chr->unk2d4->unk20; + return chr->unk2d4->unk020; } return g_Vars.players[propGetPlayerNum(chr->prop)]->unk0638; @@ -12589,51 +12729,51 @@ char *mpGetBotCommandName(s32 command) void func0f192438(struct chrdata *chr, struct prop *prop) { - chr->unk2d4->unk79 = 1; - chr->unk2d4->unkc0_propindex = prop - g_Vars.props; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = 1; + chr->unk2d4->unk0c0_propindex = prop - g_Vars.props; + chr->unk2d4->unk0d8 = 1; } void func0f192474(struct chrdata *chr, struct prop *prop) { - chr->unk2d4->unk79 = 0; - chr->unk2d4->unkd4_propindex = prop - g_Vars.props; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = 0; + chr->unk2d4->unk0d4_propindex = prop - g_Vars.props; + chr->unk2d4->unk0d8 = 1; } void func0f1924ac(struct chrdata *chr, struct prop *prop) { - chr->unk2d4->unk79 = 13; - chr->unk2d4->unkd4_propindex = prop - g_Vars.props; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = 13; + chr->unk2d4->unk0d4_propindex = prop - g_Vars.props; + chr->unk2d4->unk0d8 = 1; } void func0f1924e8(struct chrdata *chr, struct coord *pos, s32 *arg2, f32 arg3) { - chr->unk2d4->unk79 = 2; - chr->unk2d4->unk8c.x = pos->x; - chr->unk2d4->unk8c.y = pos->y; - chr->unk2d4->unk8c.z = pos->z; - func0f0657a4(arg2, &chr->unk2d4->unk7a); - chr->unk2d4->unk98 = arg3; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = 2; + chr->unk2d4->unk08c.x = pos->x; + chr->unk2d4->unk08c.y = pos->y; + chr->unk2d4->unk08c.z = pos->z; + func0f0657a4(arg2, &chr->unk2d4->unk07a); + chr->unk2d4->unk098 = arg3; + chr->unk2d4->unk0d8 = 1; } void func0f19257c(struct chrdata *chr, struct coord *pos, s32 *arg2, f32 arg3) { - chr->unk2d4->unk79 = 3; - chr->unk2d4->unk8c.x = pos->x; - chr->unk2d4->unk8c.y = pos->y; - chr->unk2d4->unk8c.z = pos->z; - func0f0657a4(arg2, &chr->unk2d4->unk7a); - chr->unk2d4->unk98 = arg3; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = 3; + chr->unk2d4->unk08c.x = pos->x; + chr->unk2d4->unk08c.y = pos->y; + chr->unk2d4->unk08c.z = pos->z; + func0f0657a4(arg2, &chr->unk2d4->unk07a); + chr->unk2d4->unk098 = arg3; + chr->unk2d4->unk0d8 = 1; } void func0f192610(struct chrdata *chr, s32 arg1) { - chr->unk2d4->unk79 = arg1; - chr->unk2d4->unkd8 = 1; + chr->unk2d4->unk079 = arg1; + chr->unk2d4->unk0d8 = 1; } GLOBAL_ASM( @@ -13719,7 +13859,7 @@ s32 func0f193530(struct chrdata *chr, f32 arg1) s32 result = -1; if (g_MpSetup.options & MPOPTION_TEAMSENABLED) { - if (chr->myaction != MA_AIBOTFOLLOW && (random() % 100) < chr->unk2d4->unk00) { + if (chr->myaction != MA_AIBOTFOLLOW && (random() % 100) < chr->unk2d4->unk000) { f32 bestvalue = 0; s32 bestindex = -1; s32 i; @@ -14905,7 +15045,7 @@ s32 func0f194724(struct chrdata *self, s32 arg1, bool includeself) for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) { if (self->team == g_MpPlayerChrs[i]->team) { if (includeself || self != g_MpPlayerChrs[i]) { - if (arg1 == g_MpPlayerChrs[i]->unk2d4->unk79) { + if (arg1 == g_MpPlayerChrs[i]->unk2d4->unk079) { count++; } } @@ -14925,8 +15065,8 @@ s32 scenarioCtcIsChrsTokenHeld(struct chrdata *chr) bool func0f19489c(struct chrdata *chr) { - if (chr->unk2d4->unk9c_01) { - if (chr->unk2d4->unk4f_00 == 0 || mpGetNumPlayerTeammates(chr) >= 2 || !scenarioCtcIsChrsTokenHeld(chr)) { + if (chr->unk2d4->unk09c_01) { + if (chr->unk2d4->unk04f_00 == 0 || mpGetNumPlayerTeammates(chr) >= 2 || !scenarioCtcIsChrsTokenHeld(chr)) { return true; } } @@ -14941,7 +15081,7 @@ s32 mpGetNumTeammatesInRoomDoingSomething(struct chrdata *bot) for (i = 0; i < g_MpNumPlayers; i++) { if (bot->team == g_MpPlayerChrs[i]->team && g_MpPlayerChrs[i]->prop->rooms[0] == g_ScenarioData.cbt.unk0e[0]) { - if (g_MpPlayerChrs[i]->unk2d4->unk79 == 9 || g_MpPlayerChrs[i]->unk2d4->unk79 == 10) { + if (g_MpPlayerChrs[i]->unk2d4->unk079 == 9 || g_MpPlayerChrs[i]->unk2d4->unk079 == 10) { count++; } } @@ -18018,7 +18158,7 @@ void func0f197544(struct chrdata *chr) } } - chr2d4->unkd8 = 1; + chr2d4->unk0d8 = 1; pass = true; } diff --git a/src/include/game/game_187770.h b/src/include/game/game_187770.h index 1acdf7164..3494767ae 100644 --- a/src/include/game/game_187770.h +++ b/src/include/game/game_187770.h @@ -122,7 +122,7 @@ s32 func0f18e9ec(s32 arg0, struct prop *token, struct coord *dist, s32 colour, s u32 func0f18f874(void); u32 func0f190060(void); u32 func0f190260(void); -u32 func0f19028c(void); +void mpChrReset(struct chrdata *chr, u8 full); u32 func0f1905f0(void); u32 func0f190708(void); u32 func0f190774(void); diff --git a/src/include/game/game_197600.h b/src/include/game/game_197600.h index dcb18a7c7..41502c80c 100644 --- a/src/include/game/game_197600.h +++ b/src/include/game/game_197600.h @@ -5,7 +5,7 @@ u32 func0f197600(void); u32 func0f197af4(void); -u32 func0f197c00(void); +void func0f197c00(struct chrdata *chr); u32 func0f197c70(void); u32 func0f197cf0(void); u32 func0f197d94(void); diff --git a/src/include/types.h b/src/include/types.h index c0b809bd1..0272be36b 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -133,91 +133,104 @@ struct chr020 { /*0x20*/ struct anim *anim; }; +struct chr2d4_01c { + u32 unk00[33]; +}; + struct chr2d4 { - /*0x00*/ u8 unk00; - /*0x04*/ u32 unk04; - /*0x08*/ u16 unk08; - /*0x08*/ s16 followingplayernum; - /*0x0c*/ u32 unk0c; - /*0x10*/ struct prop *prop; - /*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 unk40; - /*0x44*/ u32 unk44; - /*0x48*/ u32 unk48; - /*0x4c*/ u8 unk4c_00 : 1; - /*0x4c*/ u8 unk4c_01 : 1; - /*0x4c*/ u8 unk4c_02 : 1; - /*0x4c*/ u8 unk4c_03 : 1; - /*0x4c*/ u8 unk4c_04 : 1; - /*0x4c*/ u8 unk4c_05 : 1; - /*0x4c*/ u8 unk4c_06 : 1; - /*0x4c*/ u8 unk4c_07 : 1; - /*0x4d*/ u8 unk4d; - /*0x4e*/ u8 unk4e; - /*0x4f*/ u8 unk4f_00 : 1; - /*0x4f*/ u8 unk4f_01 : 1; - /*0x4f*/ u8 unk4f_02 : 1; - /*0x4f*/ u8 unk4f_03 : 1; - /*0x4f*/ u8 unk4f_04 : 1; - /*0x4f*/ u8 unk4f_05 : 1; - /*0x4f*/ u8 unk4f_06 : 1; - /*0x4f*/ u8 unk4f_07 : 1; - /*0x50*/ u32 unk50; - /*0x54*/ u32 unk54; - /*0x58*/ u32 unk58; - /*0x5c*/ u32 unk5c; - /*0x60*/ u32 unk60; - /*0x64*/ u32 unk64; - /*0x68*/ u32 unk68; - /*0x6c*/ u32 unk6c; - /*0x70*/ u32 unk70; - /*0x74*/ u32 unk74; - /*0x78*/ u8 unk78; - /*0x79*/ u8 unk79; - /*0x7a*/ s8 unk7a; - /*0x7c*/ u32 unk7c; - /*0x80*/ u32 unk80; - /*0x84*/ u32 unk84; - /*0x88*/ u32 unk88; - /*0x8c*/ struct coord unk8c; - /*0x98*/ f32 unk98; - /*0x9c*/ u8 unk9c_00 : 1; - /*0x9c*/ u8 unk9c_01 : 1; - /*0x9c*/ u8 unk9c_02 : 1; - /*0x9c*/ u8 unk9c_03 : 1; - /*0x9c*/ u8 unk9c_04 : 1; - /*0x9c*/ u8 unk9c_05 : 1; - /*0x9c*/ u8 unk9c_06 : 1; - /*0x9c*/ u8 unk9c_07 : 1; - /*0xa0*/ s32 unka0; - /*0xa4*/ f32 unka4; - /*0xa8*/ u32 unka8; - /*0xac*/ u32 unkac; - /*0xb0*/ f32 unkb0; - /*0xb4*/ u32 unkb4; - /*0xb8*/ u32 unkb8; - /*0xbc*/ u32 unkbc; - /*0xc0*/ s32 unkc0_propindex; - /*0xc4*/ u32 unkc4; - /*0xc8*/ u32 unkc8; - /*0xcc*/ u32 unkcc; - /*0xd0*/ u32 unkd0; - /*0xd4*/ u32 unkd4_propindex; - /*0xd8*/ s32 unkd8; + /*0x000*/ u8 unk000; + /*0x004*/ struct mpsim *simulant; + /*0x008*/ u16 unk008; + /*0x008*/ s16 followingplayernum; + /*0x00c*/ u32 unk00c; + /*0x010*/ struct prop *prop; + /*0x014*/ u32 unk014; + /*0x018*/ u32 unk018; + /*0x01c*/ struct chr2d4_01c *unk01c; + /*0x020*/ u32 unk020; + /*0x024*/ u32 unk024; + /*0x028*/ u32 unk028; + /*0x02c*/ u16 unk02c; + /*0x02e*/ u16 unk02e; + /*0x030*/ u32 unk030; + /*0x034*/ u32 unk034; + /*0x038*/ u32 unk038; + /*0x03c*/ u16 unk03c; + /*0x03e*/ s16 unk03e; + /*0x040*/ f32 unk040; + /*0x044*/ u32 unk044; + /*0x048*/ s16 unk048; + /*0x04a*/ s16 unk04a; + /*0x04c*/ u8 unk04c_00 : 1; + /*0x04c*/ u8 unk04c_01 : 1; + /*0x04c*/ u8 unk04c_02 : 1; + /*0x04c*/ u8 unk04c_03 : 1; + /*0x04c*/ u8 unk04c_04 : 1; + /*0x04c*/ u8 unk04c_05 : 1; + /*0x04c*/ u8 unk04c_06 : 1; + /*0x04c*/ u8 unk04c_07 : 1; + /*0x04d*/ u8 unk04d; + /*0x04e*/ u8 unk04e; + /*0x04f*/ u8 unk04f_00 : 1; + /*0x04f*/ u8 unk04f_01 : 1; + /*0x04f*/ u8 unk04f_02 : 1; + /*0x04f*/ u8 unk04f_03 : 1; + /*0x04f*/ u8 unk04f_04 : 1; + /*0x04f*/ u8 unk04f_05 : 1; + /*0x04f*/ u8 unk04f_06 : 1; + /*0x04f*/ u8 unk04f_07 : 1; + /*0x050*/ u32 unk050; + /*0x054*/ u32 unk054; + /*0x058*/ u8 unk058; + /*0x058*/ u8 unk059; + /*0x05c*/ u32 unk05c; + /*0x060*/ u32 unk060; + /*0x064*/ u16 unk064; + /*0x068*/ u32 unk068; + /*0x06c*/ f32 unk06c; + /*0x070*/ f32 unk070; + /*0x074*/ s8 unk074; + /*0x075*/ s8 unk075; + /*0x076*/ s8 unk076; + /*0x077*/ s8 unk077; + /*0x078*/ u8 unk078; + /*0x079*/ u8 unk079; + /*0x07a*/ s8 unk07a; + /*0x07c*/ u32 unk07c; + /*0x080*/ u32 unk080; + /*0x084*/ u32 unk084; + /*0x088*/ u32 unk088; + /*0x08c*/ struct coord unk08c; + /*0x098*/ f32 unk098; + /*0x09c*/ u8 unk09c_00 : 1; + /*0x09c*/ u8 unk09c_01 : 1; + /*0x09c*/ u8 unk09c_02 : 1; + /*0x09c*/ u8 unk09c_03 : 1; + /*0x09c*/ u8 unk09c_04 : 1; + /*0x09c*/ u8 unk09c_05 : 1; + /*0x09c*/ u8 unk09c_06 : 1; + /*0x09c*/ u8 unk09c_07 : 1; + /*0x09d*/ u8 unk09d; + /*0x0a0*/ s32 unk0a0; + /*0x0a4*/ f32 unk0a4; + /*0x0a8*/ u32 unk0a8; + /*0x0ac*/ u32 unk0ac; + /*0x0b0*/ f32 unk0b0; + /*0x0b4*/ u32 unk0b4; + /*0x0b8*/ u32 unk0b8; + /*0x0bc*/ s32 unk0bc; + /*0x0c0*/ s32 unk0c0_propindex; + /*0x0c4*/ u32 unk0c4; + /*0x0c8*/ u32 unk0c8; + /*0x0cc*/ u32 unk0cc; + /*0x0d0*/ u32 unk0d0; + /*0x0d4*/ u32 unk0d4_propindex; + /*0x0d8*/ s32 unk0d8; /*0x0dc*/ u32 unk0dc; - /*0x0e0*/ u32 unk0e0; - /*0x0e4*/ u32 unk0e4; - /*0x0e8*/ u32 unk0e8; + /*0x0e0*/ u16 unk0e0; + /*0x0e2*/ u16 unk0e2; + /*0x0e4*/ f32 unk0e4; + /*0x0e8*/ f32 unk0e8; /*0x0ec*/ u32 unk0ec; /*0x0f0*/ u32 unk0f0; /*0x0f4*/ u32 unk0f4; @@ -225,20 +238,91 @@ struct chr2d4 { /*0x0fc*/ u32 unk0fc; /*0x100*/ u32 unk100; /*0x104*/ u32 unk104; - /*0x108*/ u32 unk108; - /*0x10c*/ u32 unk10c; - /*0x110*/ u32 unk110; + /*0x108*/ f32 unk108; + /*0x10c*/ f32 unk10c; + /*0x110*/ f32 unk110; /*0x114*/ u32 unk114; /*0x118*/ u32 unk118; /*0x11c*/ u32 unk11c; - /*0x120*/ u32 unk120; - /*0x124*/ u32 unk124; + /*0x120*/ s32 unk120; + /*0x124*/ s32 unk124; /*0x128*/ u32 unk128; /*0x12c*/ u32 unk12c; - /*0x130*/ u32 unk130; - /*0x134*/ u32 unk134; - /*0x138*/ u32 unk138; - /*0x13c*/ f32 unk13c[1]; + /*0x130*/ s8 unk130[12]; + /*0x13c*/ f32 unk13c[12]; + /*0x16c*/ u8 unk16c[12]; + /*0x178*/ s32 unk178[12]; + /*0x1a8*/ s16 unk1a8[12]; + /*0x1c0*/ u32 unk1c0; + /*0x1c4*/ u32 unk1c4; + /*0x1c8*/ u32 unk1c8; + /*0x1cc*/ u32 unk1cc; + /*0x1d0*/ u32 unk1d0; + /*0x1d4*/ u32 unk1d4; + /*0x1d8*/ u32 unk1d8; + /*0x1dc*/ u32 unk1dc; + /*0x1e0*/ u32 unk1e0; + /*0x1e4*/ u32 unk1e4; + /*0x1e8*/ u32 unk1e8; + /*0x1ec*/ u32 unk1ec; + /*0x1f0*/ u32 unk1f0; + /*0x1f4*/ u32 unk1f4; + /*0x1f8*/ u32 unk1f8; + /*0x1fc*/ u32 unk1fc; + /*0x200*/ u32 unk200; + /*0x204*/ u32 unk204; + /*0x208*/ u32 unk208; + /*0x20c*/ u32 unk20c; + /*0x210*/ u32 unk210; + /*0x214*/ u32 unk214; + /*0x218*/ u32 unk218; + /*0x21c*/ u32 unk21c; + /*0x220*/ u32 unk220; + /*0x224*/ u32 unk224; + /*0x228*/ u32 unk228; + /*0x22c*/ u32 unk22c; + /*0x230*/ u32 unk230; + /*0x234*/ u32 unk234; + /*0x238*/ u32 unk238; + /*0x23c*/ u32 unk23c; + /*0x240*/ u32 unk240; + /*0x244*/ u32 unk244; + /*0x248*/ u32 unk248; + /*0x24c*/ u32 unk24c; + /*0x250*/ u32 unk250; + /*0x254*/ u32 unk254; + /*0x258*/ u32 unk258; + /*0x25c*/ u32 unk25c; + /*0x260*/ u32 unk260; + /*0x264*/ u32 unk264; + /*0x268*/ u32 unk268; + /*0x26c*/ u32 unk26c; + /*0x270*/ u32 unk270; + /*0x274*/ u32 unk274; + /*0x278*/ u32 unk278; + /*0x27c*/ u32 unk27c; + /*0x280*/ u32 unk280; + /*0x284*/ u32 unk284; + /*0x288*/ u32 unk288; + /*0x28c*/ u32 unk28c; + /*0x290*/ u32 unk290; + /*0x294*/ u32 unk294; + /*0x298*/ u32 unk298; + /*0x29c*/ u32 unk29c; + /*0x2a0*/ u32 unk2a0; + /*0x2a4*/ u32 unk2a4; + /*0x2a8*/ u32 unk2a8; + /*0x2ac*/ u32 unk2ac; + /*0x2b0*/ u32 unk2b0; + /*0x2b4*/ u32 unk2b4; + /*0x2b8*/ u32 unk2b8; + /*0x2bc*/ u32 unk2bc; + /*0x2c0*/ u32 unk2c0; + /*0x2c4*/ f32 unk2c4; + /*0x2c8*/ u32 unk2c8; + /*0x2cc*/ u32 unk2cc; + /*0x2d0*/ u32 unk2d0; + /*0x2d4*/ f32 unk2d4; }; struct act_stand { @@ -334,7 +418,7 @@ struct chrdata { /*0x000*/ s16 chrnum; /*0x002*/ s8 accuracyrating; /*0x003*/ s8 speedrating; - /*0x004*/ u16 firecount; + /*0x004*/ u8 firecount[2]; /*0x006*/ s8 headnum; /*0x007*/ s8 actiontype; /*0x008*/ s8 sleep; @@ -352,8 +436,8 @@ struct chrdata { /*0x018*/ u32 chrflags; /*0x01c*/ struct prop *prop; /*0x020*/ struct chr020 *unk020; - /*0x024*/ u32 chrwidth; - /*0x028*/ u32 chrheight; + /*0x024*/ f32 chrwidth; + /*0x028*/ f32 chrheight; union { struct act_stand act_stand; @@ -440,7 +524,7 @@ struct chrdata { /*0x140*/ u32 unk140; /*0x144*/ u32 unk144; /*0x148*/ u32 unk148; - /*0x14c*/ u32 shotbondsum; + /*0x14c*/ f32 shotbondsum; /*0x150*/ u32 aimuplshoulder; /*0x154*/ u32 aimuprshoulder; /*0x158*/ u32 aimupback; @@ -4026,12 +4110,12 @@ struct mpchr { /*0x20*/ u32 unk20; /*0x24*/ s16 unk24[12]; /*0x3c*/ s16 unk3c; - /*0x3c*/ s16 unk3e; + /*0x3e*/ s16 unk3e; /*0x40*/ u32 unk40; /*0x44*/ u8 controlmode; /*0x45*/ s8 unk45; /*0x46*/ s8 unk46; - /*0x47*/ u8 unk47; + /*0x47*/ u8 simtype; }; struct mpplayer {