From 8c6b3c3af4c4df46b46a8a1a074b049760240a3d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 2 Jul 2022 22:09:48 +1000 Subject: [PATCH] Decompile mblurRender --- src/game/bondgun.c | 24 +- src/game/dlights.c | 2 +- src/game/game_176080.c | 542 ++++++--------------------------- src/game/lv.c | 2 +- src/include/game/game_176080.h | 15 +- src/lib/main.c | 4 +- src/lib/vi.c | 4 +- 7 files changed, 118 insertions(+), 475 deletions(-) diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 2ca9993a1..eeb565e6e 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -18721,7 +18721,7 @@ glabel var7f1aca90 /* f0a71e4: 100002d5 */ b .L0f0a7d3c /* f0a71e8: 8fbf0034 */ lw $ra,0x34($sp) .L0f0a71ec: -/* f0a71ec: 0fc5d9ad */ jal func0f1766b4 +/* f0a71ec: 0fc5d9ad */ jal mblurRender /* f0a71f0: 8fa4014c */ lw $a0,0x14c($sp) /* f0a71f4: afa2014c */ sw $v0,0x14c($sp) /* f0a71f8: 0c002ca0 */ jal vi0000b280 @@ -19421,9 +19421,9 @@ glabel var7f1aca90 /* f0a7c0c: afb500e4 */ sw $s5,0xe4($sp) /* f0a7c10: 0fc2baf8 */ jal casingsRender /* f0a7c14: 27a4014c */ addiu $a0,$sp,0x14c -/* f0a7c18: 0fc5d8a6 */ jal func0f176298 +/* f0a7c18: 0fc5d8a6 */ jal mblur0f176298 /* f0a7c1c: 00000000 */ nop -/* f0a7c20: 0fc5d8ab */ jal func0f1762ac +/* f0a7c20: 0fc5d8ab */ jal mblur0f1762ac /* f0a7c24: 8fa4014c */ lw $a0,0x14c($sp) /* f0a7c28: afa2014c */ sw $v0,0x14c($sp) /* f0a7c2c: 0c002c74 */ jal vi0000b1d0 @@ -19562,7 +19562,7 @@ glabel var7f1aca90 /* f0a71e4: 100002d5 */ b .L0f0a7d3c /* f0a71e8: 8fbf0034 */ lw $ra,0x34($sp) .L0f0a71ec: -/* f0a71ec: 0fc5d9ad */ jal func0f1766b4 +/* f0a71ec: 0fc5d9ad */ jal mblurRender /* f0a71f0: 8fa4014c */ lw $a0,0x14c($sp) /* f0a71f4: afa2014c */ sw $v0,0x14c($sp) /* f0a71f8: 0c002ca0 */ jal vi0000b280 @@ -20262,9 +20262,9 @@ glabel var7f1aca90 /* f0a7c0c: afb500e4 */ sw $s5,0xe4($sp) /* f0a7c10: 0fc2baf8 */ jal casingsRender /* f0a7c14: 27a4014c */ addiu $a0,$sp,0x14c -/* f0a7c18: 0fc5d8a6 */ jal func0f176298 +/* f0a7c18: 0fc5d8a6 */ jal mblur0f176298 /* f0a7c1c: 00000000 */ nop -/* f0a7c20: 0fc5d8ab */ jal func0f1762ac +/* f0a7c20: 0fc5d8ab */ jal mblur0f1762ac /* f0a7c24: 8fa4014c */ lw $a0,0x14c($sp) /* f0a7c28: afa2014c */ sw $v0,0x14c($sp) /* f0a7c2c: 0c002c74 */ jal vi0000b1d0 @@ -20403,7 +20403,7 @@ glabel var7f1aca90 /* f0a4f30: 100002cd */ beqz $zero,.NB0f0a5a68 /* f0a4f34: 8fbf0034 */ lw $ra,0x34($sp) .NB0f0a4f38: -/* f0a4f38: 0fc5c4d5 */ jal func0f1766b4 +/* f0a4f38: 0fc5c4d5 */ jal mblurRender /* f0a4f3c: 8fa40144 */ lw $a0,0x144($sp) /* f0a4f40: afa20144 */ sw $v0,0x144($sp) /* f0a4f44: 0c002d00 */ jal vi0000b280 @@ -21094,9 +21094,9 @@ glabel var7f1aca90 /* f0a5938: afb500dc */ sw $s5,0xdc($sp) /* f0a593c: 0fc2b250 */ jal casingsRender /* f0a5940: 27a40144 */ addiu $a0,$sp,0x144 -/* f0a5944: 0fc5c3ce */ jal func0f176298 +/* f0a5944: 0fc5c3ce */ jal mblur0f176298 /* f0a5948: 00000000 */ sll $zero,$zero,0x0 -/* f0a594c: 0fc5c3d3 */ jal func0f1762ac +/* f0a594c: 0fc5c3d3 */ jal mblur0f1762ac /* f0a5950: 8fa40144 */ lw $a0,0x144($sp) /* f0a5954: afa20144 */ sw $v0,0x144($sp) /* f0a5958: 0c002cd4 */ jal vi0000b1d0 @@ -21200,7 +21200,7 @@ glabel var7f1aca90 // return; // } // -// gdl = func0f1766b4(gdl); +// gdl = mblurRender(gdl); // gdl = vi0000b280(gdl); // gdl = vi0000b1d0(gdl); // @@ -21423,9 +21423,9 @@ glabel var7f1aca90 // } // // casingsRender(&gdl); -// func0f176298(); +// mblur0f176298(); // -// gdl = func0f1762ac(gdl); +// gdl = mblur0f1762ac(gdl); // gdl = vi0000b1d0(gdl); // // gDPSetScissor(gdl++, G_SC_NON_INTERLACE, viGetViewLeft(), viGetViewTop(), diff --git a/src/game/dlights.c b/src/game/dlights.c index 58496eb18..79597318b 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -597,7 +597,7 @@ void func0f001c0c(void) mempGetStageFree(); - ptr = func0f176080(); + ptr = mblurGetAllocation(); var80061434 = (f32 *)ptr; ptr += table1size; diff --git a/src/game/game_176080.c b/src/game/game_176080.c index fee42c215..759d794b9 100644 --- a/src/game/game_176080.c +++ b/src/game/game_176080.c @@ -13,29 +13,29 @@ u32 var800ab7c0; u32 var800ab7c4; -u8 var800ab7c8[0x300]; -u8 var800abac8[0x300]; -u8 var800abdc8[0x300]; +u16 var800ab7c8[0x180]; +u16 var800abac8[0x180]; +u16 var800abdc8[0x180]; u16 *var800844f0 = NULL; void *var800844f4 = NULL; -void *func0f176080(void) +void *mblurGetAllocation(void) { return var800844f0; } -void func0f17608c(s32 stagenum) +void mblurReset(s32 stagenum) { var800844f0 = 0; var800844f4 = 0; if (stagenum != STAGE_TITLE) { - func0f1760c4(); + mblurAllocate(); } } -void func0f1760c4(void) +void mblurAllocate(void) { if (IS4MB()) { var800ab7c0 = 320; @@ -60,12 +60,12 @@ void func0f1760c4(void) var800844f4 = var800844f0; } -void func0f176298(void) +void mblur0f176298(void) { var800844f4 = var800844f0; } -Gfx *func0f1762ac(Gfx *gdl) +Gfx *mblur0f1762ac(Gfx *gdl) { u32 subamount; u32 addr; @@ -90,7 +90,7 @@ Gfx *func0f1762ac(Gfx *gdl) return gdl; } -Gfx *func0f1763f4(Gfx *gdl) +Gfx *mblur0f1763f4(Gfx *gdl) { s32 left; s32 right; @@ -119,458 +119,102 @@ Gfx *func0f1763f4(Gfx *gdl) return gdl; } -void *func0f176668(s32 arg0) +u16 *mblur0f176668(s32 arg0) { - void *addr; + u16 *addr; if (arg0 == 0) { - addr = &var800ab7c8; + addr = var800ab7c8; } if (arg0 == 1) { - addr = &var800abac8; + addr = var800abac8; } if (arg0 == 2) { - addr = &var800abdc8; + addr = var800abdc8; } - addr = (void *)(((u32)addr + 0x3f) & ~0x3f); + addr = (u16 *)(((u32)addr + 0x3f) & ~0x3f); return addr; } -GLOBAL_ASM( -glabel func0f1766b4 -/* f1766b4: 27bdffa8 */ addiu $sp,$sp,-88 -/* f1766b8: afbf003c */ sw $ra,0x3c($sp) -/* f1766bc: afb00018 */ sw $s0,0x18($sp) -/* f1766c0: 00808025 */ or $s0,$a0,$zero -/* f1766c4: afbe0038 */ sw $s8,0x38($sp) -/* f1766c8: afb70034 */ sw $s7,0x34($sp) -/* f1766cc: afb60030 */ sw $s6,0x30($sp) -/* f1766d0: afb5002c */ sw $s5,0x2c($sp) -/* f1766d4: afb40028 */ sw $s4,0x28($sp) -/* f1766d8: afb30024 */ sw $s3,0x24($sp) -/* f1766dc: afb20020 */ sw $s2,0x20($sp) -/* f1766e0: 0c000913 */ jal bbufGetIndex0Buffer -/* f1766e4: afb1001c */ sw $s1,0x1c($sp) -/* f1766e8: 3c0e8008 */ lui $t6,%hi(var800844f0) -/* f1766ec: 8dce44f0 */ lw $t6,%lo(var800844f0)($t6) -/* f1766f0: 00409025 */ or $s2,$v0,$zero -/* f1766f4: 0000a025 */ or $s4,$zero,$zero -/* f1766f8: 0c002ac7 */ jal viGetBackBuffer -/* f1766fc: afae004c */ sw $t6,0x4c($sp) -/* f176700: 3c138009 */ lui $s3,%hi(g_BootBufferIndex0) -/* f176704: 2673fa6c */ addiu $s3,$s3,%lo(g_BootBufferIndex0) -/* f176708: 0fc5d99a */ jal func0f176668 -/* f17670c: 8e640000 */ lw $a0,0x0($s3) -/* f176710: 8e780000 */ lw $t8,0x0($s3) -/* f176714: 3c018009 */ lui $at,%hi(g_BootBufferDirtyIndexes) -/* f176718: 02001825 */ or $v1,$s0,$zero -/* f17671c: 240f0001 */ addiu $t7,$zero,0x1 -/* f176720: 26100008 */ addiu $s0,$s0,0x8 -/* f176724: 00380821 */ addu $at,$at,$t8 -/* f176728: 3c16e700 */ lui $s6,0xe700 -/* f17672c: afa20044 */ sw $v0,0x44($sp) -/* f176730: a02ffa68 */ sb $t7,%lo(g_BootBufferDirtyIndexes)($at) -/* f176734: 02008825 */ or $s1,$s0,$zero -/* f176738: ac600004 */ sw $zero,0x4($v1) -/* f17673c: ac760000 */ sw $s6,0x0($v1) -/* f176740: 0c002ef1 */ jal viGetBufWidth -/* f176744: 26100008 */ addiu $s0,$s0,0x8 -/* f176748: 2459ffff */ addiu $t9,$v0,-1 -/* f17674c: 33280fff */ andi $t0,$t9,0xfff -/* f176750: 3c01ff10 */ lui $at,0xff10 -/* f176754: 01014825 */ or $t1,$t0,$at -/* f176758: ae290000 */ sw $t1,0x0($s1) -/* f17675c: 8faa0044 */ lw $t2,0x44($sp) -/* f176760: 3c018000 */ lui $at,0x8000 -/* f176764: 02001825 */ or $v1,$s0,$zero -/* f176768: 01415821 */ addu $t3,$t2,$at -/* f17676c: ae2b0004 */ sw $t3,0x4($s1) -/* f176770: 26100008 */ addiu $s0,$s0,0x8 -/* f176774: 3c0ced00 */ lui $t4,0xed00 -/* f176778: 3c0d0050 */ lui $t5,0x50 -/* f17677c: 35ad03c0 */ ori $t5,$t5,0x3c0 -/* f176780: ac6c0000 */ sw $t4,0x0($v1) -/* f176784: 02002025 */ or $a0,$s0,$zero -/* f176788: ac6d0004 */ sw $t5,0x4($v1) -/* f17678c: 26100008 */ addiu $s0,$s0,0x8 -/* f176790: 3c0eba00 */ lui $t6,0xba00 -/* f176794: 35ce1402 */ ori $t6,$t6,0x1402 -/* f176798: 3c0f0020 */ lui $t7,0x20 -/* f17679c: 02002825 */ or $a1,$s0,$zero -/* f1767a0: ac8f0004 */ sw $t7,0x4($a0) -/* f1767a4: ac8e0000 */ sw $t6,0x0($a0) -/* f1767a8: 26100008 */ addiu $s0,$s0,0x8 -/* f1767ac: 3c190500 */ lui $t9,0x500 -/* f1767b0: 3c18f510 */ lui $t8,0xf510 -/* f1767b4: 02003025 */ or $a2,$s0,$zero -/* f1767b8: acb80000 */ sw $t8,0x0($a1) -/* f1767bc: acb90004 */ sw $t9,0x4($a1) -/* f1767c0: 3c08f510 */ lui $t0,0xf510 -/* f1767c4: 35080080 */ ori $t0,$t0,0x80 -/* f1767c8: 26100008 */ addiu $s0,$s0,0x8 -/* f1767cc: 3c090400 */ lui $t1,0x400 -/* f1767d0: acc90004 */ sw $t1,0x4($a2) -/* f1767d4: acc80000 */ sw $t0,0x0($a2) -/* f1767d8: 02001025 */ or $v0,$s0,$zero -/* f1767dc: 26100008 */ addiu $s0,$s0,0x8 -/* f1767e0: 3c0af511 */ lui $t2,0xf511 -/* f1767e4: 354a4000 */ ori $t2,$t2,0x4000 -/* f1767e8: 02001825 */ or $v1,$s0,$zero -/* f1767ec: ac4a0000 */ sw $t2,0x0($v0) -/* f1767f0: ac400004 */ sw $zero,0x4($v0) -/* f1767f4: 26100008 */ addiu $s0,$s0,0x8 -/* f1767f8: 3c0c0100 */ lui $t4,0x100 -/* f1767fc: 3c0bf589 */ lui $t3,0xf589 -/* f176800: 356b4080 */ ori $t3,$t3,0x4080 -/* f176804: 358c000f */ ori $t4,$t4,0xf -/* f176808: 02002025 */ or $a0,$s0,$zero -/* f17680c: ac6c0004 */ sw $t4,0x4($v1) -/* f176810: ac6b0000 */ sw $t3,0x0($v1) -/* f176814: 26100008 */ addiu $s0,$s0,0x8 -/* f176818: 3c0dbb00 */ lui $t5,0xbb00 -/* f17681c: 2407ffff */ addiu $a3,$zero,-1 -/* f176820: 35ad0001 */ ori $t5,$t5,0x1 -/* f176824: 02002825 */ or $a1,$s0,$zero -/* f176828: ac8d0000 */ sw $t5,0x0($a0) -/* f17682c: ac870004 */ sw $a3,0x4($a0) -/* f176830: 26100008 */ addiu $s0,$s0,0x8 -/* f176834: 3c0efb00 */ lui $t6,0xfb00 -/* f176838: acae0000 */ sw $t6,0x0($a1) -/* f17683c: aca70004 */ sw $a3,0x4($a1) -/* f176840: 02003025 */ or $a2,$s0,$zero -/* f176844: 26100008 */ addiu $s0,$s0,0x8 -/* f176848: 3c0ffa00 */ lui $t7,0xfa00 -/* f17684c: 02001025 */ or $v0,$s0,$zero -/* f176850: accf0000 */ sw $t7,0x0($a2) -/* f176854: acc70004 */ sw $a3,0x4($a2) -/* f176858: 26100008 */ addiu $s0,$s0,0x8 -/* f17685c: 3c18b900 */ lui $t8,0xb900 -/* f176860: 3718031d */ ori $t8,$t8,0x31d -/* f176864: 02001825 */ or $v1,$s0,$zero -/* f176868: ac580000 */ sw $t8,0x0($v0) -/* f17686c: ac400004 */ sw $zero,0x4($v0) -/* f176870: 26100008 */ addiu $s0,$s0,0x8 -/* f176874: 3c08fffc */ lui $t0,0xfffc -/* f176878: 3c19fcff */ lui $t9,0xfcff -/* f17687c: 3739ffff */ ori $t9,$t9,0xffff -/* f176880: 3508f279 */ ori $t0,$t0,0xf279 -/* f176884: 02002025 */ or $a0,$s0,$zero -/* f176888: ac680004 */ sw $t0,0x4($v1) -/* f17688c: ac790000 */ sw $t9,0x0($v1) -/* f176890: 3c09ba00 */ lui $t1,0xba00 -/* f176894: 35290c02 */ ori $t1,$t1,0xc02 -/* f176898: 26100008 */ addiu $s0,$s0,0x8 -/* f17689c: ac890000 */ sw $t1,0x0($a0) -/* f1768a0: ac800004 */ sw $zero,0x4($a0) -/* f1768a4: 02002825 */ or $a1,$s0,$zero -/* f1768a8: 26100008 */ addiu $s0,$s0,0x8 -/* f1768ac: 3c0aba00 */ lui $t2,0xba00 -/* f1768b0: 354a1301 */ ori $t2,$t2,0x1301 -/* f1768b4: 02003025 */ or $a2,$s0,$zero -/* f1768b8: acaa0000 */ sw $t2,0x0($a1) -/* f1768bc: aca00004 */ sw $zero,0x4($a1) -/* f1768c0: 26100008 */ addiu $s0,$s0,0x8 -/* f1768c4: 3c0bba00 */ lui $t3,0xba00 -/* f1768c8: 356b0602 */ ori $t3,$t3,0x602 -/* f1768cc: 240c00c0 */ addiu $t4,$zero,0xc0 -/* f1768d0: 02001025 */ or $v0,$s0,$zero -/* f1768d4: accc0004 */ sw $t4,0x4($a2) -/* f1768d8: accb0000 */ sw $t3,0x0($a2) -/* f1768dc: 26100008 */ addiu $s0,$s0,0x8 -/* f1768e0: 3c0dba00 */ lui $t5,0xba00 -/* f1768e4: 35ad0402 */ ori $t5,$t5,0x402 -/* f1768e8: 240e0030 */ addiu $t6,$zero,0x30 -/* f1768ec: 02001825 */ or $v1,$s0,$zero -/* f1768f0: ac4e0004 */ sw $t6,0x4($v0) -/* f1768f4: ac4d0000 */ sw $t5,0x0($v0) -/* f1768f8: 3c0fba00 */ lui $t7,0xba00 -/* f1768fc: 35ef1001 */ ori $t7,$t7,0x1001 -/* f176900: 26100008 */ addiu $s0,$s0,0x8 -/* f176904: ac6f0000 */ sw $t7,0x0($v1) -/* f176908: ac600004 */ sw $zero,0x4($v1) -/* f17690c: 02002025 */ or $a0,$s0,$zero -/* f176910: 26100008 */ addiu $s0,$s0,0x8 -/* f176914: 3c18ba00 */ lui $t8,0xba00 -/* f176918: 37181102 */ ori $t8,$t8,0x1102 -/* f17691c: 02002825 */ or $a1,$s0,$zero -/* f176920: ac980000 */ sw $t8,0x0($a0) -/* f176924: ac800004 */ sw $zero,0x4($a0) -/* f176928: 26100008 */ addiu $s0,$s0,0x8 -/* f17692c: 3c19ba00 */ lui $t9,0xba00 -/* f176930: 37390e02 */ ori $t9,$t9,0xe02 -/* f176934: 02003025 */ or $a2,$s0,$zero -/* f176938: acb90000 */ sw $t9,0x0($a1) -/* f17693c: aca00004 */ sw $zero,0x4($a1) -/* f176940: 26100008 */ addiu $s0,$s0,0x8 -/* f176944: 3c08b900 */ lui $t0,0xb900 -/* f176948: 35080002 */ ori $t0,$t0,0x2 -/* f17694c: 02001025 */ or $v0,$s0,$zero -/* f176950: acc80000 */ sw $t0,0x0($a2) -/* f176954: acc00004 */ sw $zero,0x4($a2) -/* f176958: 26100008 */ addiu $s0,$s0,0x8 -/* f17695c: 240a0001 */ addiu $t2,$zero,0x1 -/* f176960: 3c09b600 */ lui $t1,0xb600 -/* f176964: 02001825 */ or $v1,$s0,$zero -/* f176968: ac490000 */ sw $t1,0x0($v0) -/* f17696c: ac4a0004 */ sw $t2,0x4($v0) -/* f176970: 3c0be800 */ lui $t3,0xe800 -/* f176974: 3c1efd10 */ lui $s8,0xfd10 -/* f176978: ac6b0000 */ sw $t3,0x0($v1) -/* f17697c: ac600004 */ sw $zero,0x4($v1) -/* f176980: 26100008 */ addiu $s0,$s0,0x8 -/* f176984: 37de013f */ ori $s8,$s8,0x13f -/* f176988: 02408825 */ or $s1,$s2,$zero -/* f17698c: 0000a825 */ or $s5,$zero,$zero -/* f176990: 3c17e600 */ lui $s7,0xe600 -.L0f176994: -/* f176994: 962c0000 */ lhu $t4,0x0($s1) -/* f176998: 8fae0044 */ lw $t6,0x44($sp) -/* f17699c: 1180004a */ beqz $t4,.L0f176ac8 -/* f1769a0: 00146840 */ sll $t5,$s4,0x1 -/* f1769a4: 0c002f02 */ jal viGetWidth -/* f1769a8: 01ae9021 */ addu $s2,$t5,$t6 -/* f1769ac: 962f000c */ lhu $t7,0xc($s1) -/* f1769b0: 8fa8004c */ lw $t0,0x4c($sp) -/* f1769b4: 02001825 */ or $v1,$s0,$zero -/* f1769b8: 004f0019 */ multu $v0,$t7 -/* f1769bc: 26100008 */ addiu $s0,$s0,0x8 -/* f1769c0: 02002025 */ or $a0,$s0,$zero -/* f1769c4: ac760000 */ sw $s6,0x0($v1) -/* f1769c8: ac600004 */ sw $zero,0x4($v1) -/* f1769cc: 26100008 */ addiu $s0,$s0,0x8 -/* f1769d0: 02002825 */ or $a1,$s0,$zero -/* f1769d4: ac9e0000 */ sw $s8,0x0($a0) -/* f1769d8: 26100008 */ addiu $s0,$s0,0x8 -/* f1769dc: 02009825 */ or $s3,$s0,$zero -/* f1769e0: 0000c012 */ mflo $t8 -/* f1769e4: 0018c840 */ sll $t9,$t8,0x1 -/* f1769e8: 03283021 */ addu $a2,$t9,$t0 -/* f1769ec: ac860004 */ sw $a2,0x4($a0) -/* f1769f0: aca00004 */ sw $zero,0x4($a1) -/* f1769f4: acb70000 */ sw $s7,0x0($a1) -/* f1769f8: 3c09f300 */ lui $t1,0xf300 -/* f1769fc: ae690000 */ sw $t1,0x0($s3) -/* f176a00: 0c002f02 */ jal viGetWidth -/* f176a04: 26100008 */ addiu $s0,$s0,0x8 -/* f176a08: 244affff */ addiu $t2,$v0,-1 -/* f176a0c: 294107ff */ slti $at,$t2,0x7ff -/* f176a10: 10200005 */ beqz $at,.L0f176a28 -/* f176a14: 240507ff */ addiu $a1,$zero,0x7ff -/* f176a18: 0c002f02 */ jal viGetWidth -/* f176a1c: 00000000 */ nop -/* f176a20: 10000001 */ b .L0f176a28 -/* f176a24: 2445ffff */ addiu $a1,$v0,-1 -.L0f176a28: -/* f176a28: 30ab0fff */ andi $t3,$a1,0xfff -/* f176a2c: 000b6300 */ sll $t4,$t3,0xc -/* f176a30: 3c010500 */ lui $at,0x500 -/* f176a34: 01816825 */ or $t5,$t4,$at -/* f176a38: 02001025 */ or $v0,$s0,$zero -/* f176a3c: 268e0003 */ addiu $t6,$s4,0x3 -/* f176a40: ae6d0004 */ sw $t5,0x4($s3) -/* f176a44: 26100008 */ addiu $s0,$s0,0x8 -/* f176a48: 000e7880 */ sll $t7,$t6,0x2 -/* f176a4c: 31f80fff */ andi $t8,$t7,0xfff -/* f176a50: 02001825 */ or $v1,$s0,$zero -/* f176a54: 00144880 */ sll $t1,$s4,0x2 -/* f176a58: ac400004 */ sw $zero,0x4($v0) -/* f176a5c: ac560000 */ sw $s6,0x0($v0) -/* f176a60: 312a0fff */ andi $t2,$t1,0xfff -/* f176a64: 0018cb00 */ sll $t9,$t8,0xc -/* f176a68: 3c01e400 */ lui $at,0xe400 -/* f176a6c: 03214025 */ or $t0,$t9,$at -/* f176a70: 000a5b00 */ sll $t3,$t2,0xc -/* f176a74: 26100008 */ addiu $s0,$s0,0x8 -/* f176a78: 02002025 */ or $a0,$s0,$zero -/* f176a7c: ac6b0004 */ sw $t3,0x4($v1) -/* f176a80: ac680000 */ sw $t0,0x0($v1) -/* f176a84: 3c0cb400 */ lui $t4,0xb400 -/* f176a88: ac8c0000 */ sw $t4,0x0($a0) -/* f176a8c: 962d000e */ lhu $t5,0xe($s1) -/* f176a90: 26100008 */ addiu $s0,$s0,0x8 -/* f176a94: 02003025 */ or $a2,$s0,$zero -/* f176a98: 000d7140 */ sll $t6,$t5,0x5 -/* f176a9c: 25d80010 */ addiu $t8,$t6,0x10 -/* f176aa0: 0018cc00 */ sll $t9,$t8,0x10 -/* f176aa4: 37280010 */ ori $t0,$t9,0x10 -/* f176aa8: ac880004 */ sw $t0,0x4($a0) -/* f176aac: 3c0a1000 */ lui $t2,0x1000 -/* f176ab0: 3c09b300 */ lui $t1,0xb300 -/* f176ab4: acc90000 */ sw $t1,0x0($a2) -/* f176ab8: acca0004 */ sw $t2,0x4($a2) -/* f176abc: 26100008 */ addiu $s0,$s0,0x8 -/* f176ac0: ae32000c */ sw $s2,0xc($s1) -/* f176ac4: 26940001 */ addiu $s4,$s4,0x1 -.L0f176ac8: -/* f176ac8: 26b50014 */ addiu $s5,$s5,0x14 -/* f176acc: 24010960 */ addiu $at,$zero,0x960 -/* f176ad0: 16a1ffb0 */ bne $s5,$at,.L0f176994 -/* f176ad4: 26310014 */ addiu $s1,$s1,0x14 -/* f176ad8: 02001025 */ or $v0,$s0,$zero -/* f176adc: 26100008 */ addiu $s0,$s0,0x8 -/* f176ae0: 02001825 */ or $v1,$s0,$zero -/* f176ae4: 26100008 */ addiu $s0,$s0,0x8 -/* f176ae8: ac560000 */ sw $s6,0x0($v0) -/* f176aec: ac400004 */ sw $zero,0x4($v0) -/* f176af0: 02002025 */ or $a0,$s0,$zero -/* f176af4: 26100008 */ addiu $s0,$s0,0x8 -/* f176af8: ac600004 */ sw $zero,0x4($v1) -/* f176afc: ac770000 */ sw $s7,0x0($v1) -/* f176b00: 3c0be800 */ lui $t3,0xe800 -/* f176b04: 02008825 */ or $s1,$s0,$zero -/* f176b08: ac8b0000 */ sw $t3,0x0($a0) -/* f176b0c: ac800004 */ sw $zero,0x4($a0) -/* f176b10: 0c002ef1 */ jal viGetBufWidth -/* f176b14: 26100008 */ addiu $s0,$s0,0x8 -/* f176b18: 244cffff */ addiu $t4,$v0,-1 -/* f176b1c: 318d0fff */ andi $t5,$t4,0xfff -/* f176b20: 3c01ff10 */ lui $at,0xff10 -/* f176b24: 01a17025 */ or $t6,$t5,$at -/* f176b28: 0c002ac7 */ jal viGetBackBuffer -/* f176b2c: ae2e0000 */ sw $t6,0x0($s1) -/* f176b30: 3c018000 */ lui $at,0x8000 -/* f176b34: 00417821 */ addu $t7,$v0,$at -/* f176b38: ae2f0004 */ sw $t7,0x4($s1) -/* f176b3c: 02009025 */ or $s2,$s0,$zero -/* f176b40: 3c18ed00 */ lui $t8,0xed00 -/* f176b44: ae580000 */ sw $t8,0x0($s2) -/* f176b48: 0c002f02 */ jal viGetWidth -/* f176b4c: 26100008 */ addiu $s0,$s0,0x8 -/* f176b50: 00028c00 */ sll $s1,$v0,0x10 -/* f176b54: 0011cc03 */ sra $t9,$s1,0x10 -/* f176b58: 0c002f06 */ jal viGetHeight -/* f176b5c: 03208825 */ or $s1,$t9,$zero -/* f176b60: 44822000 */ mtc1 $v0,$f4 -/* f176b64: 44918000 */ mtc1 $s1,$f16 -/* f176b68: 3c014080 */ lui $at,0x4080 -/* f176b6c: 468021a0 */ cvt.s.w $f6,$f4 -/* f176b70: 44810000 */ mtc1 $at,$f0 -/* f176b74: 02001825 */ or $v1,$s0,$zero -/* f176b78: 26100008 */ addiu $s0,$s0,0x8 -/* f176b7c: 3c18b700 */ lui $t8,0xb700 -/* f176b80: 468084a0 */ cvt.s.w $f18,$f16 -/* f176b84: 46003202 */ mul.s $f8,$f6,$f0 -/* f176b88: 24190001 */ addiu $t9,$zero,0x1 -/* f176b8c: 02002025 */ or $a0,$s0,$zero -/* f176b90: 26100008 */ addiu $s0,$s0,0x8 -/* f176b94: 3c08ba00 */ lui $t0,0xba00 -/* f176b98: 46009102 */ mul.s $f4,$f18,$f0 -/* f176b9c: 35080c02 */ ori $t0,$t0,0xc02 -/* f176ba0: 02002825 */ or $a1,$s0,$zero -/* f176ba4: 3c0bba00 */ lui $t3,0xba00 -/* f176ba8: 356b1301 */ ori $t3,$t3,0x1301 -/* f176bac: 26100008 */ addiu $s0,$s0,0x8 -/* f176bb0: 4600428d */ trunc.w.s $f10,$f8 -/* f176bb4: 02003025 */ or $a2,$s0,$zero -/* f176bb8: 26020008 */ addiu $v0,$s0,0x8 -/* f176bbc: 4600218d */ trunc.w.s $f6,$f4 -/* f176bc0: 44095000 */ mfc1 $t1,$f10 -/* f176bc4: 440c3000 */ mfc1 $t4,$f6 -/* f176bc8: 312a0fff */ andi $t2,$t1,0xfff -/* f176bcc: 24092000 */ addiu $t1,$zero,0x2000 -/* f176bd0: 318d0fff */ andi $t5,$t4,0xfff -/* f176bd4: 000d7300 */ sll $t6,$t5,0xc -/* f176bd8: 014e7825 */ or $t7,$t2,$t6 -/* f176bdc: ae4f0004 */ sw $t7,0x4($s2) -/* f176be0: ac790004 */ sw $t9,0x4($v1) -/* f176be4: ac780000 */ sw $t8,0x0($v1) -/* f176be8: ac890004 */ sw $t1,0x4($a0) -/* f176bec: ac880000 */ sw $t0,0x0($a0) -/* f176bf0: 3c0c0008 */ lui $t4,0x8 -/* f176bf4: acac0004 */ sw $t4,0x4($a1) -/* f176bf8: acab0000 */ sw $t3,0x0($a1) -/* f176bfc: 3c0dba00 */ lui $t5,0xba00 -/* f176c00: 35ad0602 */ ori $t5,$t5,0x602 -/* f176c04: 240a0040 */ addiu $t2,$zero,0x40 -/* f176c08: acca0004 */ sw $t2,0x4($a2) -/* f176c0c: accd0000 */ sw $t5,0x0($a2) -/* f176c10: 8fbf003c */ lw $ra,0x3c($sp) -/* f176c14: 8fbe0038 */ lw $s8,0x38($sp) -/* f176c18: 8fb70034 */ lw $s7,0x34($sp) -/* f176c1c: 8fb60030 */ lw $s6,0x30($sp) -/* f176c20: 8fb5002c */ lw $s5,0x2c($sp) -/* f176c24: 8fb40028 */ lw $s4,0x28($sp) -/* f176c28: 8fb30024 */ lw $s3,0x24($sp) -/* f176c2c: 8fb20020 */ lw $s2,0x20($sp) -/* f176c30: 8fb1001c */ lw $s1,0x1c($sp) -/* f176c34: 8fb00018 */ lw $s0,0x18($sp) -/* f176c38: 03e00008 */ jr $ra -/* f176c3c: 27bd0058 */ addiu $sp,$sp,0x58 -); +Gfx *mblurRender(Gfx *gdl) +{ + struct bootbufferthing *thing = bbufGetIndex0Buffer(); + u32 stack; + u16 *sp4c = var800844f0; + u32 s4 = 0; + u16 *sp44; + u16 *s2; + u16 *image; + s32 i; -// Mismatch: Need to know more about the stack variables and -// bootbufferthingdeep->unk0c. -//Gfx *func0f1766b4(Gfx *gdl) -//{ -// struct bootbufferthing *thing = bbufGetIndex0Buffer(); -// u32 sp4c = (u32) var800844f0; -// s32 s4 = 0; -// u32 sp44; -// s32 i; -// -// viGetBackBuffer(); -// sp44 = (u32)func0f176668(g_BootBufferIndex0); -// g_BootBufferDirtyIndexes[g_BootBufferIndex0] = 1; -// -// gDPPipeSync(gdl++); -// gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, viGetBufWidth(), OS_PHYSICAL_TO_K0(sp44)); -// gDPSetScissor(gdl++, G_SC_NON_INTERLACE, 0, 0, 320, 240); -// gDPSetCycleType(gdl++, G_CYC_COPY); -// gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 5, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); -// gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0080, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); -// gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 160, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); -// gDPSetTile(gdl++, G_IM_FMT_I, G_IM_SIZ_8b, 160, 0x0080, 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, 15); -// gSPTexture(gdl++, 0xffff, 0xffff, 0, G_TX_RENDERTILE, G_ON); -// gDPSetEnvColor(gdl++, 0xff, 0xff, 0xff, 0xff); -// gDPSetPrimColor(gdl++, 0, 0, 0xff, 0xff, 0xff, 0xff); -// gDPSetRenderMode(gdl++, G_RM_NOOP, G_RM_NOOP2); -// gDPSetCombineMode(gdl++, G_CC_DECALRGBA, G_CC_DECALRGBA); -// gDPSetTextureFilter(gdl++, G_TF_POINT); -// gDPSetTexturePersp(gdl++, G_TP_NONE); -// gDPSetColorDither(gdl++, G_CD_DISABLE); -// gDPSetAlphaDither(gdl++, G_AD_DISABLE); -// gDPSetTextureLOD(gdl++, G_TL_TILE); -// gDPSetTextureDetail(gdl++, G_TD_CLAMP); -// gDPSetTextureLUT(gdl++, G_TT_NONE); -// gDPSetAlphaCompare(gdl++, G_AC_NONE); -// gSPClearGeometryMode(gdl++, G_ZBUFFER); -// gDPTileSync(gdl++); -// -// for (i = 0; i < 120; i++) { -// if (thing->unk00[i].unk00) { -// u32 tmp = viGetWidth() * thing->unk00[i].unk0c.u16_1 * 2 + sp4c; -// -// gDPPipeSync(gdl++); -// gDPSetTextureImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, tmp); -// gDPLoadSync(gdl++); -// gDPLoadBlock(gdl++, 5, 0, 0, viGetWidth() - 1, 0); -// gDPPipeSync(gdl++); -// -// gSPTextureRectangle(gdl++, -// s4 << 2, 0, -// (s4 + 3) << 2, 0, -// G_TX_RENDERTILE, (thing->unk00[i].unk0c.u16_2 * 32) + 16, 0x0010, 0x1000, 0); -// -// // Note: s4 should have * 2 in the following expression, -// // but this produces a shifted codegen. -// thing->unk00[i].unk0c.u16p = (u16 *)(s4 + sp44); -// s4++; -// } -// } -// -// gDPPipeSync(gdl++); -// gDPLoadSync(gdl++); -// gDPTileSync(gdl++); -// gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, viGetBufWidth(), OS_PHYSICAL_TO_K0(viGetBackBuffer())); -// gDPSetScissorFrac(gdl++, G_SC_NON_INTERLACE, 0, 0, viGetWidth() * 4.0f, viGetHeight() * 4.0f); -// gSPSetGeometryMode(gdl++, G_ZBUFFER); -// gDPSetTextureFilter(gdl++, G_TF_BILERP); -// gDPSetTexturePersp(gdl++, G_TP_PERSP); -// gDPSetColorDither(gdl++, G_CD_BAYER); -// -// return gdl; -//} + viGetBackBuffer(); + sp44 = mblur0f176668(g_BootBufferIndex0); + g_BootBufferDirtyIndexes[g_BootBufferIndex0] = 1; + + gDPPipeSync(gdl++); + gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, viGetBufWidth(), OS_PHYSICAL_TO_K0(sp44)); + gDPSetScissor(gdl++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + gDPSetCycleType(gdl++, G_CYC_COPY); + gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 5, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0080, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 160, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTile(gdl++, G_IM_FMT_I, G_IM_SIZ_8b, 160, 0x0080, 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, 15); + gSPTexture(gdl++, 0xffff, 0xffff, 0, G_TX_RENDERTILE, G_ON); + gDPSetEnvColor(gdl++, 0xff, 0xff, 0xff, 0xff); + gDPSetPrimColor(gdl++, 0, 0, 0xff, 0xff, 0xff, 0xff); + gDPSetRenderMode(gdl++, G_RM_NOOP, G_RM_NOOP2); + gDPSetCombineMode(gdl++, G_CC_DECALRGBA, G_CC_DECALRGBA); + gDPSetTextureFilter(gdl++, G_TF_POINT); + gDPSetTexturePersp(gdl++, G_TP_NONE); + gDPSetColorDither(gdl++, G_CD_DISABLE); + gDPSetAlphaDither(gdl++, G_AD_DISABLE); + gDPSetTextureLOD(gdl++, G_TL_TILE); + gDPSetTextureDetail(gdl++, G_TD_CLAMP); + gDPSetTextureLUT(gdl++, G_TT_NONE); + gDPSetAlphaCompare(gdl++, G_AC_NONE); + gSPClearGeometryMode(gdl++, G_ZBUFFER); + gDPTileSync(gdl++); + + for (i = 0; i < 120; i++) { + if (1); + + if (thing->unk00[0].unk00[i].unk00) { + s2 = &sp44[s4]; + image = &sp4c[thing->unk00[0].unk00[i].unk0c.u16_1 * viGetWidth()]; + + gDPPipeSync(gdl++); + gDPSetTextureImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, image); + gDPLoadSync(gdl++); + gDPLoadBlock(gdl++, 5, 0, 0, viGetWidth() - 1, 0); + gDPPipeSync(gdl++); + + gSPTextureRectangle(gdl++, + s4 << 2, 0, + (s4 + 3) << 2, 0, + G_TX_RENDERTILE, (thing->unk00[0].unk00[i].unk0c.u16_2 * 32) + 16, 0x0010, 0x1000, 0); + + thing->unk00[0].unk00[i].unk0c.u16p = s2; + s4++; + + if (s2); + } + } + + gDPPipeSync(gdl++); + gDPLoadSync(gdl++); + gDPTileSync(gdl++); + gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, viGetBufWidth(), OS_PHYSICAL_TO_K0(viGetBackBuffer())); + gDPSetScissorFrac(gdl++, G_SC_NON_INTERLACE, 0, 0, viGetWidth() * 4.0f, viGetHeight() * 4.0f); + gSPSetGeometryMode(gdl++, G_ZBUFFER); + gDPSetTextureFilter(gdl++, G_TF_BILERP); + gDPSetTexturePersp(gdl++, G_TP_PERSP); + gDPSetColorDither(gdl++, G_CD_BAYER); + + if (sp44); + + return gdl; +} diff --git a/src/game/lv.c b/src/game/lv.c index ef099d2b4..76ff7c65b 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -1136,7 +1136,7 @@ Gfx *lvRender(Gfx *gdl) g_Vars.currentplayer->viewwidth, g_Vars.currentplayer->viewheight); mtx00016748(g_Vars.currentplayerstats->scale_bg2gfx); env0f1657f8(); - func0f176298(); + mblur0f176298(); gdl = vi0000b280(gdl); gdl = vi0000b1d0(gdl); gdl = currentPlayerScissorToViewport(gdl); diff --git a/src/include/game/game_176080.h b/src/include/game/game_176080.h index 4e3875ad7..19c5c85fd 100644 --- a/src/include/game/game_176080.h +++ b/src/include/game/game_176080.h @@ -4,13 +4,12 @@ #include "data.h" #include "types.h" -void *func0f176080(void); -void func0f17608c(s32 stagenum); -void func0f1760c4(void); -void func0f176298(void); -Gfx *func0f1762ac(Gfx *gdl); -Gfx *func0f1763f4(Gfx *gdl); -void *func0f176668(s32 arg0); -Gfx *func0f1766b4(Gfx *gdl); +void *mblurGetAllocation(void); +void mblurReset(s32 stagenum); +void mblurAllocate(void); +void mblur0f176298(void); +Gfx *mblur0f1762ac(Gfx *gdl); +Gfx *mblur0f1763f4(Gfx *gdl); +Gfx *mblurRender(Gfx *gdl); #endif diff --git a/src/lib/main.c b/src/lib/main.c index c2f8abcb7..5d275e999 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -2753,7 +2753,7 @@ void mainLoop(void) gfxReset(); joyReset(); dhudReset(); - func0f17608c(g_StageNum); + mblurReset(g_StageNum); lvReset(g_StageNum); viReset(g_StageNum); frametimeCalculate(); @@ -3292,7 +3292,7 @@ glabel mainLoop /* e718: 0c005049 */ jal dhudReset /* e71c: 00000000 */ sll $zero,$zero,0x0 /* e720: 3c048006 */ lui $a0,0x8006 -/* e724: 0fc5c34b */ jal func0f17608c +/* e724: 0fc5c34b */ jal mblurReset /* e728: 8c84f2d4 */ lw $a0,-0xd2c($a0) /* e72c: 3c048006 */ lui $a0,0x8006 /* e730: 0fc589ee */ jal lvReset diff --git a/src/lib/vi.c b/src/lib/vi.c index 14f23287e..27477cbf9 100644 --- a/src/lib/vi.c +++ b/src/lib/vi.c @@ -2503,8 +2503,8 @@ Gfx *vi0000b1d0(Gfx *gdl) Gfx *vi0000b280(Gfx *gdl) { if (g_ViBackData->usezbuf) { - gdl = func0f1762ac(gdl); - gdl = func0f1763f4(gdl); + gdl = mblur0f1762ac(gdl); + gdl = mblur0f1763f4(gdl); } return gdl;