Rename chr array symbols and write chr documentation

This commit is contained in:
Ryan Dwyer
2020-12-29 23:13:10 +10:00
parent 54ec3a84f6
commit 7e544a5b6f
20 changed files with 312 additions and 247 deletions
+66 -66
View File
@@ -115,9 +115,9 @@ void func0f01e250(void)
} while (!done);
}
s32 getNumChrs(void)
s32 getNumChrSlots(void)
{
return g_NumChrsA;
return g_NumChrSlots;
}
void chrSetChrnum(struct chrdata *chr, s16 chrnum)
@@ -127,9 +127,9 @@ void chrSetChrnum(struct chrdata *chr, s16 chrnum)
s16 tmp;
// Set the new chrnum
for (i = 0; i < g_NumChrsC; i++) {
if (g_ChrnumsC[i] == chr->chrnum) {
g_ChrnumsC[i] = chrnum;
for (i = 0; i < g_NumChrs; i++) {
if (g_Chrnums[i] == chr->chrnum) {
g_Chrnums[i] = chrnum;
break;
}
@@ -137,19 +137,19 @@ void chrSetChrnum(struct chrdata *chr, s16 chrnum)
chr->chrnum = chrnum;
// Sort the g_ChrnumsC and g_ChrIndexesC arrays
// Sort the g_Chrnums and g_ChrIndexes arrays
do {
modified = false;
for (i = 0; i < g_NumChrsC - 1; i++) {
if (g_ChrnumsC[i] > g_ChrnumsC[i + 1]) {
tmp = g_ChrnumsC[i];
g_ChrnumsC[i] = g_ChrnumsC[i + 1];
g_ChrnumsC[i + 1] = tmp;
for (i = 0; i < g_NumChrs - 1; i++) {
if (g_Chrnums[i] > g_Chrnums[i + 1]) {
tmp = g_Chrnums[i];
g_Chrnums[i] = g_Chrnums[i + 1];
g_Chrnums[i + 1] = tmp;
tmp = g_ChrIndexesC[i];
g_ChrIndexesC[i] = g_ChrIndexesC[i + 1];
g_ChrIndexesC[i + 1] = tmp;
tmp = g_ChrIndexes[i];
g_ChrIndexes[i] = g_ChrIndexes[i + 1];
g_ChrIndexes[i + 1] = tmp;
modified = true;
}
@@ -157,44 +157,44 @@ void chrSetChrnum(struct chrdata *chr, s16 chrnum)
} while (modified);
}
void chrInsertToChrsC(s32 chrnum, s32 chrindex)
void chrRegister(s32 chrnum, s32 chrindex)
{
s32 i;
s16 tmp;
for (i = 0; i < g_NumChrsC; i++) {
if (g_ChrnumsC[i] > chrnum) {
tmp = g_ChrnumsC[i];
g_ChrnumsC[i] = chrnum;
for (i = 0; i < g_NumChrs; i++) {
if (g_Chrnums[i] > chrnum) {
tmp = g_Chrnums[i];
g_Chrnums[i] = chrnum;
chrnum = tmp;
tmp = g_ChrIndexesC[i];
g_ChrIndexesC[i] = chrindex;
tmp = g_ChrIndexes[i];
g_ChrIndexes[i] = chrindex;
chrindex = tmp;
}
}
g_ChrnumsC[g_NumChrsC] = chrnum;
g_ChrIndexesC[g_NumChrsC] = chrindex;
g_NumChrsC++;
g_Chrnums[g_NumChrs] = chrnum;
g_ChrIndexes[g_NumChrs] = chrindex;
g_NumChrs++;
}
void chrRemoveFromChrsC(s32 chrnum)
void chrDeregister(s32 chrnum)
{
s32 i;
for (i = 0; i < g_NumChrsC; i++) {
if (g_ChrnumsC[i] == chrnum) {
for (i = 0; i < g_NumChrs; i++) {
if (g_Chrnums[i] == chrnum) {
s32 j = i + 1;
while (j < g_NumChrsC) {
g_ChrnumsC[i] = g_ChrnumsC[j];
g_ChrIndexesC[i] = g_ChrIndexesC[j];
while (j < g_NumChrs) {
g_Chrnums[i] = g_Chrnums[j];
g_ChrIndexes[i] = g_ChrIndexes[j];
i++;
j++;
}
g_NumChrsC--;
g_NumChrs--;
return;
}
}
@@ -2248,13 +2248,13 @@ glabel var7f1a8720
/* f020534: 24020001 */ addiu $v0,$zero,0x1
);
s32 chrsGetNumFree(void)
s32 getNumFreeChrSlots(void)
{
s32 count = 0;
s32 i;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].chrnum < 0) {
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].chrnum < 0) {
count++;
}
}
@@ -2286,22 +2286,22 @@ f32 chrGetArmor(struct chrdata *chr)
return 0;
}
s16 getLowestUnusedChrId(void)
s16 getNextUnusedChrnum(void)
{
s32 chr_id;
s32 chrnum;
struct chrdata *chr;
do {
chr_id = ++g_NextChrId;
chrnum = ++g_NextChrnum;
if (chr_id > 32767) {
chr_id = g_NextChrId = 5000;
if (chrnum > 32767) {
chrnum = g_NextChrnum = 5000;
}
chr = chrFindByLiteralId((s16)chr_id);
chr = chrFindByLiteralId((s16)chrnum);
} while (chr);
return chr_id;
return chrnum;
}
void chrInit(struct prop *prop, u8 *ailist)
@@ -2309,16 +2309,16 @@ void chrInit(struct prop *prop, u8 *ailist)
s32 i;
struct chrdata *chr = NULL;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].chrnum < 0) {
chr = &g_ChrsA[i];
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].chrnum < 0) {
chr = &g_ChrSlots[i];
break;
}
}
prop->chr = chr;
chr->chrnum = getLowestUnusedChrId();
chrInsertToChrsC(chr->chrnum, i);
chr->chrnum = getNextUnusedChrnum();
chrRegister(chr->chrnum, i);
chr->headnum = 0;
chr->bodynum = 0;
@@ -2638,7 +2638,7 @@ void func0f020d44(struct prop *prop, bool removechr)
chr->model = NULL;
if (removechr) {
chrRemoveFromChrsC(chr->chrnum);
chrDeregister(chr->chrnum);
if (chr->cover != -1) {
coverSetFlag0002(chr->cover, false);
@@ -2671,13 +2671,13 @@ void propClearReferences(s32 propnum)
s32 j;
struct prop *prop = &g_Vars.props[propnum];
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].target == propnum) {
if (propGetIndexByChrId(&g_ChrsA[i], g_ChrsA[i].chrpreset1) == propnum) {
g_ChrsA[i].chrpreset1 = -1;
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].target == propnum) {
if (propGetIndexByChrId(&g_ChrSlots[i], g_ChrSlots[i].chrpreset1) == propnum) {
g_ChrSlots[i].chrpreset1 = -1;
}
g_ChrsA[i].target = -1;
g_ChrSlots[i].target = -1;
}
}
@@ -2700,9 +2700,9 @@ void func0f0211a8(f32 arg0)
var80062968 = arg0;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].model) {
modelSetAnimPlaySpeed(g_ChrsA[i].model, var80062968, 600);
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].model) {
modelSetAnimPlaySpeed(g_ChrSlots[i].model, var80062968, 600);
}
}
}
@@ -10167,23 +10167,23 @@ void func0f028590(f32 arg0)
s32 i;
f32 add = 0.075f;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].model) {
struct prop *prop = g_ChrsA[i].prop;
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].model) {
struct prop *prop = g_ChrSlots[i].prop;
if (prop && prop->type == PROPTYPE_CHR &&
chrGetTargetProp(&g_ChrsA[i]) == g_Vars.currentplayer->prop) {
chrGetTargetProp(&g_ChrSlots[i]) == g_Vars.currentplayer->prop) {
f32 distance = chrGetDistanceToCurrentPlayer(&g_ChrsA[i]);
f32 distance = chrGetDistanceToCurrentPlayer(&g_ChrSlots[i]);
if (distance == 0) {
distance = 2;
} else {
distance = (arg0 * 100 * g_ChrsA[i].hearingscale * (1.0f + add)) / distance;
distance = (arg0 * 100 * g_ChrSlots[i].hearingscale * (1.0f + add)) / distance;
}
if (distance > 1.0f) {
chrRecordLastHearTargetTime(&g_ChrsA[i]);
chrRecordLastHearTargetTime(&g_ChrSlots[i]);
#if PIRACYCHECKS
{
s32 *i = (s32 *)&func00002078;
@@ -10210,17 +10210,17 @@ void func0f028590(f32 arg0)
struct chrdata *chrFindByLiteralId(s32 chrnum)
{
s32 lower = 0;
s32 upper = g_NumChrsC;
s32 upper = g_NumChrs;
s32 i;
while (upper >= lower) {
i = (lower + upper) / 2;
if (chrnum == g_ChrnumsC[i]) {
return &g_ChrsA[g_ChrIndexesC[i]];
if (chrnum == g_Chrnums[i]) {
return &g_ChrSlots[g_ChrIndexes[i]];
}
if (chrnum < g_ChrnumsC[i]) {
if (chrnum < g_Chrnums[i]) {
upper = i - 1;
} else {
lower = i + 1;
+55 -55
View File
@@ -12855,7 +12855,7 @@ void chrAlertOthersOfInjury(struct chrdata *chr, bool dying)
{
s32 index = 0;
s32 numinrange = 0;
s32 numchrs = getNumChrs();
s32 numchrs = getNumChrSlots();
if (g_Vars.antiplayernum >= 0 && chr->prop == g_Vars.anti->prop) {
return;
@@ -12870,7 +12870,7 @@ void chrAlertOthersOfInjury(struct chrdata *chr, bool dying)
}
for (; index < numchrs && numinrange < 7; index++) {
struct chrdata *loopchr = &g_ChrsA[index];
struct chrdata *loopchr = &g_ChrSlots[index];
if (loopchr->model && loopchr->prop && (loopchr->prop->flags & PROPFLAG_TANGIBLE)) {
f32 xdiff = loopchr->prop->pos.x - chr->prop->pos.x;
@@ -23473,9 +23473,9 @@ void func0f0482cc(u32 ailistid)
prop = prop->next;
}
g_ChrsB[g_NumChrsB - 1].ailist = ailistFindById(ailistid);
g_ChrsB[g_NumChrsB - 1].aioffset = 0;
g_ChrsB[g_NumChrsB - 1].aireturnlist = -1;
g_BgChrs[g_NumBgChrs - 1].ailist = ailistFindById(ailistid);
g_BgChrs[g_NumBgChrs - 1].aioffset = 0;
g_BgChrs[g_NumBgChrs - 1].aireturnlist = -1;
}
u32 var80068454 = 0;
@@ -23494,7 +23494,7 @@ glabel func0f048398
/* f0483b4: afb30024 */ sw $s3,0x24($sp)
/* f0483b8: afb20020 */ sw $s2,0x20($sp)
/* f0483bc: afb1001c */ sw $s1,0x1c($sp)
/* f0483c0: 0fc07934 */ jal getNumChrs
/* f0483c0: 0fc07934 */ jal getNumChrSlots
/* f0483c4: afb00018 */ sw $s0,0x18($sp)
/* f0483c8: 3c1e8006 */ lui $s8,%hi(var80062cb0)
/* f0483cc: 27de2cb0 */ addiu $s8,$s8,%lo(var80062cb0)
@@ -23518,8 +23518,8 @@ glabel func0f048398
/* f048414: 24170006 */ addiu $s7,$zero,0x6
/* f048418: 24140003 */ addiu $s4,$zero,0x3
.L0f04841c:
/* f04841c: 3c0f8006 */ lui $t7,%hi(g_ChrsA)
/* f048420: 8def2988 */ lw $t7,%lo(g_ChrsA)($t7)
/* f04841c: 3c0f8006 */ lui $t7,%hi(g_ChrSlots)
/* f048420: 8def2988 */ lw $t7,%lo(g_ChrSlots)($t7)
/* f048424: 026f8021 */ addu $s0,$s3,$t7
/* f048428: 8e180020 */ lw $t8,0x20($s0)
/* f04842c: 5300004b */ beqzl $t8,.L0f04855c
@@ -23643,15 +23643,15 @@ glabel func0f048398
/* f0485d4: 240c0001 */ addiu $t4,$zero,0x1
/* f0485d8: a02ca493 */ sb $t4,%lo(g_Vars+0x4d3)($at)
.L0f0485dc:
/* f0485dc: 3c038006 */ lui $v1,%hi(g_NumChrsB)
/* f0485e0: 8c637e60 */ lw $v1,%lo(g_NumChrsB)($v1)
/* f0485dc: 3c038006 */ lui $v1,%hi(g_NumBgChrs)
/* f0485e0: 8c637e60 */ lw $v1,%lo(g_NumBgChrs)($v1)
/* f0485e4: 00009825 */ or $s3,$zero,$zero
/* f0485e8: 18600013 */ blez $v1,.L0f048638
.L0f0485ec:
/* f0485ec: 3c0d800a */ lui $t5,%hi(g_Vars+0x4d3)
/* f0485f0: 81ada493 */ lb $t5,%lo(g_Vars+0x4d3)($t5)
/* f0485f4: 3c028006 */ lui $v0,%hi(g_ChrsB)
/* f0485f8: 8c427e58 */ lw $v0,%lo(g_ChrsB)($v0)
/* f0485f4: 3c028006 */ lui $v0,%hi(g_BgChrs)
/* f0485f8: 8c427e58 */ lw $v0,%lo(g_BgChrs)($v0)
/* f0485fc: 11a00005 */ beqz $t5,.L0f048614
/* f048600: 00537021 */ addu $t6,$v0,$s3
/* f048604: 95cf0192 */ lhu $t7,0x192($t6)
@@ -23661,8 +23661,8 @@ glabel func0f048398
.L0f048614:
/* f048614: 0fc11f20 */ jal chrTick
/* f048618: 02622021 */ addu $a0,$s3,$v0
/* f04861c: 3c038006 */ lui $v1,%hi(g_NumChrsB)
/* f048620: 8c637e60 */ lw $v1,%lo(g_NumChrsB)($v1)
/* f04861c: 3c038006 */ lui $v1,%hi(g_NumBgChrs)
/* f048620: 8c637e60 */ lw $v1,%lo(g_NumBgChrs)($v1)
/* f048624: 26b50001 */ addiu $s5,$s5,0x1
.L0f048628:
/* f048628: 02a3082a */ slt $at,$s5,$v1
@@ -23678,8 +23678,8 @@ glabel func0f048398
/* f04864c: 24170005 */ addiu $s7,$zero,0x5
/* f048650: 27b1007c */ addiu $s1,$sp,0x7c
.L0f048654:
/* f048654: 3c088006 */ lui $t0,%hi(g_ChrsA)
/* f048658: 8d082988 */ lw $t0,%lo(g_ChrsA)($t0)
/* f048654: 3c088006 */ lui $t0,%hi(g_ChrSlots)
/* f048658: 8d082988 */ lw $t0,%lo(g_ChrSlots)($t0)
/* f04865c: 02682021 */ addu $a0,$s3,$t0
/* f048660: 8c890020 */ lw $t1,0x20($a0)
/* f048664: 51200046 */ beqzl $t1,.L0f048780
@@ -23800,8 +23800,8 @@ glabel func0f048398
/* f048804: 00009825 */ or $s3,$zero,$zero
/* f048808: 27b400a4 */ addiu $s4,$sp,0xa4
.L0f04880c:
/* f04880c: 3c0e8006 */ lui $t6,%hi(g_ChrsA)
/* f048810: 8dce2988 */ lw $t6,%lo(g_ChrsA)($t6)
/* f04880c: 3c0e8006 */ lui $t6,%hi(g_ChrSlots)
/* f048810: 8dce2988 */ lw $t6,%lo(g_ChrSlots)($t6)
/* f048814: 026e2021 */ addu $a0,$s3,$t6
/* f048818: 8c8d0020 */ lw $t5,0x20($a0)
/* f04881c: 51a0006d */ beqzl $t5,.L0f0489d4
@@ -23945,7 +23945,7 @@ glabel func0f048398
// Mismatch because it uses the stack differently.
//void func0f048398(void)
//{
// s32 numchrs = getNumChrs(); // e0
// s32 numchrs = getNumChrSlots(); // e0
// s32 numalivewithpropflag80; // dc
// struct chrdata *spb8[10];
// struct chrdata *spa4[5]; // a4
@@ -23968,7 +23968,7 @@ glabel func0f048398
// // 400
// if (g_Vars.normmplayerisrunning == false) {
// for (i = 0; i < numchrs; i++) {
// struct chrdata *chr = &g_ChrsA[i]; // s0
// struct chrdata *chr = &g_ChrSlots[i]; // s0
//
// if (chr->model && chr->prop && chrIsDead(chr) == false) {
// struct prop *targetprop = chrGetTargetProp(chr);
@@ -24017,9 +24017,9 @@ glabel func0f048398
// g_Vars.unk0004d3 = 1;
// }
//
// for (i = 0; i < g_NumChrsB; i++) {
// if (g_Vars.unk0004d3 == 0 || (g_ChrsB[i].hidden2 & CHRH2FLAG_0010)) {
// chrTick(&g_ChrsB[i]);
// for (i = 0; i < g_NumBgChrs; i++) {
// if (g_Vars.unk0004d3 == 0 || (g_BgChrs[i].hidden2 & CHRH2FLAG_0010)) {
// chrTick(&g_BgChrs[i]);
// }
// }
//
@@ -24028,7 +24028,7 @@ glabel func0f048398
// s2len = 0;
//
// for (i = 0; i < numchrs; i++) {
// struct chrdata *chr = &g_ChrsA[i];
// struct chrdata *chr = &g_ChrSlots[i];
//
// // 664
// if (chr->model && chr->prop) {
@@ -24094,7 +24094,7 @@ glabel func0f048398
// s2len = 0;
//
// for (i = 0; i < numchrs; i++) {
// struct chrdata *chr = &g_ChrsA[i];
// struct chrdata *chr = &g_ChrSlots[i];
//
// if (chr->model) {
// if (chr->actiontype == ACT_DEAD
@@ -24680,23 +24680,23 @@ void chrsClearRefsToPlayer(s32 playernum)
playerpropnum = g_Vars.coop->prop - g_Vars.props;
}
for (i = 0; i < getNumChrs(); i++) {
if (g_ChrsA[i].p1p2 == playernum) {
g_ChrsA[i].p1p2 = otherplayernum;
for (i = 0; i < getNumChrSlots(); i++) {
if (g_ChrSlots[i].p1p2 == playernum) {
g_ChrSlots[i].p1p2 = otherplayernum;
}
if (g_ChrsA[i].target == playerpropnum) {
g_ChrsA[i].target = -1;
if (g_ChrSlots[i].target == playerpropnum) {
g_ChrSlots[i].target = -1;
}
}
for (i = 0; i < g_NumChrsB; i++) {
if (g_ChrsB[i].p1p2 == playernum) {
g_ChrsB[i].p1p2 = otherplayernum;
for (i = 0; i < g_NumBgChrs; i++) {
if (g_BgChrs[i].p1p2 == playernum) {
g_BgChrs[i].p1p2 = otherplayernum;
}
if (g_ChrsB[i].target == playerpropnum) {
g_ChrsB[i].target = -1;
if (g_BgChrs[i].target == playerpropnum) {
g_BgChrs[i].target = -1;
}
}
}
@@ -24816,16 +24816,16 @@ struct chrdata *chrFindById(struct chrdata *basechr, s32 chrnum)
}
lower = 0;
upper = g_NumChrsB;
upper = g_NumBgChrs;
while (upper >= lower) {
i = (lower + upper) / 2;
if (chrnum == g_ChrnumsB[i]) {
return &g_ChrsB[i];
if (chrnum == g_BgChrnums[i]) {
return &g_BgChrs[i];
}
if (chrnum < g_ChrnumsB[i]) {
if (chrnum < g_BgChrnums[i]) {
upper = i - 1;
} else {
lower = i + 1;
@@ -26060,7 +26060,7 @@ struct prop *chrSpawnAtCoord(s32 bodynum, s32 headnum, struct coord *pos, s16 *r
s16 rooms2[8];
s32 stack;
if (chrsGetNumFree() > 1) {
if (getNumFreeChrSlots() > 1) {
if (headnum < 0) {
headnum = bodyChooseHead(bodynum);
}
@@ -26102,20 +26102,20 @@ struct prop *chrSpawnAtCoord(s32 bodynum, s32 headnum, struct coord *pos, s16 *r
}
// Low memory - find a corpse to reap
if (chrsGetNumFree() < 4) {
if (getNumFreeChrSlots() < 4) {
s32 stack2;
struct chrdata *replacechr = NULL;
s32 startindex = random() % g_NumChrsA;
s32 startindex = random() % g_NumChrSlots;
s32 index = startindex;
do {
if (g_ChrsA[index].chrnum >= 0 && g_ChrsA[index].model && g_ChrsA[index].prop) {
if (g_ChrsA[index].actiontype == ACT_DEAD
|| (g_ChrsA[index].actiontype == ACT_DRUGGEDKO && (g_ChrsA[index].chrflags & CHRCFLAG_KEEPCORPSEKO) == 0)) {
if (g_ChrSlots[index].chrnum >= 0 && g_ChrSlots[index].model && g_ChrSlots[index].prop) {
if (g_ChrSlots[index].actiontype == ACT_DEAD
|| (g_ChrSlots[index].actiontype == ACT_DRUGGEDKO && (g_ChrSlots[index].chrflags & CHRCFLAG_KEEPCORPSEKO) == 0)) {
// If we've found a chr that's ready to be reaped, great.
// Bail out of the loop.
if (g_ChrsA[index].act_dead.reaptimer >= 120) {
replacechr = &g_ChrsA[index];
if (g_ChrSlots[index].act_dead.reaptimer >= 120) {
replacechr = &g_ChrSlots[index];
break;
}
@@ -26123,12 +26123,12 @@ struct prop *chrSpawnAtCoord(s32 bodynum, s32 headnum, struct coord *pos, s16 *r
// last resort, so store them and keep looping in search of
// a better chr.
if (replacechr == NULL) {
replacechr = &g_ChrsA[index];
replacechr = &g_ChrSlots[index];
}
}
}
index = (index + 1) % g_NumChrsA;
index = (index + 1) % g_NumChrSlots;
} while (index != startindex);
if (replacechr) {
@@ -27300,20 +27300,20 @@ GLOBAL_ASM(
glabel rebuildTeams
/* f04cc04: 27bdffc0 */ addiu $sp,$sp,-64
/* f04cc08: afbf0014 */ sw $ra,0x14($sp)
/* f04cc0c: 0fc07934 */ jal getNumChrs
/* f04cc0c: 0fc07934 */ jal getNumChrSlots
/* f04cc10: 00000000 */ nop
/* f04cc14: 3c0e8007 */ lui $t6,%hi(var8006845c)
/* f04cc18: 25ce845c */ addiu $t6,$t6,%lo(var8006845c)
/* f04cc1c: 8dc10000 */ lw $at,0x0($t6)
/* f04cc20: 27ab0024 */ addiu $t3,$sp,0x24
/* f04cc24: 3c0c8006 */ lui $t4,%hi(g_ChrsA)
/* f04cc24: 3c0c8006 */ lui $t4,%hi(g_ChrSlots)
/* f04cc28: ad610000 */ sw $at,0x0($t3)
/* f04cc2c: 8dd90004 */ lw $t9,0x4($t6)
/* f04cc30: 3c098006 */ lui $t1,%hi(g_TeamList)
/* f04cc34: 00405025 */ or $t2,$v0,$zero
/* f04cc38: 24070007 */ addiu $a3,$zero,0x7
/* f04cc3c: 25297e64 */ addiu $t1,$t1,%lo(g_TeamList)
/* f04cc40: 258c2988 */ addiu $t4,$t4,%lo(g_ChrsA)
/* f04cc40: 258c2988 */ addiu $t4,$t4,%lo(g_ChrSlots)
/* f04cc44: 00004025 */ or $t0,$zero,$zero
/* f04cc48: 241f0008 */ addiu $ra,$zero,0x8
/* f04cc4c: 240dfffe */ addiu $t5,$zero,-2
@@ -27374,14 +27374,14 @@ GLOBAL_ASM(
glabel rebuildSquadrons
/* f04cd04: 27bdffe0 */ addiu $sp,$sp,-32
/* f04cd08: afbf001c */ sw $ra,0x1c($sp)
/* f04cd0c: 0fc07934 */ jal getNumChrs
/* f04cd0c: 0fc07934 */ jal getNumChrSlots
/* f04cd10: afb00018 */ sw $s0,0x18($sp)
/* f04cd14: 3c0c8006 */ lui $t4,%hi(g_ChrsA)
/* f04cd14: 3c0c8006 */ lui $t4,%hi(g_ChrSlots)
/* f04cd18: 3c0a8006 */ lui $t2,%hi(g_SquadronList)
/* f04cd1c: 00405825 */ or $t3,$v0,$zero
/* f04cd20: 2408000f */ addiu $t0,$zero,0xf
/* f04cd24: 254a7e68 */ addiu $t2,$t2,%lo(g_SquadronList)
/* f04cd28: 258c2988 */ addiu $t4,$t4,%lo(g_ChrsA)
/* f04cd28: 258c2988 */ addiu $t4,$t4,%lo(g_ChrSlots)
/* f04cd2c: 00004825 */ or $t1,$zero,$zero
/* f04cd30: 24100010 */ addiu $s0,$zero,0x10
/* f04cd34: 241ffffe */ addiu $ra,$zero,-2
+10 -10
View File
@@ -4322,7 +4322,7 @@ bool aiDuplicateChr(void)
if (cloneprop) {
clone = cloneprop->chr;
chrSetChrnum(clone, getLowestUnusedChrId());
chrSetChrnum(clone, getNextUnusedChrnum());
chr->chrdup = clone->chrnum;
srcweapon0prop = chrGetEquippedWeaponProp(chr, 0);
@@ -10913,18 +10913,18 @@ bool aiShowCutsceneChrs(void)
s32 i;
if (show) {
for (i = getNumChrs() - 1; i >= 0; i--) {
if (g_ChrsA[i].chrnum >= 0 && g_ChrsA[i].prop && (g_ChrsA[i].hidden2 & CHRH2FLAG_0001)) {
g_ChrsA[i].hidden2 &= ~CHRH2FLAG_0001;
g_ChrsA[i].chrflags &= ~CHRCFLAG_HIDDEN;
for (i = getNumChrSlots() - 1; i >= 0; i--) {
if (g_ChrSlots[i].chrnum >= 0 && g_ChrSlots[i].prop && (g_ChrSlots[i].hidden2 & CHRH2FLAG_0001)) {
g_ChrSlots[i].hidden2 &= ~CHRH2FLAG_0001;
g_ChrSlots[i].chrflags &= ~CHRCFLAG_HIDDEN;
}
}
} else {
for (i = getNumChrs() - 1; i >= 0; i--) {
if (g_ChrsA[i].chrnum >= 0 && g_ChrsA[i].prop &&
(g_ChrsA[i].chrflags & (CHRCFLAG_UNPLAYABLE | CHRCFLAG_HIDDEN)) == 0) {
g_ChrsA[i].hidden2 |= CHRH2FLAG_0001;
g_ChrsA[i].chrflags |= CHRCFLAG_HIDDEN;
for (i = getNumChrSlots() - 1; i >= 0; i--) {
if (g_ChrSlots[i].chrnum >= 0 && g_ChrSlots[i].prop &&
(g_ChrSlots[i].chrflags & (CHRCFLAG_UNPLAYABLE | CHRCFLAG_HIDDEN)) == 0) {
g_ChrSlots[i].hidden2 |= CHRH2FLAG_0001;
g_ChrSlots[i].chrflags |= CHRCFLAG_HIDDEN;
}
}
}
+6 -6
View File
@@ -26,13 +26,13 @@ u32 var80062974 = 0x00000000;
u32 var80062978 = 0x00000000;
u32 var8006297c = 0;
u32 var80062980 = 0;
s32 g_NextChrId = 5000;
s32 g_NextChrnum = 5000;
// 80062988
struct chrdata *g_ChrsA = NULL;
struct chrdata *g_ChrSlots = NULL;
// 8006298c
s32 g_NumChrsA = 0;
s32 g_NumChrSlots = 0;
u32 var80062990 = 0x00000000;
u32 var80062994 = 0x00000000;
@@ -1671,9 +1671,9 @@ u32 var80067e50 = (u32) &var80067e48;
// 80067e54
u32 g_StageFlags = 0;
struct chrdata *g_ChrsB = NULL;
s16 *g_ChrnumsB = NULL;
s32 g_NumChrsB = 0;
struct chrdata *g_BgChrs = NULL;
s16 *g_BgChrnums = NULL;
s32 g_NumBgChrs = 0;
s16 *g_TeamList = NULL;
s16 *g_SquadronList = NULL;
+9 -9
View File
@@ -155,22 +155,22 @@ void explosionAlertChrs(f32 *radius, struct coord *noisepos)
s32 *end = (s32 *)&func0f084e58;
s32 i;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].model
&& chrGetTargetProp(&g_ChrsA[i]) == g_Vars.currentplayer->prop
&& g_ChrsA[i].prop
&& g_ChrsA[i].prop->type == PROPTYPE_CHR
&& (g_ChrsA[i].prop->flags & PROPFLAG_TANGIBLE)) {
f32 distance = chrGetDistanceToCoord(&g_ChrsA[i], noisepos);
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].model
&& chrGetTargetProp(&g_ChrSlots[i]) == g_Vars.currentplayer->prop
&& g_ChrSlots[i].prop
&& g_ChrSlots[i].prop->type == PROPTYPE_CHR
&& (g_ChrSlots[i].prop->flags & PROPFLAG_TANGIBLE)) {
f32 distance = chrGetDistanceToCoord(&g_ChrSlots[i], noisepos);
if (distance == 0) {
distance = 2;
} else {
distance = (10.0f * *radius * g_ChrsA[i].hearingscale) / distance;
distance = (10.0f * *radius * g_ChrSlots[i].hearingscale) / distance;
}
if (distance > 1) {
chrRecordLastHearTargetTime(&g_ChrsA[i]);
chrRecordLastHearTargetTime(&g_ChrSlots[i]);
}
}
}
+18 -18
View File
@@ -43,9 +43,9 @@ void func0f00b510(void)
var80062974 = 0;
var80062978 = 0;
var8006297c = 0;
g_NextChrId = 5000;
g_ChrsA = NULL;
g_NumChrsA = 0;
g_NextChrnum = 5000;
g_ChrSlots = NULL;
g_NumChrSlots = 0;
var80062a8c = malloc(sizeof(struct var80062a8c) * 20, 4);
@@ -54,9 +54,9 @@ void func0f00b510(void)
}
var80062a90 = 0;
g_NumChrsC = 0;
g_ChrnumsC = NULL;
g_ChrIndexesC = NULL;
g_NumChrs = 0;
g_Chrnums = NULL;
g_ChrIndexes = NULL;
var80062960 = malloc(0x1470, 4);
for (i = 0; i < 20; i++) {
@@ -72,21 +72,21 @@ void func0f00b62c(s32 numchrs)
{
s32 i;
g_NumChrsA = PLAYERCOUNT() + numchrs + 10;
g_ChrsA = malloc(ALIGN16(g_NumChrsA * sizeof(struct chrdata)), 4);
g_NumChrSlots = PLAYERCOUNT() + numchrs + 10;
g_ChrSlots = malloc(ALIGN16(g_NumChrSlots * sizeof(struct chrdata)), 4);
for (i = 0; i < g_NumChrsA; i++) {
g_ChrsA[i].chrnum = -1;
g_ChrsA[i].model = NULL;
g_ChrsA[i].prop = NULL;
for (i = 0; i < g_NumChrSlots; i++) {
g_ChrSlots[i].chrnum = -1;
g_ChrSlots[i].model = NULL;
g_ChrSlots[i].prop = NULL;
}
g_NumChrsC = 0;
g_ChrnumsC = malloc(ALIGN16(g_NumChrsA * 2), 4);
g_ChrIndexesC = malloc(ALIGN16(g_NumChrsA * 2), 4);
g_NumChrs = 0;
g_Chrnums = malloc(ALIGN16(g_NumChrSlots * 2), 4);
g_ChrIndexes = malloc(ALIGN16(g_NumChrSlots * 2), 4);
for (i = 0; i < g_NumChrsA; i++) {
g_ChrnumsC[i] = -1;
g_ChrIndexesC[i] = -1;
for (i = 0; i < g_NumChrSlots; i++) {
g_Chrnums[i] = -1;
g_ChrIndexes[i] = -1;
}
}
+12 -12
View File
@@ -379,12 +379,12 @@ glabel func0f00bbc8
/* f00bbd0: 27bdf8f0 */ addiu $sp,$sp,-1808
/* f00bbd4: 8d450018 */ lw $a1,0x18($t2)
/* f00bbd8: afb00018 */ sw $s0,0x18($sp)
/* f00bbdc: 3c108006 */ lui $s0,%hi(g_ChrnumsB)
/* f00bbe0: 3c078006 */ lui $a3,%hi(g_NumChrsB)
/* f00bbe4: 3c088006 */ lui $t0,%hi(g_ChrsB)
/* f00bbe8: 25087e58 */ addiu $t0,$t0,%lo(g_ChrsB)
/* f00bbec: 24e77e60 */ addiu $a3,$a3,%lo(g_NumChrsB)
/* f00bbf0: 26107e5c */ addiu $s0,$s0,%lo(g_ChrnumsB)
/* f00bbdc: 3c108006 */ lui $s0,%hi(g_BgChrnums)
/* f00bbe0: 3c078006 */ lui $a3,%hi(g_NumBgChrs)
/* f00bbe4: 3c088006 */ lui $t0,%hi(g_BgChrs)
/* f00bbe8: 25087e58 */ addiu $t0,$t0,%lo(g_BgChrs)
/* f00bbec: 24e77e60 */ addiu $a3,$a3,%lo(g_NumBgChrs)
/* f00bbf0: 26107e5c */ addiu $s0,$s0,%lo(g_BgChrnums)
/* f00bbf4: afbf001c */ sw $ra,0x1c($sp)
/* f00bbf8: ad000000 */ sw $zero,0x0($t0)
/* f00bbfc: ae000000 */ sw $zero,0x0($s0)
@@ -445,11 +445,11 @@ glabel func0f00bbc8
/* f00bcc8: 39c4000f */ xori $a0,$t6,0xf
/* f00bccc: 0c0048f2 */ jal malloc
/* f00bcd0: 00003025 */ or $a2,$zero,$zero
/* f00bcd4: 3c078006 */ lui $a3,%hi(g_NumChrsB)
/* f00bcd8: 24e77e60 */ addiu $a3,$a3,%lo(g_NumChrsB)
/* f00bcd4: 3c078006 */ lui $a3,%hi(g_NumBgChrs)
/* f00bcd8: 24e77e60 */ addiu $a3,$a3,%lo(g_NumBgChrs)
/* f00bcdc: 8ce40000 */ lw $a0,0x0($a3)
/* f00bce0: 3c088006 */ lui $t0,%hi(g_ChrsB)
/* f00bce4: 25087e58 */ addiu $t0,$t0,%lo(g_ChrsB)
/* f00bce0: 3c088006 */ lui $t0,%hi(g_BgChrs)
/* f00bce4: 25087e58 */ addiu $t0,$t0,%lo(g_BgChrs)
/* f00bce8: 0004c840 */ sll $t9,$a0,0x1
/* f00bcec: 2724000f */ addiu $a0,$t9,0xf
/* f00bcf0: 3498000f */ ori $t8,$a0,0xf
@@ -461,9 +461,9 @@ glabel func0f00bbc8
/* f00bd08: 254ad030 */ addiu $t2,$t2,%lo(g_StageSetup)
/* f00bd0c: 8d450018 */ lw $a1,0x18($t2)
/* f00bd10: ae020000 */ sw $v0,0x0($s0)
/* f00bd14: 3c088006 */ lui $t0,%hi(g_ChrsB)
/* f00bd14: 3c088006 */ lui $t0,%hi(g_BgChrs)
/* f00bd18: 8caf0000 */ lw $t7,0x0($a1)
/* f00bd1c: 25087e58 */ addiu $t0,$t0,%lo(g_ChrsB)
/* f00bd1c: 25087e58 */ addiu $t0,$t0,%lo(g_BgChrs)
/* f00bd20: 8fa603a0 */ lw $a2,0x3a0($sp)
/* f00bd24: 8fa9039c */ lw $t1,0x39c($sp)
/* f00bd28: 11e00049 */ beqz $t7,.L0f00be50
+6 -6
View File
@@ -1173,7 +1173,7 @@ glabel var7f1a827c
/* f0122b0: 24450394 */ addiu $a1,$v0,0x394
/* f0122b4: 0fc30709 */ jal currentPlayerSetCamPropertiesWithRoom
/* f0122b8: 24460388 */ addiu $a2,$v0,0x388
/* f0122bc: 0fc07934 */ jal getNumChrs
/* f0122bc: 0fc07934 */ jal getNumChrSlots
/* f0122c0: 00000000 */ nop
/* f0122c4: 18400026 */ blez $v0,.L0f012360
/* f0122c8: 00402025 */ or $a0,$v0,$zero
@@ -1183,8 +1183,8 @@ glabel var7f1a827c
/* f0122d8: 00a42823 */ subu $a1,$a1,$a0
/* f0122dc: 00052880 */ sll $a1,$a1,0x2
/* f0122e0: 00a42821 */ addu $a1,$a1,$a0
/* f0122e4: 3c068006 */ lui $a2,%hi(g_ChrsA)
/* f0122e8: 24c62988 */ addiu $a2,$a2,%lo(g_ChrsA)
/* f0122e4: 3c068006 */ lui $a2,%hi(g_ChrSlots)
/* f0122e8: 24c62988 */ addiu $a2,$a2,%lo(g_ChrSlots)
/* f0122ec: 000528c0 */ sll $a1,$a1,0x3
/* f0122f0: 00001025 */ or $v0,$zero,$zero
/* f0122f4: 24080048 */ addiu $t0,$zero,0x48
@@ -1591,11 +1591,11 @@ glabel var7f1a827c
// g_Vars.currentplayer->prop->rooms[1] = -1;
// currentPlayerSetCamPropertiesWithRoom(&pos, &g_Vars.currentplayer->unk0394, &g_Vars.currentplayer->unk0388, rooms[0]);
//
// numchrs = getNumChrs();
// numchrs = getNumChrSlots();
//
// for (i = 0; i < numchrs; i++) {
// if (g_ChrsA[i].target == -2) {
// g_ChrsA[i].target = g_Vars.currentplayer->prop - g_Vars.props;
// if (g_ChrSlots[i].target == -2) {
// g_ChrSlots[i].target = g_Vars.currentplayer->prop - g_Vars.props;
// }
// }
//
+8 -8
View File
@@ -18,14 +18,14 @@ void func0f014f10(void)
{
s32 i;
for (i = 0; i < g_NumChrsA; i++) {
if (g_ChrsA[i].chrnum >= 0
&& g_ChrsA[i].prop
&& g_ChrsA[i].prop->type == PROPTYPE_CHR) {
func0f020d44(g_ChrsA[i].prop, true);
func0f0605c4(g_ChrsA[i].prop);
propHide(g_ChrsA[i].prop);
propFree(g_ChrsA[i].prop);
for (i = 0; i < g_NumChrSlots; i++) {
if (g_ChrSlots[i].chrnum >= 0
&& g_ChrSlots[i].prop
&& g_ChrSlots[i].prop->type == PROPTYPE_CHR) {
func0f020d44(g_ChrSlots[i].prop, true);
func0f0605c4(g_ChrSlots[i].prop);
propHide(g_ChrSlots[i].prop);
propFree(g_ChrSlots[i].prop);
}
}
}
+3 -3
View File
@@ -852,14 +852,14 @@ glabel chrUnpack
/* f02daac: a0c302b1 */ sb $v1,0x2b1($a2)
/* f02dab0: 92090029 */ lbu $t1,0x29($s0)
.L0f02dab4:
/* f02dab4: 3c0d8006 */ lui $t5,%hi(g_ChrsA)
/* f02dab4: 3c0d8006 */ lui $t5,%hi(g_ChrSlots)
/* f02dab8: 24010368 */ addiu $at,$zero,0x368
/* f02dabc: a0c902e3 */ sb $t1,0x2e3($a2)
/* f02dac0: 860a0022 */ lh $t2,0x22($s0)
/* f02dac4: acca02e4 */ sw $t2,0x2e4($a2)
/* f02dac8: 920b002a */ lbu $t3,0x2a($s0)
/* f02dacc: a0cb02fc */ sb $t3,0x2fc($a2)
/* f02dad0: 8dad2988 */ lw $t5,%lo(g_ChrsA)($t5)
/* f02dad0: 8dad2988 */ lw $t5,%lo(g_ChrSlots)($t5)
/* f02dad4: 920f002b */ lbu $t7,0x2b($s0)
/* f02dad8: 00cd7023 */ subu $t6,$a2,$t5
/* f02dadc: 01c1001a */ div $zero,$t6,$at
@@ -969,7 +969,7 @@ struct prop *propAllocateEyespy(struct pad *pad, s16 room)
func0f0604bc(prop);
propShow(prop);
chr = prop->chr;
chrSetChrnum(chr, getLowestUnusedChrId());
chrSetChrnum(chr, getNextUnusedChrnum());
chr->bodynum = BODY_EYESPY;
chr->padpreset1 = 0;
chr->chrpreset1 = 0;
+3 -3
View File
@@ -5210,7 +5210,7 @@ glabel func0f064a24
/* f064a84: 24010016 */ addiu $at,$zero,0x16
/* f064a88: 1441007e */ bne $v0,$at,.L0f064c84
/* f064a8c: 00000000 */ nop
/* f064a90: 0fc07934 */ jal getNumChrs
/* f064a90: 0fc07934 */ jal getNumChrSlots
/* f064a94: 00000000 */ nop
/* f064a98: 2443ffff */ addiu $v1,$v0,-1
/* f064a9c: 04600079 */ bltz $v1,.L0f064c84
@@ -5220,11 +5220,11 @@ glabel func0f064a24
/* f064aac: 02639823 */ subu $s3,$s3,$v1
/* f064ab0: 00139880 */ sll $s3,$s3,0x2
/* f064ab4: 02639821 */ addu $s3,$s3,$v1
/* f064ab8: 3c158006 */ lui $s5,%hi(g_ChrsA)
/* f064ab8: 3c158006 */ lui $s5,%hi(g_ChrSlots)
/* f064abc: 3c12800a */ lui $s2,%hi(g_Vars)
/* f064ac0: 4480d000 */ mtc1 $zero,$f26
/* f064ac4: 26529fc0 */ addiu $s2,$s2,%lo(g_Vars)
/* f064ac8: 26b52988 */ addiu $s5,$s5,%lo(g_ChrsA)
/* f064ac8: 26b52988 */ addiu $s5,$s5,%lo(g_ChrSlots)
/* f064acc: 001398c0 */ sll $s3,$s3,0x3
/* f064ad0: 241e001e */ addiu $s8,$zero,0x1e
/* f064ad4: 24170004 */ addiu $s7,$zero,0x4
+17 -17
View File
@@ -2139,29 +2139,29 @@ void currentPlayerSpawn(void)
func0f0b8ba0();
}
for (i = 0; i < getNumChrs(); i++) {
if (g_ChrsA[i].model
&& g_ChrsA[i].prop
&& (g_ChrsA[i].hidden & CHRHFLAG_00400000)
&& (g_ChrsA[i].chrflags & CHRCFLAG_HIDDEN) == 0
&& g_ChrsA[i].prop->type == PROPTYPE_CHR
&& !chrIsDead(&g_ChrsA[i])
&& (g_ChrsA[i].prop->flags & PROPFLAG_TANGIBLE)) {
for (i = 0; i < getNumChrSlots(); i++) {
if (g_ChrSlots[i].model
&& g_ChrSlots[i].prop
&& (g_ChrSlots[i].hidden & CHRHFLAG_00400000)
&& (g_ChrSlots[i].chrflags & CHRCFLAG_HIDDEN) == 0
&& g_ChrSlots[i].prop->type == PROPTYPE_CHR
&& !chrIsDead(&g_ChrSlots[i])
&& (g_ChrSlots[i].prop->flags & PROPFLAG_TANGIBLE)) {
if (g_Vars.bond->prop) {
xdiff = g_ChrsA[i].prop->pos.x - g_Vars.bond->prop->pos.x;
ydiff = g_ChrsA[i].prop->pos.y - g_Vars.bond->prop->pos.y;
zdiff = g_ChrsA[i].prop->pos.z - g_Vars.bond->prop->pos.z;
xdiff = g_ChrSlots[i].prop->pos.x - g_Vars.bond->prop->pos.x;
ydiff = g_ChrSlots[i].prop->pos.y - g_Vars.bond->prop->pos.y;
zdiff = g_ChrSlots[i].prop->pos.z - g_Vars.bond->prop->pos.z;
} else {
xdiff = g_ChrsA[i].prop->pos.x - g_Vars.currentplayer->prop->pos.x;
ydiff = g_ChrsA[i].prop->pos.y - g_Vars.currentplayer->prop->pos.y;
zdiff = g_ChrsA[i].prop->pos.z - g_Vars.currentplayer->prop->pos.z;
xdiff = g_ChrSlots[i].prop->pos.x - g_Vars.currentplayer->prop->pos.x;
ydiff = g_ChrSlots[i].prop->pos.y - g_Vars.currentplayer->prop->pos.y;
zdiff = g_ChrSlots[i].prop->pos.z - g_Vars.currentplayer->prop->pos.z;
}
sqdist = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff;
if (g_Vars.lvframenum > 0
&& (g_ChrsA[i].hidden & CHRHFLAG_00800000)
&& func0f06b39c(&sp78, &sp90, &g_ChrsA[i].prop->pos, func0001af80(g_ChrsA[i].model))
&& (g_ChrSlots[i].hidden & CHRHFLAG_00800000)
&& func0f06b39c(&sp78, &sp90, &g_ChrSlots[i].prop->pos, func0001af80(g_ChrSlots[i].model))
&& (random() % 8)) {
sqdist += 1000000;
}
@@ -2186,7 +2186,7 @@ void currentPlayerSpawn(void)
}
// Write new sqdist
sortedchrs[j] = &g_ChrsA[i];
sortedchrs[j] = &g_ChrSlots[i];
sorteddists[j] = sqdist;
if (numsqdists < 9) {
+2 -2
View File
@@ -139,11 +139,11 @@ void *func0f12955c(s32 count, s32 index, s32 arg2, s32 arg3)
// reaping on a random corpose and replace its entry in the array.
// So at the end, we'll have an array of up to six unreapable corpses and
// all other corpses will be flagged for reaping.
numchrs = getNumChrs();
numchrs = getNumChrSlots();
tally = 0;
for (i = 0; i < numchrs; i++) {
struct chrdata *chr = &g_ChrsA[i];
struct chrdata *chr = &g_ChrSlots[i];
if (chr->model
&& chr->prop
+15 -15
View File
@@ -427,7 +427,7 @@ glabel func0f066310
/* f066404: 0000b825 */ or $s7,$zero,$zero
/* f066408: 02a09025 */ or $s2,$s5,$zero
.L0f06640c:
/* f06640c: 0fc07934 */ jal getNumChrs
/* f06640c: 0fc07934 */ jal getNumChrSlots
/* f066410: 00008025 */ or $s0,$zero,$zero
/* f066414: 8e8a006c */ lw $t2,0x6c($s4)
/* f066418: 00406025 */ or $t4,$v0,$zero
@@ -506,8 +506,8 @@ glabel func0f066310
/* f066510: 00000000 */ nop
/* f066514: 1840000f */ blez $v0,.L0f066554
/* f066518: 00008025 */ or $s0,$zero,$zero
/* f06651c: 3c028006 */ lui $v0,%hi(g_ChrsA)
/* f066520: 8c422988 */ lw $v0,%lo(g_ChrsA)($v0)
/* f06651c: 3c028006 */ lui $v0,%hi(g_ChrSlots)
/* f066520: 8c422988 */ lw $v0,%lo(g_ChrSlots)($v0)
.L0f066524:
/* f066524: 8c4f001c */ lw $t7,0x1c($v0)
/* f066528: 26100001 */ addiu $s0,$s0,0x1
@@ -5826,7 +5826,7 @@ glabel func0f06ad2c
/* f06b0cc: 00095280 */ sll $t2,$t1,0xa
/* f06b0d0: 05430033 */ bgezl $t2,.L0f06b1a0
/* f06b0d4: 8e4e0318 */ lw $t6,0x318($s2)
/* f06b0d8: 0fc07934 */ jal getNumChrs
/* f06b0d8: 0fc07934 */ jal getNumChrSlots
/* f06b0dc: 00000000 */ nop
/* f06b0e0: 8e2b0040 */ lw $t3,0x40($s1)
/* f06b0e4: 3c01ffdf */ lui $at,0xffdf
@@ -5841,8 +5841,8 @@ glabel func0f06ad2c
/* f06b108: 00c23023 */ subu $a2,$a2,$v0
/* f06b10c: 00063080 */ sll $a2,$a2,0x2
/* f06b110: 00c23021 */ addu $a2,$a2,$v0
/* f06b114: 3c048006 */ lui $a0,%hi(g_ChrsA)
/* f06b118: 24842988 */ addiu $a0,$a0,%lo(g_ChrsA)
/* f06b114: 3c048006 */ lui $a0,%hi(g_ChrSlots)
/* f06b118: 24842988 */ addiu $a0,$a0,%lo(g_ChrSlots)
/* f06b11c: 000630c0 */ sll $a2,$a2,0x3
/* f06b120: 00001825 */ or $v1,$zero,$zero
/* f06b124: 24100048 */ addiu $s0,$zero,0x48
@@ -21779,7 +21779,7 @@ glabel var7f1aa580
/* f07908c: 10000007 */ b .L0f0790ac
/* f079090: 8ca5c530 */ lw $a1,%lo(g_MpNumPlayers)($a1)
.L0f079094:
/* f079094: 0fc07934 */ jal getNumChrs
/* f079094: 0fc07934 */ jal getNumChrSlots
/* f079098: afa800ac */ sw $t0,0xac($sp)
/* f07909c: 3c09800a */ lui $t1,%hi(g_Vars)
/* f0790a0: 25299fc0 */ addiu $t1,$t1,%lo(g_Vars)
@@ -21793,7 +21793,7 @@ glabel var7f1aa580
/* f0790b4: a50a00aa */ sh $t2,0xaa($t0)
/* f0790b8: 850300aa */ lh $v1,0xaa($t0)
/* f0790bc: 8fad00a8 */ lw $t5,0xa8($sp)
/* f0790c0: 3c198006 */ lui $t9,%hi(g_ChrsA)
/* f0790c0: 3c198006 */ lui $t9,%hi(g_ChrSlots)
/* f0790c4: 0065082a */ slt $at,$v1,$a1
/* f0790c8: 14200004 */ bnez $at,.L0f0790dc
/* f0790cc: 0003c0c0 */ sll $t8,$v1,0x3
@@ -21834,7 +21834,7 @@ glabel var7f1aa580
/* f079154: 1000ffd7 */ b .L0f0790b4
/* f079158: 246a0001 */ addiu $t2,$v1,0x1
.L0f07915c:
/* f07915c: 8f392988 */ lw $t9,%lo(g_ChrsA)($t9)
/* f07915c: 8f392988 */ lw $t9,%lo(g_ChrSlots)($t9)
/* f079160: 0018c080 */ sll $t8,$t8,0x2
/* f079164: 0303c021 */ addu $t8,$t8,$v1
/* f079168: 0018c0c0 */ sll $t8,$t8,0x3
@@ -28308,11 +28308,11 @@ s32 objTick(struct prop *prop)
tagnum = objGetTagNum(obj);
if (tagnum >= 0) {
numchrs = getNumChrs();
numchrs = getNumChrSlots();
for (i = 0; i < numchrs; i++) {
if (g_ChrsA[i].myspecial == tagnum) {
g_ChrsA[i].myspecial = -1;
if (g_ChrSlots[i].myspecial == tagnum) {
g_ChrSlots[i].myspecial = -1;
}
}
}
@@ -41201,7 +41201,7 @@ glabel func0f08acb0
/* f08acc0: afb30020 */ sw $s3,0x20($sp)
/* f08acc4: afb2001c */ sw $s2,0x1c($sp)
/* f08acc8: afb10018 */ sw $s1,0x18($sp)
/* f08accc: 0fc07934 */ jal getNumChrs
/* f08accc: 0fc07934 */ jal getNumChrSlots
/* f08acd0: afb00014 */ sw $s0,0x14($sp)
/* f08acd4: 1840002c */ blez $v0,.L0f08ad88
/* f08acd8: 00008825 */ or $s1,$zero,$zero
@@ -41211,8 +41211,8 @@ glabel func0f08acb0
/* f08ace8: 02a2a823 */ subu $s5,$s5,$v0
/* f08acec: 0015a880 */ sll $s5,$s5,0x2
/* f08acf0: 02a2a821 */ addu $s5,$s5,$v0
/* f08acf4: 3c138006 */ lui $s3,%hi(g_ChrsA)
/* f08acf8: 26732988 */ addiu $s3,$s3,%lo(g_ChrsA)
/* f08acf4: 3c138006 */ lui $s3,%hi(g_ChrSlots)
/* f08acf8: 26732988 */ addiu $s3,$s3,%lo(g_ChrSlots)
/* f08acfc: 0015a8c0 */ sll $s5,$s5,0x3
/* f08ad00: 27b20040 */ addiu $s2,$sp,0x40
/* f08ad04: 8e6e0000 */ lw $t6,0x0($s3)
+3 -3
View File
@@ -14612,9 +14612,9 @@ u8 *var8009ccb0[2] = {NULL, NULL};
u32 var8009ccb8 = 0;
u32 var8009ccbc = 0;
void *var8009ccc0[20] = {0};
s32 g_NumChrsC = 0;
s16 *g_ChrnumsC = NULL;
s16 *g_ChrIndexesC = NULL;
s32 g_NumChrs = 0;
s16 *g_Chrnums = NULL;
s16 *g_ChrIndexes = NULL;
u32 var8009cd1c = 0;
s32 g_NumActiveHeadsPerGender = 0;
u32 var8009cd24 = 0;
+5 -5
View File
@@ -5,12 +5,12 @@
void func0f01e250(void);
void chrSetChrnum(struct chrdata *chr, s16 chrnum);
void chrRemoveFromChrsC(s32 chrnum);
void chrDeregister(s32 chrnum);
u32 func0f01e7f4(void);
bool func0f01f264(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3, bool arg4);
void func0f01f378(void);
s32 chrsGetNumFree(void);
s16 getLowestUnusedChrId(void);
s32 getNumFreeChrSlots(void);
s16 getNextUnusedChrnum(void);
struct prop *func0f020b14(struct prop *prop, struct model *model, struct coord *pos, s16 *rooms, f32 arg3, u8 *ailist);
void func0f020d44(struct prop *prop, bool removechr);
void chrUpdateAimProperties(struct chrdata *chr);
@@ -62,8 +62,8 @@ u32 func0f02bdf8(void);
u32 func0f02c6e0(void);
u32 func0f02c9b0(void);
u32 func0f02ccb4(void);
s32 getNumChrs(void);
void chrInsertToChrsC(s32 chrnum, s32 chrindex);
s32 getNumChrSlots(void);
void chrRegister(s32 chrnum, s32 chrindex);
void func0f01e760(s32 arg0);
void setVar8006297c(u32 arg0);
u32 getVar8006297c(void);
+2 -2
View File
@@ -6,8 +6,8 @@
extern s32 g_StageNum;
extern u64 rand_seed;
extern struct chrdata *g_ChrsA; // pointer to first element of chrs array
extern s32 g_NumChrsA;
extern struct chrdata *g_ChrSlots; // pointer to first element of chrs array
extern s32 g_NumChrSlots;
extern u32 var8005ce60;
extern u32 var8005ce64;
extern u32 var8005ce68;
+4 -4
View File
@@ -97,7 +97,7 @@ extern u32 var80062974;
extern u32 var80062978;
extern u32 var8006297c;
extern u32 var80062980;
extern s32 g_NextChrId;
extern s32 g_NextChrnum;
extern u32 var80062990;
extern u32 var80062998;
extern u32 var800629d8;
@@ -171,9 +171,9 @@ extern struct animfloats var80067c08[];
extern struct animfloats var80067d28[];
extern struct animfloats var80067d70[];
extern u32 var80067e50;
extern struct chrdata *g_ChrsB;
extern s16 *g_ChrnumsB;
extern s32 g_NumChrsB;
extern struct chrdata *g_BgChrs;
extern s16 *g_BgChrnums;
extern s32 g_NumBgChrs;
extern s16 *g_TeamList;
extern s16 *g_SquadronList;
extern struct var80067e6c *var80067fdc[5];
+3 -3
View File
@@ -545,9 +545,9 @@ extern u8 *var8009cca8[2];
extern u8 *var8009ccb0[2];
extern u32 var8009ccb8;
extern void *var8009ccc0[20];
extern s32 g_NumChrsC;
extern s16 *g_ChrnumsC;
extern s16 *g_ChrIndexesC;
extern s32 g_NumChrs;
extern s16 *g_Chrnums;
extern s16 *g_ChrIndexes;
extern s32 g_NumActiveHeadsPerGender;
extern u32 g_ActiveMaleHeads[8];
extern u32 g_ActiveFemaleHeads[8];