Tidy up splat.c

This commit is contained in:
Ryan Dwyer
2022-07-02 10:41:12 +10:00
parent bc591bf6fc
commit 28ad7273e0
7 changed files with 75 additions and 343 deletions
+1 -1
View File
@@ -240,7 +240,7 @@ void botSpawn(struct chrdata *chr, u8 respawning)
if (aibot) {
botReset(chr, respawning);
chrInitSplats(chr);
splatResetChr(chr);
thing = scenarioChooseSpawnLocation(chr->chrwidth, &pos, rooms, chr->prop);
chr->hidden |= CHRHFLAG_00100000;
chrMoveToPos(chr, &pos, rooms, thing, true);
+3 -3
View File
@@ -1335,7 +1335,7 @@ void chrInit(struct prop *prop, u8 *ailist)
chr->goposhitcount = 0;
#endif
chrInitSplats(chr);
splatResetChr(chr);
}
struct prop *chr0f020b14(struct prop *prop, struct model *model,
@@ -5417,7 +5417,7 @@ void chrHit(struct shotdata *shotdata, struct hit *hit)
chrBruise(hit->model, hit->hitpart, hit->node, &sp5c);
}
splatsCreateForChrHit(prop, (struct splat *)shotdata, &sp98, &hitpos, darker, 0, g_Vars.currentplayer->prop->chr);
splatsCreateForChrHit(prop, shotdata, &sp98, &hitpos, darker, 0, g_Vars.currentplayer->prop->chr);
}
#else
// NTSC beta wraps all the blood logic in this paintball check.
@@ -5439,7 +5439,7 @@ void chrHit(struct shotdata *shotdata, struct hit *hit)
chrBruise(hit->model, hit->hitpart, hit->node, &sp5c);
splatsCreateForChrHit(prop, (struct splat *)shotdata, &sp98, &hitpos, darker, 0, g_Vars.currentplayer->prop->chr);
splatsCreateForChrHit(prop, shotdata, &sp98, &hitpos, darker, 0, g_Vars.currentplayer->prop->chr);
}
#endif
}
+1 -1
View File
@@ -506,7 +506,7 @@ void playerStartNewLife(void)
}
}
chrInitSplats(g_Vars.currentplayer->prop->chr);
splatResetChr(g_Vars.currentplayer->prop->chr);
playerLoadDefaults();
g_Vars.currentplayer->isdead = false;
g_Vars.currentplayer->healthdamagetype = DAMAGETYPE_7;
+20 -20
View File
@@ -1984,7 +1984,7 @@ glabel var7f1ab190pf
/* f063720: 920f003d */ lbu $t7,0x3d($s0)
/* f063724: 8e020004 */ lw $v0,0x4($s0)
/* f063728: 02002025 */ move $a0,$s0
/* f06372c: 0fc5260c */ jal splatTick
/* f06372c: 0fc5260c */ jal splatTickChr
/* f063730: afa20048 */ sw $v0,0x48($sp)
/* f063734: 8fa20048 */ lw $v0,0x48($sp)
/* f063738: 10400008 */ beqz $v0,.PF0f06375c
@@ -2052,7 +2052,7 @@ glabel var7f1ab190pf
.PF0f063818:
/* f063818: 54610007 */ bnel $v1,$at,.PF0f063838
/* f06381c: 962e035e */ lhu $t6,0x35e($s1)
/* f063820: 0fc5260c */ jal splatTick
/* f063820: 0fc5260c */ jal splatTickChr
/* f063824: 02002025 */ move $a0,$s0
/* f063828: 0fc30a3b */ jal playerTickThirdPerson
/* f06382c: 02002025 */ move $a0,$s0
@@ -2154,7 +2154,7 @@ glabel var7f1ab190pf
/* f06398c: 00000000 */ nop
/* f063990: 8e020004 */ lw $v0,0x4($s0)
/* f063994: 02002025 */ move $a0,$s0
/* f063998: 0fc5260c */ jal splatTick
/* f063998: 0fc5260c */ jal splatTickChr
/* f06399c: afa20044 */ sw $v0,0x44($sp)
/* f0639a0: 8fa20044 */ lw $v0,0x44($sp)
/* f0639a4: 10400008 */ beqz $v0,.PF0f0639c8
@@ -2227,7 +2227,7 @@ glabel var7f1ab190pf
.PF0f063a98:
/* f063a98: 54610007 */ bnel $v1,$at,.PF0f063ab8
/* f063a9c: 8faf0034 */ lw $t7,0x34($sp)
/* f063aa0: 0fc5260c */ jal splatTick
/* f063aa0: 0fc5260c */ jal splatTickChr
/* f063aa4: 02002025 */ move $a0,$s0
/* f063aa8: 0fc30a3b */ jal playerTickThirdPerson
/* f063aac: 02002025 */ move $a0,$s0
@@ -2983,7 +2983,7 @@ glabel var7f1ab190pf
/* f063670: 920f003d */ lbu $t7,0x3d($s0)
/* f063674: 8e020004 */ lw $v0,0x4($s0)
/* f063678: 02002025 */ move $a0,$s0
/* f06367c: 0fc527cc */ jal splatTick
/* f06367c: 0fc527cc */ jal splatTickChr
/* f063680: afa20048 */ sw $v0,0x48($sp)
/* f063684: 8fa20048 */ lw $v0,0x48($sp)
/* f063688: 10400008 */ beqz $v0,.PB0f0636ac
@@ -3051,7 +3051,7 @@ glabel var7f1ab190pf
.PB0f063768:
/* f063768: 54610007 */ bnel $v1,$at,.PB0f063788
/* f06376c: 962e035e */ lhu $t6,0x35e($s1)
/* f063770: 0fc527cc */ jal splatTick
/* f063770: 0fc527cc */ jal splatTickChr
/* f063774: 02002025 */ move $a0,$s0
/* f063778: 0fc309fe */ jal playerTickThirdPerson
/* f06377c: 02002025 */ move $a0,$s0
@@ -3153,7 +3153,7 @@ glabel var7f1ab190pf
/* f0638dc: 00000000 */ nop
/* f0638e0: 8e020004 */ lw $v0,0x4($s0)
/* f0638e4: 02002025 */ move $a0,$s0
/* f0638e8: 0fc527cc */ jal splatTick
/* f0638e8: 0fc527cc */ jal splatTickChr
/* f0638ec: afa20044 */ sw $v0,0x44($sp)
/* f0638f0: 8fa20044 */ lw $v0,0x44($sp)
/* f0638f4: 10400008 */ beqz $v0,.PB0f063918
@@ -3226,7 +3226,7 @@ glabel var7f1ab190pf
.PB0f0639e8:
/* f0639e8: 54610007 */ bnel $v1,$at,.PB0f063a08
/* f0639ec: 8faf0034 */ lw $t7,0x34($sp)
/* f0639f0: 0fc527cc */ jal splatTick
/* f0639f0: 0fc527cc */ jal splatTickChr
/* f0639f4: 02002025 */ move $a0,$s0
/* f0639f8: 0fc309fe */ jal playerTickThirdPerson
/* f0639fc: 02002025 */ move $a0,$s0
@@ -3969,7 +3969,7 @@ glabel propsTickPlayer
/* f0634b4: 920f003d */ lbu $t7,0x3d($s0)
/* f0634b8: 8e020004 */ lw $v0,0x4($s0)
/* f0634bc: 02002025 */ or $a0,$s0,$zero
/* f0634c0: 0fc522e0 */ jal splatTick
/* f0634c0: 0fc522e0 */ jal splatTickChr
/* f0634c4: afa20048 */ sw $v0,0x48($sp)
/* f0634c8: 8fa20048 */ lw $v0,0x48($sp)
/* f0634cc: 10400008 */ beqz $v0,.L0f0634f0
@@ -4037,7 +4037,7 @@ glabel propsTickPlayer
.L0f0635ac:
/* f0635ac: 54610007 */ bnel $v1,$at,.L0f0635cc
/* f0635b0: 962e035e */ lhu $t6,0x35e($s1)
/* f0635b4: 0fc522e0 */ jal splatTick
/* f0635b4: 0fc522e0 */ jal splatTickChr
/* f0635b8: 02002025 */ or $a0,$s0,$zero
/* f0635bc: 0fc308d9 */ jal playerTickThirdPerson
/* f0635c0: 02002025 */ or $a0,$s0,$zero
@@ -4133,7 +4133,7 @@ glabel propsTickPlayer
/* f063708: 00000000 */ nop
/* f06370c: 8e020004 */ lw $v0,0x4($s0)
/* f063710: 02002025 */ or $a0,$s0,$zero
/* f063714: 0fc522e0 */ jal splatTick
/* f063714: 0fc522e0 */ jal splatTickChr
/* f063718: afa20044 */ sw $v0,0x44($sp)
/* f06371c: 8fa20044 */ lw $v0,0x44($sp)
/* f063720: 10400008 */ beqz $v0,.L0f063744
@@ -4206,7 +4206,7 @@ glabel propsTickPlayer
.L0f063814:
/* f063814: 54610007 */ bnel $v1,$at,.L0f063834
/* f063818: 8faf0034 */ lw $t7,0x34($sp)
/* f06381c: 0fc522e0 */ jal splatTick
/* f06381c: 0fc522e0 */ jal splatTickChr
/* f063820: 02002025 */ or $a0,$s0,$zero
/* f063824: 0fc308d9 */ jal playerTickThirdPerson
/* f063828: 02002025 */ or $a0,$s0,$zero
@@ -4942,7 +4942,7 @@ glabel propsTickPlayer
/* f062728: 920f003d */ lbu $t7,0x3d($s0)
/* f06272c: 8e020004 */ lw $v0,0x4($s0)
/* f062730: 02002025 */ or $a0,$s0,$zero
/* f062734: 0fc50cd4 */ jal splatTick
/* f062734: 0fc50cd4 */ jal splatTickChr
/* f062738: afa20048 */ sw $v0,0x48($sp)
/* f06273c: 8fa20048 */ lw $v0,0x48($sp)
/* f062740: 10400008 */ beqz $v0,.NB0f062764
@@ -5010,7 +5010,7 @@ glabel propsTickPlayer
.NB0f062820:
/* f062820: 54610007 */ bnel $v1,$at,.NB0f062840
/* f062824: 962e035e */ lhu $t6,0x35e($s1)
/* f062828: 0fc50cd4 */ jal splatTick
/* f062828: 0fc50cd4 */ jal splatTickChr
/* f06282c: 02002025 */ or $a0,$s0,$zero
/* f062830: 0fc2ffcb */ jal playerTickThirdPerson
/* f062834: 02002025 */ or $a0,$s0,$zero
@@ -5106,7 +5106,7 @@ glabel propsTickPlayer
/* f06297c: 00000000 */ sll $zero,$zero,0x0
/* f062980: 8e020004 */ lw $v0,0x4($s0)
/* f062984: 02002025 */ or $a0,$s0,$zero
/* f062988: 0fc50cd4 */ jal splatTick
/* f062988: 0fc50cd4 */ jal splatTickChr
/* f06298c: afa20044 */ sw $v0,0x44($sp)
/* f062990: 8fa20044 */ lw $v0,0x44($sp)
/* f062994: 10400008 */ beqz $v0,.NB0f0629b8
@@ -5179,7 +5179,7 @@ glabel propsTickPlayer
.NB0f062a88:
/* f062a88: 54610007 */ bnel $v1,$at,.NB0f062aa8
/* f062a8c: 8faf0034 */ lw $t7,0x34($sp)
/* f062a90: 0fc50cd4 */ jal splatTick
/* f062a90: 0fc50cd4 */ jal splatTickChr
/* f062a94: 02002025 */ or $a0,$s0,$zero
/* f062a98: 0fc2ffcb */ jal playerTickThirdPerson
/* f062a9c: 02002025 */ or $a0,$s0,$zero
@@ -5818,7 +5818,7 @@ glabel propsTickPlayer
// if (prop->type == PROPTYPE_CHR) {
// struct chrdata *chr = prop->chr;
//
// splatTick(prop);
// splatTickChr(prop);
//
// if (chr && chr->aibot) {
// op = botTick(prop);
@@ -5837,7 +5837,7 @@ glabel propsTickPlayer
// } else if (prop->type == PROPTYPE_SMOKE) {
// op = smokeTickPlayer(prop);
// } else if (prop->type == PROPTYPE_PLAYER) {
// splatTick(prop);
// splatTickChr(prop);
// op = playerTickThirdPerson(prop);
// }
// }
@@ -5881,7 +5881,7 @@ glabel propsTickPlayer
// if (prop->type == PROPTYPE_CHR) {
// struct chrdata *chr = prop->chr;
//
// splatTick(prop);
// splatTickChr(prop);
//
// if (chr && chr->aibot) {
// op = botTick(prop);
@@ -5909,7 +5909,7 @@ glabel propsTickPlayer
// } else if (prop->type == PROPTYPE_SMOKE) {
// op = smokeTickPlayer(prop);
// } else if (prop->type == PROPTYPE_PLAYER) {
// splatTick(prop);
// splatTickChr(prop);
// op = playerTickThirdPerson(prop);
// }
//
+44 -43
View File
@@ -25,7 +25,7 @@ u32 var8007f8b0 = 0x43340000;
u32 var8007f8b4 = 0x40a00000;
u32 var8007f8b8 = 0x42480000;
void splatTick(struct prop *prop)
void splatTickChr(struct prop *prop)
{
struct chrdata *chr = prop->chr;
struct chrdata *attacker = chr->lastattacker;
@@ -64,6 +64,7 @@ void splatTick(struct prop *prop)
chr->deaddropsplatsadded += splatsCreate(1, 1.1f, prop, NULL, 0, 0, isskedar, 1, TICKS(150), attacker, random() & 8);
}
} else {
// Consider creating a wounded drop
u32 value = chr->bulletstaken * chr->tickssincesplat;
if (value > TICKS(240)) {
@@ -72,10 +73,10 @@ void splatTick(struct prop *prop)
if (dist > 40) {
addmore = true;
chr->splatsdroppedhe = 0;
} else if (chr->splatsdroppedhe < 8) {
chr->splatsdroppedhere = 0;
} else if (chr->splatsdroppedhere < 8) {
addmore = true;
chr->splatsdroppedhe++;
chr->splatsdroppedhere++;
}
if (addmore) {
@@ -95,7 +96,7 @@ void splatTick(struct prop *prop)
chr->tickssincesplat += g_Vars.lvupdate240_60;
}
void splatsCreateForChrHit(struct prop *prop, struct splat *arg1, struct coord *arg2, struct coord *arg3, s32 arg4, s32 arg5, struct chrdata *arg6)
void splatsCreateForChrHit(struct prop *prop, struct shotdata *arg1, struct coord *arg2, struct coord *arg3, s32 arg4, s32 arg5, struct chrdata *arg6)
{
#if VERSION != VERSION_JPN_FINAL
struct chrdata *chr = prop->chr;
@@ -114,30 +115,30 @@ void splatsCreateForChrHit(struct prop *prop, struct splat *arg1, struct coord *
#endif
}
s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct splat *arg3, struct coord *arg4, struct coord *arg5, s32 arg6, s32 arg7, s32 arg8, struct chrdata *arg9, s32 arg10)
s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *arg3, struct coord *arg4, struct coord *arg5, s32 arg6, s32 arg7, s32 arg8, struct chrdata *arg9, s32 arg10)
{
#if VERSION == VERSION_JPN_FINAL
return 0;
#else
s32 i;
s32 j;
struct splat stacksplat;
struct splat *splat = arg7 == 0 ? arg3 : &stacksplat;
f32 spfc[3];
f32 spf0[3];
f32 spe4[3];
struct shotdata stackshotdata;
struct shotdata *shotdata = arg7 == 0 ? arg3 : &stackshotdata;
struct coord spfc;
struct coord spf0;
struct coord spe4;
Mtxf spa4;
s32 numdropped = 0;
f32 dist;
s32 i;
s32 j;
if (arg7 == 0) {
dist = coordsGetDistance(&splat->unk01c, arg5);
dist = coordsGetDistance(&shotdata->gunpos, arg5);
for (i = 0; i < 3; i++) {
spfc[i] = ((f32 *)&splat->unk028)[i];
spf0[i] = ((f32 *)&splat->unk00c)[i];
((f32 *)&splat->unk01c)[i] = ((f32 *)arg5)[i];
((f32 *)&splat->unk000)[i] = ((f32 *)arg4)[i];
spfc.f[i] = shotdata->dir.f[i];
spf0.f[i] = shotdata->unk0c.f[i];
shotdata->gunpos.f[i] = arg5->f[i];
shotdata->unk00.f[i] = arg4->f[i];
}
} else {
f32 extraheight;
@@ -150,42 +151,41 @@ s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct splat *arg3, struc
dist = 0.7f;
splat->unk028.x = 0; spfc[0] = 0;
splat->unk028.y = -1; spfc[1] = -1;
splat->unk028.z = 0; spfc[2] = 0;
spfc.x = shotdata->dir.x = 0;
spfc.y = shotdata->dir.y = -1;
spfc.z = shotdata->dir.z = 0;
splat->unk00c.x = 0; spf0[0] = 0;
splat->unk00c.y = -1; spf0[1] = -1;
splat->unk00c.z = 0; spf0[2] = 0;
spf0.x = shotdata->unk0c.x = 0;
spf0.y = shotdata->unk0c.y = -1;
spf0.z = shotdata->unk0c.z = 0;
splat->unk01c.x = prop->pos.x;
splat->unk01c.y = prop->pos.y + extraheight;
splat->unk01c.z = prop->pos.z;
shotdata->gunpos.x = prop->pos.x;
shotdata->gunpos.y = prop->pos.y + extraheight;
shotdata->gunpos.z = prop->pos.z;
splat->unk000.x = prop->pos.x;
splat->unk000.y = prop->pos.y + extraheight;
splat->unk000.z = prop->pos.z;
shotdata->unk00.x = prop->pos.x;
shotdata->unk00.y = prop->pos.y + extraheight;
shotdata->unk00.z = prop->pos.z;
}
for (i = 0; i < qty; i++) {
for (j = 0; j < 3; j++) {
f32 rand = RANDOMFRAC();
spe4[j] = (rand * var8007f8a8 + rand * var8007f8a8 - var8007f8a8) * 0.017453292384744f;
spe4.f[j] = (RANDOMFRAC() * var8007f8a8 * 2.0f - var8007f8a8) * 0.017453292384744f;
}
mtx4LoadRotation((struct coord *)spe4, &spa4);
mtx4RotateVec(&spa4, (struct coord *)spfc, &splat->unk028);
mtx4RotateVec(&spa4, (struct coord *)spf0, &splat->unk00c);
mtx4LoadRotation(&spe4, &spa4);
mtx4RotateVec(&spa4, &spfc, &shotdata->dir);
mtx4RotateVec(&spa4, &spf0, &shotdata->unk0c);
#if VERSION >= VERSION_NTSC_1_0
func0f177164(&splat->unk028, &splat->unk028, 403, "splat.c");
func0f177164(&splat->unk00c, &splat->unk00c, 404, "splat.c");
func0f177164(&shotdata->dir, &shotdata->dir, 403, "splat.c");
func0f177164(&shotdata->unk0c, &shotdata->unk0c, 404, "splat.c");
#else
func0f177164(&splat->unk028, &splat->unk028, 405, "splat.c");
func0f177164(&splat->unk00c, &splat->unk00c, 406, "splat.c");
func0f177164(&shotdata->dir, &shotdata->dir, 405, "splat.c");
func0f177164(&shotdata->unk0c, &shotdata->unk0c, 406, "splat.c");
#endif
if (func0f149274(arg1, prop, splat, dist, arg6, arg7, arg8, arg9, arg10)) {
if (func0f149274(arg1, prop, shotdata, dist, arg6, arg7, arg8, arg9, arg10)) {
numdropped++;
}
}
@@ -204,7 +204,6 @@ s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct splat *arg3, struc
}
const char var7f1b5fe0[] = "Splat : Out of range\n";
const char var7f1b5ff8[] = "Splat_ResetChr : Reset One Char : chrdata = %x\n";
#if VERSION == VERSION_JPN_FINAL
void func0f149250jf(void);
@@ -945,14 +944,16 @@ glabel var7f1b6048
);
#endif
void chrInitSplats(struct chrdata *chr)
void splatResetChr(struct chrdata *chr)
{
osSyncPrintf("Splat_ResetChr : Reset One Char : chrdata = %x\n", (u32)chr);
chr->bulletstaken = 0;
chr->tickssincesplat = 0;
chr->stdsplatsadded = 0;
chr->woundedsplatsadded = 0;
chr->deaddropsplatsadded = 0;
chr->splatsdroppedhe = 0;
chr->splatsdroppedhere = 0;
chr->lastdroppos.x = 0;
chr->lastdroppos.y = 0;
chr->lastdroppos.z = 0;
+5 -5
View File
@@ -4,13 +4,13 @@
#include "data.h"
#include "types.h"
void splatTick(struct prop *prop);
void splatsCreateForChrHit(struct prop *prop, struct splat *arg1, struct coord *arg2, struct coord *arg3, s32 arg4, s32 arg5, struct chrdata *arg6);
s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct splat *arg3, struct coord *arg4, struct coord *arg5, s32 arg6, s32 arg7, s32 arg8, struct chrdata *arg9, s32 arg10);
bool func0f149274(f32 arg0, struct prop *prop, struct splat *arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6, struct chrdata *arg7, s32 arg8);
void splatTickChr(struct prop *prop);
void splatsCreateForChrHit(struct prop *prop, struct shotdata *arg1, struct coord *arg2, struct coord *arg3, s32 arg4, s32 arg5, struct chrdata *arg6);
s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *arg3, struct coord *arg4, struct coord *arg5, s32 arg6, s32 arg7, s32 arg8, struct chrdata *arg9, s32 arg10);
bool func0f149274(f32 arg0, struct prop *prop, struct shotdata *arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6, struct chrdata *arg7, s32 arg8);
void splatsTick(void);
u32 func0f14986c(void);
void chrInitSplats(struct chrdata *chr);
void splatResetChr(struct chrdata *chr);
void pheadInit2(void);
#endif
+1 -270
View File
@@ -1313,7 +1313,7 @@ struct chrdata {
/*0x334*/ u8 bulletstaken;
/*0x335*/ u8 woundedsplatsadded;
/*0x336*/ u16 tickssincesplat;
/*0x338*/ u8 splatsdroppedhe;
/*0x338*/ u8 splatsdroppedhere;
/*0x339*/ u8 stdsplatsadded;
/*0x33a*/ u8 deaddropsplatsadded;
/*0x33b*/ s8 aimtesttimer60;
@@ -5514,275 +5514,6 @@ struct var800ab718 {
s32 lrt;
};
// This struct might be the same struct as shotdata
struct splat {
/*0x000*/ struct coord unk000;
/*0x00c*/ struct coord unk00c;
/*0x018*/ u32 unk018;
/*0x01c*/ struct coord unk01c;
/*0x028*/ struct coord unk028;
/*0x034*/ u32 unk034;
/*0x038*/ u32 unk038;
/*0x03c*/ u32 unk03c;
/*0x040*/ u32 unk040;
/*0x044*/ u32 unk044;
/*0x048*/ u32 unk048;
/*0x04c*/ u32 unk04c;
/*0x050*/ u32 unk050;
/*0x054*/ u32 unk054;
/*0x058*/ u32 unk058;
/*0x05c*/ u32 unk05c;
/*0x060*/ u32 unk060;
/*0x064*/ u32 unk064;
/*0x068*/ u32 unk068;
/*0x06c*/ u32 unk06c;
/*0x070*/ u32 unk070;
/*0x074*/ u32 unk074;
/*0x078*/ u32 unk078;
/*0x07c*/ u32 unk07c;
/*0x080*/ u32 unk080;
/*0x084*/ u32 unk084;
/*0x088*/ u32 unk088;
/*0x08c*/ u32 unk08c;
/*0x090*/ u32 unk090;
/*0x094*/ u32 unk094;
/*0x098*/ u32 unk098;
/*0x09c*/ u32 unk09c;
/*0x0a0*/ u32 unk0a0;
/*0x0a4*/ u32 unk0a4;
/*0x0a8*/ u32 unk0a8;
/*0x0ac*/ u32 unk0ac;
/*0x0b0*/ u32 unk0b0;
/*0x0b4*/ u32 unk0b4;
/*0x0b8*/ u32 unk0b8;
/*0x0bc*/ u32 unk0bc;
/*0x0c0*/ u32 unk0c0;
/*0x0c4*/ u32 unk0c4;
/*0x0c8*/ u32 unk0c8;
/*0x0cc*/ u32 unk0cc;
/*0x0d0*/ u32 unk0d0;
/*0x0d4*/ u32 unk0d4;
/*0x0d8*/ u32 unk0d8;
/*0x0dc*/ u32 unk0dc;
/*0x0e0*/ u32 unk0e0;
/*0x0e4*/ u32 unk0e4;
/*0x0e8*/ u32 unk0e8;
/*0x0ec*/ u32 unk0ec;
/*0x0f0*/ u32 unk0f0;
/*0x0f4*/ u32 unk0f4;
/*0x0f8*/ u32 unk0f8;
/*0x0fc*/ u32 unk0fc;
/*0x100*/ u32 unk100;
/*0x104*/ u32 unk104;
/*0x108*/ u32 unk108;
/*0x10c*/ u32 unk10c;
/*0x110*/ u32 unk110;
/*0x114*/ u32 unk114;
/*0x118*/ u32 unk118;
/*0x11c*/ u32 unk11c;
/*0x120*/ u32 unk120;
/*0x124*/ u32 unk124;
/*0x128*/ u32 unk128;
/*0x12c*/ u32 unk12c;
/*0x130*/ u32 unk130;
/*0x134*/ u32 unk134;
/*0x138*/ u32 unk138;
/*0x13c*/ u32 unk13c;
/*0x140*/ u32 unk140;
/*0x144*/ u32 unk144;
/*0x148*/ u32 unk148;
/*0x14c*/ u32 unk14c;
/*0x150*/ u32 unk150;
/*0x154*/ u32 unk154;
/*0x158*/ u32 unk158;
/*0x15c*/ u32 unk15c;
/*0x160*/ u32 unk160;
/*0x164*/ u32 unk164;
/*0x168*/ u32 unk168;
/*0x16c*/ u32 unk16c;
/*0x170*/ u32 unk170;
/*0x174*/ u32 unk174;
/*0x178*/ u32 unk178;
/*0x17c*/ u32 unk17c;
/*0x180*/ u32 unk180;
/*0x184*/ u32 unk184;
/*0x188*/ u32 unk188;
/*0x18c*/ u32 unk18c;
/*0x190*/ u32 unk190;
/*0x194*/ u32 unk194;
/*0x198*/ u32 unk198;
/*0x19c*/ u32 unk19c;
/*0x1a0*/ u32 unk1a0;
/*0x1a4*/ u32 unk1a4;
/*0x1a8*/ u32 unk1a8;
/*0x1ac*/ u32 unk1ac;
/*0x1b0*/ u32 unk1b0;
/*0x1b4*/ u32 unk1b4;
/*0x1b8*/ u32 unk1b8;
/*0x1bc*/ u32 unk1bc;
/*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*/ u32 unk2c4;
/*0x2c8*/ u32 unk2c8;
/*0x2cc*/ u32 unk2cc;
/*0x2d0*/ u32 unk2d0;
/*0x2d4*/ u32 unk2d4;
/*0x2d8*/ u32 unk2d8;
/*0x2dc*/ u32 unk2dc;
/*0x2e0*/ u32 unk2e0;
/*0x2e4*/ u32 unk2e4;
/*0x2e8*/ u32 unk2e8;
/*0x2ec*/ u32 unk2ec;
/*0x2f0*/ u32 unk2f0;
/*0x2f4*/ u32 unk2f4;
/*0x2f8*/ u32 unk2f8;
/*0x2fc*/ u32 unk2fc;
/*0x300*/ u32 unk300;
/*0x304*/ u32 unk304;
/*0x308*/ u32 unk308;
/*0x30c*/ u32 unk30c;
/*0x310*/ u32 unk310;
/*0x314*/ u32 unk314;
/*0x318*/ u32 unk318;
/*0x31c*/ u32 unk31c;
/*0x320*/ u32 unk320;
/*0x324*/ u32 unk324;
/*0x328*/ u32 unk328;
/*0x32c*/ u32 unk32c;
/*0x330*/ u32 unk330;
/*0x334*/ u32 unk334;
/*0x338*/ u32 unk338;
/*0x33c*/ u32 unk33c;
/*0x340*/ u32 unk340;
/*0x344*/ u32 unk344;
/*0x348*/ u32 unk348;
/*0x34c*/ u32 unk34c;
/*0x350*/ u32 unk350;
/*0x354*/ u32 unk354;
/*0x358*/ u32 unk358;
/*0x35c*/ u32 unk35c;
/*0x360*/ u32 unk360;
/*0x364*/ u32 unk364;
/*0x368*/ u32 unk368;
/*0x36c*/ u32 unk36c;
/*0x370*/ u32 unk370;
/*0x374*/ u32 unk374;
/*0x378*/ u32 unk378;
/*0x37c*/ u32 unk37c;
/*0x380*/ u32 unk380;
/*0x384*/ u32 unk384;
/*0x388*/ u32 unk388;
/*0x38c*/ u32 unk38c;
/*0x390*/ u32 unk390;
/*0x394*/ u32 unk394;
/*0x398*/ u32 unk398;
/*0x39c*/ u32 unk39c;
/*0x3a0*/ u32 unk3a0;
/*0x3a4*/ u32 unk3a4;
/*0x3a8*/ u32 unk3a8;
/*0x3ac*/ u32 unk3ac;
/*0x3b0*/ u32 unk3b0;
/*0x3b4*/ u32 unk3b4;
/*0x3b8*/ u32 unk3b8;
/*0x3bc*/ u32 unk3bc;
/*0x3c0*/ u32 unk3c0;
/*0x3c4*/ u32 unk3c4;
/*0x3c8*/ u32 unk3c8;
/*0x3cc*/ u32 unk3cc;
/*0x3d0*/ u32 unk3d0;
/*0x3d4*/ u32 unk3d4;
/*0x3d8*/ u32 unk3d8;
/*0x3dc*/ u32 unk3dc;
/*0x3e0*/ u32 unk3e0;
/*0x3e4*/ u32 unk3e4;
/*0x3e8*/ u32 unk3e8;
/*0x3ec*/ u32 unk3ec;
/*0x3f0*/ u32 unk3f0;
/*0x3f4*/ u32 unk3f4;
/*0x3f8*/ u32 unk3f8;
/*0x3fc*/ u32 unk3fc;
/*0x400*/ u32 unk400;
/*0x404*/ u32 unk404;
/*0x408*/ u32 unk408;
/*0x40c*/ u32 unk40c;
/*0x410*/ u32 unk410;
/*0x414*/ u32 unk414;
/*0x418*/ u32 unk418;
/*0x41c*/ u32 unk41c;
/*0x420*/ u32 unk420;
/*0x424*/ u32 unk424;
/*0x428*/ u32 unk428;
/*0x42c*/ u32 unk42c;
/*0x430*/ u32 unk430;
/*0x434*/ u32 unk434;
/*0x438*/ u32 unk438;
/*0x43c*/ u32 unk43c;
/*0x440*/ u32 unk440;
};
struct menurendercontext {
s16 x;
s16 y;