diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index a50595a19..1df62211f 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -7,7 +7,7 @@ #include "data.h" #include "types.h" -u32 var8009dd00; +struct var8009dd00 *var8009dd00; struct anim *var8009dd04; u32 var8009dd08; u32 var8009dd0c; @@ -16,14 +16,18 @@ struct var8009dd10 *var8009dd14; struct var8009dd10 *var8009dd18; u32 var8009dd1c; -u32 var800705a0 = 0x00000000; +s32 var800705a0 = 0; s32 var800705a4 = 0; bool var800705a8 = false; -u32 var800705ac = 0x00000000; -u32 var800705b0 = 0x00000000; -u32 var800705b4 = 0x00000000; -u32 var800705b8 = 0x00000000; -u32 var800705bc = 0x00000000; +s32 var800705ac = 0; +s32 var800705b0 = 0; +s32 var800705b4 = 0; +s32 var800705b8 = 0; +s32 var800705bc = 0; + +#define NUMTHINGS1() (IS4MB() ? 0 : 35) +#define NUMTHINGS2() (IS4MB() ? 24 : 25) +#define NUMTHINGS3() (IS4MB() ? 0 : 20) GLOBAL_ASM( glabel func0f0b28d0 @@ -43,188 +47,67 @@ glabel func0f0b28d0 /* f0b2900: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f0b2904 -/* f0b2904: 3c028009 */ lui $v0,%hi(g_Is4Mb) -/* f0b2908: 90420af0 */ lbu $v0,%lo(g_Is4Mb)($v0) -/* f0b290c: 24030001 */ addiu $v1,$zero,0x1 -/* f0b2910: 00002025 */ or $a0,$zero,$zero -/* f0b2914: 00002825 */ or $a1,$zero,$zero -/* f0b2918: 00003025 */ or $a2,$zero,$zero -/* f0b291c: 00003825 */ or $a3,$zero,$zero -/* f0b2920: 00004025 */ or $t0,$zero,$zero -/* f0b2924: 14620003 */ bne $v1,$v0,.L0f0b2934 -/* f0b2928: 00004825 */ or $t1,$zero,$zero -/* f0b292c: 10000002 */ b .L0f0b2938 -/* f0b2930: 00005025 */ or $t2,$zero,$zero -.L0f0b2934: -/* f0b2934: 240a0023 */ addiu $t2,$zero,0x23 -.L0f0b2938: -/* f0b2938: 19400012 */ blez $t2,.L0f0b2984 -/* f0b293c: 3c0e800a */ lui $t6,%hi(var8009dd10) -/* f0b2940: 8dcedd10 */ lw $t6,%lo(var8009dd10)($t6) -/* f0b2944: 000978c0 */ sll $t7,$t1,0x3 -/* f0b2948: 01cf5821 */ addu $t3,$t6,$t7 -/* f0b294c: 8d780000 */ lw $t8,0x0($t3) -.L0f0b2950: -/* f0b2950: 25290001 */ addiu $t1,$t1,0x1 -/* f0b2954: 240a0023 */ addiu $t2,$zero,0x23 -/* f0b2958: 13000002 */ beqz $t8,.L0f0b2964 -/* f0b295c: 00000000 */ nop -/* f0b2960: 24840001 */ addiu $a0,$a0,0x1 -.L0f0b2964: -/* f0b2964: 14620003 */ bne $v1,$v0,.L0f0b2974 -/* f0b2968: 256b0008 */ addiu $t3,$t3,0x8 -/* f0b296c: 10000001 */ b .L0f0b2974 -/* f0b2970: 00005025 */ or $t2,$zero,$zero -.L0f0b2974: -/* f0b2974: 012a082a */ slt $at,$t1,$t2 -/* f0b2978: 5420fff5 */ bnezl $at,.L0f0b2950 -/* f0b297c: 8d780000 */ lw $t8,0x0($t3) -/* f0b2980: 00004825 */ or $t1,$zero,$zero -.L0f0b2984: -/* f0b2984: 54620004 */ bnel $v1,$v0,.L0f0b2998 -/* f0b2988: 240a0019 */ addiu $t2,$zero,0x19 -/* f0b298c: 10000002 */ b .L0f0b2998 -/* f0b2990: 240a0018 */ addiu $t2,$zero,0x18 -/* f0b2994: 240a0019 */ addiu $t2,$zero,0x19 -.L0f0b2998: -/* f0b2998: 19400012 */ blez $t2,.L0f0b29e4 -/* f0b299c: 3c19800a */ lui $t9,%hi(var8009dd14) -/* f0b29a0: 8f39dd14 */ lw $t9,%lo(var8009dd14)($t9) -/* f0b29a4: 000968c0 */ sll $t5,$t1,0x3 -/* f0b29a8: 032d5821 */ addu $t3,$t9,$t5 -/* f0b29ac: 8d6e0000 */ lw $t6,0x0($t3) -.L0f0b29b0: -/* f0b29b0: 25290001 */ addiu $t1,$t1,0x1 -/* f0b29b4: 240a0019 */ addiu $t2,$zero,0x19 -/* f0b29b8: 11c00002 */ beqz $t6,.L0f0b29c4 -/* f0b29bc: 00000000 */ nop -/* f0b29c0: 24a50001 */ addiu $a1,$a1,0x1 -.L0f0b29c4: -/* f0b29c4: 14620003 */ bne $v1,$v0,.L0f0b29d4 -/* f0b29c8: 256b0008 */ addiu $t3,$t3,0x8 -/* f0b29cc: 10000001 */ b .L0f0b29d4 -/* f0b29d0: 240a0018 */ addiu $t2,$zero,0x18 -.L0f0b29d4: -/* f0b29d4: 012a082a */ slt $at,$t1,$t2 -/* f0b29d8: 5420fff5 */ bnezl $at,.L0f0b29b0 -/* f0b29dc: 8d6e0000 */ lw $t6,0x0($t3) -/* f0b29e0: 00004825 */ or $t1,$zero,$zero -.L0f0b29e4: -/* f0b29e4: 14620003 */ bne $v1,$v0,.L0f0b29f4 -/* f0b29e8: 240a0014 */ addiu $t2,$zero,0x14 -/* f0b29ec: 10000001 */ b .L0f0b29f4 -/* f0b29f0: 00005025 */ or $t2,$zero,$zero -.L0f0b29f4: -/* f0b29f4: 19400011 */ blez $t2,.L0f0b2a3c -/* f0b29f8: 3c0f800a */ lui $t7,%hi(var8009dd18) -/* f0b29fc: 8defdd18 */ lw $t7,%lo(var8009dd18)($t7) -/* f0b2a00: 0009c0c0 */ sll $t8,$t1,0x3 -/* f0b2a04: 01f85821 */ addu $t3,$t7,$t8 -/* f0b2a08: 8d790000 */ lw $t9,0x0($t3) -.L0f0b2a0c: -/* f0b2a0c: 25290001 */ addiu $t1,$t1,0x1 -/* f0b2a10: 240a0014 */ addiu $t2,$zero,0x14 -/* f0b2a14: 13200002 */ beqz $t9,.L0f0b2a20 -/* f0b2a18: 00000000 */ nop -/* f0b2a1c: 24c60001 */ addiu $a2,$a2,0x1 -.L0f0b2a20: -/* f0b2a20: 14620003 */ bne $v1,$v0,.L0f0b2a30 -/* f0b2a24: 256b0008 */ addiu $t3,$t3,0x8 -/* f0b2a28: 10000001 */ b .L0f0b2a30 -/* f0b2a2c: 00005025 */ or $t2,$zero,$zero -.L0f0b2a30: -/* f0b2a30: 012a082a */ slt $at,$t1,$t2 -/* f0b2a34: 5420fff5 */ bnezl $at,.L0f0b2a0c -/* f0b2a38: 8d790000 */ lw $t9,0x0($t3) -.L0f0b2a3c: -/* f0b2a3c: 3c098007 */ lui $t1,%hi(var800705a0) -/* f0b2a40: 8d2905a0 */ lw $t1,%lo(var800705a0)($t1) -/* f0b2a44: 00005025 */ or $t2,$zero,$zero -/* f0b2a48: 3c0b800a */ lui $t3,%hi(var8009dd00) -/* f0b2a4c: 1920000c */ blez $t1,.L0f0b2a80 -/* f0b2a50: 000960c0 */ sll $t4,$t1,0x3 -/* f0b2a54: 01896021 */ addu $t4,$t4,$t1 -/* f0b2a58: 000c6080 */ sll $t4,$t4,0x2 -/* f0b2a5c: 8d6bdd00 */ lw $t3,%lo(var8009dd00)($t3) -.L0f0b2a60: -/* f0b2a60: 8d6d0008 */ lw $t5,0x8($t3) -/* f0b2a64: 254a0024 */ addiu $t2,$t2,0x24 -/* f0b2a68: 014c082a */ slt $at,$t2,$t4 -/* f0b2a6c: 11a00002 */ beqz $t5,.L0f0b2a78 -/* f0b2a70: 00000000 */ nop -/* f0b2a74: 24e70001 */ addiu $a3,$a3,0x1 -.L0f0b2a78: -/* f0b2a78: 1420fff9 */ bnez $at,.L0f0b2a60 -/* f0b2a7c: 256b0024 */ addiu $t3,$t3,36 -.L0f0b2a80: -/* f0b2a80: 3c098007 */ lui $t1,%hi(var800705a4) -/* f0b2a84: 8d2905a4 */ lw $t1,%lo(var800705a4)($t1) -/* f0b2a88: 00005025 */ or $t2,$zero,$zero -/* f0b2a8c: 3c0b800a */ lui $t3,%hi(var8009dd04) -/* f0b2a90: 1920000f */ blez $t1,.L0f0b2ad0 -/* f0b2a94: 000960c0 */ sll $t4,$t1,0x3 -/* f0b2a98: 01896021 */ addu $t4,$t4,$t1 -/* f0b2a9c: 000c6080 */ sll $t4,$t4,0x2 -/* f0b2aa0: 01896023 */ subu $t4,$t4,$t1 -/* f0b2aa4: 000c6080 */ sll $t4,$t4,0x2 -/* f0b2aa8: 2409ffff */ addiu $t1,$zero,-1 -/* f0b2aac: 8d6bdd04 */ lw $t3,%lo(var8009dd04)($t3) -.L0f0b2ab0: -/* f0b2ab0: 856e0000 */ lh $t6,0x0($t3) -/* f0b2ab4: 254a008c */ addiu $t2,$t2,0x8c -/* f0b2ab8: 014c082a */ slt $at,$t2,$t4 -/* f0b2abc: 112e0002 */ beq $t1,$t6,.L0f0b2ac8 -/* f0b2ac0: 00000000 */ nop -/* f0b2ac4: 25080001 */ addiu $t0,$t0,0x1 -.L0f0b2ac8: -/* f0b2ac8: 1420fff9 */ bnez $at,.L0f0b2ab0 -/* f0b2acc: 256b008c */ addiu $t3,$t3,140 -.L0f0b2ad0: -/* f0b2ad0: 3c098007 */ lui $t1,%hi(var800705ac) -/* f0b2ad4: 252905ac */ addiu $t1,$t1,%lo(var800705ac) -/* f0b2ad8: 8d2f0000 */ lw $t7,0x0($t1) -/* f0b2adc: 01e4082a */ slt $at,$t7,$a0 -/* f0b2ae0: 10200002 */ beqz $at,.L0f0b2aec -/* f0b2ae4: 00000000 */ nop -/* f0b2ae8: ad240000 */ sw $a0,0x0($t1) -.L0f0b2aec: -/* f0b2aec: 3c048007 */ lui $a0,%hi(var800705b0) -/* f0b2af0: 248405b0 */ addiu $a0,$a0,%lo(var800705b0) -/* f0b2af4: 8c980000 */ lw $t8,0x0($a0) -/* f0b2af8: 0305082a */ slt $at,$t8,$a1 -/* f0b2afc: 10200002 */ beqz $at,.L0f0b2b08 -/* f0b2b00: 00000000 */ nop -/* f0b2b04: ac850000 */ sw $a1,0x0($a0) -.L0f0b2b08: -/* f0b2b08: 3c048007 */ lui $a0,%hi(var800705b4) -/* f0b2b0c: 248405b4 */ addiu $a0,$a0,%lo(var800705b4) -/* f0b2b10: 8c990000 */ lw $t9,0x0($a0) -/* f0b2b14: 0326082a */ slt $at,$t9,$a2 -/* f0b2b18: 10200002 */ beqz $at,.L0f0b2b24 -/* f0b2b1c: 00000000 */ nop -/* f0b2b20: ac860000 */ sw $a2,0x0($a0) -.L0f0b2b24: -/* f0b2b24: 3c048007 */ lui $a0,%hi(var800705b8) -/* f0b2b28: 248405b8 */ addiu $a0,$a0,%lo(var800705b8) -/* f0b2b2c: 8c8d0000 */ lw $t5,0x0($a0) -/* f0b2b30: 01a7082a */ slt $at,$t5,$a3 -/* f0b2b34: 10200002 */ beqz $at,.L0f0b2b40 -/* f0b2b38: 00000000 */ nop -/* f0b2b3c: ac870000 */ sw $a3,0x0($a0) -.L0f0b2b40: -/* f0b2b40: 3c048007 */ lui $a0,%hi(var800705bc) -/* f0b2b44: 248405bc */ addiu $a0,$a0,%lo(var800705bc) -/* f0b2b48: 8c8e0000 */ lw $t6,0x0($a0) -/* f0b2b4c: 01c8082a */ slt $at,$t6,$t0 -/* f0b2b50: 10200002 */ beqz $at,.L0f0b2b5c -/* f0b2b54: 00000000 */ nop -/* f0b2b58: ac880000 */ sw $t0,0x0($a0) -.L0f0b2b5c: -/* f0b2b5c: 03e00008 */ jr $ra -/* f0b2b60: 00000000 */ nop -); +void func0f0b2904(void) +{ + s32 i; + s32 count1 = 0; + s32 count2 = 0; + s32 count3 = 0; + s32 count4 = 0; + s32 count5 = 0; + + for (i = 0; i < NUMTHINGS1(); i++) { + if (var8009dd10[i].model) { + count1++; + } + } + + for (i = 0; i < NUMTHINGS2(); i++) { + if (var8009dd14[i].model) { + count2++; + } + } + + for (i = 0; i < NUMTHINGS3(); i++) { + if (var8009dd18[i].model) { + count3++; + } + } + + for (i = 0; i < var800705a0; i++) { + if (var8009dd00[i].unk08) { + count4++; + } + } + + for (i = 0; i < var800705a4; i++) { + if (var8009dd04[i].animnum != -1) { + count5++; + } + } + + if (count1 > var800705ac) { + var800705ac = count1; + } + + if (count2 > var800705b0) { + var800705b0 = count2; + } + + if (count3 > var800705b4) { + var800705b4 = count3; + } + + if (count4 > var800705b8) { + var800705b8 = count4; + } + + if (count5 > var800705bc) { + var800705bc = count5; + } + + if (IS4MB()); +} GLOBAL_ASM( glabel func0f0b2b64 @@ -614,10 +497,6 @@ struct model *modelInstantiate(struct modelfiledata *modelfiledata) return func0f0b2b64(modelfiledata, false); } -#define NUMTHINGS1() (IS4MB() ? 0 : 35) -#define NUMTHINGS2() (IS4MB() ? 24 : 25) -#define NUMTHINGS3() (IS4MB() ? 0 : 20) - void modelFree(struct model *model) { bool done = false; diff --git a/src/include/bss.h b/src/include/bss.h index b3b61c2fe..0a59beef2 100644 --- a/src/include/bss.h +++ b/src/include/bss.h @@ -134,7 +134,7 @@ extern struct fireslot g_Fireslots[NUM_FIRESLOTS]; extern struct casing g_Casings[20]; extern struct boltbeam g_BoltBeams[8]; extern struct lasersight g_LaserSights[4]; -extern u32 var8009dd00; +extern struct var8009dd00 *var8009dd00; extern struct anim *var8009dd04; extern u32 var8009dd08; extern u32 var8009dd0c; diff --git a/src/include/data.h b/src/include/data.h index 65a3eabee..fd5430797 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -250,14 +250,14 @@ extern struct inventory_class invclass_default; extern struct weapon *g_Weapons[]; extern u32 var800700ac; extern bool g_CasingsActive; -extern u32 var800705a0; +extern s32 var800705a0; extern s32 var800705a4; extern bool var800705a8; -extern u32 var800705ac; -extern u32 var800705b0; -extern u32 var800705b4; -extern u32 var800705b8; -extern u32 var800705bc; +extern s32 var800705ac; +extern s32 var800705b0; +extern s32 var800705b4; +extern s32 var800705b8; +extern s32 var800705bc; extern s32 g_ViRes; extern bool g_HiResEnabled; extern s32 var8007072c; diff --git a/src/include/types.h b/src/include/types.h index 3b27d329d..39aca9a18 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6810,6 +6810,18 @@ struct var80069a70 { /*0x30*/ u32 unk30; }; +struct var8009dd00 { + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0c; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1c; + u32 unk20; +}; + struct var8009dd10 { struct model *model; u32 unk04;