diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index cbd7e976f..7fb1b7253 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -1220,7 +1220,7 @@ glabel func0f01e250 u32 getNumChrs(void) { - return g_NumChrs; + return g_NumChrsA; } GLOBAL_ASM( @@ -1251,10 +1251,10 @@ glabel chrSetChrnum /* f01e52c: a4870000 */ sh $a3,0x0($a0) /* f01e530: 3c08800a */ lui $t0,0x800a /* f01e534: 8d08cd10 */ lw $t0,-0x32f0($t0) -/* f01e538: 3c0c800a */ lui $t4,%hi(var8009cd18) -/* f01e53c: 3c0b800a */ lui $t3,%hi(var8009cd14) -/* f01e540: 256bcd14 */ addiu $t3,$t3,%lo(var8009cd14) -/* f01e544: 258ccd18 */ addiu $t4,$t4,%lo(var8009cd18) +/* f01e538: 3c0c800a */ lui $t4,%hi(g_ChrIndexesC) +/* f01e53c: 3c0b800a */ lui $t3,%hi(g_ChrnumsC) +/* f01e540: 256bcd14 */ addiu $t3,$t3,%lo(g_ChrnumsC) +/* f01e544: 258ccd18 */ addiu $t4,$t4,%lo(g_ChrIndexesC) /* f01e548: 2508ffff */ addiu $t0,$t0,-1 /* f01e54c: 00002825 */ or $a1,$zero,$zero .L0f01e550: @@ -1299,18 +1299,18 @@ glabel chrSetChrnum GLOBAL_ASM( glabel func0f01e5d8 -/* f01e5d8: 3c0a800a */ lui $t2,%hi(var8009cd10) -/* f01e5dc: 254acd10 */ addiu $t2,$t2,%lo(var8009cd10) +/* f01e5d8: 3c0a800a */ lui $t2,%hi(g_NumChrsC) +/* f01e5dc: 254acd10 */ addiu $t2,$t2,%lo(g_NumChrsC) /* f01e5e0: 8d430000 */ lw $v1,0x0($t2) /* f01e5e4: 27bdfff8 */ addiu $sp,$sp,-8 /* f01e5e8: afb00004 */ sw $s0,0x4($sp) /* f01e5ec: 00a08025 */ or $s0,$a1,$zero /* f01e5f0: 18600019 */ blez $v1,.L0f01e658 /* f01e5f4: 00001025 */ or $v0,$zero,$zero -/* f01e5f8: 3c0c800a */ lui $t4,%hi(var8009cd18) -/* f01e5fc: 3c0b800a */ lui $t3,%hi(var8009cd14) -/* f01e600: 256bcd14 */ addiu $t3,$t3,%lo(var8009cd14) -/* f01e604: 258ccd18 */ addiu $t4,$t4,%lo(var8009cd18) +/* f01e5f8: 3c0c800a */ lui $t4,%hi(g_ChrIndexesC) +/* f01e5fc: 3c0b800a */ lui $t3,%hi(g_ChrnumsC) +/* f01e600: 256bcd14 */ addiu $t3,$t3,%lo(g_ChrnumsC) +/* f01e604: 258ccd18 */ addiu $t4,$t4,%lo(g_ChrIndexesC) /* f01e608: 00002825 */ or $a1,$zero,$zero .L0f01e60c: /* f01e60c: 8d6e0000 */ lw $t6,0x0($t3) @@ -1334,15 +1334,15 @@ glabel func0f01e5d8 /* f01e650: 1420ffee */ bnez $at,.L0f01e60c /* f01e654: 24a50002 */ addiu $a1,$a1,0x2 .L0f01e658: -/* f01e658: 3c0b800a */ lui $t3,%hi(var8009cd14) -/* f01e65c: 256bcd14 */ addiu $t3,$t3,%lo(var8009cd14) +/* f01e658: 3c0b800a */ lui $t3,%hi(g_ChrnumsC) +/* f01e65c: 256bcd14 */ addiu $t3,$t3,%lo(g_ChrnumsC) /* f01e660: 8d790000 */ lw $t9,0x0($t3) /* f01e664: 00036840 */ sll $t5,$v1,0x1 -/* f01e668: 3c0c800a */ lui $t4,%hi(var8009cd18) +/* f01e668: 3c0c800a */ lui $t4,%hi(g_ChrIndexesC) /* f01e66c: 032d7021 */ addu $t6,$t9,$t5 /* f01e670: a5c40000 */ sh $a0,0x0($t6) /* f01e674: 8d580000 */ lw $t8,0x0($t2) -/* f01e678: 258ccd18 */ addiu $t4,$t4,%lo(var8009cd18) +/* f01e678: 258ccd18 */ addiu $t4,$t4,%lo(g_ChrIndexesC) /* f01e67c: 8d8f0000 */ lw $t7,0x0($t4) /* f01e680: 0018c840 */ sll $t9,$t8,0x1 /* f01e684: 01f96821 */ addu $t5,$t7,$t9 @@ -1357,8 +1357,8 @@ glabel func0f01e5d8 GLOBAL_ASM( glabel func0f01e6a4 -/* f01e6a4: 3c08800a */ lui $t0,%hi(var8009cd10) -/* f01e6a8: 2508cd10 */ addiu $t0,$t0,%lo(var8009cd10) +/* f01e6a4: 3c08800a */ lui $t0,%hi(g_NumChrsC) +/* f01e6a8: 2508cd10 */ addiu $t0,$t0,%lo(g_NumChrsC) /* f01e6ac: 8d030000 */ lw $v1,0x0($t0) /* f01e6b0: 00001025 */ or $v0,$zero,$zero /* f01e6b4: 00002825 */ or $a1,$zero,$zero @@ -1374,10 +1374,10 @@ glabel func0f01e6a4 /* f01e6d8: 00c3082a */ slt $at,$a2,$v1 /* f01e6dc: 10200017 */ beqz $at,.L0f01e73c /* f01e6e0: 00c02025 */ or $a0,$a2,$zero -/* f01e6e4: 3c0a800a */ lui $t2,%hi(var8009cd18) -/* f01e6e8: 3c09800a */ lui $t1,%hi(var8009cd14) -/* f01e6ec: 2529cd14 */ addiu $t1,$t1,%lo(var8009cd14) -/* f01e6f0: 254acd18 */ addiu $t2,$t2,%lo(var8009cd18) +/* f01e6e4: 3c0a800a */ lui $t2,%hi(g_ChrIndexesC) +/* f01e6e8: 3c09800a */ lui $t1,%hi(g_ChrnumsC) +/* f01e6ec: 2529cd14 */ addiu $t1,$t1,%lo(g_ChrnumsC) +/* f01e6f0: 254acd18 */ addiu $t2,$t2,%lo(g_ChrIndexesC) /* f01e6f4: 00063040 */ sll $a2,$a2,0x1 /* f01e6f8: 8d220000 */ lw $v0,0x0($t1) .L0f01e6fc: @@ -4171,8 +4171,8 @@ glabel func0f020f90 /* f020fc0: 00004825 */ or $t1,$zero,$zero /* f020fc4: 18a00021 */ blez $a1,.L0f02104c /* f020fc8: 01cf3821 */ addu $a3,$t6,$t7 -/* f020fcc: 3c068006 */ lui $a2,%hi(g_Chrs) -/* f020fd0: 24c62988 */ addiu $a2,$a2,%lo(g_Chrs) +/* f020fcc: 3c068006 */ lui $a2,%hi(g_ChrsA) +/* f020fd0: 24c62988 */ addiu $a2,$a2,%lo(g_ChrsA) /* f020fd4: 00008025 */ or $s0,$zero,$zero .L0f020fd8: /* f020fd8: 8cc20000 */ lw $v0,0x0($a2) @@ -4185,8 +4185,8 @@ glabel func0f020f90 /* f020ff4: afa9002c */ sw $t1,0x2c($sp) /* f020ff8: 0fc12705 */ jal propGetIndexByChrId /* f020ffc: afa70024 */ sw $a3,0x24($sp) -/* f021000: 3c068006 */ lui $a2,%hi(g_Chrs) -/* f021004: 24c62988 */ addiu $a2,$a2,%lo(g_Chrs) +/* f021000: 3c068006 */ lui $a2,%hi(g_ChrsA) +/* f021004: 24c62988 */ addiu $a2,$a2,%lo(g_ChrsA) /* f021008: 8fa70024 */ lw $a3,0x24($sp) /* f02100c: 2408ffff */ addiu $t0,$zero,-1 /* f021010: 14510004 */ bne $v0,$s1,.L0f021024 @@ -4323,9 +4323,9 @@ glabel func0f020f90 /* f0211d8: 18400014 */ blez $v0,.L0f02122c /* f0211dc: 00008825 */ or $s1,$zero,$zero /* f0211e0: 3c014416 */ lui $at,0x4416 -/* f0211e4: 3c128006 */ lui $s2,%hi(g_Chrs) +/* f0211e4: 3c128006 */ lui $s2,%hi(g_ChrsA) /* f0211e8: 4481a000 */ mtc1 $at,$f20 -/* f0211ec: 26522988 */ addiu $s2,$s2,%lo(g_Chrs) +/* f0211ec: 26522988 */ addiu $s2,$s2,%lo(g_ChrsA) /* f0211f0: 00008025 */ or $s0,$zero,$zero .L0f0211f4: /* f0211f4: 8e4e0000 */ lw $t6,0x0($s2) @@ -12409,8 +12409,8 @@ GLOBAL_ASM( glabel func0f028590 /* f028590: 27bdff90 */ addiu $sp,$sp,-112 /* f028594: afbe0068 */ sw $s8,0x68($sp) -/* f028598: 3c1e8006 */ lui $s8,%hi(g_NumChrs) -/* f02859c: 27de298c */ addiu $s8,$s8,%lo(g_NumChrs) +/* f028598: 3c1e8006 */ lui $s8,%hi(g_NumChrsA) +/* f02859c: 27de298c */ addiu $s8,$s8,%lo(g_NumChrsA) /* f0285a0: 8fce0000 */ lw $t6,0x0($s8) /* f0285a4: afb70064 */ sw $s7,0x64($sp) /* f0285a8: f7b60020 */ sdc1 $f22,0x20($sp) @@ -12437,10 +12437,10 @@ glabel func0f028590 /* f0285fc: 3c014000 */ lui $at,0x4000 /* f028600: 4481d000 */ mtc1 $at,$f26 /* f028604: 3c013f80 */ lui $at,0x3f80 -/* f028608: 3c168006 */ lui $s6,%hi(g_Chrs) +/* f028608: 3c168006 */ lui $s6,%hi(g_ChrsA) /* f02860c: 4481a000 */ mtc1 $at,$f20 /* f028610: 4480c000 */ mtc1 $zero,$f24 -/* f028614: 26d62988 */ addiu $s6,$s6,%lo(g_Chrs) +/* f028614: 26d62988 */ addiu $s6,$s6,%lo(g_ChrsA) /* f028618: 0000a825 */ or $s5,$zero,$zero /* f02861c: 8ec20000 */ lw $v0,0x0($s6) .L0f028620: @@ -12538,58 +12538,28 @@ glabel func0f028590 /* f028770: 27bd0070 */ addiu $sp,$sp,0x70 ); -GLOBAL_ASM( -glabel chrFindByLiteralId -/* f028774: 3c03800a */ lui $v1,0x800a -/* f028778: 8c63cd10 */ lw $v1,-0x32f0($v1) -/* f02877c: 00803025 */ or $a2,$a0,$zero -/* f028780: 00001025 */ or $v0,$zero,$zero -/* f028784: 04600024 */ bltz $v1,.L0f028818 -/* f028788: 3c07800a */ lui $a3,0x800a -/* f02878c: 8ce7cd14 */ lw $a3,-0x32ec($a3) -/* f028790: 00432821 */ addu $a1,$v0,$v1 -.L0f028794: -/* f028794: 04a10003 */ bgez $a1,.L0f0287a4 -/* f028798: 00057043 */ sra $t6,$a1,0x1 -/* f02879c: 24a10001 */ addiu $at,$a1,0x1 -/* f0287a0: 00017043 */ sra $t6,$at,0x1 -.L0f0287a4: -/* f0287a4: 000e4040 */ sll $t0,$t6,0x1 -/* f0287a8: 00e87821 */ addu $t7,$a3,$t0 -/* f0287ac: 85e90000 */ lh $t1,0x0($t7) -/* f0287b0: 01c02025 */ or $a0,$t6,$zero -/* f0287b4: 14c90010 */ bne $a2,$t1,.L0f0287f8 -/* f0287b8: 00c9082a */ slt $at,$a2,$t1 -/* f0287bc: 3c18800a */ lui $t8,0x800a -/* f0287c0: 8f18cd18 */ lw $t8,-0x32e8($t8) -/* f0287c4: 3c0c8006 */ lui $t4,0x8006 -/* f0287c8: 8d8c2988 */ lw $t4,0x2988($t4) -/* f0287cc: 0308c821 */ addu $t9,$t8,$t0 -/* f0287d0: 872a0000 */ lh $t2,0x0($t9) -/* f0287d4: 000a58c0 */ sll $t3,$t2,0x3 -/* f0287d8: 016a5823 */ subu $t3,$t3,$t2 -/* f0287dc: 000b5880 */ sll $t3,$t3,0x2 -/* f0287e0: 016a5823 */ subu $t3,$t3,$t2 -/* f0287e4: 000b5880 */ sll $t3,$t3,0x2 -/* f0287e8: 016a5821 */ addu $t3,$t3,$t2 -/* f0287ec: 000b58c0 */ sll $t3,$t3,0x3 -/* f0287f0: 03e00008 */ jr $ra -/* f0287f4: 016c1021 */ addu $v0,$t3,$t4 -.L0f0287f8: -/* f0287f8: 50200004 */ beqzl $at,.L0f02880c -/* f0287fc: 24820001 */ addiu $v0,$a0,0x1 -/* f028800: 10000002 */ beqz $zero,.L0f02880c -/* f028804: 2483ffff */ addiu $v1,$a0,-1 -/* f028808: 24820001 */ addiu $v0,$a0,0x1 -.L0f02880c: -/* f02880c: 0062082a */ slt $at,$v1,$v0 -/* f028810: 5020ffe0 */ beqzl $at,.L0f028794 -/* f028814: 00432821 */ addu $a1,$v0,$v1 -.L0f028818: -/* f028818: 00001025 */ or $v0,$zero,$zero -/* f02881c: 03e00008 */ jr $ra -/* f028820: 00000000 */ sll $zero,$zero,0x0 -); +struct chrdata *chrFindByLiteralId(s32 chrnum) +{ + s32 lower = 0; + s32 upper = g_NumChrsC; + s32 i; + + while (upper >= lower) { + i = (lower + upper) / 2; + + if (chrnum == g_ChrnumsC[i]) { + return &g_ChrsA[g_ChrIndexesC[i]]; + } + + if (chrnum < g_ChrnumsC[i]) { + upper = i - 1; + } else { + lower = i + 1; + } + } + + return NULL; +} struct prop *chrGetEquippedWeaponProp(struct chrdata *chr, s32 hand) { @@ -35032,9 +35002,9 @@ glabel func0f03ce8c /* f03cef8: 82830007 */ lb $v1,0x7($s4) .L0f03cefc: /* f03cefc: 24010006 */ addiu $at,$zero,0x6 -/* f03cf00: 3c158006 */ lui $s5,%hi(g_Chrs) +/* f03cf00: 3c158006 */ lui $s5,%hi(g_ChrsA) /* f03cf04: 14610003 */ bne $v1,$at,.L0f03cf14 -/* f03cf08: 26b52988 */ addiu $s5,$s5,%lo(g_Chrs) +/* f03cf08: 26b52988 */ addiu $s5,$s5,%lo(g_ChrsA) /* f03cf0c: 1000000c */ beqz $zero,.L0f03cf40 /* f03cf10: 8e93002c */ lw $s3,0x2c($s4) .L0f03cf14: @@ -47470,13 +47440,13 @@ glabel func0f0482cc .L0f048320: /* f048320: 0c006134 */ jal ailistFindById /* f048324: 00a02025 */ or $a0,$a1,$zero -/* f048328: 3c048006 */ lui $a0,%hi(var80067e60) -/* f04832c: 24847e60 */ addiu $a0,$a0,%lo(var80067e60) +/* f048328: 3c048006 */ lui $a0,%hi(g_NumChrsB) +/* f04832c: 24847e60 */ addiu $a0,$a0,%lo(g_NumChrsB) /* f048330: 8c8f0000 */ lw $t7,0x0($a0) /* f048334: 24050368 */ addiu $a1,$zero,0x368 -/* f048338: 3c038006 */ lui $v1,%hi(var80067e58) +/* f048338: 3c038006 */ lui $v1,%hi(g_ChrsB) /* f04833c: 01e50019 */ multu $t7,$a1 -/* f048340: 24637e58 */ addiu $v1,$v1,%lo(var80067e58) +/* f048340: 24637e58 */ addiu $v1,$v1,%lo(g_ChrsB) /* f048344: 8c6e0000 */ lw $t6,0x0($v1) /* f048348: 240cffff */ addiu $t4,$zero,-1 /* f04834c: 0000c012 */ mflo $t8 @@ -48779,8 +48749,8 @@ glabel func0f049644 /* f0496f0: 02118023 */ subu $s0,$s0,$s1 /* f0496f4: 00108080 */ sll $s0,$s0,0x2 /* f0496f8: 02118021 */ addu $s0,$s0,$s1 -/* f0496fc: 3c168006 */ lui $s6,%hi(g_Chrs) -/* f049700: 26d62988 */ addiu $s6,$s6,%lo(g_Chrs) +/* f0496fc: 3c168006 */ lui $s6,%hi(g_ChrsA) +/* f049700: 26d62988 */ addiu $s6,$s6,%lo(g_ChrsA) /* f049704: 001080c0 */ sll $s0,$s0,0x3 /* f049708: 2412ffff */ addiu $s2,$zero,-1 /* f04970c: 8ecc0000 */ lw $t4,0x0($s6) @@ -48811,14 +48781,14 @@ glabel func0f049644 /* f049764: 8ecc0000 */ lw $t4,0x0($s6) /* f049768: 00008825 */ or $s1,$zero,$zero .L0f04976c: -/* f04976c: 3c048006 */ lui $a0,%hi(var80067e60) -/* f049770: 24847e60 */ addiu $a0,$a0,%lo(var80067e60) +/* f04976c: 3c048006 */ lui $a0,%hi(g_NumChrsB) +/* f049770: 24847e60 */ addiu $a0,$a0,%lo(g_NumChrsB) /* f049774: 8c8d0000 */ lw $t5,0x0($a0) /* f049778: 2412ffff */ addiu $s2,$zero,-1 /* f04977c: 00008025 */ or $s0,$zero,$zero /* f049780: 19a00019 */ blez $t5,.L0f0497e8 -/* f049784: 3c038006 */ lui $v1,%hi(var80067e58) -/* f049788: 24637e58 */ addiu $v1,$v1,%lo(var80067e58) +/* f049784: 3c038006 */ lui $v1,%hi(g_ChrsB) +/* f049788: 24637e58 */ addiu $v1,$v1,%lo(g_ChrsB) /* f04978c: 8c6e0000 */ lw $t6,0x0($v1) .L0f049790: /* f049790: 01d01021 */ addu $v0,$t6,$s0 @@ -49174,69 +49144,39 @@ glabel chrResolveId // return id; //} -GLOBAL_ASM( -glabel chrFindById -/* f049b44: 27bdffe8 */ addiu $sp,$sp,-24 -/* f049b48: afbf0014 */ sw $ra,0x14($sp) -/* f049b4c: 0fc12604 */ jal chrResolveId -/* f049b50: 00000000 */ sll $zero,$zero,0x0 -/* f049b54: 00402025 */ or $a0,$v0,$zero -/* f049b58: 0fc0a1dd */ jal chrFindByLiteralId -/* f049b5c: afa2001c */ sw $v0,0x1c($sp) -/* f049b60: 10400003 */ beqz $v0,.L0f049b70 -/* f049b64: 8fa7001c */ lw $a3,0x1c($sp) -/* f049b68: 10000027 */ beqz $zero,.L0f049c08 -/* f049b6c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f049b70: -/* f049b70: 3c058006 */ lui $a1,0x8006 -/* f049b74: 8ca57e60 */ lw $a1,0x7e60($a1) -/* f049b78: 00003025 */ or $a2,$zero,$zero -/* f049b7c: 3c088006 */ lui $t0,0x8006 -/* f049b80: 04a0001f */ bltz $a1,.L0f049c00 -/* f049b84: 3c098006 */ lui $t1,0x8006 -/* f049b88: 8d087e5c */ lw $t0,0x7e5c($t0) -/* f049b8c: 00c51821 */ addu $v1,$a2,$a1 -.L0f049b90: -/* f049b90: 04610003 */ bgez $v1,.L0f049ba0 -/* f049b94: 00037043 */ sra $t6,$v1,0x1 -/* f049b98: 24610001 */ addiu $at,$v1,0x1 -/* f049b9c: 00017043 */ sra $t6,$at,0x1 -.L0f049ba0: -/* f049ba0: 000e7840 */ sll $t7,$t6,0x1 -/* f049ba4: 010fc021 */ addu $t8,$t0,$t7 -/* f049ba8: 87040000 */ lh $a0,0x0($t8) -/* f049bac: 01c01025 */ or $v0,$t6,$zero -/* f049bb0: 14e4000b */ bne $a3,$a0,.L0f049be0 -/* f049bb4: 00e4082a */ slt $at,$a3,$a0 -/* f049bb8: 000ec8c0 */ sll $t9,$t6,0x3 -/* f049bbc: 032ec823 */ subu $t9,$t9,$t6 -/* f049bc0: 0019c880 */ sll $t9,$t9,0x2 -/* f049bc4: 032ec823 */ subu $t9,$t9,$t6 -/* f049bc8: 0019c880 */ sll $t9,$t9,0x2 -/* f049bcc: 8d297e58 */ lw $t1,0x7e58($t1) -/* f049bd0: 032ec821 */ addu $t9,$t9,$t6 -/* f049bd4: 0019c8c0 */ sll $t9,$t9,0x3 -/* f049bd8: 1000000a */ beqz $zero,.L0f049c04 -/* f049bdc: 03291021 */ addu $v0,$t9,$t1 -.L0f049be0: -/* f049be0: 50200004 */ beqzl $at,.L0f049bf4 -/* f049be4: 24460001 */ addiu $a2,$v0,0x1 -/* f049be8: 10000002 */ beqz $zero,.L0f049bf4 -/* f049bec: 2445ffff */ addiu $a1,$v0,-1 -/* f049bf0: 24460001 */ addiu $a2,$v0,0x1 -.L0f049bf4: -/* f049bf4: 00a6082a */ slt $at,$a1,$a2 -/* f049bf8: 5020ffe5 */ beqzl $at,.L0f049b90 -/* f049bfc: 00c51821 */ addu $v1,$a2,$a1 -.L0f049c00: -/* f049c00: 00001025 */ or $v0,$zero,$zero -.L0f049c04: -/* f049c04: 8fbf0014 */ lw $ra,0x14($sp) -.L0f049c08: -/* f049c08: 27bd0018 */ addiu $sp,$sp,0x18 -/* f049c0c: 03e00008 */ jr $ra -/* f049c10: 00000000 */ sll $zero,$zero,0x0 -); +struct chrdata *chrFindById(struct chrdata *basechr, s32 chrnum) +{ + struct chrdata *chr; + s32 lower; + s32 upper; + s32 i; + + chrnum = chrResolveId(basechr, chrnum); + chr = chrFindByLiteralId(chrnum); + + if (chr) { + return chr; + } + + lower = 0; + upper = g_NumChrsB; + + while (upper >= lower) { + i = (lower + upper) / 2; + + if (chrnum == g_ChrnumsB[i]) { + return &g_ChrsB[i]; + } + + if (chrnum < g_ChrnumsB[i]) { + upper = i - 1; + } else { + lower = i + 1; + } + } + + return NULL; +} s32 propGetIndexByChrId(struct chrdata *basechr, s32 chrnum) { @@ -52410,14 +52350,14 @@ glabel rebuildTeams /* 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_Chrs) +/* f04cc24: 3c0c8006 */ lui $t4,%hi(g_ChrsA) /* f04cc28: ad610000 */ sw $at,0x0($t3) /* f04cc2c: 8dd90004 */ lw $t9,0x4($t6) /* f04cc30: 3c098006 */ lui $t1,%hi(var80067e64) /* f04cc34: 00405025 */ or $t2,$v0,$zero /* f04cc38: 24070007 */ addiu $a3,$zero,0x7 /* f04cc3c: 25297e64 */ addiu $t1,$t1,%lo(var80067e64) -/* f04cc40: 258c2988 */ addiu $t4,$t4,%lo(g_Chrs) +/* f04cc40: 258c2988 */ addiu $t4,$t4,%lo(g_ChrsA) /* f04cc44: 00004025 */ or $t0,$zero,$zero /* f04cc48: 241f0008 */ addiu $ra,$zero,0x8 /* f04cc4c: 240dfffe */ addiu $t5,$zero,-2 @@ -52480,12 +52420,12 @@ glabel rebuildSquadrons /* f04cd08: afbf001c */ sw $ra,0x1c($sp) /* f04cd0c: 0fc07934 */ jal getNumChrs /* f04cd10: afb00018 */ sw $s0,0x18($sp) -/* f04cd14: 3c0c8006 */ lui $t4,%hi(g_Chrs) +/* f04cd14: 3c0c8006 */ lui $t4,%hi(g_ChrsA) /* 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_Chrs) +/* f04cd28: 258c2988 */ addiu $t4,$t4,%lo(g_ChrsA) /* f04cd2c: 00004825 */ or $t1,$zero,$zero /* f04cd30: 24100010 */ addiu $s0,$zero,0x10 /* f04cd34: 241ffffe */ addiu $ra,$zero,-2 diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 13a3a3831..67c5d1234 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -14121,8 +14121,8 @@ glabel aiShowCutsceneChrs /* f05f884: 00641823 */ subu $v1,$v1,$a0 /* f05f888: 00031880 */ sll $v1,$v1,0x2 /* f05f88c: 00641821 */ addu $v1,$v1,$a0 -/* f05f890: 3c058006 */ lui $a1,%hi(g_Chrs) -/* f05f894: 24a52988 */ addiu $a1,$a1,%lo(g_Chrs) +/* f05f890: 3c058006 */ lui $a1,%hi(g_ChrsA) +/* f05f894: 24a52988 */ addiu $a1,$a1,%lo(g_ChrsA) /* f05f898: 000318c0 */ sll $v1,$v1,0x3 /* f05f89c: 2407fbff */ addiu $a3,$zero,-1025 /* f05f8a0: 2406fffe */ addiu $a2,$zero,-2 @@ -14167,8 +14167,8 @@ glabel aiShowCutsceneChrs /* f05f92c: 00031880 */ sll $v1,$v1,0x2 /* f05f930: 00641821 */ addu $v1,$v1,$a0 /* f05f934: 3c040080 */ lui $a0,0x80 -/* f05f938: 3c058006 */ lui $a1,%hi(g_Chrs) -/* f05f93c: 24a52988 */ addiu $a1,$a1,%lo(g_Chrs) +/* f05f938: 3c058006 */ lui $a1,%hi(g_ChrsA) +/* f05f93c: 24a52988 */ addiu $a1,$a1,%lo(g_ChrsA) /* f05f940: 34840400 */ ori $a0,$a0,0x400 /* f05f944: 000318c0 */ sll $v1,$v1,0x3 /* f05f948: 8caf0000 */ lw $t7,0x0($a1) @@ -14216,7 +14216,7 @@ glabel aiShowCutsceneChrs // if (cmd[2]) { // // Show chrs // for (i = getNumChrs() - 1; i >= 0; i--) { -// chr = &g_Chrs[i]; +// chr = &g_ChrsA[i]; // // if (chr->chrnum >= 0 && chr->prop && (chr->hidden2 & 1)) { // chr->hidden2 = chr->hidden2 & ~1; @@ -14226,7 +14226,7 @@ glabel aiShowCutsceneChrs // } else { // // Hide chrs // for (i = getNumChrs() - 1; i >= 0; i--) { -// chr = &g_Chrs[i]; +// chr = &g_ChrsA[i]; // // if (chr->chrnum >= 0 && chr->prop && (chr->chrflags & 0x00800400) == 0) { // chr->hidden2 = chr->hidden2 | 1; diff --git a/src/game/game_00b200.c b/src/game/game_00b200.c index 1fe9b82b8..97b47be5a 100644 --- a/src/game/game_00b200.c +++ b/src/game/game_00b200.c @@ -288,9 +288,9 @@ glabel func0f00b510 /* f00b5d0: 24050004 */ addiu $a1,$zero,0x4 /* f00b5d4: 3c018006 */ lui $at,0x8006 /* f00b5d8: 3c10800a */ lui $s0,%hi(var8009ccc0) -/* f00b5dc: 3c11800a */ lui $s1,%hi(var8009cd10) +/* f00b5dc: 3c11800a */ lui $s1,%hi(g_NumChrsC) /* f00b5e0: ac222960 */ sw $v0,0x2960($at) -/* f00b5e4: 2631cd10 */ addiu $s1,$s1,%lo(var8009cd10) +/* f00b5e4: 2631cd10 */ addiu $s1,$s1,%lo(g_NumChrsC) /* f00b5e8: 2610ccc0 */ addiu $s0,$s0,%lo(var8009ccc0) .L0f00b5ec: /* f00b5ec: 24040240 */ addiu $a0,$zero,0x240 @@ -326,8 +326,8 @@ glabel func0f00b62c /* f00b650: 00003825 */ or $a3,$zero,$zero .L0f00b654: /* f00b654: 8c4f0068 */ lw $t7,0x68($v0) -/* f00b658: 3c088006 */ lui $t0,%hi(g_NumChrs) -/* f00b65c: 2508298c */ addiu $t0,$t0,%lo(g_NumChrs) +/* f00b658: 3c088006 */ lui $t0,%hi(g_NumChrsA) +/* f00b65c: 2508298c */ addiu $t0,$t0,%lo(g_NumChrsA) /* f00b660: 11e00003 */ beqz $t7,.L0f00b670 /* f00b664: 8fac0020 */ lw $t4,0x20($sp) /* f00b668: 10000002 */ beqz $zero,.L0f00b674 @@ -367,11 +367,11 @@ glabel func0f00b62c /* f00b6e0: ad0e0000 */ sw $t6,0x0($t0) /* f00b6e4: 0c0048f2 */ jal func000123c8 /* f00b6e8: 3b04000f */ xori $a0,$t8,0xf -/* f00b6ec: 3c088006 */ lui $t0,%hi(g_NumChrs) -/* f00b6f0: 2508298c */ addiu $t0,$t0,%lo(g_NumChrs) +/* f00b6ec: 3c088006 */ lui $t0,%hi(g_NumChrsA) +/* f00b6f0: 2508298c */ addiu $t0,$t0,%lo(g_NumChrsA) /* f00b6f4: 8d060000 */ lw $a2,0x0($t0) -/* f00b6f8: 3c048006 */ lui $a0,%hi(g_Chrs) -/* f00b6fc: 24842988 */ addiu $a0,$a0,%lo(g_Chrs) +/* f00b6f8: 3c048006 */ lui $a0,%hi(g_ChrsA) +/* f00b6fc: 24842988 */ addiu $a0,$a0,%lo(g_ChrsA) /* f00b700: ac820000 */ sw $v0,0x0($a0) /* f00b704: 18c00013 */ blez $a2,.L0f00b754 /* f00b708: 00001825 */ or $v1,$zero,$zero @@ -404,11 +404,11 @@ glabel func0f00b62c /* f00b76c: 24050004 */ addiu $a1,$zero,0x4 /* f00b770: 0c0048f2 */ jal func000123c8 /* f00b774: afa3001c */ sw $v1,0x1c($sp) -/* f00b778: 3c088006 */ lui $t0,%hi(g_NumChrs) -/* f00b77c: 2508298c */ addiu $t0,$t0,%lo(g_NumChrs) +/* f00b778: 3c088006 */ lui $t0,%hi(g_NumChrsA) +/* f00b77c: 2508298c */ addiu $t0,$t0,%lo(g_NumChrsA) /* f00b780: 8d040000 */ lw $a0,0x0($t0) -/* f00b784: 3c06800a */ lui $a2,%hi(var8009cd14) -/* f00b788: 24c6cd14 */ addiu $a2,$a2,%lo(var8009cd14) +/* f00b784: 3c06800a */ lui $a2,%hi(g_ChrnumsC) +/* f00b788: 24c6cd14 */ addiu $a2,$a2,%lo(g_ChrnumsC) /* f00b78c: 0004c840 */ sll $t9,$a0,0x1 /* f00b790: 2724000f */ addiu $a0,$t9,0xf /* f00b794: 3489000f */ ori $t1,$a0,0xf @@ -416,13 +416,13 @@ glabel func0f00b62c /* f00b79c: 3924000f */ xori $a0,$t1,0xf /* f00b7a0: 0c0048f2 */ jal func000123c8 /* f00b7a4: 24050004 */ addiu $a1,$zero,0x4 -/* f00b7a8: 3c088006 */ lui $t0,%hi(g_NumChrs) -/* f00b7ac: 2508298c */ addiu $t0,$t0,%lo(g_NumChrs) +/* f00b7a8: 3c088006 */ lui $t0,%hi(g_NumChrsA) +/* f00b7ac: 2508298c */ addiu $t0,$t0,%lo(g_NumChrsA) /* f00b7b0: 8d0b0000 */ lw $t3,0x0($t0) -/* f00b7b4: 3c04800a */ lui $a0,%hi(var8009cd18) -/* f00b7b8: 2484cd18 */ addiu $a0,$a0,%lo(var8009cd18) -/* f00b7bc: 3c06800a */ lui $a2,%hi(var8009cd14) -/* f00b7c0: 24c6cd14 */ addiu $a2,$a2,%lo(var8009cd14) +/* f00b7b4: 3c04800a */ lui $a0,%hi(g_ChrIndexesC) +/* f00b7b8: 2484cd18 */ addiu $a0,$a0,%lo(g_ChrIndexesC) +/* f00b7bc: 3c06800a */ lui $a2,%hi(g_ChrnumsC) +/* f00b7c0: 24c6cd14 */ addiu $a2,$a2,%lo(g_ChrnumsC) /* f00b7c4: ac820000 */ sw $v0,0x0($a0) /* f00b7c8: 8fa3001c */ lw $v1,0x1c($sp) /* f00b7cc: 1960000e */ blez $t3,.L0f00b808 diff --git a/src/game/game_00b820.c b/src/game/game_00b820.c index 1c10cfe46..b8d06567f 100644 --- a/src/game/game_00b820.c +++ b/src/game/game_00b820.c @@ -292,12 +292,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(var80067e5c) -/* f00bbe0: 3c078006 */ lui $a3,%hi(var80067e60) -/* f00bbe4: 3c088006 */ lui $t0,%hi(var80067e58) -/* f00bbe8: 25087e58 */ addiu $t0,$t0,%lo(var80067e58) -/* f00bbec: 24e77e60 */ addiu $a3,$a3,%lo(var80067e60) -/* f00bbf0: 26107e5c */ addiu $s0,$s0,%lo(var80067e5c) +/* 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) /* f00bbf4: afbf001c */ sw $ra,0x1c($sp) /* f00bbf8: ad000000 */ sw $zero,0x0($t0) /* f00bbfc: ae000000 */ sw $zero,0x0($s0) @@ -358,11 +358,11 @@ glabel func0f00bbc8 /* f00bcc8: 39c4000f */ xori $a0,$t6,0xf /* f00bccc: 0c0048f2 */ jal func000123c8 /* f00bcd0: 00003025 */ or $a2,$zero,$zero -/* f00bcd4: 3c078006 */ lui $a3,%hi(var80067e60) -/* f00bcd8: 24e77e60 */ addiu $a3,$a3,%lo(var80067e60) +/* f00bcd4: 3c078006 */ lui $a3,%hi(g_NumChrsB) +/* f00bcd8: 24e77e60 */ addiu $a3,$a3,%lo(g_NumChrsB) /* f00bcdc: 8ce40000 */ lw $a0,0x0($a3) -/* f00bce0: 3c088006 */ lui $t0,%hi(var80067e58) -/* f00bce4: 25087e58 */ addiu $t0,$t0,%lo(var80067e58) +/* f00bce0: 3c088006 */ lui $t0,%hi(g_ChrsB) +/* f00bce4: 25087e58 */ addiu $t0,$t0,%lo(g_ChrsB) /* f00bce8: 0004c840 */ sll $t9,$a0,0x1 /* f00bcec: 2724000f */ addiu $a0,$t9,0xf /* f00bcf0: 3498000f */ ori $t8,$a0,0xf @@ -374,9 +374,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(var80067e58) +/* f00bd14: 3c088006 */ lui $t0,%hi(g_ChrsB) /* f00bd18: 8caf0000 */ lw $t7,0x0($a1) -/* f00bd1c: 25087e58 */ addiu $t0,$t0,%lo(var80067e58) +/* f00bd1c: 25087e58 */ addiu $t0,$t0,%lo(g_ChrsB) /* f00bd20: 8fa603a0 */ lw $a2,0x3a0($sp) /* f00bd24: 8fa9039c */ lw $t1,0x39c($sp) /* f00bd28: 11e00049 */ beqz $t7,.L0f00be50 diff --git a/src/game/game_011110.c b/src/game/game_011110.c index d87e10869..9f5a3032a 100644 --- a/src/game/game_011110.c +++ b/src/game/game_011110.c @@ -1295,8 +1295,8 @@ glabel func0f0118f4 /* f0122d8: 00a42823 */ subu $a1,$a1,$a0 /* f0122dc: 00052880 */ sll $a1,$a1,0x2 /* f0122e0: 00a42821 */ addu $a1,$a1,$a0 -/* f0122e4: 3c068006 */ lui $a2,%hi(g_Chrs) -/* f0122e8: 24c62988 */ addiu $a2,$a2,%lo(g_Chrs) +/* f0122e4: 3c068006 */ lui $a2,%hi(g_ChrsA) +/* f0122e8: 24c62988 */ addiu $a2,$a2,%lo(g_ChrsA) /* f0122ec: 000528c0 */ sll $a1,$a1,0x3 /* f0122f0: 00001025 */ or $v0,$zero,$zero /* f0122f4: 24080048 */ addiu $t0,$zero,0x48 diff --git a/src/game/game_014f10.c b/src/game/game_014f10.c index 8521e0a97..53cb52613 100644 --- a/src/game/game_014f10.c +++ b/src/game/game_014f10.c @@ -21,8 +21,8 @@ glabel func0f014f10 /* f014f2c: afb00014 */ sw $s0,0x14($sp) /* f014f30: 18600024 */ blez $v1,.L0f014fc4 /* f014f34: 00009025 */ or $s2,$zero,$zero -/* f014f38: 3c118006 */ lui $s1,%hi(g_Chrs) -/* f014f3c: 26312988 */ addiu $s1,$s1,%lo(g_Chrs) +/* f014f38: 3c118006 */ lui $s1,%hi(g_ChrsA) +/* f014f3c: 26312988 */ addiu $s1,$s1,%lo(g_ChrsA) /* f014f40: 00008025 */ or $s0,$zero,$zero /* f014f44: 24130003 */ addiu $s3,$zero,0x3 .L0f014f48: diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index 31508062e..a32a9264a 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -5339,11 +5339,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_Chrs) +/* f064ab8: 3c158006 */ lui $s5,%hi(g_ChrsA) /* 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_Chrs) +/* f064ac8: 26b52988 */ addiu $s5,$s5,%lo(g_ChrsA) /* f064acc: 001398c0 */ sll $s3,$s3,0x3 /* f064ad0: 241e001e */ addiu $s8,$zero,0x1e /* f064ad4: 24170004 */ addiu $s7,$zero,0x4 diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 7f5758ee3..22124df3d 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -7006,8 +7006,8 @@ glabel setupParseObject /* f06b108: 00c23023 */ subu $a2,$a2,$v0 /* f06b10c: 00063080 */ sll $a2,$a2,0x2 /* f06b110: 00c23021 */ addu $a2,$a2,$v0 -/* f06b114: 3c048006 */ lui $a0,%hi(g_Chrs) -/* f06b118: 24842988 */ addiu $a0,$a0,%lo(g_Chrs) +/* f06b114: 3c048006 */ lui $a0,%hi(g_ChrsA) +/* f06b118: 24842988 */ addiu $a0,$a0,%lo(g_ChrsA) /* f06b11c: 000630c0 */ sll $a2,$a2,0x3 /* f06b120: 00001825 */ or $v1,$zero,$zero /* f06b124: 24100048 */ addiu $s0,$zero,0x48 @@ -29206,8 +29206,8 @@ glabel func0f07e758 /* f07f028: 00a42823 */ subu $a1,$a1,$a0 /* f07f02c: 00052880 */ sll $a1,$a1,0x2 /* f07f030: 00a42821 */ addu $a1,$a1,$a0 -/* f07f034: 3c068006 */ lui $a2,%hi(g_Chrs) -/* f07f038: 24c62988 */ addiu $a2,$a2,%lo(g_Chrs) +/* f07f034: 3c068006 */ lui $a2,%hi(g_ChrsA) +/* f07f038: 24c62988 */ addiu $a2,$a2,%lo(g_ChrsA) /* f07f03c: 000528c0 */ sll $a1,$a1,0x3 /* f07f040: 00001025 */ or $v0,$zero,$zero /* f07f044: 2407ffff */ addiu $a3,$zero,-1 @@ -42570,8 +42570,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_Chrs) -/* f08acf8: 26732988 */ addiu $s3,$s3,%lo(g_Chrs) +/* f08acf4: 3c138006 */ lui $s3,%hi(g_ChrsA) +/* f08acf8: 26732988 */ addiu $s3,$s3,%lo(g_ChrsA) /* f08acfc: 0015a8c0 */ sll $s5,$s5,0x3 /* f08ad00: 27b20040 */ addiu $s2,$sp,0x40 /* f08ad04: 8e6e0000 */ lw $t6,0x0($s3) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 01f2e0e5b..ba64f659a 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -6639,8 +6639,8 @@ glabel func0f0b802c /* f0b81e8: 0295a023 */ subu $s4,$s4,$s5 /* f0b81ec: 0014a080 */ sll $s4,$s4,0x2 /* f0b81f0: 0295a021 */ addu $s4,$s4,$s5 -/* f0b81f4: 3c168006 */ lui $s6,%hi(g_Chrs) -/* f0b81f8: 26d62988 */ addiu $s6,$s6,%lo(g_Chrs) +/* f0b81f4: 3c168006 */ lui $s6,%hi(g_ChrsA) +/* f0b81f8: 26d62988 */ addiu $s6,$s6,%lo(g_ChrsA) /* f0b81fc: 0014a0c0 */ sll $s4,$s4,0x3 /* f0b8200: 27b300e8 */ addiu $s3,$sp,0xe8 /* f0b8204: 27b100c0 */ addiu $s1,$sp,0xc0 diff --git a/src/game/game_128f30.c b/src/game/game_128f30.c index 0be20249c..9e391c2aa 100644 --- a/src/game/game_128f30.c +++ b/src/game/game_128f30.c @@ -554,8 +554,8 @@ glabel func0f12955c /* f1296b4: 02c2b023 */ subu $s6,$s6,$v0 /* f1296b8: 0016b080 */ sll $s6,$s6,0x2 /* f1296bc: 02c2b021 */ addu $s6,$s6,$v0 -/* f1296c0: 3c178006 */ lui $s7,%hi(g_Chrs) -/* f1296c4: 26f72988 */ addiu $s7,$s7,%lo(g_Chrs) +/* f1296c0: 3c178006 */ lui $s7,%hi(g_ChrsA) +/* f1296c4: 26f72988 */ addiu $s7,$s7,%lo(g_ChrsA) /* f1296c8: 0016b0c0 */ sll $s6,$s6,0x3 /* f1296cc: 00009825 */ or $s3,$zero,$zero /* f1296d0: 241e0005 */ addiu $s8,$zero,0x5 diff --git a/src/game/game_129900.c b/src/game/game_129900.c index 0477d7f69..f51284003 100644 --- a/src/game/game_129900.c +++ b/src/game/game_129900.c @@ -1117,8 +1117,8 @@ GLOBAL_ASM( glabel func0f129cfc /* f129cfc: 27bdff78 */ addiu $sp,$sp,-136 /* f129d00: afb5004c */ sw $s5,0x4c($sp) -/* f129d04: 3c158006 */ lui $s5,%hi(g_NumChrs) -/* f129d08: 26b5298c */ addiu $s5,$s5,%lo(g_NumChrs) +/* f129d04: 3c158006 */ lui $s5,%hi(g_NumChrsA) +/* f129d08: 26b5298c */ addiu $s5,$s5,%lo(g_NumChrsA) /* f129d0c: 8eaf0000 */ lw $t7,0x0($s5) /* f129d10: afbe0058 */ sw $s8,0x58($sp) /* f129d14: 3c0e7f08 */ lui $t6,0x7f08 @@ -1146,10 +1146,10 @@ glabel func0f129cfc /* f129d6c: 4481c000 */ mtc1 $at,$f24 /* f129d70: 3c014000 */ lui $at,0x4000 /* f129d74: 3c16800a */ lui $s6,%hi(g_Vars) -/* f129d78: 3c118006 */ lui $s1,%hi(g_Chrs) +/* f129d78: 3c118006 */ lui $s1,%hi(g_ChrsA) /* f129d7c: 4481b000 */ mtc1 $at,$f22 /* f129d80: 4480a000 */ mtc1 $zero,$f20 -/* f129d84: 26312988 */ addiu $s1,$s1,%lo(g_Chrs) +/* f129d84: 26312988 */ addiu $s1,$s1,%lo(g_ChrsA) /* f129d88: 26d69fc0 */ addiu $s6,$s6,%lo(g_Vars) /* f129d8c: 00008025 */ or $s0,$zero,$zero /* f129d90: 24170003 */ addiu $s7,$zero,0x3 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 5491db237..07fc383af 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16121,9 +16121,9 @@ u32 var8009cd00 = 0; u32 var8009cd04 = 0; u32 var8009cd08 = 0; u32 var8009cd0c = 0; -u32 var8009cd10 = 0; -u32 var8009cd14 = 0; -u32 var8009cd18 = 0; +u32 g_NumChrsC = 0; +s16 *g_ChrnumsC = NULL; +s16 *g_ChrIndexesC = NULL; u32 var8009cd1c = 0; u32 var8009cd20 = 0; u32 var8009cd24 = 0; diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index eb86c5c1f..5e4ce22da 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -3,8 +3,8 @@ #include #include "types.h" -struct chrdata *chrFindById(struct chrdata *data, u32 chrnum); -struct chrdata *chrFindByLiteralId(s16 chrnum); +struct chrdata *chrFindById(struct chrdata *data, s32 chrnum); +struct chrdata *chrFindByLiteralId(s32 chrnum); f32 chrGetDistanceFromTargetToPad(struct chrdata *chr, s32 pad_id); f32 chrGetDistanceToChr(struct chrdata *chr1, s32 chr2num); f32 chrGetDistanceToCoord(struct chrdata *chr, struct coord *pos); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 835b4fa97..bc144a5c2 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -542,9 +542,9 @@ extern u32 var8009cca8; extern u32 var8009ccb0; extern u32 var8009ccb8; extern u32 var8009ccc0; -extern u32 var8009cd10; -extern u32 var8009cd14; -extern u32 var8009cd18; +extern u32 g_NumChrsC; +extern s16 *g_ChrnumsC; +extern s16 *g_ChrIndexesC; extern u32 var8009cd20; extern u32 var8009cd28; extern u32 var8009cd48; diff --git a/src/include/setup/setup_000000.h b/src/include/setup/setup_000000.h index 812ab6a96..22ac49215 100644 --- a/src/include/setup/setup_000000.h +++ b/src/include/setup/setup_000000.h @@ -6,8 +6,8 @@ extern s32 g_StageNum; extern u64 rand_seed; -extern struct chrdata *g_Chrs; // pointer to first element of chrs array -extern u32 g_NumChrs; +extern struct chrdata *g_ChrsA; // pointer to first element of chrs array +extern u32 g_NumChrsA; extern u32 var8005ce60; extern u32 var8005ce64; extern u32 var8005ce68; @@ -359,9 +359,9 @@ extern u32 var80067c08; extern u32 var80067d28; extern u32 var80067d70; extern u32 var80067e50; -extern u32 var80067e58; -extern u32 var80067e5c; -extern u32 var80067e60; +extern struct chrdata *g_ChrsB; +extern s16 *g_ChrnumsB; +extern s32 g_NumChrsB; extern u32 var80067e64; extern s16 *g_SquadronList; extern u32 var80067fdc; diff --git a/src/include/types.h b/src/include/types.h index bfa021aa9..5717dfaf2 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2483,7 +2483,7 @@ struct player { struct ailist { u8 *list; - u32 id; + s32 id; }; struct path { diff --git a/src/library/library_16110.c b/src/library/library_16110.c index 0e18628f6..809f8ec3e 100644 --- a/src/library/library_16110.c +++ b/src/library/library_16110.c @@ -2,11 +2,14 @@ #include "types.h" #include "game/game_096750.h" #include "game/game_114240.h" +#include "gvars/gvars.h" #include "library/library_04790.h" #include "library/library_159b0.h" #include "library/library_16110.h" #include "library/library_4a360.h" #include "library/library_4f5e0.h" +#include "setup/ailists.h" +#include "setup/setup_000000.h" const u32 var70054200[] = {0x42652ee0}; const u32 var70054204[] = {0x00000000}; @@ -2541,84 +2544,54 @@ glabel func00018148 /* 184cc: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel ailistFindById -/* 184d0: 28810401 */ slti $at,$a0,0x401 -/* 184d4: 14200020 */ bnez $at,.L00018558 -/* 184d8: 3c058006 */ lui $a1,0x8006 -/* 184dc: 3c02800a */ lui $v0,0x800a -/* 184e0: 8c42d048 */ lw $v0,-0x2fb8($v0) -/* 184e4: 3c058006 */ lui $a1,0x8006 -/* 184e8: 50400037 */ beqzl $v0,.L000185c8 -/* 184ec: 00001025 */ or $v0,$zero,$zero -/* 184f0: 8ca5ef34 */ lw $a1,-0x10cc($a1) -/* 184f4: 00001825 */ or $v1,$zero,$zero -/* 184f8: 04a00032 */ bltz $a1,.L000185c4 -/* 184fc: 00653821 */ addu $a3,$v1,$a1 -.L00018500: -/* 18500: 04e10003 */ bgez $a3,.L00018510 -/* 18504: 00077043 */ sra $t6,$a3,0x1 -/* 18508: 24e10001 */ addiu $at,$a3,0x1 -/* 1850c: 00017043 */ sra $t6,$at,0x1 -.L00018510: -/* 18510: 000e78c0 */ sll $t7,$t6,0x3 -/* 18514: 004f4021 */ addu $t0,$v0,$t7 -/* 18518: 8d090004 */ lw $t1,0x4($t0) -/* 1851c: 01c03025 */ or $a2,$t6,$zero -/* 18520: 14890003 */ bne $a0,$t1,.L00018530 -/* 18524: 0089082a */ slt $at,$a0,$t1 -/* 18528: 03e00008 */ jr $ra -/* 1852c: 8d020000 */ lw $v0,0x0($t0) -.L00018530: -/* 18530: 50200004 */ beqzl $at,.L00018544 -/* 18534: 24c30001 */ addiu $v1,$a2,0x1 -/* 18538: 10000002 */ beqz $zero,.L00018544 -/* 1853c: 24c5ffff */ addiu $a1,$a2,-1 -/* 18540: 24c30001 */ addiu $v1,$a2,0x1 -.L00018544: -/* 18544: 00a3082a */ slt $at,$a1,$v1 -/* 18548: 5020ffed */ beqzl $at,.L00018500 -/* 1854c: 00653821 */ addu $a3,$v1,$a1 -/* 18550: 1000001d */ beqz $zero,.L000185c8 -/* 18554: 00001025 */ or $v0,$zero,$zero -.L00018558: -/* 18558: 8ca5ef30 */ lw $a1,-0x10d0($a1) -/* 1855c: 3c098008 */ lui $t1,%hi(g_GlobalAilists) -/* 18560: 00001825 */ or $v1,$zero,$zero -/* 18564: 04a00017 */ bltz $a1,.L000185c4 -/* 18568: 2529ac58 */ addiu $t1,$t1,%lo(g_GlobalAilists) -/* 1856c: 00653821 */ addu $a3,$v1,$a1 -.L00018570: -/* 18570: 04e10003 */ bgez $a3,.L00018580 -/* 18574: 0007c043 */ sra $t8,$a3,0x1 -/* 18578: 24e10001 */ addiu $at,$a3,0x1 -/* 1857c: 0001c043 */ sra $t8,$at,0x1 -.L00018580: -/* 18580: 0018c8c0 */ sll $t9,$t8,0x3 -/* 18584: 01394021 */ addu $t0,$t1,$t9 -/* 18588: 8d020004 */ lw $v0,0x4($t0) -/* 1858c: 03003025 */ or $a2,$t8,$zero -/* 18590: 54820004 */ bnel $a0,$v0,.L000185a4 -/* 18594: 0082082a */ slt $at,$a0,$v0 -/* 18598: 03e00008 */ jr $ra -/* 1859c: 8d020000 */ lw $v0,0x0($t0) -/* 185a0: 0082082a */ slt $at,$a0,$v0 -.L000185a4: -/* 185a4: 50200004 */ beqzl $at,.L000185b8 -/* 185a8: 24c30001 */ addiu $v1,$a2,0x1 -/* 185ac: 10000002 */ beqz $zero,.L000185b8 -/* 185b0: 24c5ffff */ addiu $a1,$a2,-1 -/* 185b4: 24c30001 */ addiu $v1,$a2,0x1 -.L000185b8: -/* 185b8: 00a3082a */ slt $at,$a1,$v1 -/* 185bc: 5020ffec */ beqzl $at,.L00018570 -/* 185c0: 00653821 */ addu $a3,$v1,$a1 -.L000185c4: -/* 185c4: 00001025 */ or $v0,$zero,$zero -.L000185c8: -/* 185c8: 03e00008 */ jr $ra -/* 185cc: 00000000 */ sll $zero,$zero,0x0 -); +u8 *ailistFindById(s32 ailistid) +{ + s32 lower; + s32 upper; + s32 index; + + if (ailistid >= 0x401) { + if (g_StageSetup.ailists) { + lower = 0; + upper = g_NumLvAilists; + index; + + while (upper >= lower) { + index = (lower + upper) / 2; + + if (g_StageSetup.ailists[index].id == ailistid) { + return g_StageSetup.ailists[index].list; + } + + if (ailistid < g_StageSetup.ailists[index].id) { + upper = index - 1; + } else { + lower = index + 1; + } + } + } + } else { + lower = 0; + upper = g_NumGlobalAilists; + index; + + while (upper >= lower) { + index = (lower + upper) / 2; + + if (g_GlobalAilists[index].id == ailistid) { + return g_GlobalAilists[index].list; + } + + if (ailistid < g_GlobalAilists[index].id) { + upper = index - 1; + } else { + lower = index + 1; + } + } + } + + return NULL; +} GLOBAL_ASM( glabel func000185d0 diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index df1a94b6f..bb79ef4b5 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -8297,10 +8297,10 @@ u32 var80062980 = 0; s32 var80062984 = 5000; // 80062988 -struct chrdata *g_Chrs = NULL; +struct chrdata *g_ChrsA = NULL; // 8006298c -u32 g_NumChrs = 0; +u32 g_NumChrsA = 0; u32 var80062990 = 0x00000000; u32 var80062994 = 0x00000000; @@ -13731,9 +13731,10 @@ u32 var80067e50 = (u32) &var80067e48; // 80067e54 u32 g_StageFlags = 0; -u32 var80067e58 = 0x00000000; -u32 var80067e5c = 0x00000000; -u32 var80067e60 = 0x00000000; +struct chrdata *g_ChrsB = NULL; +s16 *g_ChrnumsB = NULL; +s32 g_NumChrsB = 0; + u32 var80067e64 = 0x00000000; s16 *g_SquadronList = NULL; u32 var80067e6c = 0x00280000;