diff --git a/src/game/game_0b69d0.c b/src/game/game_0b69d0.c index e169b4ff4..4b5cf3aff 100644 --- a/src/game/game_0b69d0.c +++ b/src/game/game_0b69d0.c @@ -13107,7 +13107,7 @@ glabel var7f1ad6ac // func0f0b9538(); // padUnpack(g_Vars.currentplayer->autocontrol_aimpad, PADFIELD_POS, &pad); // -// if (mainGetStageNum() == g_Stages[STAGE_EXTRACTION].id +// if (mainGetStageNum() == g_Stages[STAGEINDEX_EXTRACTION].id // && g_Vars.currentplayer->autocontrol_aimpad == 0x19) { // pad.pos.x -= 100; // } diff --git a/src/game/game_1668e0.c b/src/game/game_1668e0.c index 9455f480b..4b0f2b6b3 100644 --- a/src/game/game_1668e0.c +++ b/src/game/game_1668e0.c @@ -55,128 +55,38 @@ s32 func0f1669fc(void) return 0; } -GLOBAL_ASM( -glabel func0f166a6c -/* f166a6c: 3c06800a */ lui $a2,%hi(g_Vars) -/* f166a70: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars) -/* f166a74: 27bdffe0 */ addiu $sp,$sp,-32 -/* f166a78: 8cc204b4 */ lw $v0,0x4b4($a2) -/* f166a7c: afbf0014 */ sw $ra,0x14($sp) -/* f166a80: afa40020 */ sw $a0,0x20($sp) -/* f166a84: afa50024 */ sw $a1,0x24($sp) -/* f166a88: 0c00566c */ jal func000159b0 -/* f166a8c: afa2001c */ sw $v0,0x1c($sp) -/* f166a90: 3c013f80 */ lui $at,0x3f80 -/* f166a94: 44810000 */ mtc1 $at,$f0 -/* f166a98: 8fa40020 */ lw $a0,0x20($sp) -/* f166a9c: 8fa2001c */ lw $v0,0x1c($sp) -/* f166aa0: 8fa50024 */ lw $a1,0x24($sp) -/* f166aa4: 3c038008 */ lui $v1,%hi(g_Stages) -/* f166aa8: 2463fcc0 */ addiu $v1,$v1,%lo(g_Stages) -/* f166aac: e4800000 */ swc1 $f0,0x0($a0) -/* f166ab0: e4800014 */ swc1 $f0,0x14($a0) -/* f166ab4: e4800028 */ swc1 $f0,0x28($a0) -/* f166ab8: 846e05e8 */ lh $t6,0x5e8($v1) -/* f166abc: 3c06800a */ lui $a2,%hi(g_Vars) -/* f166ac0: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars) -/* f166ac4: 104e000a */ beq $v0,$t6,.L0f166af0 -/* f166ac8: 2401000f */ addiu $at,$zero,0xf -/* f166acc: 846f0738 */ lh $t7,0x738($v1) -/* f166ad0: 104f0007 */ beq $v0,$t7,.L0f166af0 -/* f166ad4: 00000000 */ nop -/* f166ad8: 84780118 */ lh $t8,0x118($v1) -/* f166adc: 10580004 */ beq $v0,$t8,.L0f166af0 -/* f166ae0: 00000000 */ nop -/* f166ae4: 84790000 */ lh $t9,0x0($v1) -/* f166ae8: 54590004 */ bnel $v0,$t9,.L0f166afc -/* f166aec: 846804d0 */ lh $t0,0x4d0($v1) -.L0f166af0: -/* f166af0: 10a1001d */ beq $a1,$at,.L0f166b68 -/* f166af4: 00000000 */ nop -/* f166af8: 846804d0 */ lh $t0,0x4d0($v1) -.L0f166afc: -/* f166afc: 24010002 */ addiu $at,$zero,0x2 -/* f166b00: 10480004 */ beq $v0,$t0,.L0f166b14 -/* f166b04: 00000000 */ nop -/* f166b08: 84690070 */ lh $t1,0x70($v1) -/* f166b0c: 54490004 */ bnel $v0,$t1,.L0f166b20 -/* f166b10: 846a0620 */ lh $t2,0x620($v1) -.L0f166b14: -/* f166b14: 10a10014 */ beq $a1,$at,.L0f166b68 -/* f166b18: 00000000 */ nop -/* f166b1c: 846a0620 */ lh $t2,0x620($v1) -.L0f166b20: -/* f166b20: 24010001 */ addiu $at,$zero,0x1 -/* f166b24: 104a0007 */ beq $v0,$t2,.L0f166b44 -/* f166b28: 00000000 */ nop -/* f166b2c: 846b0310 */ lh $t3,0x310($v1) -/* f166b30: 104b0004 */ beq $v0,$t3,.L0f166b44 -/* f166b34: 00000000 */ nop -/* f166b38: 846c07a8 */ lh $t4,0x7a8($v1) -/* f166b3c: 544c0004 */ bnel $v0,$t4,.L0f166b50 -/* f166b40: 846d0700 */ lh $t5,0x700($v1) -.L0f166b44: -/* f166b44: 10a10008 */ beq $a1,$at,.L0f166b68 -/* f166b48: 00000000 */ nop -/* f166b4c: 846d0700 */ lh $t5,0x700($v1) -.L0f166b50: -/* f166b50: 3c03800a */ lui $v1,%hi(g_BgRooms) -/* f166b54: 24010071 */ addiu $at,$zero,0x71 -/* f166b58: 144d0015 */ bne $v0,$t5,.L0f166bb0 -/* f166b5c: 24634cc4 */ addiu $v1,$v1,%lo(g_BgRooms) -/* f166b60: 54a10014 */ bnel $a1,$at,.L0f166bb4 -/* f166b64: 8c6a0000 */ lw $t2,0x0($v1) -.L0f166b68: -/* f166b68: 3c03800a */ lui $v1,%hi(g_BgRooms) -/* f166b6c: 24634cc4 */ addiu $v1,$v1,%lo(g_BgRooms) -/* f166b70: 8c6e0000 */ lw $t6,0x0($v1) -/* f166b74: 00051080 */ sll $v0,$a1,0x2 -/* f166b78: 00451021 */ addu $v0,$v0,$a1 -/* f166b7c: 00021080 */ sll $v0,$v0,0x2 -/* f166b80: 01c27821 */ addu $t7,$t6,$v0 -/* f166b84: c5e40004 */ lwc1 $f4,0x4($t7) -/* f166b88: e4840030 */ swc1 $f4,0x30($a0) -/* f166b8c: 8c780000 */ lw $t8,0x0($v1) -/* f166b90: 0302c821 */ addu $t9,$t8,$v0 -/* f166b94: c7260008 */ lwc1 $f6,0x8($t9) -/* f166b98: e4860034 */ swc1 $f6,0x34($a0) -/* f166b9c: 8c680000 */ lw $t0,0x0($v1) -/* f166ba0: 01024821 */ addu $t1,$t0,$v0 -/* f166ba4: c528000c */ lwc1 $f8,0xc($t1) -/* f166ba8: 10000019 */ b .L0f166c10 -/* f166bac: e4880038 */ swc1 $f8,0x38($a0) -.L0f166bb0: -/* f166bb0: 8c6a0000 */ lw $t2,0x0($v1) -.L0f166bb4: -/* f166bb4: 00051080 */ sll $v0,$a1,0x2 -/* f166bb8: 8ccc0284 */ lw $t4,0x284($a2) -/* f166bbc: 00451021 */ addu $v0,$v0,$a1 -/* f166bc0: 00021080 */ sll $v0,$v0,0x2 -/* f166bc4: 01425821 */ addu $t3,$t2,$v0 -/* f166bc8: c56a0004 */ lwc1 $f10,0x4($t3) -/* f166bcc: c5900038 */ lwc1 $f16,0x38($t4) -/* f166bd0: 46105481 */ sub.s $f18,$f10,$f16 -/* f166bd4: e4920030 */ swc1 $f18,0x30($a0) -/* f166bd8: 8c6d0000 */ lw $t5,0x0($v1) -/* f166bdc: 8ccf0284 */ lw $t7,0x284($a2) -/* f166be0: 01a27021 */ addu $t6,$t5,$v0 -/* f166be4: c5c40008 */ lwc1 $f4,0x8($t6) -/* f166be8: c5e6003c */ lwc1 $f6,0x3c($t7) -/* f166bec: 46062201 */ sub.s $f8,$f4,$f6 -/* f166bf0: e4880034 */ swc1 $f8,0x34($a0) -/* f166bf4: 8c780000 */ lw $t8,0x0($v1) -/* f166bf8: 8cc80284 */ lw $t0,0x284($a2) -/* f166bfc: 0302c821 */ addu $t9,$t8,$v0 -/* f166c00: c72a000c */ lwc1 $f10,0xc($t9) -/* f166c04: c5100040 */ lwc1 $f16,0x40($t0) -/* f166c08: 46105481 */ sub.s $f18,$f10,$f16 -/* f166c0c: e4920038 */ swc1 $f18,0x38($a0) -.L0f166c10: -/* f166c10: 8fbf0014 */ lw $ra,0x14($sp) -/* f166c14: 27bd0020 */ addiu $sp,$sp,0x20 -/* f166c18: 03e00008 */ jr $ra -/* f166c1c: 00000000 */ nop -); +void func0f166a6c(Mtxf *mtx, s32 roomnum) +{ + s32 stagenum = g_Vars.stagenum; + + func000159b0(mtx); + + mtx->m[0][0] = 1; + mtx->m[1][1] = 1; + mtx->m[2][2] = 1; + + // These are rooms that are always active, such as the moon in Defection. + // This is probably making those rooms always drawn a certain distance away + // relative to the camera, so the moon never gets bigger as you go closer. + if (((stagenum == g_Stages[STAGEINDEX_INFILTRATION].id + || stagenum == g_Stages[STAGEINDEX_RESCUE].id + || stagenum == g_Stages[STAGEINDEX_ESCAPE].id + || stagenum == g_Stages[STAGEINDEX_MAIANSOS].id) && roomnum == 0x0f) + || ((stagenum == g_Stages[STAGEINDEX_SKEDARRUINS].id + || stagenum == g_Stages[STAGEINDEX_WAR].id) && roomnum == 0x02) + || ((stagenum == g_Stages[STAGEINDEX_DEFECTION].id + || stagenum == g_Stages[STAGEINDEX_EXTRACTION].id + || stagenum == g_Stages[STAGEINDEX_MBR].id) && roomnum == 0x01) + || (stagenum == g_Stages[STAGEINDEX_ATTACKSHIP].id && roomnum == 0x71)) { + mtx->m[3][0] = g_BgRooms[roomnum].pos.x; + mtx->m[3][1] = g_BgRooms[roomnum].pos.y; + mtx->m[3][2] = g_BgRooms[roomnum].pos.z; + } else { + mtx->m[3][0] = g_BgRooms[roomnum].pos.x - g_Vars.currentplayer->globaldrawworldoffset.x; + mtx->m[3][1] = g_BgRooms[roomnum].pos.y - g_Vars.currentplayer->globaldrawworldoffset.y; + mtx->m[3][2] = g_BgRooms[roomnum].pos.z - g_Vars.currentplayer->globaldrawworldoffset.z; + } +} s32 func0f166c20(s32 roomnum) {