From 440e734fe0a143aea6361f299a1d2c0baa4a8776 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 14 Dec 2020 23:23:14 +1000 Subject: [PATCH] Decompile hudRenderHorizonScanner --- src/game/game_141820.c | 947 ++++++++------------------------- src/include/game/game_005fd0.h | 2 +- 2 files changed, 211 insertions(+), 738 deletions(-) diff --git a/src/game/game_141820.c b/src/game/game_141820.c index c59b368ae..31f1ba8af 100644 --- a/src/game/game_141820.c +++ b/src/game/game_141820.c @@ -7631,731 +7631,217 @@ Gfx *func0f147cf8(Gfx *gdl) return gdl; } -const char var7f1b5eb4[] = "BinocularViewGfx"; -const char var7f1b5ec8[] = ">> "; -const char var7f1b5ecc[] = " >>"; -const char var7f1b5ed0[] = "%s %s:%03d"; -const char var7f1b5edc[] = "%s %s%s%4.2fh"; -const char var7f1b5eec[] = ""; -const char var7f1b5ef0[] = ""; -const char var7f1b5ef4[] = "%s %s%s%4.2fX"; -const char var7f1b5f04[] = ""; -const char var7f1b5f08[] = ""; -const char var7f1b5f0c[] = " JMBC"; -const char var7f1b5f14[] = " WIDE BAND"; -const char var7f1b5f20[] = " SCANNER\n"; +u32 var8007f870 = 0x000003e8; +u32 var8007f874 = 0x000003e8; +u32 var8007f878 = 0x00000000; -GLOBAL_ASM( -glabel hudRenderHorizonScanner -.late_rodata -glabel var7f1b5f5c -.word 0x40490fdb -glabel var7f1b5f60 -.word 0x40933333 -glabel var7f1b5f64 -.word 0x4465599a -.text -/* f147e24: 27bdfe68 */ addiu $sp,$sp,-408 -/* f147e28: afbf0054 */ sw $ra,0x54($sp) -/* f147e2c: afb20050 */ sw $s2,0x50($sp) -/* f147e30: 00809025 */ or $s2,$a0,$zero -/* f147e34: afb1004c */ sw $s1,0x4c($sp) -/* f147e38: afb00048 */ sw $s0,0x48($sp) -/* f147e3c: f7b60040 */ sdc1 $f22,0x40($sp) -/* f147e40: 0c002ac7 */ jal viGetUnk28 -/* f147e44: f7b40038 */ sdc1 $f20,0x38($sp) -/* f147e48: 0c002f44 */ jal viGetViewTop -/* f147e4c: afa20194 */ sw $v0,0x194($sp) -/* f147e50: 0c002f26 */ jal viGetViewY -/* f147e54: afa20190 */ sw $v0,0x190($sp) -/* f147e58: 0c002f22 */ jal viGetViewX -/* f147e5c: afa2018c */ sw $v0,0x18c($sp) -/* f147e60: 0c002f40 */ jal viGetViewLeft -/* f147e64: afa20188 */ sw $v0,0x188($sp) -/* f147e68: 3c10800a */ lui $s0,%hi(g_Vars) -/* f147e6c: 26109fc0 */ addiu $s0,$s0,%lo(g_Vars) -/* f147e70: 8e030284 */ lw $v1,0x284($s0) -/* f147e74: afa20184 */ sw $v0,0x184($sp) -/* f147e78: 3c0f8008 */ lui $t7,%hi(var8007f87c) -/* f147e7c: 25eff87c */ addiu $t7,$t7,%lo(var8007f87c) -/* f147e80: 8de10000 */ lw $at,0x0($t7) -/* f147e84: 8de90004 */ lw $t1,0x4($t7) -/* f147e88: c4601bbc */ lwc1 $f0,0x1bbc($v1) -/* f147e8c: 27ae00d4 */ addiu $t6,$sp,0xd4 -/* f147e90: c46e1bc4 */ lwc1 $f14,0x1bc4($v1) -/* f147e94: adc10000 */ sw $at,0x0($t6) -/* f147e98: 8de10008 */ lw $at,0x8($t7) -/* f147e9c: adc90004 */ sw $t1,0x4($t6) -/* f147ea0: 8de9000c */ lw $t1,0xc($t7) -/* f147ea4: adc10008 */ sw $at,0x8($t6) -/* f147ea8: 8de10010 */ lw $at,0x10($t7) -/* f147eac: adc9000c */ sw $t1,0xc($t6) -/* f147eb0: 8de90014 */ lw $t1,0x14($t7) -/* f147eb4: adc10010 */ sw $at,0x10($t6) -/* f147eb8: 99e1001a */ lwr $at,0x1a($t7) -/* f147ebc: adc90014 */ sw $t1,0x14($t6) -/* f147ec0: 46000307 */ neg.s $f12,$f0 -/* f147ec4: 0fc259d4 */ jal func0f096750 -/* f147ec8: b9c1001a */ swr $at,0x1a($t6) -/* f147ecc: 3c014334 */ lui $at,0x4334 -/* f147ed0: 44812000 */ mtc1 $at,$f4 -/* f147ed4: 3c017f1b */ lui $at,%hi(var7f1b5f5c) -/* f147ed8: c4285f5c */ lwc1 $f8,%lo(var7f1b5f5c)($at) -/* f147edc: 46040182 */ mul.s $f6,$f0,$f4 -/* f147ee0: 3c028008 */ lui $v0,%hi(var8007f840) -/* f147ee4: 2442f840 */ addiu $v0,$v0,%lo(var8007f840) -/* f147ee8: 8c4d0000 */ lw $t5,0x0($v0) -/* f147eec: 240c0001 */ addiu $t4,$zero,0x1 -/* f147ef0: 3c04800a */ lui $a0,%hi(var800a41c0) -/* f147ef4: 25b90001 */ addiu $t9,$t5,0x1 -/* f147ef8: 46083283 */ div.s $f10,$f6,$f8 -/* f147efc: 2b210002 */ slti $at,$t9,0x2 -/* f147f00: 24110082 */ addiu $s1,$zero,0x82 -/* f147f04: afac00ac */ sw $t4,0xac($sp) -/* f147f08: afa000a8 */ sw $zero,0xa8($sp) -/* f147f0c: ac590000 */ sw $t9,0x0($v0) -/* f147f10: 248441c0 */ addiu $a0,$a0,%lo(var800a41c0) -/* f147f14: 3c057f1b */ lui $a1,%hi(var7f1b5eb4) -/* f147f18: 4600540d */ trunc.w.s $f16,$f10 -/* f147f1c: 440b8000 */ mfc1 $t3,$f16 -/* f147f20: 14200003 */ bnez $at,.L0f147f30 -/* f147f24: afab00d0 */ sw $t3,0xd0($sp) -/* f147f28: 10000248 */ b .L0f14884c -/* f147f2c: 02401025 */ or $v0,$s2,$zero -.L0f147f30: -/* f147f30: 0c004c4c */ jal strcpy -/* f147f34: 24a55eb4 */ addiu $a1,$a1,%lo(var7f1b5eb4) -/* f147f38: 3c0e8007 */ lui $t6,%hi(g_HiResActive) -/* f147f3c: 8dce06c8 */ lw $t6,%lo(g_HiResActive)($t6) -/* f147f40: 24060001 */ addiu $a2,$zero,0x1 -/* f147f44: 14ce0002 */ bne $a2,$t6,.L0f147f50 -/* f147f48: 240f0002 */ addiu $t7,$zero,0x2 -/* f147f4c: afaf00ac */ sw $t7,0xac($sp) -.L0f147f50: -/* f147f50: 0fc54bcd */ jal optionsGetScreenSplit -/* f147f54: 00000000 */ nop -/* f147f58: 24060001 */ addiu $a2,$zero,0x1 -/* f147f5c: 54c20020 */ bnel $a2,$v0,.L0f147fe0 -/* f147f60: 8fa2018c */ lw $v0,0x18c($sp) -/* f147f64: 8e09006c */ lw $t1,0x6c($s0) -/* f147f68: 00002825 */ or $a1,$zero,$zero -/* f147f6c: 00001825 */ or $v1,$zero,$zero -/* f147f70: 11200003 */ beqz $t1,.L0f147f80 -/* f147f74: 00002025 */ or $a0,$zero,$zero -/* f147f78: 10000001 */ b .L0f147f80 -/* f147f7c: 00c02825 */ or $a1,$a2,$zero -.L0f147f80: -/* f147f80: 8e0a0068 */ lw $t2,0x68($s0) -/* f147f84: 00001025 */ or $v0,$zero,$zero -/* f147f88: 11400003 */ beqz $t2,.L0f147f98 -/* f147f8c: 00000000 */ nop -/* f147f90: 10000001 */ b .L0f147f98 -/* f147f94: 00c01825 */ or $v1,$a2,$zero -.L0f147f98: -/* f147f98: 8e0b0064 */ lw $t3,0x64($s0) -/* f147f9c: 11600003 */ beqz $t3,.L0f147fac -/* f147fa0: 00000000 */ nop -/* f147fa4: 10000001 */ b .L0f147fac -/* f147fa8: 00c02025 */ or $a0,$a2,$zero -.L0f147fac: -/* f147fac: 8e0c0070 */ lw $t4,0x70($s0) -/* f147fb0: 11800003 */ beqz $t4,.L0f147fc0 -/* f147fb4: 00000000 */ nop -/* f147fb8: 10000001 */ b .L0f147fc0 -/* f147fbc: 00c01025 */ or $v0,$a2,$zero -.L0f147fc0: -/* f147fc0: 00446821 */ addu $t5,$v0,$a0 -/* f147fc4: 01a3c821 */ addu $t9,$t5,$v1 -/* f147fc8: 0325c021 */ addu $t8,$t9,$a1 -/* f147fcc: 2b010002 */ slti $at,$t8,0x2 -/* f147fd0: 54200003 */ bnezl $at,.L0f147fe0 -/* f147fd4: 8fa2018c */ lw $v0,0x18c($sp) -/* f147fd8: afa600a8 */ sw $a2,0xa8($sp) -/* f147fdc: 8fa2018c */ lw $v0,0x18c($sp) -.L0f147fe0: -/* f147fe0: 2442ffe2 */ addiu $v0,$v0,-30 -/* f147fe4: 28410082 */ slti $at,$v0,0x82 -/* f147fe8: 10200002 */ beqz $at,.L0f147ff4 -/* f147fec: 00000000 */ nop -/* f147ff0: 00408825 */ or $s1,$v0,$zero -.L0f147ff4: -/* f147ff4: 3c018006 */ lui $at,%hi(var80061630) -/* f147ff8: c4321630 */ lwc1 $f18,%lo(var80061630)($at) -/* f147ffc: 3c0141f0 */ lui $at,0x41f0 -/* f148000: 44812000 */ mtc1 $at,$f4 -/* f148004: 00000000 */ nop -/* f148008: 46049182 */ mul.s $f6,$f18,$f4 -/* f14800c: 4600320d */ trunc.w.s $f8,$f6 -/* f148010: 440f4000 */ mfc1 $t7,$f8 -/* f148014: 00000000 */ nop -/* f148018: 31e90001 */ andi $t1,$t7,0x1 -/* f14801c: 14c90006 */ bne $a2,$t1,.L0f148038 -/* f148020: 3c057f1b */ lui $a1,%hi(var7f1b5ec8) -/* f148024: 24a55ec8 */ addiu $a1,$a1,%lo(var7f1b5ec8) -/* f148028: 0c004dad */ jal sprintf -/* f14802c: 27a400c0 */ addiu $a0,$sp,0xc0 -/* f148030: 10000006 */ b .L0f14804c -/* f148034: 8faa018c */ lw $t2,0x18c($sp) -.L0f148038: -/* f148038: 3c057f1b */ lui $a1,%hi(var7f1b5ecc) -/* f14803c: 24a55ecc */ addiu $a1,$a1,%lo(var7f1b5ecc) -/* f148040: 0c004dad */ jal sprintf -/* f148044: 27a400c0 */ addiu $a0,$sp,0xc0 -/* f148048: 8faa018c */ lw $t2,0x18c($sp) -.L0f14804c: -/* f14804c: 8fac0190 */ lw $t4,0x190($sp) -/* f148050: afb100b4 */ sw $s1,0xb4($sp) -/* f148054: 05410003 */ bgez $t2,.L0f148064 -/* f148058: 000a5843 */ sra $t3,$t2,0x1 -/* f14805c: 25410001 */ addiu $at,$t2,0x1 -/* f148060: 00015843 */ sra $t3,$at,0x1 -.L0f148064: -/* f148064: 016c6821 */ addu $t5,$t3,$t4 -/* f148068: 06210003 */ bgez $s1,.L0f148078 -/* f14806c: 0011c843 */ sra $t9,$s1,0x1 -/* f148070: 26210001 */ addiu $at,$s1,0x1 -/* f148074: 0001c843 */ sra $t9,$at,0x1 -.L0f148078: -/* f148078: 01b91023 */ subu $v0,$t5,$t9 -/* f14807c: afa200b8 */ sw $v0,0xb8($sp) -/* f148080: afa20074 */ sw $v0,0x74($sp) -/* f148084: 02402025 */ or $a0,$s2,$zero -/* f148088: 0fc54df7 */ jal gfxSetPrimColour -/* f14808c: 240500ff */ addiu $a1,$zero,0xff -/* f148090: 8fa80184 */ lw $t0,0x184($sp) -/* f148094: 8fb80188 */ lw $t8,0x188($sp) -/* f148098: 8fa70074 */ lw $a3,0x74($sp) -/* f14809c: 3c01f600 */ lui $at,0xf600 -/* f1480a0: 01181821 */ addu $v1,$t0,$t8 -/* f1480a4: 306e03ff */ andi $t6,$v1,0x3ff -/* f1480a8: 000e7b80 */ sll $t7,$t6,0xe -/* f1480ac: 30ea03ff */ andi $t2,$a3,0x3ff -/* f1480b0: 000a5880 */ sll $t3,$t2,0x2 -/* f1480b4: 01e11825 */ or $v1,$t7,$at -/* f1480b8: 006b6025 */ or $t4,$v1,$t3 -/* f1480bc: ac4c0000 */ sw $t4,0x0($v0) -/* f1480c0: 8fb90190 */ lw $t9,0x190($sp) -/* f1480c4: 310503ff */ andi $a1,$t0,0x3ff -/* f1480c8: 00056b80 */ sll $t5,$a1,0xe -/* f1480cc: 333803ff */ andi $t8,$t9,0x3ff -/* f1480d0: 00187080 */ sll $t6,$t8,0x2 -/* f1480d4: 01ae7825 */ or $t7,$t5,$t6 -/* f1480d8: ac4f0004 */ sw $t7,0x4($v0) -/* f1480dc: 8faa018c */ lw $t2,0x18c($sp) -/* f1480e0: 8fa90190 */ lw $t1,0x190($sp) -/* f1480e4: 00f13021 */ addu $a2,$a3,$s1 -/* f1480e8: 01a02825 */ or $a1,$t5,$zero -/* f1480ec: 012a5821 */ addu $t3,$t1,$t2 -/* f1480f0: 316c03ff */ andi $t4,$t3,0x3ff -/* f1480f4: 30d803ff */ andi $t8,$a2,0x3ff -/* f1480f8: 00187080 */ sll $t6,$t8,0x2 -/* f1480fc: 000c6880 */ sll $t5,$t4,0x2 -/* f148100: 006dc825 */ or $t9,$v1,$t5 -/* f148104: 00ae7825 */ or $t7,$a1,$t6 -/* f148108: ac4f000c */ sw $t7,0xc($v0) -/* f14810c: ac590008 */ sw $t9,0x8($v0) -/* f148110: afa6006c */ sw $a2,0x6c($sp) -/* f148114: 0fc54e0e */ jal func0f153838 -/* f148118: 24440010 */ addiu $a0,$v0,0x10 -/* f14811c: 8fa300d0 */ lw $v1,0xd0($sp) -/* f148120: 2401002d */ addiu $at,$zero,0x2d -/* f148124: 3c057f1b */ lui $a1,%hi(var7f1b5ed0) -/* f148128: 24690016 */ addiu $t1,$v1,0x16 -/* f14812c: 0121001a */ div $zero,$t1,$at -/* f148130: 00005012 */ mflo $t2 -/* f148134: 000a5880 */ sll $t3,$t2,0x2 -/* f148138: 016a5823 */ subu $t3,$t3,$t2 -/* f14813c: 27ac00d4 */ addiu $t4,$sp,0xd4 -/* f148140: 00409025 */ or $s2,$v0,$zero -/* f148144: 016c3821 */ addu $a3,$t3,$t4 -/* f148148: 24a55ed0 */ addiu $a1,$a1,%lo(var7f1b5ed0) -/* f14814c: 27a40164 */ addiu $a0,$sp,0x164 -/* f148150: 27a600c0 */ addiu $a2,$sp,0xc0 -/* f148154: 0c004dad */ jal sprintf -/* f148158: afa30010 */ sw $v1,0x10($sp) -/* f14815c: 3c014080 */ lui $at,0x4080 -/* f148160: 44816000 */ mtc1 $at,$f12 -/* f148164: 0fc01ad5 */ jal func0f006b54 -/* f148168: 00000000 */ nop -/* f14816c: 3c017f1b */ lui $at,%hi(var7f1b5f60) -/* f148170: c42a5f60 */ lwc1 $f10,%lo(var7f1b5f60)($at) -/* f148174: 3c017f1b */ lui $at,%hi(var7f1b5f64) -/* f148178: c4325f64 */ lwc1 $f18,%lo(var7f1b5f64)($at) -/* f14817c: 460a0402 */ mul.s $f16,$f0,$f10 -/* f148180: 3c0d7f1b */ lui $t5,%hi(var7f1b5ef0) -/* f148184: 25ad5ef0 */ addiu $t5,$t5,%lo(var7f1b5ef0) -/* f148188: 3c057f1b */ lui $a1,%hi(var7f1b5edc) -/* f14818c: 3c077f1b */ lui $a3,%hi(var7f1b5eec) -/* f148190: 24e75eec */ addiu $a3,$a3,%lo(var7f1b5eec) -/* f148194: 24a55edc */ addiu $a1,$a1,%lo(var7f1b5edc) -/* f148198: 46128100 */ add.s $f4,$f16,$f18 -/* f14819c: afad0010 */ sw $t5,0x10($sp) -/* f1481a0: 27a4014c */ addiu $a0,$sp,0x14c -/* f1481a4: 27a600c0 */ addiu $a2,$sp,0xc0 -/* f1481a8: 460021a1 */ cvt.d.s $f6,$f4 -/* f1481ac: 0c004dad */ jal sprintf -/* f1481b0: f7a60018 */ sdc1 $f6,0x18($sp) -/* f1481b4: 0c002f9d */ jal viGetFovY -/* f1481b8: 00000000 */ nop -/* f1481bc: 4480b000 */ mtc1 $zero,$f22 -/* f1481c0: 3c057f1b */ lui $a1,%hi(var7f1b5ef4) -/* f1481c4: 3c077f1b */ lui $a3,%hi(var7f1b5f04) -/* f1481c8: 46160032 */ c.eq.s $f0,$f22 -/* f1481cc: 24e75f04 */ addiu $a3,$a3,%lo(var7f1b5f04) -/* f1481d0: 24a55ef4 */ addiu $a1,$a1,%lo(var7f1b5ef4) -/* f1481d4: 27a40134 */ addiu $a0,$sp,0x134 -/* f1481d8: 45010007 */ bc1t .L0f1481f8 -/* f1481dc: 27a600c0 */ addiu $a2,$sp,0xc0 -/* f1481e0: 3c014270 */ lui $at,0x4270 -/* f1481e4: 44816000 */ mtc1 $at,$f12 -/* f1481e8: 00000000 */ nop -/* f1481ec: 460c0032 */ c.eq.s $f0,$f12 -/* f1481f0: 00000000 */ nop -/* f1481f4: 45000004 */ bc1f .L0f148208 -.L0f1481f8: -/* f1481f8: 3c013f80 */ lui $at,0x3f80 -/* f1481fc: 44811000 */ mtc1 $at,$f2 -/* f148200: 10000006 */ b .L0f14821c -/* f148204: 00000000 */ nop -.L0f148208: -/* f148208: 46006203 */ div.s $f8,$f12,$f0 -/* f14820c: 3c013f80 */ lui $at,0x3f80 -/* f148210: 44815000 */ mtc1 $at,$f10 -/* f148214: 00000000 */ nop -/* f148218: 460a4080 */ add.s $f2,$f8,$f10 -.L0f14821c: -/* f14821c: 3c197f1b */ lui $t9,%hi(var7f1b5f08) -/* f148220: 46001421 */ cvt.d.s $f16,$f2 -/* f148224: 27395f08 */ addiu $t9,$t9,%lo(var7f1b5f08) -/* f148228: afb90010 */ sw $t9,0x10($sp) -/* f14822c: 0c004dad */ jal sprintf -/* f148230: f7b00018 */ sdc1 $f16,0x18($sp) -/* f148234: 0fc54d8a */ jal func0f153628 -/* f148238: 02402025 */ or $a0,$s2,$zero -/* f14823c: 8fb800a8 */ lw $t8,0xa8($sp) -/* f148240: 00409025 */ or $s2,$v0,$zero -/* f148244: 53000009 */ beqzl $t8,.L0f14826c -/* f148248: 8fab00ac */ lw $t3,0xac($sp) -/* f14824c: 8fae00ac */ lw $t6,0xac($sp) -/* f148250: 8fa90184 */ lw $t1,0x184($sp) -/* f148254: 000e7900 */ sll $t7,$t6,0x4 -/* f148258: 01ee7823 */ subu $t7,$t7,$t6 -/* f14825c: 01e95021 */ addu $t2,$t7,$t1 -/* f148260: 10000009 */ b .L0f148288 -/* f148264: afaa00f4 */ sw $t2,0xf4($sp) -/* f148268: 8fab00ac */ lw $t3,0xac($sp) -.L0f14826c: -/* f14826c: 8fad0184 */ lw $t5,0x184($sp) -/* f148270: 000b6080 */ sll $t4,$t3,0x2 -/* f148274: 018b6023 */ subu $t4,$t4,$t3 -/* f148278: 000c60c0 */ sll $t4,$t4,0x3 -/* f14827c: 018b6021 */ addu $t4,$t4,$t3 -/* f148280: 018dc821 */ addu $t9,$t4,$t5 -/* f148284: afb900f4 */ sw $t9,0xf4($sp) -.L0f148288: -/* f148288: 8fb80074 */ lw $t8,0x74($sp) -/* f14828c: 270efff9 */ addiu $t6,$t8,-7 -/* f148290: 0c002f02 */ jal viGetX -/* f148294: afae00f0 */ sw $t6,0xf0($sp) -/* f148298: 00028400 */ sll $s0,$v0,0x10 -/* f14829c: 00107c03 */ sra $t7,$s0,0x10 -/* f1482a0: 0c002f06 */ jal viGetY -/* f1482a4: 01e08025 */ or $s0,$t7,$zero -/* f1482a8: 3c098008 */ lui $t1,%hi(var8007fb08) -/* f1482ac: 3c0a8008 */ lui $t2,%hi(var8007fb04) -/* f1482b0: 8d4afb04 */ lw $t2,%lo(var8007fb04)($t2) -/* f1482b4: 8d29fb08 */ lw $t1,%lo(var8007fb08)($t1) -/* f1482b8: 240bff7f */ addiu $t3,$zero,-129 -/* f1482bc: afab0018 */ sw $t3,0x18($sp) -/* f1482c0: 02402025 */ or $a0,$s2,$zero -/* f1482c4: 27a500f4 */ addiu $a1,$sp,0xf4 -/* f1482c8: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f1482cc: 27a700c0 */ addiu $a3,$sp,0xc0 -/* f1482d0: afb0001c */ sw $s0,0x1c($sp) -/* f1482d4: afa20020 */ sw $v0,0x20($sp) -/* f1482d8: afa00024 */ sw $zero,0x24($sp) -/* f1482dc: afa00028 */ sw $zero,0x28($sp) -/* f1482e0: afaa0014 */ sw $t2,0x14($sp) -/* f1482e4: 0fc5580f */ jal textRenderProjected -/* f1482e8: afa90010 */ sw $t1,0x10($sp) -/* f1482ec: 3c057f1b */ lui $a1,%hi(var7f1b5f0c) -/* f1482f0: 00409025 */ or $s2,$v0,$zero -/* f1482f4: 24a55f0c */ addiu $a1,$a1,%lo(var7f1b5f0c) -/* f1482f8: 0c004c4c */ jal strcpy -/* f1482fc: 27a40100 */ addiu $a0,$sp,0x100 -/* f148300: 8fac00a8 */ lw $t4,0xa8($sp) -/* f148304: 15800004 */ bnez $t4,.L0f148318 -/* f148308: 3c057f1b */ lui $a1,%hi(var7f1b5f14) -/* f14830c: 24a55f14 */ addiu $a1,$a1,%lo(var7f1b5f14) -/* f148310: 0c004c89 */ jal strcat -/* f148314: 27a40100 */ addiu $a0,$sp,0x100 -.L0f148318: -/* f148318: 3c057f1b */ lui $a1,%hi(var7f1b5f20) -/* f14831c: 24a55f20 */ addiu $a1,$a1,%lo(var7f1b5f20) -/* f148320: 0c004c89 */ jal strcat -/* f148324: 27a40100 */ addiu $a0,$sp,0x100 -/* f148328: 0c002f02 */ jal viGetX -/* f14832c: 00000000 */ nop -/* f148330: 00028400 */ sll $s0,$v0,0x10 -/* f148334: 00106c03 */ sra $t5,$s0,0x10 -/* f148338: 0c002f06 */ jal viGetY -/* f14833c: 01a08025 */ or $s0,$t5,$zero -/* f148340: 3c198008 */ lui $t9,%hi(var8007fb08) -/* f148344: 3c188008 */ lui $t8,%hi(var8007fb04) -/* f148348: 8f18fb04 */ lw $t8,%lo(var8007fb04)($t8) -/* f14834c: 8f39fb08 */ lw $t9,%lo(var8007fb08)($t9) -/* f148350: 240eff7f */ addiu $t6,$zero,-129 -/* f148354: afae0018 */ sw $t6,0x18($sp) -/* f148358: 02402025 */ or $a0,$s2,$zero -/* f14835c: 27a500f4 */ addiu $a1,$sp,0xf4 -/* f148360: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f148364: 27a70100 */ addiu $a3,$sp,0x100 -/* f148368: afb0001c */ sw $s0,0x1c($sp) -/* f14836c: afa20020 */ sw $v0,0x20($sp) -/* f148370: afa00024 */ sw $zero,0x24($sp) -/* f148374: afa00028 */ sw $zero,0x28($sp) -/* f148378: afb80014 */ sw $t8,0x14($sp) -/* f14837c: 0fc5580f */ jal textRenderProjected -/* f148380: afb90010 */ sw $t9,0x10($sp) -/* f148384: 8faf00ac */ lw $t7,0xac($sp) -/* f148388: 8faa0184 */ lw $t2,0x184($sp) -/* f14838c: 8fa4006c */ lw $a0,0x6c($sp) -/* f148390: 000f4880 */ sll $t1,$t7,0x2 -/* f148394: 012f4821 */ addu $t1,$t1,$t7 -/* f148398: 00094880 */ sll $t1,$t1,0x2 -/* f14839c: 012f4823 */ subu $t1,$t1,$t7 -/* f1483a0: 00094880 */ sll $t1,$t1,0x2 -/* f1483a4: 012f4823 */ subu $t1,$t1,$t7 -/* f1483a8: 012a1821 */ addu $v1,$t1,$t2 -/* f1483ac: 24840001 */ addiu $a0,$a0,0x1 -/* f1483b0: 00409025 */ or $s2,$v0,$zero -/* f1483b4: afa300f4 */ sw $v1,0xf4($sp) -/* f1483b8: afa400f0 */ sw $a0,0xf0($sp) -/* f1483bc: afa40068 */ sw $a0,0x68($sp) -/* f1483c0: 0c002f02 */ jal viGetX -/* f1483c4: afa30070 */ sw $v1,0x70($sp) -/* f1483c8: 00028400 */ sll $s0,$v0,0x10 -/* f1483cc: 00105c03 */ sra $t3,$s0,0x10 -/* f1483d0: 0c002f06 */ jal viGetY -/* f1483d4: 01608025 */ or $s0,$t3,$zero -/* f1483d8: 3c0c8008 */ lui $t4,%hi(var8007fb08) -/* f1483dc: 3c0d8008 */ lui $t5,%hi(var8007fb04) -/* f1483e0: 8dadfb04 */ lw $t5,%lo(var8007fb04)($t5) -/* f1483e4: 8d8cfb08 */ lw $t4,%lo(var8007fb08)($t4) -/* f1483e8: 2419ff7f */ addiu $t9,$zero,-129 -/* f1483ec: afb90018 */ sw $t9,0x18($sp) -/* f1483f0: 02402025 */ or $a0,$s2,$zero -/* f1483f4: 27a500f4 */ addiu $a1,$sp,0xf4 -/* f1483f8: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f1483fc: 27a7014c */ addiu $a3,$sp,0x14c -/* f148400: afb0001c */ sw $s0,0x1c($sp) -/* f148404: afa20020 */ sw $v0,0x20($sp) -/* f148408: afa00024 */ sw $zero,0x24($sp) -/* f14840c: afa00028 */ sw $zero,0x28($sp) -/* f148410: afad0014 */ sw $t5,0x14($sp) -/* f148414: 0fc5580f */ jal textRenderProjected -/* f148418: afac0010 */ sw $t4,0x10($sp) -/* f14841c: 8fb800a8 */ lw $t8,0xa8($sp) -/* f148420: 00409025 */ or $s2,$v0,$zero -/* f148424: 53000008 */ beqzl $t8,.L0f148448 -/* f148428: 8faa00ac */ lw $t2,0xac($sp) -/* f14842c: 8faf006c */ lw $t7,0x6c($sp) -/* f148430: 8fae0070 */ lw $t6,0x70($sp) -/* f148434: 25e90008 */ addiu $t1,$t7,0x8 -/* f148438: afa900f0 */ sw $t1,0xf0($sp) -/* f14843c: 1000000e */ b .L0f148478 -/* f148440: afae00f4 */ sw $t6,0xf4($sp) -/* f148444: 8faa00ac */ lw $t2,0xac($sp) -.L0f148448: -/* f148448: 8fac0184 */ lw $t4,0x184($sp) -/* f14844c: 8fb90068 */ lw $t9,0x68($sp) -/* f148450: 000a5880 */ sll $t3,$t2,0x2 -/* f148454: 016a5821 */ addu $t3,$t3,$t2 -/* f148458: 000b5880 */ sll $t3,$t3,0x2 -/* f14845c: 016a5823 */ subu $t3,$t3,$t2 -/* f148460: 000b5880 */ sll $t3,$t3,0x2 -/* f148464: 016a5823 */ subu $t3,$t3,$t2 -/* f148468: 000b5840 */ sll $t3,$t3,0x1 -/* f14846c: 016c6821 */ addu $t5,$t3,$t4 -/* f148470: afad00f4 */ sw $t5,0xf4($sp) -/* f148474: afb900f0 */ sw $t9,0xf0($sp) -.L0f148478: -/* f148478: 0c002f02 */ jal viGetX -/* f14847c: 00000000 */ nop -/* f148480: 00028400 */ sll $s0,$v0,0x10 -/* f148484: 0010c403 */ sra $t8,$s0,0x10 -/* f148488: 0c002f06 */ jal viGetY -/* f14848c: 03008025 */ or $s0,$t8,$zero -/* f148490: 3c0e8008 */ lui $t6,%hi(var8007fb08) -/* f148494: 3c0f8008 */ lui $t7,%hi(var8007fb04) -/* f148498: 8deffb04 */ lw $t7,%lo(var8007fb04)($t7) -/* f14849c: 8dcefb08 */ lw $t6,%lo(var8007fb08)($t6) -/* f1484a0: 2409ff7f */ addiu $t1,$zero,-129 -/* f1484a4: afa90018 */ sw $t1,0x18($sp) -/* f1484a8: 02402025 */ or $a0,$s2,$zero -/* f1484ac: 27a500f4 */ addiu $a1,$sp,0xf4 -/* f1484b0: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f1484b4: 27a70134 */ addiu $a3,$sp,0x134 -/* f1484b8: afb0001c */ sw $s0,0x1c($sp) -/* f1484bc: afa20020 */ sw $v0,0x20($sp) -/* f1484c0: afa00024 */ sw $zero,0x24($sp) -/* f1484c4: afa00028 */ sw $zero,0x28($sp) -/* f1484c8: afaf0014 */ sw $t7,0x14($sp) -/* f1484cc: 0fc5580f */ jal textRenderProjected -/* f1484d0: afae0010 */ sw $t6,0x10($sp) -/* f1484d4: 8faa00a8 */ lw $t2,0xa8($sp) -/* f1484d8: 8fb900ac */ lw $t9,0xac($sp) -/* f1484dc: 00409025 */ or $s2,$v0,$zero -/* f1484e0: 11400007 */ beqz $t2,.L0f148500 -/* f1484e4: 0019c0c0 */ sll $t8,$t9,0x3 -/* f1484e8: 8fac006c */ lw $t4,0x6c($sp) -/* f1484ec: 8fab0070 */ lw $t3,0x70($sp) -/* f1484f0: 258d000f */ addiu $t5,$t4,0xf -/* f1484f4: afad00f0 */ sw $t5,0xf0($sp) -/* f1484f8: 10000009 */ b .L0f148520 -/* f1484fc: afab00f4 */ sw $t3,0xf4($sp) -.L0f148500: -/* f148500: 8fae0184 */ lw $t6,0x184($sp) -/* f148504: 0319c023 */ subu $t8,$t8,$t9 -/* f148508: 8fa90068 */ lw $t1,0x68($sp) -/* f14850c: 0018c140 */ sll $t8,$t8,0x5 -/* f148510: 0319c021 */ addu $t8,$t8,$t9 -/* f148514: 030e7821 */ addu $t7,$t8,$t6 -/* f148518: afaf00f4 */ sw $t7,0xf4($sp) -/* f14851c: afa900f0 */ sw $t1,0xf0($sp) -.L0f148520: -/* f148520: 0c002f02 */ jal viGetX -/* f148524: 00000000 */ nop -/* f148528: 00028400 */ sll $s0,$v0,0x10 -/* f14852c: 00105403 */ sra $t2,$s0,0x10 -/* f148530: 0c002f06 */ jal viGetY -/* f148534: 01408025 */ or $s0,$t2,$zero -/* f148538: 3c0b8008 */ lui $t3,%hi(var8007fb08) -/* f14853c: 3c0c8008 */ lui $t4,%hi(var8007fb04) -/* f148540: 8d8cfb04 */ lw $t4,%lo(var8007fb04)($t4) -/* f148544: 8d6bfb08 */ lw $t3,%lo(var8007fb08)($t3) -/* f148548: 240dff7f */ addiu $t5,$zero,-129 -/* f14854c: afad0018 */ sw $t5,0x18($sp) -/* f148550: 02402025 */ or $a0,$s2,$zero -/* f148554: 27a500f4 */ addiu $a1,$sp,0xf4 -/* f148558: 27a600f0 */ addiu $a2,$sp,0xf0 -/* f14855c: 27a70164 */ addiu $a3,$sp,0x164 -/* f148560: afb0001c */ sw $s0,0x1c($sp) -/* f148564: afa20020 */ sw $v0,0x20($sp) -/* f148568: afa00024 */ sw $zero,0x24($sp) -/* f14856c: afa00028 */ sw $zero,0x28($sp) -/* f148570: afac0014 */ sw $t4,0x14($sp) -/* f148574: 0fc5580f */ jal textRenderProjected -/* f148578: afab0010 */ sw $t3,0x10($sp) -/* f14857c: 0fc54de0 */ jal func0f153780 -/* f148580: 00402025 */ or $a0,$v0,$zero -/* f148584: 3c19e700 */ lui $t9,0xe700 -/* f148588: ac590000 */ sw $t9,0x0($v0) -/* f14858c: ac400004 */ sw $zero,0x4($v0) -/* f148590: 24440008 */ addiu $a0,$v0,0x8 -/* f148594: 2405ffff */ addiu $a1,$zero,-1 -/* f148598: 0fc5082c */ jal func0f1420b0 -/* f14859c: 240600ff */ addiu $a2,$zero,0xff -/* f1485a0: 8fb800a8 */ lw $t8,0xa8($sp) -/* f1485a4: 00409025 */ or $s2,$v0,$zero -/* f1485a8: 2404000e */ addiu $a0,$zero,0xe -/* f1485ac: 53000003 */ beqzl $t8,.L0f1485bc -/* f1485b0: 8fa400a8 */ lw $a0,0xa8($sp) -/* f1485b4: afa400a8 */ sw $a0,0xa8($sp) -/* f1485b8: 8fa400a8 */ lw $a0,0xa8($sp) -.L0f1485bc: -/* f1485bc: 8fa7006c */ lw $a3,0x6c($sp) -/* f1485c0: 8fa30074 */ lw $v1,0x74($sp) -/* f1485c4: 8fa900b8 */ lw $t1,0xb8($sp) -/* f1485c8: 00e47021 */ addu $t6,$a3,$a0 -/* f1485cc: 25cf0009 */ addiu $t7,$t6,0x9 -/* f1485d0: 2470fff7 */ addiu $s0,$v1,-9 -/* f1485d4: 020f082a */ slt $at,$s0,$t7 -/* f1485d8: 1020009b */ beqz $at,.L0f148848 -/* f1485dc: 8faa00b4 */ lw $t2,0xb4($sp) -/* f1485e0: 012a5821 */ addu $t3,$t1,$t2 -/* f1485e4: 01646021 */ addu $t4,$t3,$a0 -/* f1485e8: 258d0009 */ addiu $t5,$t4,0x9 -/* f1485ec: afad0070 */ sw $t5,0x70($sp) -/* f1485f0: 06210003 */ bgez $s1,.L0f148600 -/* f1485f4: 0011c883 */ sra $t9,$s1,0x2 -/* f1485f8: 26210003 */ addiu $at,$s1,0x3 -/* f1485fc: 0001c883 */ sra $t9,$at,0x2 -.L0f148600: -/* f148600: 03237021 */ addu $t6,$t9,$v1 -/* f148604: afae0064 */ sw $t6,0x64($sp) -/* f148608: afb90068 */ sw $t9,0x68($sp) -/* f14860c: 8fa7006c */ lw $a3,0x6c($sp) -.L0f148610: -/* f148610: 8fa30074 */ lw $v1,0x74($sp) -/* f148614: 320b0001 */ andi $t3,$s0,0x1 -/* f148618: 0207082a */ slt $at,$s0,$a3 -/* f14861c: 10200058 */ beqz $at,.L0f148780 -/* f148620: 0203082a */ slt $at,$s0,$v1 -/* f148624: 14200056 */ bnez $at,.L0f148780 -/* f148628: 02034823 */ subu $t1,$s0,$v1 -/* f14862c: 44919000 */ mtc1 $s1,$f18 -/* f148630: 3c013f00 */ lui $at,0x3f00 -/* f148634: 44813000 */ mtc1 $at,$f6 -/* f148638: 46809120 */ cvt.s.w $f4,$f18 -/* f14863c: 44894000 */ mtc1 $t1,$f8 -/* f148640: 3c013f80 */ lui $at,0x3f80 -/* f148644: 320f0001 */ andi $t7,$s0,0x1 -/* f148648: 44819000 */ mtc1 $at,$f18 -/* f14864c: 468042a0 */ cvt.s.w $f10,$f8 -/* f148650: 46062082 */ mul.s $f2,$f4,$f6 -/* f148654: 15e00003 */ bnez $t7,.L0f148664 -/* f148658: 3c0500ff */ lui $a1,0xff -/* f14865c: 10000003 */ b .L0f14866c -/* f148660: 34a5ffff */ ori $a1,$a1,0xffff -.L0f148664: -/* f148664: 3c057fff */ lui $a1,0x7fff -/* f148668: 34a5ffff */ ori $a1,$a1,0xffff -.L0f14866c: -/* f14866c: 46025401 */ sub.s $f16,$f10,$f2 -/* f148670: 3c013f40 */ lui $at,0x3f40 -/* f148674: 44812000 */ mtc1 $at,$f4 -/* f148678: 3c014080 */ lui $at,0x4080 -/* f14867c: 46028003 */ div.s $f0,$f16,$f2 -/* f148680: 4616003c */ c.lt.s $f0,$f22 -/* f148684: 46000506 */ mov.s $f20,$f0 -/* f148688: 45020003 */ bc1fl .L0f148698 -/* f14868c: 4614903c */ c.lt.s $f18,$f20 -/* f148690: 46000507 */ neg.s $f20,$f0 -/* f148694: 4614903c */ c.lt.s $f18,$f20 -.L0f148698: -/* f148698: 00000000 */ nop -/* f14869c: 45020003 */ bc1fl .L0f1486ac -/* f1486a0: 4604a181 */ sub.s $f6,$f20,$f4 -/* f1486a4: 4600b506 */ mov.s $f20,$f22 -/* f1486a8: 4604a181 */ sub.s $f6,$f20,$f4 -.L0f1486ac: -/* f1486ac: 44814000 */ mtc1 $at,$f8 -/* f1486b0: 3c01437f */ lui $at,0x437f -/* f1486b4: 46083502 */ mul.s $f20,$f6,$f8 -/* f1486b8: 4616a03c */ c.lt.s $f20,$f22 -/* f1486bc: 00000000 */ nop -/* f1486c0: 45020003 */ bc1fl .L0f1486d0 -/* f1486c4: 4614b03c */ c.lt.s $f22,$f20 -/* f1486c8: 4600b506 */ mov.s $f20,$f22 -/* f1486cc: 4614b03c */ c.lt.s $f22,$f20 -.L0f1486d0: -/* f1486d0: 00000000 */ nop -/* f1486d4: 45020032 */ bc1fl .L0f1487a0 -/* f1486d8: 8fac0064 */ lw $t4,0x64($sp) -/* f1486dc: 44815000 */ mtc1 $at,$f10 -/* f1486e0: 24060001 */ addiu $a2,$zero,0x1 -/* f1486e4: 3c014f00 */ lui $at,0x4f00 -/* f1486e8: 460aa402 */ mul.s $f16,$f20,$f10 -/* f1486ec: 240400ff */ addiu $a0,$zero,0xff -/* f1486f0: 444af800 */ cfc1 $t2,$31 -/* f1486f4: 44c6f800 */ ctc1 $a2,$31 -/* f1486f8: 00000000 */ nop -/* f1486fc: 460084a4 */ cvt.w.s $f18,$f16 -/* f148700: 4446f800 */ cfc1 $a2,$31 -/* f148704: 00000000 */ nop -/* f148708: 30c60078 */ andi $a2,$a2,0x78 -/* f14870c: 50c00013 */ beqzl $a2,.L0f14875c -/* f148710: 44069000 */ mfc1 $a2,$f18 -/* f148714: 44819000 */ mtc1 $at,$f18 -/* f148718: 24060001 */ addiu $a2,$zero,0x1 -/* f14871c: 46128481 */ sub.s $f18,$f16,$f18 -/* f148720: 44c6f800 */ ctc1 $a2,$31 -/* f148724: 00000000 */ nop -/* f148728: 460094a4 */ cvt.w.s $f18,$f18 -/* f14872c: 4446f800 */ cfc1 $a2,$31 -/* f148730: 00000000 */ nop -/* f148734: 30c60078 */ andi $a2,$a2,0x78 -/* f148738: 14c00005 */ bnez $a2,.L0f148750 -/* f14873c: 00000000 */ nop -/* f148740: 44069000 */ mfc1 $a2,$f18 -/* f148744: 3c018000 */ lui $at,0x8000 -/* f148748: 10000007 */ b .L0f148768 -/* f14874c: 00c13025 */ or $a2,$a2,$at -.L0f148750: -/* f148750: 10000005 */ b .L0f148768 -/* f148754: 2406ffff */ addiu $a2,$zero,-1 -/* f148758: 44069000 */ mfc1 $a2,$f18 -.L0f14875c: -/* f14875c: 00000000 */ nop -/* f148760: 04c0fffb */ bltz $a2,.L0f148750 -/* f148764: 00000000 */ nop -.L0f148768: -/* f148768: 44caf800 */ ctc1 $t2,$31 -/* f14876c: 0fc01a40 */ jal colourBlend -/* f148770: 00000000 */ nop -/* f148774: 00402825 */ or $a1,$v0,$zero -/* f148778: 10000008 */ b .L0f14879c -/* f14877c: 8fa7006c */ lw $a3,0x6c($sp) -.L0f148780: -/* f148780: 15600004 */ bnez $t3,.L0f148794 -/* f148784: 4600b506 */ mov.s $f20,$f22 -/* f148788: 3c05007f */ lui $a1,0x7f -/* f14878c: 10000003 */ b .L0f14879c -/* f148790: 34a57fff */ ori $a1,$a1,0x7fff -.L0f148794: -/* f148794: 3c057fff */ lui $a1,0x7fff -/* f148798: 34a5ffff */ ori $a1,$a1,0xffff -.L0f14879c: -/* f14879c: 8fac0064 */ lw $t4,0x64($sp) -.L0f1487a0: -/* f1487a0: 02401025 */ or $v0,$s2,$zero -/* f1487a4: 26520008 */ addiu $s2,$s2,0x8 -/* f1487a8: 120c0005 */ beq $s0,$t4,.L0f1487c0 -/* f1487ac: 3c18fb00 */ lui $t8,0xfb00 -/* f1487b0: 8fad0068 */ lw $t5,0x68($sp) -/* f1487b4: 00edc823 */ subu $t9,$a3,$t5 -/* f1487b8: 56190003 */ bnel $s0,$t9,.L0f1487c8 -/* f1487bc: ac580000 */ sw $t8,0x0($v0) -.L0f1487c0: -/* f1487c0: 2405ffff */ addiu $a1,$zero,-1 -/* f1487c4: ac580000 */ sw $t8,0x0($v0) -.L0f1487c8: -/* f1487c8: 0c004b70 */ jal random -/* f1487cc: ac450004 */ sw $a1,0x4($v0) -/* f1487d0: 44822000 */ mtc1 $v0,$f4 -/* f1487d4: 02402025 */ or $a0,$s2,$zero -/* f1487d8: 8fa50194 */ lw $a1,0x194($sp) -/* f1487dc: 02003025 */ or $a2,$s0,$zero -/* f1487e0: 24070005 */ addiu $a3,$zero,0x5 -/* f1487e4: afb00010 */ sw $s0,0x10($sp) -/* f1487e8: 04410005 */ bgez $v0,.L0f148800 -/* f1487ec: 468021a0 */ cvt.s.w $f6,$f4 -/* f1487f0: 3c014f80 */ lui $at,0x4f80 -/* f1487f4: 44814000 */ mtc1 $at,$f8 -/* f1487f8: 00000000 */ nop -/* f1487fc: 46083180 */ add.s $f6,$f6,$f8 -.L0f148800: -/* f148800: 3c012f80 */ lui $at,0x2f80 -/* f148804: 44815000 */ mtc1 $at,$f10 -/* f148808: 3c013f80 */ lui $at,0x3f80 -/* f14880c: 44812000 */ mtc1 $at,$f4 -/* f148810: 460a3402 */ mul.s $f16,$f6,$f10 -/* f148814: 8fae0184 */ lw $t6,0x184($sp) -/* f148818: 8faf0188 */ lw $t7,0x188($sp) -/* f14881c: afae0018 */ sw $t6,0x18($sp) -/* f148820: afaf001c */ sw $t7,0x1c($sp) -/* f148824: 46148482 */ mul.s $f18,$f16,$f20 -/* f148828: 46049200 */ add.s $f8,$f18,$f4 -/* f14882c: 0fc506ac */ jal func0f141ab0 -/* f148830: e7a80014 */ swc1 $f8,0x14($sp) -/* f148834: 8fa90070 */ lw $t1,0x70($sp) -/* f148838: 26100001 */ addiu $s0,$s0,0x1 -/* f14883c: 00409025 */ or $s2,$v0,$zero -/* f148840: 5609ff73 */ bnel $s0,$t1,.L0f148610 -/* f148844: 8fa7006c */ lw $a3,0x6c($sp) -.L0f148848: -/* f148848: 02401025 */ or $v0,$s2,$zero -.L0f14884c: -/* f14884c: 8fbf0054 */ lw $ra,0x54($sp) -/* f148850: d7b40038 */ ldc1 $f20,0x38($sp) -/* f148854: d7b60040 */ ldc1 $f22,0x40($sp) -/* f148858: 8fb00048 */ lw $s0,0x48($sp) -/* f14885c: 8fb1004c */ lw $s1,0x4c($sp) -/* f148860: 8fb20050 */ lw $s2,0x50($sp) -/* f148864: 03e00008 */ jr $ra -/* f148868: 27bd0198 */ addiu $sp,$sp,0x198 -); +Gfx *hudRenderHorizonScanner(Gfx *gdl) +{ + s32 sp194 = viGetUnk28(); + s32 viewtop = viGetViewTop(); + s32 viewheight = viGetViewY(); + s32 viewwidth = viGetViewX(); + s32 viewleft = viGetViewLeft(); + char directiontext[32]; + char hertztext[24]; + char zoomtext[24]; + char nametext[52]; + f32 lookx = g_Vars.currentplayer->cam_look.x; + f32 lookz = g_Vars.currentplayer->cam_look.z; + s32 x; + s32 y; + + char directions[][3] = { + {'n', '\0', '\0'}, + {'n', 'e', '\0'}, + {'e', '\0', '\0'}, + {'s', 'e', '\0'}, + {'s', '\0', '\0'}, + {'s', 'w', '\0'}, + {'w', '\0', '\0'}, + {'n', 'w', '\0'}, + {'n', '\0', '\0'}, + }; + + s32 turnangle = func0f096750(-lookx, lookz) * 180.0f / M_PI; + f32 fovy; + char arrows[12]; + s32 tmplensheight = 130; + s32 lenstop; + s32 lensheight; + s32 liney; + s32 scale = 1; + s32 vsplit = false; + u32 colour; + f32 range; + + var8007f840++; + + if (var8007f840 >= 2) { + return gdl; + } + + strcpy(var800a41c0, "BinocularViewGfx"); + + if (g_HiResActive == true) { + scale = 2; + } + + if (optionsGetScreenSplit() == SCREENSPLIT_VERTICAL && PLAYERCOUNT() >= 2) { + vsplit = true; + } + + if (tmplensheight > viewheight - 30) { + tmplensheight = viewheight - 30; + } + + if (((s32)(var80061630 * 30.0f) & 1) == 1) { + sprintf(arrows, ">> "); + } else { + sprintf(arrows, " >>"); + } + + lensheight = tmplensheight; + lenstop = viewtop + (viewheight / 2) - (lensheight / 2); + + // Black out areas above and below lens + gdl = gfxSetPrimColour(gdl, 0x000000ff); + + gDPFillRectangle(gdl++, viewleft, viewtop, viewleft + viewwidth, lenstop); + gDPFillRectangle(gdl++, viewleft, lenstop + lensheight, viewleft + viewwidth, viewtop + viewheight); + + gdl = func0f153838(gdl); + + // Prepare text buffers + sprintf(directiontext, "%s %s:%03d", arrows, &directions[(turnangle + 22) / 45], turnangle); + sprintf(hertztext, "%s %s%s%4.2fh", arrows, "", "", func0f006b54(4) * 4.6f + 917.4f); + + fovy = viGetFovY(); + + if (fovy == 0 || fovy == 60.0f) { + fovy = 1; + } else { + fovy = 60.0f / fovy + 1; + } + + sprintf(zoomtext, "%s %s%s%4.2fX", arrows, "", "", fovy); + + gdl = func0f153628(gdl); + + // Arrows left of product name + if (vsplit) { + x = viewleft + 15 * scale; + } else { + x = viewleft + 25 * scale; + } + + y = lenstop - 7; + gdl = textRenderProjected(gdl, &x, &y, arrows, + var8007fb08, var8007fb04, 0xffffff7f, viGetX(), viGetY(), 0, 0); + + // Product name + strcpy(nametext, " JMBC"); + + if (!vsplit) { + strcat(nametext, " WIDE BAND"); + } + + strcat(nametext, " SCANNER\n"); + + gdl = textRenderProjected(gdl, &x, &y, nametext, + var8007fb08, var8007fb04, 0xffffff7f, viGetX(), viGetY(), 0, 0); + + // Hertz + x = viewleft + 75 * scale; + y = lenstop + lensheight + 1; + gdl = textRenderProjected(gdl, &x, &y, hertztext, + var8007fb08, var8007fb04, 0xffffff7f, viGetX(), viGetY(), 0, 0); + + // Zoom level + if (vsplit) { + x = viewleft + 75 * scale; + y = lenstop + lensheight + 8; + } else { + x = viewleft + 150 * scale; + y = lenstop + lensheight + 1; + } + + gdl = textRenderProjected(gdl, &x, &y, zoomtext, + var8007fb08, var8007fb04, 0xffffff7f, viGetX(), viGetY(), 0, 0); + + // Direction + if (vsplit) { + x = viewleft + 75 * scale; + y = lenstop + lensheight + 15; + } else { + x = viewleft + 225 * scale; + y = lenstop + lensheight + 1; + } + + gdl = textRenderProjected(gdl, &x, &y, directiontext, + var8007fb08, var8007fb04, 0xffffff7f, viGetX(), viGetY(), 0, 0); + gdl = func0f153780(gdl); + + gDPPipeSync(gdl++); + + gdl = func0f1420b0(gdl, 0xffffffff, 255); + + if (vsplit) { + vsplit = 14; + } + + // Iterate horizontal lines down the lens with a bit extra on top and bottom + for (liney = lenstop - 9; liney < lenstop + lensheight + vsplit + 9; liney++) { + if (liney < lenstop + lensheight && liney >= lenstop) { + // Inside the lens + if ((liney % 2) == 0) { + colour = 0x00ffffff; + } else { + colour = 0x7fffffff; + } + + range = (liney - lenstop - lensheight * 0.5f) / (lensheight * 0.5f); + + if (range < 0) { + range = -range; + } + + if (range > 1) { + range = 0; + } + + range = (range - 0.75f) * 4.0f; + + if (range < 0) { + range = 0; + } + + if (range > 0) { + colour = colourBlend(0x000000ff, colour, range * 255.0f); + } + } else { + // Outside of the lens + if ((liney % 2) == 0) { + colour = 0x007f7fff; + } else { + colour = 0x7fffffff; + } + + range = 0; + } + + // Different coloured lines at 1/4 and 3/4 marks in the lens + if (liney == lenstop + lensheight / 4 || liney == lenstop + lensheight - lensheight / 4) { + colour = 0xffffffff; + } + + gDPSetColor(gdl++, G_SETENVCOLOR, colour); + + gdl = func0f141ab0(gdl, sp194, liney, 5, liney, random() * (1.0f / U32_MAX) * range + 1, viewleft, viewwidth); + } + + return gdl; +} GLOBAL_ASM( glabel func0f14886c @@ -8564,16 +8050,3 @@ void func0f148b6c(void) { var8007f844 = 0; } - -u32 var8007f870 = 0x000003e8; -u32 var8007f874 = 0x000003e8; -u32 var8007f878 = 0x00000000; -u32 var8007f87c = 0x6e00006e; -u32 var8007f880 = 0x65006500; -u32 var8007f884 = 0x00736500; -u32 var8007f888 = 0x73000073; -u32 var8007f88c = 0x77007700; -u32 var8007f890 = 0x006e7700; -u32 var8007f894 = 0x6e000000; -u32 var8007f898 = 0x00000000; -u32 var8007f89c = 0x00000000; diff --git a/src/include/game/game_005fd0.h b/src/include/game/game_005fd0.h index 6328dd4f9..4aea37593 100644 --- a/src/include/game/game_005fd0.h +++ b/src/include/game/game_005fd0.h @@ -10,7 +10,7 @@ void func0f006520(struct chrdata *chr); u32 colourBlend(u32 a, u32 b, u32 weight); void func0f0069dc(void); f32 func0f006b08(f32 arg0); -u32 func0f006b54(void); +f32 func0f006b54(f32 arg0); u32 func0f006ba0(void); #endif