From 5c5e45bef48bb5a33d50034831a8274e4a2798b5 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 14 Apr 2023 17:44:43 +1000 Subject: [PATCH] Decompile lightTickBroken --- src/game/dlights.c | 697 ++------------------------------------------- 1 file changed, 23 insertions(+), 674 deletions(-) diff --git a/src/game/dlights.c b/src/game/dlights.c index 0a3e95f7b..43dd61fe4 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -954,665 +954,9 @@ void roomSetLightOp(s32 roomnum, s32 operation, u8 br_to, u8 br_from, u8 duratio } } -#if MATCHING -#if VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel lightTickBroken -/* f002ef8: 0004c0c0 */ sll $t8,$a0,0x3 -/* f002efc: 0304c021 */ addu $t8,$t8,$a0 -/* f002f00: 3c0e800a */ lui $t6,%hi(g_Rooms) -/* f002f04: 8dce4928 */ lw $t6,%lo(g_Rooms)($t6) -/* f002f08: 27bdff28 */ addiu $sp,$sp,-216 -/* f002f0c: 0018c080 */ sll $t8,$t8,0x2 -/* f002f10: 0304c023 */ subu $t8,$t8,$a0 -/* f002f14: 0018c080 */ sll $t8,$t8,0x2 -/* f002f18: afbf0044 */ sw $ra,0x44($sp) -/* f002f1c: afa400d8 */ sw $a0,0xd8($sp) -/* f002f20: afa500dc */ sw $a1,0xdc($sp) -/* f002f24: 01d8c821 */ addu $t9,$t6,$t8 -/* f002f28: 972a000a */ lhu $t2,0xa($t9) -/* f002f2c: 3c0f800a */ lui $t7,%hi(g_BgLightsFileData) -/* f002f30: 8def4cd8 */ lw $t7,%lo(g_BgLightsFileData)($t7) -/* f002f34: 01456021 */ addu $t4,$t2,$a1 -/* f002f38: 000c6900 */ sll $t5,$t4,0x4 -/* f002f3c: 01ac6821 */ addu $t5,$t5,$t4 -/* f002f40: 000d6840 */ sll $t5,$t5,0x1 -/* f002f44: 01af1821 */ addu $v1,$t5,$t7 -/* f002f48: 80780005 */ lb $t8,0x5($v1) -/* f002f4c: 07020004 */ bltzl $t8,.L0f002f60 -/* f002f50: 94790004 */ lhu $t9,0x4($v1) -/* f002f54: 10000112 */ b .L0f0033a0 -/* f002f58: 00001025 */ or $v0,$zero,$zero -/* f002f5c: 94790004 */ lhu $t9,0x4($v1) -.L0f002f60: -/* f002f60: 00195ec0 */ sll $t3,$t9,0x1b -/* f002f64: 05610102 */ bgez $t3,.L0f003370 -/* f002f68: 00000000 */ nop -/* f002f6c: 0c004b70 */ jal random -/* f002f70: afa300d4 */ sw $v1,0xd4($sp) -/* f002f74: 304c0007 */ andi $t4,$v0,0x7 -/* f002f78: 15800005 */ bnez $t4,.L0f002f90 -/* f002f7c: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002f80: 906d0005 */ lbu $t5,0x5($v1) -/* f002f84: 31afffef */ andi $t7,$t5,0xffef -/* f002f88: 10000104 */ b .L0f00339c -/* f002f8c: a06f0005 */ sb $t7,0x5($v1) -.L0f002f90: -/* f002f90: 0c004b70 */ jal random -/* f002f94: afa300d4 */ sw $v1,0xd4($sp) -/* f002f98: 304e0001 */ andi $t6,$v0,0x1 -/* f002f9c: 15c000ff */ bnez $t6,.L0f00339c -/* f002fa0: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002fa4: 0c004b70 */ jal random -/* f002fa8: afa300d4 */ sw $v1,0xd4($sp) -/* f002fac: 44822000 */ mtc1 $v0,$f4 -/* f002fb0: 04410005 */ bgez $v0,.L0f002fc8 -/* f002fb4: 468021a0 */ cvt.s.w $f6,$f4 -/* f002fb8: 3c014f80 */ lui $at,0x4f80 -/* f002fbc: 44814000 */ mtc1 $at,$f8 -/* f002fc0: 00000000 */ nop -/* f002fc4: 46083180 */ add.s $f6,$f6,$f8 -.L0f002fc8: -/* f002fc8: 3c012f80 */ lui $at,0x2f80 -/* f002fcc: 44815000 */ mtc1 $at,$f10 -/* f002fd0: 3c013f80 */ lui $at,0x3f80 -/* f002fd4: 44814000 */ mtc1 $at,$f8 -/* f002fd8: 460a3002 */ mul.s $f0,$f6,$f10 -/* f002fdc: 46000100 */ add.s $f4,$f0,$f0 -/* f002fe0: 46082301 */ sub.s $f12,$f4,$f8 -/* f002fe4: 0c004b70 */ jal random -/* f002fe8: e7ac0070 */ swc1 $f12,0x70($sp) -/* f002fec: 44823000 */ mtc1 $v0,$f6 -/* f002ff0: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002ff4: c7ac0070 */ lwc1 $f12,0x70($sp) -/* f002ff8: 04410005 */ bgez $v0,.L0f003010 -/* f002ffc: 468032a0 */ cvt.s.w $f10,$f6 -/* f003000: 3c014f80 */ lui $at,0x4f80 -/* f003004: 44812000 */ mtc1 $at,$f4 -/* f003008: 00000000 */ nop -/* f00300c: 46045280 */ add.s $f10,$f10,$f4 -.L0f003010: -/* f003010: 3c012f80 */ lui $at,0x2f80 -/* f003014: 44814000 */ mtc1 $at,$f8 -/* f003018: 3c013f80 */ lui $at,0x3f80 -/* f00301c: 44812000 */ mtc1 $at,$f4 -/* f003020: 46085002 */ mul.s $f0,$f10,$f8 -/* f003024: 2409ffff */ addiu $t1,$zero,-1 -/* f003028: 3c077f1a */ lui $a3,%hi(var7f1a7bb4) -/* f00302c: 24e77bb4 */ addiu $a3,$a3,%lo(var7f1a7bb4) -/* f003030: 2406060a */ addiu $a2,$zero,0x60a -/* f003034: 46000180 */ add.s $f6,$f0,$f0 -/* f003038: 46043081 */ sub.s $f2,$f6,$f4 -/* f00303c: e7a2006c */ swc1 $f2,0x6c($sp) -/* f003040: 8468000a */ lh $t0,0xa($v1) -/* f003044: 84780010 */ lh $t8,0x10($v1) -/* f003048: 846f0016 */ lh $t7,0x16($v1) -/* f00304c: 846a0012 */ lh $t2,0x12($v1) -/* f003050: 0308c823 */ subu $t9,$t8,$t0 -/* f003054: 44995000 */ mtc1 $t9,$f10 -/* f003058: 01e87023 */ subu $t6,$t7,$t0 -/* f00305c: 448e2000 */ mtc1 $t6,$f4 -/* f003060: 468053a0 */ cvt.s.w $f14,$f10 -/* f003064: 8464000c */ lh $a0,0xc($v1) -/* f003068: 846c0014 */ lh $t4,0x14($v1) -/* f00306c: 8465000e */ lh $a1,0xe($v1) -/* f003070: 01445823 */ subu $t3,$t2,$a0 -/* f003074: 468022a0 */ cvt.s.w $f10,$f4 -/* f003078: 448b4000 */ mtc1 $t3,$f8 -/* f00307c: 01856823 */ subu $t5,$t4,$a1 -/* f003080: 448d3000 */ mtc1 $t5,$f6 -/* f003084: 460e6382 */ mul.s $f14,$f12,$f14 -/* f003088: e7aa00bc */ swc1 $f10,0xbc($sp) -/* f00308c: 84780018 */ lh $t8,0x18($v1) -/* f003090: 46804420 */ cvt.s.w $f16,$f8 -/* f003094: 0304c823 */ subu $t9,$t8,$a0 -/* f003098: 44994000 */ mtc1 $t9,$f8 -/* f00309c: 27a40098 */ addiu $a0,$sp,0x98 -/* f0030a0: 468034a0 */ cvt.s.w $f18,$f6 -/* f0030a4: 46106402 */ mul.s $f16,$f12,$f16 -/* f0030a8: 00000000 */ nop -/* f0030ac: 46126482 */ mul.s $f18,$f12,$f18 -/* f0030b0: c7ac006c */ lwc1 $f12,0x6c($sp) -/* f0030b4: 468041a0 */ cvt.s.w $f6,$f8 -/* f0030b8: e7a600c0 */ swc1 $f6,0xc0($sp) -/* f0030bc: 846a001a */ lh $t2,0x1a($v1) -/* f0030c0: 01455823 */ subu $t3,$t2,$a1 -/* f0030c4: 448b2000 */ mtc1 $t3,$f4 -/* f0030c8: 27a500a4 */ addiu $a1,$sp,0xa4 -/* f0030cc: 46802220 */ cvt.s.w $f8,$f4 -/* f0030d0: 460a1102 */ mul.s $f4,$f2,$f10 -/* f0030d4: 44885000 */ mtc1 $t0,$f10 -/* f0030d8: 46066002 */ mul.s $f0,$f12,$f6 -/* f0030dc: e7a800c4 */ swc1 $f8,0xc4($sp) -/* f0030e0: 46086082 */ mul.s $f2,$f12,$f8 -/* f0030e4: e7a400bc */ swc1 $f4,0xbc($sp) -/* f0030e8: c7a800bc */ lwc1 $f8,0xbc($sp) -/* f0030ec: 46805120 */ cvt.s.w $f4,$f10 -/* f0030f0: 460e2180 */ add.s $f6,$f4,$f14 -/* f0030f4: 46083280 */ add.s $f10,$f6,$f8 -/* f0030f8: e7aa0098 */ swc1 $f10,0x98($sp) -/* f0030fc: 846c000a */ lh $t4,0xa($v1) -/* f003100: 448c2000 */ mtc1 $t4,$f4 -/* f003104: 00000000 */ nop -/* f003108: 468021a0 */ cvt.s.w $f6,$f4 -/* f00310c: 46103200 */ add.s $f8,$f6,$f16 -/* f003110: 46004280 */ add.s $f10,$f8,$f0 -/* f003114: e7aa009c */ swc1 $f10,0x9c($sp) -/* f003118: 846d000a */ lh $t5,0xa($v1) -/* f00311c: 448d2000 */ mtc1 $t5,$f4 -/* f003120: 00000000 */ nop -/* f003124: 468021a0 */ cvt.s.w $f6,$f4 -/* f003128: 46123200 */ add.s $f8,$f6,$f18 -/* f00312c: 46024280 */ add.s $f10,$f8,$f2 -/* f003130: e7aa00a0 */ swc1 $f10,0xa0($sp) -/* f003134: 806f0007 */ lb $t7,0x7($v1) -/* f003138: 448f2000 */ mtc1 $t7,$f4 -/* f00313c: 00000000 */ nop -/* f003140: 468021a0 */ cvt.s.w $f6,$f4 -/* f003144: e7a6008c */ swc1 $f6,0x8c($sp) -/* f003148: 806e0008 */ lb $t6,0x8($v1) -/* f00314c: 448e4000 */ mtc1 $t6,$f8 -/* f003150: 00000000 */ nop -/* f003154: 468042a0 */ cvt.s.w $f10,$f8 -/* f003158: c7a8008c */ lwc1 $f8,0x8c($sp) -/* f00315c: e7aa0090 */ swc1 $f10,0x90($sp) -/* f003160: 80780009 */ lb $t8,0x9($v1) -/* f003164: 46004287 */ neg.s $f10,$f8 -/* f003168: afa90068 */ sw $t1,0x68($sp) -/* f00316c: 44982000 */ mtc1 $t8,$f4 -/* f003170: e7aa0080 */ swc1 $f10,0x80($sp) -/* f003174: 468021a0 */ cvt.s.w $f6,$f4 -/* f003178: c7a40090 */ lwc1 $f4,0x90($sp) -/* f00317c: e7a60094 */ swc1 $f6,0x94($sp) -/* f003180: c7a80094 */ lwc1 $f8,0x94($sp) -/* f003184: 46002187 */ neg.s $f6,$f4 -/* f003188: 46004287 */ neg.s $f10,$f8 -/* f00318c: e7a60084 */ swc1 $f6,0x84($sp) -/* f003190: 0fc5dc59 */ jal func0f177164 -/* f003194: e7aa0088 */ swc1 $f10,0x88($sp) -/* f003198: c7b200a4 */ lwc1 $f18,0xa4($sp) -/* f00319c: c7b00080 */ lwc1 $f16,0x80($sp) -/* f0031a0: c7ae00a8 */ lwc1 $f14,0xa8($sp) -/* f0031a4: c7ac0084 */ lwc1 $f12,0x84($sp) -/* f0031a8: 46109400 */ add.s $f16,$f18,$f16 -/* f0031ac: c7b200ac */ lwc1 $f18,0xac($sp) -/* f0031b0: c7aa0088 */ lwc1 $f10,0x88($sp) -/* f0031b4: 460c7300 */ add.s $f12,$f14,$f12 -/* f0031b8: 27a400a4 */ addiu $a0,$sp,0xa4 -/* f0031bc: 3c077f1a */ lui $a3,%hi(var7f1a7bc0) -/* f0031c0: 460a9280 */ add.s $f10,$f18,$f10 -/* f0031c4: e7b000a4 */ swc1 $f16,0xa4($sp) -/* f0031c8: e7ac00a8 */ swc1 $f12,0xa8($sp) -/* f0031cc: 00802825 */ or $a1,$a0,$zero -/* f0031d0: e7aa00ac */ swc1 $f10,0xac($sp) -/* f0031d4: 2406060c */ addiu $a2,$zero,0x60c -/* f0031d8: 0fc5dc59 */ jal func0f177164 -/* f0031dc: 24e77bc0 */ addiu $a3,$a3,%lo(var7f1a7bc0) -/* f0031e0: 8fa400d8 */ lw $a0,0xd8($sp) -/* f0031e4: 0004c880 */ sll $t9,$a0,0x2 -/* f0031e8: 0324c821 */ addu $t9,$t9,$a0 -/* f0031ec: 0019c880 */ sll $t9,$t9,0x2 -/* f0031f0: 0c004b70 */ jal random -/* f0031f4: afb90058 */ sw $t9,0x58($sp) -/* f0031f8: 30430003 */ andi $v1,$v0,0x3 -/* f0031fc: 1060000a */ beqz $v1,.L0f003228 -/* f003200: 8fa90068 */ lw $t1,0x68($sp) -/* f003204: 24010001 */ addiu $at,$zero,0x1 -/* f003208: 10610009 */ beq $v1,$at,.L0f003230 -/* f00320c: 24010002 */ addiu $at,$zero,0x2 -/* f003210: 10610009 */ beq $v1,$at,.L0f003238 -/* f003214: 24010003 */ addiu $at,$zero,0x3 -/* f003218: 5061000a */ beql $v1,$at,.L0f003244 -/* f00321c: 24090014 */ addiu $t1,$zero,0x14 -/* f003220: 10000009 */ b .L0f003248 -/* f003224: 8fa400d8 */ lw $a0,0xd8($sp) -.L0f003228: -/* f003228: 10000006 */ b .L0f003244 -/* f00322c: 24090011 */ addiu $t1,$zero,0x11 -.L0f003230: -/* f003230: 10000004 */ b .L0f003244 -/* f003234: 24090012 */ addiu $t1,$zero,0x12 -.L0f003238: -/* f003238: 10000002 */ b .L0f003244 -/* f00323c: 24090013 */ addiu $t1,$zero,0x13 -/* f003240: 24090014 */ addiu $t1,$zero,0x14 -.L0f003244: -/* f003244: 8fa400d8 */ lw $a0,0xd8($sp) -.L0f003248: -/* f003248: 8fa500dc */ lw $a1,0xdc($sp) -/* f00324c: 27a60074 */ addiu $a2,$sp,0x74 -/* f003250: 0fc0037f */ jal lightGetBboxCentre -/* f003254: afa90068 */ sw $t1,0x68($sp) -/* f003258: 3c0b800a */ lui $t3,%hi(g_BgRooms) -/* f00325c: 8d6b4cc4 */ lw $t3,%lo(g_BgRooms)($t3) -/* f003260: 8fac0058 */ lw $t4,0x58($sp) -/* f003264: c7a60074 */ lwc1 $f6,0x74($sp) -/* f003268: c7a40078 */ lwc1 $f4,0x78($sp) -/* f00326c: 016c1821 */ addu $v1,$t3,$t4 -/* f003270: c4680004 */ lwc1 $f8,0x4($v1) -/* f003274: 8fa90068 */ lw $t1,0x68($sp) -/* f003278: 27ad008c */ addiu $t5,$sp,0x8c -/* f00327c: 46083280 */ add.s $f10,$f6,$f8 -/* f003280: 8fa400d8 */ lw $a0,0xd8($sp) -/* f003284: 00002825 */ or $a1,$zero,$zero -/* f003288: 27a60074 */ addiu $a2,$sp,0x74 -/* f00328c: e7aa0074 */ swc1 $f10,0x74($sp) -/* f003290: c4660008 */ lwc1 $f6,0x8($v1) -/* f003294: c7aa007c */ lwc1 $f10,0x7c($sp) -/* f003298: 27a700a4 */ addiu $a3,$sp,0xa4 -/* f00329c: 46062200 */ add.s $f8,$f4,$f6 -/* f0032a0: e7a80078 */ swc1 $f8,0x78($sp) -/* f0032a4: c464000c */ lwc1 $f4,0xc($v1) -/* f0032a8: afad0010 */ sw $t5,0x10($sp) -/* f0032ac: afa90014 */ sw $t1,0x14($sp) -/* f0032b0: 46045180 */ add.s $f6,$f10,$f4 -/* f0032b4: 0fc4be7c */ jal sparksCreate -/* f0032b8: e7a6007c */ swc1 $f6,0x7c($sp) -/* f0032bc: 0c004b70 */ jal random -/* f0032c0: 00000000 */ nop -/* f0032c4: 304f0003 */ andi $t7,$v0,0x3 -/* f0032c8: 15e00008 */ bnez $t7,.L0f0032ec -/* f0032cc: 8fae00d8 */ lw $t6,0xd8($sp) -/* f0032d0: 2418ffff */ addiu $t8,$zero,-1 -/* f0032d4: a7ae0064 */ sh $t6,0x64($sp) -/* f0032d8: a7b80066 */ sh $t8,0x66($sp) -/* f0032dc: 27a40074 */ addiu $a0,$sp,0x74 -/* f0032e0: 27a50064 */ addiu $a1,$sp,0x64 -/* f0032e4: 0fc4ba08 */ jal smokeCreateSimple -/* f0032e8: 24060007 */ addiu $a2,$zero,0x7 -.L0f0032ec: -/* f0032ec: 8fa400d8 */ lw $a0,0xd8($sp) -/* f0032f0: 24050040 */ addiu $a1,$zero,0x40 -/* f0032f4: 0fc010e3 */ jal roomFlashLighting -/* f0032f8: 24060050 */ addiu $a2,$zero,0x50 -/* f0032fc: 0fc25480 */ jal propsndGetRandomSparkSound -/* f003300: 00000000 */ nop -/* f003304: 3c01bf80 */ lui $at,0xbf80 -/* f003308: 44810000 */ mtc1 $at,$f0 -/* f00330c: 8faf00d8 */ lw $t7,0xd8($sp) -/* f003310: 00023400 */ sll $a2,$v0,0x10 -/* f003314: 0006cc03 */ sra $t9,$a2,0x10 -/* f003318: 240affff */ addiu $t2,$zero,-1 -/* f00331c: 240b0400 */ addiu $t3,$zero,0x400 -/* f003320: 240c0010 */ addiu $t4,$zero,0x10 -/* f003324: 27ad0074 */ addiu $t5,$sp,0x74 -/* f003328: afad0020 */ sw $t5,0x20($sp) -/* f00332c: afac001c */ sw $t4,0x1c($sp) -/* f003330: afab0014 */ sw $t3,0x14($sp) -/* f003334: afaa0010 */ sw $t2,0x10($sp) -/* f003338: 03203025 */ or $a2,$t9,$zero -/* f00333c: 00002025 */ or $a0,$zero,$zero -/* f003340: 00002825 */ or $a1,$zero,$zero -/* f003344: 2407ffff */ addiu $a3,$zero,-1 -/* f003348: afa00018 */ sw $zero,0x18($sp) -/* f00334c: afa00028 */ sw $zero,0x28($sp) -/* f003350: afaf002c */ sw $t7,0x2c($sp) -/* f003354: e7a00024 */ swc1 $f0,0x24($sp) -/* f003358: e7a00030 */ swc1 $f0,0x30($sp) -/* f00335c: e7a00034 */ swc1 $f0,0x34($sp) -/* f003360: 0fc24e7e */ jal propsnd0f0939f8 -/* f003364: e7a00038 */ swc1 $f0,0x38($sp) -/* f003368: 1000000d */ b .L0f0033a0 -/* f00336c: 24020001 */ addiu $v0,$zero,0x1 -.L0f003370: -/* f003370: 0c004b70 */ jal random -/* f003374: afa300d4 */ sw $v1,0xd4($sp) -/* f003378: 24010050 */ addiu $at,$zero,0x50 -/* f00337c: 0041001b */ divu $zero,$v0,$at -/* f003380: 00007010 */ mfhi $t6 -/* f003384: 8fa300d4 */ lw $v1,0xd4($sp) -/* f003388: 55c00005 */ bnezl $t6,.L0f0033a0 -/* f00338c: 00001025 */ or $v0,$zero,$zero -/* f003390: 90790005 */ lbu $t9,0x5($v1) -/* f003394: 372a0010 */ ori $t2,$t9,0x10 -/* f003398: a06a0005 */ sb $t2,0x5($v1) -.L0f00339c: -/* f00339c: 00001025 */ or $v0,$zero,$zero -.L0f0033a0: -/* f0033a0: 8fbf0044 */ lw $ra,0x44($sp) -/* f0033a4: 27bd00d8 */ addiu $sp,$sp,0xd8 -/* f0033a8: 03e00008 */ jr $ra -/* f0033ac: 00000000 */ nop -); -#else -GLOBAL_ASM( -glabel lightTickBroken -/* f002ef8: 0004c0c0 */ sll $t8,$a0,0x3 -/* f002efc: 0304c021 */ addu $t8,$t8,$a0 -/* f002f00: 3c0e800a */ lui $t6,%hi(g_Rooms) -/* f002f04: 8dce4928 */ lw $t6,%lo(g_Rooms)($t6) -/* f002f08: 27bdff28 */ addiu $sp,$sp,-216 -/* f002f0c: 0018c080 */ sll $t8,$t8,0x2 -/* f002f10: 0304c023 */ subu $t8,$t8,$a0 -/* f002f14: 0018c080 */ sll $t8,$t8,0x2 -/* f002f18: afbf0044 */ sw $ra,0x44($sp) -/* f002f1c: afa400d8 */ sw $a0,0xd8($sp) -/* f002f20: afa500dc */ sw $a1,0xdc($sp) -/* f002f24: 01d8c821 */ addu $t9,$t6,$t8 -/* f002f28: 972a000a */ lhu $t2,0xa($t9) -/* f002f2c: 3c0f800a */ lui $t7,%hi(g_BgLightsFileData) -/* f002f30: 8def4cd8 */ lw $t7,%lo(g_BgLightsFileData)($t7) -/* f002f34: 01456021 */ addu $t4,$t2,$a1 -/* f002f38: 000c6900 */ sll $t5,$t4,0x4 -/* f002f3c: 01ac6821 */ addu $t5,$t5,$t4 -/* f002f40: 000d6840 */ sll $t5,$t5,0x1 -/* f002f44: 01af1821 */ addu $v1,$t5,$t7 -/* f002f48: 80780005 */ lb $t8,0x5($v1) -/* f002f4c: 07020004 */ bltzl $t8,.L0f002f60 -/* f002f50: 94790004 */ lhu $t9,0x4($v1) -/* f002f54: 10000112 */ b .L0f0033a0 -/* f002f58: 00001025 */ or $v0,$zero,$zero -/* f002f5c: 94790004 */ lhu $t9,0x4($v1) -.L0f002f60: -/* f002f60: 00195ec0 */ sll $t3,$t9,0x1b -/* f002f64: 05610102 */ bgez $t3,.L0f003370 -/* f002f68: 00000000 */ nop -/* f002f6c: 0c004b70 */ jal random -/* f002f70: afa300d4 */ sw $v1,0xd4($sp) -/* f002f74: 304c0007 */ andi $t4,$v0,0x7 -/* f002f78: 15800005 */ bnez $t4,.L0f002f90 -/* f002f7c: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002f80: 906d0005 */ lbu $t5,0x5($v1) -/* f002f84: 31afffef */ andi $t7,$t5,0xffef -/* f002f88: 10000104 */ b .L0f00339c -/* f002f8c: a06f0005 */ sb $t7,0x5($v1) -.L0f002f90: -/* f002f90: 0c004b70 */ jal random -/* f002f94: afa300d4 */ sw $v1,0xd4($sp) -/* f002f98: 304e0001 */ andi $t6,$v0,0x1 -/* f002f9c: 15c000ff */ bnez $t6,.L0f00339c -/* f002fa0: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002fa4: 0c004b70 */ jal random -/* f002fa8: afa300d4 */ sw $v1,0xd4($sp) -/* f002fac: 44822000 */ mtc1 $v0,$f4 -/* f002fb0: 04410005 */ bgez $v0,.L0f002fc8 -/* f002fb4: 468021a0 */ cvt.s.w $f6,$f4 -/* f002fb8: 3c014f80 */ lui $at,0x4f80 -/* f002fbc: 44814000 */ mtc1 $at,$f8 -/* f002fc0: 00000000 */ nop -/* f002fc4: 46083180 */ add.s $f6,$f6,$f8 -.L0f002fc8: -/* f002fc8: 3c012f80 */ lui $at,0x2f80 -/* f002fcc: 44815000 */ mtc1 $at,$f10 -/* f002fd0: 3c013f80 */ lui $at,0x3f80 -/* f002fd4: 44814000 */ mtc1 $at,$f8 -/* f002fd8: 460a3002 */ mul.s $f0,$f6,$f10 -/* f002fdc: 46000100 */ add.s $f4,$f0,$f0 -/* f002fe0: 46082301 */ sub.s $f12,$f4,$f8 -/* f002fe4: 0c004b70 */ jal random -/* f002fe8: e7ac0070 */ swc1 $f12,0x70($sp) -/* f002fec: 44823000 */ mtc1 $v0,$f6 -/* f002ff0: 8fa300d4 */ lw $v1,0xd4($sp) -/* f002ff4: c7ac0070 */ lwc1 $f12,0x70($sp) -/* f002ff8: 04410005 */ bgez $v0,.L0f003010 -/* f002ffc: 468032a0 */ cvt.s.w $f10,$f6 -/* f003000: 3c014f80 */ lui $at,0x4f80 -/* f003004: 44812000 */ mtc1 $at,$f4 -/* f003008: 00000000 */ nop -/* f00300c: 46045280 */ add.s $f10,$f10,$f4 -.L0f003010: -/* f003010: 3c012f80 */ lui $at,0x2f80 -/* f003014: 44814000 */ mtc1 $at,$f8 -/* f003018: 3c013f80 */ lui $at,0x3f80 -/* f00301c: 44812000 */ mtc1 $at,$f4 -/* f003020: 46085002 */ mul.s $f0,$f10,$f8 -/* f003024: 2409ffff */ addiu $t1,$zero,-1 -/* f003028: 3c077f1a */ lui $a3,%hi(var7f1a7bb4) -/* f00302c: 24e77bb4 */ addiu $a3,$a3,%lo(var7f1a7bb4) -/* f003030: 2406060a */ addiu $a2,$zero,0x622 -/* f003034: 46000180 */ add.s $f6,$f0,$f0 -/* f003038: 46043081 */ sub.s $f2,$f6,$f4 -/* f00303c: e7a2006c */ swc1 $f2,0x6c($sp) -/* f003040: 8468000a */ lh $t0,0xa($v1) -/* f003044: 84780010 */ lh $t8,0x10($v1) -/* f003048: 846f0016 */ lh $t7,0x16($v1) -/* f00304c: 846a0012 */ lh $t2,0x12($v1) -/* f003050: 0308c823 */ subu $t9,$t8,$t0 -/* f003054: 44995000 */ mtc1 $t9,$f10 -/* f003058: 01e87023 */ subu $t6,$t7,$t0 -/* f00305c: 448e2000 */ mtc1 $t6,$f4 -/* f003060: 468053a0 */ cvt.s.w $f14,$f10 -/* f003064: 8464000c */ lh $a0,0xc($v1) -/* f003068: 846c0014 */ lh $t4,0x14($v1) -/* f00306c: 8465000e */ lh $a1,0xe($v1) -/* f003070: 01445823 */ subu $t3,$t2,$a0 -/* f003074: 468022a0 */ cvt.s.w $f10,$f4 -/* f003078: 448b4000 */ mtc1 $t3,$f8 -/* f00307c: 01856823 */ subu $t5,$t4,$a1 -/* f003080: 448d3000 */ mtc1 $t5,$f6 -/* f003084: 460e6382 */ mul.s $f14,$f12,$f14 -/* f003088: e7aa00bc */ swc1 $f10,0xbc($sp) -/* f00308c: 84780018 */ lh $t8,0x18($v1) -/* f003090: 46804420 */ cvt.s.w $f16,$f8 -/* f003094: 0304c823 */ subu $t9,$t8,$a0 -/* f003098: 44994000 */ mtc1 $t9,$f8 -/* f00309c: 27a40098 */ addiu $a0,$sp,0x98 -/* f0030a0: 468034a0 */ cvt.s.w $f18,$f6 -/* f0030a4: 46106402 */ mul.s $f16,$f12,$f16 -/* f0030a8: 00000000 */ nop -/* f0030ac: 46126482 */ mul.s $f18,$f12,$f18 -/* f0030b0: c7ac006c */ lwc1 $f12,0x6c($sp) -/* f0030b4: 468041a0 */ cvt.s.w $f6,$f8 -/* f0030b8: e7a600c0 */ swc1 $f6,0xc0($sp) -/* f0030bc: 846a001a */ lh $t2,0x1a($v1) -/* f0030c0: 01455823 */ subu $t3,$t2,$a1 -/* f0030c4: 448b2000 */ mtc1 $t3,$f4 -/* f0030c8: 27a500a4 */ addiu $a1,$sp,0xa4 -/* f0030cc: 46802220 */ cvt.s.w $f8,$f4 -/* f0030d0: 460a1102 */ mul.s $f4,$f2,$f10 -/* f0030d4: 44885000 */ mtc1 $t0,$f10 -/* f0030d8: 46066002 */ mul.s $f0,$f12,$f6 -/* f0030dc: e7a800c4 */ swc1 $f8,0xc4($sp) -/* f0030e0: 46086082 */ mul.s $f2,$f12,$f8 -/* f0030e4: e7a400bc */ swc1 $f4,0xbc($sp) -/* f0030e8: c7a800bc */ lwc1 $f8,0xbc($sp) -/* f0030ec: 46805120 */ cvt.s.w $f4,$f10 -/* f0030f0: 460e2180 */ add.s $f6,$f4,$f14 -/* f0030f4: 46083280 */ add.s $f10,$f6,$f8 -/* f0030f8: e7aa0098 */ swc1 $f10,0x98($sp) -/* f0030fc: 846c000a */ lh $t4,0xa($v1) -/* f003100: 448c2000 */ mtc1 $t4,$f4 -/* f003104: 00000000 */ nop -/* f003108: 468021a0 */ cvt.s.w $f6,$f4 -/* f00310c: 46103200 */ add.s $f8,$f6,$f16 -/* f003110: 46004280 */ add.s $f10,$f8,$f0 -/* f003114: e7aa009c */ swc1 $f10,0x9c($sp) -/* f003118: 846d000a */ lh $t5,0xa($v1) -/* f00311c: 448d2000 */ mtc1 $t5,$f4 -/* f003120: 00000000 */ nop -/* f003124: 468021a0 */ cvt.s.w $f6,$f4 -/* f003128: 46123200 */ add.s $f8,$f6,$f18 -/* f00312c: 46024280 */ add.s $f10,$f8,$f2 -/* f003130: e7aa00a0 */ swc1 $f10,0xa0($sp) -/* f003134: 806f0007 */ lb $t7,0x7($v1) -/* f003138: 448f2000 */ mtc1 $t7,$f4 -/* f00313c: 00000000 */ nop -/* f003140: 468021a0 */ cvt.s.w $f6,$f4 -/* f003144: e7a6008c */ swc1 $f6,0x8c($sp) -/* f003148: 806e0008 */ lb $t6,0x8($v1) -/* f00314c: 448e4000 */ mtc1 $t6,$f8 -/* f003150: 00000000 */ nop -/* f003154: 468042a0 */ cvt.s.w $f10,$f8 -/* f003158: c7a8008c */ lwc1 $f8,0x8c($sp) -/* f00315c: e7aa0090 */ swc1 $f10,0x90($sp) -/* f003160: 80780009 */ lb $t8,0x9($v1) -/* f003164: 46004287 */ neg.s $f10,$f8 -/* f003168: afa90068 */ sw $t1,0x68($sp) -/* f00316c: 44982000 */ mtc1 $t8,$f4 -/* f003170: e7aa0080 */ swc1 $f10,0x80($sp) -/* f003174: 468021a0 */ cvt.s.w $f6,$f4 -/* f003178: c7a40090 */ lwc1 $f4,0x90($sp) -/* f00317c: e7a60094 */ swc1 $f6,0x94($sp) -/* f003180: c7a80094 */ lwc1 $f8,0x94($sp) -/* f003184: 46002187 */ neg.s $f6,$f4 -/* f003188: 46004287 */ neg.s $f10,$f8 -/* f00318c: e7a60084 */ swc1 $f6,0x84($sp) -/* f003190: 0fc5dc59 */ jal func0f177164 -/* f003194: e7aa0088 */ swc1 $f10,0x88($sp) -/* f003198: c7b200a4 */ lwc1 $f18,0xa4($sp) -/* f00319c: c7b00080 */ lwc1 $f16,0x80($sp) -/* f0031a0: c7ae00a8 */ lwc1 $f14,0xa8($sp) -/* f0031a4: c7ac0084 */ lwc1 $f12,0x84($sp) -/* f0031a8: 46109400 */ add.s $f16,$f18,$f16 -/* f0031ac: c7b200ac */ lwc1 $f18,0xac($sp) -/* f0031b0: c7aa0088 */ lwc1 $f10,0x88($sp) -/* f0031b4: 460c7300 */ add.s $f12,$f14,$f12 -/* f0031b8: 27a400a4 */ addiu $a0,$sp,0xa4 -/* f0031bc: 3c077f1a */ lui $a3,%hi(var7f1a7bc0) -/* f0031c0: 460a9280 */ add.s $f10,$f18,$f10 -/* f0031c4: e7b000a4 */ swc1 $f16,0xa4($sp) -/* f0031c8: e7ac00a8 */ swc1 $f12,0xa8($sp) -/* f0031cc: 00802825 */ or $a1,$a0,$zero -/* f0031d0: e7aa00ac */ swc1 $f10,0xac($sp) -/* f0031d4: 2406060c */ addiu $a2,$zero,0x624 -/* f0031d8: 0fc5dc59 */ jal func0f177164 -/* f0031dc: 24e77bc0 */ addiu $a3,$a3,%lo(var7f1a7bc0) -/* f0031e0: 8fa400d8 */ lw $a0,0xd8($sp) -/* f0031e4: 0004c880 */ sll $t9,$a0,0x2 -/* f0031e8: 0324c821 */ addu $t9,$t9,$a0 -/* f0031ec: 0019c880 */ sll $t9,$t9,0x2 -/* f0031f0: 0c004b70 */ jal random -/* f0031f4: afb90058 */ sw $t9,0x58($sp) -/* f0031f8: 30430003 */ andi $v1,$v0,0x3 -/* f0031fc: 1060000a */ beqz $v1,.L0f003228 -/* f003200: 8fa90068 */ lw $t1,0x68($sp) -/* f003204: 24010001 */ addiu $at,$zero,0x1 -/* f003208: 10610009 */ beq $v1,$at,.L0f003230 -/* f00320c: 24010002 */ addiu $at,$zero,0x2 -/* f003210: 10610009 */ beq $v1,$at,.L0f003238 -/* f003214: 24010003 */ addiu $at,$zero,0x3 -/* f003218: 5061000a */ beql $v1,$at,.L0f003244 -/* f00321c: 24090014 */ addiu $t1,$zero,0x14 -/* f003220: 10000009 */ b .L0f003248 -/* f003224: 8fa400d8 */ lw $a0,0xd8($sp) -.L0f003228: -/* f003228: 10000006 */ b .L0f003244 -/* f00322c: 24090011 */ addiu $t1,$zero,0x11 -.L0f003230: -/* f003230: 10000004 */ b .L0f003244 -/* f003234: 24090012 */ addiu $t1,$zero,0x12 -.L0f003238: -/* f003238: 10000002 */ b .L0f003244 -/* f00323c: 24090013 */ addiu $t1,$zero,0x13 -/* f003240: 24090014 */ addiu $t1,$zero,0x14 -.L0f003244: -/* f003244: 8fa400d8 */ lw $a0,0xd8($sp) -.L0f003248: -/* f003248: 8fa500dc */ lw $a1,0xdc($sp) -/* f00324c: 27a60074 */ addiu $a2,$sp,0x74 -/* f003250: 0fc0037f */ jal lightGetBboxCentre -/* f003254: afa90068 */ sw $t1,0x68($sp) -/* f003258: 3c0b800a */ lui $t3,%hi(g_BgRooms) -/* f00325c: 8d6b4cc4 */ lw $t3,%lo(g_BgRooms)($t3) -/* f003260: 8fac0058 */ lw $t4,0x58($sp) -/* f003264: c7a60074 */ lwc1 $f6,0x74($sp) -/* f003268: c7a40078 */ lwc1 $f4,0x78($sp) -/* f00326c: 016c1821 */ addu $v1,$t3,$t4 -/* f003270: c4680004 */ lwc1 $f8,0x4($v1) -/* f003274: 8fa90068 */ lw $t1,0x68($sp) -/* f003278: 27ad008c */ addiu $t5,$sp,0x8c -/* f00327c: 46083280 */ add.s $f10,$f6,$f8 -/* f003280: 8fa400d8 */ lw $a0,0xd8($sp) -/* f003284: 00002825 */ or $a1,$zero,$zero -/* f003288: 27a60074 */ addiu $a2,$sp,0x74 -/* f00328c: e7aa0074 */ swc1 $f10,0x74($sp) -/* f003290: c4660008 */ lwc1 $f6,0x8($v1) -/* f003294: c7aa007c */ lwc1 $f10,0x7c($sp) -/* f003298: 27a700a4 */ addiu $a3,$sp,0xa4 -/* f00329c: 46062200 */ add.s $f8,$f4,$f6 -/* f0032a0: e7a80078 */ swc1 $f8,0x78($sp) -/* f0032a4: c464000c */ lwc1 $f4,0xc($v1) -/* f0032a8: afad0010 */ sw $t5,0x10($sp) -/* f0032ac: afa90014 */ sw $t1,0x14($sp) -/* f0032b0: 46045180 */ add.s $f6,$f10,$f4 -/* f0032b4: 0fc4be7c */ jal sparksCreate -/* f0032b8: e7a6007c */ swc1 $f6,0x7c($sp) -/* f0032bc: 0c004b70 */ jal random -/* f0032c0: 00000000 */ nop -/* f0032c4: 304f0003 */ andi $t7,$v0,0x3 -/* f0032c8: 15e00008 */ bnez $t7,.L0f0032ec -/* f0032cc: 8fae00d8 */ lw $t6,0xd8($sp) -/* f0032d0: 2418ffff */ addiu $t8,$zero,-1 -/* f0032d4: a7ae0064 */ sh $t6,0x64($sp) -/* f0032d8: a7b80066 */ sh $t8,0x66($sp) -/* f0032dc: 27a40074 */ addiu $a0,$sp,0x74 -/* f0032e0: 27a50064 */ addiu $a1,$sp,0x64 -/* f0032e4: 0fc4ba08 */ jal smokeCreateSimple -/* f0032e8: 24060007 */ addiu $a2,$zero,0x7 -.L0f0032ec: -/* f0032ec: 8fa400d8 */ lw $a0,0xd8($sp) -/* f0032f0: 24050040 */ addiu $a1,$zero,0x40 -/* f0032f4: 0fc010e3 */ jal roomFlashLighting -/* f0032f8: 24060050 */ addiu $a2,$zero,0x50 -/* f0032fc: 0fc25480 */ jal propsndGetRandomSparkSound -/* f003300: 00000000 */ nop -/* f003304: 3c01bf80 */ lui $at,0xbf80 -/* f003308: 44810000 */ mtc1 $at,$f0 -/* f00330c: 8faf00d8 */ lw $t7,0xd8($sp) -/* f003310: 00023400 */ sll $a2,$v0,0x10 -/* f003314: 0006cc03 */ sra $t9,$a2,0x10 -/* f003318: 240affff */ addiu $t2,$zero,-1 -/* f00331c: 240b0400 */ addiu $t3,$zero,0x400 -/* f003320: 240c0010 */ addiu $t4,$zero,0x10 -/* f003324: 27ad0074 */ addiu $t5,$sp,0x74 -/* f003328: afad0020 */ sw $t5,0x20($sp) -/* f00332c: afac001c */ sw $t4,0x1c($sp) -/* f003330: afab0014 */ sw $t3,0x14($sp) -/* f003334: afaa0010 */ sw $t2,0x10($sp) -/* f003338: 03203025 */ or $a2,$t9,$zero -/* f00333c: 00002025 */ or $a0,$zero,$zero -/* f003340: 00002825 */ or $a1,$zero,$zero -/* f003344: 2407ffff */ addiu $a3,$zero,-1 -/* f003348: afa00018 */ sw $zero,0x18($sp) -/* f00334c: afa00028 */ sw $zero,0x28($sp) -/* f003350: afaf002c */ sw $t7,0x2c($sp) -/* f003354: e7a00024 */ swc1 $f0,0x24($sp) -/* f003358: e7a00030 */ swc1 $f0,0x30($sp) -/* f00335c: e7a00034 */ swc1 $f0,0x34($sp) -/* f003360: 0fc24e7e */ jal propsnd0f0939f8 -/* f003364: e7a00038 */ swc1 $f0,0x38($sp) -/* f003368: 1000000d */ b .L0f0033a0 -/* f00336c: 24020001 */ addiu $v0,$zero,0x1 -.L0f003370: -/* f003370: 0c004b70 */ jal random -/* f003374: afa300d4 */ sw $v1,0xd4($sp) -/* f003378: 24010050 */ addiu $at,$zero,0x50 -/* f00337c: 0041001b */ divu $zero,$v0,$at -/* f003380: 00007010 */ mfhi $t6 -/* f003384: 8fa300d4 */ lw $v1,0xd4($sp) -/* f003388: 55c00005 */ bnezl $t6,.L0f0033a0 -/* f00338c: 00001025 */ or $v0,$zero,$zero -/* f003390: 90790005 */ lbu $t9,0x5($v1) -/* f003394: 372a0010 */ ori $t2,$t9,0x10 -/* f003398: a06a0005 */ sb $t2,0x5($v1) -.L0f00339c: -/* f00339c: 00001025 */ or $v0,$zero,$zero -.L0f0033a0: -/* f0033a0: 8fbf0044 */ lw $ra,0x44($sp) -/* f0033a4: 27bd00d8 */ addiu $sp,$sp,0xd8 -/* f0033a8: 03e00008 */ jr $ra -/* f0033ac: 00000000 */ nop -); -#endif - -const char var7f1a7bb4[] = "dlights.c"; -const char var7f1a7bc0[] = "dlights.c"; -#else -// Mismatch: Documented below bool lightTickBroken(s32 roomnum, s32 lightnum) { struct light *light = (struct light *)(g_BgLightsFileData + ((g_Rooms[roomnum].lightindex + lightnum) * 0x22)); - struct coord spc8; - struct coord spbc; - struct coord spb0; - struct coord spa4; - struct coord sp98; - struct coord sp8c; - struct coord sp80; - struct coord centre; // 74 - f32 rand1; // 70 - f32 rand2; // 6c - s32 sparktype; // 68 if (!light->sparkable) { return false; @@ -1622,9 +966,19 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) if ((random() % 8) == 0) { light->sparking = false; } else if ((random() % 2) == 0) { - rand1 = 2.0f * RANDOMFRAC() - 1.0f; // range -1 to 1 - rand2 = 2.0f * RANDOMFRAC() - 1.0f; // range -1 to 1 - sparktype = -1; + struct coord spc8; + struct coord spbc; + struct coord spb0; + struct coord spa4; + struct coord sp98; + struct coord sp8c; + struct coord sp80; + struct coord centre; + f32 rand1 = 2.0f * RANDOMFRAC() - 1.0f; // range -1 to 1 + f32 rand2 = 2.0f * RANDOMFRAC() - 1.0f; // range -1 to 1 + s32 sparktype = -1; + s16 smokerooms[2]; + struct bgroom *room; spc8.x = light->bbox[1].x - light->bbox[0].x; spc8.y = light->bbox[1].y - light->bbox[0].y; @@ -1651,9 +1005,9 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) sp8c.y = light->diry; sp8c.z = light->dirz; - sp80.x = -sp8c.f[0]; - sp80.y = -sp8c.f[1]; - sp80.z = -sp8c.f[2]; + sp80.x = -sp8c.x; + sp80.y = -sp8c.y; + sp80.z = -sp8c.z; func0f177164(&sp98, &spa4, VERSION >= VERSION_NTSC_1_0 ? 1546 : 1570, "dlights.c"); @@ -1663,13 +1017,11 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) func0f177164(&spa4, &spa4, VERSION >= VERSION_NTSC_1_0 ? 1548 : 1572, "dlights.c"); - // Mismatch: Goal loads roomnum * 0x14 into sp58 here but doesn't - // use it until after lightGetBboxCentre. The below statement does - // the same but also emits the load and store instructions. - g_BgRooms[roomnum].unk00 += 0; + room = (void *) (roomnum * sizeof(struct bgroom)); switch (random() % 4) { case 0: + if (roomnum && roomnum && roomnum); sparktype = SPARKTYPE_LIGHT1; break; case 1: @@ -1685,27 +1037,25 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) lightGetBboxCentre(roomnum, lightnum, ¢re); - centre.x += g_BgRooms[roomnum].pos.x; - centre.y += g_BgRooms[roomnum].pos.y; - centre.z += g_BgRooms[roomnum].pos.z; + room = (void *) ((u8 *) g_BgRooms + (u32) room); + centre.x += room->pos.x; + centre.y += room->pos.y; + centre.z += room->pos.z; sparksCreate(roomnum, NULL, ¢re, &spa4, &sp8c, sparktype); if ((random() % 4) == 0) { - s16 smokerooms[2]; // 64 smokerooms[0] = roomnum; smokerooms[1] = -1; smokeCreateSimple(¢re, smokerooms, SMOKETYPE_BULLETIMPACT); } - roomFlashLighting(roomnum, 0x40, 0x50); + roomFlashLighting(roomnum, 64, 80); propsnd0f0939f8(NULL, NULL, propsndGetRandomSparkSound(), -1, -1, 0x400, 0, 0x10, ¢re, -1.0f, 0, roomnum, -1.0f, -1.0f, -1.0f); return true; } } else { - u32 stack; - if ((random() % 80) == 0) { light->sparking = true; } @@ -1713,7 +1063,6 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) return false; } -#endif const char var7f1a7bcc[] = "L2 - g_bfGlobalLightRebuild = %d"; const char var7f1a7bf0[] = "Acoustic Shadowing is %s";