From c34669cac67381affd5e1b61f3caea03ea851d0a Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 16 Feb 2020 17:14:11 +1000 Subject: [PATCH] Decompile bodyGetHead --- src/game/chr/chraction.c | 2 +- src/game/data/data_0083d0.c | 8 +- src/game/data/data_020df0.c | 309 ++++++++++++++-------------- src/game/game_00b820.c | 28 +-- src/game/game_02cde0.c | 117 ++++------- src/game/game_0b63b0.c | 24 +-- src/game/game_0f09f0.c | 4 +- src/gvars/gvars.c | 22 +- src/include/game/data/data_0083d0.h | 5 +- src/include/game/data/data_020df0.h | 2 +- src/include/game/game_02cde0.h | 2 +- src/include/gvars/gvars.h | 6 +- src/include/types.h | 5 +- 13 files changed, 236 insertions(+), 298 deletions(-) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 6189d704f..8f4fb6564 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -32502,7 +32502,7 @@ glabel chrSpawnAtCoord /* f04b31c: 8fae007c */ lw $t6,0x7c($sp) /* f04b320: 05c30006 */ bgezl $t6,.L0f04b33c /* f04b324: c4640000 */ lwc1 $f4,0x0($v1) -/* f04b328: 0fc0b505 */ jal func0f02d414 +/* f04b328: 0fc0b505 */ jal bodyGetHead /* f04b32c: 8fa40078 */ lw $a0,0x78($sp) /* f04b330: 8fa30080 */ lw $v1,0x80($sp) /* f04b334: afa2007c */ sw $v0,0x7c($sp) diff --git a/src/game/data/data_0083d0.c b/src/game/data/data_0083d0.c index f19b65e34..591f1f4d3 100644 --- a/src/game/data/data_0083d0.c +++ b/src/game/data/data_0083d0.c @@ -578,11 +578,9 @@ u32 var80062c74 = 0x00000024; u32 var80062c78 = 0x0000002c; u32 var80062c7c = 0xffffffff; u32 var80062c80 = 0x00000000; -u32 var80062c84 = 0x00000000; -u32 var80062c88 = 0x00000000; -u32 var80062c8c = 0x00000045; -u32 var80062c90 = 0x00000046; -u32 var80062c94 = 0x00000047; +u32 g_HeadsAIndex = 0x00000000; +u32 g_HeadsBIndex = 0x00000000; +u32 g_FemaleHeads[3] = {HEAD_ALEX, HEAD_JULIANNE, HEAD_LAURA}; u32 var80062c98 = 0x00000000; u32 var80062c9c = 0x00000000; f32 var80062ca0 = 1; diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index ef2375c03..538339c40 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -5470,163 +5470,158 @@ struct stagethinglist stagethinglist_22f1c = { }; // 22f24 -struct bodytableentry bodytable[] = { - // unk00, bodyfileid, unk04, unk08, unk0c, handfileid - { /*0x0000*/ 0x829c, 0x0047, 1, 1.0446009635925, 0, 0x0538 }, - { /*0x0001*/ 0x829c, 0x0199, 1, 1.0300469398499, 0, 0x0532 }, - { /*0x0002*/ 0x8294, 0x019b, 1, 1.0572769641876, 0, 0x0538 }, - { /*0x0003*/ 0x829c, 0x019a, 1, 1.0399061441422, 0, 0x0538 }, - { /*0x0004*/ 0x4434, 0x019c, 1, 1, 0, 0x0000 }, - { /*0x0005*/ 0xcc6c, 0x019d, 1, 1, 0, 0x0000 }, - { /*0x0006*/ 0xc034, 0x019e, 1, 1, 0, 0x0000 }, - { /*0x0007*/ 0xc034, 0x019f, 1, 1, 0, 0x0000 }, - { /*0x0008*/ 0xd434, 0x01a0, 1, 1, 0, 0x0000 }, - { /*0x0009*/ 0xc034, 0x01a1, 1, 1, 0, 0x0000 }, - { /*0x000a*/ 0xc034, 0x01a2, 1, 1, 0, 0x0000 }, - { /*0x000b*/ 0xc034, 0x01a3, 1, 1, 0, 0x0000 }, - { /*0x000c*/ 0x4434, 0x01a4, 1, 1, 0, 0x0000 }, - { /*0x000d*/ 0x4434, 0x01a5, 1, 1, 0, 0x0000 }, - { /*0x000e*/ 0x5034, 0x01a6, 1, 1, 0, 0x0000 }, - { /*0x000f*/ 0xcc6c, 0x01a7, 1, 1, 0, 0x0000 }, - { /*0x0010*/ 0x4034, 0x01a8, 1, 1, 0, 0x0000 }, - { /*0x0011*/ 0xc034, 0x01a9, 1, 1, 0, 0x0000 }, - { /*0x0012*/ 0xc034, 0x01b2, 1, 1, 0, 0x0000 }, - { /*0x0013*/ 0xc034, 0x01b3, 1, 1, 0, 0x0000 }, - { /*0x0014*/ 0xc034, 0x01bc, 1, 1, 0, 0x0000 }, - { /*0x0015*/ 0xcc34, 0x01bd, 1, 1, 0, 0x0000 }, - { /*0x0016*/ 0xc034, 0x01be, 1, 1, 0, 0x0000 }, - { /*0x0017*/ 0xc034, 0x01c0, 1, 1, 0, 0x0000 }, - { /*0x0018*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x0019*/ 0x4034, 0x01c5, 1, 1, 0, 0x0000 }, - { /*0x001a*/ 0xc034, 0x01cd, 1, 1, 0, 0x0000 }, - { /*0x001b*/ 0xc034, 0x01ce, 1, 1, 0, 0x0000 }, - { /*0x001c*/ 0xc034, 0x01cf, 1, 1, 0, 0x0000 }, - { /*0x001d*/ 0xc034, 0x01d0, 1, 1, 0, 0x0000 }, - { /*0x001e*/ 0xc034, 0x0232, 1, 1, 0, 0x0000 }, - { /*0x001f*/ 0xc034, 0x0238, 1, 1, 0, 0x0000 }, - { /*0x0020*/ 0x4434, 0x023a, 1, 1, 0, 0x0000 }, - { /*0x0021*/ 0x4434, 0x023d, 1, 1, 0, 0x0000 }, - { /*0x0022*/ 0xc034, 0x0243, 1, 1, 0, 0x0000 }, - { /*0x0023*/ 0xc034, 0x0245, 1, 1, 0, 0x0000 }, - { /*0x0024*/ 0x4434, 0x0247, 1, 1, 0, 0x0000 }, - { /*0x0025*/ 0xc034, 0x0262, 1, 1, 0, 0x0000 }, - { /*0x0026*/ 0xc034, 0x0267, 1, 1, 0, 0x0000 }, - { /*0x0027*/ 0xc034, 0x0268, 1, 1, 0, 0x0000 }, - { /*0x0028*/ 0xc034, 0x033a, 1, 1, 0, 0x0000 }, - { /*0x0029*/ 0xcc6c, 0x033b, 1, 1, 0, 0x0000 }, - { /*0x002a*/ 0xc034, 0x0345, 1, 1, 0, 0x0000 }, - { /*0x002b*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x002c*/ 0x4434, 0x04a7, 1, 1, 0, 0x0000 }, - { /*0x002d*/ 0xc034, 0x04a8, 1, 1, 0, 0x0000 }, - { /*0x002e*/ 0xc034, 0x04ac, 1, 1, 0, 0x0000 }, - { /*0x002f*/ 0x4434, 0x04ad, 1, 1, 0, 0x0000 }, - { /*0x0030*/ 0xc034, 0x04ae, 1, 1, 0, 0x0000 }, - { /*0x0031*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x0032*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x0033*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x0034*/ 0xc034, 0x01c2, 1, 1, 0, 0x0000 }, - { /*0x0035*/ 0xc034, 0x050d, 1, 1, 0, 0x0000 }, - { /*0x0036*/ 0xc034, 0x050e, 1, 1, 0, 0x0000 }, - { /*0x0037*/ 0xc034, 0x050f, 1, 1, 0, 0x0000 }, - { /*0x0038*/ 0x4434, 0x0510, 1, 1, 0, 0x0000 }, - { /*0x0039*/ 0xc034, 0x0511, 1, 1, 0, 0x0000 }, - { /*0x003a*/ 0xcc6c, 0x0553, 1, 1, 0, 0x0000 }, - { /*0x003b*/ 0xc034, 0x0554, 1, 1, 0, 0x0000 }, - { /*0x003c*/ 0x4434, 0x055a, 1, 1, 0, 0x0000 }, - { /*0x003d*/ 0xc034, 0x055b, 1, 1, 0, 0x0000 }, - { /*0x003e*/ 0x4434, 0x0561, 1, 1, 0, 0x0000 }, - { /*0x003f*/ 0xc034, 0x07c5, 1, 1, 0, 0x0000 }, - { /*0x0040*/ 0xc034, 0x07c6, 1, 1, 0, 0x0000 }, - { /*0x0041*/ 0xc034, 0x07bd, 1, 1, 0, 0x0000 }, - { /*0x0042*/ 0xc034, 0x07be, 1, 1, 0, 0x0000 }, - { /*0x0043*/ 0xc034, 0x07bf, 1, 1, 0, 0x0000 }, - { /*0x0044*/ 0xc034, 0x07c0, 1, 1, 0, 0x0000 }, - { /*0x0045*/ 0x4834, 0x07c1, 1, 1, 0, 0x0000 }, - { /*0x0046*/ 0x4834, 0x07c2, 1, 1, 0, 0x0000 }, - { /*0x0047*/ 0x4834, 0x07c3, 1, 1, 0, 0x0000 }, - { /*0x0048*/ 0xc034, 0x07c4, 1, 1, 0, 0x0000 }, - { /*0x0049*/ 0xc034, 0x07cd, 1, 1, 0, 0x0000 }, - { /*0x004a*/ 0xc034, 0x07ce, 1, 1, 0, 0x0000 }, - { /*0x004b*/ 0xc034, 0x07cf, 1, 1, 0, 0x0000 }, - { /*0x004c*/ 0xc034, 0x07d0, 1, 1, 0, 0x0000 }, - { /*0x004d*/ 0xc034, 0x07d1, 1, 1, 0, 0x0000 }, - { /*0x004e*/ 0xc034, 0x07d2, 1, 1, 0, 0x0000 }, - { /*0x004f*/ 0xc034, 0x07d3, 1, 1, 0, 0x0000 }, - { /*0x0050*/ 0xc034, 0x07d4, 1, 1, 0, 0x0000 }, - { /*0x0051*/ 0xc034, 0x07d5, 1, 1, 0, 0x0000 }, - { /*0x0052*/ 0xc034, 0x07d6, 1, 1, 0, 0x0000 }, - { /*0x0053*/ 0xc034, 0x07d7, 1, 1, 0, 0x0000 }, - { /*0x0054*/ 0xc034, 0x07d8, 1, 1, 0, 0x0000 }, - { /*0x0055*/ 0xc034, 0x07d9, 1, 1, 0, 0x0000 }, -}; - -// 23654 -struct bodytableentry bodytable2[] = { - { /*0x0056*/ 0x067c, 0x0042, 1, 0.95305162668228, 0, 0x04e5 }, - { /*0x0057*/ 0x8da8, 0x004a, 1, 0.57276993989944, 0, 0x0764 }, - { /*0x0058*/ 0xa274, 0x003f, 1, 0.92769956588745, 0, 0x0766 }, - { /*0x0059*/ 0x827c, 0x0051, 1, 0.92769956588745, 0, 0x0766 }, - { /*0x005a*/ 0x8268, 0x0040, 1, 0.85915493965149, 0, 0x0531 }, - { /*0x005b*/ 0x96a4, 0x004e, 1, 1.1032863855362, 0, 0x0532 }, - { /*0x005c*/ 0xa27c, 0x0053, 1, 1, 0, 0x0000 }, - { /*0x005d*/ 0x8284, 0x0057, 1, 0.93896716833115, 0, 0x052a }, - { /*0x005e*/ 0xa274, 0x0045, 1, 0.93896716833115, 0, 0x0769 }, - { /*0x005f*/ 0xa274, 0x004d, 1, 0.93896716833115, 0, 0x0532 }, - { /*0x0060*/ 0xa278, 0x0054, 1, 0.92769956588745, 0, 0x0768 }, - { /*0x0061*/ 0x067c, 0x0043, 1, 0.95305162668228, 0, 0x052b }, - { /*0x0062*/ 0x067c, 0x0044, 1, 0.95305162668228, 0, 0x052c }, - { /*0x0063*/ 0x8274, 0x004f, 1, 0.93896716833115, 0, 0x052b }, - { /*0x0064*/ 0x8274, 0x0050, 1, 0.93896716833115, 0, 0x052b }, - { /*0x0065*/ 0x0630, 0x0052, 1, 0.87323945760727, 0, 0x052b }, - { /*0x0066*/ 0x129c, 0x0041, 1, 0.98591554164886, 0, 0x0537 }, - { /*0x0067*/ 0x8da8, 0x0056, 1, 0.57276993989944, 0, 0x0764 }, - { /*0x0068*/ 0x2a80, 0x004c, 1, 0.96713620424271, 0, 0x052c }, - { /*0x0069*/ 0xa274, 0x0194, 1, 0.93896716833115, 0, 0x053b }, - { /*0x006a*/ 0xa280, 0x0046, 1, 0.93427228927612, 0, 0x0538 }, - { /*0x006b*/ 0xc27c, 0x0048, 1, 1, 0, 0x0000 }, - { /*0x006c*/ 0x827c, 0x004b, 1, 1, 0, 0x0000 }, - { /*0x006d*/ 0x067c, 0x01b1, 1, 0.95305162668228, 0, 0x052b }, - { /*0x006e*/ 0xa280, 0x01bf, 1, 0.93896716833115, 0, 0x0538 }, - { /*0x006f*/ 0xa274, 0x01c4, 1, 0.93896716833115, 0, 0x0767 }, - { /*0x0070*/ 0xc27c, 0x0055, 1, 1, 0, 0x0000 }, - { /*0x0071*/ 0xa26c, 0x01c8, 1, 0.93896716833115, 0, 0x076a }, - { /*0x0072*/ 0xa27c, 0x01c9, 1, 0.93896716833115, 0, 0x0535 }, - { /*0x0073*/ 0xa27c, 0x01cb, 1, 0.93896716833115, 0, 0x0533 }, - { /*0x0074*/ 0xa27c, 0x01cc, 1, 0.93896716833115, 0, 0x052b }, - { /*0x0075*/ 0x8274, 0x0231, 1, 0.93896716833115, 0, 0x076b }, - { /*0x0076*/ 0x827c, 0x0236, 1, 1, 0, 0x0000 }, - { /*0x0077*/ 0x8264, 0x0237, 1, 0.89201879501343, 0, 0x052b }, - { /*0x0078*/ 0x063c, 0x0239, 1, 0.85446006059647, 0, 0x052b }, - { /*0x0079*/ 0x827c, 0x023b, 1, 0.93896716833115, 0, 0x052e }, - { /*0x007a*/ 0x063c, 0x023c, 1, 0.85446006059647, 0, 0x053a }, - { /*0x007b*/ 0x827c, 0x0240, 0.75, 0.5, 0, 0x0000 }, - { /*0x007c*/ 0x827c, 0x0242, 1, 0.93896716833115, 0, 0x0531 }, - { /*0x007d*/ 0x827c, 0x0244, 1, 0.93896716833115, 0, 0x0531 }, - { /*0x007e*/ 0x0638, 0x0246, 1, 0.85446006059647, 0, 0x052b }, - { /*0x007f*/ 0x827c, 0x0261, 1, 0.93896716833115, 0, 0x076c }, - { /*0x0080*/ 0xa27c, 0x0263, 1, 0.93896716833115, 0, 0x0539 }, - { /*0x0081*/ 0xa278, 0x0264, 1, 0.93896716833115, 0, 0x076c }, - { /*0x0082*/ 0xa278, 0x0265, 1, 0.93896716833115, 0, 0x0536 }, - { /*0x0083*/ 0xada8, 0x0266, 1, 0.57276993989944, 0, 0x0764 }, - { /*0x0084*/ 0x827c, 0x0339, 1, 0.93896716833115, 0, 0x04e5 }, - { /*0x0085*/ 0x827c, 0x0339, 1, 0.93896716833115, 0, 0x052e }, - { /*0x0086*/ 0x067c, 0x033c, 1, 0.95305162668228, 0, 0x0530 }, - { /*0x0087*/ 0x067c, 0x049e, 1, 0.95305162668228, 0, 0x0529 }, - { /*0x0088*/ 0x067c, 0x049f, 1, 0.95305162668228, 0, 0x0529 }, - { /*0x0089*/ 0x067c, 0x04a0, 1, 0.95305162668228, 0, 0x0536 }, - { /*0x008a*/ 0x067c, 0x04a1, 1, 0.95305162668228, 0, 0x0532 }, - { /*0x008b*/ 0x267c, 0x04a2, 1, 0.87323945760727, 0, 0x0532 }, - { /*0x008c*/ 0xa27c, 0x04a3, 1, 0.93896716833115, 0, 0x052d }, - { /*0x008d*/ 0x827c, 0x04a4, 1, 0.88262909650803, 0, 0x0530 }, - { /*0x008e*/ 0xa27c, 0x04a5, 1, 0.93896716833115, 0, 0x0534 }, - { /*0x008f*/ 0x267c, 0x04a6, 1, 0.86854463815689, 0, 0x0534 }, - { /*0x0090*/ 0x827c, 0x04a9, 1, 0.85915493965149, 0, 0x0532 }, - { /*0x0091*/ 0x827c, 0x04aa, 1, 0.93896716833115, 0, 0x0766 }, - { /*0x0092*/ 0xa27c, 0x04ab, 1, 0.93896716833115, 0, 0x076d }, - { /*0x0093*/ 0x827c, 0x050b, 1, 1.25, 0, 0x0000 }, - { /*0x0094*/ 0x8da8, 0x050c, 1, 0.57276993989944, 0, 0x0764 }, - { /*0x0095*/ 0x067c, 0x0559, 1, 0.95305162668228, 0, 0x052b }, - { /*0x0096*/ 0x067c, 0x0796, 1, 0.95305162668228, 0, 0x052f }, +struct body g_Bodies[] = { + { /*0x0000*/ 1, 0x029c, 0x0047, 1, 1.0446009635925, 0, 0x0538 }, + { /*0x0001*/ 1, 0x029c, 0x0199, 1, 1.0300469398499, 0, 0x0532 }, + { /*0x0002*/ 1, 0x0294, 0x019b, 1, 1.0572769641876, 0, 0x0538 }, + { /*0x0003*/ 1, 0x029c, 0x019a, 1, 1.0399061441422, 0, 0x0538 }, + { /*0x0004*/ 0, 0x4434, 0x019c, 1, 1, 0, 0x0000 }, + { /*0x0005*/ 1, 0x4c6c, 0x019d, 1, 1, 0, 0x0000 }, + { /*0x0006*/ 1, 0x4034, 0x019e, 1, 1, 0, 0x0000 }, + { /*0x0007*/ 1, 0x4034, 0x019f, 1, 1, 0, 0x0000 }, + { /*0x0008*/ 1, 0x5434, 0x01a0, 1, 1, 0, 0x0000 }, + { /*0x0009*/ 1, 0x4034, 0x01a1, 1, 1, 0, 0x0000 }, + { /*0x000a*/ 1, 0x4034, 0x01a2, 1, 1, 0, 0x0000 }, + { /*0x000b*/ 1, 0x4034, 0x01a3, 1, 1, 0, 0x0000 }, + { /*0x000c*/ 0, 0x4434, 0x01a4, 1, 1, 0, 0x0000 }, + { /*0x000d*/ 0, 0x4434, 0x01a5, 1, 1, 0, 0x0000 }, + { /*0x000e*/ 0, 0x5034, 0x01a6, 1, 1, 0, 0x0000 }, + { /*0x000f*/ 1, 0x4c6c, 0x01a7, 1, 1, 0, 0x0000 }, + { /*0x0010*/ 0, 0x4034, 0x01a8, 1, 1, 0, 0x0000 }, + { /*0x0011*/ 1, 0x4034, 0x01a9, 1, 1, 0, 0x0000 }, + { /*0x0012*/ 1, 0x4034, 0x01b2, 1, 1, 0, 0x0000 }, + { /*0x0013*/ 1, 0x4034, 0x01b3, 1, 1, 0, 0x0000 }, + { /*0x0014*/ 1, 0x4034, 0x01bc, 1, 1, 0, 0x0000 }, + { /*0x0015*/ 1, 0x4c34, 0x01bd, 1, 1, 0, 0x0000 }, + { /*0x0016*/ 1, 0x4034, 0x01be, 1, 1, 0, 0x0000 }, + { /*0x0017*/ 1, 0x4034, 0x01c0, 1, 1, 0, 0x0000 }, + { /*0x0018*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x0019*/ 0, 0x4034, 0x01c5, 1, 1, 0, 0x0000 }, + { /*0x001a*/ 1, 0x4034, 0x01cd, 1, 1, 0, 0x0000 }, + { /*0x001b*/ 1, 0x4034, 0x01ce, 1, 1, 0, 0x0000 }, + { /*0x001c*/ 1, 0x4034, 0x01cf, 1, 1, 0, 0x0000 }, + { /*0x001d*/ 1, 0x4034, 0x01d0, 1, 1, 0, 0x0000 }, + { /*0x001e*/ 1, 0x4034, 0x0232, 1, 1, 0, 0x0000 }, + { /*0x001f*/ 1, 0x4034, 0x0238, 1, 1, 0, 0x0000 }, + { /*0x0020*/ 0, 0x4434, 0x023a, 1, 1, 0, 0x0000 }, + { /*0x0021*/ 0, 0x4434, 0x023d, 1, 1, 0, 0x0000 }, + { /*0x0022*/ 1, 0x4034, 0x0243, 1, 1, 0, 0x0000 }, + { /*0x0023*/ 1, 0x4034, 0x0245, 1, 1, 0, 0x0000 }, + { /*0x0024*/ 0, 0x4434, 0x0247, 1, 1, 0, 0x0000 }, + { /*0x0025*/ 1, 0x4034, 0x0262, 1, 1, 0, 0x0000 }, + { /*0x0026*/ 1, 0x4034, 0x0267, 1, 1, 0, 0x0000 }, + { /*0x0027*/ 1, 0x4034, 0x0268, 1, 1, 0, 0x0000 }, + { /*0x0028*/ 1, 0x4034, 0x033a, 1, 1, 0, 0x0000 }, + { /*0x0029*/ 1, 0x4c6c, 0x033b, 1, 1, 0, 0x0000 }, + { /*0x002a*/ 1, 0x4034, 0x0345, 1, 1, 0, 0x0000 }, + { /*0x002b*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x002c*/ 0, 0x4434, 0x04a7, 1, 1, 0, 0x0000 }, + { /*0x002d*/ 1, 0x4034, 0x04a8, 1, 1, 0, 0x0000 }, + { /*0x002e*/ 1, 0x4034, 0x04ac, 1, 1, 0, 0x0000 }, + { /*0x002f*/ 0, 0x4434, 0x04ad, 1, 1, 0, 0x0000 }, + { /*0x0030*/ 1, 0x4034, 0x04ae, 1, 1, 0, 0x0000 }, + { /*0x0031*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x0032*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x0033*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x0034*/ 1, 0x4034, 0x01c2, 1, 1, 0, 0x0000 }, + { /*0x0035*/ 1, 0x4034, 0x050d, 1, 1, 0, 0x0000 }, + { /*0x0036*/ 1, 0x4034, 0x050e, 1, 1, 0, 0x0000 }, + { /*0x0037*/ 1, 0x4034, 0x050f, 1, 1, 0, 0x0000 }, + { /*0x0038*/ 0, 0x4434, 0x0510, 1, 1, 0, 0x0000 }, + { /*0x0039*/ 1, 0x4034, 0x0511, 1, 1, 0, 0x0000 }, + { /*0x003a*/ 1, 0x4c6c, 0x0553, 1, 1, 0, 0x0000 }, + { /*0x003b*/ 1, 0x4034, 0x0554, 1, 1, 0, 0x0000 }, + { /*0x003c*/ 0, 0x4434, 0x055a, 1, 1, 0, 0x0000 }, + { /*0x003d*/ 1, 0x4034, 0x055b, 1, 1, 0, 0x0000 }, + { /*0x003e*/ 0, 0x4434, 0x0561, 1, 1, 0, 0x0000 }, + { /*0x003f*/ 1, 0x4034, 0x07c5, 1, 1, 0, 0x0000 }, + { /*0x0040*/ 1, 0x4034, 0x07c6, 1, 1, 0, 0x0000 }, + { /*0x0041*/ 1, 0x4034, 0x07bd, 1, 1, 0, 0x0000 }, + { /*0x0042*/ 1, 0x4034, 0x07be, 1, 1, 0, 0x0000 }, + { /*0x0043*/ 1, 0x4034, 0x07bf, 1, 1, 0, 0x0000 }, + { /*0x0044*/ 1, 0x4034, 0x07c0, 1, 1, 0, 0x0000 }, + { /*0x0045*/ 0, 0x4834, 0x07c1, 1, 1, 0, 0x0000 }, + { /*0x0046*/ 0, 0x4834, 0x07c2, 1, 1, 0, 0x0000 }, + { /*0x0047*/ 0, 0x4834, 0x07c3, 1, 1, 0, 0x0000 }, + { /*0x0048*/ 1, 0x4034, 0x07c4, 1, 1, 0, 0x0000 }, + { /*0x0049*/ 1, 0x4034, 0x07cd, 1, 1, 0, 0x0000 }, + { /*0x004a*/ 1, 0x4034, 0x07ce, 1, 1, 0, 0x0000 }, + { /*0x004b*/ 1, 0x4034, 0x07cf, 1, 1, 0, 0x0000 }, + { /*0x004c*/ 1, 0x4034, 0x07d0, 1, 1, 0, 0x0000 }, + { /*0x004d*/ 1, 0x4034, 0x07d1, 1, 1, 0, 0x0000 }, + { /*0x004e*/ 1, 0x4034, 0x07d2, 1, 1, 0, 0x0000 }, + { /*0x004f*/ 1, 0x4034, 0x07d3, 1, 1, 0, 0x0000 }, + { /*0x0050*/ 1, 0x4034, 0x07d4, 1, 1, 0, 0x0000 }, + { /*0x0051*/ 1, 0x4034, 0x07d5, 1, 1, 0, 0x0000 }, + { /*0x0052*/ 1, 0x4034, 0x07d6, 1, 1, 0, 0x0000 }, + { /*0x0053*/ 1, 0x4034, 0x07d7, 1, 1, 0, 0x0000 }, + { /*0x0054*/ 1, 0x4034, 0x07d8, 1, 1, 0, 0x0000 }, + { /*0x0055*/ 1, 0x4034, 0x07d9, 1, 1, 0, 0x0000 }, + { /*0x0056*/ 0, 0x067c, 0x0042, 1, 0.95305162668228, 0, 0x04e5 }, + { /*0x0057*/ 1, 0x0da8, 0x004a, 1, 0.57276993989944, 0, 0x0764 }, + { /*0x0058*/ 1, 0xa274, 0x003f, 1, 0.92769956588745, 0, 0x0766 }, + { /*0x0059*/ 1, 0x027c, 0x0051, 1, 0.92769956588745, 0, 0x0766 }, + { /*0x005a*/ 1, 0x0268, 0x0040, 1, 0.85915493965149, 0, 0x0531 }, + { /*0x005b*/ 1, 0x16a4, 0x004e, 1, 1.1032863855362, 0, 0x0532 }, + { /*0x005c*/ 1, 0x227c, 0x0053, 1, 1, 0, 0x0000 }, + { /*0x005d*/ 1, 0x0284, 0x0057, 1, 0.93896716833115, 0, 0x052a }, + { /*0x005e*/ 1, 0x2274, 0x0045, 1, 0.93896716833115, 0, 0x0769 }, + { /*0x005f*/ 1, 0x2274, 0x004d, 1, 0.93896716833115, 0, 0x0532 }, + { /*0x0060*/ 1, 0x2278, 0x0054, 1, 0.92769956588745, 0, 0x0768 }, + { /*0x0061*/ 0, 0x067c, 0x0043, 1, 0.95305162668228, 0, 0x052b }, + { /*0x0062*/ 0, 0x067c, 0x0044, 1, 0.95305162668228, 0, 0x052c }, + { /*0x0063*/ 1, 0x0274, 0x004f, 1, 0.93896716833115, 0, 0x052b }, + { /*0x0064*/ 1, 0x0274, 0x0050, 1, 0.93896716833115, 0, 0x052b }, + { /*0x0065*/ 0, 0x0630, 0x0052, 1, 0.87323945760727, 0, 0x052b }, + { /*0x0066*/ 0, 0x129c, 0x0041, 1, 0.98591554164886, 0, 0x0537 }, + { /*0x0067*/ 1, 0x0da8, 0x0056, 1, 0.57276993989944, 0, 0x0764 }, + { /*0x0068*/ 0, 0x2a80, 0x004c, 1, 0.96713620424271, 0, 0x052c }, + { /*0x0069*/ 1, 0x2274, 0x0194, 1, 0.93896716833115, 0, 0x053b }, + { /*0x006a*/ 1, 0x2280, 0x0046, 1, 0.93427228927612, 0, 0x0538 }, + { /*0x006b*/ 1, 0x427c, 0x0048, 1, 1, 0, 0x0000 }, + { /*0x006c*/ 1, 0x027c, 0x004b, 1, 1, 0, 0x0000 }, + { /*0x006d*/ 0, 0x067c, 0x01b1, 1, 0.95305162668228, 0, 0x052b }, + { /*0x006e*/ 1, 0x2280, 0x01bf, 1, 0.93896716833115, 0, 0x0538 }, + { /*0x006f*/ 1, 0x2274, 0x01c4, 1, 0.93896716833115, 0, 0x0767 }, + { /*0x0070*/ 1, 0x427c, 0x0055, 1, 1, 0, 0x0000 }, + { /*0x0071*/ 1, 0x226c, 0x01c8, 1, 0.93896716833115, 0, 0x076a }, + { /*0x0072*/ 1, 0x227c, 0x01c9, 1, 0.93896716833115, 0, 0x0535 }, + { /*0x0073*/ 1, 0x227c, 0x01cb, 1, 0.93896716833115, 0, 0x0533 }, + { /*0x0074*/ 1, 0x227c, 0x01cc, 1, 0.93896716833115, 0, 0x052b }, + { /*0x0075*/ 1, 0x0274, 0x0231, 1, 0.93896716833115, 0, 0x076b }, + { /*0x0076*/ 1, 0x027c, 0x0236, 1, 1, 0, 0x0000 }, + { /*0x0077*/ 1, 0x0264, 0x0237, 1, 0.89201879501343, 0, 0x052b }, + { /*0x0078*/ 0, 0x063c, 0x0239, 1, 0.85446006059647, 0, 0x052b }, + { /*0x0079*/ 1, 0x027c, 0x023b, 1, 0.93896716833115, 0, 0x052e }, + { /*0x007a*/ 0, 0x063c, 0x023c, 1, 0.85446006059647, 0, 0x053a }, + { /*0x007b*/ 1, 0x027c, 0x0240, 0.75, 0.5, 0, 0x0000 }, + { /*0x007c*/ 1, 0x027c, 0x0242, 1, 0.93896716833115, 0, 0x0531 }, + { /*0x007d*/ 1, 0x027c, 0x0244, 1, 0.93896716833115, 0, 0x0531 }, + { /*0x007e*/ 0, 0x0638, 0x0246, 1, 0.85446006059647, 0, 0x052b }, + { /*0x007f*/ 1, 0x027c, 0x0261, 1, 0.93896716833115, 0, 0x076c }, + { /*0x0080*/ 1, 0x227c, 0x0263, 1, 0.93896716833115, 0, 0x0539 }, + { /*0x0081*/ 1, 0x2278, 0x0264, 1, 0.93896716833115, 0, 0x076c }, + { /*0x0082*/ 1, 0x2278, 0x0265, 1, 0.93896716833115, 0, 0x0536 }, + { /*0x0083*/ 1, 0x2da8, 0x0266, 1, 0.57276993989944, 0, 0x0764 }, + { /*0x0084*/ 1, 0x027c, 0x0339, 1, 0.93896716833115, 0, 0x04e5 }, + { /*0x0085*/ 1, 0x027c, 0x0339, 1, 0.93896716833115, 0, 0x052e }, + { /*0x0086*/ 0, 0x067c, 0x033c, 1, 0.95305162668228, 0, 0x0530 }, + { /*0x0087*/ 0, 0x067c, 0x049e, 1, 0.95305162668228, 0, 0x0529 }, + { /*0x0088*/ 0, 0x067c, 0x049f, 1, 0.95305162668228, 0, 0x0529 }, + { /*0x0089*/ 0, 0x067c, 0x04a0, 1, 0.95305162668228, 0, 0x0536 }, + { /*0x008a*/ 0, 0x067c, 0x04a1, 1, 0.95305162668228, 0, 0x0532 }, + { /*0x008b*/ 0, 0x267c, 0x04a2, 1, 0.87323945760727, 0, 0x0532 }, + { /*0x008c*/ 1, 0x227c, 0x04a3, 1, 0.93896716833115, 0, 0x052d }, + { /*0x008d*/ 1, 0x027c, 0x04a4, 1, 0.88262909650803, 0, 0x0530 }, + { /*0x008e*/ 1, 0x227c, 0x04a5, 1, 0.93896716833115, 0, 0x0534 }, + { /*0x008f*/ 0, 0x267c, 0x04a6, 1, 0.86854463815689, 0, 0x0534 }, + { /*0x0090*/ 1, 0x027c, 0x04a9, 1, 0.85915493965149, 0, 0x0532 }, + { /*0x0091*/ 1, 0x027c, 0x04aa, 1, 0.93896716833115, 0, 0x0766 }, + { /*0x0092*/ 1, 0x227c, 0x04ab, 1, 0.93896716833115, 0, 0x076d }, + { /*0x0093*/ 1, 0x027c, 0x050b, 1, 1.25, 0, 0x0000 }, + { /*0x0094*/ 1, 0x0da8, 0x050c, 1, 0.57276993989944, 0, 0x0764 }, + { /*0x0095*/ 0, 0x067c, 0x0559, 1, 0.95305162668228, 0, 0x052b }, + { /*0x0096*/ 0, 0x067c, 0x0796, 1, 0.95305162668228, 0, 0x052f }, }; u32 var8007dad0 = 0x00000000; diff --git a/src/game/game_00b820.c b/src/game/game_00b820.c index 58530b55f..61eba309e 100644 --- a/src/game/game_00b820.c +++ b/src/game/game_00b820.c @@ -30,8 +30,8 @@ glabel func0f00b820 /* f00b848: afb2001c */ sw $s2,0x1c($sp) /* f00b84c: 11c00009 */ beqz $t6,.L0f00b874 /* f00b850: 00008825 */ or $s1,$zero,$zero -/* f00b854: 3c028008 */ lui $v0,%hi(bodytable) -/* f00b858: 2442cf04 */ addiu $v0,$v0,%lo(bodytable) +/* f00b854: 3c028008 */ lui $v0,%hi(g_Bodies) +/* f00b858: 2442cf04 */ addiu $v0,$v0,%lo(g_Bodies) /* f00b85c: 944f0016 */ lhu $t7,0x16($v0) .L0f00b860: /* f00b860: 24420014 */ addiu $v0,$v0,0x14 @@ -75,8 +75,8 @@ glabel func0f00b820 /* f00b8ec: 24030001 */ addiu $v1,$zero,0x1 .L0f00b8f0: /* f00b8f0: 8cca0064 */ lw $t2,0x64($a2) -/* f00b8f4: 3c15800a */ lui $s5,%hi(var8009cd20) -/* f00b8f8: 26b5cd20 */ addiu $s5,$s5,%lo(var8009cd20) +/* f00b8f4: 3c15800a */ lui $s5,%hi(g_MaxHeadsPerBank) +/* f00b8f8: 26b5cd20 */ addiu $s5,$s5,%lo(g_MaxHeadsPerBank) /* f00b8fc: 11400003 */ beqz $t2,.L0f00b90c /* f00b900: 24180008 */ addiu $t8,$zero,0x8 /* f00b904: 10000001 */ beqz $zero,.L0f00b90c @@ -96,8 +96,8 @@ glabel func0f00b820 /* f00b934: 29c10002 */ slti $at,$t6,0x2 /* f00b938: 14200005 */ bnez $at,.L0f00b950 /* f00b93c: 27221700 */ addiu $v0,$t9,0x1700 -/* f00b940: 3c15800a */ lui $s5,%hi(var8009cd20) -/* f00b944: 26b5cd20 */ addiu $s5,$s5,%lo(var8009cd20) +/* f00b940: 3c15800a */ lui $s5,%hi(g_MaxHeadsPerBank) +/* f00b944: 26b5cd20 */ addiu $s5,$s5,%lo(g_MaxHeadsPerBank) /* f00b948: 1000000d */ beqz $zero,.L0f00b980 /* f00b94c: aeaf0000 */ sw $t7,0x0($s5) .L0f00b950: @@ -131,8 +131,8 @@ glabel func0f00b820 /* f00b9ac: 8e732b04 */ lw $s3,0x2b04($s3) .L0f00b9b0: /* f00b9b0: 8eaa0000 */ lw $t2,0x0($s5) -/* f00b9b4: 3c12800a */ lui $s2,%hi(var8009cd28) -/* f00b9b8: 2652cd28 */ addiu $s2,$s2,%lo(var8009cd28) +/* f00b9b4: 3c12800a */ lui $s2,%hi(g_HeadsA) +/* f00b9b8: 2652cd28 */ addiu $s2,$s2,%lo(g_HeadsA) /* f00b9bc: 19400022 */ blez $t2,.L0f00ba48 /* f00b9c0: 00000000 */ sll $zero,$zero,0x0 .L0f00b9c4: @@ -153,8 +153,8 @@ glabel func0f00b820 /* f00b9f8: ae4e0000 */ sw $t6,0x0($s2) /* f00b9fc: 1a20000b */ blez $s1,.L0f00ba2c /* f00ba00: 00001825 */ or $v1,$zero,$zero -/* f00ba04: 3c02800a */ lui $v0,%hi(var8009cd28) -/* f00ba08: 2442cd28 */ addiu $v0,$v0,%lo(var8009cd28) +/* f00ba04: 3c02800a */ lui $v0,%hi(g_HeadsA) +/* f00ba08: 2442cd28 */ addiu $v0,$v0,%lo(g_HeadsA) /* f00ba0c: 01c02025 */ or $a0,$t6,$zero .L0f00ba10: /* f00ba10: 8c4f0000 */ lw $t7,0x0($v0) @@ -189,8 +189,8 @@ glabel func0f00b820 /* f00ba74: 8e732b08 */ lw $s3,0x2b08($s3) .L0f00ba78: /* f00ba78: 8ea50000 */ lw $a1,0x0($s5) -/* f00ba7c: 3c12800a */ lui $s2,%hi(var8009cd48) -/* f00ba80: 2652cd48 */ addiu $s2,$s2,%lo(var8009cd48) +/* f00ba7c: 3c12800a */ lui $s2,%hi(g_HeadsB) +/* f00ba80: 2652cd48 */ addiu $s2,$s2,%lo(g_HeadsB) /* f00ba84: 18a00022 */ blez $a1,.L0f00bb10 /* f00ba88: 00000000 */ sll $zero,$zero,0x0 .L0f00ba8c: @@ -211,8 +211,8 @@ glabel func0f00b820 /* f00bac0: ae490000 */ sw $t1,0x0($s2) /* f00bac4: 1a20000b */ blez $s1,.L0f00baf4 /* f00bac8: 00001825 */ or $v1,$zero,$zero -/* f00bacc: 3c02800a */ lui $v0,%hi(var8009cd48) -/* f00bad0: 2442cd48 */ addiu $v0,$v0,%lo(var8009cd48) +/* f00bacc: 3c02800a */ lui $v0,%hi(g_HeadsB) +/* f00bad0: 2442cd48 */ addiu $v0,$v0,%lo(g_HeadsB) /* f00bad4: 01202025 */ or $a0,$t1,$zero .L0f00bad8: /* f00bad8: 8c4a0000 */ lw $t2,0x0($v0) diff --git a/src/game/game_02cde0.c b/src/game/game_02cde0.c index 7f50a7030..cd52a6bd1 100644 --- a/src/game/game_02cde0.c +++ b/src/game/game_02cde0.c @@ -130,8 +130,8 @@ GLOBAL_ASM( glabel func0f02ce30 /* f02ce30: 00047080 */ sll $t6,$a0,0x2 /* f02ce34: 01c47021 */ addu $t6,$t6,$a0 -/* f02ce38: 3c0f8008 */ lui $t7,%hi(bodytable) -/* f02ce3c: 25efcf04 */ addiu $t7,$t7,%lo(bodytable) +/* f02ce38: 3c0f8008 */ lui $t7,%hi(g_Bodies) +/* f02ce3c: 25efcf04 */ addiu $t7,$t7,%lo(g_Bodies) /* f02ce40: 000e7080 */ sll $t6,$t6,0x2 /* f02ce44: 01cf1821 */ addu $v1,$t6,$t7 /* f02ce48: 8c78000c */ lw $t8,0xc($v1) @@ -158,8 +158,8 @@ GLOBAL_ASM( glabel func0f02ce8c /* f02ce8c: 00047880 */ sll $t7,$a0,0x2 /* f02ce90: 01e47821 */ addu $t7,$t7,$a0 -/* f02ce94: 3c188008 */ lui $t8,%hi(bodytable) -/* f02ce98: 2718cf04 */ addiu $t8,$t8,%lo(bodytable) +/* f02ce94: 3c188008 */ lui $t8,%hi(g_Bodies) +/* f02ce98: 2718cf04 */ addiu $t8,$t8,%lo(g_Bodies) /* f02ce9c: 000f7880 */ sll $t7,$t7,0x2 /* f02cea0: 01f81021 */ addu $v0,$t7,$t8 /* f02cea4: 3c017f1b */ lui $at,%hi(var7f1a8a70) @@ -251,8 +251,8 @@ glabel func0f02ce8c /* f02cff0: 0fc69e11 */ jal func0f1a7844 /* f02cff4: 9484cf06 */ lhu $a0,-0x30fa($a0) /* f02cff8: 8fa5004c */ lw $a1,0x4c($sp) -/* f02cffc: 3c0e8008 */ lui $t6,%hi(bodytable) -/* f02d000: 25cecf04 */ addiu $t6,$t6,%lo(bodytable) +/* f02cffc: 3c0e8008 */ lui $t6,%hi(g_Bodies) +/* f02d000: 25cecf04 */ addiu $t6,$t6,%lo(g_Bodies) /* f02d004: 00056080 */ sll $t4,$a1,0x2 /* f02d008: 01856021 */ addu $t4,$t4,$a1 /* f02d00c: 000c6080 */ sll $t4,$t4,0x2 @@ -270,8 +270,8 @@ glabel func0f02ce8c /* f02d03c: 10000014 */ beqz $zero,.L0f02d090 /* f02d040: 00000000 */ sll $zero,$zero,0x0 .L0f02d044: -/* f02d044: 3c0f8008 */ lui $t7,%hi(bodytable) -/* f02d048: 25efcf04 */ addiu $t7,$t7,%lo(bodytable) +/* f02d044: 3c0f8008 */ lui $t7,%hi(g_Bodies) +/* f02d048: 25efcf04 */ addiu $t7,$t7,%lo(g_Bodies) /* f02d04c: 00084080 */ sll $t0,$t0,0x2 /* f02d050: 010f1821 */ addu $v1,$t0,$t7 /* f02d054: 8c64000c */ lw $a0,0xc($v1) @@ -280,8 +280,8 @@ glabel func0f02ce8c /* f02d060: 0fc69e11 */ jal func0f1a7844 /* f02d064: 94640002 */ lhu $a0,0x2($v1) /* f02d068: 8fa7004c */ lw $a3,0x4c($sp) -/* f02d06c: 3c0a8008 */ lui $t2,%hi(bodytable) -/* f02d070: 254acf04 */ addiu $t2,$t2,%lo(bodytable) +/* f02d06c: 3c0a8008 */ lui $t2,%hi(g_Bodies) +/* f02d070: 254acf04 */ addiu $t2,$t2,%lo(g_Bodies) /* f02d074: 00074880 */ sll $t1,$a3,0x2 /* f02d078: 01274821 */ addu $t1,$t1,$a3 /* f02d07c: 00094880 */ sll $t1,$t1,0x2 @@ -547,71 +547,28 @@ glabel func0f02d3f8 /* f02d410: 8c422b1c */ lw $v0,0x2b1c($v0) ); -GLOBAL_ASM( -glabel func0f02d414 -/* f02d414: 00047080 */ sll $t6,$a0,0x2 -/* f02d418: 01c47021 */ addu $t6,$t6,$a0 -/* f02d41c: 3c0f8008 */ lui $t7,%hi(bodytable) -/* f02d420: 25efcf04 */ addiu $t7,$t7,%lo(bodytable) -/* f02d424: 000e7080 */ sll $t6,$t6,0x2 -/* f02d428: 01cf1021 */ addu $v0,$t6,$t7 -/* f02d42c: 8c580000 */ lw $t8,0x0($v0) -/* f02d430: 27bdffe8 */ addiu $sp,$sp,-24 -/* f02d434: afbf0014 */ sw $ra,0x14($sp) -/* f02d438: 0018cfc2 */ srl $t9,$t8,0x1f -/* f02d43c: 13200010 */ beqz $t9,.L0f02d480 -/* f02d440: 3c0c8008 */ lui $t4,0x8008 -/* f02d444: 3c038006 */ lui $v1,%hi(var80062c84) -/* f02d448: 24632c84 */ addiu $v1,$v1,%lo(var80062c84) -/* f02d44c: 8c620000 */ lw $v0,0x0($v1) -/* f02d450: 3c04800a */ lui $a0,0x800a -/* f02d454: 3c0a800a */ lui $t2,0x800a -/* f02d458: 00024080 */ sll $t0,$v0,0x2 -/* f02d45c: 00882021 */ addu $a0,$a0,$t0 -/* f02d460: 8c84cd28 */ lw $a0,-0x32d8($a0) -/* f02d464: 24490001 */ addiu $t1,$v0,0x1 -/* f02d468: ac690000 */ sw $t1,0x0($v1) -/* f02d46c: 8d4acd20 */ lw $t2,-0x32e0($t2) -/* f02d470: 5549001e */ bnel $t2,$t1,.L0f02d4ec -/* f02d474: 8fbf0014 */ lw $ra,0x14($sp) -/* f02d478: 1000001b */ beqz $zero,.L0f02d4e8 -/* f02d47c: ac600000 */ sw $zero,0x0($v1) -.L0f02d480: -/* f02d480: 258cd724 */ addiu $t4,$t4,-10460 -/* f02d484: 144c000b */ bne $v0,$t4,.L0f02d4b4 -/* f02d488: 3c038006 */ lui $v1,%hi(var80062c88) -/* f02d48c: 0c004b70 */ jal random -/* f02d490: 00000000 */ sll $zero,$zero,0x0 -/* f02d494: 24010003 */ addiu $at,$zero,0x3 -/* f02d498: 0041001b */ divu $zero,$v0,$at -/* f02d49c: 00006810 */ mfhi $t5 -/* f02d4a0: 000d7080 */ sll $t6,$t5,0x2 -/* f02d4a4: 3c048006 */ lui $a0,0x8006 -/* f02d4a8: 008e2021 */ addu $a0,$a0,$t6 -/* f02d4ac: 1000000e */ beqz $zero,.L0f02d4e8 -/* f02d4b0: 8c842c8c */ lw $a0,0x2c8c($a0) -.L0f02d4b4: -/* f02d4b4: 24632c88 */ addiu $v1,$v1,%lo(var80062c88) -/* f02d4b8: 8c620000 */ lw $v0,0x0($v1) -/* f02d4bc: 3c04800a */ lui $a0,0x800a -/* f02d4c0: 3c19800a */ lui $t9,0x800a -/* f02d4c4: 00027880 */ sll $t7,$v0,0x2 -/* f02d4c8: 008f2021 */ addu $a0,$a0,$t7 -/* f02d4cc: 8c84cd48 */ lw $a0,-0x32b8($a0) -/* f02d4d0: 24580001 */ addiu $t8,$v0,0x1 -/* f02d4d4: ac780000 */ sw $t8,0x0($v1) -/* f02d4d8: 8f39cd20 */ lw $t9,-0x32e0($t9) -/* f02d4dc: 57380003 */ bnel $t9,$t8,.L0f02d4ec -/* f02d4e0: 8fbf0014 */ lw $ra,0x14($sp) -/* f02d4e4: ac600000 */ sw $zero,0x0($v1) -.L0f02d4e8: -/* f02d4e8: 8fbf0014 */ lw $ra,0x14($sp) -.L0f02d4ec: -/* f02d4ec: 27bd0018 */ addiu $sp,$sp,0x18 -/* f02d4f0: 00801025 */ or $v0,$a0,$zero -/* f02d4f4: 03e00008 */ jr $ra -/* f02d4f8: 00000000 */ sll $zero,$zero,0x0 -); +u32 bodyGetHead(u32 bodynum) +{ + u32 head; + + if (g_Bodies[bodynum].headbank) { + head = g_HeadsA[g_HeadsAIndex++]; + + if (g_HeadsAIndex == g_MaxHeadsPerBank) { + g_HeadsAIndex = 0; + } + } else if (bodynum == BODY_FEM_GUARD) { + head = g_FemaleHeads[random() % 3]; + } else { + head = g_HeadsB[g_HeadsBIndex++]; + + if (g_HeadsBIndex == g_MaxHeadsPerBank) { + g_HeadsBIndex = 0; + } + } + + return head; +} GLOBAL_ASM( glabel func0f02d4fc @@ -701,8 +658,8 @@ glabel func0f02d4fc /* f02d638: afa2004c */ sw $v0,0x4c($sp) .L0f02d63c: /* f02d63c: 8fae004c */ lw $t6,0x4c($sp) -/* f02d640: 3c188008 */ lui $t8,%hi(bodytable) -/* f02d644: 2718cf04 */ addiu $t8,$t8,%lo(bodytable) +/* f02d640: 3c188008 */ lui $t8,%hi(g_Bodies) +/* f02d644: 2718cf04 */ addiu $t8,$t8,%lo(g_Bodies) /* f02d648: 000e7880 */ sll $t7,$t6,0x2 /* f02d64c: 01ee7821 */ addu $t7,$t7,$t6 /* f02d650: 000f7880 */ sll $t7,$t7,0x2 @@ -722,7 +679,7 @@ glabel func0f02d4fc .L0f02d688: /* f02d688: 15610005 */ bne $t3,$at,.L0f02d6a0 /* f02d68c: 8fa4004c */ lw $a0,0x4c($sp) -/* f02d690: 0fc0b505 */ jal func0f02d414 +/* f02d690: 0fc0b505 */ jal bodyGetHead /* f02d694: afa70058 */ sw $a3,0x58($sp) /* f02d698: 8fa70058 */ lw $a3,0x58($sp) /* f02d69c: afa20048 */ sw $v0,0x48($sp) @@ -1233,8 +1190,8 @@ glabel func0f02ddbc /* f02ddd4: 15c10081 */ bne $t6,$at,.L0f02dfdc /* f02ddd8: 24050014 */ addiu $a1,$zero,0x14 /* f02dddc: 00e50019 */ multu $a3,$a1 -/* f02dde0: 3c038008 */ lui $v1,%hi(bodytable) -/* f02dde4: 2463cf04 */ addiu $v1,$v1,%lo(bodytable) +/* f02dde0: 3c038008 */ lui $v1,%hi(g_Bodies) +/* f02dde4: 2463cf04 */ addiu $v1,$v1,%lo(g_Bodies) /* f02dde8: 00007812 */ mflo $t7 /* f02ddec: 006fc021 */ addu $t8,$v1,$t7 /* f02ddf0: 8f020000 */ lw $v0,0x0($t8) diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index 01a915e46..b3364df6d 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -3199,8 +3199,8 @@ glabel func0f0b8ba0 /* f0b904c: 00097880 */ sll $t7,$t1,0x2 .L0f0b9050: /* f0b9050: 01e97821 */ addu $t7,$t7,$t1 -/* f0b9054: 3c0a8008 */ lui $t2,%hi(bodytable) -/* f0b9058: 254acf04 */ addiu $t2,$t2,%lo(bodytable) +/* f0b9054: 3c0a8008 */ lui $t2,%hi(g_Bodies) +/* f0b9058: 254acf04 */ addiu $t2,$t2,%lo(g_Bodies) /* f0b905c: 000f7880 */ sll $t7,$t7,0x2 /* f0b9060: 01ea1821 */ addu $v1,$t7,$t2 /* f0b9064: 8c64000c */ lw $a0,0xc($v1) @@ -3209,8 +3209,8 @@ glabel func0f0b8ba0 /* f0b9070: 0fc69e11 */ jal func0f1a7844 /* f0b9074: 94640002 */ lhu $a0,0x2($v1) /* f0b9078: 8fac0068 */ lw $t4,0x68($sp) -/* f0b907c: 3c0b8008 */ lui $t3,%hi(bodytable) -/* f0b9080: 256bcf04 */ addiu $t3,$t3,%lo(bodytable) +/* f0b907c: 3c0b8008 */ lui $t3,%hi(g_Bodies) +/* f0b9080: 256bcf04 */ addiu $t3,$t3,%lo(g_Bodies) /* f0b9084: 000c6880 */ sll $t5,$t4,0x2 /* f0b9088: 01ac6821 */ addu $t5,$t5,$t4 /* f0b908c: 000d6880 */ sll $t5,$t5,0x2 @@ -3251,8 +3251,8 @@ glabel func0f0b8ba0 /* f0b910c: 0fc69e11 */ jal func0f1a7844 /* f0b9110: 9484cf06 */ lhu $a0,-0x30fa($a0) /* f0b9114: 8fab0064 */ lw $t3,0x64($sp) -/* f0b9118: 3c088008 */ lui $t0,%hi(bodytable) -/* f0b911c: 2508cf04 */ addiu $t0,$t0,%lo(bodytable) +/* f0b9118: 3c088008 */ lui $t0,%hi(g_Bodies) +/* f0b911c: 2508cf04 */ addiu $t0,$t0,%lo(g_Bodies) /* f0b9120: 000b7080 */ sll $t6,$t3,0x2 /* f0b9124: 01cb7021 */ addu $t6,$t6,$t3 /* f0b9128: 000e7080 */ sll $t6,$t6,0x2 @@ -3274,8 +3274,8 @@ glabel func0f0b8ba0 /* f0b9164: 00097880 */ sll $t7,$t1,0x2 .L0f0b9168: /* f0b9168: 01e97821 */ addu $t7,$t7,$t1 -/* f0b916c: 3c0a8008 */ lui $t2,%hi(bodytable) -/* f0b9170: 254acf04 */ addiu $t2,$t2,%lo(bodytable) +/* f0b916c: 3c0a8008 */ lui $t2,%hi(g_Bodies) +/* f0b9170: 254acf04 */ addiu $t2,$t2,%lo(g_Bodies) /* f0b9174: 000f7880 */ sll $t7,$t7,0x2 /* f0b9178: 01ea1821 */ addu $v1,$t7,$t2 /* f0b917c: 8c64000c */ lw $a0,0xc($v1) @@ -3284,8 +3284,8 @@ glabel func0f0b8ba0 /* f0b9188: 0fc69e11 */ jal func0f1a7844 /* f0b918c: 94640002 */ lhu $a0,0x2($v1) /* f0b9190: 8fac0064 */ lw $t4,0x64($sp) -/* f0b9194: 3c0b8008 */ lui $t3,%hi(bodytable) -/* f0b9198: 256bcf04 */ addiu $t3,$t3,%lo(bodytable) +/* f0b9194: 3c0b8008 */ lui $t3,%hi(g_Bodies) +/* f0b9198: 256bcf04 */ addiu $t3,$t3,%lo(g_Bodies) /* f0b919c: 000c6880 */ sll $t5,$t4,0x2 /* f0b91a0: 01ac6821 */ addu $t5,$t5,$t4 /* f0b91a4: 000d6880 */ sll $t5,$t5,0x2 @@ -3367,10 +3367,10 @@ glabel func0f0b8ba0 /* f0b92c8: 84440010 */ lh $a0,0x10($v0) /* f0b92cc: 8fb80110 */ lw $t8,0x110($sp) /* f0b92d0: 24050014 */ addiu $a1,$zero,0x14 -/* f0b92d4: 3c048008 */ lui $a0,%hi(bodytable) +/* f0b92d4: 3c048008 */ lui $a0,%hi(g_Bodies) /* f0b92d8: a30202fe */ sb $v0,0x2fe($t8) /* f0b92dc: 8e190284 */ lw $t9,0x284($s0) -/* f0b92e0: 2484cf04 */ addiu $a0,$a0,%lo(bodytable) +/* f0b92e0: 2484cf04 */ addiu $a0,$a0,%lo(g_Bodies) /* f0b92e4: c7240378 */ lwc1 $f4,0x378($t9) /* f0b92e8: e7040024 */ swc1 $f4,0x24($t8) /* f0b92ec: 8faf0068 */ lw $t7,0x68($sp) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index f78ec8c88..cd90511bf 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -4025,8 +4025,8 @@ glabel func0f0f38b0 /* f0f3a64: a20f05b0 */ sb $t7,0x5b0($s0) .L0f0f3a68: /* f0f3a68: 8fb80404 */ lw $t8,0x404($sp) -/* f0f3a6c: 3c0a8008 */ lui $t2,%hi(bodytable) -/* f0f3a70: 254acf04 */ addiu $t2,$t2,%lo(bodytable) +/* f0f3a6c: 3c0a8008 */ lui $t2,%hi(g_Bodies) +/* f0f3a70: 254acf04 */ addiu $t2,$t2,%lo(g_Bodies) /* f0f3a74: 0018c880 */ sll $t9,$t8,0x2 /* f0f3a78: 0338c821 */ addu $t9,$t9,$t8 /* f0f3a7c: 0019c880 */ sll $t9,$t9,0x2 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index f7aab5cdc..ca5b12e8f 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16026,24 +16026,10 @@ s32 g_NumChrsC = 0; s16 *g_ChrnumsC = NULL; s16 *g_ChrIndexesC = NULL; u32 var8009cd1c = 0; -u32 var8009cd20 = 0; +u32 g_MaxHeadsPerBank = 0; u32 var8009cd24 = 0; -u32 var8009cd28 = 0; -u32 var8009cd2c = 0; -u32 var8009cd30 = 0; -u32 var8009cd34 = 0; -u32 var8009cd38 = 0; -u32 var8009cd3c = 0; -u32 var8009cd40 = 0; -u32 var8009cd44 = 0; -u32 var8009cd48 = 0; -u32 var8009cd4c = 0; -u32 var8009cd50 = 0; -u32 var8009cd54 = 0; -u32 var8009cd58 = 0; -u32 var8009cd5c = 0; -u32 var8009cd60 = 0; -u32 var8009cd64 = 0; +u32 g_HeadsA[8] = {0}; +u32 g_HeadsB[8] = {0}; u32 var8009cd68 = 0; u32 var8009cd6c = 0; s32 g_RecentQuipsPlayed[] = {0, 0, 0, 0, 0}; @@ -16052,7 +16038,7 @@ u32 var8009cd88 = 0; u32 var8009cd8c = 0; u32 var8009cd90 = 0; u32 var8009cd94 = 0; -u8 g_RecentQuipsIndex = 0; // index into g_RecentQuipsPlayed +u8 g_RecentQuipsIndex = 0; u32 var8009cd9c = 0; u32 var8009cda0 = 0; u32 var8009cda4 = 0; diff --git a/src/include/game/data/data_0083d0.h b/src/include/game/data/data_0083d0.h index 8354e000d..0b1456cfc 100644 --- a/src/include/game/data/data_0083d0.h +++ b/src/include/game/data/data_0083d0.h @@ -114,8 +114,9 @@ extern u32 var80062b68; extern u32 var80062c14; extern u32 var80062c58; extern u32 var80062c6c; -extern u32 var80062c84; -extern u32 var80062c88; +extern u32 g_HeadsAIndex; +extern u32 g_HeadsBIndex; +extern u32 g_FemaleHeads[3]; extern f32 var80062ca0; extern f32 var80062ca4; extern f32 var80062ca8; diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index ea8ca749d..5d963b091 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -51,7 +51,7 @@ extern struct stagethinglist stagethinglist_22e60; extern struct stagethinglist stagethinglist_22eb8; extern struct stagethinglist stagethinglist_22ec8; extern struct stagethinglist stagethinglist_22f1c; -extern struct bodytableentry bodytable[]; +extern struct body g_Bodies[]; extern u32 var8007dae4; extern u32 var8007db80; extern f32 var8007db84; diff --git a/src/include/game/game_02cde0.h b/src/include/game/game_02cde0.h index f9fcef5ae..51ce5b9f7 100644 --- a/src/include/game/game_02cde0.h +++ b/src/include/game/game_02cde0.h @@ -7,7 +7,7 @@ u32 func0f02ce8c(void); u32 func0f02d338(void); u32 func0f02d36c(void); u32 func0f02d3f8(void); -u32 func0f02d414(void); +u32 bodyGetHead(u32 bodynum); u32 func0f02d4fc(void); struct prop *func0f02dbac(struct pad *pad, s16 room); u32 func0f02ddbc(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index a9e07c01d..4ad0f4186 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -553,9 +553,9 @@ extern u32 var8009ccc0; extern s32 g_NumChrsC; extern s16 *g_ChrnumsC; extern s16 *g_ChrIndexesC; -extern u32 var8009cd20; -extern u32 var8009cd28; -extern u32 var8009cd48; +extern u32 g_MaxHeadsPerBank; +extern u32 g_HeadsA[8]; +extern u32 g_HeadsB[8]; extern s32 g_RecentQuipsPlayed[5]; extern u8 g_RecentQuipsIndex; extern u32 var8009cda0; diff --git a/src/include/types.h b/src/include/types.h index 77c6f0019..070d1d4de 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2940,8 +2940,9 @@ struct cheat { u8 flags; }; -struct bodytableentry { - u16 unk00; +struct body { + u16 headbank : 1; + u16 flags_01 : 15; u16 bodyfileid; f32 unk04; f32 unk08;