diff --git a/README.md b/README.md index 7019d05d..0e9e664d 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of November 4, 2023, this is our current score: +As of November 10, 2023, this is our current score: -    Decomp progress: 64.12% +    Decomp progress: 65.01%     Documentation progress: 35.21% @@ -128,20 +128,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of November 4, 2023, this is our current score: +As of November 10, 2023, this is our current score: ``` ==================================================================== ADVENTURE ONE (ASM -> C Decompilation) - -------------- 64.12% Complete (67.03% NON_MATCHING) --------------- - # Decompiled functions: 1665 - # GLOBAL_ASM remaining: 180 - # NON_MATCHING functions: 16 - # NON_EQUIVALENT WIP functions: 49 + -------------- 65.01% Complete (67.79% NON_MATCHING) --------------- + # Decompiled functions: 1670 + # GLOBAL_ASM remaining: 175 + # NON_MATCHING functions: 15 + # NON_EQUIVALENT WIP functions: 51 --------------------------- Game Status ---------------------------- Balloons: 30/47, Keys: 3/4, Trophies: 3/5 T.T. Amulets: 3/4, Wizpig Amulets: 3/4 -------------------------------------------------------------------- - We are racing Taj in the Plane Challenge. (Lap 1/3) + We are racing Taj in the Plane Challenge. (Lap 3/3) ==================================================================== ADVENTURE TWO (Cleanup & Documentation) ------------------------- 35.21% Complete -------------------------- diff --git a/asm/math_util/load_rng_seed.s b/asm/math_util/load_rng_seed.s new file mode 100644 index 00000000..ff637e9b --- /dev/null +++ b/asm/math_util/load_rng_seed.s @@ -0,0 +1,6 @@ +glabel load_rng_seed +/* 7052C 8006F92C 3C04800E */ lui $a0, %hi(gPrevRNGSeed) +/* 70530 8006F930 8C84D438 */ lw $a0, %lo(gPrevRNGSeed)($a0) +/* 70534 8006F934 3C01800E */ lui $at, %hi(gCurrentRNGSeed) +/* 70538 8006F938 03E00008 */ jr $ra +/* 7053C 8006F93C AC24D434 */ sw $a0, %lo(gCurrentRNGSeed)($at) \ No newline at end of file diff --git a/asm/math_util/save_rng_seed.s b/asm/math_util/save_rng_seed.s new file mode 100644 index 00000000..8050e69a --- /dev/null +++ b/asm/math_util/save_rng_seed.s @@ -0,0 +1,6 @@ +glabel save_rng_seed +/* 70518 8006F918 3C04800E */ lui $a0, %hi(gCurrentRNGSeed) +/* 7051C 8006F91C 8C84D434 */ lw $a0, %lo(gCurrentRNGSeed)($a0) +/* 70520 8006F920 3C01800E */ lui $at, %hi(gPrevRNGSeed) +/* 70524 8006F924 03E00008 */ jr $ra +/* 70528 8006F928 AC24D438 */ sw $a0, %lo(gPrevRNGSeed)($at) \ No newline at end of file diff --git a/asm/non_matchings/object_functions/func_8003F2E8.s b/asm/non_matchings/object_functions/func_8003F2E8.s deleted file mode 100644 index 5966b8e3..00000000 --- a/asm/non_matchings/object_functions/func_8003F2E8.s +++ /dev/null @@ -1,651 +0,0 @@ -.late_rodata -glabel D_800E6200 -.double 1.2 -glabel D_800E6208 -.float -10000.0 -glabel D_800E620C -.float 0.6 -glabel D_800E6210 -.float 0.6 -glabel D_800E6214 -.float 0.075 - -.text -glabel func_8003F2E8 -/* 03FEE8 8003F2E8 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 03FEEC 8003F2EC AFBF002C */ sw $ra, 0x2c($sp) -/* 03FEF0 8003F2F0 AFB00028 */ sw $s0, 0x28($sp) -/* 03FEF4 8003F2F4 AFA50074 */ sw $a1, 0x74($sp) -/* 03FEF8 8003F2F8 8C8E0064 */ lw $t6, 0x64($a0) -/* 03FEFC 8003F2FC 44852000 */ mtc1 $a1, $f4 -/* 03FF00 8003F300 AFAE0040 */ sw $t6, 0x40($sp) -/* 03FF04 8003F304 8DD80004 */ lw $t8, 4($t6) -/* 03FF08 8003F308 3C0B8000 */ lui $t3, %hi(osTvType) # $t3, 0x8000 -/* 03FF0C 8003F30C 468020A0 */ cvt.s.w $f2, $f4 -/* 03FF10 8003F310 8D6B0300 */ lw $t3, %lo(osTvType)($t3) -/* 03FF14 8003F314 8F190064 */ lw $t9, 0x64($t8) -/* 03FF18 8003F318 00808025 */ move $s0, $a0 -/* 03FF1C 8003F31C 46001006 */ mov.s $f0, $f2 -/* 03FF20 8003F320 15600007 */ bnez $t3, .L8003F340 -/* 03FF24 8003F324 AFB90064 */ sw $t9, 0x64($sp) -/* 03FF28 8003F328 3C01800E */ lui $at, %hi(D_800E6200 + 4) # $at, 0x800e -/* 03FF2C 8003F32C C4296200 */ lwc1 $f9, %lo(D_800E6200)($at) -/* 03FF30 8003F330 C4286204 */ lwc1 $f8, %lo(D_800E6200 + 4)($at) -/* 03FF34 8003F334 460011A1 */ cvt.d.s $f6, $f2 -/* 03FF38 8003F338 46283282 */ mul.d $f10, $f6, $f8 -/* 03FF3C 8003F33C 46205020 */ cvt.s.d $f0, $f10 -.L8003F340: -/* 03FF40 8003F340 26080078 */ addiu $t0, $s0, 0x78 -/* 03FF44 8003F344 910C0004 */ lbu $t4, 4($t0) -/* 03FF48 8003F348 00000000 */ nop -/* 03FF4C 8003F34C 15800081 */ bnez $t4, .L8003F554 -/* 03FF50 8003F350 8FAA0040 */ lw $t2, 0x40($sp) -/* 03FF54 8003F354 C612001C */ lwc1 $f18, 0x1c($s0) -/* 03FF58 8003F358 C610000C */ lwc1 $f16, 0xc($s0) -/* 03FF5C 8003F35C 46009102 */ mul.s $f4, $f18, $f0 -/* 03FF60 8003F360 3C014110 */ li $at, 0x41100000 # 9.000000 -/* 03FF64 8003F364 2605000C */ addiu $a1, $s0, 0xc -/* 03FF68 8003F368 24040001 */ li $a0, 1 -/* 03FF6C 8003F36C 46048180 */ add.s $f6, $f16, $f4 -/* 03FF70 8003F370 27A60058 */ addiu $a2, $sp, 0x58 -/* 03FF74 8003F374 E7A60058 */ swc1 $f6, 0x58($sp) -/* 03FF78 8003F378 C60A0020 */ lwc1 $f10, 0x20($s0) -/* 03FF7C 8003F37C C6080010 */ lwc1 $f8, 0x10($s0) -/* 03FF80 8003F380 46005482 */ mul.s $f18, $f10, $f0 -/* 03FF84 8003F384 2407FFFF */ li $a3, -1 -/* 03FF88 8003F388 46124400 */ add.s $f16, $f8, $f18 -/* 03FF8C 8003F38C 44819000 */ mtc1 $at, $f18 -/* 03FF90 8003F390 E7B0005C */ swc1 $f16, 0x5c($sp) -/* 03FF94 8003F394 C6060024 */ lwc1 $f6, 0x24($s0) -/* 03FF98 8003F398 C6040014 */ lwc1 $f4, 0x14($s0) -/* 03FF9C 8003F39C 46003282 */ mul.s $f10, $f6, $f0 -/* 03FFA0 8003F3A0 E7A00050 */ swc1 $f0, 0x50($sp) -/* 03FFA4 8003F3A4 AFA80038 */ sw $t0, 0x38($sp) -/* 03FFA8 8003F3A8 AFA50034 */ sw $a1, 0x34($sp) -/* 03FFAC 8003F3AC 460A2200 */ add.s $f8, $f4, $f10 -/* 03FFB0 8003F3B0 E7B20054 */ swc1 $f18, 0x54($sp) -/* 03FFB4 8003F3B4 0C00C44C */ jal func_80031130 -/* 03FFB8 8003F3B8 E7A80060 */ swc1 $f8, 0x60($sp) -/* 03FFBC 8003F3BC 240DFFFF */ li $t5, -1 -/* 03FFC0 8003F3C0 8FA40034 */ lw $a0, 0x34($sp) -/* 03FFC4 8003F3C4 240E0001 */ li $t6, 1 -/* 03FFC8 8003F3C8 27AF004C */ addiu $t7, $sp, 0x4c -/* 03FFCC 8003F3CC AFA0004C */ sw $zero, 0x4c($sp) -/* 03FFD0 8003F3D0 A3AD0047 */ sb $t5, 0x47($sp) -/* 03FFD4 8003F3D4 AFAF0014 */ sw $t7, 0x14($sp) -/* 03FFD8 8003F3D8 AFAE0010 */ sw $t6, 0x10($sp) -/* 03FFDC 8003F3DC 27A50058 */ addiu $a1, $sp, 0x58 -/* 03FFE0 8003F3E0 27A60054 */ addiu $a2, $sp, 0x54 -/* 03FFE4 8003F3E4 0C00C580 */ jal func_80031600 -/* 03FFE8 8003F3E8 27A70047 */ addiu $a3, $sp, 0x47 -/* 03FFEC 8003F3EC C7B00058 */ lwc1 $f16, 0x58($sp) -/* 03FFF0 8003F3F0 C606000C */ lwc1 $f6, 0xc($s0) -/* 03FFF4 8003F3F4 C7A00050 */ lwc1 $f0, 0x50($sp) -/* 03FFF8 8003F3F8 46068101 */ sub.s $f4, $f16, $f6 -/* 03FFFC 8003F3FC 8FA80038 */ lw $t0, 0x38($sp) -/* 040000 8003F400 46002283 */ div.s $f10, $f4, $f0 -/* 040004 8003F404 C6120010 */ lwc1 $f18, 0x10($s0) -/* 040008 8003F408 240B0001 */ li $t3, 1 -/* 04000C 8003F40C 02002025 */ move $a0, $s0 -/* 040010 8003F410 27A50054 */ addiu $a1, $sp, 0x54 -/* 040014 8003F414 00003025 */ move $a2, $zero -/* 040018 8003F418 24070001 */ li $a3, 1 -/* 04001C 8003F41C E60A001C */ swc1 $f10, 0x1c($s0) -/* 040020 8003F420 C7A8005C */ lwc1 $f8, 0x5c($sp) -/* 040024 8003F424 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 040028 8003F428 46124401 */ sub.s $f16, $f8, $f18 -/* 04002C 8003F42C 00000000 */ nop -/* 040030 8003F430 46008183 */ div.s $f6, $f16, $f0 -/* 040034 8003F434 E6060020 */ swc1 $f6, 0x20($s0) -/* 040038 8003F438 C7A40060 */ lwc1 $f4, 0x60($sp) -/* 04003C 8003F43C 00000000 */ nop -/* 040040 8003F440 460A2201 */ sub.s $f8, $f4, $f10 -/* 040044 8003F444 00000000 */ nop -/* 040048 8003F448 46004483 */ div.s $f18, $f8, $f0 -/* 04004C 8003F44C E6120024 */ swc1 $f18, 0x24($s0) -/* 040050 8003F450 C7B00058 */ lwc1 $f16, 0x58($sp) -/* 040054 8003F454 00000000 */ nop -/* 040058 8003F458 E610000C */ swc1 $f16, 0xc($s0) -/* 04005C 8003F45C C7A6005C */ lwc1 $f6, 0x5c($sp) -/* 040060 8003F460 00000000 */ nop -/* 040064 8003F464 E6060010 */ swc1 $f6, 0x10($s0) -/* 040068 8003F468 C7A40060 */ lwc1 $f4, 0x60($sp) -/* 04006C 8003F46C 00000000 */ nop -/* 040070 8003F470 E6040014 */ swc1 $f4, 0x14($s0) -/* 040074 8003F474 8FB8004C */ lw $t8, 0x4c($sp) -/* 040078 8003F478 8FB90064 */ lw $t9, 0x64($sp) -/* 04007C 8003F47C 17000005 */ bnez $t8, .L8003F494 -/* 040080 8003F480 00000000 */ nop -/* 040084 8003F484 832A01D6 */ lb $t2, 0x1d6($t9) -/* 040088 8003F488 24010002 */ li $at, 2 -/* 04008C 8003F48C 15410013 */ bne $t2, $at, .L8003F4DC -/* 040090 8003F490 00000000 */ nop -.L8003F494: -/* 040094 8003F494 44805000 */ mtc1 $zero, $f10 -/* 040098 8003F498 44804000 */ mtc1 $zero, $f8 -/* 04009C 8003F49C E60A001C */ swc1 $f10, 0x1c($s0) -/* 0400A0 8003F4A0 E6080024 */ swc1 $f8, 0x24($s0) -/* 0400A4 8003F4A4 A10B0004 */ sb $t3, 4($t0) -/* 0400A8 8003F4A8 A1000005 */ sb $zero, 5($t0) -/* 0400AC 8003F4AC A5000006 */ sh $zero, 6($t0) -/* 0400B0 8003F4B0 8FAC0040 */ lw $t4, 0x40($sp) -/* 0400B4 8003F4B4 2401000A */ li $at, 10 -/* 0400B8 8003F4B8 918D0018 */ lbu $t5, 0x18($t4) -/* 0400BC 8003F4BC 00000000 */ nop -/* 0400C0 8003F4C0 15A10006 */ bne $t5, $at, .L8003F4DC -/* 0400C4 8003F4C4 3C014180 */ li $at, 0x41800000 # 16.000000 -/* 0400C8 8003F4C8 44818000 */ mtc1 $at, $f16 -/* 0400CC 8003F4CC C6120010 */ lwc1 $f18, 0x10($s0) -/* 0400D0 8003F4D0 00000000 */ nop -/* 0400D4 8003F4D4 46109180 */ add.s $f6, $f18, $f16 -/* 0400D8 8003F4D8 E6060010 */ swc1 $f6, 0x10($s0) -.L8003F4DC: -/* 0400DC 8003F4DC 3C01800E */ lui $at, %hi(D_800E6208) # $at, 0x800e -/* 0400E0 8003F4E0 C4246208 */ lwc1 $f4, %lo(D_800E6208)($at) -/* 0400E4 8003F4E4 AFA80038 */ sw $t0, 0x38($sp) -/* 0400E8 8003F4E8 0C00AE6F */ jal func_8002B9BC -/* 0400EC 8003F4EC E7A40054 */ swc1 $f4, 0x54($sp) -/* 0400F0 8003F4F0 8FA80038 */ lw $t0, 0x38($sp) -/* 0400F4 8003F4F4 10400017 */ beqz $v0, .L8003F554 -/* 0400F8 8003F4F8 8FAA0040 */ lw $t2, 0x40($sp) -/* 0400FC 8003F4FC C60A0010 */ lwc1 $f10, 0x10($s0) -/* 040100 8003F500 C7A80054 */ lwc1 $f8, 0x54($sp) -/* 040104 8003F504 240E0001 */ li $t6, 1 -/* 040108 8003F508 4608503C */ c.lt.s $f10, $f8 -/* 04010C 8003F50C 240F0001 */ li $t7, 1 -/* 040110 8003F510 45000010 */ bc1f .L8003F554 -/* 040114 8003F514 8FAA0040 */ lw $t2, 0x40($sp) -/* 040118 8003F518 A10E0004 */ sb $t6, 4($t0) -/* 04011C 8003F51C A10F0005 */ sb $t7, 5($t0) -/* 040120 8003F520 A5000006 */ sh $zero, 6($t0) -/* 040124 8003F524 8FB80040 */ lw $t8, 0x40($sp) -/* 040128 8003F528 2401000A */ li $at, 10 -/* 04012C 8003F52C 93190018 */ lbu $t9, 0x18($t8) -/* 040130 8003F530 00000000 */ nop -/* 040134 8003F534 17210006 */ bne $t9, $at, .L8003F550 -/* 040138 8003F538 3C014180 */ li $at, 0x41800000 # 16.000000 -/* 04013C 8003F53C 44818000 */ mtc1 $at, $f16 -/* 040140 8003F540 C6120010 */ lwc1 $f18, 0x10($s0) -/* 040144 8003F544 00000000 */ nop -/* 040148 8003F548 46109180 */ add.s $f6, $f18, $f16 -/* 04014C 8003F54C E6060010 */ swc1 $f6, 0x10($s0) -.L8003F550: -/* 040150 8003F550 8FAA0040 */ lw $t2, 0x40($sp) -.L8003F554: -/* 040154 8003F554 24010003 */ li $at, 3 -/* 040158 8003F558 914B0018 */ lbu $t3, 0x18($t2) -/* 04015C 8003F55C 00000000 */ nop -/* 040160 8003F560 1561003F */ bne $t3, $at, .L8003F660 -/* 040164 8003F564 8FAD0040 */ lw $t5, 0x40($sp) -/* 040168 8003F568 91020004 */ lbu $v0, 4($t0) -/* 04016C 8003F56C 24010001 */ li $at, 1 -/* 040170 8003F570 1040003B */ beqz $v0, .L8003F660 -/* 040174 8003F574 8FAD0040 */ lw $t5, 0x40($sp) -/* 040178 8003F578 1441000D */ bne $v0, $at, .L8003F5B0 -/* 04017C 8003F57C 00000000 */ nop -/* 040180 8003F580 850C0006 */ lh $t4, 6($t0) -/* 040184 8003F584 8FAD0074 */ lw $t5, 0x74($sp) -/* 040188 8003F588 2418000C */ li $t8, 12 -/* 04018C 8003F58C 018D7021 */ addu $t6, $t4, $t5 -/* 040190 8003F590 A50E0006 */ sh $t6, 6($t0) -/* 040194 8003F594 850F0006 */ lh $t7, 6($t0) -/* 040198 8003F598 00000000 */ nop -/* 04019C 8003F59C 29E1000D */ slti $at, $t7, 0xd -/* 0401A0 8003F5A0 14200012 */ bnez $at, .L8003F5EC -/* 0401A4 8003F5A4 8FAE0064 */ lw $t6, 0x64($sp) -/* 0401A8 8003F5A8 1000000F */ b .L8003F5E8 -/* 0401AC 8003F5AC A5180006 */ sh $t8, 6($t0) -.L8003F5B0: -/* 0401B0 8003F5B0 85190006 */ lh $t9, 6($t0) -/* 0401B4 8003F5B4 8FAA0074 */ lw $t2, 0x74($sp) -/* 0401B8 8003F5B8 240D0001 */ li $t5, 1 -/* 0401BC 8003F5BC 032A5823 */ subu $t3, $t9, $t2 -/* 0401C0 8003F5C0 A50B0006 */ sh $t3, 6($t0) -/* 0401C4 8003F5C4 850C0006 */ lh $t4, 6($t0) -/* 0401C8 8003F5C8 02002025 */ move $a0, $s0 -/* 0401CC 8003F5CC 1D800007 */ bgtz $t4, .L8003F5EC -/* 0401D0 8003F5D0 8FAE0064 */ lw $t6, 0x64($sp) -/* 0401D4 8003F5D4 A50D0006 */ sh $t5, 6($t0) -/* 0401D8 8003F5D8 0C003FEE */ jal free_object -/* 0401DC 8003F5DC AFA80038 */ sw $t0, 0x38($sp) -/* 0401E0 8003F5E0 8FA80038 */ lw $t0, 0x38($sp) -/* 0401E4 8003F5E4 00000000 */ nop -.L8003F5E8: -/* 0401E8 8003F5E8 8FAE0064 */ lw $t6, 0x64($sp) -.L8003F5EC: -/* 0401EC 8003F5EC 24010002 */ li $at, 2 -/* 0401F0 8003F5F0 81CF01D6 */ lb $t7, 0x1d6($t6) -/* 0401F4 8003F5F4 00000000 */ nop -/* 0401F8 8003F5F8 11E10019 */ beq $t7, $at, .L8003F660 -/* 0401FC 8003F5FC 8FAD0040 */ lw $t5, 0x40($sp) -/* 040200 8003F600 91180005 */ lbu $t8, 5($t0) -/* 040204 8003F604 85020006 */ lh $v0, 6($t0) -/* 040208 8003F608 13000009 */ beqz $t8, .L8003F630 -/* 04020C 8003F60C 00000000 */ nop -/* 040210 8003F610 44822000 */ mtc1 $v0, $f4 -/* 040214 8003F614 3C01800E */ lui $at, %hi(D_800E620C) # $at, 0x800e -/* 040218 8003F618 468022A0 */ cvt.s.w $f10, $f4 -/* 04021C 8003F61C C428620C */ lwc1 $f8, %lo(D_800E620C)($at) -/* 040220 8003F620 8E190058 */ lw $t9, 0x58($s0) -/* 040224 8003F624 46085482 */ mul.s $f18, $f10, $f8 -/* 040228 8003F628 10000008 */ b .L8003F64C -/* 04022C 8003F62C E7320000 */ swc1 $f18, ($t9) -.L8003F630: -/* 040230 8003F630 44828000 */ mtc1 $v0, $f16 -/* 040234 8003F634 3C01800E */ lui $at, %hi(D_800E6210) # $at, 0x800e -/* 040238 8003F638 468081A0 */ cvt.s.w $f6, $f16 -/* 04023C 8003F63C C4246210 */ lwc1 $f4, %lo(D_800E6210)($at) -/* 040240 8003F640 8E0A0050 */ lw $t2, 0x50($s0) -/* 040244 8003F644 46043282 */ mul.s $f10, $f6, $f4 -/* 040248 8003F648 E54A0000 */ swc1 $f10, ($t2) -.L8003F64C: -/* 04024C 8003F64C 860B0006 */ lh $t3, 6($s0) -/* 040250 8003F650 00000000 */ nop -/* 040254 8003F654 356C1000 */ ori $t4, $t3, 0x1000 -/* 040258 8003F658 A60C0006 */ sh $t4, 6($s0) -/* 04025C 8003F65C 8FAD0040 */ lw $t5, 0x40($sp) -.L8003F660: -/* 040260 8003F660 2401000A */ li $at, 10 -/* 040264 8003F664 91AE0018 */ lbu $t6, 0x18($t5) -/* 040268 8003F668 00000000 */ nop -/* 04026C 8003F66C 15C10076 */ bne $t6, $at, .L8003F848 -/* 040270 8003F670 00000000 */ nop -/* 040274 8003F674 8DAF0000 */ lw $t7, ($t5) -/* 040278 8003F678 00000000 */ nop -/* 04027C 8003F67C 11E00013 */ beqz $t7, .L8003F6CC -/* 040280 8003F680 00000000 */ nop -/* 040284 8003F684 44800000 */ mtc1 $zero, $f0 -/* 040288 8003F688 00000000 */ nop -/* 04028C 8003F68C E600000C */ swc1 $f0, 0xc($s0) -/* 040290 8003F690 E6000010 */ swc1 $f0, 0x10($s0) -/* 040294 8003F694 E6000014 */ swc1 $f0, 0x14($s0) -/* 040298 8003F698 0C004558 */ jal ignore_bounds_check -/* 04029C 8003F69C AFA80038 */ sw $t0, 0x38($sp) -/* 0402A0 8003F6A0 8FB80040 */ lw $t8, 0x40($sp) -/* 0402A4 8003F6A4 02002025 */ move $a0, $s0 -/* 0402A8 8003F6A8 8F020000 */ lw $v0, ($t8) -/* 0402AC 8003F6AC 00000000 */ nop -/* 0402B0 8003F6B0 8C45000C */ lw $a1, 0xc($v0) -/* 0402B4 8003F6B4 8C460010 */ lw $a2, 0x10($v0) -/* 0402B8 8003F6B8 8C470014 */ lw $a3, 0x14($v0) -/* 0402BC 8003F6BC 0C00455C */ jal move_object -/* 0402C0 8003F6C0 00000000 */ nop -/* 0402C4 8003F6C4 8FA80038 */ lw $t0, 0x38($sp) -/* 0402C8 8003F6C8 00000000 */ nop -.L8003F6CC: -/* 0402CC 8003F6CC 91020004 */ lbu $v0, 4($t0) -/* 0402D0 8003F6D0 24010001 */ li $at, 1 -/* 0402D4 8003F6D4 10410003 */ beq $v0, $at, .L8003F6E4 -/* 0402D8 8003F6D8 24010002 */ li $at, 2 -/* 0402DC 8003F6DC 1441000C */ bne $v0, $at, .L8003F710 -/* 0402E0 8003F6E0 00000000 */ nop -.L8003F6E4: -/* 0402E4 8003F6E4 85190006 */ lh $t9, 6($t0) -/* 0402E8 8003F6E8 8FAA0074 */ lw $t2, 0x74($sp) -/* 0402EC 8003F6EC 240E0014 */ li $t6, 20 -/* 0402F0 8003F6F0 032A5821 */ addu $t3, $t9, $t2 -/* 0402F4 8003F6F4 A50B0006 */ sh $t3, 6($t0) -/* 0402F8 8003F6F8 850C0006 */ lh $t4, 6($t0) -/* 0402FC 8003F6FC 00000000 */ nop -/* 040300 8003F700 29810015 */ slti $at, $t4, 0x15 -/* 040304 8003F704 14200002 */ bnez $at, .L8003F710 -/* 040308 8003F708 00000000 */ nop -/* 04030C 8003F70C A50E0006 */ sh $t6, 6($t0) -.L8003F710: -/* 040310 8003F710 910D0004 */ lbu $t5, 4($t0) -/* 040314 8003F714 24010002 */ li $at, 2 -/* 040318 8003F718 15A10020 */ bne $t5, $at, .L8003F79C -/* 04031C 8003F71C 00000000 */ nop -/* 040320 8003F720 910F0005 */ lbu $t7, 5($t0) -/* 040324 8003F724 8FB80074 */ lw $t8, 0x74($sp) -/* 040328 8003F728 240B0003 */ li $t3, 3 -/* 04032C 8003F72C 01F8C821 */ addu $t9, $t7, $t8 -/* 040330 8003F730 332A00FF */ andi $t2, $t9, 0xff -/* 040334 8003F734 29410079 */ slti $at, $t2, 0x79 -/* 040338 8003F738 14200018 */ bnez $at, .L8003F79C -/* 04033C 8003F73C A1190005 */ sb $t9, 5($t0) -/* 040340 8003F740 A10B0004 */ sb $t3, 4($t0) -/* 040344 8003F744 8FAC0040 */ lw $t4, 0x40($sp) -/* 040348 8003F748 00000000 */ nop -/* 04034C 8003F74C 8D84001C */ lw $a0, 0x1c($t4) -/* 040350 8003F750 00000000 */ nop -/* 040354 8003F754 10800006 */ beqz $a0, .L8003F770 -/* 040358 8003F758 00000000 */ nop -/* 04035C 8003F75C 0C0025BE */ jal func_800096F8 -/* 040360 8003F760 AFA80038 */ sw $t0, 0x38($sp) -/* 040364 8003F764 8FAE0040 */ lw $t6, 0x40($sp) -/* 040368 8003F768 8FA80038 */ lw $t0, 0x38($sp) -/* 04036C 8003F76C ADC0001C */ sw $zero, 0x1c($t6) -.L8003F770: -/* 040370 8003F770 8E05000C */ lw $a1, 0xc($s0) -/* 040374 8003F774 8E060010 */ lw $a2, 0x10($s0) -/* 040378 8003F778 8E070014 */ lw $a3, 0x14($s0) -/* 04037C 8003F77C 240D0004 */ li $t5, 4 -/* 040380 8003F780 AFAD0010 */ sw $t5, 0x10($sp) -/* 040384 8003F784 AFA80038 */ sw $t0, 0x38($sp) -/* 040388 8003F788 AFA00014 */ sw $zero, 0x14($sp) -/* 04038C 8003F78C 0C002556 */ jal play_sound_at_position -/* 040390 8003F790 24040155 */ li $a0, 341 -/* 040394 8003F794 8FA80038 */ lw $t0, 0x38($sp) -/* 040398 8003F798 00000000 */ nop -.L8003F79C: -/* 04039C 8003F79C 910F0004 */ lbu $t7, 4($t0) -/* 0403A0 8003F7A0 24010003 */ li $at, 3 -/* 0403A4 8003F7A4 15E10018 */ bne $t7, $at, .L8003F808 -/* 0403A8 8003F7A8 24180001 */ li $t8, 1 -/* 0403AC 8003F7AC AE180074 */ sw $t8, 0x74($s0) -/* 0403B0 8003F7B0 8FA50074 */ lw $a1, 0x74($sp) -/* 0403B4 8003F7B4 AFA80038 */ sw $t0, 0x38($sp) -/* 0403B8 8003F7B8 0C02BF0F */ jal func_800AFC3C -/* 0403BC 8003F7BC 02002025 */ move $a0, $s0 -/* 0403C0 8003F7C0 86190006 */ lh $t9, 6($s0) -/* 0403C4 8003F7C4 8FA80038 */ lw $t0, 0x38($sp) -/* 0403C8 8003F7C8 372A4000 */ ori $t2, $t9, 0x4000 -/* 0403CC 8003F7CC A60A0006 */ sh $t2, 6($s0) -/* 0403D0 8003F7D0 8FAC0074 */ lw $t4, 0x74($sp) -/* 0403D4 8003F7D4 850B0006 */ lh $t3, 6($t0) -/* 0403D8 8003F7D8 240F0001 */ li $t7, 1 -/* 0403DC 8003F7DC 016C7023 */ subu $t6, $t3, $t4 -/* 0403E0 8003F7E0 A50E0006 */ sh $t6, 6($t0) -/* 0403E4 8003F7E4 850D0006 */ lh $t5, 6($t0) -/* 0403E8 8003F7E8 02002025 */ move $a0, $s0 -/* 0403EC 8003F7EC 1DA00006 */ bgtz $t5, .L8003F808 -/* 0403F0 8003F7F0 00000000 */ nop -/* 0403F4 8003F7F4 A50F0006 */ sh $t7, 6($t0) -/* 0403F8 8003F7F8 0C003FEE */ jal free_object -/* 0403FC 8003F7FC AFA80038 */ sw $t0, 0x38($sp) -/* 040400 8003F800 8FA80038 */ lw $t0, 0x38($sp) -/* 040404 8003F804 00000000 */ nop -.L8003F808: -/* 040408 8003F808 91180004 */ lbu $t8, 4($t0) -/* 04040C 8003F80C 00000000 */ nop -/* 040410 8003F810 13000009 */ beqz $t8, .L8003F838 -/* 040414 8003F814 8FAB0074 */ lw $t3, 0x74($sp) -/* 040418 8003F818 85190006 */ lh $t9, 6($t0) -/* 04041C 8003F81C 3C01800E */ lui $at, %hi(D_800E6214) # $at, 0x800e -/* 040420 8003F820 44994000 */ mtc1 $t9, $f8 -/* 040424 8003F824 C4306214 */ lwc1 $f16, %lo(D_800E6214)($at) -/* 040428 8003F828 468044A0 */ cvt.s.w $f18, $f8 -/* 04042C 8003F82C 46109182 */ mul.s $f6, $f18, $f16 -/* 040430 8003F830 E6060008 */ swc1 $f6, 8($s0) -/* 040434 8003F834 8FAB0074 */ lw $t3, 0x74($sp) -.L8003F838: -/* 040438 8003F838 860A0018 */ lh $t2, 0x18($s0) -/* 04043C 8003F83C 000B6100 */ sll $t4, $t3, 4 -/* 040440 8003F840 014C7021 */ addu $t6, $t2, $t4 -/* 040444 8003F844 A60E0018 */ sh $t6, 0x18($s0) -.L8003F848: -/* 040448 8003F848 910D0004 */ lbu $t5, 4($t0) -/* 04044C 8003F84C 8FAF0064 */ lw $t7, 0x64($sp) -/* 040450 8003F850 29A10002 */ slti $at, $t5, 2 -/* 040454 8003F854 102000F8 */ beqz $at, .L8003FC38 -/* 040458 8003F858 8FBF002C */ lw $ra, 0x2c($sp) -/* 04045C 8003F85C 81F801D6 */ lb $t8, 0x1d6($t7) -/* 040460 8003F860 24010002 */ li $at, 2 -/* 040464 8003F864 13010015 */ beq $t8, $at, .L8003F8BC -/* 040468 8003F868 2405003C */ li $a1, 60 -/* 04046C 8003F86C 3C014100 */ li $at, 0x41000000 # 8.000000 -/* 040470 8003F870 44816000 */ mtc1 $at, $f12 -/* 040474 8003F874 C6040020 */ lwc1 $f4, 0x20($s0) -/* 040478 8003F878 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 04047C 8003F87C 44814800 */ mtc1 $at, $f9 -/* 040480 8003F880 44804000 */ mtc1 $zero, $f8 -/* 040484 8003F884 C600001C */ lwc1 $f0, 0x1c($s0) -/* 040488 8003F888 C6020024 */ lwc1 $f2, 0x24($s0) -/* 04048C 8003F88C 460022A1 */ cvt.d.s $f10, $f4 -/* 040490 8003F890 46285481 */ sub.d $f18, $f10, $f8 -/* 040494 8003F894 24050022 */ li $a1, 34 -/* 040498 8003F898 460C0183 */ div.s $f6, $f0, $f12 -/* 04049C 8003F89C 46209420 */ cvt.s.d $f16, $f18 -/* 0404A0 8003F8A0 E6100020 */ swc1 $f16, 0x20($s0) -/* 0404A4 8003F8A4 460C1283 */ div.s $f10, $f2, $f12 -/* 0404A8 8003F8A8 46060101 */ sub.s $f4, $f0, $f6 -/* 0404AC 8003F8AC E604001C */ swc1 $f4, 0x1c($s0) -/* 0404B0 8003F8B0 460A1201 */ sub.s $f8, $f2, $f10 -/* 0404B4 8003F8B4 10000009 */ b .L8003F8DC -/* 0404B8 8003F8B8 E6080024 */ swc1 $f8, 0x24($s0) -.L8003F8BC: -/* 0404BC 8003F8BC 44809000 */ mtc1 $zero, $f18 -/* 0404C0 8003F8C0 86190018 */ lh $t9, 0x18($s0) -/* 0404C4 8003F8C4 E6120020 */ swc1 $f18, 0x20($s0) -/* 0404C8 8003F8C8 8FAB0074 */ lw $t3, 0x74($sp) -/* 0404CC 8003F8CC 00000000 */ nop -/* 0404D0 8003F8D0 000B50C0 */ sll $t2, $t3, 3 -/* 0404D4 8003F8D4 032A6021 */ addu $t4, $t9, $t2 -/* 0404D8 8003F8D8 A60C0018 */ sh $t4, 0x18($s0) -.L8003F8DC: -/* 0404DC 8003F8DC 8FAE0040 */ lw $t6, 0x40($sp) -/* 0404E0 8003F8E0 2401000A */ li $at, 10 -/* 0404E4 8003F8E4 91C20018 */ lbu $v0, 0x18($t6) -/* 0404E8 8003F8E8 8FAF0040 */ lw $t7, 0x40($sp) -/* 0404EC 8003F8EC 10410004 */ beq $v0, $at, .L8003F900 -/* 0404F0 8003F8F0 00056843 */ sra $t5, $a1, 1 -/* 0404F4 8003F8F4 24010003 */ li $at, 3 -/* 0404F8 8003F8F8 14410002 */ bne $v0, $at, .L8003F904 -/* 0404FC 8003F8FC 00000000 */ nop -.L8003F900: -/* 040500 8003F900 00AD2821 */ addu $a1, $a1, $t5 -.L8003F904: -/* 040504 8003F904 8E02004C */ lw $v0, 0x4c($s0) -/* 040508 8003F908 00000000 */ nop -/* 04050C 8003F90C 8C440000 */ lw $a0, ($v0) -/* 040510 8003F910 00000000 */ nop -/* 040514 8003F914 10800094 */ beqz $a0, .L8003FB68 -/* 040518 8003F918 00000000 */ nop -/* 04051C 8003F91C 8DF80004 */ lw $t8, 4($t7) -/* 040520 8003F920 00000000 */ nop -/* 040524 8003F924 1498000D */ bne $a0, $t8, .L8003F95C -/* 040528 8003F928 240401C2 */ li $a0, 450 -/* 04052C 8003F92C AFA50048 */ sw $a1, 0x48($sp) -/* 040530 8003F930 0C00322D */ jal normalise_time -/* 040534 8003F934 AFA80038 */ sw $t0, 0x38($sp) -/* 040538 8003F938 8FA80038 */ lw $t0, 0x38($sp) -/* 04053C 8003F93C 8FA50048 */ lw $a1, 0x48($sp) -/* 040540 8003F940 8D0B0000 */ lw $t3, ($t0) -/* 040544 8003F944 00000000 */ nop -/* 040548 8003F948 0162082A */ slt $at, $t3, $v0 -/* 04054C 8003F94C 10200086 */ beqz $at, .L8003FB68 -/* 040550 8003F950 00000000 */ nop -/* 040554 8003F954 8E02004C */ lw $v0, 0x4c($s0) -/* 040558 8003F958 00000000 */ nop -.L8003F95C: -/* 04055C 8003F95C 90590013 */ lbu $t9, 0x13($v0) -/* 040560 8003F960 00000000 */ nop -/* 040564 8003F964 0325082A */ slt $at, $t9, $a1 -/* 040568 8003F968 1020007F */ beqz $at, .L8003FB68 -/* 04056C 8003F96C 00000000 */ nop -/* 040570 8003F970 8C430000 */ lw $v1, ($v0) -/* 040574 8003F974 24010001 */ li $at, 1 -/* 040578 8003F978 8C6A0040 */ lw $t2, 0x40($v1) -/* 04057C 8003F97C 00000000 */ nop -/* 040580 8003F980 814C0054 */ lb $t4, 0x54($t2) -/* 040584 8003F984 00000000 */ nop -/* 040588 8003F988 15810077 */ bne $t4, $at, .L8003FB68 -/* 04058C 8003F98C 00000000 */ nop -/* 040590 8003F990 8C690064 */ lw $t1, 0x64($v1) -/* 040594 8003F994 240E0001 */ li $t6, 1 -/* 040598 8003F998 A12E0187 */ sb $t6, 0x187($t1) -/* 04059C 8003F99C 8FAD0040 */ lw $t5, 0x40($sp) -/* 0405A0 8003F9A0 24010002 */ li $at, 2 -/* 0405A4 8003F9A4 91A20018 */ lbu $v0, 0x18($t5) -/* 0405A8 8003F9A8 2407002C */ li $a3, 44 -/* 0405AC 8003F9AC 14410011 */ bne $v0, $at, .L8003F9F4 -/* 0405B0 8003F9B0 240F0011 */ li $t7, 17 -/* 0405B4 8003F9B4 C60C000C */ lwc1 $f12, 0xc($s0) -/* 0405B8 8003F9B8 C60E0010 */ lwc1 $f14, 0x10($s0) -/* 0405BC 8003F9BC 8E060014 */ lw $a2, 0x14($s0) -/* 0405C0 8003F9C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0405C4 8003F9C4 44818000 */ mtc1 $at, $f16 -/* 0405C8 8003F9C8 24180001 */ li $t8, 1 -/* 0405CC 8003F9CC AFB80018 */ sw $t8, 0x18($sp) -/* 0405D0 8003F9D0 AFA90068 */ sw $t1, 0x68($sp) -/* 0405D4 8003F9D4 AFA80038 */ sw $t0, 0x38($sp) -/* 0405D8 8003F9D8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0405DC 8003F9DC 0C00FF11 */ jal func_8003FC44 -/* 0405E0 8003F9E0 E7B00014 */ swc1 $f16, 0x14($sp) -/* 0405E4 8003F9E4 8FA80038 */ lw $t0, 0x38($sp) -/* 0405E8 8003F9E8 8FA90068 */ lw $t1, 0x68($sp) -/* 0405EC 8003F9EC 10000035 */ b .L8003FAC4 -/* 0405F0 8003F9F0 812C01D8 */ lb $t4, 0x1d8($t1) -.L8003F9F4: -/* 0405F4 8003F9F4 2401000A */ li $at, 10 -/* 0405F8 8003F9F8 1441002C */ bne $v0, $at, .L8003FAAC -/* 0405FC 8003F9FC 24010003 */ li $at, 3 -/* 040600 8003FA00 852B018E */ lh $t3, 0x18e($t1) -/* 040604 8003FA04 8FAE0040 */ lw $t6, 0x40($sp) -/* 040608 8003FA08 19600014 */ blez $t3, .L8003FA5C -/* 04060C 8003FA0C 24040152 */ li $a0, 338 -/* 040610 8003FA10 81390189 */ lb $t9, 0x189($t1) -/* 040614 8003FA14 240A0003 */ li $t2, 3 -/* 040618 8003FA18 2B210003 */ slti $at, $t9, 3 -/* 04061C 8003FA1C 1420000F */ bnez $at, .L8003FA5C -/* 040620 8003FA20 240C0004 */ li $t4, 4 -/* 040624 8003FA24 A10A0004 */ sb $t2, 4($t0) -/* 040628 8003FA28 8E070014 */ lw $a3, 0x14($s0) -/* 04062C 8003FA2C 8E060010 */ lw $a2, 0x10($s0) -/* 040630 8003FA30 8E05000C */ lw $a1, 0xc($s0) -/* 040634 8003FA34 AFA90068 */ sw $t1, 0x68($sp) -/* 040638 8003FA38 AFA80038 */ sw $t0, 0x38($sp) -/* 04063C 8003FA3C AFA00014 */ sw $zero, 0x14($sp) -/* 040640 8003FA40 AFAC0010 */ sw $t4, 0x10($sp) -/* 040644 8003FA44 0C002556 */ jal play_sound_at_position -/* 040648 8003FA48 24040155 */ li $a0, 341 -/* 04064C 8003FA4C 8FA80038 */ lw $t0, 0x38($sp) -/* 040650 8003FA50 8FA90068 */ lw $t1, 0x68($sp) -/* 040654 8003FA54 1000001B */ b .L8003FAC4 -/* 040658 8003FA58 812C01D8 */ lb $t4, 0x1d8($t1) -.L8003FA5C: -/* 04065C 8003FA5C ADC30000 */ sw $v1, ($t6) -/* 040660 8003FA60 8C670014 */ lw $a3, 0x14($v1) -/* 040664 8003FA64 8C660010 */ lw $a2, 0x10($v1) -/* 040668 8003FA68 8C65000C */ lw $a1, 0xc($v1) -/* 04066C 8003FA6C 240D0004 */ li $t5, 4 -/* 040670 8003FA70 25CF001C */ addiu $t7, $t6, 0x1c -/* 040674 8003FA74 AFAF0014 */ sw $t7, 0x14($sp) -/* 040678 8003FA78 AFAD0010 */ sw $t5, 0x10($sp) -/* 04067C 8003FA7C AFA90068 */ sw $t1, 0x68($sp) -/* 040680 8003FA80 0C002556 */ jal play_sound_at_position -/* 040684 8003FA84 AFA80038 */ sw $t0, 0x38($sp) -/* 040688 8003FA88 8FA80038 */ lw $t0, 0x38($sp) -/* 04068C 8003FA8C 8FA90068 */ lw $t1, 0x68($sp) -/* 040690 8003FA90 24180006 */ li $t8, 6 -/* 040694 8003FA94 240B0002 */ li $t3, 2 -/* 040698 8003FA98 A1380187 */ sb $t8, 0x187($t1) -/* 04069C 8003FA9C A10B0004 */ sb $t3, 4($t0) -/* 0406A0 8003FAA0 10000007 */ b .L8003FAC0 -/* 0406A4 8003FAA4 A1000005 */ sb $zero, 5($t0) -/* 0406A8 8003FAA8 24010003 */ li $at, 3 -.L8003FAAC: -/* 0406AC 8003FAAC 14410004 */ bne $v0, $at, .L8003FAC0 -/* 0406B0 8003FAB0 24190002 */ li $t9, 2 -/* 0406B4 8003FAB4 A1390187 */ sb $t9, 0x187($t1) -/* 0406B8 8003FAB8 240A0002 */ li $t2, 2 -/* 0406BC 8003FABC A10A0004 */ sb $t2, 4($t0) -.L8003FAC0: -/* 0406C0 8003FAC0 812C01D8 */ lb $t4, 0x1d8($t1) -.L8003FAC4: -/* 0406C4 8003FAC4 2405000D */ li $a1, 13 -/* 0406C8 8003FAC8 15800009 */ bnez $t4, .L8003FAF0 -/* 0406CC 8003FACC 8FAD0040 */ lw $t5, 0x40($sp) -/* 0406D0 8003FAD0 85240000 */ lh $a0, ($t1) -/* 0406D4 8003FAD4 AFA90068 */ sw $t1, 0x68($sp) -/* 0406D8 8003FAD8 0C01C8D2 */ jal func_80072348 -/* 0406DC 8003FADC AFA80038 */ sw $t0, 0x38($sp) -/* 0406E0 8003FAE0 8FA80038 */ lw $t0, 0x38($sp) -/* 0406E4 8003FAE4 8FA90068 */ lw $t1, 0x68($sp) -/* 0406E8 8003FAE8 00000000 */ nop -/* 0406EC 8003FAEC 8FAD0040 */ lw $t5, 0x40($sp) -.L8003FAF0: -/* 0406F0 8003FAF0 2402FFFF */ li $v0, -1 -/* 0406F4 8003FAF4 8DAE0004 */ lw $t6, 4($t5) -/* 0406F8 8003FAF8 00000000 */ nop -/* 0406FC 8003FAFC 8DCF0064 */ lw $t7, 0x64($t6) -/* 040700 8003FB00 00000000 */ nop -/* 040704 8003FB04 AFAF0064 */ sw $t7, 0x64($sp) -/* 040708 8003FB08 85380000 */ lh $t8, ($t1) -/* 04070C 8003FB0C 8FB90064 */ lw $t9, 0x64($sp) -/* 040710 8003FB10 14580005 */ bne $v0, $t8, .L8003FB28 -/* 040714 8003FB14 00000000 */ nop -/* 040718 8003FB18 85EB0000 */ lh $t3, ($t7) -/* 04071C 8003FB1C 00000000 */ nop -/* 040720 8003FB20 104B0006 */ beq $v0, $t3, .L8003FB3C -/* 040724 8003FB24 8FAD0040 */ lw $t5, 0x40($sp) -.L8003FB28: -/* 040728 8003FB28 932A01EF */ lbu $t2, 0x1ef($t9) -/* 04072C 8003FB2C 00000000 */ nop -/* 040730 8003FB30 354C0002 */ ori $t4, $t2, 2 -/* 040734 8003FB34 A32C01EF */ sb $t4, 0x1ef($t9) -/* 040738 8003FB38 8FAD0040 */ lw $t5, 0x40($sp) -.L8003FB3C: -/* 04073C 8003FB3C 24010003 */ li $at, 3 -/* 040740 8003FB40 91A20018 */ lbu $v0, 0x18($t5) -/* 040744 8003FB44 00000000 */ nop -/* 040748 8003FB48 10410007 */ beq $v0, $at, .L8003FB68 -/* 04074C 8003FB4C 2401000A */ li $at, 10 -/* 040750 8003FB50 10410005 */ beq $v0, $at, .L8003FB68 -/* 040754 8003FB54 00000000 */ nop -/* 040758 8003FB58 0C003FEE */ jal free_object -/* 04075C 8003FB5C 02002025 */ move $a0, $s0 -/* 040760 8003FB60 10000035 */ b .L8003FC38 -/* 040764 8003FB64 8FBF002C */ lw $ra, 0x2c($sp) -.L8003FB68: -/* 040768 8003FB68 8D0E0000 */ lw $t6, ($t0) -/* 04076C 8003FB6C 8FB80074 */ lw $t8, 0x74($sp) -/* 040770 8003FB70 910B0004 */ lbu $t3, 4($t0) -/* 040774 8003FB74 01D87823 */ subu $t7, $t6, $t8 -/* 040778 8003FB78 29610002 */ slti $at, $t3, 2 -/* 04077C 8003FB7C 1020002D */ beqz $at, .L8003FC34 -/* 040780 8003FB80 AD0F0000 */ sw $t7, ($t0) -/* 040784 8003FB84 2404FAD8 */ li $a0, -1320 -/* 040788 8003FB88 0C00322D */ jal normalise_time -/* 04078C 8003FB8C AFA80038 */ sw $t0, 0x38($sp) -/* 040790 8003FB90 8FA80038 */ lw $t0, 0x38($sp) -/* 040794 8003FB94 8FAC0040 */ lw $t4, 0x40($sp) -/* 040798 8003FB98 8D0A0000 */ lw $t2, ($t0) -/* 04079C 8003FB9C 00000000 */ nop -/* 0407A0 8003FBA0 0142082A */ slt $at, $t2, $v0 -/* 0407A4 8003FBA4 10200024 */ beqz $at, .L8003FC38 -/* 0407A8 8003FBA8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0407AC 8003FBAC 91820018 */ lbu $v0, 0x18($t4) -/* 0407B0 8003FBB0 24010003 */ li $at, 3 -/* 0407B4 8003FBB4 14410003 */ bne $v0, $at, .L8003FBC4 -/* 0407B8 8003FBB8 24190002 */ li $t9, 2 -/* 0407BC 8003FBBC 1000001D */ b .L8003FC34 -/* 0407C0 8003FBC0 A1190004 */ sb $t9, 4($t0) -.L8003FBC4: -/* 0407C4 8003FBC4 2401000A */ li $at, 10 -/* 0407C8 8003FBC8 1441000D */ bne $v0, $at, .L8003FC00 -/* 0407CC 8003FBCC 2407002C */ li $a3, 44 -/* 0407D0 8003FBD0 240D0003 */ li $t5, 3 -/* 0407D4 8003FBD4 A10D0004 */ sb $t5, 4($t0) -/* 0407D8 8003FBD8 8E070014 */ lw $a3, 0x14($s0) -/* 0407DC 8003FBDC 8E060010 */ lw $a2, 0x10($s0) -/* 0407E0 8003FBE0 8E05000C */ lw $a1, 0xc($s0) -/* 0407E4 8003FBE4 240E0004 */ li $t6, 4 -/* 0407E8 8003FBE8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0407EC 8003FBEC AFA00014 */ sw $zero, 0x14($sp) -/* 0407F0 8003FBF0 0C002556 */ jal play_sound_at_position -/* 0407F4 8003FBF4 24040155 */ li $a0, 341 -/* 0407F8 8003FBF8 1000000F */ b .L8003FC38 -/* 0407FC 8003FBFC 8FBF002C */ lw $ra, 0x2c($sp) -.L8003FC00: -/* 040800 8003FC00 C60C000C */ lwc1 $f12, 0xc($s0) -/* 040804 8003FC04 C60E0010 */ lwc1 $f14, 0x10($s0) -/* 040808 8003FC08 8E060014 */ lw $a2, 0x14($s0) -/* 04080C 8003FC0C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 040810 8003FC10 44813000 */ mtc1 $at, $f6 -/* 040814 8003FC14 24180011 */ li $t8, 17 -/* 040818 8003FC18 240F0001 */ li $t7, 1 -/* 04081C 8003FC1C AFAF0018 */ sw $t7, 0x18($sp) -/* 040820 8003FC20 AFB80010 */ sw $t8, 0x10($sp) -/* 040824 8003FC24 0C00FF11 */ jal func_8003FC44 -/* 040828 8003FC28 E7A60014 */ swc1 $f6, 0x14($sp) -/* 04082C 8003FC2C 0C003FEE */ jal free_object -/* 040830 8003FC30 02002025 */ move $a0, $s0 -.L8003FC34: -/* 040834 8003FC34 8FBF002C */ lw $ra, 0x2c($sp) -.L8003FC38: -/* 040838 8003FC38 8FB00028 */ lw $s0, 0x28($sp) -/* 04083C 8003FC3C 03E00008 */ jr $ra -/* 040840 8003FC40 27BD0070 */ addiu $sp, $sp, 0x70 - diff --git a/asm/non_matchings/object_functions/obj_loop_char_select.s b/asm/non_matchings/object_functions/obj_loop_char_select.s deleted file mode 100644 index 461395e8..00000000 --- a/asm/non_matchings/object_functions/obj_loop_char_select.s +++ /dev/null @@ -1,269 +0,0 @@ -glabel obj_loop_char_select -/* 038F3C 8003833C 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 038F40 80038340 AFBF0024 */ sw $ra, 0x24($sp) -/* 038F44 80038344 AFB2001C */ sw $s2, 0x1c($sp) -/* 038F48 80038348 AFB00014 */ sw $s0, 0x14($sp) -/* 038F4C 8003834C 00809025 */ move $s2, $a0 -/* 038F50 80038350 AFB30020 */ sw $s3, 0x20($sp) -/* 038F54 80038354 AFB10018 */ sw $s1, 0x18($sp) -/* 038F58 80038358 AFA5007C */ sw $a1, 0x7c($sp) -/* 038F5C 8003835C 00008025 */ move $s0, $zero -/* 038F60 80038360 0C007D18 */ jal func_8001F460 -/* 038F64 80038364 00003025 */ move $a2, $zero -/* 038F68 80038368 8E430064 */ lw $v1, 0x64($s2) -/* 038F6C 8003836C AE400074 */ sw $zero, 0x74($s2) -/* 038F70 80038370 106000E1 */ beqz $v1, .L800386F8 -/* 038F74 80038374 8FBF0024 */ lw $ra, 0x24($sp) -/* 038F78 80038378 824F003A */ lb $t7, 0x3a($s2) -/* 038F7C 8003837C 8E4E0068 */ lw $t6, 0x68($s2) -/* 038F80 80038380 000FC080 */ sll $t8, $t7, 2 -/* 038F84 80038384 01D8C821 */ addu $t9, $t6, $t8 -/* 038F88 80038388 8F220000 */ lw $v0, ($t9) -/* 038F8C 8003838C 00000000 */ nop -/* 038F90 80038390 104000D9 */ beqz $v0, .L800386F8 -/* 038F94 80038394 8FBF0024 */ lw $ra, 0x24($sp) -/* 038F98 80038398 8C530000 */ lw $s3, ($v0) -/* 038F9C 8003839C 0C027B34 */ jal is_drumstick_unlocked -/* 038FA0 800383A0 AFA30064 */ sw $v1, 0x64($sp) -/* 038FA4 800383A4 1040000C */ beqz $v0, .L800383D8 -/* 038FA8 800383A8 00000000 */ nop -/* 038FAC 800383AC 0C027B2E */ jal is_tt_unlocked -/* 038FB0 800383B0 00000000 */ nop -/* 038FB4 800383B4 10400005 */ beqz $v0, .L800383CC -/* 038FB8 800383B8 3C06800E */ lui $a2, %hi(D_800DCA58) # $a2, 0x800e -/* 038FBC 800383BC 3C06800E */ lui $a2, %hi(D_800DCA70) # $a2, 0x800e -/* 038FC0 800383C0 24C6CA70 */ addiu $a2, %lo(D_800DCA70) # addiu $a2, $a2, -0x3590 -/* 038FC4 800383C4 1000000E */ b .L80038400 -/* 038FC8 800383C8 2404000A */ li $a0, 10 -.L800383CC: -/* 038FCC 800383CC 24C6CA58 */ addiu $a2, %lo(D_800DCA58) # addiu $a2, $a2, -0x35a8 -/* 038FD0 800383D0 1000000B */ b .L80038400 -/* 038FD4 800383D4 24040009 */ li $a0, 9 -.L800383D8: -/* 038FD8 800383D8 0C027B2E */ jal is_tt_unlocked -/* 038FDC 800383DC 00000000 */ nop -/* 038FE0 800383E0 10400005 */ beqz $v0, .L800383F8 -/* 038FE4 800383E4 3C06800E */ lui $a2, %hi(D_800DCA50) # $a2, 0x800e -/* 038FE8 800383E8 3C06800E */ lui $a2, %hi(D_800DCA64) # $a2, 0x800e -/* 038FEC 800383EC 24C6CA64 */ addiu $a2, %lo(D_800DCA64) # addiu $a2, $a2, -0x359c -/* 038FF0 800383F0 10000003 */ b .L80038400 -/* 038FF4 800383F4 24040009 */ li $a0, 9 -.L800383F8: -/* 038FF8 800383F8 24C6CA50 */ addiu $a2, %lo(D_800DCA50) # addiu $a2, $a2, -0x35b0 -/* 038FFC 800383FC 24040008 */ li $a0, 8 -.L80038400: -/* 039000 80038400 1880000E */ blez $a0, .L8003843C -/* 039004 80038404 00002825 */ move $a1, $zero -/* 039008 80038408 8FA90064 */ lw $t1, 0x64($sp) -/* 03900C 8003840C 00C01021 */ addu $v0, $a2, $zero -/* 039010 80038410 85230028 */ lh $v1, 0x28($t1) -/* 039014 80038414 00000000 */ nop -.L80038418: -/* 039018 80038418 904A0000 */ lbu $t2, ($v0) -/* 03901C 8003841C 24A50001 */ addiu $a1, $a1, 1 -/* 039020 80038420 146A0002 */ bne $v1, $t2, .L8003842C -/* 039024 80038424 00A4082A */ slt $at, $a1, $a0 -/* 039028 80038428 24100001 */ li $s0, 1 -.L8003842C: -/* 03902C 8003842C 10200003 */ beqz $at, .L8003843C -/* 039030 80038430 24420001 */ addiu $v0, $v0, 1 -/* 039034 80038434 1200FFF8 */ beqz $s0, .L80038418 -/* 039038 80038438 00000000 */ nop -.L8003843C: -/* 03903C 8003843C 1200006E */ beqz $s0, .L800385F8 -/* 039040 80038440 24A5FFFF */ addiu $a1, $a1, -1 -/* 039044 80038444 240B0001 */ li $t3, 1 -/* 039048 80038448 A24B003B */ sb $t3, 0x3b($s2) -/* 03904C 8003844C 00008025 */ move $s0, $zero -/* 039050 80038450 00001825 */ move $v1, $zero -/* 039054 80038454 27B10050 */ addiu $s1, $sp, 0x50 -/* 039058 80038458 02002025 */ move $a0, $s0 -.L8003845C: -/* 03905C 8003845C A3A3004F */ sb $v1, 0x4f($sp) -/* 039060 80038460 0C0270A0 */ jal get_player_character -/* 039064 80038464 AFA50070 */ sw $a1, 0x70($sp) -/* 039068 80038468 8FA50070 */ lw $a1, 0x70($sp) -/* 03906C 8003846C 93A3004F */ lbu $v1, 0x4f($sp) -/* 039070 80038470 14450006 */ bne $v0, $a1, .L8003848C -/* 039074 80038474 24010004 */ li $at, 4 -/* 039078 80038478 02236021 */ addu $t4, $s1, $v1 -/* 03907C 8003847C 24630001 */ addiu $v1, $v1, 1 -/* 039080 80038480 306D00FF */ andi $t5, $v1, 0xff -/* 039084 80038484 01A01825 */ move $v1, $t5 -/* 039088 80038488 A1900000 */ sb $s0, ($t4) -.L8003848C: -/* 03908C 8003848C 26100001 */ addiu $s0, $s0, 1 -/* 039090 80038490 1601FFF2 */ bne $s0, $at, .L8003845C -/* 039094 80038494 02002025 */ move $a0, $s0 -/* 039098 80038498 3C0F800E */ lui $t7, %hi(D_800DCA7C) # $t7, 0x800e -/* 03909C 8003849C 25EFCA7C */ addiu $t7, %lo(D_800DCA7C) # addiu $t7, $t7, -0x3584 -/* 0390A0 800384A0 00AF1021 */ addu $v0, $a1, $t7 -/* 0390A4 800384A4 904E0000 */ lbu $t6, ($v0) -/* 0390A8 800384A8 8FB8007C */ lw $t8, 0x7c($sp) -/* 0390AC 800384AC 3C0D800E */ lui $t5, %hi(D_800DCA88) # $t5, 0x800e -/* 0390B0 800384B0 01D8C821 */ addu $t9, $t6, $t8 -/* 0390B4 800384B4 332400FF */ andi $a0, $t9, 0xff -/* 0390B8 800384B8 28810010 */ slti $at, $a0, 0x10 -/* 0390BC 800384BC 14200009 */ bnez $at, .L800384E4 -/* 0390C0 800384C0 A0590000 */ sb $t9, ($v0) -/* 0390C4 800384C4 3C0A800E */ lui $t2, %hi(D_800DCA88) # $t2, 0x800e -/* 0390C8 800384C8 254ACA88 */ addiu $t2, %lo(D_800DCA88) # addiu $t2, $t2, -0x3578 -/* 0390CC 800384CC 00AA4021 */ addu $t0, $a1, $t2 -/* 0390D0 800384D0 910B0000 */ lbu $t3, ($t0) -/* 0390D4 800384D4 3089000F */ andi $t1, $a0, 0xf -/* 0390D8 800384D8 256C0001 */ addiu $t4, $t3, 1 -/* 0390DC 800384DC A0490000 */ sb $t1, ($v0) -/* 0390E0 800384E0 A10C0000 */ sb $t4, ($t0) -.L800384E4: -/* 0390E4 800384E4 25ADCA88 */ addiu $t5, %lo(D_800DCA88) # addiu $t5, $t5, -0x3578 -/* 0390E8 800384E8 00AD4021 */ addu $t0, $a1, $t5 -/* 0390EC 800384EC 910F0000 */ lbu $t7, ($t0) -/* 0390F0 800384F0 00603825 */ move $a3, $v1 -/* 0390F4 800384F4 01E3082A */ slt $at, $t7, $v1 -/* 0390F8 800384F8 14200002 */ bnez $at, .L80038504 -/* 0390FC 800384FC 00000000 */ nop -/* 039100 80038500 A1000000 */ sb $zero, ($t0) -.L80038504: -/* 039104 80038504 18E0003C */ blez $a3, .L800385F8 -/* 039108 80038508 00000000 */ nop -/* 03910C 8003850C AFA70040 */ sw $a3, 0x40($sp) -/* 039110 80038510 0C02709D */ jal func_8009C274 -/* 039114 80038514 AFA80044 */ sw $t0, 0x44($sp) -/* 039118 80038518 8FA70040 */ lw $a3, 0x40($sp) -/* 03911C 8003851C 8FA80044 */ lw $t0, 0x44($sp) -/* 039120 80038520 00403025 */ move $a2, $v0 -/* 039124 80038524 18E0001B */ blez $a3, .L80038594 -/* 039128 80038528 00001825 */ move $v1, $zero -/* 03912C 8003852C 27A20050 */ addiu $v0, $sp, 0x50 -/* 039130 80038530 24100001 */ li $s0, 1 -.L80038534: -/* 039134 80038534 904E0000 */ lbu $t6, ($v0) -/* 039138 80038538 24010001 */ li $at, 1 -/* 03913C 8003853C 01C6C021 */ addu $t8, $t6, $a2 -/* 039140 80038540 83190000 */ lb $t9, ($t8) -/* 039144 80038544 02402025 */ move $a0, $s2 -/* 039148 80038548 1721000E */ bne $t9, $at, .L80038584 -/* 03914C 8003854C 24050002 */ li $a1, 2 -/* 039150 80038550 AE500074 */ sw $s0, 0x74($s2) -/* 039154 80038554 AFA80044 */ sw $t0, 0x44($sp) -/* 039158 80038558 AFA70040 */ sw $a3, 0x40($sp) -/* 03915C 8003855C AFA60058 */ sw $a2, 0x58($sp) -/* 039160 80038560 AFA30074 */ sw $v1, 0x74($sp) -/* 039164 80038564 0C02BF0F */ jal func_800AFC3C -/* 039168 80038568 AFA2003C */ sw $v0, 0x3c($sp) -/* 03916C 8003856C 8FA2003C */ lw $v0, 0x3c($sp) -/* 039170 80038570 8FA30074 */ lw $v1, 0x74($sp) -/* 039174 80038574 8FA60058 */ lw $a2, 0x58($sp) -/* 039178 80038578 8FA70040 */ lw $a3, 0x40($sp) -/* 03917C 8003857C 8FA80044 */ lw $t0, 0x44($sp) -/* 039180 80038580 00000000 */ nop -.L80038584: -/* 039184 80038584 24630001 */ addiu $v1, $v1, 1 -/* 039188 80038588 1467FFEA */ bne $v1, $a3, .L80038534 -/* 03918C 8003858C 24420001 */ addiu $v0, $v0, 1 -/* 039190 80038590 00001825 */ move $v1, $zero -.L80038594: -/* 039194 80038594 86660028 */ lh $a2, 0x28($s3) -/* 039198 80038598 00001025 */ move $v0, $zero -/* 03919C 8003859C 18C00015 */ blez $a2, .L800385F4 -/* 0391A0 800385A0 00000000 */ nop -.L800385A4: -/* 0391A4 800385A4 8E690038 */ lw $t1, 0x38($s3) -/* 0391A8 800385A8 24630001 */ addiu $v1, $v1, 1 -/* 0391AC 800385AC 01222021 */ addu $a0, $t1, $v0 -/* 0391B0 800385B0 90850000 */ lbu $a1, ($a0) -/* 0391B4 800385B4 00000000 */ nop -/* 0391B8 800385B8 04A0000B */ bltz $a1, .L800385E8 -/* 0391BC 800385BC 28A10004 */ slti $at, $a1, 4 -/* 0391C0 800385C0 1020000A */ beqz $at, .L800385EC -/* 0391C4 800385C4 0066082A */ slt $at, $v1, $a2 -/* 0391C8 800385C8 910A0000 */ lbu $t2, ($t0) -/* 0391CC 800385CC 00000000 */ nop -/* 0391D0 800385D0 022A5821 */ addu $t3, $s1, $t2 -/* 0391D4 800385D4 916C0000 */ lbu $t4, ($t3) -/* 0391D8 800385D8 00000000 */ nop -/* 0391DC 800385DC A08C0000 */ sb $t4, ($a0) -/* 0391E0 800385E0 86660028 */ lh $a2, 0x28($s3) -/* 0391E4 800385E4 00000000 */ nop -.L800385E8: -/* 0391E8 800385E8 0066082A */ slt $at, $v1, $a2 -.L800385EC: -/* 0391EC 800385EC 1420FFED */ bnez $at, .L800385A4 -/* 0391F0 800385F0 2442000C */ addiu $v0, $v0, 0xc -.L800385F4: -/* 0391F4 800385F4 A240003B */ sb $zero, 0x3b($s2) -.L800385F8: -/* 0391F8 800385F8 8242003B */ lb $v0, 0x3b($s2) -/* 0391FC 800385FC 00000000 */ nop -/* 039200 80038600 0440003D */ bltz $v0, .L800386F8 -/* 039204 80038604 8FBF0024 */ lw $ra, 0x24($sp) -/* 039208 80038608 866D0048 */ lh $t5, 0x48($s3) -/* 03920C 8003860C 8FA90064 */ lw $t1, 0x64($sp) -/* 039210 80038610 004D082A */ slt $at, $v0, $t5 -/* 039214 80038614 10200037 */ beqz $at, .L800386F4 -/* 039218 80038618 000270C0 */ sll $t6, $v0, 3 -/* 03921C 8003861C 8E6F0044 */ lw $t7, 0x44($s3) -/* 039220 80038620 912A002C */ lbu $t2, 0x2c($t1) -/* 039224 80038624 01EEC021 */ addu $t8, $t7, $t6 -/* 039228 80038628 8F050004 */ lw $a1, 4($t8) -/* 03922C 8003862C 24010001 */ li $at, 1 -/* 039230 80038630 24A5FFFF */ addiu $a1, $a1, -1 -/* 039234 80038634 1541002F */ bne $t2, $at, .L800386F4 -/* 039238 80038638 0005C900 */ sll $t9, $a1, 4 -/* 03923C 8003863C 0C00057E */ jal music_animation_fraction -/* 039240 80038640 AFB90070 */ sw $t9, 0x70($sp) -/* 039244 80038644 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 039248 80038648 44819800 */ mtc1 $at, $f19 -/* 03924C 8003864C 44809000 */ mtc1 $zero, $f18 -/* 039250 80038650 460003A1 */ cvt.d.s $f14, $f0 -/* 039254 80038654 462E903C */ c.lt.d $f18, $f14 -/* 039258 80038658 8FA50070 */ lw $a1, 0x70($sp) -/* 03925C 8003865C 45000015 */ bc1f .L800386B4 -/* 039260 80038660 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 039264 80038664 46327101 */ sub.d $f4, $f14, $f18 -/* 039268 80038668 44854000 */ mtc1 $a1, $f8 -/* 03926C 8003866C 46202320 */ cvt.s.d $f12, $f4 -/* 039270 80038670 460060A1 */ cvt.d.s $f2, $f12 -/* 039274 80038674 46221180 */ add.d $f6, $f2, $f2 -/* 039278 80038678 46804420 */ cvt.s.w $f16, $f8 -/* 03927C 8003867C 46203320 */ cvt.s.d $f12, $f6 -/* 039280 80038680 46106282 */ mul.s $f10, $f12, $f16 -/* 039284 80038684 460A8101 */ sub.s $f4, $f16, $f10 -/* 039288 80038688 444BF800 */ cfc1 $t3, $31 -/* 03928C 8003868C 00000000 */ nop -/* 039290 80038690 35610003 */ ori $at, $t3, 3 -/* 039294 80038694 38210002 */ xori $at, $at, 2 -/* 039298 80038698 44C1F800 */ ctc1 $at, $31 -/* 03929C 8003869C 00000000 */ nop -/* 0392A0 800386A0 460021A4 */ cvt.w.s $f6, $f4 -/* 0392A4 800386A4 440C3000 */ mfc1 $t4, $f6 -/* 0392A8 800386A8 44CBF800 */ ctc1 $t3, $31 -/* 0392AC 800386AC 10000011 */ b .L800386F4 -/* 0392B0 800386B0 A64C0018 */ sh $t4, 0x18($s2) -.L800386B4: -/* 0392B4 800386B4 44814000 */ mtc1 $at, $f8 -/* 0392B8 800386B8 44855000 */ mtc1 $a1, $f10 -/* 0392BC 800386BC 46080302 */ mul.s $f12, $f0, $f8 -/* 0392C0 800386C0 46805120 */ cvt.s.w $f4, $f10 -/* 0392C4 800386C4 460C2182 */ mul.s $f6, $f4, $f12 -/* 0392C8 800386C8 444DF800 */ cfc1 $t5, $31 -/* 0392CC 800386CC 00000000 */ nop -/* 0392D0 800386D0 35A10003 */ ori $at, $t5, 3 -/* 0392D4 800386D4 38210002 */ xori $at, $at, 2 -/* 0392D8 800386D8 44C1F800 */ ctc1 $at, $31 -/* 0392DC 800386DC 00000000 */ nop -/* 0392E0 800386E0 46003224 */ cvt.w.s $f8, $f6 -/* 0392E4 800386E4 440F4000 */ mfc1 $t7, $f8 -/* 0392E8 800386E8 44CDF800 */ ctc1 $t5, $31 -/* 0392EC 800386EC A64F0018 */ sh $t7, 0x18($s2) -/* 0392F0 800386F0 00000000 */ nop -.L800386F4: -/* 0392F4 800386F4 8FBF0024 */ lw $ra, 0x24($sp) -.L800386F8: -/* 0392F8 800386F8 8FB00014 */ lw $s0, 0x14($sp) -/* 0392FC 800386FC 8FB10018 */ lw $s1, 0x18($sp) -/* 039300 80038700 8FB2001C */ lw $s2, 0x1c($sp) -/* 039304 80038704 8FB30020 */ lw $s3, 0x20($sp) -/* 039308 80038708 03E00008 */ jr $ra -/* 03930C 8003870C 27BD0078 */ addiu $sp, $sp, 0x78 - diff --git a/asm/non_matchings/object_functions/obj_loop_door.s b/asm/non_matchings/object_functions/obj_loop_door.s deleted file mode 100644 index 4515ecd6..00000000 --- a/asm/non_matchings/object_functions/obj_loop_door.s +++ /dev/null @@ -1,585 +0,0 @@ -.late_rodata -glabel D_800E6168 -.double 1.2 -glabel D_800E6170 -.double 130.0 - -.text -glabel obj_loop_door -/* 03C588 8003B988 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 03C58C 8003B98C 44852000 */ mtc1 $a1, $f4 -/* 03C590 8003B990 AFBF0024 */ sw $ra, 0x24($sp) -/* 03C594 8003B994 AFB00020 */ sw $s0, 0x20($sp) -/* 03C598 8003B998 AFA50064 */ sw $a1, 0x64($sp) -/* 03C59C 8003B99C 3C188000 */ lui $t8, %hi(osTvType) # $t8, 0x8000 -/* 03C5A0 8003B9A0 46802020 */ cvt.s.w $f0, $f4 -/* 03C5A4 8003B9A4 8C8E003C */ lw $t6, 0x3c($a0) -/* 03C5A8 8003B9A8 8F180300 */ lw $t8, %lo(osTvType)($t8) -/* 03C5AC 8003B9AC 00808025 */ move $s0, $a0 -/* 03C5B0 8003B9B0 46000086 */ mov.s $f2, $f0 -/* 03C5B4 8003B9B4 17000007 */ bnez $t8, .L8003B9D4 -/* 03C5B8 8003B9B8 AFAE0034 */ sw $t6, 0x34($sp) -/* 03C5BC 8003B9BC 3C01800E */ lui $at, %hi(D_800E6168 + 4) # $at, 0x800e -/* 03C5C0 8003B9C0 C4296168 */ lwc1 $f9, %lo(D_800E6168)($at) -/* 03C5C4 8003B9C4 C428616C */ lwc1 $f8, %lo(D_800E6168 + 4)($at) -/* 03C5C8 8003B9C8 460001A1 */ cvt.d.s $f6, $f0 -/* 03C5CC 8003B9CC 46283282 */ mul.d $f10, $f6, $f8 -/* 03C5D0 8003B9D0 462050A0 */ cvt.s.d $f2, $f10 -.L8003B9D4: -/* 03C5D4 8003B9D4 0C01BAA4 */ jal get_settings -/* 03C5D8 8003B9D8 E7A20030 */ swc1 $f2, 0x30($sp) -/* 03C5DC 8003B9DC 904B0049 */ lbu $t3, 0x49($v0) -/* 03C5E0 8003B9E0 8C590004 */ lw $t9, 4($v0) -/* 03C5E4 8003B9E4 8E080064 */ lw $t0, 0x64($s0) -/* 03C5E8 8003B9E8 000B6080 */ sll $t4, $t3, 2 -/* 03C5EC 8003B9EC 8103000E */ lb $v1, 0xe($t0) -/* 03C5F0 8003B9F0 032C6821 */ addu $t5, $t9, $t4 -/* 03C5F4 8003B9F4 8DA50000 */ lw $a1, ($t5) -/* 03C5F8 8003B9F8 046001E6 */ bltz $v1, .L8003C194 -/* 03C5FC 8003B9FC 00404825 */ move $t1, $v0 -/* 03C600 8003BA00 3C0E0001 */ lui $t6, 1 -/* 03C604 8003BA04 006E7804 */ sllv $t7, $t6, $v1 -/* 03C608 8003BA08 AFAF0054 */ sw $t7, 0x54($sp) -/* 03C60C 8003BA0C 8E02004C */ lw $v0, 0x4c($s0) -/* 03C610 8003BA10 00000000 */ nop -/* 03C614 8003BA14 90440013 */ lbu $a0, 0x13($v0) -/* 03C618 8003BA18 00000000 */ nop -/* 03C61C 8003BA1C AFA40050 */ sw $a0, 0x50($sp) -/* 03C620 8003BA20 9118000F */ lbu $t8, 0xf($t0) -/* 03C624 8003BA24 00000000 */ nop -/* 03C628 8003BA28 330B0001 */ andi $t3, $t8, 1 -/* 03C62C 8003BA2C 15600003 */ bnez $t3, .L8003BA3C -/* 03C630 8003BA30 8FB90054 */ lw $t9, 0x54($sp) -/* 03C634 8003BA34 AFA00050 */ sw $zero, 0x50($sp) -/* 03C638 8003BA38 8FB90054 */ lw $t9, 0x54($sp) -.L8003BA3C: -/* 03C63C 8003BA3C 00000000 */ nop -/* 03C640 8003BA40 00B96024 */ and $t4, $a1, $t9 -/* 03C644 8003BA44 15800050 */ bnez $t4, .L8003BB88 -/* 03C648 8003BA48 AFAC0028 */ sw $t4, 0x28($sp) -/* 03C64C 8003BA4C 910E0012 */ lbu $t6, 0x12($t0) -/* 03C650 8003BA50 00000000 */ nop -/* 03C654 8003BA54 008E082A */ slt $at, $a0, $t6 -/* 03C658 8003BA58 1020004B */ beqz $at, .L8003BB88 -/* 03C65C 8003BA5C 00000000 */ nop -/* 03C660 8003BA60 8C430000 */ lw $v1, ($v0) -/* 03C664 8003BA64 00000000 */ nop -/* 03C668 8003BA68 10600047 */ beqz $v1, .L8003BB88 -/* 03C66C 8003BA6C 00000000 */ nop -/* 03C670 8003BA70 8C6F0040 */ lw $t7, 0x40($v1) -/* 03C674 8003BA74 24060001 */ li $a2, 1 -/* 03C678 8003BA78 81F80054 */ lb $t8, 0x54($t7) -/* 03C67C 8003BA7C 00000000 */ nop -/* 03C680 8003BA80 14D80041 */ bne $a2, $t8, .L8003BB88 -/* 03C684 8003BA84 00000000 */ nop -/* 03C688 8003BA88 8C620064 */ lw $v0, 0x64($v1) -/* 03C68C 8003BA8C 2401FFFF */ li $at, -1 -/* 03C690 8003BA90 844B0000 */ lh $t3, ($v0) -/* 03C694 8003BA94 00000000 */ nop -/* 03C698 8003BA98 11610033 */ beq $t3, $at, .L8003BB68 -/* 03C69C 8003BA9C 00000000 */ nop -/* 03C6A0 8003BAA0 8E19005C */ lw $t9, 0x5c($s0) -/* 03C6A4 8003BAA4 00000000 */ nop -/* 03C6A8 8003BAA8 8F2C0100 */ lw $t4, 0x100($t9) -/* 03C6AC 8003BAAC 00000000 */ nop -/* 03C6B0 8003BAB0 146C002D */ bne $v1, $t4, .L8003BB68 -/* 03C6B4 8003BAB4 00000000 */ nop -/* 03C6B8 8003BAB8 810D0013 */ lb $t5, 0x13($t0) -/* 03C6BC 8003BABC 2401FFFF */ li $at, -1 -/* 03C6C0 8003BAC0 11A10028 */ beq $t5, $at, .L8003BB64 -/* 03C6C4 8003BAC4 240B012C */ li $t3, 300 -/* 03C6C8 8003BAC8 AFA80044 */ sw $t0, 0x44($sp) -/* 03C6CC 8003BACC 0C030D00 */ jal func_800C3400 -/* 03C6D0 8003BAD0 AFA90040 */ sw $t1, 0x40($sp) -/* 03C6D4 8003BAD4 8FA80044 */ lw $t0, 0x44($sp) -/* 03C6D8 8003BAD8 8FA90040 */ lw $t1, 0x40($sp) -/* 03C6DC 8003BADC 14400021 */ bnez $v0, .L8003BB64 -/* 03C6E0 8003BAE0 240B012C */ li $t3, 300 -/* 03C6E4 8003BAE4 850E000C */ lh $t6, 0xc($t0) -/* 03C6E8 8003BAE8 2404FFF8 */ li $a0, -8 -/* 03C6EC 8003BAEC 15C0001D */ bnez $t6, .L8003BB64 -/* 03C6F0 8003BAF0 240B012C */ li $t3, 300 -/* 03C6F4 8003BAF4 AFA80044 */ sw $t0, 0x44($sp) -/* 03C6F8 8003BAF8 0C000326 */ jal music_fade -/* 03C6FC 8003BAFC AFA90040 */ sw $t1, 0x40($sp) -/* 03C700 8003BB00 8FA80044 */ lw $t0, 0x44($sp) -/* 03C704 8003BB04 240F008C */ li $t7, 140 -/* 03C708 8003BB08 24040010 */ li $a0, 16 -/* 03C70C 8003BB0C 0C00030E */ jal music_jingle_voicelimit_set -/* 03C710 8003BB10 AD0F0008 */ sw $t7, 8($t0) -/* 03C714 8003BB14 0C002050 */ jal func_80008140 -/* 03C718 8003BB18 00000000 */ nop -/* 03C71C 8003BB1C 0C0006F0 */ jal music_jingle_play -/* 03C720 8003BB20 24040011 */ li $a0, 17 -/* 03C724 8003BB24 8FA80044 */ lw $t0, 0x44($sp) -/* 03C728 8003BB28 00000000 */ nop -/* 03C72C 8003BB2C 91040010 */ lbu $a0, 0x10($t0) -/* 03C730 8003BB30 0C030C50 */ jal set_textbox_display_value -/* 03C734 8003BB34 00000000 */ nop -/* 03C738 8003BB38 8FA80044 */ lw $t0, 0x44($sp) -/* 03C73C 8003BB3C 00000000 */ nop -/* 03C740 8003BB40 81040013 */ lb $a0, 0x13($t0) -/* 03C744 8003BB44 00000000 */ nop -/* 03C748 8003BB48 309800FF */ andi $t8, $a0, 0xff -/* 03C74C 8003BB4C 0C030C7B */ jal set_current_text -/* 03C750 8003BB50 03002025 */ move $a0, $t8 -/* 03C754 8003BB54 8FA80044 */ lw $t0, 0x44($sp) -/* 03C758 8003BB58 8FA90040 */ lw $t1, 0x40($sp) -/* 03C75C 8003BB5C 00000000 */ nop -/* 03C760 8003BB60 240B012C */ li $t3, 300 -.L8003BB64: -/* 03C764 8003BB64 A50B000C */ sh $t3, 0xc($t0) -.L8003BB68: -/* 03C768 8003BB68 AFA80044 */ sw $t0, 0x44($sp) -/* 03C76C 8003BB6C 0C030D00 */ jal func_800C3400 -/* 03C770 8003BB70 AFA90040 */ sw $t1, 0x40($sp) -/* 03C774 8003BB74 8FA80044 */ lw $t0, 0x44($sp) -/* 03C778 8003BB78 8FA90040 */ lw $t1, 0x40($sp) -/* 03C77C 8003BB7C 10400002 */ beqz $v0, .L8003BB88 -/* 03C780 8003BB80 2419012C */ li $t9, 300 -/* 03C784 8003BB84 A519000C */ sh $t9, 0xc($t0) -.L8003BB88: -/* 03C788 8003BB88 8D0C0008 */ lw $t4, 8($t0) -/* 03C78C 8003BB8C 00000000 */ nop -/* 03C790 8003BB90 1180001B */ beqz $t4, .L8003BC00 -/* 03C794 8003BB94 00000000 */ nop -/* 03C798 8003BB98 AFA80044 */ sw $t0, 0x44($sp) -/* 03C79C 8003BB9C 0C000702 */ jal music_jingle_playing -/* 03C7A0 8003BBA0 AFA90040 */ sw $t1, 0x40($sp) -/* 03C7A4 8003BBA4 8FA80044 */ lw $t0, 0x44($sp) -/* 03C7A8 8003BBA8 8FA90040 */ lw $t1, 0x40($sp) -/* 03C7AC 8003BBAC 14400014 */ bnez $v0, .L8003BC00 -/* 03C7B0 8003BBB0 00000000 */ nop -/* 03C7B4 8003BBB4 8FA30064 */ lw $v1, 0x64($sp) -/* 03C7B8 8003BBB8 8D020008 */ lw $v0, 8($t0) -/* 03C7BC 8003BBBC 24040008 */ li $a0, 8 -/* 03C7C0 8003BBC0 0062082A */ slt $at, $v1, $v0 -/* 03C7C4 8003BBC4 10200003 */ beqz $at, .L8003BBD4 -/* 03C7C8 8003BBC8 00436823 */ subu $t5, $v0, $v1 -/* 03C7CC 8003BBCC 1000000C */ b .L8003BC00 -/* 03C7D0 8003BBD0 AD0D0008 */ sw $t5, 8($t0) -.L8003BBD4: -/* 03C7D4 8003BBD4 AD000008 */ sw $zero, 8($t0) -/* 03C7D8 8003BBD8 AFA90040 */ sw $t1, 0x40($sp) -/* 03C7DC 8003BBDC 0C000326 */ jal music_fade -/* 03C7E0 8003BBE0 AFA80044 */ sw $t0, 0x44($sp) -/* 03C7E4 8003BBE4 0C00030E */ jal music_jingle_voicelimit_set -/* 03C7E8 8003BBE8 24040006 */ li $a0, 6 -/* 03C7EC 8003BBEC 0C00205A */ jal func_80008168 -/* 03C7F0 8003BBF0 00000000 */ nop -/* 03C7F4 8003BBF4 8FA80044 */ lw $t0, 0x44($sp) -/* 03C7F8 8003BBF8 8FA90040 */ lw $t1, 0x40($sp) -/* 03C7FC 8003BBFC 00000000 */ nop -.L8003BC00: -/* 03C800 8003BC00 8502000C */ lh $v0, 0xc($t0) -/* 03C804 8003BC04 8FA30064 */ lw $v1, 0x64($sp) -/* 03C808 8003BC08 18400004 */ blez $v0, .L8003BC1C -/* 03C80C 8003BC0C 24060001 */ li $a2, 1 -/* 03C810 8003BC10 00437023 */ subu $t6, $v0, $v1 -/* 03C814 8003BC14 10000002 */ b .L8003BC20 -/* 03C818 8003BC18 A50E000C */ sh $t6, 0xc($t0) -.L8003BC1C: -/* 03C81C 8003BC1C A500000C */ sh $zero, 0xc($t0) -.L8003BC20: -/* 03C820 8003BC20 8E02004C */ lw $v0, 0x4c($s0) -/* 03C824 8003BC24 91180012 */ lbu $t8, 0x12($t0) -/* 03C828 8003BC28 904F0013 */ lbu $t7, 0x13($v0) -/* 03C82C 8003BC2C 8FAA0034 */ lw $t2, 0x34($sp) -/* 03C830 8003BC30 01F8082A */ slt $at, $t7, $t8 -/* 03C834 8003BC34 10200018 */ beqz $at, .L8003BC98 -/* 03C838 8003BC38 00002025 */ move $a0, $zero -/* 03C83C 8003BC3C 8C430000 */ lw $v1, ($v0) -/* 03C840 8003BC40 00000000 */ nop -/* 03C844 8003BC44 10600014 */ beqz $v1, .L8003BC98 -/* 03C848 8003BC48 00000000 */ nop -/* 03C84C 8003BC4C 8C6B0040 */ lw $t3, 0x40($v1) -/* 03C850 8003BC50 00000000 */ nop -/* 03C854 8003BC54 81790054 */ lb $t9, 0x54($t3) -/* 03C858 8003BC58 00000000 */ nop -/* 03C85C 8003BC5C 14D9000E */ bne $a2, $t9, .L8003BC98 -/* 03C860 8003BC60 00000000 */ nop -/* 03C864 8003BC64 8C620064 */ lw $v0, 0x64($v1) -/* 03C868 8003BC68 24010002 */ li $at, 2 -/* 03C86C 8003BC6C 804401D6 */ lb $a0, 0x1d6($v0) -/* 03C870 8003BC70 00000000 */ nop -/* 03C874 8003BC74 10860005 */ beq $a0, $a2, .L8003BC8C -/* 03C878 8003BC78 00000000 */ nop -/* 03C87C 8003BC7C 10810006 */ beq $a0, $at, .L8003BC98 -/* 03C880 8003BC80 24040004 */ li $a0, 4 -/* 03C884 8003BC84 10000004 */ b .L8003BC98 -/* 03C888 8003BC88 00C02025 */ move $a0, $a2 -.L8003BC8C: -/* 03C88C 8003BC8C 10000002 */ b .L8003BC98 -/* 03C890 8003BC90 24040002 */ li $a0, 2 -/* 03C894 8003BC94 24040004 */ li $a0, 4 -.L8003BC98: -/* 03C898 8003BC98 914C0010 */ lbu $t4, 0x10($t2) -/* 03C89C 8003BC9C 91420000 */ lbu $v0, ($t2) -/* 03C8A0 8003BCA0 24010087 */ li $at, 135 -/* 03C8A4 8003BCA4 10410004 */ beq $v0, $at, .L8003BCB8 -/* 03C8A8 8003BCA8 008C2024 */ and $a0, $a0, $t4 -/* 03C8AC 8003BCAC 240100D7 */ li $at, 215 -/* 03C8B0 8003BCB0 1441000B */ bne $v0, $at, .L8003BCE0 -/* 03C8B4 8003BCB4 00000000 */ nop -.L8003BCB8: -/* 03C8B8 8003BCB8 AFA4004C */ sw $a0, 0x4c($sp) -/* 03C8BC 8003BCBC AFA80044 */ sw $t0, 0x44($sp) -/* 03C8C0 8003BCC0 0C008D70 */ jal func_800235C0 -/* 03C8C4 8003BCC4 AFA90040 */ sw $t1, 0x40($sp) -/* 03C8C8 8003BCC8 8FA4004C */ lw $a0, 0x4c($sp) -/* 03C8CC 8003BCCC 8FA80044 */ lw $t0, 0x44($sp) -/* 03C8D0 8003BCD0 8FA90040 */ lw $t1, 0x40($sp) -/* 03C8D4 8003BCD4 10400002 */ beqz $v0, .L8003BCE0 -/* 03C8D8 8003BCD8 00000000 */ nop -/* 03C8DC 8003BCDC AFA00050 */ sw $zero, 0x50($sp) -.L8003BCE0: -/* 03C8E0 8003BCE0 810D0015 */ lb $t5, 0x15($t0) -/* 03C8E4 8003BCE4 8FAA0034 */ lw $t2, 0x34($sp) -/* 03C8E8 8003BCE8 15A00012 */ bnez $t5, .L8003BD34 -/* 03C8EC 8003BCEC 24060001 */ li $a2, 1 -/* 03C8F0 8003BCF0 91020012 */ lbu $v0, 0x12($t0) -/* 03C8F4 8003BCF4 1480000A */ bnez $a0, .L8003BD20 -/* 03C8F8 8003BCF8 8FB80050 */ lw $t8, 0x50($sp) -/* 03C8FC 8003BCFC 8FAE0028 */ lw $t6, 0x28($sp) -/* 03C900 8003BD00 8FAF0050 */ lw $t7, 0x50($sp) -/* 03C904 8003BD04 11C00005 */ beqz $t6, .L8003BD1C -/* 03C908 8003BD08 01E2082A */ slt $at, $t7, $v0 -/* 03C90C 8003BD0C 10200004 */ beqz $at, .L8003BD20 -/* 03C910 8003BD10 8FB80050 */ lw $t8, 0x50($sp) -/* 03C914 8003BD14 10000007 */ b .L8003BD34 -/* 03C918 8003BD18 A1060015 */ sb $a2, 0x15($t0) -.L8003BD1C: -/* 03C91C 8003BD1C 8FB80050 */ lw $t8, 0x50($sp) -.L8003BD20: -/* 03C920 8003BD20 244B000A */ addiu $t3, $v0, 0xa -/* 03C924 8003BD24 0178082A */ slt $at, $t3, $t8 -/* 03C928 8003BD28 10200002 */ beqz $at, .L8003BD34 -/* 03C92C 8003BD2C 2419FFFF */ li $t9, -1 -/* 03C930 8003BD30 A1190015 */ sb $t9, 0x15($t0) -.L8003BD34: -/* 03C934 8003BD34 910C000F */ lbu $t4, 0xf($t0) -/* 03C938 8003BD38 8FAE0028 */ lw $t6, 0x28($sp) -/* 03C93C 8003BD3C 318D0002 */ andi $t5, $t4, 2 -/* 03C940 8003BD40 11A0005E */ beqz $t5, .L8003BEBC -/* 03C944 8003BD44 00002825 */ move $a1, $zero -/* 03C948 8003BD48 11C00033 */ beqz $t6, .L8003BE18 -/* 03C94C 8003BD4C 00000000 */ nop -/* 03C950 8003BD50 914F0000 */ lbu $t7, ($t2) -/* 03C954 8003BD54 24010019 */ li $at, 25 -/* 03C958 8003BD58 15E1002F */ bne $t7, $at, .L8003BE18 -/* 03C95C 8003BD5C 00000000 */ nop -/* 03C960 8003BD60 814B0014 */ lb $t3, 0x14($t2) -/* 03C964 8003BD64 8D380004 */ lw $t8, 4($t1) -/* 03C968 8003BD68 000BC880 */ sll $t9, $t3, 2 -/* 03C96C 8003BD6C 03196021 */ addu $t4, $t8, $t9 -/* 03C970 8003BD70 8D820000 */ lw $v0, ($t4) -/* 03C974 8003BD74 00000000 */ nop -/* 03C978 8003BD78 304D0002 */ andi $t5, $v0, 2 -/* 03C97C 8003BD7C 11A00023 */ beqz $t5, .L8003BE0C -/* 03C980 8003BD80 304E0004 */ andi $t6, $v0, 4 -/* 03C984 8003BD84 91220048 */ lbu $v0, 0x48($t1) -/* 03C988 8003BD88 24010005 */ li $at, 5 -/* 03C98C 8003BD8C 10410006 */ beq $v0, $at, .L8003BDA8 -/* 03C990 8003BD90 240F0001 */ li $t7, 1 -/* 03C994 8003BD94 952E000C */ lhu $t6, 0xc($t1) -/* 03C998 8003BD98 004F5804 */ sllv $t3, $t7, $v0 -/* 03C99C 8003BD9C 01CBC024 */ and $t8, $t6, $t3 -/* 03C9A0 8003BDA0 13000012 */ beqz $t8, .L8003BDEC -/* 03C9A4 8003BDA4 00000000 */ nop -.L8003BDA8: -/* 03C9A8 8003BDA8 91590015 */ lbu $t9, 0x15($t2) -/* 03C9AC 8003BDAC 240F0002 */ li $t7, 2 -/* 03C9B0 8003BDB0 332C00FF */ andi $t4, $t9, 0xff -/* 03C9B4 8003BDB4 2981000A */ slti $at, $t4, 0xa -/* 03C9B8 8003BDB8 14200004 */ bnez $at, .L8003BDCC -/* 03C9BC 8003BDBC A1190010 */ sb $t9, 0x10($t0) -/* 03C9C0 8003BDC0 240D0003 */ li $t5, 3 -/* 03C9C4 8003BDC4 10000002 */ b .L8003BDD0 -/* 03C9C8 8003BDC8 A20D003A */ sb $t5, 0x3a($s0) -.L8003BDCC: -/* 03C9CC 8003BDCC A20F003A */ sb $t7, 0x3a($s0) -.L8003BDD0: -/* 03C9D0 8003BDD0 814B0014 */ lb $t3, 0x14($t2) -/* 03C9D4 8003BDD4 8D2E0004 */ lw $t6, 4($t1) -/* 03C9D8 8003BDD8 000BC080 */ sll $t8, $t3, 2 -/* 03C9DC 8003BDDC 01D8C821 */ addu $t9, $t6, $t8 -/* 03C9E0 8003BDE0 8F220000 */ lw $v0, ($t9) -/* 03C9E4 8003BDE4 10000009 */ b .L8003BE0C -/* 03C9E8 8003BDE8 304E0004 */ andi $t6, $v0, 4 -.L8003BDEC: -/* 03C9EC 8003BDEC A200003A */ sb $zero, 0x3a($s0) -/* 03C9F0 8003BDF0 814D0014 */ lb $t5, 0x14($t2) -/* 03C9F4 8003BDF4 8D2C0004 */ lw $t4, 4($t1) -/* 03C9F8 8003BDF8 000D7880 */ sll $t7, $t5, 2 -/* 03C9FC 8003BDFC 018F5821 */ addu $t3, $t4, $t7 -/* 03CA00 8003BE00 8D620000 */ lw $v0, ($t3) -/* 03CA04 8003BE04 00000000 */ nop -/* 03CA08 8003BE08 304E0004 */ andi $t6, $v0, 4 -.L8003BE0C: -/* 03CA0C 8003BE0C 11C00002 */ beqz $t6, .L8003BE18 -/* 03CA10 8003BE10 00000000 */ nop -/* 03CA14 8003BE14 A206003A */ sb $a2, 0x3a($s0) -.L8003BE18: -/* 03CA18 8003BE18 81030015 */ lb $v1, 0x15($t0) -/* 03CA1C 8003BE1C 2401FFFF */ li $at, -1 -/* 03CA20 8003BE20 14C30015 */ bne $a2, $v1, .L8003BE78 -/* 03CA24 8003BE24 00000000 */ nop -/* 03CA28 8003BE28 3C01800E */ lui $at, %hi(D_800E6170 + 4) # $at, 0x800e -/* 03CA2C 8003BE2C C5120000 */ lwc1 $f18, ($t0) -/* 03CA30 8003BE30 C4276170 */ lwc1 $f7, %lo(D_800E6170)($at) -/* 03CA34 8003BE34 C4266174 */ lwc1 $f6, %lo(D_800E6170 + 4)($at) -/* 03CA38 8003BE38 C6100010 */ lwc1 $f16, 0x10($s0) -/* 03CA3C 8003BE3C 46009121 */ cvt.d.s $f4, $f18 -/* 03CA40 8003BE40 46262200 */ add.d $f8, $f4, $f6 -/* 03CA44 8003BE44 C7AA0030 */ lwc1 $f10, 0x30($sp) -/* 03CA48 8003BE48 460080A1 */ cvt.d.s $f2, $f16 -/* 03CA4C 8003BE4C 4628103C */ c.lt.d $f2, $f8 -/* 03CA50 8003BE50 00000000 */ nop -/* 03CA54 8003BE54 45000064 */ bc1f .L8003BFE8 -/* 03CA58 8003BE58 00000000 */ nop -/* 03CA5C 8003BE5C 46005021 */ cvt.d.s $f0, $f10 -/* 03CA60 8003BE60 46200400 */ add.d $f16, $f0, $f0 -/* 03CA64 8003BE64 24050001 */ li $a1, 1 -/* 03CA68 8003BE68 46301480 */ add.d $f18, $f2, $f16 -/* 03CA6C 8003BE6C 46209120 */ cvt.s.d $f4, $f18 -/* 03CA70 8003BE70 1000005D */ b .L8003BFE8 -/* 03CA74 8003BE74 E6040010 */ swc1 $f4, 0x10($s0) -.L8003BE78: -/* 03CA78 8003BE78 1461005B */ bne $v1, $at, .L8003BFE8 -/* 03CA7C 8003BE7C 00000000 */ nop -/* 03CA80 8003BE80 C6020010 */ lwc1 $f2, 0x10($s0) -/* 03CA84 8003BE84 C5060000 */ lwc1 $f6, ($t0) -/* 03CA88 8003BE88 C7A80030 */ lwc1 $f8, 0x30($sp) -/* 03CA8C 8003BE8C 4602303C */ c.lt.s $f6, $f2 -/* 03CA90 8003BE90 00000000 */ nop -/* 03CA94 8003BE94 45000054 */ bc1f .L8003BFE8 -/* 03CA98 8003BE98 00000000 */ nop -/* 03CA9C 8003BE9C 46004021 */ cvt.d.s $f0, $f8 -/* 03CAA0 8003BEA0 46200400 */ add.d $f16, $f0, $f0 -/* 03CAA4 8003BEA4 24050001 */ li $a1, 1 -/* 03CAA8 8003BEA8 460012A1 */ cvt.d.s $f10, $f2 -/* 03CAAC 8003BEAC 46305481 */ sub.d $f18, $f10, $f16 -/* 03CAB0 8003BEB0 46209120 */ cvt.s.d $f4, $f18 -/* 03CAB4 8003BEB4 1000004C */ b .L8003BFE8 -/* 03CAB8 8003BEB8 E6040010 */ swc1 $f4, 0x10($s0) -.L8003BEBC: -/* 03CABC 8003BEBC 91580000 */ lbu $t8, ($t2) -/* 03CAC0 8003BEC0 240100D7 */ li $at, 215 -/* 03CAC4 8003BEC4 17010025 */ bne $t8, $at, .L8003BF5C -/* 03CAC8 8003BEC8 24190001 */ li $t9, 1 -/* 03CACC 8003BECC A200003A */ sb $zero, 0x3a($s0) -/* 03CAD0 8003BED0 91240048 */ lbu $a0, 0x48($t1) -/* 03CAD4 8003BED4 9523000C */ lhu $v1, 0xc($t1) -/* 03CAD8 8003BED8 00996804 */ sllv $t5, $t9, $a0 -/* 03CADC 8003BEDC 006D6024 */ and $t4, $v1, $t5 -/* 03CAE0 8003BEE0 1180000C */ beqz $t4, .L8003BF14 -/* 03CAE4 8003BEE4 00801025 */ move $v0, $a0 -/* 03CAE8 8003BEE8 8D2F0000 */ lw $t7, ($t1) -/* 03CAEC 8003BEEC 00045840 */ sll $t3, $a0, 1 -/* 03CAF0 8003BEF0 01EB7021 */ addu $t6, $t7, $t3 -/* 03CAF4 8003BEF4 85D80000 */ lh $t8, ($t6) -/* 03CAF8 8003BEF8 24010008 */ li $at, 8 -/* 03CAFC 8003BEFC 17010006 */ bne $t8, $at, .L8003BF18 -/* 03CB00 8003BF00 24590006 */ addiu $t9, $v0, 6 -/* 03CB04 8003BF04 A206003A */ sb $a2, 0x3a($s0) -/* 03CB08 8003BF08 9523000C */ lhu $v1, 0xc($t1) -/* 03CB0C 8003BF0C 91220048 */ lbu $v0, 0x48($t1) -/* 03CB10 8003BF10 00000000 */ nop -.L8003BF14: -/* 03CB14 8003BF14 24590006 */ addiu $t9, $v0, 6 -.L8003BF18: -/* 03CB18 8003BF18 240D0001 */ li $t5, 1 -/* 03CB1C 8003BF1C 032D6004 */ sllv $t4, $t5, $t9 -/* 03CB20 8003BF20 006C7824 */ and $t7, $v1, $t4 -/* 03CB24 8003BF24 11E00005 */ beqz $t7, .L8003BF3C -/* 03CB28 8003BF28 24010005 */ li $at, 5 -/* 03CB2C 8003BF2C 240B0002 */ li $t3, 2 -/* 03CB30 8003BF30 A20B003A */ sb $t3, 0x3a($s0) -/* 03CB34 8003BF34 91220048 */ lbu $v0, 0x48($t1) -/* 03CB38 8003BF38 00000000 */ nop -.L8003BF3C: -/* 03CB3C 8003BF3C 14410007 */ bne $v0, $at, .L8003BF5C -/* 03CB40 8003BF40 00000000 */ nop -/* 03CB44 8003BF44 8202003A */ lb $v0, 0x3a($s0) -/* 03CB48 8003BF48 00000000 */ nop -/* 03CB4C 8003BF4C 28410002 */ slti $at, $v0, 2 -/* 03CB50 8003BF50 10200002 */ beqz $at, .L8003BF5C -/* 03CB54 8003BF54 244E0001 */ addiu $t6, $v0, 1 -/* 03CB58 8003BF58 A20E003A */ sb $t6, 0x3a($s0) -.L8003BF5C: -/* 03CB5C 8003BF5C 81030015 */ lb $v1, 0x15($t0) -/* 03CB60 8003BF60 00001025 */ move $v0, $zero -/* 03CB64 8003BF64 14C30008 */ bne $a2, $v1, .L8003BF88 -/* 03CB68 8003BF68 2401FFFF */ li $at, -1 -/* 03CB6C 8003BF6C 86180000 */ lh $t8, ($s0) -/* 03CB70 8003BF70 8E0D007C */ lw $t5, 0x7c($s0) -/* 03CB74 8003BF74 00000000 */ nop -/* 03CB78 8003BF78 030D1023 */ subu $v0, $t8, $t5 -/* 03CB7C 8003BF7C 0002CC00 */ sll $t9, $v0, 0x10 -/* 03CB80 8003BF80 10000009 */ b .L8003BFA8 -/* 03CB84 8003BF84 00191403 */ sra $v0, $t9, 0x10 -.L8003BF88: -/* 03CB88 8003BF88 14610008 */ bne $v1, $at, .L8003BFAC -/* 03CB8C 8003BF8C 000268C3 */ sra $t5, $v0, 3 -/* 03CB90 8003BF90 860F0000 */ lh $t7, ($s0) -/* 03CB94 8003BF94 8E0B0078 */ lw $t3, 0x78($s0) -/* 03CB98 8003BF98 00000000 */ nop -/* 03CB9C 8003BF9C 01EB1023 */ subu $v0, $t7, $t3 -/* 03CBA0 8003BFA0 00027400 */ sll $t6, $v0, 0x10 -/* 03CBA4 8003BFA4 000E1403 */ sra $v0, $t6, 0x10 -.L8003BFA8: -/* 03CBA8 8003BFA8 000268C3 */ sra $t5, $v0, 3 -.L8003BFAC: -/* 03CBAC 8003BFAC 000DCC00 */ sll $t9, $t5, 0x10 -/* 03CBB0 8003BFB0 00191403 */ sra $v0, $t9, 0x10 -/* 03CBB4 8003BFB4 28410201 */ slti $at, $v0, 0x201 -/* 03CBB8 8003BFB8 86030000 */ lh $v1, ($s0) -/* 03CBBC 8003BFBC 14200003 */ bnez $at, .L8003BFCC -/* 03CBC0 8003BFC0 2841FE00 */ slti $at, $v0, -0x200 -/* 03CBC4 8003BFC4 24020200 */ li $v0, 512 -/* 03CBC8 8003BFC8 2841FE00 */ slti $at, $v0, -0x200 -.L8003BFCC: -/* 03CBCC 8003BFCC 10200003 */ beqz $at, .L8003BFDC -/* 03CBD0 8003BFD0 00627823 */ subu $t7, $v1, $v0 -/* 03CBD4 8003BFD4 2402FE00 */ li $v0, -512 -/* 03CBD8 8003BFD8 00627823 */ subu $t7, $v1, $v0 -.L8003BFDC: -/* 03CBDC 8003BFDC 10400002 */ beqz $v0, .L8003BFE8 -/* 03CBE0 8003BFE0 A60F0000 */ sh $t7, ($s0) -/* 03CBE4 8003BFE4 24050001 */ li $a1, 1 -.L8003BFE8: -/* 03CBE8 8003BFE8 10A00013 */ beqz $a1, .L8003C038 -/* 03CBEC 8003BFEC 00000000 */ nop -/* 03CBF0 8003BFF0 8D0B0004 */ lw $t3, 4($t0) -/* 03CBF4 8003BFF4 24040222 */ li $a0, 546 -/* 03CBF8 8003BFF8 1560001B */ bnez $t3, .L8003C068 -/* 03CBFC 8003BFFC 240E0001 */ li $t6, 1 -/* 03CC00 8003C000 8E05000C */ lw $a1, 0xc($s0) -/* 03CC04 8003C004 8E060010 */ lw $a2, 0x10($s0) -/* 03CC08 8003C008 8E070014 */ lw $a3, 0x14($s0) -/* 03CC0C 8003C00C 25180004 */ addiu $t8, $t0, 4 -/* 03CC10 8003C010 AFB80014 */ sw $t8, 0x14($sp) -/* 03CC14 8003C014 AFA90040 */ sw $t1, 0x40($sp) -/* 03CC18 8003C018 AFA80044 */ sw $t0, 0x44($sp) -/* 03CC1C 8003C01C 0C002556 */ jal play_sound_at_position -/* 03CC20 8003C020 AFAE0010 */ sw $t6, 0x10($sp) -/* 03CC24 8003C024 8FA80044 */ lw $t0, 0x44($sp) -/* 03CC28 8003C028 8FA90040 */ lw $t1, 0x40($sp) -/* 03CC2C 8003C02C 8FAA0034 */ lw $t2, 0x34($sp) -/* 03CC30 8003C030 1000000E */ b .L8003C06C -/* 03CC34 8003C034 81020014 */ lb $v0, 0x14($t0) -.L8003C038: -/* 03CC38 8003C038 8D020004 */ lw $v0, 4($t0) -/* 03CC3C 8003C03C A1000015 */ sb $zero, 0x15($t0) -/* 03CC40 8003C040 10400009 */ beqz $v0, .L8003C068 -/* 03CC44 8003C044 00402025 */ move $a0, $v0 -/* 03CC48 8003C048 AFA80044 */ sw $t0, 0x44($sp) -/* 03CC4C 8003C04C 0C0025BE */ jal func_800096F8 -/* 03CC50 8003C050 AFA90040 */ sw $t1, 0x40($sp) -/* 03CC54 8003C054 8FA80044 */ lw $t0, 0x44($sp) -/* 03CC58 8003C058 8FA90040 */ lw $t1, 0x40($sp) -/* 03CC5C 8003C05C AD000004 */ sw $zero, 4($t0) -/* 03CC60 8003C060 8FAA0034 */ lw $t2, 0x34($sp) -/* 03CC64 8003C064 00000000 */ nop -.L8003C068: -/* 03CC68 8003C068 81020014 */ lb $v0, 0x14($t0) -.L8003C06C: -/* 03CC6C 8003C06C 240D0001 */ li $t5, 1 -/* 03CC70 8003C070 04400010 */ bltz $v0, .L8003C0B4 -/* 03CC74 8003C074 00000000 */ nop -/* 03CC78 8003C078 95390008 */ lhu $t9, 8($t1) -/* 03CC7C 8003C07C 004D2004 */ sllv $a0, $t5, $v0 -/* 03CC80 8003C080 03246024 */ and $t4, $t9, $a0 -/* 03CC84 8003C084 11800043 */ beqz $t4, .L8003C194 -/* 03CC88 8003C088 00000000 */ nop -/* 03CC8C 8003C08C 912B0049 */ lbu $t3, 0x49($t1) -/* 03CC90 8003C090 8D2F0004 */ lw $t7, 4($t1) -/* 03CC94 8003C094 000B7080 */ sll $t6, $t3, 2 -/* 03CC98 8003C098 01EE1021 */ addu $v0, $t7, $t6 -/* 03CC9C 8003C09C 8C580000 */ lw $t8, ($v0) -/* 03CCA0 8003C0A0 8FAD0054 */ lw $t5, 0x54($sp) -/* 03CCA4 8003C0A4 00000000 */ nop -/* 03CCA8 8003C0A8 030DC825 */ or $t9, $t8, $t5 -/* 03CCAC 8003C0AC 10000039 */ b .L8003C194 -/* 03CCB0 8003C0B0 AC590000 */ sw $t9, ($v0) -.L8003C0B4: -/* 03CCB4 8003C0B4 814C0013 */ lb $t4, 0x13($t2) -/* 03CCB8 8003C0B8 8D230004 */ lw $v1, 4($t1) -/* 03CCBC 8003C0BC 1580001A */ bnez $t4, .L8003C128 -/* 03CCC0 8003C0C0 00000000 */ nop -/* 03CCC4 8003C0C4 8D2B0000 */ lw $t3, ($t1) -/* 03CCC8 8003C0C8 910E0010 */ lbu $t6, 0x10($t0) -/* 03CCCC 8003C0CC 856F0000 */ lh $t7, ($t3) -/* 03CCD0 8003C0D0 00000000 */ nop -/* 03CCD4 8003C0D4 01EE082A */ slt $at, $t7, $t6 -/* 03CCD8 8003C0D8 1420000A */ bnez $at, .L8003C104 -/* 03CCDC 8003C0DC 00000000 */ nop -/* 03CCE0 8003C0E0 91380049 */ lbu $t8, 0x49($t1) -/* 03CCE4 8003C0E4 8FAC0054 */ lw $t4, 0x54($sp) -/* 03CCE8 8003C0E8 00186880 */ sll $t5, $t8, 2 -/* 03CCEC 8003C0EC 006D1021 */ addu $v0, $v1, $t5 -/* 03CCF0 8003C0F0 8C590000 */ lw $t9, ($v0) -/* 03CCF4 8003C0F4 00000000 */ nop -/* 03CCF8 8003C0F8 032C5825 */ or $t3, $t9, $t4 -/* 03CCFC 8003C0FC 10000025 */ b .L8003C194 -/* 03CD00 8003C100 AC4B0000 */ sw $t3, ($v0) -.L8003C104: -/* 03CD04 8003C104 912F0049 */ lbu $t7, 0x49($t1) -/* 03CD08 8003C108 8FAD0054 */ lw $t5, 0x54($sp) -/* 03CD0C 8003C10C 000F7080 */ sll $t6, $t7, 2 -/* 03CD10 8003C110 006E1021 */ addu $v0, $v1, $t6 -/* 03CD14 8003C114 8C580000 */ lw $t8, ($v0) -/* 03CD18 8003C118 01A0C827 */ not $t9, $t5 -/* 03CD1C 8003C11C 03196024 */ and $t4, $t8, $t9 -/* 03CD20 8003C120 1000001C */ b .L8003C194 -/* 03CD24 8003C124 AC4C0000 */ sw $t4, ($v0) -.L8003C128: -/* 03CD28 8003C128 912F0048 */ lbu $t7, 0x48($t1) -/* 03CD2C 8003C12C 8D2B0000 */ lw $t3, ($t1) -/* 03CD30 8003C130 000F7040 */ sll $t6, $t7, 1 -/* 03CD34 8003C134 016E6821 */ addu $t5, $t3, $t6 -/* 03CD38 8003C138 85B80000 */ lh $t8, ($t5) -/* 03CD3C 8003C13C 91190010 */ lbu $t9, 0x10($t0) -/* 03CD40 8003C140 00000000 */ nop -/* 03CD44 8003C144 0319082A */ slt $at, $t8, $t9 -/* 03CD48 8003C148 1420000A */ bnez $at, .L8003C174 -/* 03CD4C 8003C14C 00000000 */ nop -/* 03CD50 8003C150 912C0049 */ lbu $t4, 0x49($t1) -/* 03CD54 8003C154 8FAE0054 */ lw $t6, 0x54($sp) -/* 03CD58 8003C158 000C7880 */ sll $t7, $t4, 2 -/* 03CD5C 8003C15C 006F1021 */ addu $v0, $v1, $t7 -/* 03CD60 8003C160 8C4B0000 */ lw $t3, ($v0) -/* 03CD64 8003C164 00000000 */ nop -/* 03CD68 8003C168 016E6825 */ or $t5, $t3, $t6 -/* 03CD6C 8003C16C 10000009 */ b .L8003C194 -/* 03CD70 8003C170 AC4D0000 */ sw $t5, ($v0) -.L8003C174: -/* 03CD74 8003C174 91380049 */ lbu $t8, 0x49($t1) -/* 03CD78 8003C178 8FAF0054 */ lw $t7, 0x54($sp) -/* 03CD7C 8003C17C 0018C880 */ sll $t9, $t8, 2 -/* 03CD80 8003C180 00791021 */ addu $v0, $v1, $t9 -/* 03CD84 8003C184 8C4C0000 */ lw $t4, ($v0) -/* 03CD88 8003C188 01E05827 */ not $t3, $t7 -/* 03CD8C 8003C18C 018B7024 */ and $t6, $t4, $t3 -/* 03CD90 8003C190 AC4E0000 */ sw $t6, ($v0) -.L8003C194: -/* 03CD94 8003C194 8E18004C */ lw $t8, 0x4c($s0) -/* 03CD98 8003C198 240D00FF */ li $t5, 255 -/* 03CD9C 8003C19C A30D0013 */ sb $t5, 0x13($t8) -/* 03CDA0 8003C1A0 8E19004C */ lw $t9, 0x4c($s0) -/* 03CDA4 8003C1A4 00000000 */ nop -/* 03CDA8 8003C1A8 AF200000 */ sw $zero, ($t9) -/* 03CDAC 8003C1AC 8E02004C */ lw $v0, 0x4c($s0) -/* 03CDB0 8003C1B0 00000000 */ nop -/* 03CDB4 8003C1B4 844F0014 */ lh $t7, 0x14($v0) -/* 03CDB8 8003C1B8 00000000 */ nop -/* 03CDBC 8003C1BC 31ECFFF7 */ andi $t4, $t7, 0xfff7 -/* 03CDC0 8003C1C0 A44C0014 */ sh $t4, 0x14($v0) -/* 03CDC4 8003C1C4 8E0B005C */ lw $t3, 0x5c($s0) -/* 03CDC8 8003C1C8 00000000 */ nop -/* 03CDCC 8003C1CC AD600100 */ sw $zero, 0x100($t3) -/* 03CDD0 8003C1D0 8FBF0024 */ lw $ra, 0x24($sp) -/* 03CDD4 8003C1D4 8FB00020 */ lw $s0, 0x20($sp) -/* 03CDD8 8003C1D8 03E00008 */ jr $ra -/* 03CDDC 8003C1DC 27BD0060 */ addiu $sp, $sp, 0x60 - diff --git a/asm/non_matchings/object_functions/obj_loop_fish.s b/asm/non_matchings/object_functions/obj_loop_fish.s deleted file mode 100644 index 28a93663..00000000 --- a/asm/non_matchings/object_functions/obj_loop_fish.s +++ /dev/null @@ -1,312 +0,0 @@ -glabel obj_loop_fish -/* 037CD4 800370D4 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 037CD8 800370D8 AFBF001C */ sw $ra, 0x1c($sp) -/* 037CDC 800370DC AFB10018 */ sw $s1, 0x18($sp) -/* 037CE0 800370E0 00808825 */ move $s1, $a0 -/* 037CE4 800370E4 AFB00014 */ sw $s0, 0x14($sp) -/* 037CE8 800370E8 0C019884 */ jal get_viewport_count -/* 037CEC 800370EC AFA50074 */ sw $a1, 0x74($sp) -/* 037CF0 800370F0 18400005 */ blez $v0, .L80037108 -/* 037CF4 800370F4 00000000 */ nop -/* 037CF8 800370F8 0C003FEE */ jal free_object -/* 037CFC 800370FC 02202025 */ move $a0, $s1 -/* 037D00 80037100 10000119 */ b .L80037568 -/* 037D04 80037104 8FBF001C */ lw $ra, 0x1c($sp) -.L80037108: -/* 037D08 80037108 8E300064 */ lw $s0, 0x64($s1) -/* 037D0C 8003710C C6200010 */ lwc1 $f0, 0x10($s1) -/* 037D10 80037110 920300FD */ lbu $v1, 0xfd($s0) -/* 037D14 80037114 00000000 */ nop -/* 037D18 80037118 1060001B */ beqz $v1, .L80037188 -/* 037D1C 8003711C 00601025 */ move $v0, $v1 -/* 037D20 80037120 8FA50074 */ lw $a1, 0x74($sp) -/* 037D24 80037124 00000000 */ nop -/* 037D28 80037128 0065082A */ slt $at, $v1, $a1 -/* 037D2C 8003712C 14200009 */ bnez $at, .L80037154 -/* 037D30 80037130 00000000 */ nop -/* 037D34 80037134 44853000 */ mtc1 $a1, $f6 -/* 037D38 80037138 C6240020 */ lwc1 $f4, 0x20($s1) -/* 037D3C 8003713C 46803220 */ cvt.s.w $f8, $f6 -/* 037D40 80037140 00457023 */ subu $t6, $v0, $a1 -/* 037D44 80037144 A20E00FD */ sb $t6, 0xfd($s0) -/* 037D48 80037148 46082282 */ mul.s $f10, $f4, $f8 -/* 037D4C 8003714C 1000000C */ b .L80037180 -/* 037D50 80037150 460A0000 */ add.s $f0, $f0, $f10 -.L80037154: -/* 037D54 80037154 44832000 */ mtc1 $v1, $f4 -/* 037D58 80037158 C6260020 */ lwc1 $f6, 0x20($s1) -/* 037D5C 8003715C 04610005 */ bgez $v1, .L80037174 -/* 037D60 80037160 46802220 */ cvt.s.w $f8, $f4 -/* 037D64 80037164 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 037D68 80037168 44815000 */ mtc1 $at, $f10 -/* 037D6C 8003716C 00000000 */ nop -/* 037D70 80037170 460A4200 */ add.s $f8, $f8, $f10 -.L80037174: -/* 037D74 80037174 46083102 */ mul.s $f4, $f6, $f8 -/* 037D78 80037178 A20000FD */ sb $zero, 0xfd($s0) -/* 037D7C 8003717C 46040000 */ add.s $f0, $f0, $f4 -.L80037180: -/* 037D80 80037180 1000003D */ b .L80037278 -/* 037D84 80037184 E7A00068 */ swc1 $f0, 0x68($sp) -.L80037188: -/* 037D88 80037188 00002025 */ move $a0, $zero -/* 037D8C 8003718C 24050007 */ li $a1, 7 -/* 037D90 80037190 0C01BE53 */ jal get_random_number_from_range -/* 037D94 80037194 E7A00068 */ swc1 $f0, 0x68($sp) -/* 037D98 80037198 14400037 */ bnez $v0, .L80037278 -/* 037D9C 8003719C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 037DA0 800371A0 C60A0118 */ lwc1 $f10, 0x118($s0) -/* 037DA4 800371A4 44813000 */ mtc1 $at, $f6 -/* 037DA8 800371A8 240400A0 */ li $a0, 160 -/* 037DAC 800371AC 460A303E */ c.le.s $f6, $f10 -/* 037DB0 800371B0 00000000 */ nop -/* 037DB4 800371B4 45000031 */ bc1f .L8003727C -/* 037DB8 800371B8 8FA50074 */ lw $a1, 0x74($sp) -/* 037DBC 800371BC 0C01BE53 */ jal get_random_number_from_range -/* 037DC0 800371C0 240500FF */ li $a1, 255 -/* 037DC4 800371C4 444FF800 */ cfc1 $t7, $31 -/* 037DC8 800371C8 C6080118 */ lwc1 $f8, 0x118($s0) -/* 037DCC 800371CC 35E10003 */ ori $at, $t7, 3 -/* 037DD0 800371D0 38210002 */ xori $at, $at, 2 -/* 037DD4 800371D4 44C1F800 */ ctc1 $at, $31 -/* 037DD8 800371D8 A20200FD */ sb $v0, 0xfd($s0) -/* 037DDC 800371DC 46004124 */ cvt.w.s $f4, $f8 -/* 037DE0 800371E0 00002025 */ move $a0, $zero -/* 037DE4 800371E4 44052000 */ mfc1 $a1, $f4 -/* 037DE8 800371E8 44CFF800 */ ctc1 $t7, $31 -/* 037DEC 800371EC 0C01BE53 */ jal get_random_number_from_range -/* 037DF0 800371F0 00000000 */ nop -/* 037DF4 800371F4 C6200010 */ lwc1 $f0, 0x10($s1) -/* 037DF8 800371F8 C60A010C */ lwc1 $f10, 0x10c($s0) -/* 037DFC 800371FC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 037E00 80037200 46005181 */ sub.s $f6, $f10, $f0 -/* 037E04 80037204 E6260020 */ swc1 $f6, 0x20($s1) -/* 037E08 80037208 C608010C */ lwc1 $f8, 0x10c($s0) -/* 037E0C 8003720C 00000000 */ nop -/* 037E10 80037210 4608003C */ c.lt.s $f0, $f8 -/* 037E14 80037214 00000000 */ nop -/* 037E18 80037218 45000007 */ bc1f .L80037238 -/* 037E1C 8003721C 00000000 */ nop -/* 037E20 80037220 44825000 */ mtc1 $v0, $f10 -/* 037E24 80037224 C6240020 */ lwc1 $f4, 0x20($s1) -/* 037E28 80037228 468051A0 */ cvt.s.w $f6, $f10 -/* 037E2C 8003722C 46062200 */ add.s $f8, $f4, $f6 -/* 037E30 80037230 10000006 */ b .L8003724C -/* 037E34 80037234 E6280020 */ swc1 $f8, 0x20($s1) -.L80037238: -/* 037E38 80037238 44822000 */ mtc1 $v0, $f4 -/* 037E3C 8003723C C62A0020 */ lwc1 $f10, 0x20($s1) -/* 037E40 80037240 468021A0 */ cvt.s.w $f6, $f4 -/* 037E44 80037244 46065201 */ sub.s $f8, $f10, $f6 -/* 037E48 80037248 E6280020 */ swc1 $f8, 0x20($s1) -.L8003724C: -/* 037E4C 8003724C 921800FD */ lbu $t8, 0xfd($s0) -/* 037E50 80037250 C6240020 */ lwc1 $f4, 0x20($s1) -/* 037E54 80037254 44985000 */ mtc1 $t8, $f10 -/* 037E58 80037258 07010004 */ bgez $t8, .L8003726C -/* 037E5C 8003725C 468051A0 */ cvt.s.w $f6, $f10 -/* 037E60 80037260 44814000 */ mtc1 $at, $f8 -/* 037E64 80037264 00000000 */ nop -/* 037E68 80037268 46083180 */ add.s $f6, $f6, $f8 -.L8003726C: -/* 037E6C 8003726C 00000000 */ nop -/* 037E70 80037270 46062283 */ div.s $f10, $f4, $f6 -/* 037E74 80037274 E62A0020 */ swc1 $f10, 0x20($s1) -.L80037278: -/* 037E78 80037278 8FA50074 */ lw $a1, 0x74($sp) -.L8003727C: -/* 037E7C 8003727C 86080100 */ lh $t0, 0x100($s0) -/* 037E80 80037280 861900FE */ lh $t9, 0xfe($s0) -/* 037E84 80037284 00A80019 */ multu $a1, $t0 -/* 037E88 80037288 00004812 */ mflo $t1 -/* 037E8C 8003728C 03295021 */ addu $t2, $t9, $t1 -/* 037E90 80037290 A60A00FE */ sh $t2, 0xfe($s0) -/* 037E94 80037294 860B00FE */ lh $t3, 0xfe($s0) -/* 037E98 80037298 00000000 */ nop -/* 037E9C 8003729C 000B6440 */ sll $t4, $t3, 0x11 -/* 037EA0 800372A0 0C01C1F1 */ jal sins_f -/* 037EA4 800372A4 000C2403 */ sra $a0, $t4, 0x10 -/* 037EA8 800372A8 C6080114 */ lwc1 $f8, 0x114($s0) -/* 037EAC 800372AC 860400FE */ lh $a0, 0xfe($s0) -/* 037EB0 800372B0 46080302 */ mul.s $f12, $f0, $f8 -/* 037EB4 800372B4 0C01C1FE */ jal coss_f -/* 037EB8 800372B8 E7AC006C */ swc1 $f12, 0x6c($sp) -/* 037EBC 800372BC C6040114 */ lwc1 $f4, 0x114($s0) -/* 037EC0 800372C0 86040104 */ lh $a0, 0x104($s0) -/* 037EC4 800372C4 46040082 */ mul.s $f2, $f0, $f4 -/* 037EC8 800372C8 0C01C1F1 */ jal sins_f -/* 037ECC 800372CC E7A20064 */ swc1 $f2, 0x64($sp) -/* 037ED0 800372D0 86040104 */ lh $a0, 0x104($s0) -/* 037ED4 800372D4 0C01C1FE */ jal coss_f -/* 037ED8 800372D8 E7A0004C */ swc1 $f0, 0x4c($sp) -/* 037EDC 800372DC C7AE006C */ lwc1 $f14, 0x6c($sp) -/* 037EE0 800372E0 C7A20064 */ lwc1 $f2, 0x64($sp) -/* 037EE4 800372E4 46007182 */ mul.s $f6, $f14, $f0 -/* 037EE8 800372E8 C7B0004C */ lwc1 $f16, 0x4c($sp) -/* 037EEC 800372EC 44809000 */ mtc1 $zero, $f18 -/* 037EF0 800372F0 46101282 */ mul.s $f10, $f2, $f16 -/* 037EF4 800372F4 00000000 */ nop -/* 037EF8 800372F8 46001202 */ mul.s $f8, $f2, $f0 -/* 037EFC 800372FC 460A3300 */ add.s $f12, $f6, $f10 -/* 037F00 80037300 C6060108 */ lwc1 $f6, 0x108($s0) -/* 037F04 80037304 C60A0110 */ lwc1 $f10, 0x110($s0) -/* 037F08 80037308 46107102 */ mul.s $f4, $f14, $f16 -/* 037F0C 8003730C 46066300 */ add.s $f12, $f12, $f6 -/* 037F10 80037310 46044081 */ sub.s $f2, $f8, $f4 -/* 037F14 80037314 C628000C */ lwc1 $f8, 0xc($s1) -/* 037F18 80037318 460A1080 */ add.s $f2, $f2, $f10 -/* 037F1C 8003731C C7AA0068 */ lwc1 $f10, 0x68($sp) -/* 037F20 80037320 460C4101 */ sub.s $f4, $f8, $f12 -/* 037F24 80037324 E7A40060 */ swc1 $f4, 0x60($sp) -/* 037F28 80037328 C6260010 */ lwc1 $f6, 0x10($s1) -/* 037F2C 8003732C 00000000 */ nop -/* 037F30 80037330 460A3201 */ sub.s $f8, $f6, $f10 -/* 037F34 80037334 E7A8005C */ swc1 $f8, 0x5c($sp) -/* 037F38 80037338 C6240014 */ lwc1 $f4, 0x14($s1) -/* 037F3C 8003733C 00000000 */ nop -/* 037F40 80037340 46022181 */ sub.s $f6, $f4, $f2 -/* 037F44 80037344 E7A60058 */ swc1 $f6, 0x58($sp) -/* 037F48 80037348 E632000C */ swc1 $f18, 0xc($s1) -/* 037F4C 8003734C E6320010 */ swc1 $f18, 0x10($s1) -/* 037F50 80037350 E6320014 */ swc1 $f18, 0x14($s1) -/* 037F54 80037354 E7AC006C */ swc1 $f12, 0x6c($sp) -/* 037F58 80037358 0C004558 */ jal ignore_bounds_check -/* 037F5C 8003735C E7A20064 */ swc1 $f2, 0x64($sp) -/* 037F60 80037360 C7A20064 */ lwc1 $f2, 0x64($sp) -/* 037F64 80037364 C7AC006C */ lwc1 $f12, 0x6c($sp) -/* 037F68 80037368 8FA60068 */ lw $a2, 0x68($sp) -/* 037F6C 8003736C 44071000 */ mfc1 $a3, $f2 -/* 037F70 80037370 44056000 */ mfc1 $a1, $f12 -/* 037F74 80037374 0C00455C */ jal move_object -/* 037F78 80037378 02202025 */ move $a0, $s1 -/* 037F7C 8003737C C7A00060 */ lwc1 $f0, 0x60($sp) -/* 037F80 80037380 C7B00058 */ lwc1 $f16, 0x58($sp) -/* 037F84 80037384 46000282 */ mul.s $f10, $f0, $f0 -/* 037F88 80037388 C7A2005C */ lwc1 $f2, 0x5c($sp) -/* 037F8C 8003738C 46108202 */ mul.s $f8, $f16, $f16 -/* 037F90 80037390 46085380 */ add.s $f14, $f10, $f8 -/* 037F94 80037394 46021102 */ mul.s $f4, $f2, $f2 -/* 037F98 80037398 E7AE0020 */ swc1 $f14, 0x20($sp) -/* 037F9C 8003739C 0C0326B4 */ jal sqrtf -/* 037FA0 800373A0 460E2300 */ add.s $f12, $f4, $f14 -/* 037FA4 800373A4 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 037FA8 800373A8 0C0326B4 */ jal sqrtf -/* 037FAC 800373AC E7A00050 */ swc1 $f0, 0x50($sp) -/* 037FB0 800373B0 3C0144C0 */ li $at, 0x44C00000 # 1536.000000 -/* 037FB4 800373B4 44815000 */ mtc1 $at, $f10 -/* 037FB8 800373B8 C7A60050 */ lwc1 $f6, 0x50($sp) -/* 037FBC 800373BC E7A00054 */ swc1 $f0, 0x54($sp) -/* 037FC0 800373C0 460A3202 */ mul.s $f8, $f6, $f10 -/* 037FC4 800373C4 86180106 */ lh $t8, 0x106($s0) -/* 037FC8 800373C8 444EF800 */ cfc1 $t6, $31 -/* 037FCC 800373CC 00000000 */ nop -/* 037FD0 800373D0 35C10003 */ ori $at, $t6, 3 -/* 037FD4 800373D4 38210002 */ xori $at, $at, 2 -/* 037FD8 800373D8 44C1F800 */ ctc1 $at, $31 -/* 037FDC 800373DC 00000000 */ nop -/* 037FE0 800373E0 46004124 */ cvt.w.s $f4, $f8 -/* 037FE4 800373E4 440F2000 */ mfc1 $t7, $f4 -/* 037FE8 800373E8 44CEF800 */ ctc1 $t6, $31 -/* 037FEC 800373EC 030F4021 */ addu $t0, $t8, $t7 -/* 037FF0 800373F0 A6080106 */ sh $t0, 0x106($s0) -/* 037FF4 800373F4 C7AE0058 */ lwc1 $f14, 0x58($sp) -/* 037FF8 800373F8 C7AC0060 */ lwc1 $f12, 0x60($sp) -/* 037FFC 800373FC 0C01C1D4 */ jal arctan2_f -/* 038000 80037400 00000000 */ nop -/* 038004 80037404 A6220000 */ sh $v0, ($s1) -/* 038008 80037408 C7AC005C */ lwc1 $f12, 0x5c($sp) -/* 03800C 8003740C C7AE0054 */ lwc1 $f14, 0x54($sp) -/* 038010 80037410 0C01C1D4 */ jal arctan2_f -/* 038014 80037414 46006307 */ neg.s $f12, $f12 -/* 038018 80037418 86230002 */ lh $v1, 2($s1) -/* 03801C 8003741C 8FAE0074 */ lw $t6, 0x74($sp) -/* 038020 80037420 00432023 */ subu $a0, $v0, $v1 -/* 038024 80037424 00622823 */ subu $a1, $v1, $v0 -/* 038028 80037428 3099FFFF */ andi $t9, $a0, 0xffff -/* 03802C 8003742C 30A9FFFF */ andi $t1, $a1, 0xffff -/* 038030 80037430 0329082A */ slt $at, $t9, $t1 -/* 038034 80037434 10200009 */ beqz $at, .L8003745C -/* 038038 80037438 01202825 */ move $a1, $t1 -/* 03803C 8003743C 8FAA0074 */ lw $t2, 0x74($sp) -/* 038040 80037440 00000000 */ nop -/* 038044 80037444 032A0019 */ multu $t9, $t2 -/* 038048 80037448 00005812 */ mflo $t3 -/* 03804C 8003744C 000B60C3 */ sra $t4, $t3, 3 -/* 038050 80037450 006C6821 */ addu $t5, $v1, $t4 -/* 038054 80037454 10000006 */ b .L80037470 -/* 038058 80037458 A62D0002 */ sh $t5, 2($s1) -.L8003745C: -/* 03805C 8003745C 00AE0019 */ multu $a1, $t6 -/* 038060 80037460 0000C012 */ mflo $t8 -/* 038064 80037464 001878C3 */ sra $t7, $t8, 3 -/* 038068 80037468 006F4023 */ subu $t0, $v1, $t7 -/* 03806C 8003746C A6280002 */ sh $t0, 2($s1) -.L80037470: -/* 038070 80037470 921900FC */ lbu $t9, 0xfc($s0) -/* 038074 80037474 24090001 */ li $t1, 1 -/* 038078 80037478 01395023 */ subu $t2, $t1, $t9 -/* 03807C 8003747C 314B00FF */ andi $t3, $t2, 0xff -/* 038080 80037480 000B6080 */ sll $t4, $t3, 2 -/* 038084 80037484 018B6023 */ subu $t4, $t4, $t3 -/* 038088 80037488 000C6040 */ sll $t4, $t4, 1 -/* 03808C 8003748C 000C6880 */ sll $t5, $t4, 2 -/* 038090 80037490 01AC6821 */ addu $t5, $t5, $t4 -/* 038094 80037494 000D6840 */ sll $t5, $t5, 1 -/* 038098 80037498 020D1821 */ addu $v1, $s0, $t5 -/* 03809C 8003749C A20A00FC */ sb $t2, 0xfc($s0) -/* 0380A0 800374A0 24630080 */ addiu $v1, $v1, 0x80 -/* 0380A4 800374A4 86040106 */ lh $a0, 0x106($s0) -/* 0380A8 800374A8 0C01C20C */ jal sins -/* 0380AC 800374AC AFA30028 */ sw $v1, 0x28($sp) -/* 0380B0 800374B0 000288C3 */ sra $s1, $v0, 3 -/* 0380B4 800374B4 00112400 */ sll $a0, $s1, 0x10 -/* 0380B8 800374B8 00047403 */ sra $t6, $a0, 0x10 -/* 0380BC 800374BC 0C01C1FE */ jal coss_f -/* 0380C0 800374C0 01C02025 */ move $a0, $t6 -/* 0380C4 800374C4 3C014200 */ li $at, 0x42000000 # 32.000000 -/* 0380C8 800374C8 44813000 */ mtc1 $at, $f6 -/* 0380CC 800374CC 00112400 */ sll $a0, $s1, 0x10 -/* 0380D0 800374D0 46060282 */ mul.s $f10, $f0, $f6 -/* 0380D4 800374D4 00047C03 */ sra $t7, $a0, 0x10 -/* 0380D8 800374D8 01E02025 */ move $a0, $t7 -/* 0380DC 800374DC 4458F800 */ cfc1 $t8, $31 -/* 0380E0 800374E0 00000000 */ nop -/* 0380E4 800374E4 37010003 */ ori $at, $t8, 3 -/* 0380E8 800374E8 38210002 */ xori $at, $at, 2 -/* 0380EC 800374EC 44C1F800 */ ctc1 $at, $31 -/* 0380F0 800374F0 00000000 */ nop -/* 0380F4 800374F4 46005224 */ cvt.w.s $f8, $f10 -/* 0380F8 800374F8 44104000 */ mfc1 $s0, $f8 -/* 0380FC 800374FC 44D8F800 */ ctc1 $t8, $31 -/* 038100 80037500 0C01C1F1 */ jal sins_f -/* 038104 80037504 00000000 */ nop -/* 038108 80037508 3C014200 */ li $at, 0x42000000 # 32.000000 -/* 03810C 8003750C 44812000 */ mtc1 $at, $f4 -/* 038110 80037510 8FA30028 */ lw $v1, 0x28($sp) -/* 038114 80037514 46040182 */ mul.s $f6, $f0, $f4 -/* 038118 80037518 84690014 */ lh $t1, 0x14($v1) -/* 03811C 8003751C 846A0018 */ lh $t2, 0x18($v1) -/* 038120 80037520 846C001E */ lh $t4, 0x1e($v1) -/* 038124 80037524 4448F800 */ cfc1 $t0, $31 -/* 038128 80037528 846E0022 */ lh $t6, 0x22($v1) -/* 03812C 8003752C 35010003 */ ori $at, $t0, 3 -/* 038130 80037530 38210002 */ xori $at, $at, 2 -/* 038134 80037534 44C1F800 */ ctc1 $at, $31 -/* 038138 80037538 01505821 */ addu $t3, $t2, $s0 -/* 03813C 8003753C 460032A4 */ cvt.w.s $f10, $f6 -/* 038140 80037540 01D0C021 */ addu $t8, $t6, $s0 -/* 038144 80037544 44025000 */ mfc1 $v0, $f10 -/* 038148 80037548 44C8F800 */ ctc1 $t0, $31 -/* 03814C 8003754C 0122C821 */ addu $t9, $t1, $v0 -/* 038150 80037550 01826821 */ addu $t5, $t4, $v0 -/* 038154 80037554 A4790028 */ sh $t9, 0x28($v1) -/* 038158 80037558 A46B002C */ sh $t3, 0x2c($v1) -/* 03815C 8003755C A46D0032 */ sh $t5, 0x32($v1) -/* 038160 80037560 A4780036 */ sh $t8, 0x36($v1) -/* 038164 80037564 8FBF001C */ lw $ra, 0x1c($sp) -.L80037568: -/* 038168 80037568 8FB00014 */ lw $s0, 0x14($sp) -/* 03816C 8003756C 8FB10018 */ lw $s1, 0x18($sp) -/* 038170 80037570 03E00008 */ jr $ra -/* 038174 80037574 27BD0070 */ addiu $sp, $sp, 0x70 - diff --git a/asm/non_matchings/object_functions/obj_loop_weaponballoon.s b/asm/non_matchings/object_functions/obj_loop_weaponballoon.s deleted file mode 100644 index c2bc4a03..00000000 --- a/asm/non_matchings/object_functions/obj_loop_weaponballoon.s +++ /dev/null @@ -1,320 +0,0 @@ -.late_rodata -glabel D_800E61A8 -.double 0.001 -glabel D_800E61B0 -.float 0.001 -.word 0 # Padding -glabel D_800E61B8 -.double 0.1 - -.text -glabel obj_loop_weaponballoon -/* 03ED40 8003E140 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 03ED44 8003E144 AFBF0024 */ sw $ra, 0x24($sp) -/* 03ED48 8003E148 AFB00020 */ sw $s0, 0x20($sp) -/* 03ED4C 8003E14C AFA50044 */ sw $a1, 0x44($sp) -/* 03ED50 8003E150 8C860064 */ lw $a2, 0x64($a0) -/* 03ED54 8003E154 3C0142B4 */ li $at, 0x42B40000 # 90.000000 -/* 03ED58 8003E158 84CE0004 */ lh $t6, 4($a2) -/* 03ED5C 8003E15C 44814000 */ mtc1 $at, $f8 -/* 03ED60 8003E160 448E2000 */ mtc1 $t6, $f4 -/* 03ED64 8003E164 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 03ED68 8003E168 468021A0 */ cvt.s.w $f6, $f4 -/* 03ED6C 8003E16C 44819800 */ mtc1 $at, $f19 -/* 03ED70 8003E170 44809000 */ mtc1 $zero, $f18 -/* 03ED74 8003E174 46083283 */ div.s $f10, $f6, $f8 -/* 03ED78 8003E178 C4C60000 */ lwc1 $f6, ($a2) -/* 03ED7C 8003E17C 3C01800E */ lui $at, %hi(D_800E61A8) # $at, 0x800e -/* 03ED80 8003E180 46003221 */ cvt.d.s $f8, $f6 -/* 03ED84 8003E184 00808025 */ move $s0, $a0 -/* 03ED88 8003E188 240A0001 */ li $t2, 1 -/* 03ED8C 8003E18C 46005421 */ cvt.d.s $f16, $f10 -/* 03ED90 8003E190 46309101 */ sub.d $f4, $f18, $f16 -/* 03ED94 8003E194 46244282 */ mul.d $f10, $f8, $f4 -/* 03ED98 8003E198 462054A0 */ cvt.s.d $f18, $f10 -/* 03ED9C 8003E19C E4920008 */ swc1 $f18, 8($a0) -/* 03EDA0 8003E1A0 C4900008 */ lwc1 $f16, 8($a0) -/* 03EDA4 8003E1A4 C42661AC */ lwc1 $f6, %lo(D_800E61A8 + 4)($at) -/* 03EDA8 8003E1A8 C42761A8 */ lwc1 $f7, %lo(D_800E61A8)($at) -/* 03EDAC 8003E1AC 46008021 */ cvt.d.s $f0, $f16 -/* 03EDB0 8003E1B0 4626003C */ c.lt.d $f0, $f6 -/* 03EDB4 8003E1B4 3C01800E */ lui $at, %hi(D_800E61B0) # $at, 0x800e -/* 03EDB8 8003E1B8 45000007 */ bc1f .L8003E1D8 -/* 03EDBC 8003E1BC 00000000 */ nop -/* 03EDC0 8003E1C0 C42861B0 */ lwc1 $f8, %lo(D_800E61B0)($at) -/* 03EDC4 8003E1C4 00000000 */ nop -/* 03EDC8 8003E1C8 E4880008 */ swc1 $f8, 8($a0) -/* 03EDCC 8003E1CC C4840008 */ lwc1 $f4, 8($a0) -/* 03EDD0 8003E1D0 00000000 */ nop -/* 03EDD4 8003E1D4 46002021 */ cvt.d.s $f0, $f4 -.L8003E1D8: -/* 03EDD8 8003E1D8 3C01800E */ lui $at, %hi(D_800E61B8 + 4) # $at, 0x800e -/* 03EDDC 8003E1DC C42B61B8 */ lwc1 $f11, %lo(D_800E61B8)($at) -/* 03EDE0 8003E1E0 C42A61BC */ lwc1 $f10, %lo(D_800E61B8 + 4)($at) -/* 03EDE4 8003E1E4 02002025 */ move $a0, $s0 -/* 03EDE8 8003E1E8 462A003C */ c.lt.d $f0, $f10 -/* 03EDEC 8003E1EC 00000000 */ nop -/* 03EDF0 8003E1F0 45000006 */ bc1f .L8003E20C -/* 03EDF4 8003E1F4 00000000 */ nop -/* 03EDF8 8003E1F8 860F0006 */ lh $t7, 6($s0) -/* 03EDFC 8003E1FC 00000000 */ nop -/* 03EE00 8003E200 35F84000 */ ori $t8, $t7, 0x4000 -/* 03EE04 8003E204 10000005 */ b .L8003E21C -/* 03EE08 8003E208 A6180006 */ sh $t8, 6($s0) -.L8003E20C: -/* 03EE0C 8003E20C 86190006 */ lh $t9, 6($s0) -/* 03EE10 8003E210 00000000 */ nop -/* 03EE14 8003E214 3328BFFF */ andi $t0, $t9, 0xbfff -/* 03EE18 8003E218 A6080006 */ sh $t0, 6($s0) -.L8003E21C: -/* 03EE1C 8003E21C 8E09007C */ lw $t1, 0x7c($s0) -/* 03EE20 8003E220 00000000 */ nop -/* 03EE24 8003E224 1920000C */ blez $t1, .L8003E258 -/* 03EE28 8003E228 00000000 */ nop -/* 03EE2C 8003E22C AE0A0074 */ sw $t2, 0x74($s0) -/* 03EE30 8003E230 8FA50044 */ lw $a1, 0x44($sp) -/* 03EE34 8003E234 0C02BF0F */ jal func_800AFC3C -/* 03EE38 8003E238 AFA60034 */ sw $a2, 0x34($sp) -/* 03EE3C 8003E23C 8E0B007C */ lw $t3, 0x7c($s0) -/* 03EE40 8003E240 8FAC0044 */ lw $t4, 0x44($sp) -/* 03EE44 8003E244 00000000 */ nop -/* 03EE48 8003E248 016C6823 */ subu $t5, $t3, $t4 -/* 03EE4C 8003E24C AE0D007C */ sw $t5, 0x7c($s0) -/* 03EE50 8003E250 8FA60034 */ lw $a2, 0x34($sp) -/* 03EE54 8003E254 00000000 */ nop -.L8003E258: -/* 03EE58 8003E258 84C20004 */ lh $v0, 4($a2) -/* 03EE5C 8003E25C 2401005A */ li $at, 90 -/* 03EE60 8003E260 10400015 */ beqz $v0, .L8003E2B8 -/* 03EE64 8003E264 00000000 */ nop -/* 03EE68 8003E268 14410009 */ bne $v0, $at, .L8003E290 -/* 03EE6C 8003E26C 8FB80044 */ lw $t8, 0x44($sp) -/* 03EE70 8003E270 8E0E004C */ lw $t6, 0x4c($s0) -/* 03EE74 8003E274 00000000 */ nop -/* 03EE78 8003E278 91CF0013 */ lbu $t7, 0x13($t6) -/* 03EE7C 8003E27C 00000000 */ nop -/* 03EE80 8003E280 29E1002D */ slti $at, $t7, 0x2d -/* 03EE84 8003E284 14200008 */ bnez $at, .L8003E2A8 -/* 03EE88 8003E288 00000000 */ nop -/* 03EE8C 8003E28C 8FB80044 */ lw $t8, 0x44($sp) -.L8003E290: -/* 03EE90 8003E290 00000000 */ nop -/* 03EE94 8003E294 0058C823 */ subu $t9, $v0, $t8 -/* 03EE98 8003E298 03384023 */ subu $t0, $t9, $t8 -/* 03EE9C 8003E29C A4C80004 */ sh $t0, 4($a2) -/* 03EEA0 8003E2A0 84C20004 */ lh $v0, 4($a2) -/* 03EEA4 8003E2A4 00000000 */ nop -.L8003E2A8: -/* 03EEA8 8003E2A8 044100BE */ bgez $v0, .L8003E5A4 -/* 03EEAC 8003E2AC 8FBF0024 */ lw $ra, 0x24($sp) -/* 03EEB0 8003E2B0 100000BB */ b .L8003E5A0 -/* 03EEB4 8003E2B4 A4C00004 */ sh $zero, 4($a2) -.L8003E2B8: -/* 03EEB8 8003E2B8 8E03004C */ lw $v1, 0x4c($s0) -/* 03EEBC 8003E2BC 00000000 */ nop -/* 03EEC0 8003E2C0 90690013 */ lbu $t1, 0x13($v1) -/* 03EEC4 8003E2C4 00000000 */ nop -/* 03EEC8 8003E2C8 2921002D */ slti $at, $t1, 0x2d -/* 03EECC 8003E2CC 102000B5 */ beqz $at, .L8003E5A4 -/* 03EED0 8003E2D0 8FBF0024 */ lw $ra, 0x24($sp) -/* 03EED4 8003E2D4 8C620000 */ lw $v0, ($v1) -/* 03EED8 8003E2D8 00000000 */ nop -/* 03EEDC 8003E2DC 104000B1 */ beqz $v0, .L8003E5A4 -/* 03EEE0 8003E2E0 8FBF0024 */ lw $ra, 0x24($sp) -/* 03EEE4 8003E2E4 8C4A0040 */ lw $t2, 0x40($v0) -/* 03EEE8 8003E2E8 24040001 */ li $a0, 1 -/* 03EEEC 8003E2EC 814B0054 */ lb $t3, 0x54($t2) -/* 03EEF0 8003E2F0 00000000 */ nop -/* 03EEF4 8003E2F4 148B00AB */ bne $a0, $t3, .L8003E5A4 -/* 03EEF8 8003E2F8 8FBF0024 */ lw $ra, 0x24($sp) -/* 03EEFC 8003E2FC 8C430064 */ lw $v1, 0x64($v0) -/* 03EF00 8003E300 00000000 */ nop -/* 03EF04 8003E304 806C01D6 */ lb $t4, 0x1d6($v1) -/* 03EF08 8003E308 00000000 */ nop -/* 03EF0C 8003E30C 29810005 */ slti $at, $t4, 5 -/* 03EF10 8003E310 14200005 */ bnez $at, .L8003E328 -/* 03EF14 8003E314 00000000 */ nop -/* 03EF18 8003E318 846D0000 */ lh $t5, ($v1) -/* 03EF1C 8003E31C 2401FFFF */ li $at, -1 -/* 03EF20 8003E320 11A100A0 */ beq $t5, $at, .L8003E5A4 -/* 03EF24 8003E324 8FBF0024 */ lw $ra, 0x24($sp) -.L8003E328: -/* 03EF28 8003E328 8E0E0078 */ lw $t6, 0x78($s0) -/* 03EF2C 8003E32C 80620172 */ lb $v0, 0x172($v1) -/* 03EF30 8003E330 A06E0172 */ sb $t6, 0x172($v1) -/* 03EF34 8003E334 806F0172 */ lb $t7, 0x172($v1) -/* 03EF38 8003E338 00000000 */ nop -/* 03EF3C 8003E33C 144F000A */ bne $v0, $t7, .L8003E368 -/* 03EF40 8003E340 00000000 */ nop -/* 03EF44 8003E344 80790173 */ lb $t9, 0x173($v1) -/* 03EF48 8003E348 00000000 */ nop -/* 03EF4C 8003E34C 13200006 */ beqz $t9, .L8003E368 -/* 03EF50 8003E350 00000000 */ nop -/* 03EF54 8003E354 80780174 */ lb $t8, 0x174($v1) -/* 03EF58 8003E358 00000000 */ nop -/* 03EF5C 8003E35C 27080001 */ addiu $t0, $t8, 1 -/* 03EF60 8003E360 10000002 */ b .L8003E36C -/* 03EF64 8003E364 A0680174 */ sb $t0, 0x174($v1) -.L8003E368: -/* 03EF68 8003E368 A0600174 */ sb $zero, 0x174($v1) -.L8003E36C: -/* 03EF6C 8003E36C AFA30038 */ sw $v1, 0x38($sp) -/* 03EF70 8003E370 0C01AF66 */ jal get_current_level_race_type -/* 03EF74 8003E374 AFA60034 */ sw $a2, 0x34($sp) -/* 03EF78 8003E378 8FA30038 */ lw $v1, 0x38($sp) -/* 03EF7C 8003E37C 30490040 */ andi $t1, $v0, 0x40 -/* 03EF80 8003E380 1120000C */ beqz $t1, .L8003E3B4 -/* 03EF84 8003E384 24040001 */ li $a0, 1 -/* 03EF88 8003E388 806A0174 */ lb $t2, 0x174($v1) -/* 03EF8C 8003E38C 00000000 */ nop -/* 03EF90 8003E390 29410002 */ slti $at, $t2, 2 -/* 03EF94 8003E394 14200002 */ bnez $at, .L8003E3A0 -/* 03EF98 8003E398 00000000 */ nop -/* 03EF9C 8003E39C A0640174 */ sb $a0, 0x174($v1) -.L8003E3A0: -/* 03EFA0 8003E3A0 806B0172 */ lb $t3, 0x172($v1) -/* 03EFA4 8003E3A4 24010002 */ li $at, 2 -/* 03EFA8 8003E3A8 15610003 */ bne $t3, $at, .L8003E3B8 -/* 03EFAC 8003E3AC 240C0003 */ li $t4, 3 -/* 03EFB0 8003E3B0 A0640174 */ sb $a0, 0x174($v1) -.L8003E3B4: -/* 03EFB4 8003E3B4 240C0003 */ li $t4, 3 -.L8003E3B8: -/* 03EFB8 8003E3B8 A3AC002D */ sb $t4, 0x2d($sp) -/* 03EFBC 8003E3BC 0C0270C3 */ jal get_filtered_cheats -/* 03EFC0 8003E3C0 AFA30038 */ sw $v1, 0x38($sp) -/* 03EFC4 8003E3C4 8FA30038 */ lw $v1, 0x38($sp) -/* 03EFC8 8003E3C8 00026AC0 */ sll $t5, $v0, 0xb -/* 03EFCC 8003E3CC 05A10002 */ bgez $t5, .L8003E3D8 -/* 03EFD0 8003E3D0 24040002 */ li $a0, 2 -/* 03EFD4 8003E3D4 A0640174 */ sb $a0, 0x174($v1) -.L8003E3D8: -/* 03EFD8 8003E3D8 806E0174 */ lb $t6, 0x174($v1) -/* 03EFDC 8003E3DC 00000000 */ nop -/* 03EFE0 8003E3E0 29C10003 */ slti $at, $t6, 3 -/* 03EFE4 8003E3E4 14200003 */ bnez $at, .L8003E3F4 -/* 03EFE8 8003E3E8 00000000 */ nop -/* 03EFEC 8003E3EC A0640174 */ sb $a0, 0x174($v1) -/* 03EFF0 8003E3F0 A3A4002D */ sb $a0, 0x2d($sp) -.L8003E3F4: -/* 03EFF4 8003E3F4 2404000C */ li $a0, 12 -/* 03EFF8 8003E3F8 0C0078A7 */ jal get_misc_asset -/* 03EFFC 8003E3FC AFA30038 */ sw $v1, 0x38($sp) -/* 03F000 8003E400 8FA30038 */ lw $v1, 0x38($sp) -/* 03F004 8003E404 00000000 */ nop -/* 03F008 8003E408 806F0172 */ lb $t7, 0x172($v1) -/* 03F00C 8003E40C 80780174 */ lb $t8, 0x174($v1) -/* 03F010 8003E410 000FC880 */ sll $t9, $t7, 2 -/* 03F014 8003E414 032FC821 */ addu $t9, $t9, $t7 -/* 03F018 8003E418 0019C840 */ sll $t9, $t9, 1 -/* 03F01C 8003E41C 00184040 */ sll $t0, $t8, 1 -/* 03F020 8003E420 03284821 */ addu $t1, $t9, $t0 -/* 03F024 8003E424 906C0209 */ lbu $t4, 0x209($v1) -/* 03F028 8003E428 01225021 */ addu $t2, $t1, $v0 -/* 03F02C 8003E42C 814B0001 */ lb $t3, 1($t2) -/* 03F030 8003E430 80660173 */ lb $a2, 0x173($v1) -/* 03F034 8003E434 358D0001 */ ori $t5, $t4, 1 -/* 03F038 8003E438 A06D0209 */ sb $t5, 0x209($v1) -/* 03F03C 8003E43C A06B0173 */ sb $t3, 0x173($v1) -/* 03F040 8003E440 0C0270F2 */ jal get_number_of_active_players -/* 03F044 8003E444 A3A6002E */ sb $a2, 0x2e($sp) -/* 03F048 8003E448 8FA30038 */ lw $v1, 0x38($sp) -/* 03F04C 8003E44C 83A6002E */ lb $a2, 0x2e($sp) -/* 03F050 8003E450 28410002 */ slti $at, $v0, 2 -/* 03F054 8003E454 10200002 */ beqz $at, .L8003E460 -/* 03F058 8003E458 240E0010 */ li $t6, 16 -/* 03F05C 8003E45C AE0E007C */ sw $t6, 0x7c($s0) -.L8003E460: -/* 03F060 8003E460 84670000 */ lh $a3, ($v1) -/* 03F064 8003E464 2401FFFF */ li $at, -1 -/* 03F068 8003E468 14E1000A */ bne $a3, $at, .L8003E494 -/* 03F06C 8003E46C 2404000E */ li $a0, 14 -/* 03F070 8003E470 8E05000C */ lw $a1, 0xc($s0) -/* 03F074 8003E474 8E060010 */ lw $a2, 0x10($s0) -/* 03F078 8003E478 8E070014 */ lw $a3, 0x14($s0) -/* 03F07C 8003E47C 240F0004 */ li $t7, 4 -/* 03F080 8003E480 AFAF0010 */ sw $t7, 0x10($sp) -/* 03F084 8003E484 0C002556 */ jal play_sound_at_position -/* 03F088 8003E488 AFA00014 */ sw $zero, 0x14($sp) -/* 03F08C 8003E48C 1000003D */ b .L8003E584 -/* 03F090 8003E490 240D0001 */ li $t5, 1 -.L8003E494: -/* 03F094 8003E494 80620174 */ lb $v0, 0x174($v1) -/* 03F098 8003E498 83B8002D */ lb $t8, 0x2d($sp) -/* 03F09C 8003E49C 00000000 */ nop -/* 03F0A0 8003E4A0 17020024 */ bne $t8, $v0, .L8003E534 -/* 03F0A4 8003E4A4 00000000 */ nop -/* 03F0A8 8003E4A8 807901D8 */ lb $t9, 0x1d8($v1) -/* 03F0AC 8003E4AC 00000000 */ nop -/* 03F0B0 8003E4B0 17200034 */ bnez $t9, .L8003E584 -/* 03F0B4 8003E4B4 240D0001 */ li $t5, 1 -/* 03F0B8 8003E4B8 80680173 */ lb $t0, 0x173($v1) -/* 03F0BC 8003E4BC 2404000E */ li $a0, 14 -/* 03F0C0 8003E4C0 10C80014 */ beq $a2, $t0, .L8003E514 -/* 03F0C4 8003E4C4 240A0004 */ li $t2, 4 -/* 03F0C8 8003E4C8 2404013E */ li $a0, 318 -/* 03F0CC 8003E4CC 3C053F80 */ lui $a1, 0x3f80 -/* 03F0D0 8003E4D0 00E03025 */ move $a2, $a3 -/* 03F0D4 8003E4D4 0C029D21 */ jal set_time_trial_start_voice -/* 03F0D8 8003E4D8 AFA30038 */ sw $v1, 0x38($sp) -/* 03F0DC 8003E4DC 8FA30038 */ lw $v1, 0x38($sp) -/* 03F0E0 8003E4E0 00002825 */ move $a1, $zero -/* 03F0E4 8003E4E4 80660174 */ lb $a2, 0x174($v1) -/* 03F0E8 8003E4E8 00000000 */ nop -/* 03F0EC 8003E4EC 28C10003 */ slti $at, $a2, 3 -/* 03F0F0 8003E4F0 14200003 */ bnez $at, .L8003E500 -/* 03F0F4 8003E4F4 24C400A0 */ addiu $a0, $a2, 0xa0 -/* 03F0F8 8003E4F8 24060002 */ li $a2, 2 -/* 03F0FC 8003E4FC 24C400A0 */ addiu $a0, $a2, 0xa0 -.L8003E500: -/* 03F100 8003E500 3089FFFF */ andi $t1, $a0, 0xffff -/* 03F104 8003E504 0C000741 */ jal sound_play -/* 03F108 8003E508 01202025 */ move $a0, $t1 -/* 03F10C 8003E50C 1000001D */ b .L8003E584 -/* 03F110 8003E510 240D0001 */ li $t5, 1 -.L8003E514: -/* 03F114 8003E514 8E05000C */ lw $a1, 0xc($s0) -/* 03F118 8003E518 8E060010 */ lw $a2, 0x10($s0) -/* 03F11C 8003E51C 8E070014 */ lw $a3, 0x14($s0) -/* 03F120 8003E520 AFA00014 */ sw $zero, 0x14($sp) -/* 03F124 8003E524 0C002556 */ jal play_sound_at_position -/* 03F128 8003E528 AFAA0010 */ sw $t2, 0x10($sp) -/* 03F12C 8003E52C 10000015 */ b .L8003E584 -/* 03F130 8003E530 240D0001 */ li $t5, 1 -.L8003E534: -/* 03F134 8003E534 806B01D8 */ lb $t3, 0x1d8($v1) -/* 03F138 8003E538 00000000 */ nop -/* 03F13C 8003E53C 15600011 */ bnez $t3, .L8003E584 -/* 03F140 8003E540 240D0001 */ li $t5, 1 -/* 03F144 8003E544 18400009 */ blez $v0, .L8003E56C -/* 03F148 8003E548 2404013E */ li $a0, 318 -/* 03F14C 8003E54C 3C053F80 */ lui $a1, 0x3f80 -/* 03F150 8003E550 00E03025 */ move $a2, $a3 -/* 03F154 8003E554 0C029D21 */ jal set_time_trial_start_voice -/* 03F158 8003E558 AFA30038 */ sw $v1, 0x38($sp) -/* 03F15C 8003E55C 8FA30038 */ lw $v1, 0x38($sp) -/* 03F160 8003E560 00000000 */ nop -/* 03F164 8003E564 80620174 */ lb $v0, 0x174($v1) -/* 03F168 8003E568 00000000 */ nop -.L8003E56C: -/* 03F16C 8003E56C 244400A0 */ addiu $a0, $v0, 0xa0 -/* 03F170 8003E570 308CFFFF */ andi $t4, $a0, 0xffff -/* 03F174 8003E574 01802025 */ move $a0, $t4 -/* 03F178 8003E578 0C000741 */ jal sound_play -/* 03F17C 8003E57C 00002825 */ move $a1, $zero -/* 03F180 8003E580 240D0001 */ li $t5, 1 -.L8003E584: -/* 03F184 8003E584 AE0D0074 */ sw $t5, 0x74($s0) -/* 03F188 8003E588 8FA50044 */ lw $a1, 0x44($sp) -/* 03F18C 8003E58C 0C02BF0F */ jal func_800AFC3C -/* 03F190 8003E590 02002025 */ move $a0, $s0 -/* 03F194 8003E594 8FAF0034 */ lw $t7, 0x34($sp) -/* 03F198 8003E598 240E005A */ li $t6, 90 -/* 03F19C 8003E59C A5EE0004 */ sh $t6, 4($t7) -.L8003E5A0: -/* 03F1A0 8003E5A0 8FBF0024 */ lw $ra, 0x24($sp) -.L8003E5A4: -/* 03F1A4 8003E5A4 8FB00020 */ lw $s0, 0x20($sp) -/* 03F1A8 8003E5A8 03E00008 */ jr $ra -/* 03F1AC 8003E5AC 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/waves/func_800B82B4.s b/asm/non_matchings/waves/func_800B82B4.s index 33110f7a..e26af254 100644 --- a/asm/non_matchings/waves/func_800B82B4.s +++ b/asm/non_matchings/waves/func_800B82B4.s @@ -6,607 +6,606 @@ glabel D_800E92A4 .text glabel func_800B82B4 -/* 0B8EB4 800B82B4 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0B8EB8 800B82B8 AFBF0044 */ sw $ra, 0x44($sp) -/* 0B8EBC 800B82BC AFB3002C */ sw $s3, 0x2c($sp) -/* 0B8EC0 800B82C0 AFB00020 */ sw $s0, 0x20($sp) -/* 0B8EC4 800B82C4 AFA40070 */ sw $a0, 0x70($sp) -/* 0B8EC8 800B82C8 3C018013 */ lui $at, %hi(D_8012A078) # $at, 0x8013 -/* 0B8ECC 800B82CC 00A08025 */ move $s0, $a1 -/* 0B8ED0 800B82D0 00C09825 */ move $s3, $a2 -/* 0B8ED4 800B82D4 AFBE0040 */ sw $fp, 0x40($sp) -/* 0B8ED8 800B82D8 AFB7003C */ sw $s7, 0x3c($sp) -/* 0B8EDC 800B82DC AFB60038 */ sw $s6, 0x38($sp) -/* 0B8EE0 800B82E0 AFB50034 */ sw $s5, 0x34($sp) -/* 0B8EE4 800B82E4 AFB40030 */ sw $s4, 0x30($sp) -/* 0B8EE8 800B82E8 AFB20028 */ sw $s2, 0x28($sp) -/* 0B8EEC 800B82EC AFB10024 */ sw $s1, 0x24($sp) -/* 0B8EF0 800B82F0 E7B50018 */ swc1 $f21, 0x18($sp) -/* 0B8EF4 800B82F4 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 0B8EF8 800B82F8 AC26A078 */ sw $a2, %lo(D_8012A078)($at) -/* 0B8EFC 800B82FC 0C02E04D */ jal func_800B8134 -/* 0B8F00 800B8300 00A02025 */ move $a0, $a1 -/* 0B8F04 800B8304 0C02DFAD */ jal func_800B7EB4 -/* 0B8F08 800B8308 00000000 */ nop -/* 0B8F0C 800B830C 8FA40070 */ lw $a0, 0x70($sp) -/* 0B8F10 800B8310 0C02EF77 */ jal func_800BBDDC -/* 0B8F14 800B8314 02002825 */ move $a1, $s0 -/* 0B8F18 800B8318 3C0E8013 */ lui $t6, %hi(gWaveBoundingBoxDiffX) # $t6, 0x8013 -/* 0B8F1C 800B831C 8DCEA0A8 */ lw $t6, %lo(gWaveBoundingBoxDiffX)($t6) -/* 0B8F20 800B8320 3C058013 */ lui $a1, %hi(D_8012A0A0) # $a1, 0x8013 -/* 0B8F24 800B8324 448E2000 */ mtc1 $t6, $f4 -/* 0B8F28 800B8328 24A5A0A0 */ addiu $a1, %lo(D_8012A0A0) # addiu $a1, $a1, -0x5f60 -/* 0B8F2C 800B832C 468021A0 */ cvt.s.w $f6, $f4 -/* 0B8F30 800B8330 3C0F8013 */ lui $t7, %hi(gWaveBoundingBoxDiffZ) # $t7, 0x8013 -/* 0B8F34 800B8334 3C148013 */ lui $s4, %hi(D_80129FC8) # $s4, 0x8013 -/* 0B8F38 800B8338 E4A60000 */ swc1 $f6, ($a1) -/* 0B8F3C 800B833C 8DEFA0AC */ lw $t7, %lo(gWaveBoundingBoxDiffZ)($t7) -/* 0B8F40 800B8340 26949FC8 */ addiu $s4, %lo(D_80129FC8) # addiu $s4, $s4, -0x6038 -/* 0B8F44 800B8344 8E820000 */ lw $v0, ($s4) -/* 0B8F48 800B8348 448F4000 */ mtc1 $t7, $f8 -/* 0B8F4C 800B834C 44828000 */ mtc1 $v0, $f16 -/* 0B8F50 800B8350 468042A0 */ cvt.s.w $f10, $f8 -/* 0B8F54 800B8354 3C068013 */ lui $a2, %hi(D_8012A0A4) # $a2, 0x8013 -/* 0B8F58 800B8358 24C6A0A4 */ addiu $a2, %lo(D_8012A0A4) # addiu $a2, $a2, -0x5f5c -/* 0B8F5C 800B835C 46808020 */ cvt.s.w $f0, $f16 -/* 0B8F60 800B8360 E4CA0000 */ swc1 $f10, ($a2) -/* 0B8F64 800B8364 C4B20000 */ lwc1 $f18, ($a1) -/* 0B8F68 800B8368 C4C60000 */ lwc1 $f6, ($a2) -/* 0B8F6C 800B836C 46009103 */ div.s $f4, $f18, $f0 -/* 0B8F70 800B8370 3C118013 */ lui $s1, %hi(D_8012A0B8) # $s1, 0x8013 -/* 0B8F74 800B8374 3C128013 */ lui $s2, %hi(D_8012A0BC) # $s2, 0x8013 -/* 0B8F78 800B8378 2652A0BC */ addiu $s2, %lo(D_8012A0BC) # addiu $s2, $s2, -0x5f44 -/* 0B8F7C 800B837C 2631A0B8 */ addiu $s1, %lo(D_8012A0B8) # addiu $s1, $s1, -0x5f48 -/* 0B8F80 800B8380 3C018013 */ lui $at, %hi(D_8012A084) # $at, 0x8013 -/* 0B8F84 800B8384 3C038013 */ lui $v1, %hi(gWaveTexture) # $v1, 0x8013 -/* 0B8F88 800B8388 0000B825 */ move $s7, $zero -/* 0B8F8C 800B838C 46003203 */ div.s $f8, $f6, $f0 -/* 0B8F90 800B8390 E6240000 */ swc1 $f4, ($s1) -/* 0B8F94 800B8394 E6480000 */ swc1 $f8, ($s2) -/* 0B8F98 800B8398 AC20A084 */ sw $zero, %lo(D_8012A084)($at) -/* 0B8F9C 800B839C 3C018013 */ lui $at, %hi(D_8012A088) # $at, 0x8013 -/* 0B8FA0 800B83A0 8C63A080 */ lw $v1, %lo(gWaveTexture)($v1) -/* 0B8FA4 800B83A4 AC20A088 */ sw $zero, %lo(D_8012A088)($at) -/* 0B8FA8 800B83A8 8E990030 */ lw $t9, 0x30($s4) -/* 0B8FAC 800B83AC 90780000 */ lbu $t8, ($v1) -/* 0B8FB0 800B83B0 00000000 */ nop -/* 0B8FB4 800B83B4 03190019 */ multu $t8, $t9 -/* 0B8FB8 800B83B8 00005012 */ mflo $t2 -/* 0B8FBC 800B83BC 000A5940 */ sll $t3, $t2, 5 -/* 0B8FC0 800B83C0 00000000 */ nop -/* 0B8FC4 800B83C4 0162001A */ div $zero, $t3, $v0 -/* 0B8FC8 800B83C8 14400002 */ bnez $v0, .L800B83D4 -/* 0B8FCC 800B83CC 00000000 */ nop -/* 0B8FD0 800B83D0 0007000D */ break 7 +/* B8EB4 800B82B4 27BDFF90 */ addiu $sp, $sp, -0x70 +/* B8EB8 800B82B8 AFBF0044 */ sw $ra, 0x44($sp) +/* B8EBC 800B82BC AFB3002C */ sw $s3, 0x2C($sp) +/* B8EC0 800B82C0 AFB00020 */ sw $s0, 0x20($sp) +/* B8EC4 800B82C4 AFA40070 */ sw $a0, 0x70($sp) +/* B8EC8 800B82C8 3C018013 */ lui $at, %hi(D_8012A078) +/* B8ECC 800B82CC 00A08025 */ or $s0, $a1, $zero +/* B8ED0 800B82D0 00C09825 */ or $s3, $a2, $zero +/* B8ED4 800B82D4 AFBE0040 */ sw $fp, 0x40($sp) +/* B8ED8 800B82D8 AFB7003C */ sw $s7, 0x3C($sp) +/* B8EDC 800B82DC AFB60038 */ sw $s6, 0x38($sp) +/* B8EE0 800B82E0 AFB50034 */ sw $s5, 0x34($sp) +/* B8EE4 800B82E4 AFB40030 */ sw $s4, 0x30($sp) +/* B8EE8 800B82E8 AFB20028 */ sw $s2, 0x28($sp) +/* B8EEC 800B82EC AFB10024 */ sw $s1, 0x24($sp) +/* B8EF0 800B82F0 E7B50018 */ swc1 $f21, 0x18($sp) +/* B8EF4 800B82F4 E7B4001C */ swc1 $f20, 0x1C($sp) +/* B8EF8 800B82F8 AC26A078 */ sw $a2, %lo(D_8012A078)($at) +/* B8EFC 800B82FC 0C02E04D */ jal func_800B8134 +/* B8F00 800B8300 00A02025 */ or $a0, $a1, $zero +/* B8F04 800B8304 0C02DFAD */ jal func_800B7EB4 +/* B8F08 800B8308 00000000 */ nop +/* B8F0C 800B830C 8FA40070 */ lw $a0, 0x70($sp) +/* B8F10 800B8310 0C02EF77 */ jal func_800BBDDC +/* B8F14 800B8314 02002825 */ or $a1, $s0, $zero +/* B8F18 800B8318 3C0E8013 */ lui $t6, %hi(gWaveBoundingBoxDiffX) +/* B8F1C 800B831C 8DCEA0A8 */ lw $t6, %lo(gWaveBoundingBoxDiffX)($t6) +/* B8F20 800B8320 3C058013 */ lui $a1, %hi(D_8012A0A0) +/* B8F24 800B8324 448E2000 */ mtc1 $t6, $f4 +/* B8F28 800B8328 24A5A0A0 */ addiu $a1, $a1, %lo(D_8012A0A0) +/* B8F2C 800B832C 468021A0 */ cvt.s.w $f6, $f4 +/* B8F30 800B8330 3C0F8013 */ lui $t7, %hi(gWaveBoundingBoxDiffZ) +/* B8F34 800B8334 3C148013 */ lui $s4, %hi(D_80129FC8) +/* B8F38 800B8338 E4A60000 */ swc1 $f6, 0x0($a1) +/* B8F3C 800B833C 8DEFA0AC */ lw $t7, %lo(gWaveBoundingBoxDiffZ)($t7) +/* B8F40 800B8340 26949FC8 */ addiu $s4, $s4, %lo(D_80129FC8) +/* B8F44 800B8344 8E820000 */ lw $v0, 0x0($s4) +/* B8F48 800B8348 448F4000 */ mtc1 $t7, $f8 +/* B8F4C 800B834C 44828000 */ mtc1 $v0, $f16 +/* B8F50 800B8350 468042A0 */ cvt.s.w $f10, $f8 +/* B8F54 800B8354 3C068013 */ lui $a2, %hi(D_8012A0A4) +/* B8F58 800B8358 24C6A0A4 */ addiu $a2, $a2, %lo(D_8012A0A4) +/* B8F5C 800B835C 46808020 */ cvt.s.w $f0, $f16 +/* B8F60 800B8360 E4CA0000 */ swc1 $f10, 0x0($a2) +/* B8F64 800B8364 C4B20000 */ lwc1 $f18, 0x0($a1) +/* B8F68 800B8368 C4C60000 */ lwc1 $f6, 0x0($a2) +/* B8F6C 800B836C 46009103 */ div.s $f4, $f18, $f0 +/* B8F70 800B8370 3C118013 */ lui $s1, %hi(D_8012A0B8) +/* B8F74 800B8374 3C128013 */ lui $s2, %hi(D_8012A0BC) +/* B8F78 800B8378 2652A0BC */ addiu $s2, $s2, %lo(D_8012A0BC) +/* B8F7C 800B837C 2631A0B8 */ addiu $s1, $s1, %lo(D_8012A0B8) +/* B8F80 800B8380 3C018013 */ lui $at, %hi(D_8012A084) +/* B8F84 800B8384 3C038013 */ lui $v1, %hi(gWaveTexture) +/* B8F88 800B8388 0000B825 */ or $s7, $zero, $zero +/* B8F8C 800B838C 46003203 */ div.s $f8, $f6, $f0 +/* B8F90 800B8390 E6240000 */ swc1 $f4, 0x0($s1) +/* B8F94 800B8394 E6480000 */ swc1 $f8, 0x0($s2) +/* B8F98 800B8398 AC20A084 */ sw $zero, %lo(D_8012A084)($at) +/* B8F9C 800B839C 3C018013 */ lui $at, %hi(D_8012A088) +/* B8FA0 800B83A0 8C63A080 */ lw $v1, %lo(gWaveTexture)($v1) +/* B8FA4 800B83A4 AC20A088 */ sw $zero, %lo(D_8012A088)($at) +/* B8FA8 800B83A8 8E990030 */ lw $t9, 0x30($s4) +/* B8FAC 800B83AC 90780000 */ lbu $t8, 0x0($v1) +/* B8FB0 800B83B0 00000000 */ nop +/* B8FB4 800B83B4 03190019 */ multu $t8, $t9 +/* B8FB8 800B83B8 00005012 */ mflo $t2 +/* B8FBC 800B83BC 000A5940 */ sll $t3, $t2, 5 +/* B8FC0 800B83C0 00000000 */ nop +/* B8FC4 800B83C4 0162001A */ div $zero, $t3, $v0 +/* B8FC8 800B83C8 14400002 */ bnez $v0, .L800B83D4 +/* B8FCC 800B83CC 00000000 */ nop +/* B8FD0 800B83D0 0007000D */ break 7 .L800B83D4: -/* 0B8FD4 800B83D4 2401FFFF */ li $at, -1 -/* 0B8FD8 800B83D8 14410004 */ bne $v0, $at, .L800B83EC -/* 0B8FDC 800B83DC 3C018000 */ lui $at, 0x8000 -/* 0B8FE0 800B83E0 15610002 */ bne $t3, $at, .L800B83EC -/* 0B8FE4 800B83E4 00000000 */ nop -/* 0B8FE8 800B83E8 0006000D */ break 6 +/* B8FD4 800B83D4 2401FFFF */ addiu $at, $zero, -0x1 +/* B8FD8 800B83D8 14410004 */ bne $v0, $at, .L800B83EC +/* B8FDC 800B83DC 3C018000 */ lui $at, (0x80000000 >> 16) +/* B8FE0 800B83E0 15610002 */ bne $t3, $at, .L800B83EC +/* B8FE4 800B83E4 00000000 */ nop +/* B8FE8 800B83E8 0006000D */ break 6 .L800B83EC: -/* 0B8FEC 800B83EC 3C018013 */ lui $at, %hi(D_8012A08C) # $at, 0x8013 -/* 0B8FF0 800B83F0 00006012 */ mflo $t4 -/* 0B8FF4 800B83F4 AC2CA08C */ sw $t4, %lo(D_8012A08C)($at) -/* 0B8FF8 800B83F8 8E8E0034 */ lw $t6, 0x34($s4) -/* 0B8FFC 800B83FC 906D0001 */ lbu $t5, 1($v1) -/* 0B9000 800B8400 00000000 */ nop -/* 0B9004 800B8404 01AE0019 */ multu $t5, $t6 -/* 0B9008 800B8408 00007812 */ mflo $t7 -/* 0B900C 800B840C 000FC140 */ sll $t8, $t7, 5 -/* 0B9010 800B8410 00000000 */ nop -/* 0B9014 800B8414 0302001A */ div $zero, $t8, $v0 -/* 0B9018 800B8418 14400002 */ bnez $v0, .L800B8424 -/* 0B901C 800B841C 00000000 */ nop -/* 0B9020 800B8420 0007000D */ break 7 +/* B8FEC 800B83EC 3C018013 */ lui $at, %hi(D_8012A08C) +/* B8FF0 800B83F0 00006012 */ mflo $t4 +/* B8FF4 800B83F4 AC2CA08C */ sw $t4, %lo(D_8012A08C)($at) +/* B8FF8 800B83F8 8E8E0034 */ lw $t6, 0x34($s4) +/* B8FFC 800B83FC 906D0001 */ lbu $t5, 0x1($v1) +/* B9000 800B8400 00000000 */ nop +/* B9004 800B8404 01AE0019 */ multu $t5, $t6 +/* B9008 800B8408 00007812 */ mflo $t7 +/* B900C 800B840C 000FC140 */ sll $t8, $t7, 5 +/* B9010 800B8410 00000000 */ nop +/* B9014 800B8414 0302001A */ div $zero, $t8, $v0 +/* B9018 800B8418 14400002 */ bnez $v0, .L800B8424 +/* B901C 800B841C 00000000 */ nop +/* B9020 800B8420 0007000D */ break 7 .L800B8424: -/* 0B9024 800B8424 2401FFFF */ li $at, -1 -/* 0B9028 800B8428 14410004 */ bne $v0, $at, .L800B843C -/* 0B902C 800B842C 3C018000 */ lui $at, 0x8000 -/* 0B9030 800B8430 17010002 */ bne $t8, $at, .L800B843C -/* 0B9034 800B8434 00000000 */ nop -/* 0B9038 800B8438 0006000D */ break 6 +/* B9024 800B8424 2401FFFF */ addiu $at, $zero, -0x1 +/* B9028 800B8428 14410004 */ bne $v0, $at, .L800B843C +/* B902C 800B842C 3C018000 */ lui $at, (0x80000000 >> 16) +/* B9030 800B8430 17010002 */ bne $t8, $at, .L800B843C +/* B9034 800B8434 00000000 */ nop +/* B9038 800B8438 0006000D */ break 6 .L800B843C: -/* 0B903C 800B843C 3C018013 */ lui $at, %hi(D_8012A090) # $at, 0x8013 -/* 0B9040 800B8440 0000C812 */ mflo $t9 -/* 0B9044 800B8444 AC39A090 */ sw $t9, %lo(D_8012A090)($at) -/* 0B9048 800B8448 906A0000 */ lbu $t2, ($v1) -/* 0B904C 800B844C 3C018013 */ lui $at, %hi(D_8012A094) # $at, 0x8013 -/* 0B9050 800B8450 000A5940 */ sll $t3, $t2, 5 -/* 0B9054 800B8454 256CFFFF */ addiu $t4, $t3, -1 -/* 0B9058 800B8458 AC2CA094 */ sw $t4, %lo(D_8012A094)($at) -/* 0B905C 800B845C 906D0001 */ lbu $t5, 1($v1) -/* 0B9060 800B8460 3C018013 */ lui $at, %hi(D_8012A098) # $at, 0x8013 -/* 0B9064 800B8464 000D7140 */ sll $t6, $t5, 5 -/* 0B9068 800B8468 25CFFFFF */ addiu $t7, $t6, -1 -/* 0B906C 800B846C AC2FA098 */ sw $t7, %lo(D_8012A098)($at) -/* 0B9070 800B8470 3C018013 */ lui $at, %hi(D_8012A09C) # $at, 0x8013 -/* 0B9074 800B8474 AC20A09C */ sw $zero, %lo(D_8012A09C)($at) -/* 0B9078 800B8478 8E980008 */ lw $t8, 8($s4) -/* 0B907C 800B847C 8E840020 */ lw $a0, 0x20($s4) -/* 0B9080 800B8480 0018CC00 */ sll $t9, $t8, 0x10 -/* 0B9084 800B8484 0324001A */ div $zero, $t9, $a0 -/* 0B9088 800B8488 8E8B0014 */ lw $t3, 0x14($s4) -/* 0B908C 800B848C 8E960010 */ lw $s6, 0x10($s4) -/* 0B9090 800B8490 000B6400 */ sll $t4, $t3, 0x10 -/* 0B9094 800B8494 14800002 */ bnez $a0, .L800B84A0 -/* 0B9098 800B8498 00000000 */ nop -/* 0B909C 800B849C 0007000D */ break 7 +/* B903C 800B843C 3C018013 */ lui $at, %hi(D_8012A090) +/* B9040 800B8440 0000C812 */ mflo $t9 +/* B9044 800B8444 AC39A090 */ sw $t9, %lo(D_8012A090)($at) +/* B9048 800B8448 906A0000 */ lbu $t2, 0x0($v1) +/* B904C 800B844C 3C018013 */ lui $at, %hi(D_8012A094) +/* B9050 800B8450 000A5940 */ sll $t3, $t2, 5 +/* B9054 800B8454 256CFFFF */ addiu $t4, $t3, -0x1 +/* B9058 800B8458 AC2CA094 */ sw $t4, %lo(D_8012A094)($at) +/* B905C 800B845C 906D0001 */ lbu $t5, 0x1($v1) +/* B9060 800B8460 3C018013 */ lui $at, %hi(D_8012A098) +/* B9064 800B8464 000D7140 */ sll $t6, $t5, 5 +/* B9068 800B8468 25CFFFFF */ addiu $t7, $t6, -0x1 +/* B906C 800B846C AC2FA098 */ sw $t7, %lo(D_8012A098)($at) +/* B9070 800B8470 3C018013 */ lui $at, %hi(D_8012A09C) +/* B9074 800B8474 AC20A09C */ sw $zero, %lo(D_8012A09C)($at) +/* B9078 800B8478 8E980008 */ lw $t8, 0x8($s4) +/* B907C 800B847C 8E840020 */ lw $a0, 0x20($s4) +/* B9080 800B8480 0018CC00 */ sll $t9, $t8, 16 +/* B9084 800B8484 0324001A */ div $zero, $t9, $a0 +/* B9088 800B8488 8E8B0014 */ lw $t3, 0x14($s4) +/* B908C 800B848C 8E960010 */ lw $s6, 0x10($s4) +/* B9090 800B8490 000B6400 */ sll $t4, $t3, 16 +/* B9094 800B8494 14800002 */ bnez $a0, .L800B84A0 +/* B9098 800B8498 00000000 */ nop +/* B909C 800B849C 0007000D */ break 7 .L800B84A0: -/* 0B90A0 800B84A0 2401FFFF */ li $at, -1 -/* 0B90A4 800B84A4 14810004 */ bne $a0, $at, .L800B84B8 -/* 0B90A8 800B84A8 3C018000 */ lui $at, 0x8000 -/* 0B90AC 800B84AC 17210002 */ bne $t9, $at, .L800B84B8 -/* 0B90B0 800B84B0 00000000 */ nop -/* 0B90B4 800B84B4 0006000D */ break 6 +/* B90A0 800B84A0 2401FFFF */ addiu $at, $zero, -0x1 +/* B90A4 800B84A4 14810004 */ bne $a0, $at, .L800B84B8 +/* B90A8 800B84A8 3C018000 */ lui $at, (0x80000000 >> 16) +/* B90AC 800B84AC 17210002 */ bne $t9, $at, .L800B84B8 +/* B90B0 800B84B0 00000000 */ nop +/* B90B4 800B84B4 0006000D */ break 6 .L800B84B8: -/* 0B90B8 800B84B8 8E9E001C */ lw $fp, 0x1c($s4) -/* 0B90BC 800B84BC 00005012 */ mflo $t2 -/* 0B90C0 800B84C0 AFAA0054 */ sw $t2, 0x54($sp) -/* 0B90C4 800B84C4 00000000 */ nop -/* 0B90C8 800B84C8 0184001A */ div $zero, $t4, $a0 -/* 0B90CC 800B84CC 14800002 */ bnez $a0, .L800B84D8 -/* 0B90D0 800B84D0 00000000 */ nop -/* 0B90D4 800B84D4 0007000D */ break 7 +/* B90B8 800B84B8 8E9E001C */ lw $fp, 0x1C($s4) +/* B90BC 800B84BC 00005012 */ mflo $t2 +/* B90C0 800B84C0 AFAA0054 */ sw $t2, 0x54($sp) +/* B90C4 800B84C4 00000000 */ nop +/* B90C8 800B84C8 0184001A */ div $zero, $t4, $a0 +/* B90CC 800B84CC 14800002 */ bnez $a0, .L800B84D8 +/* B90D0 800B84D0 00000000 */ nop +/* B90D4 800B84D4 0007000D */ break 7 .L800B84D8: -/* 0B90D8 800B84D8 2401FFFF */ li $at, -1 -/* 0B90DC 800B84DC 14810004 */ bne $a0, $at, .L800B84F0 -/* 0B90E0 800B84E0 3C018000 */ lui $at, 0x8000 -/* 0B90E4 800B84E4 15810002 */ bne $t4, $at, .L800B84F0 -/* 0B90E8 800B84E8 00000000 */ nop -/* 0B90EC 800B84EC 0006000D */ break 6 +/* B90D8 800B84D8 2401FFFF */ addiu $at, $zero, -0x1 +/* B90DC 800B84DC 14810004 */ bne $a0, $at, .L800B84F0 +/* B90E0 800B84E0 3C018000 */ lui $at, (0x80000000 >> 16) +/* B90E4 800B84E4 15810002 */ bne $t4, $at, .L800B84F0 +/* B90E8 800B84E8 00000000 */ nop +/* B90EC 800B84EC 0006000D */ break 6 .L800B84F0: -/* 0B90F0 800B84F0 3C01800F */ lui $at, %hi(D_800E92A0) # $at, 0x800f -/* 0B90F4 800B84F4 C42A92A0 */ lwc1 $f10, %lo(D_800E92A0)($at) -/* 0B90F8 800B84F8 3C018013 */ lui $at, %hi(D_8012A01C) # $at, 0x8013 -/* 0B90FC 800B84FC E42AA01C */ swc1 $f10, %lo(D_8012A01C)($at) -/* 0B9100 800B8500 3C01800F */ lui $at, %hi(D_800E92A4) # $at, 0x800f -/* 0B9104 800B8504 C43092A4 */ lwc1 $f16, %lo(D_800E92A4)($at) -/* 0B9108 800B8508 3C018013 */ lui $at, %hi(D_8012A020) # $at, 0x8013 -/* 0B910C 800B850C E430A020 */ swc1 $f16, %lo(D_8012A020)($at) -/* 0B9110 800B8510 00006812 */ mflo $t5 -/* 0B9114 800B8514 AFAD004C */ sw $t5, 0x4c($sp) -/* 0B9118 800B8518 1880003F */ blez $a0, .L800B8618 -/* 0B911C 800B851C 3C15800E */ lui $s5, %hi(D_800E3040) # $s5, 0x800e -/* 0B9120 800B8520 26B53040 */ addiu $s5, %lo(D_800E3040) # addiu $s5, $s5, 0x3040 -/* 0B9124 800B8524 00008025 */ move $s0, $zero +/* B90F0 800B84F0 3C01800F */ lui $at, %hi(D_800E92A0) +/* B90F4 800B84F4 C42A92A0 */ lwc1 $f10, %lo(D_800E92A0)($at) +/* B90F8 800B84F8 3C018013 */ lui $at, %hi(D_8012A01C) +/* B90FC 800B84FC E42AA01C */ swc1 $f10, %lo(D_8012A01C)($at) +/* B9100 800B8500 3C01800F */ lui $at, %hi(D_800E92A4) +/* B9104 800B8504 C43092A4 */ lwc1 $f16, %lo(D_800E92A4)($at) +/* B9108 800B8508 3C018013 */ lui $at, %hi(D_8012A020) +/* B910C 800B850C E430A020 */ swc1 $f16, %lo(D_8012A020)($at) +/* B9110 800B8510 00006812 */ mflo $t5 +/* B9114 800B8514 AFAD004C */ sw $t5, 0x4C($sp) +/* B9118 800B8518 1880003F */ blez $a0, .L800B8618 +/* B911C 800B851C 3C15800E */ lui $s5, %hi(D_800E3040) +/* B9120 800B8520 26B53040 */ addiu $s5, $s5, %lo(D_800E3040) +/* B9124 800B8524 00008025 */ or $s0, $zero, $zero .L800B8528: -/* 0B9128 800B8528 00162400 */ sll $a0, $s6, 0x10 -/* 0B912C 800B852C 00047403 */ sra $t6, $a0, 0x10 -/* 0B9130 800B8530 0C01C1F1 */ jal sins_f -/* 0B9134 800B8534 01C02025 */ move $a0, $t6 -/* 0B9138 800B8538 001E2400 */ sll $a0, $fp, 0x10 -/* 0B913C 800B853C 00047C03 */ sra $t7, $a0, 0x10 -/* 0B9140 800B8540 01E02025 */ move $a0, $t7 -/* 0B9144 800B8544 0C01C1F1 */ jal sins_f -/* 0B9148 800B8548 46000506 */ mov.s $f20, $f0 -/* 0B914C 800B854C C6920018 */ lwc1 $f18, 0x18($s4) -/* 0B9150 800B8550 C686000C */ lwc1 $f6, 0xc($s4) -/* 0B9154 800B8554 46120102 */ mul.s $f4, $f0, $f18 -/* 0B9158 800B8558 8EB80000 */ lw $t8, ($s5) -/* 0B915C 800B855C 3C038013 */ lui $v1, %hi(D_8012A01C) # $v1, 0x8013 -/* 0B9160 800B8560 0310C821 */ addu $t9, $t8, $s0 -/* 0B9164 800B8564 4606A202 */ mul.s $f8, $f20, $f6 -/* 0B9168 800B8568 26F70001 */ addiu $s7, $s7, 1 -/* 0B916C 800B856C 2463A01C */ addiu $v1, %lo(D_8012A01C) # addiu $v1, $v1, -0x5fe4 -/* 0B9170 800B8570 46082280 */ add.s $f10, $f4, $f8 -/* 0B9174 800B8574 E72A0000 */ swc1 $f10, ($t9) -/* 0B9178 800B8578 8E8A0028 */ lw $t2, 0x28($s4) -/* 0B917C 800B857C 00000000 */ nop -/* 0B9180 800B8580 11400008 */ beqz $t2, .L800B85A4 -/* 0B9184 800B8584 00000000 */ nop -/* 0B9188 800B8588 8EAB0000 */ lw $t3, ($s5) -/* 0B918C 800B858C 00000000 */ nop -/* 0B9190 800B8590 01701021 */ addu $v0, $t3, $s0 -/* 0B9194 800B8594 C4400000 */ lwc1 $f0, ($v0) -/* 0B9198 800B8598 00000000 */ nop -/* 0B919C 800B859C 46000400 */ add.s $f16, $f0, $f0 -/* 0B91A0 800B85A0 E4500000 */ swc1 $f16, ($v0) +/* B9128 800B8528 00162400 */ sll $a0, $s6, 16 +/* B912C 800B852C 00047403 */ sra $t6, $a0, 16 +/* B9130 800B8530 0C01C1F1 */ jal sins_f +/* B9134 800B8534 01C02025 */ or $a0, $t6, $zero +/* B9138 800B8538 001E2400 */ sll $a0, $fp, 16 +/* B913C 800B853C 00047C03 */ sra $t7, $a0, 16 +/* B9140 800B8540 01E02025 */ or $a0, $t7, $zero +/* B9144 800B8544 0C01C1F1 */ jal sins_f +/* B9148 800B8548 46000506 */ mov.s $f20, $f0 +/* B914C 800B854C C6920018 */ lwc1 $f18, 0x18($s4) +/* B9150 800B8550 C686000C */ lwc1 $f6, 0xC($s4) +/* B9154 800B8554 46120102 */ mul.s $f4, $f0, $f18 +/* B9158 800B8558 8EB80000 */ lw $t8, 0x0($s5) +/* B915C 800B855C 3C038013 */ lui $v1, %hi(D_8012A01C) +/* B9160 800B8560 0310C821 */ addu $t9, $t8, $s0 +/* B9164 800B8564 4606A202 */ mul.s $f8, $f20, $f6 +/* B9168 800B8568 26F70001 */ addiu $s7, $s7, 0x1 +/* B916C 800B856C 2463A01C */ addiu $v1, $v1, %lo(D_8012A01C) +/* B9170 800B8570 46082280 */ add.s $f10, $f4, $f8 +/* B9174 800B8574 E72A0000 */ swc1 $f10, 0x0($t9) +/* B9178 800B8578 8E8A0028 */ lw $t2, 0x28($s4) +/* B917C 800B857C 00000000 */ nop +/* B9180 800B8580 11400008 */ beqz $t2, .L800B85A4 +/* B9184 800B8584 00000000 */ nop +/* B9188 800B8588 8EAB0000 */ lw $t3, 0x0($s5) +/* B918C 800B858C 00000000 */ nop +/* B9190 800B8590 01701021 */ addu $v0, $t3, $s0 +/* B9194 800B8594 C4400000 */ lwc1 $f0, 0x0($v0) +/* B9198 800B8598 00000000 */ nop +/* B919C 800B859C 46000400 */ add.s $f16, $f0, $f0 +/* B91A0 800B85A0 E4500000 */ swc1 $f16, 0x0($v0) .L800B85A4: -/* 0B91A4 800B85A4 8EAC0000 */ lw $t4, ($s5) -/* 0B91A8 800B85A8 C4720000 */ lwc1 $f18, ($v1) -/* 0B91AC 800B85AC 01901021 */ addu $v0, $t4, $s0 -/* 0B91B0 800B85B0 C4400000 */ lwc1 $f0, ($v0) -/* 0B91B4 800B85B4 26100004 */ addiu $s0, $s0, 4 -/* 0B91B8 800B85B8 4612003C */ c.lt.s $f0, $f18 -/* 0B91BC 800B85BC 00000000 */ nop -/* 0B91C0 800B85C0 45000004 */ bc1f .L800B85D4 -/* 0B91C4 800B85C4 00000000 */ nop -/* 0B91C8 800B85C8 E4600000 */ swc1 $f0, ($v1) -/* 0B91CC 800B85CC C4400000 */ lwc1 $f0, ($v0) -/* 0B91D0 800B85D0 00000000 */ nop +/* B91A4 800B85A4 8EAC0000 */ lw $t4, 0x0($s5) +/* B91A8 800B85A8 C4720000 */ lwc1 $f18, 0x0($v1) +/* B91AC 800B85AC 01901021 */ addu $v0, $t4, $s0 +/* B91B0 800B85B0 C4400000 */ lwc1 $f0, 0x0($v0) +/* B91B4 800B85B4 26100004 */ addiu $s0, $s0, 0x4 +/* B91B8 800B85B8 4612003C */ c.lt.s $f0, $f18 +/* B91BC 800B85BC 00000000 */ nop +/* B91C0 800B85C0 45000004 */ bc1f .L800B85D4 +/* B91C4 800B85C4 00000000 */ nop +/* B91C8 800B85C8 E4600000 */ swc1 $f0, 0x0($v1) +/* B91CC 800B85CC C4400000 */ lwc1 $f0, 0x0($v0) +/* B91D0 800B85D0 00000000 */ nop .L800B85D4: -/* 0B91D4 800B85D4 3C028013 */ lui $v0, %hi(D_8012A020) # $v0, 0x8013 -/* 0B91D8 800B85D8 2442A020 */ addiu $v0, %lo(D_8012A020) # addiu $v0, $v0, -0x5fe0 -/* 0B91DC 800B85DC C4460000 */ lwc1 $f6, ($v0) -/* 0B91E0 800B85E0 00000000 */ nop -/* 0B91E4 800B85E4 4600303C */ c.lt.s $f6, $f0 -/* 0B91E8 800B85E8 00000000 */ nop -/* 0B91EC 800B85EC 45000002 */ bc1f .L800B85F8 -/* 0B91F0 800B85F0 00000000 */ nop -/* 0B91F4 800B85F4 E4400000 */ swc1 $f0, ($v0) +/* B91D4 800B85D4 3C028013 */ lui $v0, %hi(D_8012A020) +/* B91D8 800B85D8 2442A020 */ addiu $v0, $v0, %lo(D_8012A020) +/* B91DC 800B85DC C4460000 */ lwc1 $f6, 0x0($v0) +/* B91E0 800B85E0 00000000 */ nop +/* B91E4 800B85E4 4600303C */ c.lt.s $f6, $f0 +/* B91E8 800B85E8 00000000 */ nop +/* B91EC 800B85EC 45000002 */ bc1f .L800B85F8 +/* B91F0 800B85F0 00000000 */ nop +/* B91F4 800B85F4 E4400000 */ swc1 $f0, 0x0($v0) .L800B85F8: -/* 0B91F8 800B85F8 8E8F0020 */ lw $t7, 0x20($s4) -/* 0B91FC 800B85FC 8FAD0054 */ lw $t5, 0x54($sp) -/* 0B9200 800B8600 8FAE004C */ lw $t6, 0x4c($sp) -/* 0B9204 800B8604 02EF082A */ slt $at, $s7, $t7 -/* 0B9208 800B8608 02CDB021 */ addu $s6, $s6, $t5 -/* 0B920C 800B860C 1420FFC6 */ bnez $at, .L800B8528 -/* 0B9210 800B8610 03CEF021 */ addu $fp, $fp, $t6 -/* 0B9214 800B8614 0000B825 */ move $s7, $zero +/* B91F8 800B85F8 8E8F0020 */ lw $t7, 0x20($s4) +/* B91FC 800B85FC 8FAD0054 */ lw $t5, 0x54($sp) +/* B9200 800B8600 8FAE004C */ lw $t6, 0x4C($sp) +/* B9204 800B8604 02EF082A */ slt $at, $s7, $t7 +/* B9208 800B8608 02CDB021 */ addu $s6, $s6, $t5 +/* B920C 800B860C 1420FFC6 */ bnez $at, .L800B8528 +/* B9210 800B8610 03CEF021 */ addu $fp, $fp, $t6 +/* B9214 800B8614 0000B825 */ or $s7, $zero, $zero .L800B8618: -/* 0B9218 800B8618 0C01BE46 */ jal save_rng_seed -/* 0B921C 800B861C 00000000 */ nop -/* 0B9220 800B8620 3C045741 */ lui $a0, %hi(0x57410001) # $a0, 0x5741 -/* 0B9224 800B8624 0C01BE43 */ jal set_rng_seed -/* 0B9228 800B8628 34845646 */ ori $a0, (0x57415646 & 0xFFFF) # ori $a0, $a0, 0x5646 -/* 0B922C 800B862C 8E830004 */ lw $v1, 4($s4) -/* 0B9230 800B8630 0000A825 */ move $s5, $zero -/* 0B9234 800B8634 18600020 */ blez $v1, .L800B86B8 -/* 0B9238 800B8638 00000000 */ nop -/* 0B923C 800B863C 3C1E800E */ lui $fp, %hi(D_800E3044) # $fp, 0x800e -/* 0B9240 800B8640 27DE3044 */ addiu $fp, %lo(D_800E3044) # addiu $fp, $fp, 0x3044 +/* B9218 800B8618 0C01BE46 */ jal save_rng_seed +/* B921C 800B861C 00000000 */ nop +/* B9220 800B8620 3C045741 */ lui $a0, (0x57415646 >> 16) +/* B9224 800B8624 0C01BE43 */ jal set_rng_seed +/* B9228 800B8628 34845646 */ ori $a0, $a0, (0x57415646 & 0xFFFF) +/* B922C 800B862C 8E830004 */ lw $v1, 0x4($s4) +/* B9230 800B8630 0000A825 */ or $s5, $zero, $zero +/* B9234 800B8634 18600020 */ blez $v1, .L800B86B8 +/* B9238 800B8638 00000000 */ nop +/* B923C 800B863C 3C1E800E */ lui $fp, %hi(D_800E3044) +/* B9240 800B8640 27DE3044 */ addiu $fp, $fp, %lo(D_800E3044) .L800B8644: -/* 0B9244 800B8644 18600016 */ blez $v1, .L800B86A0 -/* 0B9248 800B8648 00008025 */ move $s0, $zero -/* 0B924C 800B864C 0015B080 */ sll $s6, $s5, 2 +/* B9244 800B8644 18600016 */ blez $v1, .L800B86A0 +/* B9248 800B8648 00008025 */ or $s0, $zero, $zero +/* B924C 800B864C 0015B080 */ sll $s6, $s5, 2 .L800B8650: -/* 0B9250 800B8650 8E850020 */ lw $a1, 0x20($s4) -/* 0B9254 800B8654 00002025 */ move $a0, $zero -/* 0B9258 800B8658 0C01BE53 */ jal get_random_number_from_range -/* 0B925C 800B865C 24A5FFFF */ addiu $a1, $a1, -1 -/* 0B9260 800B8660 8FD80000 */ lw $t8, ($fp) -/* 0B9264 800B8664 00002025 */ move $a0, $zero -/* 0B9268 800B8668 0316C821 */ addu $t9, $t8, $s6 -/* 0B926C 800B866C A7220000 */ sh $v0, ($t9) -/* 0B9270 800B8670 8E850020 */ lw $a1, 0x20($s4) -/* 0B9274 800B8674 0C01BE53 */ jal get_random_number_from_range -/* 0B9278 800B8678 24A5FFFF */ addiu $a1, $a1, -1 -/* 0B927C 800B867C 8FCA0000 */ lw $t2, ($fp) -/* 0B9280 800B8680 26100001 */ addiu $s0, $s0, 1 -/* 0B9284 800B8684 01565821 */ addu $t3, $t2, $s6 -/* 0B9288 800B8688 A5620002 */ sh $v0, 2($t3) -/* 0B928C 800B868C 8E830004 */ lw $v1, 4($s4) -/* 0B9290 800B8690 26D60004 */ addiu $s6, $s6, 4 -/* 0B9294 800B8694 0203082A */ slt $at, $s0, $v1 -/* 0B9298 800B8698 1420FFED */ bnez $at, .L800B8650 -/* 0B929C 800B869C 26B50001 */ addiu $s5, $s5, 1 +/* B9250 800B8650 8E850020 */ lw $a1, 0x20($s4) +/* B9254 800B8654 00002025 */ or $a0, $zero, $zero +/* B9258 800B8658 0C01BE53 */ jal get_random_number_from_range +/* B925C 800B865C 24A5FFFF */ addiu $a1, $a1, -0x1 +/* B9260 800B8660 8FD80000 */ lw $t8, 0x0($fp) +/* B9264 800B8664 00002025 */ or $a0, $zero, $zero +/* B9268 800B8668 0316C821 */ addu $t9, $t8, $s6 +/* B926C 800B866C A7220000 */ sh $v0, 0x0($t9) +/* B9270 800B8670 8E850020 */ lw $a1, 0x20($s4) +/* B9274 800B8674 0C01BE53 */ jal get_random_number_from_range +/* B9278 800B8678 24A5FFFF */ addiu $a1, $a1, -0x1 +/* B927C 800B867C 8FCA0000 */ lw $t2, 0x0($fp) +/* B9280 800B8680 26100001 */ addiu $s0, $s0, 0x1 +/* B9284 800B8684 01565821 */ addu $t3, $t2, $s6 +/* B9288 800B8688 A5620002 */ sh $v0, 0x2($t3) +/* B928C 800B868C 8E830004 */ lw $v1, 0x4($s4) +/* B9290 800B8690 26D60004 */ addiu $s6, $s6, 0x4 +/* B9294 800B8694 0203082A */ slt $at, $s0, $v1 +/* B9298 800B8698 1420FFED */ bnez $at, .L800B8650 +/* B929C 800B869C 26B50001 */ addiu $s5, $s5, 0x1 .L800B86A0: -/* 0B92A0 800B86A0 26F70001 */ addiu $s7, $s7, 1 -/* 0B92A4 800B86A4 02E3082A */ slt $at, $s7, $v1 -/* 0B92A8 800B86A8 1420FFE6 */ bnez $at, .L800B8644 -/* 0B92AC 800B86AC 00000000 */ nop -/* 0B92B0 800B86B0 0000B825 */ move $s7, $zero -/* 0B92B4 800B86B4 0000A825 */ move $s5, $zero +/* B92A0 800B86A0 26F70001 */ addiu $s7, $s7, 0x1 +/* B92A4 800B86A4 02E3082A */ slt $at, $s7, $v1 +/* B92A8 800B86A8 1420FFE6 */ bnez $at, .L800B8644 +/* B92AC 800B86AC 00000000 */ nop +/* B92B0 800B86B0 0000B825 */ or $s7, $zero, $zero +/* B92B4 800B86B4 0000A825 */ or $s5, $zero, $zero .L800B86B8: -/* 0B92B8 800B86B8 0C01BE4B */ jal load_rng_seed -/* 0B92BC 800B86BC 00000000 */ nop -/* 0B92C0 800B86C0 24010002 */ li $at, 2 -/* 0B92C4 800B86C4 12610003 */ beq $s3, $at, .L800B86D4 -/* 0B92C8 800B86C8 00003025 */ move $a2, $zero -/* 0B92CC 800B86CC 10000002 */ b .L800B86D8 -/* 0B92D0 800B86D0 24130002 */ li $s3, 2 +/* B92B8 800B86B8 0C01BE4B */ jal load_rng_seed +/* B92BC 800B86BC 00000000 */ nop +/* B92C0 800B86C0 24010002 */ addiu $at, $zero, 0x2 +/* B92C4 800B86C4 12610003 */ beq $s3, $at, .L800B86D4 +/* B92C8 800B86C8 00003025 */ or $a2, $zero, $zero +/* B92CC 800B86CC 10000002 */ b .L800B86D8 +/* B92D0 800B86D0 24130002 */ addiu $s3, $zero, 0x2 .L800B86D4: -/* 0B92D4 800B86D4 24130004 */ li $s3, 4 +/* B92D4 800B86D4 24130004 */ addiu $s3, $zero, 0x4 .L800B86D8: -/* 0B92D8 800B86D8 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 0B92DC 800B86DC 44810800 */ mtc1 $at, $f1 -/* 0B92E0 800B86E0 8E820000 */ lw $v0, ($s4) -/* 0B92E4 800B86E4 44800000 */ mtc1 $zero, $f0 -/* 0B92E8 800B86E8 240500FF */ li $a1, 255 +/* B92D8 800B86D8 3C013FE0 */ lui $at, (0x3FE00000 >> 16) +/* B92DC 800B86DC 44810800 */ mtc1 $at, $f1 +/* B92E0 800B86E0 8E820000 */ lw $v0, 0x0($s4) +/* B92E4 800B86E4 44800000 */ mtc1 $zero, $f0 +/* B92E8 800B86E8 240500FF */ addiu $a1, $zero, 0xFF .L800B86EC: -/* 0B92EC 800B86EC 0440005C */ bltz $v0, .L800B8860 -/* 0B92F0 800B86F0 24C60001 */ addiu $a2, $a2, 1 +/* B92EC 800B86EC 0440005C */ bltz $v0, .L800B8860 +/* B92F0 800B86F0 24C60001 */ addiu $a2, $a2, 0x1 .L800B86F4: -/* 0B92F4 800B86F4 04400055 */ bltz $v0, .L800B884C -/* 0B92F8 800B86F8 00008025 */ move $s0, $zero +/* B92F4 800B86F4 04400055 */ bltz $v0, .L800B884C +/* B92F8 800B86F8 00008025 */ or $s0, $zero, $zero .L800B86FC: -/* 0B92FC 800B86FC 1A60004F */ blez $s3, .L800B883C -/* 0B9300 800B8700 00002025 */ move $a0, $zero -/* 0B9304 800B8704 4490A000 */ mtc1 $s0, $f20 -/* 0B9308 800B8708 44979000 */ mtc1 $s7, $f18 -/* 0B930C 800B870C 4680A0A0 */ cvt.s.w $f2, $f20 -/* 0B9310 800B8710 00151880 */ sll $v1, $s5, 2 -/* 0B9314 800B8714 3C02800E */ lui $v0, %hi(D_800E3070) # $v0, 0x800e -/* 0B9318 800B8718 46809320 */ cvt.s.w $f12, $f18 -/* 0B931C 800B871C 00751821 */ addu $v1, $v1, $s5 -/* 0B9320 800B8720 24423070 */ addiu $v0, %lo(D_800E3070) # addiu $v0, $v0, 0x3070 -/* 0B9324 800B8724 00031840 */ sll $v1, $v1, 1 +/* B92FC 800B86FC 1A60004F */ blez $s3, .L800B883C +/* B9300 800B8700 00002025 */ or $a0, $zero, $zero +/* B9304 800B8704 4490A000 */ mtc1 $s0, $f20 +/* B9308 800B8708 44979000 */ mtc1 $s7, $f18 +/* B930C 800B870C 4680A0A0 */ cvt.s.w $f2, $f20 +/* B9310 800B8710 00151880 */ sll $v1, $s5, 2 +/* B9314 800B8714 3C02800E */ lui $v0, %hi(D_800E3070) +/* B9318 800B8718 46809320 */ cvt.s.w $f12, $f18 +/* B931C 800B871C 00751821 */ addu $v1, $v1, $s5 +/* B9320 800B8720 24423070 */ addiu $v0, $v0, %lo(D_800E3070) +/* B9324 800B8724 00031840 */ sll $v1, $v1, 1 .L800B8728: -/* 0B9328 800B8728 C62A0000 */ lwc1 $f10, ($s1) -/* 0B932C 800B872C 8C4E0000 */ lw $t6, ($v0) -/* 0B9330 800B8730 460A1402 */ mul.s $f16, $f2, $f10 -/* 0B9334 800B8734 01C37821 */ addu $t7, $t6, $v1 -/* 0B9338 800B8738 24840001 */ addiu $a0, %lo(0x57410001) # addiu $a0, $a0, 1 -/* 0B933C 800B873C 460084A1 */ cvt.d.s $f18, $f16 -/* 0B9340 800B8740 46209180 */ add.d $f6, $f18, $f0 -/* 0B9344 800B8744 444CF800 */ cfc1 $t4, $31 -/* 0B9348 800B8748 00000000 */ nop -/* 0B934C 800B874C 35810003 */ ori $at, $t4, 3 -/* 0B9350 800B8750 38210002 */ xori $at, $at, 2 -/* 0B9354 800B8754 44C1F800 */ ctc1 $at, $31 -/* 0B9358 800B8758 00000000 */ nop -/* 0B935C 800B875C 46203124 */ cvt.w.d $f4, $f6 -/* 0B9360 800B8760 440D2000 */ mfc1 $t5, $f4 -/* 0B9364 800B8764 44CCF800 */ ctc1 $t4, $31 -/* 0B9368 800B8768 A5ED0000 */ sh $t5, ($t7) -/* 0B936C 800B876C C6480000 */ lwc1 $f8, ($s2) -/* 0B9370 800B8770 8C4A0000 */ lw $t2, ($v0) -/* 0B9374 800B8774 46086282 */ mul.s $f10, $f12, $f8 -/* 0B9378 800B8778 01435821 */ addu $t3, $t2, $v1 -/* 0B937C 800B877C 46005421 */ cvt.d.s $f16, $f10 -/* 0B9380 800B8780 46208480 */ add.d $f18, $f16, $f0 -/* 0B9384 800B8784 4458F800 */ cfc1 $t8, $31 -/* 0B9388 800B8788 00000000 */ nop -/* 0B938C 800B878C 37010003 */ ori $at, $t8, 3 -/* 0B9390 800B8790 38210002 */ xori $at, $at, 2 -/* 0B9394 800B8794 44C1F800 */ ctc1 $at, $31 -/* 0B9398 800B8798 00000000 */ nop -/* 0B939C 800B879C 462091A4 */ cvt.w.d $f6, $f18 -/* 0B93A0 800B87A0 44193000 */ mfc1 $t9, $f6 -/* 0B93A4 800B87A4 44D8F800 */ ctc1 $t8, $31 -/* 0B93A8 800B87A8 A5790004 */ sh $t9, 4($t3) -/* 0B93AC 800B87AC 8E8C004C */ lw $t4, 0x4c($s4) -/* 0B93B0 800B87B0 00000000 */ nop -/* 0B93B4 800B87B4 1580000E */ bnez $t4, .L800B87F0 -/* 0B93B8 800B87B8 00000000 */ nop -/* 0B93BC 800B87BC 8C4E0000 */ lw $t6, ($v0) -/* 0B93C0 800B87C0 00000000 */ nop -/* 0B93C4 800B87C4 01C36821 */ addu $t5, $t6, $v1 -/* 0B93C8 800B87C8 A1A50006 */ sb $a1, 6($t5) -/* 0B93CC 800B87CC 8C4F0000 */ lw $t7, ($v0) -/* 0B93D0 800B87D0 00000000 */ nop -/* 0B93D4 800B87D4 01E3C021 */ addu $t8, $t7, $v1 -/* 0B93D8 800B87D8 A3050007 */ sb $a1, 7($t8) -/* 0B93DC 800B87DC 8C4A0000 */ lw $t2, ($v0) -/* 0B93E0 800B87E0 00000000 */ nop -/* 0B93E4 800B87E4 0143C821 */ addu $t9, $t2, $v1 -/* 0B93E8 800B87E8 1000000D */ b .L800B8820 -/* 0B93EC 800B87EC A3250008 */ sb $a1, 8($t9) +/* B9328 800B8728 C62A0000 */ lwc1 $f10, 0x0($s1) +/* B932C 800B872C 8C4E0000 */ lw $t6, 0x0($v0) +/* B9330 800B8730 460A1402 */ mul.s $f16, $f2, $f10 +/* B9334 800B8734 01C37821 */ addu $t7, $t6, $v1 +/* B9338 800B8738 24840001 */ addiu $a0, $a0, 0x1 +/* B933C 800B873C 460084A1 */ cvt.d.s $f18, $f16 +/* B9340 800B8740 46209180 */ add.d $f6, $f18, $f0 +/* B9344 800B8744 444CF800 */ cfc1 $t4, $31 +/* B9348 800B8748 00000000 */ nop +/* B934C 800B874C 35810003 */ ori $at, $t4, 0x3 +/* B9350 800B8750 38210002 */ xori $at, $at, 0x2 +/* B9354 800B8754 44C1F800 */ ctc1 $at, $31 +/* B9358 800B8758 00000000 */ nop +/* B935C 800B875C 46203124 */ cvt.w.d $f4, $f6 +/* B9360 800B8760 440D2000 */ mfc1 $t5, $f4 +/* B9364 800B8764 44CCF800 */ ctc1 $t4, $31 +/* B9368 800B8768 A5ED0000 */ sh $t5, 0x0($t7) +/* B936C 800B876C C6480000 */ lwc1 $f8, 0x0($s2) +/* B9370 800B8770 8C4A0000 */ lw $t2, 0x0($v0) +/* B9374 800B8774 46086282 */ mul.s $f10, $f12, $f8 +/* B9378 800B8778 01435821 */ addu $t3, $t2, $v1 +/* B937C 800B877C 46005421 */ cvt.d.s $f16, $f10 +/* B9380 800B8780 46208480 */ add.d $f18, $f16, $f0 +/* B9384 800B8784 4458F800 */ cfc1 $t8, $31 +/* B9388 800B8788 00000000 */ nop +/* B938C 800B878C 37010003 */ ori $at, $t8, 0x3 +/* B9390 800B8790 38210002 */ xori $at, $at, 0x2 +/* B9394 800B8794 44C1F800 */ ctc1 $at, $31 +/* B9398 800B8798 00000000 */ nop +/* B939C 800B879C 462091A4 */ cvt.w.d $f6, $f18 +/* B93A0 800B87A0 44193000 */ mfc1 $t9, $f6 +/* B93A4 800B87A4 44D8F800 */ ctc1 $t8, $31 +/* B93A8 800B87A8 A5790004 */ sh $t9, 0x4($t3) +/* B93AC 800B87AC 8E8C004C */ lw $t4, 0x4C($s4) +/* B93B0 800B87B0 00000000 */ nop +/* B93B4 800B87B4 1580000E */ bnez $t4, .L800B87F0 +/* B93B8 800B87B8 00000000 */ nop +/* B93BC 800B87BC 8C4E0000 */ lw $t6, 0x0($v0) +/* B93C0 800B87C0 00000000 */ nop +/* B93C4 800B87C4 01C36821 */ addu $t5, $t6, $v1 +/* B93C8 800B87C8 A1A50006 */ sb $a1, 0x6($t5) +/* B93CC 800B87CC 8C4F0000 */ lw $t7, 0x0($v0) +/* B93D0 800B87D0 00000000 */ nop +/* B93D4 800B87D4 01E3C021 */ addu $t8, $t7, $v1 +/* B93D8 800B87D8 A3050007 */ sb $a1, 0x7($t8) +/* B93DC 800B87DC 8C4A0000 */ lw $t2, 0x0($v0) +/* B93E0 800B87E0 00000000 */ nop +/* B93E4 800B87E4 0143C821 */ addu $t9, $t2, $v1 +/* B93E8 800B87E8 1000000D */ b .L800B8820 +/* B93EC 800B87EC A3250008 */ sb $a1, 0x8($t9) .L800B87F0: -/* 0B93F0 800B87F0 8C4B0000 */ lw $t3, ($v0) -/* 0B93F4 800B87F4 00000000 */ nop -/* 0B93F8 800B87F8 01636021 */ addu $t4, $t3, $v1 -/* 0B93FC 800B87FC A1800006 */ sb $zero, 6($t4) -/* 0B9400 800B8800 8C4E0000 */ lw $t6, ($v0) -/* 0B9404 800B8804 00000000 */ nop -/* 0B9408 800B8808 01C36821 */ addu $t5, $t6, $v1 -/* 0B940C 800B880C A1A00007 */ sb $zero, 7($t5) -/* 0B9410 800B8810 8C4F0000 */ lw $t7, ($v0) -/* 0B9414 800B8814 00000000 */ nop -/* 0B9418 800B8818 01E3C021 */ addu $t8, $t7, $v1 -/* 0B941C 800B881C A3000008 */ sb $zero, 8($t8) +/* B93F0 800B87F0 8C4B0000 */ lw $t3, 0x0($v0) +/* B93F4 800B87F4 00000000 */ nop +/* B93F8 800B87F8 01636021 */ addu $t4, $t3, $v1 +/* B93FC 800B87FC A1800006 */ sb $zero, 0x6($t4) +/* B9400 800B8800 8C4E0000 */ lw $t6, 0x0($v0) +/* B9404 800B8804 00000000 */ nop +/* B9408 800B8808 01C36821 */ addu $t5, $t6, $v1 +/* B940C 800B880C A1A00007 */ sb $zero, 0x7($t5) +/* B9410 800B8810 8C4F0000 */ lw $t7, 0x0($v0) +/* B9414 800B8814 00000000 */ nop +/* B9418 800B8818 01E3C021 */ addu $t8, $t7, $v1 +/* B941C 800B881C A3000008 */ sb $zero, 0x8($t8) .L800B8820: -/* 0B9420 800B8820 8C4A0000 */ lw $t2, ($v0) -/* 0B9424 800B8824 24420004 */ addiu $v0, $v0, 4 -/* 0B9428 800B8828 0143C821 */ addu $t9, $t2, $v1 -/* 0B942C 800B882C 1493FFBE */ bne $a0, $s3, .L800B8728 -/* 0B9430 800B8830 A3250009 */ sb $a1, 9($t9) -/* 0B9434 800B8834 8E820000 */ lw $v0, ($s4) -/* 0B9438 800B8838 00000000 */ nop +/* B9420 800B8820 8C4A0000 */ lw $t2, 0x0($v0) +/* B9424 800B8824 24420004 */ addiu $v0, $v0, 0x4 +/* B9428 800B8828 0143C821 */ addu $t9, $t2, $v1 +/* B942C 800B882C 1493FFBE */ bne $a0, $s3, .L800B8728 +/* B9430 800B8830 A3250009 */ sb $a1, 0x9($t9) +/* B9434 800B8834 8E820000 */ lw $v0, 0x0($s4) +/* B9438 800B8838 00000000 */ nop .L800B883C: -/* 0B943C 800B883C 26100001 */ addiu $s0, $s0, 1 -/* 0B9440 800B8840 0050082A */ slt $at, $v0, $s0 -/* 0B9444 800B8844 1020FFAD */ beqz $at, .L800B86FC -/* 0B9448 800B8848 26B50001 */ addiu $s5, $s5, 1 +/* B943C 800B883C 26100001 */ addiu $s0, $s0, 0x1 +/* B9440 800B8840 0050082A */ slt $at, $v0, $s0 +/* B9444 800B8844 1020FFAD */ beqz $at, .L800B86FC +/* B9448 800B8848 26B50001 */ addiu $s5, $s5, 0x1 .L800B884C: -/* 0B944C 800B884C 26F70001 */ addiu $s7, $s7, 1 -/* 0B9450 800B8850 0057082A */ slt $at, $v0, $s7 -/* 0B9454 800B8854 1020FFA7 */ beqz $at, .L800B86F4 -/* 0B9458 800B8858 00000000 */ nop -/* 0B945C 800B885C 0000B825 */ move $s7, $zero +/* B944C 800B884C 26F70001 */ addiu $s7, $s7, 0x1 +/* B9450 800B8850 0057082A */ slt $at, $v0, $s7 +/* B9454 800B8854 1020FFA7 */ beqz $at, .L800B86F4 +/* B9458 800B8858 00000000 */ nop +/* B945C 800B885C 0000B825 */ or $s7, $zero, $zero .L800B8860: -/* 0B9460 800B8860 28C10019 */ slti $at, $a2, 0x19 -/* 0B9464 800B8864 1420FFA1 */ bnez $at, .L800B86EC -/* 0B9468 800B8868 00000000 */ nop -/* 0B946C 800B886C 1840003C */ blez $v0, .L800B8960 -/* 0B9470 800B8870 0000A825 */ move $s5, $zero -/* 0B9474 800B8874 24060040 */ li $a2, 64 +/* B9460 800B8860 28C10019 */ slti $at, $a2, 0x19 +/* B9464 800B8864 1420FFA1 */ bnez $at, .L800B86EC +/* B9468 800B8868 00000000 */ nop +/* B946C 800B886C 1840003C */ blez $v0, .L800B8960 +/* B9470 800B8870 0000A825 */ or $s5, $zero, $zero +/* B9474 800B8874 24060040 */ addiu $a2, $zero, 0x40 .L800B8878: -/* 0B9478 800B8878 18400035 */ blez $v0, .L800B8950 -/* 0B947C 800B887C 00008025 */ move $s0, $zero +/* B9478 800B8878 18400035 */ blez $v0, .L800B8950 +/* B947C 800B887C 00008025 */ or $s0, $zero, $zero .L800B8880: -/* 0B9480 800B8880 1A60002F */ blez $s3, .L800B8940 -/* 0B9484 800B8884 00002025 */ move $a0, $zero -/* 0B9488 800B8888 3C03800E */ lui $v1, %hi(D_800E3080) # $v1, 0x800e -/* 0B948C 800B888C 24633080 */ addiu $v1, %lo(D_800E3080) # addiu $v1, $v1, 0x3080 -/* 0B9490 800B8890 26050001 */ addiu $a1, $s0, 1 -/* 0B9494 800B8894 00151100 */ sll $v0, $s5, 4 +/* B9480 800B8880 1A60002F */ blez $s3, .L800B8940 +/* B9484 800B8884 00002025 */ or $a0, $zero, $zero +/* B9488 800B8888 3C03800E */ lui $v1, %hi(D_800E3080) +/* B948C 800B888C 24633080 */ addiu $v1, $v1, %lo(D_800E3080) +/* B9490 800B8890 26050001 */ addiu $a1, $s0, 0x1 +/* B9494 800B8894 00151100 */ sll $v0, $s5, 4 .L800B8898: -/* 0B9498 800B8898 8C6B0000 */ lw $t3, ($v1) -/* 0B949C 800B889C 24840001 */ addiu $a0, $a0, 1 -/* 0B94A0 800B88A0 01626021 */ addu $t4, $t3, $v0 -/* 0B94A4 800B88A4 A1860000 */ sb $a2, ($t4) -/* 0B94A8 800B88A8 8C6E0000 */ lw $t6, ($v1) -/* 0B94AC 800B88AC 24630004 */ addiu $v1, $v1, 4 -/* 0B94B0 800B88B0 01C26821 */ addu $t5, $t6, $v0 -/* 0B94B4 800B88B4 A1B00001 */ sb $s0, 1($t5) -/* 0B94B8 800B88B8 8E8F0000 */ lw $t7, ($s4) -/* 0B94BC 800B88BC 8C79FFFC */ lw $t9, -4($v1) -/* 0B94C0 800B88C0 020FC021 */ addu $t8, $s0, $t7 -/* 0B94C4 800B88C4 270A0001 */ addiu $t2, $t8, 1 -/* 0B94C8 800B88C8 03225821 */ addu $t3, $t9, $v0 -/* 0B94CC 800B88CC A16A0002 */ sb $t2, 2($t3) -/* 0B94D0 800B88D0 8C6CFFFC */ lw $t4, -4($v1) -/* 0B94D4 800B88D4 26B50000 */ addiu $s5, $s5, 0 -/* 0B94D8 800B88D8 01827021 */ addu $t6, $t4, $v0 -/* 0B94DC 800B88DC A1C50003 */ sb $a1, 3($t6) -/* 0B94E0 800B88E0 8C6DFFFC */ lw $t5, -4($v1) -/* 0B94E4 800B88E4 24420010 */ addiu $v0, $v0, 0x10 -/* 0B94E8 800B88E8 01A27821 */ addu $t7, $t5, $v0 -/* 0B94EC 800B88EC A1E60000 */ sb $a2, ($t7) -/* 0B94F0 800B88F0 8C78FFFC */ lw $t8, -4($v1) -/* 0B94F4 800B88F4 00000000 */ nop -/* 0B94F8 800B88F8 0302C821 */ addu $t9, $t8, $v0 -/* 0B94FC 800B88FC A3250001 */ sb $a1, 1($t9) -/* 0B9500 800B8900 8E8A0000 */ lw $t2, ($s4) -/* 0B9504 800B8904 8C6EFFFC */ lw $t6, -4($v1) -/* 0B9508 800B8908 020A5821 */ addu $t3, $s0, $t2 -/* 0B950C 800B890C 256C0001 */ addiu $t4, $t3, 1 -/* 0B9510 800B8910 01C26821 */ addu $t5, $t6, $v0 -/* 0B9514 800B8914 A1AC0002 */ sb $t4, 2($t5) -/* 0B9518 800B8918 8E8F0000 */ lw $t7, ($s4) -/* 0B951C 800B891C 8C6AFFFC */ lw $t2, -4($v1) -/* 0B9520 800B8920 020FC021 */ addu $t8, $s0, $t7 -/* 0B9524 800B8924 27190002 */ addiu $t9, $t8, 2 -/* 0B9528 800B8928 01425821 */ addu $t3, $t2, $v0 -/* 0B952C 800B892C A1790003 */ sb $t9, 3($t3) -/* 0B9530 800B8930 1493FFD9 */ bne $a0, $s3, .L800B8898 -/* 0B9534 800B8934 2442FFF0 */ addiu $v0, $v0, -0x10 -/* 0B9538 800B8938 8E820000 */ lw $v0, ($s4) -/* 0B953C 800B893C 00000000 */ nop +/* B9498 800B8898 8C6B0000 */ lw $t3, 0x0($v1) +/* B949C 800B889C 24840001 */ addiu $a0, $a0, 0x1 +/* B94A0 800B88A0 01626021 */ addu $t4, $t3, $v0 +/* B94A4 800B88A4 A1860000 */ sb $a2, 0x0($t4) +/* B94A8 800B88A8 8C6E0000 */ lw $t6, 0x0($v1) +/* B94AC 800B88AC 24630004 */ addiu $v1, $v1, 0x4 +/* B94B0 800B88B0 01C26821 */ addu $t5, $t6, $v0 +/* B94B4 800B88B4 A1B00001 */ sb $s0, 0x1($t5) +/* B94B8 800B88B8 8E8F0000 */ lw $t7, 0x0($s4) +/* B94BC 800B88BC 8C79FFFC */ lw $t9, -0x4($v1) +/* B94C0 800B88C0 020FC021 */ addu $t8, $s0, $t7 +/* B94C4 800B88C4 270A0001 */ addiu $t2, $t8, 0x1 +/* B94C8 800B88C8 03225821 */ addu $t3, $t9, $v0 +/* B94CC 800B88CC A16A0002 */ sb $t2, 0x2($t3) +/* B94D0 800B88D0 8C6CFFFC */ lw $t4, -0x4($v1) +/* B94D4 800B88D4 26B50000 */ addiu $s5, $s5, 0x0 +/* B94D8 800B88D8 01827021 */ addu $t6, $t4, $v0 +/* B94DC 800B88DC A1C50003 */ sb $a1, 0x3($t6) +/* B94E0 800B88E0 8C6DFFFC */ lw $t5, -0x4($v1) +/* B94E4 800B88E4 24420010 */ addiu $v0, $v0, 0x10 +/* B94E8 800B88E8 01A27821 */ addu $t7, $t5, $v0 +/* B94EC 800B88EC A1E60000 */ sb $a2, 0x0($t7) +/* B94F0 800B88F0 8C78FFFC */ lw $t8, -0x4($v1) +/* B94F4 800B88F4 00000000 */ nop +/* B94F8 800B88F8 0302C821 */ addu $t9, $t8, $v0 +/* B94FC 800B88FC A3250001 */ sb $a1, 0x1($t9) +/* B9500 800B8900 8E8A0000 */ lw $t2, 0x0($s4) +/* B9504 800B8904 8C6EFFFC */ lw $t6, -0x4($v1) +/* B9508 800B8908 020A5821 */ addu $t3, $s0, $t2 +/* B950C 800B890C 256C0001 */ addiu $t4, $t3, 0x1 +/* B9510 800B8910 01C26821 */ addu $t5, $t6, $v0 +/* B9514 800B8914 A1AC0002 */ sb $t4, 0x2($t5) +/* B9518 800B8918 8E8F0000 */ lw $t7, 0x0($s4) +/* B951C 800B891C 8C6AFFFC */ lw $t2, -0x4($v1) +/* B9520 800B8920 020FC021 */ addu $t8, $s0, $t7 +/* B9524 800B8924 27190002 */ addiu $t9, $t8, 0x2 +/* B9528 800B8928 01425821 */ addu $t3, $t2, $v0 +/* B952C 800B892C A1790003 */ sb $t9, 0x3($t3) +/* B9530 800B8930 1493FFD9 */ bne $a0, $s3, .L800B8898 +/* B9534 800B8934 2442FFF0 */ addiu $v0, $v0, -0x10 +/* B9538 800B8938 8E820000 */ lw $v0, 0x0($s4) +/* B953C 800B893C 00000000 */ nop .L800B8940: -/* 0B9540 800B8940 26100001 */ addiu $s0, $s0, 1 -/* 0B9544 800B8944 0202082A */ slt $at, $s0, $v0 -/* 0B9548 800B8948 1420FFCD */ bnez $at, .L800B8880 -/* 0B954C 800B894C 26B50002 */ addiu $s5, $s5, 2 +/* B9540 800B8940 26100001 */ addiu $s0, $s0, 0x1 +/* B9544 800B8944 0202082A */ slt $at, $s0, $v0 +/* B9548 800B8948 1420FFCD */ bnez $at, .L800B8880 +/* B954C 800B894C 26B50002 */ addiu $s5, $s5, 0x2 .L800B8950: -/* 0B9550 800B8950 26F70001 */ addiu $s7, $s7, 1 -/* 0B9554 800B8954 02E2082A */ slt $at, $s7, $v0 -/* 0B9558 800B8958 1420FFC7 */ bnez $at, .L800B8878 -/* 0B955C 800B895C 00000000 */ nop +/* B9550 800B8950 26F70001 */ addiu $s7, $s7, 0x1 +/* B9554 800B8954 02E2082A */ slt $at, $s7, $v0 +/* B9558 800B8958 1420FFC7 */ bnez $at, .L800B8878 +/* B955C 800B895C 00000000 */ nop .L800B8960: -/* 0B9560 800B8960 0C02F1B2 */ jal func_800BC6C8 -/* 0B9564 800B8964 00000000 */ nop -/* 0B9568 800B8968 8E820000 */ lw $v0, ($s4) -/* 0B956C 800B896C 3C048013 */ lui $a0, %hi(D_8012A028) # $a0, 0x8013 -/* 0B9570 800B8970 244E0001 */ addiu $t6, $v0, 1 -/* 0B9574 800B8974 01C20019 */ multu $t6, $v0 -/* 0B9578 800B8978 00024080 */ sll $t0, $v0, 2 -/* 0B957C 800B897C 3C07800E */ lui $a3, %hi(D_800E3070) # $a3, 0x800e -/* 0B9580 800B8980 3C09800E */ lui $t1, %hi(D_800E3078) # $t1, 0x800e -/* 0B9584 800B8984 01024021 */ addu $t0, $t0, $v0 -/* 0B9588 800B8988 00084040 */ sll $t0, $t0, 1 -/* 0B958C 800B898C 25293078 */ addiu $t1, %lo(D_800E3078) # addiu $t1, $t1, 0x3078 -/* 0B9590 800B8990 24E73070 */ addiu $a3, %lo(D_800E3070) # addiu $a3, $a3, 0x3070 -/* 0B9594 800B8994 2484A028 */ addiu $a0, %lo(D_8012A028) # addiu $a0, $a0, -0x5fd8 -/* 0B9598 800B8998 0000A812 */ mflo $s5 -/* 0B959C 800B899C 00151880 */ sll $v1, $s5, 2 -/* 0B95A0 800B89A0 00751821 */ addu $v1, $v1, $s5 -/* 0B95A4 800B89A4 00031840 */ sll $v1, $v1, 1 +/* B9560 800B8960 0C02F1B2 */ jal func_800BC6C8 +/* B9564 800B8964 00000000 */ nop +/* B9568 800B8968 8E820000 */ lw $v0, 0x0($s4) +/* B956C 800B896C 3C048013 */ lui $a0, %hi(D_8012A028) +/* B9570 800B8970 244E0001 */ addiu $t6, $v0, 0x1 +/* B9574 800B8974 01C20019 */ multu $t6, $v0 +/* B9578 800B8978 00024080 */ sll $t0, $v0, 2 +/* B957C 800B897C 3C07800E */ lui $a3, %hi(D_800E3070) +/* B9580 800B8980 3C09800E */ lui $t1, %hi(D_800E3078) +/* B9584 800B8984 01024021 */ addu $t0, $t0, $v0 +/* B9588 800B8988 00084040 */ sll $t0, $t0, 1 +/* B958C 800B898C 25293078 */ addiu $t1, $t1, %lo(D_800E3078) +/* B9590 800B8990 24E73070 */ addiu $a3, $a3, %lo(D_800E3070) +/* B9594 800B8994 2484A028 */ addiu $a0, $a0, %lo(D_8012A028) +/* B9598 800B8998 0000A812 */ mflo $s5 +/* B959C 800B899C 00151880 */ sll $v1, $s5, 2 +/* B95A0 800B89A0 00751821 */ addu $v1, $v1, $s5 +/* B95A4 800B89A4 00031840 */ sll $v1, $v1, 1 .L800B89A8: -/* 0B95A8 800B89A8 8CE50000 */ lw $a1, ($a3) -/* 0B95AC 800B89AC 24E70004 */ addiu $a3, $a3, 4 -/* 0B95B0 800B89B0 84AC0000 */ lh $t4, ($a1) -/* 0B95B4 800B89B4 A4800002 */ sh $zero, 2($a0) -/* 0B95B8 800B89B8 A48C0000 */ sh $t4, ($a0) -/* 0B95BC 800B89BC 84AD0004 */ lh $t5, 4($a1) -/* 0B95C0 800B89C0 00A81021 */ addu $v0, $a1, $t0 -/* 0B95C4 800B89C4 A48D0004 */ sh $t5, 4($a0) -/* 0B95C8 800B89C8 90AF0006 */ lbu $t7, 6($a1) -/* 0B95CC 800B89CC 00A33021 */ addu $a2, $a1, $v1 -/* 0B95D0 800B89D0 A08F0006 */ sb $t7, 6($a0) -/* 0B95D4 800B89D4 90B80007 */ lbu $t8, 7($a1) -/* 0B95D8 800B89D8 24840028 */ addiu $a0, $a0, 0x28 -/* 0B95DC 800B89DC A098FFDF */ sb $t8, -0x21($a0) -/* 0B95E0 800B89E0 90AA0008 */ lbu $t2, 8($a1) -/* 0B95E4 800B89E4 00000000 */ nop -/* 0B95E8 800B89E8 A08AFFE0 */ sb $t2, -0x20($a0) -/* 0B95EC 800B89EC 90B90009 */ lbu $t9, 9($a1) -/* 0B95F0 800B89F0 00000000 */ nop -/* 0B95F4 800B89F4 A099FFE1 */ sb $t9, -0x1f($a0) -/* 0B95F8 800B89F8 844B0000 */ lh $t3, ($v0) -/* 0B95FC 800B89FC A480FFE4 */ sh $zero, -0x1c($a0) -/* 0B9600 800B8A00 A48BFFE2 */ sh $t3, -0x1e($a0) -/* 0B9604 800B8A04 844E0004 */ lh $t6, 4($v0) -/* 0B9608 800B8A08 00000000 */ nop -/* 0B960C 800B8A0C A48EFFE6 */ sh $t6, -0x1a($a0) -/* 0B9610 800B8A10 904C0006 */ lbu $t4, 6($v0) -/* 0B9614 800B8A14 00000000 */ nop -/* 0B9618 800B8A18 A08CFFE8 */ sb $t4, -0x18($a0) -/* 0B961C 800B8A1C 904D0007 */ lbu $t5, 7($v0) -/* 0B9620 800B8A20 00000000 */ nop -/* 0B9624 800B8A24 A08DFFE9 */ sb $t5, -0x17($a0) -/* 0B9628 800B8A28 904F0008 */ lbu $t7, 8($v0) -/* 0B962C 800B8A2C 00000000 */ nop -/* 0B9630 800B8A30 A08FFFEA */ sb $t7, -0x16($a0) -/* 0B9634 800B8A34 90580009 */ lbu $t8, 9($v0) -/* 0B9638 800B8A38 00157880 */ sll $t7, $s5, 2 -/* 0B963C 800B8A3C A098FFEB */ sb $t8, -0x15($a0) -/* 0B9640 800B8A40 84CA0000 */ lh $t2, ($a2) -/* 0B9644 800B8A44 A480FFEE */ sh $zero, -0x12($a0) -/* 0B9648 800B8A48 A48AFFEC */ sh $t2, -0x14($a0) -/* 0B964C 800B8A4C 84D90004 */ lh $t9, 4($a2) -/* 0B9650 800B8A50 01F57821 */ addu $t7, $t7, $s5 -/* 0B9654 800B8A54 A499FFF0 */ sh $t9, -0x10($a0) -/* 0B9658 800B8A58 90CB0006 */ lbu $t3, 6($a2) -/* 0B965C 800B8A5C 000F7840 */ sll $t7, $t7, 1 -/* 0B9660 800B8A60 A08BFFF2 */ sb $t3, -0xe($a0) -/* 0B9664 800B8A64 90CE0007 */ lbu $t6, 7($a2) -/* 0B9668 800B8A68 00AFC021 */ addu $t8, $a1, $t7 -/* 0B966C 800B8A6C A08EFFF3 */ sb $t6, -0xd($a0) -/* 0B9670 800B8A70 90CC0008 */ lbu $t4, 8($a2) -/* 0B9674 800B8A74 03081021 */ addu $v0, $t8, $t0 -/* 0B9678 800B8A78 A08CFFF4 */ sb $t4, -0xc($a0) -/* 0B967C 800B8A7C 90CD0009 */ lbu $t5, 9($a2) -/* 0B9680 800B8A80 00000000 */ nop -/* 0B9684 800B8A84 A08DFFF5 */ sb $t5, -0xb($a0) -/* 0B9688 800B8A88 844A0000 */ lh $t2, ($v0) -/* 0B968C 800B8A8C A480FFF8 */ sh $zero, -8($a0) -/* 0B9690 800B8A90 A48AFFF6 */ sh $t2, -0xa($a0) -/* 0B9694 800B8A94 84590004 */ lh $t9, 4($v0) -/* 0B9698 800B8A98 00000000 */ nop -/* 0B969C 800B8A9C A499FFFA */ sh $t9, -6($a0) -/* 0B96A0 800B8AA0 904B0006 */ lbu $t3, 6($v0) -/* 0B96A4 800B8AA4 00000000 */ nop -/* 0B96A8 800B8AA8 A08BFFFC */ sb $t3, -4($a0) -/* 0B96AC 800B8AAC 904E0007 */ lbu $t6, 7($v0) -/* 0B96B0 800B8AB0 00000000 */ nop -/* 0B96B4 800B8AB4 A08EFFFD */ sb $t6, -3($a0) -/* 0B96B8 800B8AB8 904C0008 */ lbu $t4, 8($v0) -/* 0B96BC 800B8ABC 00000000 */ nop -/* 0B96C0 800B8AC0 A08CFFFE */ sb $t4, -2($a0) -/* 0B96C4 800B8AC4 904D0009 */ lbu $t5, 9($v0) -/* 0B96C8 800B8AC8 14E9FFB7 */ bne $a3, $t1, .L800B89A8 -/* 0B96CC 800B8ACC A08DFFFF */ sb $t5, -1($a0) -/* 0B96D0 800B8AD0 8FA40070 */ lw $a0, 0x70($sp) -/* 0B96D4 800B8AD4 0C02F31C */ jal func_800BCC70 -/* 0B96D8 800B8AD8 00000000 */ nop -/* 0B96DC 800B8ADC 8E8F0024 */ lw $t7, 0x24($s4) -/* 0B96E0 800B8AE0 24010003 */ li $at, 3 -/* 0B96E4 800B8AE4 15E1000A */ bne $t7, $at, .L800B8B10 -/* 0B96E8 800B8AE8 24190005 */ li $t9, 5 -/* 0B96EC 800B8AEC 3C18800E */ lui $t8, %hi(D_800E30E8) # $t8, 0x800e -/* 0B96F0 800B8AF0 271830E8 */ addiu $t8, %lo(D_800E30E8) # addiu $t8, $t8, 0x30e8 -/* 0B96F4 800B8AF4 3C01800E */ lui $at, %hi(D_800E30E0) # $at, 0x800e -/* 0B96F8 800B8AF8 AC3830E0 */ sw $t8, %lo(D_800E30E0)($at) -/* 0B96FC 800B8AFC 3C0A800E */ lui $t2, %hi(D_800E30FC) # $t2, 0x800e -/* 0B9700 800B8B00 254A30FC */ addiu $t2, %lo(D_800E30FC) # addiu $t2, $t2, 0x30fc -/* 0B9704 800B8B04 3C01800E */ lui $at, %hi(D_800E30E4) # $at, 0x800e -/* 0B9708 800B8B08 1000000A */ b .L800B8B34 -/* 0B970C 800B8B0C AC2A30E4 */ sw $t2, %lo(D_800E30E4)($at) +/* B95A8 800B89A8 8CE50000 */ lw $a1, 0x0($a3) +/* B95AC 800B89AC 24E70004 */ addiu $a3, $a3, 0x4 +/* B95B0 800B89B0 84AC0000 */ lh $t4, 0x0($a1) +/* B95B4 800B89B4 A4800002 */ sh $zero, 0x2($a0) +/* B95B8 800B89B8 A48C0000 */ sh $t4, 0x0($a0) +/* B95BC 800B89BC 84AD0004 */ lh $t5, 0x4($a1) +/* B95C0 800B89C0 00A81021 */ addu $v0, $a1, $t0 +/* B95C4 800B89C4 A48D0004 */ sh $t5, 0x4($a0) +/* B95C8 800B89C8 90AF0006 */ lbu $t7, 0x6($a1) +/* B95CC 800B89CC 00A33021 */ addu $a2, $a1, $v1 +/* B95D0 800B89D0 A08F0006 */ sb $t7, 0x6($a0) +/* B95D4 800B89D4 90B80007 */ lbu $t8, 0x7($a1) +/* B95D8 800B89D8 24840028 */ addiu $a0, $a0, 0x28 +/* B95DC 800B89DC A098FFDF */ sb $t8, -0x21($a0) +/* B95E0 800B89E0 90AA0008 */ lbu $t2, 0x8($a1) +/* B95E4 800B89E4 00000000 */ nop +/* B95E8 800B89E8 A08AFFE0 */ sb $t2, -0x20($a0) +/* B95EC 800B89EC 90B90009 */ lbu $t9, 0x9($a1) +/* B95F0 800B89F0 00000000 */ nop +/* B95F4 800B89F4 A099FFE1 */ sb $t9, -0x1F($a0) +/* B95F8 800B89F8 844B0000 */ lh $t3, 0x0($v0) +/* B95FC 800B89FC A480FFE4 */ sh $zero, -0x1C($a0) +/* B9600 800B8A00 A48BFFE2 */ sh $t3, -0x1E($a0) +/* B9604 800B8A04 844E0004 */ lh $t6, 0x4($v0) +/* B9608 800B8A08 00000000 */ nop +/* B960C 800B8A0C A48EFFE6 */ sh $t6, -0x1A($a0) +/* B9610 800B8A10 904C0006 */ lbu $t4, 0x6($v0) +/* B9614 800B8A14 00000000 */ nop +/* B9618 800B8A18 A08CFFE8 */ sb $t4, -0x18($a0) +/* B961C 800B8A1C 904D0007 */ lbu $t5, 0x7($v0) +/* B9620 800B8A20 00000000 */ nop +/* B9624 800B8A24 A08DFFE9 */ sb $t5, -0x17($a0) +/* B9628 800B8A28 904F0008 */ lbu $t7, 0x8($v0) +/* B962C 800B8A2C 00000000 */ nop +/* B9630 800B8A30 A08FFFEA */ sb $t7, -0x16($a0) +/* B9634 800B8A34 90580009 */ lbu $t8, 0x9($v0) +/* B9638 800B8A38 00157880 */ sll $t7, $s5, 2 +/* B963C 800B8A3C A098FFEB */ sb $t8, -0x15($a0) +/* B9640 800B8A40 84CA0000 */ lh $t2, 0x0($a2) +/* B9644 800B8A44 A480FFEE */ sh $zero, -0x12($a0) +/* B9648 800B8A48 A48AFFEC */ sh $t2, -0x14($a0) +/* B964C 800B8A4C 84D90004 */ lh $t9, 0x4($a2) +/* B9650 800B8A50 01F57821 */ addu $t7, $t7, $s5 +/* B9654 800B8A54 A499FFF0 */ sh $t9, -0x10($a0) +/* B9658 800B8A58 90CB0006 */ lbu $t3, 0x6($a2) +/* B965C 800B8A5C 000F7840 */ sll $t7, $t7, 1 +/* B9660 800B8A60 A08BFFF2 */ sb $t3, -0xE($a0) +/* B9664 800B8A64 90CE0007 */ lbu $t6, 0x7($a2) +/* B9668 800B8A68 00AFC021 */ addu $t8, $a1, $t7 +/* B966C 800B8A6C A08EFFF3 */ sb $t6, -0xD($a0) +/* B9670 800B8A70 90CC0008 */ lbu $t4, 0x8($a2) +/* B9674 800B8A74 03081021 */ addu $v0, $t8, $t0 +/* B9678 800B8A78 A08CFFF4 */ sb $t4, -0xC($a0) +/* B967C 800B8A7C 90CD0009 */ lbu $t5, 0x9($a2) +/* B9680 800B8A80 00000000 */ nop +/* B9684 800B8A84 A08DFFF5 */ sb $t5, -0xB($a0) +/* B9688 800B8A88 844A0000 */ lh $t2, 0x0($v0) +/* B968C 800B8A8C A480FFF8 */ sh $zero, -0x8($a0) +/* B9690 800B8A90 A48AFFF6 */ sh $t2, -0xA($a0) +/* B9694 800B8A94 84590004 */ lh $t9, 0x4($v0) +/* B9698 800B8A98 00000000 */ nop +/* B969C 800B8A9C A499FFFA */ sh $t9, -0x6($a0) +/* B96A0 800B8AA0 904B0006 */ lbu $t3, 0x6($v0) +/* B96A4 800B8AA4 00000000 */ nop +/* B96A8 800B8AA8 A08BFFFC */ sb $t3, -0x4($a0) +/* B96AC 800B8AAC 904E0007 */ lbu $t6, 0x7($v0) +/* B96B0 800B8AB0 00000000 */ nop +/* B96B4 800B8AB4 A08EFFFD */ sb $t6, -0x3($a0) +/* B96B8 800B8AB8 904C0008 */ lbu $t4, 0x8($v0) +/* B96BC 800B8ABC 00000000 */ nop +/* B96C0 800B8AC0 A08CFFFE */ sb $t4, -0x2($a0) +/* B96C4 800B8AC4 904D0009 */ lbu $t5, 0x9($v0) +/* B96C8 800B8AC8 14E9FFB7 */ bne $a3, $t1, .L800B89A8 +/* B96CC 800B8ACC A08DFFFF */ sb $t5, -0x1($a0) +/* B96D0 800B8AD0 8FA40070 */ lw $a0, 0x70($sp) +/* B96D4 800B8AD4 0C02F31C */ jal func_800BCC70 +/* B96D8 800B8AD8 00000000 */ nop +/* B96DC 800B8ADC 8E8F0024 */ lw $t7, 0x24($s4) +/* B96E0 800B8AE0 24010003 */ addiu $at, $zero, 0x3 +/* B96E4 800B8AE4 15E1000A */ bne $t7, $at, .L800B8B10 +/* B96E8 800B8AE8 24190005 */ addiu $t9, $zero, 0x5 +/* B96EC 800B8AEC 3C18800E */ lui $t8, %hi(D_800E30E8) +/* B96F0 800B8AF0 271830E8 */ addiu $t8, $t8, %lo(D_800E30E8) +/* B96F4 800B8AF4 3C01800E */ lui $at, %hi(D_800E30E0) +/* B96F8 800B8AF8 AC3830E0 */ sw $t8, %lo(D_800E30E0)($at) +/* B96FC 800B8AFC 3C0A800E */ lui $t2, %hi(D_800E30FC) +/* B9700 800B8B00 254A30FC */ addiu $t2, $t2, %lo(D_800E30FC) +/* B9704 800B8B04 3C01800E */ lui $at, %hi(D_800E30E4) +/* B9708 800B8B08 1000000A */ b .L800B8B34 +/* B970C 800B8B0C AC2A30E4 */ sw $t2, %lo(D_800E30E4)($at) .L800B8B10: -/* 0B9710 800B8B10 3C0B800E */ lui $t3, %hi(D_800E3110) # $t3, 0x800e -/* 0B9714 800B8B14 AE990024 */ sw $t9, 0x24($s4) -/* 0B9718 800B8B18 256B3110 */ addiu $t3, %lo(D_800E3110) # addiu $t3, $t3, 0x3110 -/* 0B971C 800B8B1C 3C01800E */ lui $at, %hi(D_800E30E0) # $at, 0x800e -/* 0B9720 800B8B20 AC2B30E0 */ sw $t3, %lo(D_800E30E0)($at) -/* 0B9724 800B8B24 3C0E800E */ lui $t6, %hi(D_800E3144) # $t6, 0x800e -/* 0B9728 800B8B28 25CE3144 */ addiu $t6, %lo(D_800E3144) # addiu $t6, $t6, 0x3144 -/* 0B972C 800B8B2C 3C01800E */ lui $at, %hi(D_800E30E4) # $at, 0x800e -/* 0B9730 800B8B30 AC2E30E4 */ sw $t6, %lo(D_800E30E4)($at) +/* B9710 800B8B10 3C0B800E */ lui $t3, %hi(D_800E3110) +/* B9714 800B8B14 AE990024 */ sw $t9, 0x24($s4) +/* B9718 800B8B18 256B3110 */ addiu $t3, $t3, %lo(D_800E3110) +/* B971C 800B8B1C 3C01800E */ lui $at, %hi(D_800E30E0) +/* B9720 800B8B20 AC2B30E0 */ sw $t3, %lo(D_800E30E0)($at) +/* B9724 800B8B24 3C0E800E */ lui $t6, %hi(D_800E3144) +/* B9728 800B8B28 25CE3144 */ addiu $t6, $t6, %lo(D_800E3144) +/* B972C 800B8B2C 3C01800E */ lui $at, %hi(D_800E30E4) +/* B9730 800B8B30 AC2E30E4 */ sw $t6, %lo(D_800E30E4)($at) .L800B8B34: -/* 0B9734 800B8B34 3C01800E */ lui $at, %hi(D_800E3188) # $at, 0x800e -/* 0B9738 800B8B38 AC203188 */ sw $zero, %lo(D_800E3188)($at) -/* 0B973C 800B8B3C 3C018013 */ lui $at, %hi(D_8012A728) # $at, 0x8013 -/* 0B9740 800B8B40 AC20A728 */ sw $zero, %lo(D_8012A728)($at) -/* 0B9744 800B8B44 3C01800E */ lui $at, %hi(gWaveGeneratorObj) # $at, 0x800e -/* 0B9748 800B8B48 8FBF0044 */ lw $ra, 0x44($sp) -/* 0B974C 800B8B4C AC203198 */ sw $zero, %lo(gWaveGeneratorObj)($at) -/* 0B9750 800B8B50 3C018013 */ lui $at, %hi(D_8012A018) # $at, 0x8013 -/* 0B9754 800B8B54 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 0B9758 800B8B58 C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 0B975C 800B8B5C 8FB00020 */ lw $s0, 0x20($sp) -/* 0B9760 800B8B60 8FB10024 */ lw $s1, 0x24($sp) -/* 0B9764 800B8B64 8FB20028 */ lw $s2, 0x28($sp) -/* 0B9768 800B8B68 8FB3002C */ lw $s3, 0x2c($sp) -/* 0B976C 800B8B6C 8FB40030 */ lw $s4, 0x30($sp) -/* 0B9770 800B8B70 8FB50034 */ lw $s5, 0x34($sp) -/* 0B9774 800B8B74 8FB60038 */ lw $s6, 0x38($sp) -/* 0B9778 800B8B78 8FB7003C */ lw $s7, 0x3c($sp) -/* 0B977C 800B8B7C 8FBE0040 */ lw $fp, 0x40($sp) -/* 0B9780 800B8B80 AC20A018 */ sw $zero, %lo(D_8012A018)($at) -/* 0B9784 800B8B84 03E00008 */ jr $ra -/* 0B9788 800B8B88 27BD0070 */ addiu $sp, $sp, 0x70 - +/* B9734 800B8B34 3C01800E */ lui $at, %hi(D_800E3188) +/* B9738 800B8B38 AC203188 */ sw $zero, %lo(D_800E3188)($at) +/* B973C 800B8B3C 3C018013 */ lui $at, %hi(D_8012A728) +/* B9740 800B8B40 AC20A728 */ sw $zero, %lo(D_8012A728)($at) +/* B9744 800B8B44 3C01800E */ lui $at, %hi(gWaveGeneratorObj) +/* B9748 800B8B48 8FBF0044 */ lw $ra, 0x44($sp) +/* B974C 800B8B4C AC203198 */ sw $zero, %lo(gWaveGeneratorObj)($at) +/* B9750 800B8B50 3C018013 */ lui $at, %hi(D_8012A018) +/* B9754 800B8B54 C7B50018 */ lwc1 $f21, 0x18($sp) +/* B9758 800B8B58 C7B4001C */ lwc1 $f20, 0x1C($sp) +/* B975C 800B8B5C 8FB00020 */ lw $s0, 0x20($sp) +/* B9760 800B8B60 8FB10024 */ lw $s1, 0x24($sp) +/* B9764 800B8B64 8FB20028 */ lw $s2, 0x28($sp) +/* B9768 800B8B68 8FB3002C */ lw $s3, 0x2C($sp) +/* B976C 800B8B6C 8FB40030 */ lw $s4, 0x30($sp) +/* B9770 800B8B70 8FB50034 */ lw $s5, 0x34($sp) +/* B9774 800B8B74 8FB60038 */ lw $s6, 0x38($sp) +/* B9778 800B8B78 8FB7003C */ lw $s7, 0x3C($sp) +/* B977C 800B8B7C 8FBE0040 */ lw $fp, 0x40($sp) +/* B9780 800B8B80 AC20A018 */ sw $zero, %lo(D_8012A018)($at) +/* B9784 800B8B84 03E00008 */ jr $ra +/* B9788 800B8B88 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/include/level_object_entries.h b/include/level_object_entries.h index c5b17073..2ea6dd80 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -157,6 +157,9 @@ typedef struct LevelObjectEntry_Door { /* 0x10 */ u8 unk10; /* 0x11 */ s8 unk11; /* 0x12 */ u8 scale; + /* 0x13 */ s8 unk13; + /* 0x14 */ s8 unk14; + /* 0x15 */ u8 unk15; } LevelObjectEntry_Door; typedef struct LevelObjectEntry_FogChanger { diff --git a/include/object_properties.h b/include/object_properties.h index d874e66e..7736e1b6 100644 --- a/include/object_properties.h +++ b/include/object_properties.h @@ -154,6 +154,13 @@ typedef struct ObjPropertySetupPoint { s32 unk4; } ObjPropertySetupPoint; +typedef struct ObjPropertyWeapon { + s32 unk0; + u8 unk4; + u8 unk5; + s16 unk6; +} ObjPropertyWeapon; + typedef struct ObjProperties { union { ObjPropertyCommon common; @@ -185,6 +192,7 @@ typedef struct ObjProperties { ObjPropertyWeaponBalloon weaponBalloon; ObjPropertyRacer racer; ObjPropertySetupPoint setupPoint; + ObjPropertyWeapon weapon; }; } ObjProperties; diff --git a/include/structs.h b/include/structs.h index 58499c45..869106ca 100644 --- a/include/structs.h +++ b/include/structs.h @@ -421,10 +421,34 @@ typedef struct LevelHeader { /* 0x52 */ u8 music; /* 0x53 */ u8 unk53; /* 0x54 */ u16 instruments; + /* 0x56 */ u8 unk56; + /* 0x57 */ u8 unk57; + /* 0x58 */ u8 unk58; + /* 0x59 */ u8 unk59; + /* 0x5A */ s16 unk5A; + /* 0x5C */ u8 unk5C; + /* 0x5D */ u8 unk5D; + /* 0x5E */ s16 unk5E; + /* 0x60 */ s16 unk60; + /* 0x62 */ s16 unk62; + /* 0x64 */ s16 unk64; + /* 0x66 */ s16 unk66; + /* 0x68 */ s16 unk68; + /* 0x6A */ u8 unk6A; + /* 0x6B */ u8 unk6B; + /* 0x6C */ s8 unk6C; + /* 0x6D */ s8 unk6D; + /* 0x6E */ s16 unk6E; - /* 0x56 */ u8 pad56[0x1A]; - + //func_800B8134 Seems to use this struct, and it differs on unk70 only. + union { /* 0x70 */ LevelHeader_70 *unk70; + struct { + /* 0x70 */ u8 unk70_u8; + /* 0x71 */ u8 unk71; + }; + }; + /* 0x74 */ LevelHeader_70 *unk74[7]; // Weather related? @@ -1004,9 +1028,9 @@ typedef struct Object_Fish { /* 0x0F8 */ TextureHeader *texture; /* 0x0FC */ u8 unkFC; /* 0x0FD */ u8 unkFD; - /* 0x0FE */ u8 unkFE; - /* 0x0FF */ u8 unkFF; - /* 0x100 */ s32 unk100; + /* 0x0FE */ s16 unkFE; + /* 0x100 */ s16 unk100; + /* 0x102 */ s16 unk102; /* 0x104 */ s16 unk104; /* 0x106 */ s16 unk106; /* 0x108 */ f32 unk108; @@ -1390,16 +1414,16 @@ typedef struct Object_Racer { typedef struct Object_Door { /* 0x00 */ f32 homeY; - /* 0x04 */ u8 pad4[0x4]; + /* 0x04 */ SoundMask *unk4; /* 0x08 */ s32 unk8; - /* 0x0A */ s16 padA; + /* 0x0A */ s16 unkA; /* 0x0E */ s8 unkE; /* 0x0F */ u8 unkF; /* 0x10 */ u8 unk10; /* 0x11 */ u8 unk11; /* 0x12 */ u8 unk12; - /* 0x13 */ u8 unk13; - /* 0x14 */ s8 unk14; + /* 0x13 */ s8 unk13; + /* 0x14 */ s8 unk14[4]; } Object_Door; typedef struct Object_Trigger { @@ -1582,7 +1606,9 @@ typedef struct Object_8001E89C_64 { typedef struct Object_CharacterSelect { u8 pad0[0x14]; f32 unk14; - u8 pad18[0x14]; + u8 pad18[0x10]; + s16 unk28; + u8 unk2A[2]; u8 unk2C; u8 pad2D[2]; u8 unk2F; diff --git a/src/game_text.h b/src/game_text.h index 7107ffe6..b4e74f02 100644 --- a/src/game_text.h +++ b/src/game_text.h @@ -65,7 +65,7 @@ void process_onscreen_textbox(s32 arg0); void find_next_subtitle(void); s32 func_800C38B4(s32 arg0, TextBox *textbox); void render_subtitles(void); -void set_current_text(s32 arg0); +void set_current_text(s32 textID); s32 dialogue_challenge_loop(void); #endif diff --git a/src/math_util.c b/src/math_util.c index acc59802..57924829 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -162,15 +162,23 @@ void set_rng_seed(s32 num) { gCurrentRNGSeed = num; } -void save_rng_seed(s32 num) { - num = gCurrentRNGSeed; +#ifdef NON_MATCHING +void save_rng_seed(void) { + s32 num = gCurrentRNGSeed; gPrevRNGSeed = num; } +#else +GLOBAL_ASM("asm/math_util/save_rng_seed.s") +#endif -void load_rng_seed(s32 num) { - num = gPrevRNGSeed; +#ifdef NON_MATCHING +void load_rng_seed(void) { + s32 num = gPrevRNGSeed; gCurrentRNGSeed = num; } +#else +GLOBAL_ASM("asm/math_util/load_rng_seed.s") +#endif s32 get_rng_seed(void) { return gCurrentRNGSeed; diff --git a/src/math_util.h b/src/math_util.h index 131cba28..388d4afb 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -29,8 +29,8 @@ s32 coss(s16 angle); s32 sins(s16 angle); s32 sins_2(s16 angle); void set_rng_seed(s32 num); -void save_rng_seed(s32 num); -void load_rng_seed(s32 num); +void save_rng_seed(void); +void load_rng_seed(void); s32 get_rng_seed(void); s32 get_random_number_from_range(s32, s32); void f32_matrix_to_s32_matrix(Matrix *input, MatrixS *output); diff --git a/src/object_functions.c b/src/object_functions.c index cadda2fc..feac1b49 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -70,22 +70,29 @@ u16 D_800DC9D0[64] = { 0x0002, 0x0504, 0x0001, 0x0000, 0x0000, 0x0004, 0x0000, 0x0000, }; -s8 D_800DCA50[8] = { +u8 D_800DCA50[8] = { 2, 5, 6, 3, 10, 8, 7, 9 }; u8 D_800DCA58[9] = { 2, 5, 6, 3, 10, 8, 7, 9, 11 }; -s8 D_800DCA64[9] = { +u8 D_800DCA64[9] = { 2, 5, 6, 3, 10, 8, 7, 9, 12 }; -s8 D_800DCA70[10] = { +u8 D_800DCA70[10] = { 2, 5, 6, 3, 10, 8, 7, 9, 11, 12 }; -s32 D_800DCA7C[3] = { // Not sure about typing +u8 D_800DCA7C[12] = { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, 0, 0, 0 }; -s32 D_800DCA88[3] = { // Not sure about typing + +u8 D_800DCA88[12] = { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, 0, 0, 0 }; @@ -670,7 +677,7 @@ void obj_loop_trophycab(Object *obj, s32 updateRate) { } } } - if (gfxData->unk0 && music_jingle_playing() == 0) { + if (gfxData->unk0 && music_jingle_playing() == SEQUENCE_NONE) { if (updateRate < gfxData->unk0) { gfxData->unk0 -= updateRate; } else { @@ -1416,7 +1423,96 @@ void play_tt_voice_clip(u16 soundID, s32 interrupt) { } GLOBAL_ASM("asm/non_matchings/object_functions/obj_init_fish.s") -GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_fish.s") + +void obj_loop_fish(Object *fishObj, s32 updateRate) { + f32 zThing; + f32 yThing; + f32 xThing; + f32 xDiff; + f32 yDiff; + f32 zDiff; + f32 dist2D; + f32 dist3D; + f32 sinUnk104; + Object_Fish *fish; + f32 cosUnk104; + s16 temp_v0_2; + s32 temp_s0_2; + s32 temp_t1; + s32 temp_t9; + f32 prevXThing, prevZThing; + Vertex *verts; + s32 randNumber; + + if (get_viewport_count() > 0) { + free_object(fishObj); + return; + } + fish = &fishObj->unk64->fish; + yThing = fishObj->segment.trans.y_position; + if (fish->unkFD != 0) { + if ((s32) fish->unkFD >= updateRate) { + yThing += (fishObj->segment.y_velocity * updateRate); + fish->unkFD = fish->unkFD - updateRate; + } else { + yThing += (fishObj->segment.y_velocity * fish->unkFD); + fish->unkFD = 0; + } + } else { + randNumber = get_random_number_from_range(0, 7); + if (randNumber == 0 && fish->unk118 >= 1.0f) { + fish->unkFD = get_random_number_from_range(160, 255); + randNumber = get_random_number_from_range(0, fish->unk118); + fishObj->segment.y_velocity = fish->unk10C - fishObj->segment.trans.y_position; + fishObj->segment.y_velocity = (fishObj->segment.trans.y_position < fish->unk10C) ? (fishObj->segment.y_velocity + randNumber) : + (fishObj->segment.y_velocity - randNumber); + fishObj->segment.y_velocity /= fish->unkFD; + } + } + fish->unkFE += updateRate * fish->unk100; + zThing = sins_f(fish->unkFE * 2) * fish->unk114; + xThing = coss_f(fish->unkFE) * fish->unk114; + sinUnk104 = sins_f(fish->unk104); + cosUnk104 = coss_f(fish->unk104); + dist3D += 0; // Fakematch + prevXThing = zThing; + prevZThing = xThing; + zThing = prevXThing; // Fakematch? + zThing = (zThing * cosUnk104) + (prevZThing * sinUnk104); + xThing = (prevZThing * cosUnk104) - (prevXThing * sinUnk104); + zThing += fish->unk108; + xThing += fish->unk110; + xDiff = fishObj->segment.trans.x_position - zThing; + yDiff = fishObj->segment.trans.y_position - yThing; + zDiff = fishObj->segment.trans.z_position - xThing; + fishObj->segment.trans.x_position = 0.0f; + fishObj->segment.trans.y_position = 0.0f; + fishObj->segment.trans.z_position = 0.0f; + ignore_bounds_check(); + move_object(fishObj, zThing, yThing, xThing); + dist2D = (xDiff * xDiff) + (zDiff * zDiff); + dist3D = sqrtf((yDiff * yDiff) + dist2D); + dist2D = sqrtf(dist2D); + fish->unk106 += (s32) (dist3D * 0x600); + fishObj->segment.trans.y_rotation = arctan2_f(xDiff, zDiff); + temp_v0_2 = arctan2_f(-yDiff, dist2D); + temp_t9 = (temp_v0_2 - fishObj->segment.trans.x_rotation) & 0xFFFF; + temp_t1 = (fishObj->segment.trans.x_rotation - temp_v0_2) & 0xFFFF; + if (temp_t9 < temp_t1) { + fishObj->segment.trans.x_rotation += ((temp_t9 * updateRate) >> 3); + } else { + fishObj->segment.trans.x_rotation -= ((temp_t1 * updateRate) >> 3); + } + fish->unkFC = 1 - fish->unkFC; + verts = &fish->vertices[fish->unkFC * 6]; + randNumber = sins(fish->unk106) >> 3; + temp_s0_2 = (s32) (coss_f(randNumber) * 32); + temp_t1 = (s32) (sins_f(randNumber) * 32); + verts[4].x = (verts[2].x + temp_t1); + verts[4].z = (verts[2].z + temp_s0_2); + verts[5].x = (verts[3].x + temp_t1); + verts[5].z = (verts[3].z + temp_s0_2); +} /** * Lava Spurt init behaviour. @@ -1829,7 +1925,102 @@ void obj_loop_snowball(Object *obj, s32 updateRate) { UNUSED void obj_init_char_select(UNUSED s32 arg0, UNUSED s32 arg1) { } -GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_char_select.s") +void obj_loop_char_select(Object *charSelectObj, s32 updateRate) { + s32 i2; + s32 i; + f32 temp_f0; + ObjectModel *objMdl; + Object_CharacterSelect *charSelect; + s32 var_a0; + s32 var_s0; + s8 *var_v0; + Object_68 *obj68; + u8 sp50[4]; + u8 sp4F; + u8 *var_a2; + + var_s0 = 0; + func_8001F460(charSelectObj, updateRate, NULL); + charSelect = &charSelectObj->unk64->characterSelect; + charSelectObj->unk74 = 0; + if (charSelect != NULL) { + obj68 = charSelectObj->unk68[charSelectObj->segment.object.modelIndex]; + if (obj68 != NULL) { + objMdl = obj68->objModel; + if (is_drumstick_unlocked()) { + if (is_tt_unlocked()) { + var_a2 = D_800DCA70; + var_a0 = 10; + } else { + var_a2 = D_800DCA58; + var_a0 = 9; + } + } else if (is_tt_unlocked()) { + var_a2 = D_800DCA64; + var_a0 = 9; + } else { + var_a2 = D_800DCA50; + var_a0 = 8; + } + + for (i = 0; i < var_a0 && !var_s0; i++) { + if (charSelect->unk28 == var_a2[i]) { + var_s0 = 1; + } + } + i--; + if (var_s0) { + charSelectObj->segment.object.animationID = 1; + for(var_s0 = 0, sp4F = 0; var_s0 < MAXCONTROLLERS; var_s0++) { + if (get_player_character(var_s0) == i) { + sp50[sp4F++] = var_s0; + } + } + D_800DCA7C[i] += updateRate; + if (D_800DCA7C[i] >= 16) { + D_800DCA7C[i] &= 0xF; + D_800DCA88[i]++; + } + if (D_800DCA88[i] >= sp4F) { + D_800DCA88[i] = 0; + } + if (sp4F > 0) { + var_v0 = func_8009C274(); + for (i2 = 0; i2 < sp4F; i2++) { + if (var_v0[sp50[i2]] == 1) { + charSelectObj->unk74 = 1; + func_800AFC3C(charSelectObj, 2); + } + } + + for (i2 = 0; i2 < objMdl->numberOfBatches; i2++) { + //Unneccessary check for textureIndex to be greater than or equal to zero since it's a u8 and can't be less. + if (objMdl->batches[i2].textureIndex >= 0 && objMdl->batches[i2].textureIndex < 4) { + objMdl->batches[i2].textureIndex = sp50[D_800DCA88[i]]; + } + } + charSelectObj->segment.object.animationID = 0; + } + } + if (charSelectObj->segment.object.animationID >= 0) { + if ((charSelectObj->segment.object.animationID < objMdl->numberOfAnimations)) { + i = (objMdl->animations[charSelectObj->segment.object.animationID].unk4 - 1) << 4; + if((charSelect->unk2C == 1)) { + temp_f0 = music_animation_fraction(); + if (temp_f0 > 0.5) { + temp_f0 -= 0.5; + temp_f0 *= 2.0; + charSelectObj->segment.animFrame = i - (temp_f0 * i); + } else { + temp_f0 *= 2; + charSelectObj->segment.animFrame = temp_f0 * i; + } + } + } + } + } + } +} void obj_loop_animcamera(Object *obj, s32 updateRate) { s32 temp_v0; @@ -3116,27 +3307,27 @@ void obj_loop_goldenballoon(Object *obj, s32 updateRate) { } void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { - Object_Door *obj64; + Object_Door *door; f32 radius; - obj64 = &obj->unk64->door; + door = &obj->unk64->door; if (entry->unkC == -1) { entry->unkC = func_8000CC20(obj); } else { func_8000CBF0(obj, entry->unkC); } - obj64->unkE = entry->unkC; - obj64->unkF = entry->unkE; - obj64->unk11 = entry->numBalloonsToOpen; - obj64->unk10 = entry->numBalloonsToOpen; - obj64->unk12 = entry->distanceToOpen; - if (obj64->unkE == -1) { + door->unkE = entry->unkC; + door->unkF = entry->unkE; + door->unk11 = entry->numBalloonsToOpen; + door->unk10 = entry->numBalloonsToOpen; + door->unk12 = entry->distanceToOpen; + if (door->unkE == -1) { rmonPrintf("Illegal door no!!!\n"); } obj->segment.object.modelIndex = entry->modelIndex; obj->segment.trans.y_rotation = U8_ANGLE_TO_U16(entry->closedRotation); - obj64->homeY = obj->segment.trans.y_position; - obj64->unk8 = 0; + door->homeY = obj->segment.trans.y_position; + door->unk8 = 0; obj->properties.door.closeAngle = obj->segment.trans.y_rotation; obj->properties.door.openAngle = (s32) ((entry->openRotation & 0x3F) << 10); radius = entry->scale & 0xFF; @@ -3145,8 +3336,8 @@ void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { } radius /= 64; obj->segment.trans.scale = obj->segment.header->scale * radius; - obj64->unk13 = (u8) entry->unkF; - obj64->unk14 = (s8) entry->unk11; + door->unk13 = (u8) entry->unkF; + door->unk14[0] = (s8) entry->unk11; obj->interactObj->flags = INTERACT_FLAGS_SOLID | INTERACT_FLAGS_UNK_0020; obj->interactObj->unk11 = 2; obj->interactObj->hitboxRadius = 20; @@ -3156,7 +3347,209 @@ void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { } } -GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_door.s") +void obj_loop_door(Object *doorObj, s32 updateRate) { + s32 temp2; + s16 temp; + volatile s32 sp54; // ??? + s32 sp50; + s32 sp4C; + Object_Racer *racer; + Object_Door *door; + Settings *settings; + Object *racerObj; + ObjectInteraction *racerObjInter; + LevelObjectEntry_Door *doorEntry; + f32 updateRateF; + UNUSED s32 pad; + s32 sp28; + + doorEntry = &doorObj->segment.level_entry->door; + updateRateF = updateRate; + if (osTvType == TV_TYPE_PAL) { + updateRateF *= 1.2; + } + settings = get_settings(); + temp2 = settings->courseFlagsPtr[settings->courseId]; + door = &doorObj->unk64->door; + if (door->unkE >= 0) { + sp54 = 0x10000 << door->unkE; + racerObjInter = doorObj->interactObj; + sp50 = racerObjInter->distance; + if (!(door->unkF & 1)) { + sp50 = 0; + } + sp28 = temp2 & sp54; + if (sp28 == 0 && racerObjInter->distance < door->unk12) { + racerObj = racerObjInter->obj; + if (racerObj != NULL && racerObj->segment.header->behaviorId == BHV_RACER) { + racer = &racerObj->unk64->racer; + if (racer->playerIndex != PLAYER_COMPUTER && racerObj == doorObj->unk5C->unk100) { + if (door->unk13 != -1 && func_800C3400() == 0 && door->unkA == 0) { + music_fade(-8); + door->unk8 = 140; + music_jingle_voicelimit_set(16); + func_80008140(); + music_jingle_play(SEQUENCE_NO_TROPHY_FOR_YOU); + set_textbox_display_value(door->unk10); + set_current_text(door->unk13 & 0xFF); + } + door->unkA = 300; + } + if (func_800C3400() != 0) { + door->unkA = 300; + } + } + } + if (door->unk8 != 0 && music_jingle_playing() == SEQUENCE_NONE) { + if (updateRate < door->unk8) { + door->unk8 -= updateRate; + } else { + door->unk8 = 0; + music_fade(8); + music_jingle_voicelimit_set(6); + func_80008168(); + } + } + if (door->unkA > 0) { + door->unkA -= updateRate; + } else { + door->unkA = 0; + } + racerObjInter = doorObj->interactObj; + sp4C = 0; + if (racerObjInter->distance < door->unk12) { + racerObj = racerObjInter->obj; + if (racerObj != NULL && racerObj->segment.header->behaviorId == BHV_RACER) { + racer = &racerObj->unk64->racer; + switch (racer->vehicleID) { + case VEHICLE_HOVERCRAFT: + sp4C = 2; + break; + case VEHICLE_PLANE: + sp4C = 4; + break; + default: + sp4C = 1; + break; + } + } + } + sp4C &= doorEntry->unk10; + if (doorEntry->common.objectID == 0x87 || doorEntry->common.objectID == 0xD7) { + if (func_800235C0() != 0) { + sp50 = 0; + } + } + if (door->unk14[1] == 0) { + if (sp4C == 0 && sp28 != 0 && sp50 < door->unk12) { + door->unk14[1] = 1; + } else if (door->unk12 + 10 < sp50) { + door->unk14[1] = -1; + } + } + temp2 = 0; + if (door->unkF & 2) { + if (sp28 != 0 && doorEntry->common.objectID == 0x19) { + if (settings->courseFlagsPtr[doorEntry->unk14] & 2) { + if (settings->worldId == WORLD_FUTURE_FUN_LAND || settings->bosses & (1 << settings->worldId)) { + door->unk10 = doorEntry->unk15; + if (door->unk10 >= 10) { + doorObj->segment.object.modelIndex = 3; + } else { + doorObj->segment.object.modelIndex = 2; + } + } else { + doorObj->segment.object.modelIndex = 0; + } + } + if (settings->courseFlagsPtr[doorEntry->unk14] & 4) { + doorObj->segment.object.modelIndex = 1; + } + } + if (door->unk14[1] == 1) { + if (doorObj->segment.trans.y_position < (door->homeY + 130.0)) { + temp2 = 1; + doorObj->segment.trans.y_position += 2.0 * updateRateF; + } + } else if(door->unk14[1] == -1) { + if (door->homeY < doorObj->segment.trans.y_position) { + temp2 = 1; + doorObj->segment.trans.y_position -= (2.0 * updateRateF); + } + } + } else { + if (doorEntry->common.objectID == 0xD7) { + doorObj->segment.object.modelIndex = 0; + if (settings->bosses & (1 << settings->worldId)) { + if (settings->balloonsPtr[settings->worldId] == 8) { + doorObj->segment.object.modelIndex = 1; + } + } + if (settings->bosses & (1 << (settings->worldId + 6))) { + doorObj->segment.object.modelIndex = 2; + } + if (settings->worldId == 5) { + temp = doorObj->segment.object.modelIndex; + if (temp < 2) { + doorObj->segment.object.modelIndex = temp + 1; + } + } + } + temp = 0; + if (door->unk14[1] == 1) { + temp = doorObj->segment.trans.y_rotation - doorObj->properties.common.unk4; + } else if (door->unk14[1] == -1) { + temp = doorObj->segment.trans.y_rotation - doorObj->properties.common.unk0; + } + temp >>= 3; + if (temp > 0x200) { + temp = 0x200; + } + if (temp < -0x200) { + temp = -0x200; + } + doorObj->segment.trans.y_rotation -= temp; + if (temp != 0) { + temp2 = 1; + } + } + if (temp2) { + if (door->unk4 == NULL) { + play_sound_at_position(SOUND_DOOR_OPEN, doorObj->segment.trans.x_position, doorObj->segment.trans.y_position, + doorObj->segment.trans.z_position, 1, &door->unk4); + } + } else { + door->unk14[1] = 0; + if (door->unk4 != NULL) { + func_800096F8((SoundMask *) (s32) door->unk4); + door->unk4 = NULL; + } + } + if (door->unk14[0] >= 0) { + sp4C = (1 << door->unk14[0]); + if (settings->keys & sp4C) { + settings->courseFlagsPtr[settings->courseId] |= sp54; + } + } else { + if (doorEntry->unk13 == 0) { + if (*settings->balloonsPtr >= door->unk10) { + settings->courseFlagsPtr[settings->courseId] |= sp54; + } else { + settings->courseFlagsPtr[settings->courseId] &= ~sp54; + } + } else if (settings->balloonsPtr[settings->worldId] >= door->unk10) { + settings->courseFlagsPtr[settings->courseId] |= sp54; + } else { + settings->courseFlagsPtr[settings->courseId] &= ~sp54; + } + } + } + doorObj->interactObj->distance = 0xFF; + doorObj->interactObj->obj = NULL; + racerObjInter = doorObj->interactObj; + racerObjInter->flags &= ~INTERACT_FLAGS_PUSHING; + doorObj->unk5C->unk100 = NULL; +} void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { Object_TTDoor *obj64; @@ -3226,7 +3619,7 @@ void obj_loop_ttdoor(Object *obj, s32 updateRate) { } } } - if (ttDoor->unk8 && music_jingle_playing() == 0) { + if (ttDoor->unk8 && music_jingle_playing() == SEQUENCE_NONE) { if (updateRate < ttDoor->unk8) { ttDoor->unk8 -= updateRate; } else { @@ -4037,53 +4430,55 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) } } -#ifdef NON_MATCHING -void obj_loop_weaponballoon(Object *obj, s32 updateRate) { - s8 currentBalloon; +void obj_loop_weaponballoon(Object *weaponBalloonObj, s32 updateRate) { + UNUSED s32 pad; Object_Racer *racer; - Object_WeaponBalloon *balloon; - s8 *balloonAsset; - s8 prevQuantity; + Object_WeaponBalloon *weaponBalloon; + s8 *powerupTable; + UNUSED s8 pad3; + s8 prevBalloonQuantity; s8 levelMask; - Object *interactObj; - s32 newvar; + Object *whatObjInteracted; + ObjectInteraction *interactObj; + s32 prevBalloonType; - balloon = (Object_WeaponBalloon *) obj->unk64; - obj->segment.trans.scale = balloon->radius * (1.0 - (balloon->unk4 / 90.0f)); - if (obj->segment.trans.scale < 0.001) { - obj->segment.trans.scale = 0.001f; + weaponBalloon = (Object_WeaponBalloon *) weaponBalloonObj->unk64; + weaponBalloonObj->segment.trans.scale = weaponBalloon->radius * (1.0 - (weaponBalloon->unk4 / 90.0f)); + if (weaponBalloonObj->segment.trans.scale < 0.001) { + weaponBalloonObj->segment.trans.scale = 0.001f; } - if (obj->segment.trans.scale < 0.1) { - obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE; + if (weaponBalloonObj->segment.trans.scale < 0.1) { + weaponBalloonObj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE; } else { - obj->segment.trans.flags &= ~OBJ_FLAGS_INVISIBLE; + weaponBalloonObj->segment.trans.flags &= ~OBJ_FLAGS_INVISIBLE; } - if (obj->properties.weaponBalloon.unk4 > 0) { - obj->unk74 = 1; - func_800AFC3C(obj, updateRate); - obj->properties.weaponBalloon.unk4 -= updateRate; + if (weaponBalloonObj->properties.weaponBalloon.unk4 > 0) { + weaponBalloonObj->unk74 = 1; + func_800AFC3C(weaponBalloonObj, updateRate); + weaponBalloonObj->properties.weaponBalloon.unk4 -= updateRate; } - if (balloon->unk4 != 0) { - if (!(balloon->unk4 == 90 && obj->interactObj->distance < 45)) { - balloon->unk4 = (balloon->unk4 - updateRate) - updateRate; + if (weaponBalloon->unk4 != 0) { + if (weaponBalloon->unk4 != 90 || weaponBalloonObj->interactObj->distance >= 45) { + weaponBalloon->unk4 = (weaponBalloon->unk4 - updateRate) - updateRate; } - if (balloon->unk4 < 0) { - balloon->unk4 = 0; + if (weaponBalloon->unk4 < 0) { + weaponBalloon->unk4 = 0; } } else { - if (obj->interactObj->distance < 45) { - interactObj = obj->interactObj->obj; - if (interactObj != NULL && interactObj->segment.header->behaviorId == BHV_RACER) { - racer = (Object_Racer *) interactObj->unk64; - if (racer->vehicleID < VEHICLE_TRICKY|| racer->playerIndex != PLAYER_COMPUTER) { - currentBalloon = racer->balloon_type; - racer->balloon_type = obj->properties.weaponBalloon.balloonID; - if (currentBalloon == racer->balloon_type && racer->balloon_quantity != 0) { + interactObj = weaponBalloonObj->interactObj; + if (interactObj->distance < 45) { + whatObjInteracted = interactObj->obj; + if (whatObjInteracted != NULL && whatObjInteracted->segment.header->behaviorId == BHV_RACER) { + racer = &whatObjInteracted->unk64->racer; + if (racer->vehicleID < VEHICLE_TRICKY || racer->playerIndex != PLAYER_COMPUTER) { + prevBalloonType = racer->balloon_type; + racer->balloon_type = weaponBalloonObj->properties.weaponBalloon.balloonID; + if (prevBalloonType == racer->balloon_type && racer->balloon_quantity != 0) { racer->balloon_level++; } else { racer->balloon_level = 0; } - // Disallow level 3 ballons in challenge mode + // Disallow level 3 balloons in challenge mode if (get_current_level_race_type() & RACETYPE_CHALLENGE) { if (racer->balloon_level > 1) { racer->balloon_level = 1; @@ -4101,48 +4496,46 @@ void obj_loop_weaponballoon(Object *obj, s32 updateRate) { racer->balloon_level = 2; levelMask = 2; } - balloonAsset = (s8 *) get_misc_asset(ASSET_MISC_12); - prevQuantity = racer->balloon_quantity; - racer->balloon_quantity = balloonAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2) + 1]; + powerupTable = (s8 *) get_misc_asset(ASSET_MISC_12); + prevBalloonQuantity = racer->balloon_quantity; + racer->balloon_quantity = powerupTable[(racer->balloon_type * 10) + (racer->balloon_level * 2) + 1]; racer->unk209 |= 1; if (get_number_of_active_players() < THREE_PLAYERS) { - obj->properties.weaponBalloon.unk4 = 0x10; + weaponBalloonObj->properties.weaponBalloon.unk4 = 16; } if (racer->playerIndex == PLAYER_COMPUTER) { - play_sound_at_position(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_BALLOON_POP, weaponBalloonObj->segment.trans.x_position, + weaponBalloonObj->segment.trans.y_position, weaponBalloonObj->segment.trans.z_position, 4, NULL); } else { if (levelMask == racer->balloon_level) { if (racer->raceFinished == FALSE) { - if (prevQuantity != racer->balloon_quantity) { + if (prevBalloonQuantity != racer->balloon_quantity) { set_time_trial_start_voice(SOUND_VOICE_TT_POWERUP, 1.0f, racer->playerIndex); - newvar = racer->balloon_level; - if (racer->balloon_level > 2) { - newvar = 2; + prevBalloonQuantity = racer->balloon_level; + if (prevBalloonQuantity > 2) { + prevBalloonQuantity = 2; } - sound_play(SOUND_COLLECT_ITEM + newvar, NULL); + sound_play(SOUND_COLLECT_ITEM + prevBalloonQuantity, NULL); } else { - play_sound_at_position(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_BALLOON_POP, weaponBalloonObj->segment.trans.x_position, + weaponBalloonObj->segment.trans.y_position, weaponBalloonObj->segment.trans.z_position, 4, NULL); } } } else if (racer->raceFinished == FALSE) { - newvar = racer->balloon_level; - if (newvar > 0) { + if (racer->balloon_level > 0) { set_time_trial_start_voice(SOUND_VOICE_TT_POWERUP, 1.0f, racer->playerIndex); } sound_play(SOUND_COLLECT_ITEM + racer->balloon_level, NULL); } } - obj->unk74 = 1; - func_800AFC3C(obj, updateRate); - balloon->unk4 = 90; + weaponBalloonObj->unk74 = 1; + func_800AFC3C(weaponBalloonObj, updateRate); + weaponBalloon->unk4 = 90; } } } } } -#else -GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_weaponballoon.s") -#endif /** * Balloon Burst Effect init behaviour. @@ -4514,7 +4907,204 @@ void play_rocket_trailing_sound(Object *obj, struct Object_Weapon *weapon, u16 s } } -GLOBAL_ASM("asm/non_matchings/object_functions/func_8003F2E8.s") +void func_8003F2E8(Object *weaponObj, s32 updateRate) { + Object *weaponInteractObj; + Object_Racer *weaponHit; + Object_Racer *weaponOwner; + Vec3f sp58; + f32 radius; + f32 updateRateF; + s32 hasCollision; + s32 var_a1; + s8 surface; + Object_Weapon *weapon; + ObjPropertyWeapon *weaponProperties; + + weapon = &weaponObj->unk64->weapon; + weaponOwner = &weapon->owner->unk64->racer; + updateRateF = (f32) updateRate; + weaponProperties = &weaponObj->properties.weapon; + if (osTvType == TV_TYPE_PAL) { + updateRateF *= 1.2; + } + if (weaponProperties->unk4 == 0) { + sp58.x = weaponObj->segment.trans.x_position + (weaponObj->segment.x_velocity * updateRateF); + sp58.y = weaponObj->segment.trans.y_position + (weaponObj->segment.y_velocity * updateRateF); + sp58.z = weaponObj->segment.trans.z_position + (weaponObj->segment.z_velocity * updateRateF); + radius = 9.0f; + func_80031130(1, &weaponObj->segment.trans.x_position, &sp58.x, -1); + hasCollision = FALSE; + surface = -1; + func_80031600(&weaponObj->segment.trans.x_position, &sp58.x, &radius, &surface, 1, &hasCollision); + weaponObj->segment.x_velocity = (sp58.x - weaponObj->segment.trans.x_position) / updateRateF; + weaponObj->segment.y_velocity = (sp58.y - weaponObj->segment.trans.y_position) / updateRateF; + weaponObj->segment.z_velocity = (sp58.z - weaponObj->segment.trans.z_position) / updateRateF; + weaponObj->segment.trans.x_position = sp58.x; + weaponObj->segment.trans.y_position = sp58.y; + weaponObj->segment.trans.z_position = sp58.z; + if (hasCollision || weaponOwner->vehicleID == VEHICLE_PLANE) { + weaponObj->segment.x_velocity = 0.0f; + weaponObj->segment.z_velocity = 0.0f; + weaponProperties->unk4 = 1; + weaponProperties->unk5 = 0; + weaponProperties->unk6 = 0; + if (weapon->weaponID == WEAPON_BUBBLE_TRAP) { + weaponObj->segment.trans.y_position += 16.0f; + } + } + radius = -10000.0f; + if (func_8002B9BC(weaponObj, &radius, NULL, 1) && (weaponObj->segment.trans.y_position < radius)) { + weaponProperties->unk4 = 1; + weaponProperties->unk5 = 1; + weaponProperties->unk6 = 0; + if (weapon->weaponID == WEAPON_BUBBLE_TRAP) { + weaponObj->segment.trans.y_position += 16.0f; + } + } + } + if (weapon->weaponID == WEAPON_OIL_SLICK) { + if (weaponProperties->unk4 != 0) { + if (weaponProperties->unk4 == 1) { + weaponProperties->unk6 += updateRate; + if (weaponProperties->unk6 > 12) { + weaponProperties->unk6 = 12; + } + } else { + weaponProperties->unk6 -= updateRate; + if (weaponProperties->unk6 <= 0) { + weaponProperties->unk6 = 1; + free_object(weaponObj); + } + } + if (weaponOwner->vehicleID != VEHICLE_PLANE) { + if (weaponProperties->unk5 != 0) { + weaponObj->waterEffect->scale = weaponProperties->unk6 * 0.6f; + } else { + weaponObj->shadow->scale = weaponProperties->unk6 * 0.6f; + } + weaponObj->segment.trans.flags |= OBJ_FLAGS_SHADOW_ONLY; + } + } + } + if (weapon->weaponID == WEAPON_BUBBLE_TRAP) { + if (weapon->target != NULL) { + weaponObj->segment.trans.x_position = 0.0f; + weaponObj->segment.trans.y_position = 0.0f; + weaponObj->segment.trans.z_position = 0.0f; + ignore_bounds_check(); + move_object(weaponObj, weapon->target->segment.trans.x_position, + weapon->target->segment.trans.y_position, weapon->target->segment.trans.z_position); + } + if (weaponProperties->unk4 == 1 || weaponProperties->unk4 == 2) { + weaponProperties->unk6 += updateRate; + if (weaponProperties->unk6 > 20) { + weaponProperties->unk6 = 20; + } + } + if (weaponProperties->unk4 == 2) { + weaponProperties->unk5 += updateRate; + if (weaponProperties->unk5 > 120) { + weaponProperties->unk4 = 3; + if (weapon->soundMask != NULL) { + func_800096F8(weapon->soundMask); + weapon->soundMask = NULL; + } + play_sound_at_position(SOUND_POP, weaponObj->segment.trans.x_position, + weaponObj->segment.trans.y_position, weaponObj->segment.trans.z_position, 4, NULL); + } + } + if (weaponProperties->unk4 == 3) { + weaponObj->unk74 = 1; + func_800AFC3C(weaponObj, updateRate); + weaponObj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE; + weaponProperties->unk6 -= updateRate; + if (weaponProperties->unk6 < 1) { + weaponProperties->unk6 = 1; + free_object(weaponObj); + } + } + if (weaponProperties->unk4 != 0) { + weaponObj->segment.trans.scale = (f32) weaponProperties->unk6 * 0.075f; + } + weaponObj->segment.animFrame += updateRate * 16; + } + if (weaponProperties->unk4 < 2) { + var_a1 = 60; + if (weaponOwner->vehicleID != VEHICLE_PLANE) { + var_a1 = 34; + weaponObj->segment.y_velocity -= 2.0; + weaponObj->segment.x_velocity -= (weaponObj->segment.x_velocity / 8); + weaponObj->segment.z_velocity -= (weaponObj->segment.z_velocity / 8); + } else { + weaponObj->segment.y_velocity = 0.0f; + weaponObj->segment.animFrame += updateRate * 8; + } + if (weapon->weaponID == WEAPON_BUBBLE_TRAP || weapon->weaponID == WEAPON_OIL_SLICK) { + var_a1 += var_a1 >> 1; + } + weaponInteractObj = weaponObj->interactObj->obj; + if (weaponInteractObj != NULL) { + if (weapon->owner != weaponObj->interactObj->obj || weaponProperties->unk0 < normalise_time(450)) { + if (weaponObj->interactObj->distance < var_a1) { + weaponInteractObj = weaponObj->interactObj->obj; + if (weaponInteractObj->segment.header->behaviorId == BHV_RACER) { + weaponHit = &weaponInteractObj->unk64->racer; + weaponHit->attackType = ATTACK_EXPLOSION; + if (weapon->weaponID == WEAPON_TRIPMINE) { + func_8003FC44(weaponObj->segment.trans.x_position, weaponObj->segment.trans.y_position, + weaponObj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); + } else if(weapon->weaponID == WEAPON_BUBBLE_TRAP) { + if (weaponHit->shieldTimer > 0 && weaponHit->shieldType >= SHIELD_LEVEL3) { + weaponProperties->unk4 = 3; + + play_sound_at_position(SOUND_POP, weaponObj->segment.trans.x_position, + weaponObj->segment.trans.y_position, weaponObj->segment.trans.z_position, 4, NULL); + } else { + weapon->target = weaponInteractObj; + + play_sound_at_position(SOUND_BUBBLE, weaponInteractObj->segment.trans.x_position, + weaponInteractObj->segment.trans.y_position, weaponInteractObj->segment.trans.z_position, 4, &weapon->soundMask); + weaponHit->attackType = ATTACK_BUBBLE; + weaponProperties->unk4 = 2; + weaponProperties->unk5 = 0; + } + } else if(weapon->weaponID == WEAPON_OIL_SLICK) { + weaponHit->attackType = ATTACK_SPIN; + weaponProperties->unk4 = 2; + } + if (!weaponHit->raceFinished) { + func_80072348(weaponHit->playerIndex, 13); + } + weaponOwner = &weapon->owner->unk64->racer; + if (weaponHit->playerIndex != PLAYER_COMPUTER || weaponOwner->playerIndex != PLAYER_COMPUTER) { + weaponOwner->boost_sound |= BOOST_SOUND_UNK2; + } + if (weapon->weaponID != WEAPON_OIL_SLICK && weapon->weaponID != WEAPON_BUBBLE_TRAP) { + free_object(weaponObj); + return; + } + } + } + } + } + weaponProperties->unk0 -= updateRate; + if (weaponProperties->unk4 < 2) { + if (weaponProperties->unk0 < normalise_time(-1320)) { + if (weapon->weaponID == WEAPON_OIL_SLICK) { + weaponProperties->unk4 = 2; + } else if((weapon->weaponID == WEAPON_BUBBLE_TRAP)) { + weaponProperties->unk4 = 3; + play_sound_at_position(SOUND_POP, weaponObj->segment.trans.x_position, + weaponObj->segment.trans.y_position, weaponObj->segment.trans.z_position, 4, NULL); + } else { + func_8003FC44(weaponObj->segment.trans.x_position, weaponObj->segment.trans.y_position, + weaponObj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); + free_object(weaponObj); + } + } + } + } +} void func_8003FC44(f32 x, f32 y, f32 z, s32 objectID, s32 soundID, f32 scale, s32 arg6) { LevelObjectEntry8003FC44 spawnObj; diff --git a/src/object_functions.h b/src/object_functions.h index 3e1c256c..aa16bdb6 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -239,18 +239,6 @@ typedef struct unk80041A90_MidiFade { f32 unk14; } unk80041A90_MidiFade; -// Unsure about the signed/unsigned with these arrays. -extern u16 D_800DC9A8[20]; -extern u16 D_800DC9D0[64]; -extern s8 D_800DCA50[8]; -extern u8 D_800DCA58[9]; -extern s8 D_800DCA64[9]; -extern s8 D_800DCA70[10]; -extern s32 D_800DCA7C[3]; -extern s32 D_800DCA88[3]; -extern s8 D_800DCA94[8]; -extern s8 D_800DCA9C[12]; - typedef struct VertexPosition { /* 0x00 */ s16 x; /* 0x02 */ s16 y; @@ -399,6 +387,11 @@ void homing_rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry); void obj_loop_effectbox(Object *obj, s32 updateRate); void func_8001EE74(void); +void obj_loop_door(Object *doorObj, s32 updateRate); +void obj_loop_fish(Object *fishObj, s32 updateRate); +void obj_loop_weaponballoon(Object *weaponBalloonObj, s32 updateRate); +void obj_loop_char_select(Object *charSelectObj, s32 updateRate); +void func_8003F2E8(Object *weaponObj, s32 updateRate); //Non Matching void obj_loop_lavaspurt(Object *obj, s32 updateRate); @@ -412,12 +405,8 @@ void obj_loop_posarrow(Object *obj, s32 updateRate); void obj_loop_bananacreator(Object *obj, s32 updateRate); void obj_loop_butterfly(Object *obj, s32 updateRate); void obj_loop_airzippers_waterzippers(Object *obj, s32 updateRate); -void obj_loop_char_select(Object *obj, s32 updateRate); void obj_loop_texscroll(Object *obj, s32 updateRate); -void obj_loop_weaponballoon(Object *obj, s32 updateRate); -void obj_loop_door(Object *obj, s32 updateRate); void obj_loop_exit(Object *obj, s32 updateRate); -void obj_loop_fish(Object *obj, s32 updateRate); void obj_loop_scenery(Object *obj, s32 updateRate); void obj_init_midifade(Object *obj, LevelObjectEntry_MidiFade *entry); INCONSISTENT void obj_init_butterfly(); @@ -443,6 +432,5 @@ void try_to_collect_egg(Object *, Object_CollectEgg*); s32 func_8001F3EC(s32); s32 func_80021600(s32); -void func_8003F2E8(Object *, s32 updateRate); #endif diff --git a/src/objects.c b/src/objects.c index d28f6b3a..dc999f7e 100644 --- a/src/objects.c +++ b/src/objects.c @@ -482,7 +482,7 @@ void clear_object_pointers(void) { D_8011AE00 = 0; D_8011AE01 = 1; D_8011AD53 = 0; - D_8011ADD5 = 0; + D_8011ADD5 = FALSE; } /** @@ -2346,9 +2346,8 @@ s32 play_footstep_sounds(Object *obj, s32 arg1, s32 frame, s32 oddSoundId, s32 e * Make the next call of move_object never mark the object as out of bounds. * Official Name: objMoveXYZnocheck */ -s32 ignore_bounds_check(void) { //! @bug The developers probably intended this to be a void function. +void ignore_bounds_check(void) { gNoBoundsCheck = TRUE; - // No return value! } /** diff --git a/src/objects.h b/src/objects.h index 13b02cd5..d2d52436 100644 --- a/src/objects.h +++ b/src/objects.h @@ -356,7 +356,7 @@ s32 func_80010028(s32 arg0); void func_80011390(void); s32 get_race_countdown(void); s32 get_race_start_timer(void); -s32 ignore_bounds_check(void); +void ignore_bounds_check(void); void func_80012C30(void); void func_80012C3C(Gfx** dList); void func_80012C98(Gfx **dList); diff --git a/src/waves.c b/src/waves.c index 5718d1b7..d2cac611 100644 --- a/src/waves.c +++ b/src/waves.c @@ -23,7 +23,7 @@ s32 D_800E3050[8] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -s32 *D_800E3070[2] = { NULL, NULL }; +Vertex **D_800E3070[2] = { NULL, NULL }; s32 *D_800E3078[2] = { NULL, NULL }; // This could also be D_800E3080[2] + D_800E3088[2] @@ -44,9 +44,9 @@ unk800E3090 D_800E3090[4] = { TextureHeader *D_800E30D0 = NULL; s32 *D_800E30D4 = NULL; LevelModel_Alternate *D_800E30D8 = NULL; -s32 D_800E30DC = 0; -s32 D_800E30E0 = 0; -s32 D_800E30E4 = 0; +s32 D_800E30DC = 0; //Tracks an index into D_8012A1E8 +s16 *D_800E30E0 = NULL; //Points to either D_800E30E8 or D_800E3110 +s16 *D_800E30E4 = NULL; //Points to either D_800E30FC or D_800E3144 s16 D_800E30E8[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 @@ -68,12 +68,11 @@ s32 *D_800E3178 = NULL; s32 D_800E317C = 0; LevelHeader_70 *D_800E3180 = NULL; unk800E3184 *D_800E3184 = NULL; -s32 D_800E3188 = NULL; +s32 D_800E3188 = 0; s32 D_800E318C = 0; unk800E3190 *D_800E3190 = NULL; Object **D_800E3194 = NULL; Object *gWaveGeneratorObj = NULL; -s32 D_800E319C = 0; /*******************************/ @@ -93,9 +92,9 @@ s32 D_80129FC0; s32 D_80129FC4; unk80129FC8 D_80129FC8[1]; s32 D_8012A018; -s32 D_8012A01C; -s32 D_8012A020[2]; -s32 D_8012A028[20]; +f32 D_8012A01C; +f32 D_8012A020[2]; +unk8012A028 *D_8012A028[20]; s32 D_8012A078; TriangleBatchInfo *gWaveBatch; TextureHeader *gWaveTexture; @@ -106,8 +105,8 @@ s32 D_8012A090; s32 D_8012A094; s32 D_8012A098; s32 D_8012A09C; -s32 D_8012A0A0; -s32 D_8012A0A4; +f32 D_8012A0A0; +f32 D_8012A0A4; s32 gWaveBoundingBoxDiffX; s32 gWaveBoundingBoxDiffZ; s32 gWaveBoundingBoxX1; @@ -127,66 +126,110 @@ s32 D_8012A0E8[64]; s16 D_8012A1E8[512]; s32 D_8012A5E8[3]; s32 D_8012A5F4; -s32 D_8012A5F8; -s32 D_8012A5FC; +UNUSED s32 D_8012A5F8; +UNUSED s32 D_8012A5FC; s32 D_8012A600[72]; f32 D_8012A720; f32 D_8012A724; s32 D_8012A728; -s32 D_8012A72C; /*****************************/ +#define FREE_MEM(mem) \ + tempMem = (s32 *) mem; \ + if (tempMem != NULL) { \ + free_from_memory_pool(tempMem); \ + mem = NULL; \ + } +#define FREE_TEX(tex) \ + tempTex = tex; \ + if (tempTex != NULL) { \ + free_texture(tempTex); \ + tex = NULL; \ + } + void free_waves(void) { - if (D_800E3040 != NULL) { - free_from_memory_pool(D_800E3040); - D_800E3040 = NULL; - } - if (D_800E3044 != NULL) { - free_from_memory_pool(D_800E3044); - D_800E3044 = NULL; - } - if (D_800E3048 != NULL) { - free_from_memory_pool(D_800E3048); - D_800E3048 = NULL; - } - if (D_800E304C != NULL) { - free_from_memory_pool(D_800E304C); - D_800E304C = NULL; - } - if (D_800E3070[0] != NULL) { - free_from_memory_pool(D_800E3070[0]); - D_800E3070[0] = NULL; - } - if (D_800E3080[0] != NULL) { - free_from_memory_pool(D_800E3080[0]); - D_800E3080[0] = NULL; - } - if (D_800E30D0 != NULL) { - free_texture(D_800E30D0); - D_800E30D0 = NULL; - } - if (D_800E30D4 != NULL) { - free_from_memory_pool(D_800E30D4); - D_800E30D4 = NULL; - } - if (D_800E30D8 != NULL) { - free_from_memory_pool(D_800E30D8); - D_800E30D8 = NULL; - } - if (D_800E3178 != NULL) { - free_from_memory_pool(D_800E3178); - D_800E3178 = NULL; - } + TextureHeader *tempTex; + s32 *tempMem; + FREE_MEM(D_800E3040); + FREE_MEM(D_800E3044); + FREE_MEM(D_800E3048); + FREE_MEM(D_800E304C); + FREE_MEM(D_800E3070[0]); + FREE_MEM(D_800E3080[0]); + FREE_TEX(D_800E30D0); + FREE_MEM(D_800E30D4); + FREE_MEM(D_800E30D8); + FREE_MEM(D_800E3178); D_800E3190 = NULL; D_800E3194 = NULL; D_800E3184 = NULL; D_800E3188 = NULL; } -GLOBAL_ASM("asm/non_matchings/waves/func_800B7EB4.s") +#ifdef NON_EQUIVALENT +void func_800B7EB4(void) { + s32 *var_v1; + s32 temp_lo; + s32 temp_t7; + s32 temp_t9; + s32 temp_v1; + s32 var_a1; + s32 var_a2; + s32 var_a3; + s32 var_t0; + s32 var_t1; -void func_800B8134(unk800B8134 *arg0) { + free_waves(); + D_800E3040 = (s32 *) allocate_from_main_pool_safe(D_80129FC8->unk20 << 2, COLOUR_TAG_CYAN); + D_800E3044 = (s32 *) allocate_from_main_pool_safe((D_80129FC8->unk4 << 2) * D_80129FC8->unk4, COLOUR_TAG_CYAN); + D_800E3048 = (s32 *) allocate_from_main_pool_safe(((D_80129FC8->unk0 + 1) << 2) * (D_80129FC8->unk0 + 1), COLOUR_TAG_CYAN); + temp_lo = ((D_80129FC8->unk0 + 1) << 2) * (D_80129FC8->unk0 + 1); + D_800E304C = allocate_from_main_pool_safe(temp_lo * 9, COLOUR_TAG_CYAN); + + // for (var_a1 = 1; var_a1 < 4; var_a1++) { + // D_800E3050[var_a1] = (s32 *) ((u32) D_800E304C + (temp_lo * var_a1)); + // } + + var_v1 = D_800E3050; + var_a1 = 1; + do { + var_v1[0] = (s32 *) (D_800E304C + temp_lo); + var_v1[1] = (s32 *) (D_800E304C + (temp_lo * 2)); + var_v1[2] = (s32 *) (D_800E304C + (temp_lo * 3)); + var_v1[3] = (s32 *) (D_800E304C + (temp_lo * 4)); + var_v1 += 4; + var_a1 += 4; + } while (var_a1 < 9); + + //temp_lo = (D_80129FC8->unk0 + 1) * 250 * (D_80129FC8->unk0 + 1); + temp_lo = ((((D_80129FC8->unk0 + 1) << 5) - D_80129FC8->unk0) * 10) * (D_80129FC8->unk0 + 1); + if (D_8012A078 != 2) { + D_800E3070[0] = (s32 *) allocate_from_main_pool_safe(temp_lo << 1, COLOUR_TAG_CYAN); + D_800E3070[1] = (s32 *) ((u32) D_800E3070[0] + temp_lo); + } else { + D_800E3070[0] = (s32 *) allocate_from_main_pool_safe(temp_lo << 2, COLOUR_TAG_CYAN); + D_800E3070[1] = (s32 *) ((u32) D_800E3070[0] + temp_lo); + D_800E3070[2] = (s32 *) ((u32) D_800E3070[1] + temp_lo); + D_800E3070[3] = (s32 *) ((u32) D_800E3070[2] + temp_lo); + } + temp_lo = (D_80129FC8->unk0 << 5) * D_80129FC8->unk0; + if (D_8012A078 != 2) { + D_800E3080[0] = allocate_from_main_pool_safe(temp_lo << 1, COLOUR_TAG_CYAN); + D_800E3080[1] = (s32 *) ((u32) D_800E3080[0] + temp_lo); + } else { + D_800E3080[0] = (s32 *) allocate_from_main_pool_safe(temp_lo << 2, COLOUR_TAG_CYAN); + D_800E3080[1] = (s32 *) ((u32) D_800E3080[0] + temp_lo); + D_800E3080[2] = (s32 *) ((u32) D_800E3080[1] + temp_lo); + D_800E3080[3] = (s32 *) ((u32) D_800E3080[2] + temp_lo); + } + D_800E30D0 = load_texture(D_80129FC8->unk2C); +} +#else +GLOBAL_ASM("asm/non_matchings/waves/func_800B7EB4.s") +#endif + +void func_800B8134(LevelHeader *arg0) { if (D_8012A078 != 2) { D_80129FC8->unk0 = arg0->unk56; } else { @@ -194,10 +237,10 @@ void func_800B8134(unk800B8134 *arg0) { } D_80129FC8->unk4 = arg0->unk57; D_80129FC8->unk8 = arg0->unk58; - D_80129FC8->unkC = arg0->unk5A * 0.00390625f; + D_80129FC8->unkC = arg0->unk5A / 256.0f; D_80129FC8->unk10 = arg0->unk59 << 8; D_80129FC8->unk14 = arg0->unk5C; - D_80129FC8->unk18 = arg0->unk5E * 0.00390625f; + D_80129FC8->unk18 = arg0->unk5E / 256.0f; D_80129FC8->unk1C = arg0->unk5D << 8; D_80129FC8->unk20 = arg0->unk60 & ~1; if (D_8012A078 != 2) { @@ -211,13 +254,289 @@ void func_800B8134(unk800B8134 *arg0) { D_80129FC8->unk34 = arg0->unk6B; D_80129FC8->unk38 = arg0->unk6C; D_80129FC8->unk3C = arg0->unk6D; - D_80129FC8->unk40 = arg0->unk62 * 0.00390625f; - D_80129FC8->unk44 = arg0->unk64 * 0.00390625f; - D_80129FC8->unk48 = arg0->unk66 * 0.00390625f; - D_80129FC8->unk4C = arg0->unk70; + D_80129FC8->unk40 = arg0->unk62 / 256.0f; + D_80129FC8->unk44 = arg0->unk64 / 256.0f; + D_80129FC8->unk48 = arg0->unk66 / 256.0f; + D_80129FC8->unk4C = arg0->unk70_u8; } +#ifdef NON_EQUIVALENT +void func_800B82B4(LevelModel *arg0, LevelHeader *arg1, s32 arg2) { + s32 sp54; + s32 sp4C; + Vertex **var_a3; + Vertex **var_v0; + Vertex *temp_a1_2; + Vertex *temp_a2; + Vertex *temp_t2; + Vertex *temp_v0_4; + Vertex *temp_v0_5; + f32 *temp_v0; + f32 *temp_v0_2; + f32 temp_f0; + f32 temp_f0_2; + f32 temp_f20; + s32 **var_v1; + s32 *temp_t6; + s32 temp_lo; + s32 temp_v0_3; + s32 temp_v1; + s32 var_a0; + s32 var_a0_2; + s32 var_a2; + s32 var_fp; + s32 var_s0; + s32 var_s0_2; + s32 var_s0_3; + s32 var_s3; + s32 var_s5; + s32 var_s5_2; + s32 var_s6; + s32 var_s6_2; + s32 var_s7; + s32 var_v0_2; + s8 temp_a1; + s8 var_s0_4; + unk8012A028 **var_a0_3; + f32 phi_f0; + s32 i; + + D_8012A078 = arg2; + func_800B8134(arg1); + func_800B7EB4(); + func_800BBDDC(arg0, arg1); + D_8012A0A0 = (f32) gWaveBoundingBoxDiffX; + temp_f0 = (f32) D_80129FC8->unk0; + D_8012A0A4 = (f32) gWaveBoundingBoxDiffZ; + var_s7 = 0; + D_8012A0B8 = D_8012A0A0 / temp_f0; + D_8012A0BC = D_8012A0A4 / temp_f0; + D_8012A084 = 0; + D_8012A088 = 0; + D_8012A08C = (s32) ((gWaveTexture->width * D_80129FC8->unk30) << 5) / (s32) D_80129FC8->unk0; + D_8012A090 = (s32) ((gWaveTexture->height * D_80129FC8->unk34) << 5) / (s32) D_80129FC8->unk0; + D_8012A094 = (gWaveTexture->width << 5) - 1; + D_8012A098 = (gWaveTexture->height << 5) - 1; + D_8012A09C = 0; + var_s6 = D_80129FC8->unk10; + var_fp = D_80129FC8->unk1C; + sp54 = (s32) (D_80129FC8->unk8 << 0x10) / (s32) D_80129FC8->unk20; + D_8012A01C = 10000.0f; + *D_8012A020 = -10000.0f; + sp4C = (s32) (D_80129FC8->unk14 << 0x10) / (s32) D_80129FC8->unk20; + if (D_80129FC8->unk20 > 0) { + var_s0 = 0; + do { + temp_f20 = sins_f((s16) var_s6); + var_s7 += 1; + *(D_800E3040 + var_s0) = (sins_f((s16) var_fp) * D_80129FC8->unk18) + (temp_f20 * D_80129FC8->unkC); + if (D_80129FC8->unk28 != 0) { + temp_v0 = D_800E3040 + var_s0; + *temp_v0 *= 2.0f; + } + temp_v0_2 = D_800E3040 + var_s0; + temp_f0_2 = *temp_v0_2; + var_s0 += 4; + phi_f0 = temp_f0_2; + if (temp_f0_2 < D_8012A01C) { + D_8012A01C = temp_f0_2; + phi_f0 = *temp_v0_2; + } + if (*D_8012A020 < phi_f0) { + *D_8012A020 = phi_f0; + } + var_s6 += sp54; + var_fp += sp4C; + } while (var_s7 < D_80129FC8->unk20); + var_s7 = 0; + } + save_rng_seed(); + set_rng_seed(0x57415646); + temp_v1 = D_80129FC8->unk4; + var_s5 = 0; + if (temp_v1 > 0) { + do { + var_s0_2 = 0; + if (temp_v1 > 0) { + var_s6_2 = var_s5 * 4; + do { + *(D_800E3044 + var_s6_2) = get_random_number_from_range(0, D_80129FC8->unk20 - 1); + var_s0_2 += 1; + //(D_800E3044 + var_s6_2)->unk2 = get_random_number_from_range(0, D_80129FC8->unk20 - 1); + var_s6_2 += 4; + var_s5 += 1; + } while (var_s0_2 < D_80129FC8->unk4); + } + var_s7 += 1; + } while (var_s7 < temp_v1); + var_s7 = 0; + var_s5 = 0; + } + load_rng_seed(); + var_a2 = 0; + if (arg2 != 2) { + var_s3 = 2; + } else { + var_s3 = 4; + } + do { + var_a2 += 1; + if (D_80129FC8->unk0 >= 0) { + do { + var_s0_3 = 0; + if (D_80129FC8->unk0 >= 0) { + do { + var_a0 = 0; + if (var_s3 > 0) { + var_v0 = D_800E3070; + do { + var_a0 += 1; + (*var_v0)[var_s5].x = (s16) (s32) ((f64) ((f32) var_s0_3 * D_8012A0B8) + 0.5); + (*var_v0)[var_s5].z = (s16) (s32) ((f64) ((f32) var_s7 * D_8012A0BC) + 0.5); + if (D_80129FC8->unk4C == 0) { + (*var_v0)[var_s5].r = 0xFF; + (*var_v0)[var_s5].g = 0xFF; + (*var_v0)[var_s5].b = 0xFF; + } else { + (*var_v0)[var_s5].r = 0; + (*var_v0)[var_s5].g = 0; + (*var_v0)[var_s5].b = 0; + } + temp_t2 = *var_v0; + var_v0 += 4; + temp_t2[var_s5].a = 0xFF; + } while (var_a0 != var_s3); + } + var_s0_3 += 1; + var_s5 += 1; + } while (D_80129FC8->unk0 >= var_s0_3); + } + var_s7 += 1; + } while (D_80129FC8->unk0 >= var_s7); + var_s7 = 0; + } + } while (var_a2 < 0x19); + var_s5_2 = 0; + // if (D_80129FC8->unk0 > 0) { + // do { + // var_s0_4 = 0; + // if (D_80129FC8->unk0 > 0) { + // do { + // var_a0_2 = 0; + // if (var_s3 > 0) { + // var_v1 = D_800E3080; + // temp_a1 = var_s0_4 + 1; + // var_v0_2 = var_s5_2 * 0x10; + // do { + // var_a0_2 += 1; + // *(*var_v1 + var_v0_2) = 0x40; + // temp_t6 = *var_v1; + // var_v1 += 4; + // (temp_t6 + var_v0_2)->unk1 = var_s0_4; + // (var_v1->unk-4 + var_v0_2)->unk2 = (s8) (var_s0_4 + D_80129FC8->unk0 + 1); + // (var_v1->unk-4 + var_v0_2)->unk3 = temp_a1; + // temp_v0_3 = var_v0_2 + 0x10; + // *(var_v1->unk-4 + temp_v0_3) = 0x40; + // (var_v1->unk-4 + temp_v0_3)->unk1 = temp_a1; + // (var_v1->unk-4 + temp_v0_3)->unk2 = (s8) (var_s0_4 + D_80129FC8->unk0 + 1); + // (var_v1->unk-4 + temp_v0_3)->unk3 = (s8) (var_s0_4 + D_80129FC8->unk0 + 2); + // var_v0_2 = temp_v0_3 - 0x10; + // } while (var_a0_2 != var_s3); + // } + // var_s0_4 += 1; + // var_s5_2 += 2; + // } while (var_s0_4 < D_80129FC8->unk0); + // } + // var_s7 += 1; + // } while (var_s7 < D_80129FC8->unk0); + // } + func_800BC6C8(); + temp_lo = (D_80129FC8->unk0 + 1) * D_80129FC8->unk0; + var_a3 = D_800E3070; + var_a0_3 = D_8012A028; + for (i = 0; i < 2; i++) { + D_8012A028[i]->vertexA.y = 0; + D_8012A028[i]->vertexA.x = D_800E3070[i][0]->x; + D_8012A028[i]->vertexA.z = D_800E3070[i][0]->z; + D_8012A028[i]->vertexA.r = D_800E3070[i][0]->r; + D_8012A028[i]->vertexA.g = D_800E3070[i][0]->g; + D_8012A028[i]->vertexA.b = D_800E3070[i][0]->b; + D_8012A028[i]->vertexA.a = D_800E3070[i][0]->a; + D_8012A028[i]->vertexB.y = 0; + D_8012A028[i]->vertexB.x = D_800E3070[i][1]->x; + D_8012A028[i]->vertexB.z = D_800E3070[i][1]->z; + D_8012A028[i]->vertexB.r = D_800E3070[i][1]->r; + D_8012A028[i]->vertexB.g = D_800E3070[i][1]->g; + D_8012A028[i]->vertexB.b = D_800E3070[i][1]->b; + D_8012A028[i]->vertexB.a = D_800E3070[i][1]->a; + D_8012A028[i]->vertexC.y = 0; + D_8012A028[i]->vertexC.x = D_800E3070[i][2]->x; + D_8012A028[i]->vertexC.z = D_800E3070[i][2]->z; + D_8012A028[i]->vertexC.r = D_800E3070[i][2]->r; + D_8012A028[i]->vertexC.g = D_800E3070[i][2]->g; + D_8012A028[i]->vertexC.b = D_800E3070[i][2]->b; + D_8012A028[i]->vertexC.a = D_800E3070[i][2]->a; + D_8012A028[i]->vertexD.y = 0; + D_8012A028[i]->vertexD.x = D_800E3070[i][3]->x; + D_8012A028[i]->vertexD.z = D_800E3070[i][3]->z; + D_8012A028[i]->vertexD.r = D_800E3070[i][3]->r; + D_8012A028[i]->vertexD.g = D_800E3070[i][3]->g; + D_8012A028[i]->vertexD.b = D_800E3070[i][3]->b; + D_8012A028[i]->vertexD.a = D_800E3070[i][3]->a; + } + // do { + // temp_a1_2 = *var_a3; + // var_a3 += 4; + // var_a0_3->unk2 = 0; + // var_a0_3->unk0 = (s16) temp_a1_2->x; + // temp_v0_4 = &temp_a1_2[D_80129FC8->unk0]; + // var_a0_3->unk4 = (s16) temp_a1_2->z; + // temp_a2 = &temp_a1_2[temp_lo]; + // var_a0_3->unk6 = (u8) temp_a1_2->r; + // var_a0_3 += 0x28; + // var_a0_3->unk-21 = (u8) temp_a1_2->g; + // var_a0_3->unk-20 = (u8) temp_a1_2->b; + // var_a0_3->unk-1F = (u8) temp_a1_2->a; + // var_a0_3->unk-1C = 0; + // var_a0_3->unk-1E = (s16) temp_v0_4->x; + // var_a0_3->unk-1A = (s16) temp_v0_4->z; + // var_a0_3->unk-18 = (u8) temp_v0_4->r; + // var_a0_3->unk-17 = (u8) temp_v0_4->g; + // var_a0_3->unk-16 = (u8) temp_v0_4->b; + // var_a0_3->unk-15 = (u8) temp_v0_4->a; + // var_a0_3->unk-12 = 0; + // var_a0_3->unk-14 = (s16) temp_a2->x; + // var_a0_3->unk-10 = (s16) temp_a2->z; + // var_a0_3->unk-E = (u8) temp_a2->r; + // var_a0_3->unk-D = (u8) temp_a2->g; + // temp_v0_5 = &(&temp_a1_2[temp_lo])[D_80129FC8->unk0]; + // var_a0_3->unk-C = (u8) temp_a2->b; + // var_a0_3->unk-B = (u8) temp_a2->a; + // var_a0_3->unk-8 = 0; + // var_a0_3->unk-A = (s16) temp_v0_5->x; + // var_a0_3->unk-6 = (s16) temp_v0_5->z; + // var_a0_3->unk-4 = (u8) temp_v0_5->r; + // var_a0_3->unk-3 = (u8) temp_v0_5->g; + // var_a0_3->unk-2 = (u8) temp_v0_5->b; + // var_a0_3->unk-1 = (u8) temp_v0_5->a; + // } while (var_a3 != D_800E3078); + func_800BCC70(arg0); + if (D_80129FC8->unk24 == 3) { + D_800E30E0 = D_800E30E8; + D_800E30E4 = D_800E30FC; + } else { + D_80129FC8->unk24 = 5; + D_800E30E0 = D_800E3110; + D_800E30E4 = D_800E3144; + } + D_800E3188 = 0; + D_8012A728 = 0; + gWaveGeneratorObj = NULL; + D_8012A018 = 0; +} +#else GLOBAL_ASM("asm/non_matchings/waves/func_800B82B4.s") +#endif void func_800B8B8C(void) { s32 temp_v0; @@ -340,7 +659,7 @@ void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1) { gWaveBoundingBoxZ1 = bb->z1; gWaveBatch = curBatch; gWaveTexture = level->textures[curBatch->textureIndex].texture; - temp_t6 = (curBatch->flags & (BATCH_FLAGS_UNK40000000 | BATCH_FLAGS_UNK20000000 | BATCH_FLAGS_UNK10000000)) >> 0x1C; + temp_t6 = (curBatch->flags & (BATCH_FLAGS_UNK40000000 | BATCH_FLAGS_UNK20000000 | BATCH_FLAGS_UNK10000000)) >> 28; if (temp_t6 > 0) { D_800E3180 = (LevelHeader_70 *) arg1->unk70[temp_t6]; } else { @@ -377,7 +696,7 @@ f32 get_wave_height(Object_Log *log, s32 updateRate) { } else { var_t0 <<= log->unk2; } - y = (((f32) var_t0 * 0.0625) + (f32) log->unk0); + y = (((f32) var_t0 / 16.0) + (f32) log->unk0); y *= D_80129FC8->unk40; y += func_800BEFC4(log->unkC, log->unk8, log->unkA); return y; @@ -487,7 +806,7 @@ void func_800BF3E4(Object *obj) { } } D_800E3194[j] = NULL; - D_800E3188 -= 1; + D_800E3188--; } } } @@ -505,7 +824,7 @@ void func_800BF524(Object *obj) { var_v1 |= 2; } func_800BF634(obj, obj->segment.trans.x_position, obj->segment.trans.z_position, (f32) temp_v0->unkA, temp_v0->unk9 << 8, - (f32) temp_v0->unk8 * 0.0625, (f32) temp_v0->unkE, (f32) temp_v0->unkC * 0.0625, var_v1); + (f32) temp_v0->unk8 / 16.0, (f32) temp_v0->unkE, (f32) temp_v0->unkC / 16.0, var_v1); } unk800E3190 *func_800BF634(Object *obj, f32 xPos, f32 zPos, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8) { @@ -529,10 +848,10 @@ unk800E3190 *func_800BF634(Object *obj, f32 xPos, f32 zPos, f32 arg3, s32 arg4, i--; if (var_a0 != 0) { D_800E3194[i] = obj; - D_800E3188 += 1; + D_800E3188++; var_f0 = D_8012A0B8; if (D_80129FC8->unk28 != 0) { - var_f0 *= 0.5f; + var_f0 /= 2.0f; } var_a0_2 = (((xPos - arg3) - D_8012A0D0) / var_f0); if (var_a0_2 >= D_800E318C) { @@ -674,7 +993,7 @@ UNUSED void func_800BFC54(unk800BFC54_arg0 *arg0, f32 arg1, f32 arg2, f32 arg3, if (arg0->unk2C < 1.0) { arg0->unk2C = 1.0f; } - arg0->unk20 = (65536.0f / arg0->unk2C); + arg0->unk20 = (65536.0f / arg0->unk2C); //0x10000 arg0->unk24 = (arg0->unk24 + arg4); } } diff --git a/src/waves.h b/src/waves.h index b4141922..31df1175 100644 --- a/src/waves.h +++ b/src/waves.h @@ -40,30 +40,6 @@ typedef struct unk800E3184 { u8 unk0[8]; } unk800E3184; -typedef struct unk800B8134 { - u8 pad0[0x56]; - u8 unk56; - u8 unk57; - u8 unk58; - u8 unk59; - s16 unk5A; - u8 unk5C; - u8 unk5D; - s16 unk5E; - s16 unk60; - s16 unk62; - s16 unk64; - s16 unk66; - s16 unk68; - u8 unk6A; - u8 unk6B; - s8 unk6C; - s8 unk6D; - s16 unk6E; - u8 unk70; - u8 unk71; -} unk800B8134; - typedef struct unk80129FC8 { s32 unk0; s32 unk4; @@ -116,12 +92,32 @@ typedef struct unk800BF9F8 { u16 unk18; } unk800BF9F8; +// 4 Vertexes +// Size: 0x28 - 40 bytes/ +typedef struct unk8012A028 { + Vertex vertexA; + Vertex vertexB; + Vertex vertexC; + Vertex vertexD; +} unk8012A028; + +// /* Size: 10 bytes */ +// typedef struct Vertex { +// /* 0x00 */ s16 x; +// /* 0x02 */ s16 y; +// /* 0x04 */ s16 z; +// /* 0x06 */ u8 r; +// /* 0x07 */ u8 g; +// /* 0x08 */ u8 b; +// /* 0x09 */ u8 a; +// } Vertex; + void free_waves(void); void func_800B8B8C(void); s32 func_800B9228(LevelModelSegment *arg0); void func_800BBDDC(LevelModel *level, LevelHeader *header); void func_800BFE98(s32 arg0); -void func_800B8134(unk800B8134 *arg0); +void func_800B8134(LevelHeader *arg0); void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1); void obj_loop_wavepower(Object *obj); void func_800BFC54(unk800BFC54_arg0 *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4); @@ -137,5 +133,8 @@ f32 func_800BB2F4(s32, f32, f32, f32*); void func_800B8C04(s32, s32, s32, s32, s32); void func_800BF524(Object *); f32 func_800BEFC4(s32, s32, s32); +void func_800BC6C8(void); +void func_800BCC70(LevelModel *arg0); +void func_800B7EB4(void); #endif diff --git a/src/weather.c b/src/weather.c index 77e53ad2..c399a418 100644 --- a/src/weather.c +++ b/src/weather.c @@ -216,15 +216,14 @@ void set_weather_limits(s16 arg0, s16 arg1) { } #define FREE_MEM(mem) \ - tempMem = (s32 *)mem; \ - if (tempMem != 0) { \ + tempMem = (s32 *) mem; \ + if (tempMem != NULL) { \ free_from_memory_pool(tempMem); \ mem = NULL; \ } - #define FREE_TEX(tex) \ tempTex = tex; \ - if (tempTex != 0) { \ + if (tempTex != NULL) { \ free_texture(tempTex); \ tex = NULL; \ }