Attempt to decompile stageChooseActiveHeads
This commit is contained in:
parent
68e202010c
commit
9a03dc5281
|
|
@ -25942,7 +25942,7 @@ struct prop *chrSpawnAtCoord(s32 bodynum, s32 headnum, struct coord *pos, s16 *r
|
|||
|
||||
if (chrsGetNumFree() > 1) {
|
||||
if (headnum < 0) {
|
||||
headnum = bodyGetHead(bodynum);
|
||||
headnum = bodyChooseHead(bodynum);
|
||||
}
|
||||
|
||||
pos2.x = pos->x;
|
||||
|
|
|
|||
|
|
@ -2487,8 +2487,13 @@ u32 var800616f0 = 0x00000000;
|
|||
u32 var800616f4 = 0x00000000;
|
||||
u32 var800616f8 = 0x00000000;
|
||||
u32 var800616fc = 0x00000000;
|
||||
u32 var80061700 = 0x2f053504;
|
||||
u32 var80061704 = 0x19050000;
|
||||
|
||||
struct stageheadlimit g_StageHeadLimits[3] = {
|
||||
{ STAGE_INFILTRATION, 5 },
|
||||
{ STAGE_RESCUE, 4 },
|
||||
{ STAGE_ESCAPE, 5 },
|
||||
};
|
||||
|
||||
u32 var80061708 = 0x00000000;
|
||||
u32 var8006170c = 0x00000000;
|
||||
u32 var80061710 = 0x00000000;
|
||||
|
|
|
|||
|
|
@ -127,15 +127,15 @@ u32 var80062af4 = 0x00000003;
|
|||
u32 var80062af8 = 0x00000001;
|
||||
u32 var80062afc = 0x00000005;
|
||||
|
||||
s32 var80062b00 = 0;
|
||||
s32 var80062b04 = 0;
|
||||
s32 var80062b08 = 0;
|
||||
s32 var80062b0c = 0;
|
||||
s32 var80062b10 = 0;
|
||||
u32 var80062b14 = 0;
|
||||
u32 var80062b18 = 0;
|
||||
s32 g_NumBondBodies = 0;
|
||||
s32 g_NumMaleGuardHeads = 0;
|
||||
s32 g_NumFemaleGuardHeads = 0;
|
||||
s32 g_NumMaleGuardTeamHeads = 0;
|
||||
s32 g_NumFemaleGuardTeamHeads = 0;
|
||||
s32 var80062b14 = 0;
|
||||
s32 var80062b18 = 0;
|
||||
|
||||
s32 var80062b1c[] = {
|
||||
s32 g_BondBodies[] = {
|
||||
BODY_DJBOND,
|
||||
BODY_CONNERY,
|
||||
BODY_DALTON,
|
||||
|
|
@ -143,7 +143,7 @@ s32 var80062b1c[] = {
|
|||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
};
|
||||
|
||||
s32 var80062b68[] = {
|
||||
s32 g_MaleGuardHeads[] = {
|
||||
HEAD_BEAU1,
|
||||
HEAD_CHRIST,
|
||||
HEAD_DARLING,
|
||||
|
|
@ -189,7 +189,7 @@ s32 var80062b68[] = {
|
|||
-1,
|
||||
};
|
||||
|
||||
s32 var80062c14[] = {
|
||||
s32 g_MaleGuardTeamHeads[] = {
|
||||
HEAD_BEAU1,
|
||||
HEAD_CHRIST,
|
||||
HEAD_DARLING,
|
||||
|
|
@ -209,7 +209,7 @@ s32 var80062c14[] = {
|
|||
-1,
|
||||
};
|
||||
|
||||
s32 var80062c58[] = {
|
||||
s32 g_FemaleGuardHeads[] = {
|
||||
HEAD_LESLIE_S,
|
||||
HEAD_ANKA,
|
||||
HEAD_EILEEN_T,
|
||||
|
|
@ -217,7 +217,7 @@ s32 var80062c58[] = {
|
|||
-1,
|
||||
};
|
||||
|
||||
s32 var80062c6c[] = {
|
||||
s32 g_FemaleGuardTeamHeads[] = {
|
||||
HEAD_LESLIE_S,
|
||||
HEAD_ANKA,
|
||||
HEAD_EILEEN_T,
|
||||
|
|
@ -226,9 +226,15 @@ s32 var80062c6c[] = {
|
|||
};
|
||||
|
||||
s32 var80062c80 = 0;
|
||||
u32 g_HeadsAIndex = 0x00000000;
|
||||
u32 g_HeadsBIndex = 0x00000000;
|
||||
u32 g_FemaleHeads[3] = {HEAD_ALEX, HEAD_JULIANNE, HEAD_LAURA};
|
||||
s32 g_ActiveMaleHeadsIndex = 0;
|
||||
s32 g_ActiveFemaleHeadsIndex = 0;
|
||||
|
||||
s32 g_FemGuardHeads[3] = {
|
||||
HEAD_ALEX,
|
||||
HEAD_JULIANNE,
|
||||
HEAD_LAURA,
|
||||
};
|
||||
|
||||
u32 var80062c98 = 0x00000000;
|
||||
u32 var80062c9c = 0x00000000;
|
||||
f32 var80062ca0 = 1;
|
||||
|
|
|
|||
|
|
@ -3612,13 +3612,9 @@ struct body g_Bodies[] = {
|
|||
{ /*0x0094*/ 1, 0x0da8, FILE_CELVISWAISTCOAT, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS },
|
||||
{ /*0x0095*/ 0, 0x067c, FILE_CDARK_LEATHER, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK },
|
||||
{ /*0x0096*/ 0, 0x067c, FILE_CDARK_NEGOTIATOR, 1, 0.95305162668228, 0, FILE_GHAND_JOAF1 },
|
||||
{ /*0x0097*/ 0, 0x0000, 0, 1, 0, 0, FILE_GCOMBATHANDSLOD },
|
||||
};
|
||||
|
||||
u32 var8007dad0 = 0x00000000;
|
||||
u32 var8007dad4 = 0x3f800000;
|
||||
u32 var8007dad8 = 0x00000000;
|
||||
u32 var8007dadc = 0x00000000;
|
||||
u32 var8007dae0 = 0x04e50000;
|
||||
u32 var8007dae4 = 0xbd8ff972;
|
||||
u32 var8007dae8 = 0x3efbda51;
|
||||
u32 var8007daec = 0xbf5566cf;
|
||||
|
|
|
|||
|
|
@ -20,34 +20,34 @@ const u32 var7f1a78cc[] = {0x00000000};
|
|||
|
||||
void func0f000130(void)
|
||||
{
|
||||
var80062b00 = 0;
|
||||
g_NumBondBodies = 0;
|
||||
|
||||
while (var80062b1c[var80062b00] >= 0) {
|
||||
var80062b00++;
|
||||
while (g_BondBodies[g_NumBondBodies] >= 0) {
|
||||
g_NumBondBodies++;
|
||||
}
|
||||
|
||||
var80062b0c = 0;
|
||||
g_NumMaleGuardTeamHeads = 0;
|
||||
|
||||
while (var80062c14[var80062b0c] >= 0) {
|
||||
var80062b0c++;
|
||||
while (g_MaleGuardTeamHeads[g_NumMaleGuardTeamHeads] >= 0) {
|
||||
g_NumMaleGuardTeamHeads++;
|
||||
}
|
||||
|
||||
var80062b10 = 0;
|
||||
g_NumFemaleGuardTeamHeads = 0;
|
||||
|
||||
while (var80062c6c[var80062b10] >= 0) {
|
||||
var80062b10++;
|
||||
while (g_FemaleGuardTeamHeads[g_NumFemaleGuardTeamHeads] >= 0) {
|
||||
g_NumFemaleGuardTeamHeads++;
|
||||
}
|
||||
|
||||
var80062b04 = 0;
|
||||
g_NumMaleGuardHeads = 0;
|
||||
|
||||
while (var80062b68[var80062b04] >= 0) {
|
||||
var80062b04++;
|
||||
while (g_MaleGuardHeads[g_NumMaleGuardHeads] >= 0) {
|
||||
g_NumMaleGuardHeads++;
|
||||
}
|
||||
|
||||
var80062b08 = 0;
|
||||
g_NumFemaleGuardHeads = 0;
|
||||
|
||||
while (var80062c58[var80062b08] >= 0) {
|
||||
var80062b08++;
|
||||
while (g_FemaleGuardHeads[g_NumFemaleGuardHeads] >= 0) {
|
||||
g_NumFemaleGuardHeads++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
#include "types.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f00b820
|
||||
glabel stageChooseActiveHeads
|
||||
/* f00b820: 27bdffd0 */ addiu $sp,$sp,-48
|
||||
/* f00b824: 3c0e8008 */ lui $t6,%hi(g_Bodies+0x2)
|
||||
/* f00b828: 95cecf06 */ lhu $t6,%lo(g_Bodies+0x2)($t6)
|
||||
|
|
@ -45,8 +45,8 @@ glabel func0f00b820
|
|||
.L0f00b874:
|
||||
/* f00b874: 0c004b70 */ jal random
|
||||
/* f00b878: 00000000 */ nop
|
||||
/* f00b87c: 3c188006 */ lui $t8,%hi(var80062b00)
|
||||
/* f00b880: 8f182b00 */ lw $t8,%lo(var80062b00)($t8)
|
||||
/* f00b87c: 3c188006 */ lui $t8,%hi(g_NumBondBodies)
|
||||
/* f00b880: 8f182b00 */ lw $t8,%lo(g_NumBondBodies)($t8)
|
||||
/* f00b884: 3c018006 */ lui $at,%hi(var80062c80)
|
||||
/* f00b888: 3c128006 */ lui $s2,%hi(var80062b14)
|
||||
/* f00b88c: 0058001b */ divu $zero,$v0,$t8
|
||||
|
|
@ -78,8 +78,8 @@ glabel func0f00b820
|
|||
/* f00b8ec: 24030001 */ addiu $v1,$zero,0x1
|
||||
.L0f00b8f0:
|
||||
/* f00b8f0: 8cca0064 */ lw $t2,0x64($a2)
|
||||
/* f00b8f4: 3c15800a */ lui $s5,%hi(g_MaxHeadsPerBank)
|
||||
/* f00b8f8: 26b5cd20 */ addiu $s5,$s5,%lo(g_MaxHeadsPerBank)
|
||||
/* f00b8f4: 3c15800a */ lui $s5,%hi(g_NumActiveHeadsPerGender)
|
||||
/* f00b8f8: 26b5cd20 */ addiu $s5,$s5,%lo(g_NumActiveHeadsPerGender)
|
||||
/* f00b8fc: 11400003 */ beqz $t2,.L0f00b90c
|
||||
/* f00b900: 24180008 */ addiu $t8,$zero,0x8
|
||||
/* f00b904: 10000001 */ b .L0f00b90c
|
||||
|
|
@ -87,7 +87,7 @@ glabel func0f00b820
|
|||
.L0f00b90c:
|
||||
/* f00b90c: 8ccb0070 */ lw $t3,0x70($a2)
|
||||
/* f00b910: 240f0004 */ addiu $t7,$zero,0x4
|
||||
/* f00b914: 3c198006 */ lui $t9,%hi(var80061700)
|
||||
/* f00b914: 3c198006 */ lui $t9,%hi(g_StageHeadLimits)
|
||||
/* f00b918: 11600003 */ beqz $t3,.L0f00b928
|
||||
/* f00b91c: 00000000 */ nop
|
||||
/* f00b920: 10000001 */ b .L0f00b928
|
||||
|
|
@ -98,9 +98,9 @@ glabel func0f00b820
|
|||
/* f00b930: 01a57021 */ addu $t6,$t5,$a1
|
||||
/* f00b934: 29c10002 */ slti $at,$t6,0x2
|
||||
/* f00b938: 14200005 */ bnez $at,.L0f00b950
|
||||
/* f00b93c: 27221700 */ addiu $v0,$t9,%lo(var80061700)
|
||||
/* f00b940: 3c15800a */ lui $s5,%hi(g_MaxHeadsPerBank)
|
||||
/* f00b944: 26b5cd20 */ addiu $s5,$s5,%lo(g_MaxHeadsPerBank)
|
||||
/* f00b93c: 27221700 */ addiu $v0,$t9,%lo(g_StageHeadLimits)
|
||||
/* f00b940: 3c15800a */ lui $s5,%hi(g_NumActiveHeadsPerGender)
|
||||
/* f00b944: 26b5cd20 */ addiu $s5,$s5,%lo(g_NumActiveHeadsPerGender)
|
||||
/* f00b948: 1000000d */ b .L0f00b980
|
||||
/* f00b94c: aeaf0000 */ sw $t7,0x0($s5)
|
||||
.L0f00b950:
|
||||
|
|
@ -122,20 +122,20 @@ glabel func0f00b820
|
|||
/* f00b980: 0fc41b99 */ jal cheatIsActive
|
||||
/* f00b984: 24040010 */ addiu $a0,$zero,0x10
|
||||
/* f00b988: 10400005 */ beqz $v0,.L0f00b9a0
|
||||
/* f00b98c: 3c148006 */ lui $s4,%hi(var80062c14)
|
||||
/* f00b990: 3c138006 */ lui $s3,%hi(var80062b0c)
|
||||
/* f00b994: 26942c14 */ addiu $s4,$s4,%lo(var80062c14)
|
||||
/* f00b98c: 3c148006 */ lui $s4,%hi(g_MaleGuardTeamHeads)
|
||||
/* f00b990: 3c138006 */ lui $s3,%hi(g_NumMaleGuardTeamHeads)
|
||||
/* f00b994: 26942c14 */ addiu $s4,$s4,%lo(g_MaleGuardTeamHeads)
|
||||
/* f00b998: 10000005 */ b .L0f00b9b0
|
||||
/* f00b99c: 8e732b0c */ lw $s3,%lo(var80062b0c)($s3)
|
||||
/* f00b99c: 8e732b0c */ lw $s3,%lo(g_NumMaleGuardTeamHeads)($s3)
|
||||
.L0f00b9a0:
|
||||
/* f00b9a0: 3c148006 */ lui $s4,%hi(var80062b68)
|
||||
/* f00b9a4: 3c138006 */ lui $s3,%hi(var80062b04)
|
||||
/* f00b9a8: 26942b68 */ addiu $s4,$s4,%lo(var80062b68)
|
||||
/* f00b9ac: 8e732b04 */ lw $s3,%lo(var80062b04)($s3)
|
||||
/* f00b9a0: 3c148006 */ lui $s4,%hi(g_MaleGuardHeads)
|
||||
/* f00b9a4: 3c138006 */ lui $s3,%hi(g_NumMaleGuardHeads)
|
||||
/* f00b9a8: 26942b68 */ addiu $s4,$s4,%lo(g_MaleGuardHeads)
|
||||
/* f00b9ac: 8e732b04 */ lw $s3,%lo(g_NumMaleGuardHeads)($s3)
|
||||
.L0f00b9b0:
|
||||
/* f00b9b0: 8eaa0000 */ lw $t2,0x0($s5)
|
||||
/* f00b9b4: 3c12800a */ lui $s2,%hi(g_HeadsA)
|
||||
/* f00b9b8: 2652cd28 */ addiu $s2,$s2,%lo(g_HeadsA)
|
||||
/* f00b9b4: 3c12800a */ lui $s2,%hi(g_ActiveMaleHeads)
|
||||
/* f00b9b8: 2652cd28 */ addiu $s2,$s2,%lo(g_ActiveMaleHeads)
|
||||
/* f00b9bc: 19400022 */ blez $t2,.L0f00ba48
|
||||
/* f00b9c0: 00000000 */ nop
|
||||
.L0f00b9c4:
|
||||
|
|
@ -156,8 +156,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(g_HeadsA)
|
||||
/* f00ba08: 2442cd28 */ addiu $v0,$v0,%lo(g_HeadsA)
|
||||
/* f00ba04: 3c02800a */ lui $v0,%hi(g_ActiveMaleHeads)
|
||||
/* f00ba08: 2442cd28 */ addiu $v0,$v0,%lo(g_ActiveMaleHeads)
|
||||
/* f00ba0c: 01c02025 */ or $a0,$t6,$zero
|
||||
.L0f00ba10:
|
||||
/* f00ba10: 8c4f0000 */ lw $t7,0x0($v0)
|
||||
|
|
@ -180,20 +180,20 @@ glabel func0f00b820
|
|||
/* f00ba48: 0fc41b99 */ jal cheatIsActive
|
||||
/* f00ba4c: 24040010 */ addiu $a0,$zero,0x10
|
||||
/* f00ba50: 10400006 */ beqz $v0,.L0f00ba6c
|
||||
/* f00ba54: 3c148006 */ lui $s4,%hi(var80062c58)
|
||||
/* f00ba58: 3c148006 */ lui $s4,%hi(var80062c6c)
|
||||
/* f00ba5c: 3c138006 */ lui $s3,%hi(var80062b10)
|
||||
/* f00ba60: 26942c6c */ addiu $s4,$s4,%lo(var80062c6c)
|
||||
/* f00ba54: 3c148006 */ lui $s4,%hi(g_FemaleGuardHeads)
|
||||
/* f00ba58: 3c148006 */ lui $s4,%hi(g_FemaleGuardTeamHeads)
|
||||
/* f00ba5c: 3c138006 */ lui $s3,%hi(g_NumFemaleGuardTeamHeads)
|
||||
/* f00ba60: 26942c6c */ addiu $s4,$s4,%lo(g_FemaleGuardTeamHeads)
|
||||
/* f00ba64: 10000004 */ b .L0f00ba78
|
||||
/* f00ba68: 8e732b10 */ lw $s3,%lo(var80062b10)($s3)
|
||||
/* f00ba68: 8e732b10 */ lw $s3,%lo(g_NumFemaleGuardTeamHeads)($s3)
|
||||
.L0f00ba6c:
|
||||
/* f00ba6c: 3c138006 */ lui $s3,%hi(var80062b08)
|
||||
/* f00ba70: 26942c58 */ addiu $s4,$s4,%lo(var80062c58)
|
||||
/* f00ba74: 8e732b08 */ lw $s3,%lo(var80062b08)($s3)
|
||||
/* f00ba6c: 3c138006 */ lui $s3,%hi(g_NumFemaleGuardHeads)
|
||||
/* f00ba70: 26942c58 */ addiu $s4,$s4,%lo(g_FemaleGuardHeads)
|
||||
/* f00ba74: 8e732b08 */ lw $s3,%lo(g_NumFemaleGuardHeads)($s3)
|
||||
.L0f00ba78:
|
||||
/* f00ba78: 8ea50000 */ lw $a1,0x0($s5)
|
||||
/* f00ba7c: 3c12800a */ lui $s2,%hi(g_HeadsB)
|
||||
/* f00ba80: 2652cd48 */ addiu $s2,$s2,%lo(g_HeadsB)
|
||||
/* f00ba7c: 3c12800a */ lui $s2,%hi(g_ActiveFemaleHeads)
|
||||
/* f00ba80: 2652cd48 */ addiu $s2,$s2,%lo(g_ActiveFemaleHeads)
|
||||
/* f00ba84: 18a00022 */ blez $a1,.L0f00bb10
|
||||
/* f00ba88: 00000000 */ nop
|
||||
.L0f00ba8c:
|
||||
|
|
@ -214,8 +214,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(g_HeadsB)
|
||||
/* f00bad0: 2442cd48 */ addiu $v0,$v0,%lo(g_HeadsB)
|
||||
/* f00bacc: 3c02800a */ lui $v0,%hi(g_ActiveFemaleHeads)
|
||||
/* f00bad0: 2442cd48 */ addiu $v0,$v0,%lo(g_ActiveFemaleHeads)
|
||||
/* f00bad4: 01202025 */ or $a0,$t1,$zero
|
||||
.L0f00bad8:
|
||||
/* f00bad8: 8c4a0000 */ lw $t2,0x0($v0)
|
||||
|
|
@ -235,11 +235,11 @@ glabel func0f00b820
|
|||
/* f00bb08: 26520004 */ addiu $s2,$s2,0x4
|
||||
/* f00bb0c: 00008825 */ or $s1,$zero,$zero
|
||||
.L0f00bb10:
|
||||
/* f00bb10: 3c018006 */ lui $at,%hi(g_HeadsAIndex)
|
||||
/* f00bb14: ac202c84 */ sw $zero,%lo(g_HeadsAIndex)($at)
|
||||
/* f00bb18: 3c018006 */ lui $at,%hi(g_HeadsBIndex)
|
||||
/* f00bb10: 3c018006 */ lui $at,%hi(g_ActiveMaleHeadsIndex)
|
||||
/* f00bb14: ac202c84 */ sw $zero,%lo(g_ActiveMaleHeadsIndex)($at)
|
||||
/* f00bb18: 3c018006 */ lui $at,%hi(g_ActiveFemaleHeadsIndex)
|
||||
/* f00bb1c: 18a00006 */ blez $a1,.L0f00bb38
|
||||
/* f00bb20: ac202c88 */ sw $zero,%lo(g_HeadsBIndex)($at)
|
||||
/* f00bb20: ac202c88 */ sw $zero,%lo(g_ActiveFemaleHeadsIndex)($at)
|
||||
/* f00bb24: 26310001 */ addiu $s1,$s1,0x1
|
||||
.L0f00bb28:
|
||||
/* f00bb28: 0225082a */ slt $at,$s1,$a1
|
||||
|
|
@ -265,6 +265,95 @@ glabel func0f00b820
|
|||
/* f00bb6c: 27bd0030 */ addiu $sp,$sp,0x30
|
||||
);
|
||||
|
||||
// Mismatches:
|
||||
// - Address of var80062b14 Should be loaded to a callee-save register
|
||||
// - PLAYERCOUNT() calculation is more spread out
|
||||
// (does other register preparation during calculation)
|
||||
// - Loop at 950 is calculated differently
|
||||
//void stageChooseActiveHeads(s32 stagenum)
|
||||
//{
|
||||
// s32 *headsavailablelist;
|
||||
// s32 headsavailablelen;
|
||||
// bool done;
|
||||
// s32 i;
|
||||
// s32 j;
|
||||
//
|
||||
// for (i = 0; g_Bodies[i].bodyfileid; i++) {
|
||||
// g_Bodies[i].unk0c = NULL;
|
||||
// }
|
||||
//
|
||||
// var80062c80 = random() % g_NumBondBodies;
|
||||
// var80062b14 = 0;
|
||||
// var80062b18 = 0;
|
||||
//
|
||||
// if (PLAYERCOUNT() >= 2) {
|
||||
// g_NumActiveHeadsPerGender = 4;
|
||||
// } else {
|
||||
// // 950
|
||||
// g_NumActiveHeadsPerGender = 8;
|
||||
//
|
||||
// for (i = 0; i < ARRAYCOUNT(g_StageHeadLimits); i++) {
|
||||
// if (g_StageHeadLimits[i].stagenum == stagenum) {
|
||||
// g_NumActiveHeadsPerGender = g_StageHeadLimits[i].maxheads;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // Male heads
|
||||
// if (cheatIsActive(CHEAT_TEAMHEADSONLY)) {
|
||||
// headsavailablelist = g_MaleGuardTeamHeads;
|
||||
// headsavailablelen = g_NumMaleGuardTeamHeads;
|
||||
// } else {
|
||||
// headsavailablelist = g_MaleGuardHeads;
|
||||
// headsavailablelen = g_NumMaleGuardHeads;
|
||||
// }
|
||||
//
|
||||
// for (i = 0; i < g_NumActiveHeadsPerGender; i++) {
|
||||
// do {
|
||||
// done = true;
|
||||
// g_ActiveMaleHeads[i] = headsavailablelist[random() % headsavailablelen];
|
||||
//
|
||||
// if (headsavailablelen > g_NumActiveHeadsPerGender) {
|
||||
// for (j = 0; j < i; j++) {
|
||||
// if (g_ActiveMaleHeads[i] == g_ActiveMaleHeads[j]) {
|
||||
// done = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } while (!done);
|
||||
// }
|
||||
//
|
||||
// // Female heads
|
||||
// if (cheatIsActive(CHEAT_TEAMHEADSONLY)) {
|
||||
// headsavailablelist = g_FemaleGuardTeamHeads;
|
||||
// headsavailablelen = g_NumFemaleGuardTeamHeads;
|
||||
// } else {
|
||||
// headsavailablelist = g_FemaleGuardHeads;
|
||||
// headsavailablelen = g_NumFemaleGuardHeads;
|
||||
// }
|
||||
//
|
||||
// for (i = 0; i < g_NumActiveHeadsPerGender; i++) {
|
||||
// do {
|
||||
// done = true;
|
||||
// g_ActiveFemaleHeads[i] = headsavailablelist[random() % headsavailablelen];
|
||||
//
|
||||
// if (headsavailablelen > g_NumActiveHeadsPerGender) {
|
||||
// for (j = 0; j < i; j++) {
|
||||
// if (g_ActiveFemaleHeads[i] == g_ActiveFemaleHeads[j]) {
|
||||
// done = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } while (!done);
|
||||
// }
|
||||
//
|
||||
// g_ActiveMaleHeadsIndex = 0;
|
||||
// g_ActiveFemaleHeadsIndex = 0;
|
||||
//
|
||||
// for (i = 0; i < g_NumActiveHeadsPerGender; i++);
|
||||
// for (i = 0; i < g_NumActiveHeadsPerGender; i++);
|
||||
//}
|
||||
|
||||
void resetSomeStageThings(void)
|
||||
{
|
||||
s32 i;
|
||||
|
|
|
|||
|
|
@ -429,26 +429,26 @@ struct model *modelAllocateChr(u32 bodynum, u32 headnum, u32 flags)
|
|||
|
||||
s32 func0f02d3f8(void)
|
||||
{
|
||||
return var80062b1c[var80062c80];
|
||||
return g_BondBodies[var80062c80];
|
||||
}
|
||||
|
||||
u32 bodyGetHead(u32 bodynum)
|
||||
s32 bodyChooseHead(s32 bodynum)
|
||||
{
|
||||
u32 head;
|
||||
s32 head;
|
||||
|
||||
if (g_Bodies[bodynum].ismale) {
|
||||
head = g_HeadsA[g_HeadsAIndex++];
|
||||
head = g_ActiveMaleHeads[g_ActiveMaleHeadsIndex++];
|
||||
|
||||
if (g_HeadsAIndex == g_MaxHeadsPerBank) {
|
||||
g_HeadsAIndex = 0;
|
||||
if (g_ActiveMaleHeadsIndex == g_NumActiveHeadsPerGender) {
|
||||
g_ActiveMaleHeadsIndex = 0;
|
||||
}
|
||||
} else if (bodynum == BODY_FEM_GUARD) {
|
||||
head = g_FemaleHeads[random() % 3];
|
||||
head = g_FemGuardHeads[random() % 3];
|
||||
} else {
|
||||
head = g_HeadsB[g_HeadsBIndex++];
|
||||
head = g_ActiveFemaleHeads[g_ActiveFemaleHeadsIndex++];
|
||||
|
||||
if (g_HeadsBIndex == g_MaxHeadsPerBank) {
|
||||
g_HeadsBIndex = 0;
|
||||
if (g_ActiveFemaleHeadsIndex == g_NumActiveHeadsPerGender) {
|
||||
g_ActiveFemaleHeadsIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -564,7 +564,7 @@ glabel chrUnpack
|
|||
.L0f02d688:
|
||||
/* f02d688: 15610005 */ bne $t3,$at,.L0f02d6a0
|
||||
/* f02d68c: 8fa4004c */ lw $a0,0x4c($sp)
|
||||
/* f02d690: 0fc0b505 */ jal bodyGetHead
|
||||
/* f02d690: 0fc0b505 */ jal bodyChooseHead
|
||||
/* f02d694: afa70058 */ sw $a3,0x58($sp)
|
||||
/* f02d698: 8fa70058 */ lw $a3,0x58($sp)
|
||||
/* f02d69c: afa20048 */ sw $v0,0x48($sp)
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ void func0f167e7c(s32 stagenum)
|
|||
func0f00c240();
|
||||
func0f00c490();
|
||||
func0f00b510();
|
||||
func0f00b820(stagenum);
|
||||
stageChooseActiveHeads(stagenum);
|
||||
setupParseObjects(stagenum);
|
||||
tagsAllocatePtrs();
|
||||
func0f013010();
|
||||
|
|
|
|||
|
|
@ -14616,10 +14616,10 @@ s32 g_NumChrsC = 0;
|
|||
s16 *g_ChrnumsC = NULL;
|
||||
s16 *g_ChrIndexesC = NULL;
|
||||
u32 var8009cd1c = 0;
|
||||
u32 g_MaxHeadsPerBank = 0;
|
||||
s32 g_NumActiveHeadsPerGender = 0;
|
||||
u32 var8009cd24 = 0;
|
||||
u32 g_HeadsA[8] = {0};
|
||||
u32 g_HeadsB[8] = {0};
|
||||
u32 g_ActiveMaleHeads[8] = {0};
|
||||
u32 g_ActiveFemaleHeads[8] = {0};
|
||||
u32 var8009cd68 = 0;
|
||||
u32 var8009cd6c = 0;
|
||||
s32 g_RecentQuipsPlayed[] = {0, 0, 0, 0, 0};
|
||||
|
|
|
|||
|
|
@ -217,6 +217,7 @@ extern u32 var80061694;
|
|||
extern u32 var800616dc;
|
||||
extern u32 var800616e4;
|
||||
extern u32 var800616e8;
|
||||
extern struct stageheadlimit g_StageHeadLimits[3];
|
||||
extern u32 var80061710;
|
||||
extern struct monitorscreen var80061a80;
|
||||
extern struct monitorscreen var80061af4;
|
||||
|
|
|
|||
|
|
@ -109,21 +109,22 @@ extern struct var80062a8c *var80062a8c; // pointer to array
|
|||
extern s32 var80062a90; // true if var80062a8c has anything in its array
|
||||
extern u32 var80062a94;
|
||||
extern u32 var80062aa0;
|
||||
extern s32 var80062b00;
|
||||
extern s32 var80062b04;
|
||||
extern s32 var80062b08;
|
||||
extern s32 var80062b0c;
|
||||
extern s32 var80062b10;
|
||||
extern u32 var80062b14;
|
||||
extern s32 var80062b1c[];
|
||||
extern s32 var80062b68[];
|
||||
extern s32 var80062c14[];
|
||||
extern s32 var80062c58[];
|
||||
extern s32 var80062c6c[];
|
||||
extern s32 g_NumBondBodies;
|
||||
extern s32 g_NumMaleGuardHeads;
|
||||
extern s32 g_NumFemaleGuardHeads;
|
||||
extern s32 g_NumMaleGuardTeamHeads;
|
||||
extern s32 g_NumFemaleGuardTeamHeads;
|
||||
extern s32 var80062b14;
|
||||
extern s32 var80062b18;
|
||||
extern s32 g_BondBodies[];
|
||||
extern s32 g_MaleGuardHeads[];
|
||||
extern s32 g_MaleGuardTeamHeads[];
|
||||
extern s32 g_FemaleGuardHeads[];
|
||||
extern s32 g_FemaleGuardTeamHeads[];
|
||||
extern s32 var80062c80;
|
||||
extern u32 g_HeadsAIndex;
|
||||
extern u32 g_HeadsBIndex;
|
||||
extern u32 g_FemaleHeads[3];
|
||||
extern s32 g_ActiveMaleHeadsIndex;
|
||||
extern s32 g_ActiveFemaleHeadsIndex;
|
||||
extern s32 g_FemGuardHeads[3];
|
||||
extern f32 var80062ca0;
|
||||
extern f32 var80062ca4;
|
||||
extern f32 var80062ca8;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
void func0f00b820(s32 stagenum);
|
||||
void stageChooseActiveHeads(s32 stagenum);
|
||||
void resetSomeStageThings(void);
|
||||
void func0f00bbc8(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ u32 func0f02ce8c(void);
|
|||
struct model *func0f02d338(u32 bodynum, u32 headnum, u32 arg2, u32 arg3, bool arg4, u32 arg5);
|
||||
struct model *modelAllocateChr(u32 bodynum, u32 headnum, u32 flags);
|
||||
s32 func0f02d3f8(void);
|
||||
u32 bodyGetHead(u32 bodynum);
|
||||
s32 bodyChooseHead(s32 bodynum);
|
||||
void chrUnpack(s32 stagenum, void *cmddata, s32 cmdindex);
|
||||
struct prop *propAllocateEyespy(struct pad *pad, s16 room);
|
||||
u32 func0f02ddbc(void);
|
||||
|
|
|
|||
|
|
@ -548,9 +548,9 @@ extern void *var8009ccc0[20];
|
|||
extern s32 g_NumChrsC;
|
||||
extern s16 *g_ChrnumsC;
|
||||
extern s16 *g_ChrIndexesC;
|
||||
extern u32 g_MaxHeadsPerBank;
|
||||
extern u32 g_HeadsA[8];
|
||||
extern u32 g_HeadsB[8];
|
||||
extern s32 g_NumActiveHeadsPerGender;
|
||||
extern u32 g_ActiveMaleHeads[8];
|
||||
extern u32 g_ActiveFemaleHeads[8];
|
||||
extern s32 g_RecentQuipsPlayed[5];
|
||||
extern u8 g_RecentQuipsIndex;
|
||||
extern u32 var8009cda0;
|
||||
|
|
|
|||
|
|
@ -3043,13 +3043,13 @@ struct cheat {
|
|||
};
|
||||
|
||||
struct body {
|
||||
u16 ismale : 1;
|
||||
u16 flags_01 : 15;
|
||||
u16 bodyfileid;
|
||||
f32 unk04;
|
||||
f32 unk08;
|
||||
void *unk0c; // likely a pointer to bodyfile data if loaded
|
||||
u16 handfileid;
|
||||
/*0x00*/ u16 ismale : 1;
|
||||
/*0x00*/ u16 flags_01 : 15;
|
||||
/*0x02*/ u16 bodyfileid;
|
||||
/*0x04*/ f32 unk04;
|
||||
/*0x08*/ f32 unk08;
|
||||
/*0x0c*/ void *unk0c; // likely a pointer to bodyfile data if loaded
|
||||
/*0x10*/ u16 handfileid;
|
||||
};
|
||||
|
||||
struct stagetableentry {
|
||||
|
|
@ -6762,4 +6762,9 @@ struct var8007e3d0 {
|
|||
s32 numallocated;
|
||||
};
|
||||
|
||||
struct stageheadlimit {
|
||||
u8 stagenum;
|
||||
u8 maxheads;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue