We are collecting silver coins in Pirate Lagoon. (2/8 silver coins) (#418)

* Match func_800C0B00

* Rename func_80065EA0 to camera_init

* Match menu_audio_options_loop

* Fix last commit

* Couple small changes

* Match 3 wave funcs

* update README
This commit is contained in:
Ryan Myers
2023-10-10 10:09:08 -04:00
committed by GitHub
parent 3b0ca98c39
commit 6dcdd256ee
19 changed files with 388 additions and 789 deletions
+27 -27
View File
@@ -5,11 +5,11 @@ 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.
<!-- README_SCORE_SUMMARY_BEGIN -->
As of October 6, 2023, this is our current score:
As of October 10, 2023, this is our current score:
&emsp;&emsp;&emsp;&emsp;Decomp progress: 56.60%
&emsp;&emsp;&emsp;&emsp;Decomp progress: 58.00%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 30.06%
&emsp;&emsp;&emsp;&emsp;Documentation progress: 31.11%
<!-- README_SCORE_SUMMARY_END -->
---
@@ -128,31 +128,31 @@ s32 is_drumstick_unlocked(void) {
```
<!-- README_SCORE_BEGIN -->
As of October 6th, 2023, this is our current score:
As of October 10th, 2023, this is our current score:
```
=====================================================================
ADVENTURE ONE (ASM -> C Decompilation)
-------------------------- 56.60% Complete --------------------------
# Decompiled functions: 1592
# GLOBAL_ASM remaining: 246
# NON_MATCHING functions: 12
# NON_EQUIVALENT WIP functions: 60
---------------------------- Game Status ----------------------------
Balloons: 27/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
---------------------------------------------------------------------
We are collecting silver coins in Crescent Island. (3/8 silver coins)
=====================================================================
ADVENTURE TWO (Cleanup & Documentation)
-------------------------- 30.06% Complete --------------------------
# Documented functions: 656
# Undocumented remaining: 914
---------------------------- Game Status ----------------------------
Balloons: 15/47, Keys: 1/4, Trophies: 1/5
T.T. Amulets: 1/4, Wizpig Amulets: 1/4
---------------------------------------------------------------------
We are racing in Snowball Valley. (Lap 3/3)
=====================================================================
===================================================================
ADVENTURE ONE (ASM -> C Decompilation)
------------------------- 58.00% Complete -------------------------
# Decompiled functions: 1606
# GLOBAL_ASM remaining: 232
# NON_MATCHING functions: 11
# NON_EQUIVALENT WIP functions: 59
--------------------------- Game Status ---------------------------
Balloons: 28/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
-------------------------------------------------------------------
We are collecting silver coins in Pirate Lagoon. (2/8 silver coins)
===================================================================
ADVENTURE TWO (Cleanup & Documentation)
------------------------- 31.11% Complete -------------------------
# Documented functions: 683
# Undocumented remaining: 887
--------------------------- Game Status ---------------------------
Balloons: 16/47, Keys: 2/4, Trophies: 1/5
T.T. Amulets: 1/4, Wizpig Amulets: 1/4
-------------------------------------------------------------------
We are racing in Frosty Village. (Lap 2/3)
===================================================================
```
<!-- README_SCORE_END -->
@@ -3,7 +3,7 @@ glabel D_800E709C
.float 15000.0
.text
glabel func_80065EA0
glabel camera_init
/* 066AA0 80065EA0 3C048012 */ lui $a0, %hi(D_80120DA0) # $a0, 0x8012
/* 066AA4 80065EA4 24030001 */ li $v1, 1
/* 066AA8 80065EA8 3C0F8012 */ lui $t7, %hi(gModelMatrixF) # $t7, 0x8012
-156
View File
@@ -1,156 +0,0 @@
glabel func_800BA288
/* 0BAE88 800BA288 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BAE8C 800BA28C 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BAE90 800BA290 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 0BAE94 800BA294 AFB00008 */ sw $s0, 8($sp)
/* 0BAE98 800BA298 000570C0 */ sll $t6, $a1, 3
/* 0BAE9C 800BA29C 00808025 */ move $s0, $a0
/* 0BAEA0 800BA2A0 AFB1000C */ sw $s1, 0xc($sp)
/* 0BAEA4 800BA2A4 01C02825 */ move $a1, $t6
/* 0BAEA8 800BA2A8 1860007F */ blez $v1, .L800BA4A8
/* 0BAEAC 800BA2AC 00001025 */ move $v0, $zero
/* 0BAEB0 800BA2B0 3C0C800E */ lui $t4, %hi(D_800E30D4) # $t4, 0x800e
/* 0BAEB4 800BA2B4 3C0B8013 */ lui $t3, %hi(D_80129FC8) # $t3, 0x8013
/* 0BAEB8 800BA2B8 3C0A8013 */ lui $t2, %hi(D_8012A0E8) # $t2, 0x8013
/* 0BAEBC 800BA2BC 3C09800E */ lui $t1, %hi(D_800E30D8) # $t1, 0x800e
/* 0BAEC0 800BA2C0 252930D8 */ addiu $t1, %lo(D_800E30D8) # addiu $t1, $t1, 0x30d8
/* 0BAEC4 800BA2C4 254AA0E8 */ addiu $t2, %lo(D_8012A0E8) # addiu $t2, $t2, -0x5f18
/* 0BAEC8 800BA2C8 256B9FC8 */ addiu $t3, %lo(D_80129FC8) # addiu $t3, $t3, -0x6038
/* 0BAECC 800BA2CC 258C30D4 */ addiu $t4, %lo(D_800E30D4) # addiu $t4, $t4, 0x30d4
/* 0BAED0 800BA2D0 00003025 */ move $a2, $zero
/* 0BAED4 800BA2D4 24110080 */ li $s1, 128
/* 0BAED8 800BA2D8 240D0004 */ li $t5, 4
.L800BA2DC:
/* 0BAEDC 800BA2DC 8D240000 */ lw $a0, ($t1)
/* 0BAEE0 800BA2E0 24180001 */ li $t8, 1
/* 0BAEE4 800BA2E4 00863821 */ addu $a3, $a0, $a2
/* 0BAEE8 800BA2E8 90EF000A */ lbu $t7, 0xa($a3)
/* 0BAEEC 800BA2EC 90EE000B */ lbu $t6, 0xb($a3)
/* 0BAEF0 800BA2F0 01F8C804 */ sllv $t9, $t8, $t7
/* 0BAEF4 800BA2F4 000EC080 */ sll $t8, $t6, 2
/* 0BAEF8 800BA2F8 01587821 */ addu $t7, $t2, $t8
/* 0BAEFC 800BA2FC 8DEE0000 */ lw $t6, ($t7)
/* 0BAF00 800BA300 00000000 */ nop
/* 0BAF04 800BA304 032EC024 */ and $t8, $t9, $t6
/* 0BAF08 800BA308 13000063 */ beqz $t8, .L800BA498
/* 0BAF0C 800BA30C 00000000 */ nop
/* 0BAF10 800BA310 8D6F0028 */ lw $t7, 0x28($t3)
/* 0BAF14 800BA314 00001825 */ move $v1, $zero
/* 0BAF18 800BA318 11E00035 */ beqz $t7, .L800BA3F0
/* 0BAF1C 800BA31C 00000000 */ nop
.L800BA320:
/* 0BAF20 800BA320 8D240000 */ lw $a0, ($t1)
/* 0BAF24 800BA324 8D990000 */ lw $t9, ($t4)
/* 0BAF28 800BA328 00867021 */ addu $t6, $a0, $a2
/* 0BAF2C 800BA32C 8DD8000C */ lw $t8, 0xc($t6)
/* 0BAF30 800BA330 00000000 */ nop
/* 0BAF34 800BA334 00187880 */ sll $t7, $t8, 2
/* 0BAF38 800BA338 032F7021 */ addu $t6, $t9, $t7
/* 0BAF3C 800BA33C 8DD80000 */ lw $t8, ($t6)
/* 0BAF40 800BA340 240F00FF */ li $t7, 255
/* 0BAF44 800BA344 0003C8C0 */ sll $t9, $v1, 3
/* 0BAF48 800BA348 032F7004 */ sllv $t6, $t7, $t9
/* 0BAF4C 800BA34C 030E7824 */ and $t7, $t8, $t6
/* 0BAF50 800BA350 11E00011 */ beqz $t7, .L800BA398
/* 0BAF54 800BA354 0002C0C0 */ sll $t8, $v0, 3
/* 0BAF58 800BA358 0002C8C0 */ sll $t9, $v0, 3
/* 0BAF5C 800BA35C 0322C823 */ subu $t9, $t9, $v0
/* 0BAF60 800BA360 0019C880 */ sll $t9, $t9, 2
/* 0BAF64 800BA364 0099C021 */ addu $t8, $a0, $t9
/* 0BAF68 800BA368 00107080 */ sll $t6, $s0, 2
/* 0BAF6C 800BA36C 030E7821 */ addu $t7, $t8, $t6
/* 0BAF70 800BA370 01E33821 */ addu $a3, $t7, $v1
/* 0BAF74 800BA374 90E80014 */ lbu $t0, 0x14($a3)
/* 0BAF78 800BA378 00000000 */ nop
/* 0BAF7C 800BA37C 00A8082A */ slt $at, $a1, $t0
/* 0BAF80 800BA380 10200003 */ beqz $at, .L800BA390
/* 0BAF84 800BA384 0105C823 */ subu $t9, $t0, $a1
/* 0BAF88 800BA388 10000012 */ b .L800BA3D4
/* 0BAF8C 800BA38C A0F90014 */ sb $t9, 0x14($a3)
.L800BA390:
/* 0BAF90 800BA390 10000010 */ b .L800BA3D4
/* 0BAF94 800BA394 A0E00014 */ sb $zero, 0x14($a3)
.L800BA398:
/* 0BAF98 800BA398 0302C023 */ subu $t8, $t8, $v0
/* 0BAF9C 800BA39C 0018C080 */ sll $t8, $t8, 2
/* 0BAFA0 800BA3A0 00987021 */ addu $t6, $a0, $t8
/* 0BAFA4 800BA3A4 00107880 */ sll $t7, $s0, 2
/* 0BAFA8 800BA3A8 01CFC821 */ addu $t9, $t6, $t7
/* 0BAFAC 800BA3AC 03233821 */ addu $a3, $t9, $v1
/* 0BAFB0 800BA3B0 90F80014 */ lbu $t8, 0x14($a3)
/* 0BAFB4 800BA3B4 00000000 */ nop
/* 0BAFB8 800BA3B8 03054021 */ addu $t0, $t8, $a1
/* 0BAFBC 800BA3BC 29010080 */ slti $at, $t0, 0x80
/* 0BAFC0 800BA3C0 10200003 */ beqz $at, .L800BA3D0
/* 0BAFC4 800BA3C4 00000000 */ nop
/* 0BAFC8 800BA3C8 10000002 */ b .L800BA3D4
/* 0BAFCC 800BA3CC A0E80014 */ sb $t0, 0x14($a3)
.L800BA3D0:
/* 0BAFD0 800BA3D0 A0F10014 */ sb $s1, 0x14($a3)
.L800BA3D4:
/* 0BAFD4 800BA3D4 24630001 */ addiu $v1, $v1, 1
/* 0BAFD8 800BA3D8 146DFFD1 */ bne $v1, $t5, .L800BA320
/* 0BAFDC 800BA3DC 00000000 */ nop
/* 0BAFE0 800BA3E0 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BAFE4 800BA3E4 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BAFE8 800BA3E8 1000002C */ b .L800BA49C
/* 0BAFEC 800BA3EC 24420001 */ addiu $v0, $v0, 1
.L800BA3F0:
/* 0BAFF0 800BA3F0 8CEF000C */ lw $t7, 0xc($a3)
/* 0BAFF4 800BA3F4 8D8E0000 */ lw $t6, ($t4)
/* 0BAFF8 800BA3F8 000FC880 */ sll $t9, $t7, 2
/* 0BAFFC 800BA3FC 01D9C021 */ addu $t8, $t6, $t9
/* 0BB000 800BA400 8F0F0000 */ lw $t7, ($t8)
/* 0BB004 800BA404 00101880 */ sll $v1, $s0, 2
/* 0BB008 800BA408 11E00010 */ beqz $t7, .L800BA44C
/* 0BB00C 800BA40C 000270C0 */ sll $t6, $v0, 3
/* 0BB010 800BA410 01C27023 */ subu $t6, $t6, $v0
/* 0BB014 800BA414 000E7080 */ sll $t6, $t6, 2
/* 0BB018 800BA418 008EC821 */ addu $t9, $a0, $t6
/* 0BB01C 800BA41C 03233821 */ addu $a3, $t9, $v1
/* 0BB020 800BA420 90E80014 */ lbu $t0, 0x14($a3)
/* 0BB024 800BA424 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BB028 800BA428 00A8082A */ slt $at, $a1, $t0
/* 0BB02C 800BA42C 10200003 */ beqz $at, .L800BA43C
/* 0BB030 800BA430 0105C023 */ subu $t8, $t0, $a1
/* 0BB034 800BA434 10000002 */ b .L800BA440
/* 0BB038 800BA438 A0F80014 */ sb $t8, 0x14($a3)
.L800BA43C:
/* 0BB03C 800BA43C A0E00014 */ sb $zero, 0x14($a3)
.L800BA440:
/* 0BB040 800BA440 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BB044 800BA444 10000015 */ b .L800BA49C
/* 0BB048 800BA448 24420001 */ addiu $v0, $v0, 1
.L800BA44C:
/* 0BB04C 800BA44C 000278C0 */ sll $t7, $v0, 3
/* 0BB050 800BA450 01E27823 */ subu $t7, $t7, $v0
/* 0BB054 800BA454 000F7880 */ sll $t7, $t7, 2
/* 0BB058 800BA458 008F7021 */ addu $t6, $a0, $t7
/* 0BB05C 800BA45C 01C33821 */ addu $a3, $t6, $v1
/* 0BB060 800BA460 90F90014 */ lbu $t9, 0x14($a3)
/* 0BB064 800BA464 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BB068 800BA468 03254021 */ addu $t0, $t9, $a1
/* 0BB06C 800BA46C 29010080 */ slti $at, $t0, 0x80
/* 0BB070 800BA470 10200006 */ beqz $at, .L800BA48C
/* 0BB074 800BA474 00000000 */ nop
/* 0BB078 800BA478 A0E80014 */ sb $t0, 0x14($a3)
/* 0BB07C 800BA47C 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BB080 800BA480 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BB084 800BA484 10000005 */ b .L800BA49C
/* 0BB088 800BA488 24420001 */ addiu $v0, $v0, 1
.L800BA48C:
/* 0BB08C 800BA48C A0F10014 */ sb $s1, 0x14($a3)
/* 0BB090 800BA490 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BB094 800BA494 00000000 */ nop
.L800BA498:
/* 0BB098 800BA498 24420001 */ addiu $v0, $v0, 1
.L800BA49C:
/* 0BB09C 800BA49C 0043082A */ slt $at, $v0, $v1
/* 0BB0A0 800BA4A0 1420FF8E */ bnez $at, .L800BA2DC
/* 0BB0A4 800BA4A4 24C6001C */ addiu $a2, $a2, 0x1c
.L800BA4A8:
/* 0BB0A8 800BA4A8 8FB00008 */ lw $s0, 8($sp)
/* 0BB0AC 800BA4AC 8FB1000C */ lw $s1, 0xc($sp)
/* 0BB0B0 800BA4B0 03E00008 */ jr $ra
/* 0BB0B4 800BA4B4 27BD0010 */ addiu $sp, $sp, 0x10
-278
View File
@@ -1,278 +0,0 @@
.late_rodata
glabel D_800E92A8
.float 6.64
glabel D_800E92AC
.float 89128.961
glabel D_800E92B0
.float 6.5333333
glabel D_800E92B4
.float 89128.961
.text
glabel func_800BF634
/* 0C0234 800BF634 3C03800E */ lui $v1, %hi(D_800E3190) # $v1, 0x800e
/* 0C0238 800BF638 24633190 */ addiu $v1, %lo(D_800E3190) # addiu $v1, $v1, 0x3190
/* 0C023C 800BF63C 8C6E0000 */ lw $t6, ($v1)
/* 0C0240 800BF640 44856000 */ mtc1 $a1, $f12
/* 0C0244 800BF644 44877000 */ mtc1 $a3, $f14
/* 0C0248 800BF648 00803825 */ move $a3, $a0
/* 0C024C 800BF64C AFA40000 */ sw $a0, ($sp)
/* 0C0250 800BF650 AFA60008 */ sw $a2, 8($sp)
/* 0C0254 800BF654 11C000E5 */ beqz $t6, .L800BF9EC
/* 0C0258 800BF658 00002825 */ move $a1, $zero
/* 0C025C 800BF65C 3C0F800E */ lui $t7, %hi(D_800E3194) # $t7, 0x800e
/* 0C0260 800BF660 8DEF3194 */ lw $t7, %lo(D_800E3194)($t7)
/* 0C0264 800BF664 0000C080 */ sll $t8, $zero, 2
/* 0C0268 800BF668 00001025 */ move $v0, $zero
/* 0C026C 800BF66C 00002025 */ move $a0, $zero
/* 0C0270 800BF670 01F83021 */ addu $a2, $t7, $t8
.L800BF674:
/* 0C0274 800BF674 8CD90000 */ lw $t9, ($a2)
/* 0C0278 800BF678 24420001 */ addiu $v0, $v0, 1
/* 0C027C 800BF67C 17200002 */ bnez $t9, .L800BF688
/* 0C0280 800BF680 28410020 */ slti $at, $v0, 0x20
/* 0C0284 800BF684 2404FFFF */ li $a0, -1
.L800BF688:
/* 0C0288 800BF688 10200003 */ beqz $at, .L800BF698
/* 0C028C 800BF68C 24C60004 */ addiu $a2, $a2, 4
/* 0C0290 800BF690 1080FFF8 */ beqz $a0, .L800BF674
/* 0C0294 800BF694 00000000 */ nop
.L800BF698:
/* 0C0298 800BF698 108000D4 */ beqz $a0, .L800BF9EC
/* 0C029C 800BF69C 2442FFFF */ addiu $v0, $v0, -1
/* 0C02A0 800BF6A0 3C0B800E */ lui $t3, %hi(D_800E3194) # $t3, 0x800e
/* 0C02A4 800BF6A4 8D6B3194 */ lw $t3, %lo(D_800E3194)($t3)
/* 0C02A8 800BF6A8 00026080 */ sll $t4, $v0, 2
/* 0C02AC 800BF6AC 3C04800E */ lui $a0, %hi(D_800E3188) # $a0, 0x800e
/* 0C02B0 800BF6B0 016C6821 */ addu $t5, $t3, $t4
/* 0C02B4 800BF6B4 24843188 */ addiu $a0, %lo(D_800E3188) # addiu $a0, $a0, 0x3188
/* 0C02B8 800BF6B8 ADA70000 */ sw $a3, ($t5)
/* 0C02BC 800BF6BC 8C8E0000 */ lw $t6, ($a0)
/* 0C02C0 800BF6C0 3C188013 */ lui $t8, %hi(D_80129FC8 + 40) # $t8, 0x8013
/* 0C02C4 800BF6C4 25CF0001 */ addiu $t7, $t6, 1
/* 0C02C8 800BF6C8 AC8F0000 */ sw $t7, ($a0)
/* 0C02CC 800BF6CC 8F189FF0 */ lw $t8, %lo(D_80129FC8 + 40)($t8)
/* 0C02D0 800BF6D0 3C018013 */ lui $at, %hi(D_8012A0B8) # $at, 0x8013
/* 0C02D4 800BF6D4 C420A0B8 */ lwc1 $f0, %lo(D_8012A0B8)($at)
/* 0C02D8 800BF6D8 13000006 */ beqz $t8, .L800BF6F4
/* 0C02DC 800BF6DC 3C198013 */ lui $t9, %hi(D_8012A0D0) # $t9, 0x8013
/* 0C02E0 800BF6E0 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 0C02E4 800BF6E4 44812000 */ mtc1 $at, $f4
/* 0C02E8 800BF6E8 00000000 */ nop
/* 0C02EC 800BF6EC 46040002 */ mul.s $f0, $f0, $f4
/* 0C02F0 800BF6F0 00000000 */ nop
.L800BF6F4:
/* 0C02F4 800BF6F4 8F39A0D0 */ lw $t9, %lo(D_8012A0D0)($t9)
/* 0C02F8 800BF6F8 460E6201 */ sub.s $f8, $f12, $f14
/* 0C02FC 800BF6FC 44993000 */ mtc1 $t9, $f6
/* 0C0300 800BF700 3C05800E */ lui $a1, %hi(D_800E318C) # $a1, 0x800e
/* 0C0304 800BF704 468030A0 */ cvt.s.w $f2, $f6
/* 0C0308 800BF708 8CA5318C */ lw $a1, %lo(D_800E318C)($a1)
/* 0C030C 800BF70C 46024281 */ sub.s $f10, $f8, $f2
/* 0C0310 800BF710 00000000 */ nop
/* 0C0314 800BF714 46005403 */ div.s $f16, $f10, $f0
/* 0C0318 800BF718 444BF800 */ cfc1 $t3, $31
/* 0C031C 800BF71C 00000000 */ nop
/* 0C0320 800BF720 35610003 */ ori $at, $t3, 3
/* 0C0324 800BF724 38210002 */ xori $at, $at, 2
/* 0C0328 800BF728 44C1F800 */ ctc1 $at, $31
/* 0C032C 800BF72C 00000000 */ nop
/* 0C0330 800BF730 460084A4 */ cvt.w.s $f18, $f16
/* 0C0334 800BF734 44049000 */ mfc1 $a0, $f18
/* 0C0338 800BF738 44CBF800 */ ctc1 $t3, $31
/* 0C033C 800BF73C 0085082A */ slt $at, $a0, $a1
/* 0C0340 800BF740 14200003 */ bnez $at, .L800BF750
/* 0C0344 800BF744 00000000 */ nop
/* 0C0348 800BF748 03E00008 */ jr $ra
/* 0C034C 800BF74C 00001025 */ move $v0, $zero
.L800BF750:
/* 0C0350 800BF750 460E6100 */ add.s $f4, $f12, $f14
/* 0C0354 800BF754 46022181 */ sub.s $f6, $f4, $f2
/* 0C0358 800BF758 00000000 */ nop
/* 0C035C 800BF75C 46003203 */ div.s $f8, $f6, $f0
/* 0C0360 800BF760 444CF800 */ cfc1 $t4, $31
/* 0C0364 800BF764 00000000 */ nop
/* 0C0368 800BF768 35810003 */ ori $at, $t4, 3
/* 0C036C 800BF76C 38210002 */ xori $at, $at, 2
/* 0C0370 800BF770 44C1F800 */ ctc1 $at, $31
/* 0C0374 800BF774 00000000 */ nop
/* 0C0378 800BF778 460042A4 */ cvt.w.s $f10, $f8
/* 0C037C 800BF77C 44065000 */ mfc1 $a2, $f10
/* 0C0380 800BF780 44CCF800 */ ctc1 $t4, $31
/* 0C0384 800BF784 04C10003 */ bgez $a2, .L800BF794
/* 0C0388 800BF788 00C5082A */ slt $at, $a2, $a1
/* 0C038C 800BF78C 03E00008 */ jr $ra
/* 0C0390 800BF790 00001025 */ move $v0, $zero
.L800BF794:
/* 0C0394 800BF794 04810002 */ bgez $a0, .L800BF7A0
/* 0C0398 800BF798 00026180 */ sll $t4, $v0, 6
/* 0C039C 800BF79C 00002025 */ move $a0, $zero
.L800BF7A0:
/* 0C03A0 800BF7A0 14200002 */ bnez $at, .L800BF7AC
/* 0C03A4 800BF7A4 240A00FF */ li $t2, 255
/* 0C03A8 800BF7A8 24A6FFFF */ addiu $a2, $a1, -1
.L800BF7AC:
/* 0C03AC 800BF7AC 00C4082A */ slt $at, $a2, $a0
/* 0C03B0 800BF7B0 14200017 */ bnez $at, .L800BF810
/* 0C03B4 800BF7B4 00802825 */ move $a1, $a0
/* 0C03B8 800BF7B8 3C09800E */ lui $t1, %hi(D_800E3184) # $t1, 0x800e
/* 0C03BC 800BF7BC 25293184 */ addiu $t1, %lo(D_800E3184) # addiu $t1, $t1, 0x3184
/* 0C03C0 800BF7C0 24C80001 */ addiu $t0, $a2, 1
.L800BF7C4:
/* 0C03C4 800BF7C4 8D2E0000 */ lw $t6, ($t1)
/* 0C03C8 800BF7C8 000568C0 */ sll $t5, $a1, 3
/* 0C03CC 800BF7CC 01AE2021 */ addu $a0, $t5, $t6
/* 0C03D0 800BF7D0 908F0007 */ lbu $t7, 7($a0)
/* 0C03D4 800BF7D4 24A50001 */ addiu $a1, $a1, 1
/* 0C03D8 800BF7D8 154F000B */ bne $t2, $t7, .L800BF808
/* 0C03DC 800BF7DC 00000000 */ nop
/* 0C03E0 800BF7E0 90980000 */ lbu $t8, ($a0)
/* 0C03E4 800BF7E4 00003025 */ move $a2, $zero
/* 0C03E8 800BF7E8 11580005 */ beq $t2, $t8, .L800BF800
/* 0C03EC 800BF7EC 00803825 */ move $a3, $a0
.L800BF7F0:
/* 0C03F0 800BF7F0 90F90001 */ lbu $t9, 1($a3)
/* 0C03F4 800BF7F4 24C60001 */ addiu $a2, $a2, 1
/* 0C03F8 800BF7F8 1559FFFD */ bne $t2, $t9, .L800BF7F0
/* 0C03FC 800BF7FC 24E70001 */ addiu $a3, $a3, 1
.L800BF800:
/* 0C0400 800BF800 00865821 */ addu $t3, $a0, $a2
/* 0C0404 800BF804 A1620000 */ sb $v0, ($t3)
.L800BF808:
/* 0C0408 800BF808 1505FFEE */ bne $t0, $a1, .L800BF7C4
/* 0C040C 800BF80C 00000000 */ nop
.L800BF810:
/* 0C0410 800BF810 C7B00008 */ lwc1 $f16, 8($sp)
/* 0C0414 800BF814 8C6D0000 */ lw $t5, ($v1)
/* 0C0418 800BF818 460E8481 */ sub.s $f18, $f16, $f14
/* 0C041C 800BF81C 018D2821 */ addu $a1, $t4, $t5
/* 0C0420 800BF820 E4B20000 */ swc1 $f18, ($a1)
/* 0C0424 800BF824 C7A40008 */ lwc1 $f4, 8($sp)
/* 0C0428 800BF828 E4AC0008 */ swc1 $f12, 8($a1)
/* 0C042C 800BF82C 460E2180 */ add.s $f6, $f4, $f14
/* 0C0430 800BF830 3C0F8000 */ lui $t7, %hi(osTvType) # $t7, 0x8000
/* 0C0434 800BF834 E4A60004 */ swc1 $f6, 4($a1)
/* 0C0438 800BF838 460E7282 */ mul.s $f10, $f14, $f14
/* 0C043C 800BF83C C7A80008 */ lwc1 $f8, 8($sp)
/* 0C0440 800BF840 E4AE0010 */ swc1 $f14, 0x10($a1)
/* 0C0444 800BF844 A4A20018 */ sh $v0, 0x18($a1)
/* 0C0448 800BF848 E4AA0014 */ swc1 $f10, 0x14($a1)
/* 0C044C 800BF84C E4A8000C */ swc1 $f8, 0xc($a1)
/* 0C0450 800BF850 8FAE0010 */ lw $t6, 0x10($sp)
# Used to access D_800E92B0 and D_800E92B4.
/* 0C0454 800BF854 3C01800F */ lui $at, %hi(D_800E92B0) # $at, 0x800f
/* 0C0458 800BF858 A4AE001A */ sh $t6, 0x1a($a1)
/* 0C045C 800BF85C 8DEF0300 */ lw $t7, %lo(osTvType)($t7)
/* 0C0460 800BF860 C7A00014 */ lwc1 $f0, 0x14($sp)
/* 0C0464 800BF864 15E0002B */ bnez $t7, .L800BF914
/* 0C0468 800BF868 00000000 */ nop
/* 0C046C 800BF86C 3C01800F */ lui $at, %hi(D_800E92AC) # $at, 0x800f
/* 0C0470 800BF870 C7A00014 */ lwc1 $f0, 0x14($sp)
/* 0C0474 800BF874 C43392A8 */ lwc1 $f19, %lo(D_800E92A8)($at)
/* 0C0478 800BF878 C43292AC */ lwc1 $f18, %lo(D_800E92AC)($at)
/* 0C047C 800BF87C 46000421 */ cvt.d.s $f16, $f0
/* 0C0480 800BF880 46328102 */ mul.d $f4, $f16, $f18
/* 0C0484 800BF884 24190001 */ li $t9, 1
/* 0C0488 800BF888 3C0141E0 */ li $at, 0x41E00000 # 28.000000
/* 0C048C 800BF88C 4458F800 */ cfc1 $t8, $31
/* 0C0490 800BF890 44D9F800 */ ctc1 $t9, $31
/* 0C0494 800BF894 00000000 */ nop
/* 0C0498 800BF898 462021A4 */ cvt.w.d $f6, $f4
/* 0C049C 800BF89C 4459F800 */ cfc1 $t9, $31
/* 0C04A0 800BF8A0 00000000 */ nop
/* 0C04A4 800BF8A4 33390078 */ andi $t9, $t9, 0x78
/* 0C04A8 800BF8A8 13200013 */ beqz $t9, .L800BF8F8
/* 0C04AC 800BF8AC 00000000 */ nop
/* 0C04B0 800BF8B0 44813800 */ mtc1 $at, $f7
/* 0C04B4 800BF8B4 44803000 */ mtc1 $zero, $f6
/* 0C04B8 800BF8B8 24190001 */ li $t9, 1
/* 0C04BC 800BF8BC 46262181 */ sub.d $f6, $f4, $f6
/* 0C04C0 800BF8C0 3C018000 */ lui $at, 0x8000
/* 0C04C4 800BF8C4 44D9F800 */ ctc1 $t9, $31
/* 0C04C8 800BF8C8 00000000 */ nop
/* 0C04CC 800BF8CC 462031A4 */ cvt.w.d $f6, $f6
/* 0C04D0 800BF8D0 4459F800 */ cfc1 $t9, $31
/* 0C04D4 800BF8D4 00000000 */ nop
/* 0C04D8 800BF8D8 33390078 */ andi $t9, $t9, 0x78
/* 0C04DC 800BF8DC 17200004 */ bnez $t9, .L800BF8F0
/* 0C04E0 800BF8E0 00000000 */ nop
/* 0C04E4 800BF8E4 44193000 */ mfc1 $t9, $f6
/* 0C04E8 800BF8E8 10000007 */ b .L800BF908
/* 0C04EC 800BF8EC 0321C825 */ or $t9, $t9, $at
.L800BF8F0:
/* 0C04F0 800BF8F0 10000005 */ b .L800BF908
/* 0C04F4 800BF8F4 2419FFFF */ li $t9, -1
.L800BF8F8:
/* 0C04F8 800BF8F8 44193000 */ mfc1 $t9, $f6
/* 0C04FC 800BF8FC 00000000 */ nop
/* 0C0500 800BF900 0720FFFB */ bltz $t9, .L800BF8F0
/* 0C0504 800BF904 00000000 */ nop
.L800BF908:
/* 0C0508 800BF908 44D8F800 */ ctc1 $t8, $31
/* 0C050C 800BF90C 10000029 */ b .L800BF9B4
/* 0C0510 800BF910 ACB9001C */ sw $t9, 0x1c($a1)
.L800BF914:
/* 0C0514 800BF914 C42B92B0 */ lwc1 $f11, %lo(D_800E92B0)($at)
/* 0C0518 800BF918 C42A92B4 */ lwc1 $f10, %lo(D_800E92B4)($at)
/* 0C051C 800BF91C 46000221 */ cvt.d.s $f8, $f0
/* 0C0520 800BF920 462A4402 */ mul.d $f16, $f8, $f10
/* 0C0524 800BF924 240C0001 */ li $t4, 1
/* 0C0528 800BF928 3C0141E0 */ li $at, 0x41E00000 # 28.000000
/* 0C052C 800BF92C 444BF800 */ cfc1 $t3, $31
/* 0C0530 800BF930 44CCF800 */ ctc1 $t4, $31
/* 0C0534 800BF934 00000000 */ nop
/* 0C0538 800BF938 462084A4 */ cvt.w.d $f18, $f16
/* 0C053C 800BF93C 444CF800 */ cfc1 $t4, $31
/* 0C0540 800BF940 00000000 */ nop
/* 0C0544 800BF944 318C0078 */ andi $t4, $t4, 0x78
/* 0C0548 800BF948 11800013 */ beqz $t4, .L800BF998
/* 0C054C 800BF94C 00000000 */ nop
/* 0C0550 800BF950 44819800 */ mtc1 $at, $f19
/* 0C0554 800BF954 44809000 */ mtc1 $zero, $f18
/* 0C0558 800BF958 240C0001 */ li $t4, 1
/* 0C055C 800BF95C 46328481 */ sub.d $f18, $f16, $f18
/* 0C0560 800BF960 3C018000 */ lui $at, 0x8000
/* 0C0564 800BF964 44CCF800 */ ctc1 $t4, $31
/* 0C0568 800BF968 00000000 */ nop
/* 0C056C 800BF96C 462094A4 */ cvt.w.d $f18, $f18
/* 0C0570 800BF970 444CF800 */ cfc1 $t4, $31
/* 0C0574 800BF974 00000000 */ nop
/* 0C0578 800BF978 318C0078 */ andi $t4, $t4, 0x78
/* 0C057C 800BF97C 15800004 */ bnez $t4, .L800BF990
/* 0C0580 800BF980 00000000 */ nop
/* 0C0584 800BF984 440C9000 */ mfc1 $t4, $f18
/* 0C0588 800BF988 10000007 */ b .L800BF9A8
/* 0C058C 800BF98C 01816025 */ or $t4, $t4, $at
.L800BF990:
/* 0C0590 800BF990 10000005 */ b .L800BF9A8
/* 0C0594 800BF994 240CFFFF */ li $t4, -1
.L800BF998:
/* 0C0598 800BF998 440C9000 */ mfc1 $t4, $f18
/* 0C059C 800BF99C 00000000 */ nop
/* 0C05A0 800BF9A0 0580FFFB */ bltz $t4, .L800BF990
/* 0C05A4 800BF9A4 00000000 */ nop
.L800BF9A8:
/* 0C05A8 800BF9A8 44CBF800 */ ctc1 $t3, $31
/* 0C05AC 800BF9AC ACAC001C */ sw $t4, 0x1c($a1)
/* 0C05B0 800BF9B0 00000000 */ nop
.L800BF9B4:
/* 0C05B4 800BF9B4 3C014780 */ li $at, 0x47800000 # 65536.000000
/* 0C05B8 800BF9B8 C7A20018 */ lwc1 $f2, 0x18($sp)
/* 0C05BC 800BF9BC 44812000 */ mtc1 $at, $f4
/* 0C05C0 800BF9C0 8FA20020 */ lw $v0, 0x20($sp)
/* 0C05C4 800BF9C4 46022183 */ div.s $f6, $f4, $f2
/* 0C05C8 800BF9C8 304D0001 */ andi $t5, $v0, 1
/* 0C05CC 800BF9CC 304E0002 */ andi $t6, $v0, 2
/* 0C05D0 800BF9D0 E4A60020 */ swc1 $f6, 0x20($a1)
/* 0C05D4 800BF9D4 C7A8001C */ lwc1 $f8, 0x1c($sp)
/* 0C05D8 800BF9D8 E4A00028 */ swc1 $f0, 0x28($a1)
/* 0C05DC 800BF9DC A0AD0030 */ sb $t5, 0x30($a1)
/* 0C05E0 800BF9E0 A0AE0031 */ sb $t6, 0x31($a1)
/* 0C05E4 800BF9E4 E4A2002C */ swc1 $f2, 0x2c($a1)
/* 0C05E8 800BF9E8 E4A80024 */ swc1 $f8, 0x24($a1)
.L800BF9EC:
/* 0C05EC 800BF9EC 00A01025 */ move $v0, $a1
/* 0C05F0 800BF9F0 03E00008 */ jr $ra
/* 0C05F4 800BF9F4 00000000 */ nop
-170
View File
@@ -1,170 +0,0 @@
glabel func_800BF9F8
/* 0C05F8 800BF9F8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0C05FC 800BF9FC E7B4000C */ swc1 $f20, 0xc($sp)
/* 0C0600 800BFA00 4486A000 */ mtc1 $a2, $f20
/* 0C0604 800BFA04 AFB10014 */ sw $s1, 0x14($sp)
/* 0C0608 800BFA08 AFB00010 */ sw $s0, 0x10($sp)
/* 0C060C 800BFA0C E7B50008 */ swc1 $f21, 8($sp)
/* 0C0610 800BFA10 1080008A */ beqz $a0, .L800BFC3C
/* 0C0614 800BFA14 AFA50034 */ sw $a1, 0x34($sp)
/* 0C0618 800BFA18 3C0E8013 */ lui $t6, %hi(D_80129FC8 + 40) # $t6, 0x8013
/* 0C061C 800BFA1C 8DCE9FF0 */ lw $t6, %lo(D_80129FC8 + 40)($t6)
/* 0C0620 800BFA20 3C018013 */ lui $at, %hi(D_8012A0B8) # $at, 0x8013
/* 0C0624 800BFA24 C420A0B8 */ lwc1 $f0, %lo(D_8012A0B8)($at)
/* 0C0628 800BFA28 11C00006 */ beqz $t6, .L800BFA44
/* 0C062C 800BFA2C 00001025 */ move $v0, $zero
/* 0C0630 800BFA30 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 0C0634 800BFA34 44812000 */ mtc1 $at, $f4
/* 0C0638 800BFA38 00000000 */ nop
/* 0C063C 800BFA3C 46040002 */ mul.s $f0, $f0, $f4
/* 0C0640 800BFA40 00000000 */ nop
.L800BFA44:
/* 0C0644 800BFA44 3C0D800E */ lui $t5, %hi(D_800E3184) # $t5, 0x800e
/* 0C0648 800BFA48 3C0C800E */ lui $t4, %hi(D_800E318C) # $t4, 0x800e
/* 0C064C 800BFA4C 3C0B8013 */ lui $t3, %hi(D_8012A0D0) # $t3, 0x8013
/* 0C0650 800BFA50 94830018 */ lhu $v1, 0x18($a0)
/* 0C0654 800BFA54 8FA8001C */ lw $t0, 0x1c($sp)
/* 0C0658 800BFA58 256BA0D0 */ addiu $t3, %lo(D_8012A0D0) # addiu $t3, $t3, -0x5f30
/* 0C065C 800BFA5C 258C318C */ addiu $t4, %lo(D_800E318C) # addiu $t4, $t4, 0x318c
/* 0C0660 800BFA60 25AD3184 */ addiu $t5, %lo(D_800E3184) # addiu $t5, $t5, 0x3184
/* 0C0664 800BFA64 241100FF */ li $s1, 255
/* 0C0668 800BFA68 241000FF */ li $s0, 255
.L800BFA6C:
/* 0C066C 800BFA6C 8D6F0000 */ lw $t7, ($t3)
/* 0C0670 800BFA70 C4820008 */ lwc1 $f2, 8($a0)
/* 0C0674 800BFA74 448F3000 */ mtc1 $t7, $f6
/* 0C0678 800BFA78 C48C0010 */ lwc1 $f12, 0x10($a0)
/* 0C067C 800BFA7C 468033A0 */ cvt.s.w $f14, $f6
/* 0C0680 800BFA80 8D870000 */ lw $a3, ($t4)
/* 0C0684 800BFA84 24050001 */ li $a1, 1
/* 0C0688 800BFA88 460C1201 */ sub.s $f8, $f2, $f12
/* 0C068C 800BFA8C 460E4281 */ sub.s $f10, $f8, $f14
/* 0C0690 800BFA90 00000000 */ nop
/* 0C0694 800BFA94 46005403 */ div.s $f16, $f10, $f0
/* 0C0698 800BFA98 4458F800 */ cfc1 $t8, $31
/* 0C069C 800BFA9C 00000000 */ nop
/* 0C06A0 800BFAA0 37010003 */ ori $at, $t8, 3
/* 0C06A4 800BFAA4 38210002 */ xori $at, $at, 2
/* 0C06A8 800BFAA8 44C1F800 */ ctc1 $at, $31
/* 0C06AC 800BFAAC 00000000 */ nop
/* 0C06B0 800BFAB0 460084A4 */ cvt.w.s $f18, $f16
/* 0C06B4 800BFAB4 44069000 */ mfc1 $a2, $f18
/* 0C06B8 800BFAB8 44D8F800 */ ctc1 $t8, $31
/* 0C06BC 800BFABC 00C7082A */ slt $at, $a2, $a3
/* 0C06C0 800BFAC0 14200003 */ bnez $at, .L800BFAD0
/* 0C06C4 800BFAC4 00000000 */ nop
/* 0C06C8 800BFAC8 10000004 */ b .L800BFADC
/* 0C06CC 800BFACC 00002825 */ move $a1, $zero
.L800BFAD0:
/* 0C06D0 800BFAD0 04C10002 */ bgez $a2, .L800BFADC
/* 0C06D4 800BFAD4 00000000 */ nop
/* 0C06D8 800BFAD8 00003025 */ move $a2, $zero
.L800BFADC:
/* 0C06DC 800BFADC 10A00015 */ beqz $a1, .L800BFB34
/* 0C06E0 800BFAE0 00000000 */ nop
/* 0C06E4 800BFAE4 460C1100 */ add.s $f4, $f2, $f12
/* 0C06E8 800BFAE8 460E2181 */ sub.s $f6, $f4, $f14
/* 0C06EC 800BFAEC 00000000 */ nop
/* 0C06F0 800BFAF0 46003203 */ div.s $f8, $f6, $f0
/* 0C06F4 800BFAF4 4459F800 */ cfc1 $t9, $31
/* 0C06F8 800BFAF8 00000000 */ nop
/* 0C06FC 800BFAFC 37210003 */ ori $at, $t9, 3
/* 0C0700 800BFB00 38210002 */ xori $at, $at, 2
/* 0C0704 800BFB04 44C1F800 */ ctc1 $at, $31
/* 0C0708 800BFB08 00000000 */ nop
/* 0C070C 800BFB0C 460042A4 */ cvt.w.s $f10, $f8
/* 0C0710 800BFB10 44085000 */ mfc1 $t0, $f10
/* 0C0714 800BFB14 44D9F800 */ ctc1 $t9, $31
/* 0C0718 800BFB18 05010003 */ bgez $t0, .L800BFB28
/* 0C071C 800BFB1C 0107082A */ slt $at, $t0, $a3
/* 0C0720 800BFB20 10000004 */ b .L800BFB34
/* 0C0724 800BFB24 00002825 */ move $a1, $zero
.L800BFB28:
/* 0C0728 800BFB28 14200002 */ bnez $at, .L800BFB34
/* 0C072C 800BFB2C 00000000 */ nop
/* 0C0730 800BFB30 24E8FFFF */ addiu $t0, $a3, -1
.L800BFB34:
/* 0C0734 800BFB34 10A0002E */ beqz $a1, .L800BFBF0
/* 0C0738 800BFB38 0106082A */ slt $at, $t0, $a2
/* 0C073C 800BFB3C 1420002C */ bnez $at, .L800BFBF0
/* 0C0740 800BFB40 00C02825 */ move $a1, $a2
/* 0C0744 800BFB44 250A0001 */ addiu $t2, $t0, 1
.L800BFB48:
/* 0C0748 800BFB48 8DAF0000 */ lw $t7, ($t5)
/* 0C074C 800BFB4C 000570C0 */ sll $t6, $a1, 3
/* 0C0750 800BFB50 00003825 */ move $a3, $zero
/* 0C0754 800BFB54 1040000F */ beqz $v0, .L800BFB94
/* 0C0758 800BFB58 01CF3021 */ addu $a2, $t6, $t7
/* 0C075C 800BFB5C 90D80007 */ lbu $t8, 7($a2)
/* 0C0760 800BFB60 00000000 */ nop
/* 0C0764 800BFB64 1618001F */ bne $s0, $t8, .L800BFBE4
/* 0C0768 800BFB68 00000000 */ nop
/* 0C076C 800BFB6C 90D90000 */ lbu $t9, ($a2)
/* 0C0770 800BFB70 00000000 */ nop
/* 0C0774 800BFB74 12190005 */ beq $s0, $t9, .L800BFB8C
/* 0C0778 800BFB78 00000000 */ nop
.L800BFB7C:
/* 0C077C 800BFB7C 90CE0001 */ lbu $t6, 1($a2)
/* 0C0780 800BFB80 24C60001 */ addiu $a2, $a2, 1
/* 0C0784 800BFB84 160EFFFD */ bne $s0, $t6, .L800BFB7C
/* 0C0788 800BFB88 00000000 */ nop
.L800BFB8C:
/* 0C078C 800BFB8C 10000015 */ b .L800BFBE4
/* 0C0790 800BFB90 A0C30000 */ sb $v1, ($a2)
.L800BFB94:
/* 0C0794 800BFB94 00C74821 */ addu $t1, $a2, $a3
.L800BFB98:
/* 0C0798 800BFB98 912F0000 */ lbu $t7, ($t1)
/* 0C079C 800BFB9C 28E10007 */ slti $at, $a3, 7
/* 0C07A0 800BFBA0 146F000C */ bne $v1, $t7, .L800BFBD4
/* 0C07A4 800BFBA4 00000000 */ nop
/* 0C07A8 800BFBA8 10200007 */ beqz $at, .L800BFBC8
/* 0C07AC 800BFBAC 00000000 */ nop
.L800BFBB0:
/* 0C07B0 800BFBB0 91380001 */ lbu $t8, 1($t1)
/* 0C07B4 800BFBB4 24E70001 */ addiu $a3, $a3, 1
/* 0C07B8 800BFBB8 28E10007 */ slti $at, $a3, 7
/* 0C07BC 800BFBBC 25290001 */ addiu $t1, $t1, 1
/* 0C07C0 800BFBC0 1420FFFB */ bnez $at, .L800BFBB0
/* 0C07C4 800BFBC4 A138FFFF */ sb $t8, -1($t1)
.L800BFBC8:
/* 0C07C8 800BFBC8 A1310000 */ sb $s1, ($t1)
/* 0C07CC 800BFBCC 24E70001 */ addiu $a3, $a3, 1
/* 0C07D0 800BFBD0 25290001 */ addiu $t1, $t1, 1
.L800BFBD4:
/* 0C07D4 800BFBD4 24E70001 */ addiu $a3, $a3, 1
/* 0C07D8 800BFBD8 28E10008 */ slti $at, $a3, 8
/* 0C07DC 800BFBDC 1420FFEE */ bnez $at, .L800BFB98
/* 0C07E0 800BFBE0 25290001 */ addiu $t1, $t1, 1
.L800BFBE4:
/* 0C07E4 800BFBE4 24A50001 */ addiu $a1, $a1, 1
/* 0C07E8 800BFBE8 1545FFD7 */ bne $t2, $a1, .L800BFB48
/* 0C07EC 800BFBEC 00000000 */ nop
.L800BFBF0:
/* 0C07F0 800BFBF0 1440000E */ bnez $v0, .L800BFC2C
/* 0C07F4 800BFBF4 24010002 */ li $at, 2
/* 0C07F8 800BFBF8 C4920008 */ lwc1 $f18, 8($a0)
/* 0C07FC 800BFBFC C7B00034 */ lwc1 $f16, 0x34($sp)
/* 0C0800 800BFC00 C48E000C */ lwc1 $f14, 0xc($a0)
/* 0C0804 800BFC04 46109400 */ add.s $f16, $f18, $f16
/* 0C0808 800BFC08 C4920000 */ lwc1 $f18, ($a0)
/* 0C080C 800BFC0C C48C0004 */ lwc1 $f12, 4($a0)
/* 0C0810 800BFC10 46147380 */ add.s $f14, $f14, $f20
/* 0C0814 800BFC14 E4900008 */ swc1 $f16, 8($a0)
/* 0C0818 800BFC18 46149480 */ add.s $f18, $f18, $f20
/* 0C081C 800BFC1C E48E000C */ swc1 $f14, 0xc($a0)
/* 0C0820 800BFC20 46146300 */ add.s $f12, $f12, $f20
/* 0C0824 800BFC24 E4920000 */ swc1 $f18, ($a0)
/* 0C0828 800BFC28 E48C0004 */ swc1 $f12, 4($a0)
.L800BFC2C:
/* 0C082C 800BFC2C 24420001 */ addiu $v0, $v0, 1
/* 0C0830 800BFC30 1441FF8E */ bne $v0, $at, .L800BFA6C
/* 0C0834 800BFC34 00000000 */ nop
/* 0C0838 800BFC38 AFA8001C */ sw $t0, 0x1c($sp)
.L800BFC3C:
/* 0C083C 800BFC3C C7B50008 */ lwc1 $f21, 8($sp)
/* 0C0840 800BFC40 C7B4000C */ lwc1 $f20, 0xc($sp)
/* 0C0844 800BFC44 8FB00010 */ lw $s0, 0x10($sp)
/* 0C0848 800BFC48 8FB10014 */ lw $s1, 0x14($sp)
/* 0C084C 800BFC4C 03E00008 */ jr $ra
/* 0C0850 800BFC50 27BD0030 */ addiu $sp, $sp, 0x30
+1 -1
View File
@@ -41,6 +41,6 @@ typedef s32 ptrdiff_t;
typedef float Matrix[4][4];
typedef s16 VertexList;
typedef s8 TriangleList;
typedef u8 TriangleList;
#endif
+1 -1
View File
@@ -42,7 +42,7 @@ typedef s32 ptrdiff_t;
typedef float Matrix[4][4];
typedef s32 MatrixS[4][4];
typedef s16 VertexList;
typedef s8 TriangleList;
typedef u8 TriangleList;
#if defined(__sgi)
#define stubbed_printf
+3 -3
View File
@@ -141,7 +141,7 @@ extern s32 D_B0000578;
/**
* Official Name: camInit
*/
void func_80065EA0(void) {
void camera_init(void) {
s32 i;
s32 j;
u32 stat;
@@ -172,11 +172,11 @@ void func_80065EA0(void) {
}
guPerspectiveF(gPerspectiveMatrixF, &perspNorm, CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE);
f32_matrix_to_s16_matrix((Matrix *) gPerspectiveMatrixF, (MatrixS *) gProjectionMatrixS);
f32_matrix_to_s16_matrix(&gPerspectiveMatrixF, &gProjectionMatrixS);
gCurCamFOV = CAMERA_DEFAULT_FOV;
}
#else
GLOBAL_ASM("asm/non_matchings/camera/func_80065EA0.s")
GLOBAL_ASM("asm/non_matchings/camera/camera_init.s")
#endif
void func_80066060(s32 arg0, s32 arg1) {
+1 -1
View File
@@ -130,7 +130,7 @@ void apply_head_turning_matrix(Gfx **dlist, MatrixS **mtx, Object_68 *obj68, s16
void apply_object_shear_matrix(Gfx **dlist, MatrixS **mtx, Object *arg2, Object *arg3, f32 shear);
// Non Matching
void func_80065EA0(void);
void camera_init(void);
void func_80066CDC(Gfx **dlist, MatrixS **mats);
#endif
+74 -75
View File
@@ -64,13 +64,13 @@ TriangleList D_800E32AC[12] = {
0x08, 0x12, 0x14, 0x16,
};
s8 D_800E32B8[24] = {
u8 D_800E32B8[24] = {
0, 3, 1, 1, 3, 4, 1, 4,
2, 2, 4, 5, 6, 9, 7, 7,
9, 10, 7, 10, 8, 8, 10, 11,
};
s8 D_800E32D0[12] = {
u8 D_800E32D0[12] = {
-1, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1,
};
@@ -80,19 +80,19 @@ VertexList D_800E32DC[24] = {
0xFF60, 0xFF88, 0x00A0, 0xFF88, 0x01E0, 0xFF88, 0x0320, 0xFF88,
};
s8 D_800E330C[12] = {
TriangleList D_800E330C[12] = {
0, 2, 4, 12, 14, 8, 10, 18, 20, 22, 0, 0,
};
s8 D_800E3318[12] = {
TriangleList D_800E3318[12] = {
4, 6, 8, 16, 18, 4, 6, 14, 16, 18, 0, 0,
};
s8 D_800E3324[20] = {
u8 D_800E3324[20] = {
0, 1, 3, 1, 3, 4, 1, 4, 2, 5, 7, 8, 5, 8, 6, 6, 8, 9, 0, 0,
};
s8 D_800E3338[12] = {
u8 D_800E3338[12] = {
-1, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, 0,
};
@@ -145,7 +145,7 @@ TriangleList D_800E349C[92] = {
0x76, 0x78, 0x7A, 0x7C,
};
s8 D_800E34F8[92] = {
u8 D_800E34F8[92] = {
0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1,
0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0,
0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -460,75 +460,74 @@ void render_fade_fullscreen(Gfx **dList, UNUSED MatrixS **mats, UNUSED Vertex **
reset_render_settings(dList);
}
void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, s16 *arg3, u8 *arg4, u8 *arg5, u8 *arg6, u8 *arg7, u8 *arg8) {
s32 temp;
u8 *swap;
s32 sizeVerts;
s32 sizeTris;
s32 i;
s32 j;
j = numVerts;
sizeVerts = j * 10;
sizeTris = numTris * 16;
i = (j * 12);
sTransitionVtx[0] = allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2) + (i * 3), 0xFFFF00FF);
sTransitionVtx[1] = sTransitionVtx[0] + j;
sTransitionTris[0] = (Triangle*)(sTransitionVtx[1] + j);
sTransitionTris[1] = (Triangle*)(((u8 *) sTransitionTris[0]) + sizeTris);
D_8012A770 = (f32 *) (((u8 *) sTransitionTris[1]) + sizeTris);
D_8012A774 = (f32 *) (((u8 *) D_8012A770) + i);
D_8012A778 = (f32 *) (((u8 *) D_8012A774) + i);
if (transition->type & 0x80) {
swap = arg4;
arg4 = arg5;
arg5 = swap;
swap = arg6;
arg6 = arg7;
arg7 = swap;
}
for (i = 0; i < numVerts; i++) {
D_8012A770[(i * 3) + 0] = arg3[arg4[i]];
D_8012A770[(i * 3) + 1] = arg3[arg4[i] + 1];
D_8012A770[(i * 3) + 2] = arg6[i];
D_8012A778[(i * 3) + 0] = arg3[arg5[i]];
D_8012A778[(i * 3) + 1] = arg3[arg5[i] + 1];
D_8012A778[(i * 3) + 2] = arg7[i];
D_8012A774[(i * 3) + 0] = (D_8012A778[(i * 3) + 0] - D_8012A770[(i * 3) + 0]) / sTransitionFadeTimer;
D_8012A774[(i * 3) + 1] = (D_8012A778[(i * 3) + 1] - D_8012A770[(i * 3) + 1]) / sTransitionFadeTimer;
D_8012A774[(i * 3) + 2] = (D_8012A778[(i * 3) + 2] - D_8012A770[(i * 3) + 2]) / sTransitionFadeTimer;
}
for (i = 0; i < 2; i++) {
for (j = 0; j < numVerts; j++) {
sTransitionVtx[i][j].z = -16;
sTransitionVtx[i][j].r = gCurFadeRed;
sTransitionVtx[i][j].g = gCurFadeGreen;
sTransitionVtx[i][j].b = gCurFadeBlue;
}
}
for (i = 0; i < 2; i++) {
for (j = 0; j < numTris; j++) {
sTransitionTris[i][j].flags = 0x40;
sTransitionTris[i][j].vi0 = arg8[(j * 3) + 0];
sTransitionTris[i][j].uv0.u = 0;
sTransitionTris[i][j].uv0.v = 0;
sTransitionTris[i][j].vi1 = arg8[(j * 3) + 1];
sTransitionTris[i][j].uv1.u = 0;
sTransitionTris[i][j].uv1.v = 0;
sTransitionTris[i][j].vi2 = arg8[(j * 3) + 2];
sTransitionTris[i][j].uv2.u = 0;
sTransitionTris[i][j].uv2.v = 0;
}
}
sTransitionStatus = 1;
D_8012A77C = numVerts;
}
void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, VertexList *arg3, TriangleList *arg4, TriangleList *arg5, u8 *arg6, u8 *arg7, u8 *arg8) {
UNUSED s32 pad;
u8 *swap;
s32 sizeVerts;
s32 sizeTris;
s32 i;
s32 j;
j = numVerts;
sizeVerts = j * 10;
sizeTris = numTris * 16;
i = (j * 12);
sTransitionVtx[0] = allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2) + (i * 3), COLOUR_TAG_YELLOW);
sTransitionVtx[1] = sTransitionVtx[0] + j;
sTransitionTris[0] = (Triangle *) (sTransitionVtx[1] + j);
sTransitionTris[1] = (Triangle *) (((u8 *) sTransitionTris[0]) + sizeTris);
D_8012A770 = (f32 *) (((u8 *) sTransitionTris[1]) + sizeTris);
D_8012A774 = (f32 *) (((u8 *) D_8012A770) + i);
D_8012A778 = (f32 *) (((u8 *) D_8012A774) + i);
if (transition->type & 0x80) {
swap = arg4;
arg4 = arg5;
arg5 = swap;
swap = arg6;
arg6 = arg7;
arg7 = swap;
}
for (i = 0; i < numVerts; i++) {
D_8012A770[(i * 3) + 0] = arg3[arg4[i]];
D_8012A770[(i * 3) + 1] = arg3[arg4[i] + 1];
D_8012A770[(i * 3) + 2] = arg6[i];
D_8012A778[(i * 3) + 0] = arg3[arg5[i]];
D_8012A778[(i * 3) + 1] = arg3[arg5[i] + 1];
D_8012A778[(i * 3) + 2] = arg7[i];
D_8012A774[(i * 3) + 0] = (D_8012A778[(i * 3) + 0] - D_8012A770[(i * 3) + 0]) / sTransitionFadeTimer;
D_8012A774[(i * 3) + 1] = (D_8012A778[(i * 3) + 1] - D_8012A770[(i * 3) + 1]) / sTransitionFadeTimer;
D_8012A774[(i * 3) + 2] = (D_8012A778[(i * 3) + 2] - D_8012A770[(i * 3) + 2]) / sTransitionFadeTimer;
}
for (i = 0; i < 2; i++) {
for (j = 0; j < numVerts; j++) {
sTransitionVtx[i][j].z = -16;
sTransitionVtx[i][j].r = gCurFadeRed;
sTransitionVtx[i][j].g = gCurFadeGreen;
sTransitionVtx[i][j].b = gCurFadeBlue;
}
}
for (i = 0; i < 2; i++) {
for (j = 0; j < numTris; j++) {
sTransitionTris[i][j].flags = 0x40; // 0x40 = Draw backface.
sTransitionTris[i][j].vi0 = arg8[(j * 3) + 0];
sTransitionTris[i][j].uv0.u = 0;
sTransitionTris[i][j].uv0.v = 0;
sTransitionTris[i][j].vi1 = arg8[(j * 3) + 1];
sTransitionTris[i][j].uv1.u = 0;
sTransitionTris[i][j].uv1.v = 0;
sTransitionTris[i][j].vi2 = arg8[(j * 3) + 2];
sTransitionTris[i][j].uv2.u = 0;
sTransitionTris[i][j].uv2.v = 0;
}
}
sTransitionStatus = 1;
D_8012A77C = numVerts;
}
void func_800C1130(s32 updateRate) {
s32 i;
+1 -1
View File
@@ -60,7 +60,7 @@ void func_800C27A0(s32 updateRate);
s32 transition_begin(FadeTransition *transition);
void render_fade_circle(Gfx **dList, MatrixS **mats, Vertex **verts);
void func_800C1130(s32 updateRate);
void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, s16 *arg3, u8 *arg4, u8 *arg5, u8 *arg6, u8 *arg7, u8 *arg8);
void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, VertexList *arg3, TriangleList *arg4, TriangleList *arg5, u8 *arg6, u8 *arg7, u8 *arg8);
void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts); //Non Matching
void func_800C1EE8(s32); //Non Matching
+50 -51
View File
@@ -3067,9 +3067,9 @@ GLOBAL_ASM("asm/non_matchings/menu/func_80084854.s")
s32 menu_audio_options_loop(s32 updateRate) {
s32 i;
u32 buttonsPressed;
s32 sp3C;
s32 sp38;
s32 sp34;
s32 contX;
s32 contY;
s32 contXAxis;
s32 sp30;
sp30 = 0;
@@ -3081,65 +3081,64 @@ s32 menu_audio_options_loop(s32 updateRate) {
gMenuDelay -= updateRate;
}
}
if ((gMenuDelay > -20) && (gMenuDelay < 20)) {
if (gMenuDelay > -20 && gMenuDelay < 20) {
func_80084854();
}
if (gIgnorePlayerInputTime == 0) {
sp3C = 0;
sp38 = 0;
contX = 0;
contY = 0;
if (gMenuDelay == 0) {
buttonsPressed = 0;
sp34 = 0;
contXAxis = 0;
for(i = 0; i < 4; i++) {
buttonsPressed |= get_buttons_pressed_from_player(i);
sp34 += clamp_joystick_x_axis(i);
sp3C += gControllersXAxisDirection[i];
sp38 += gControllersYAxisDirection[i];
contXAxis += clamp_joystick_x_axis(i);
contX += gControllersXAxisDirection[i];
contY += gControllersYAxisDirection[i];
}
if (sp34 < 0) {
sp34 += 24;
if (sp34 > 0) {
sp34 = 0;
if (contXAxis < 0) {
contXAxis += 24;
if (contXAxis > 0) {
contXAxis = 0;
}
} else {
sp34 -= 24;
if (sp34 < 0) {
sp34 = 0;
contXAxis -= 24;
if (contXAxis < 0) {
contXAxis = 0;
}
}
sp34 >>= 2;
contXAxis >>= 2;
if (((buttonsPressed & (A_BUTTON | START_BUTTON)) && (gMenuOptionCount == gOptionsMenuItemIndex + 1)) || (buttonsPressed & B_BUTTON)) {
gMenuDelay = -1;
transition_begin(&sMenuTransitionFadeIn);
if (gOpacityDecayTimer >= 0) {
set_music_fade_timer(-0x80);
set_music_fade_timer(-128);
}
sp30 = 3;
} else if ((sp38 < 0) && (gOptionsMenuItemIndex < (gMenuOptionCount - 1))) {
gOptionsMenuItemIndex += 1;
} else if (contY < 0 && gOptionsMenuItemIndex < (gMenuOptionCount - 1)) {
gOptionsMenuItemIndex++;
sp30 = 1;
} else if ((sp38 > 0) && (gOptionsMenuItemIndex > 0)) {
gOptionsMenuItemIndex -= 1;
} else if (contY > 0 && gOptionsMenuItemIndex > 0) {
gOptionsMenuItemIndex--;
sp30 = 1;
} else if ((gOptionsMenuItemIndex == 0) && (sp3C != 0)) {
if (sp3C < 0) {
D_800DFAC8 -= 1;
} else if (gOptionsMenuItemIndex == 0 && contX != 0) {
if (contX < 0) {
D_800DFAC8--;
} else {
D_800DFAC8 += 1;
D_800DFAC8++;
}
if (D_800DFAC8 < 0) {
D_800DFAC8 = 2;
}
if (!(D_800DFAC8 < 3)) {
if (D_800DFAC8 >= 3) {
D_800DFAC8 = 0;
}
set_stereo_pan_mode(D_800DFAC8);
sp30 = 1;
} else if (sp34 && ((gOptionsMenuItemIndex == 1) || (gOptionsMenuItemIndex == 2))) {
} else if (contXAxis && (gOptionsMenuItemIndex == 1 || gOptionsMenuItemIndex == 2)) {
if (gOptionsMenuItemIndex == 1) {
gSfxVolumeSliderValue += sp34;
gSfxVolumeSliderValue += contXAxis;
if (gSfxVolumeSliderValue < 0) {
gSfxVolumeSliderValue = 0;
} else if (gSfxVolumeSliderValue > 256) {
@@ -3147,61 +3146,61 @@ s32 menu_audio_options_loop(s32 updateRate) {
}
set_sfx_volume_slider(gSfxVolumeSliderValue);
} else if (gOptionsMenuItemIndex == 2) {
gMusicVolumeSliderValue += sp34;
gMusicVolumeSliderValue += contXAxis;
if (gMusicVolumeSliderValue < 0) {
gMusicVolumeSliderValue = 0;
} else if (gMusicVolumeSliderValue > 256) {
gMusicVolumeSliderValue = 256;
}
set_music_volume_slider(gMusicVolumeSliderValue);
if (music_is_playing() == 0) {
if (!music_is_playing()) {
if (gOpacityDecayTimer >= 0) {
func_80000B28();
play_music(D_800DFABC);
} else {
func_80000B28();
set_music_player_voice_limit(0x18U);
play_music(0x18U);
set_music_player_voice_limit(24);
play_music(SEQUENCE_MAIN_MENU);
func_80000B18();
}
}
}
} else if ((gMenuOptionCount >= 5) && (gOptionsMenuItemIndex == 3)) {
if ((sp3C < 0) && (D_800DFABC > 0)) {
D_800DFABC -= 1;
} else if (gMenuOptionCount >= 5 && gOptionsMenuItemIndex == 3) {
if (contX < 0 && D_800DFABC > 0) {
D_800DFABC--;
sp30 = 1;
} else if (sp3C > 0) {
} else if (contX > 0) {
if (D_800DFABC < (ALSeqFile_80115CF8_GetSeqCount() - 1)) {
D_800DFABC += 1;
D_800DFABC++;
sp30 = 1;
}
}
if ((buttonsPressed & (A_BUTTON | START_BUTTON))) {
if (buttonsPressed & (A_BUTTON | START_BUTTON)) {
func_80000B28();
set_music_player_voice_limit(0x18U);
set_music_player_voice_limit(24);
play_music(D_800DFABC);
gOpacityDecayTimer = D_800DFABC;
}
}
if (gOptionsMenuItemIndex == 1) {
if (D_801269FC == NULL) {
play_sound_global(0x19BU, (s32* ) &D_801269FC);
play_sound_global(SOUND_VOICE_DIDDY_POSITIVE5, (s32 *) &D_801269FC);
}
} else if (D_801269FC != NULL) {
func_8000488C((u8* ) D_801269FC);
}
if (sp30 == 3) {
play_sound_global(0x241U, NULL);
play_sound_global(SOUND_MENU_BACK3, NULL);
} else if (sp30 == 2) {
play_sound_global(0xEFU, NULL);
play_sound_global(SOUND_SELECT2, NULL);
} else if (sp30 == 1) {
play_sound_global(0xEBU, NULL);
play_sound_global(SOUND_MENU_PICK2, NULL);
}
}
}
if (gMenuDelay < -0x1E) {
if (gMenuDelay < -30) {
func_800851FC();
menu_init(0xCU);
menu_init(MENU_OPTIONS);
return 0;
}
gIgnorePlayerInputTime = 0;
@@ -3210,10 +3209,10 @@ s32 menu_audio_options_loop(s32 updateRate) {
void func_800851FC(void) {
if (D_801269FC != NULL) {
func_8000488C((s32 *) D_801269FC);
func_8000488C(D_801269FC);
}
if (gOpacityDecayTimer >= 0) {
set_music_player_voice_limit(0x18);
set_music_player_voice_limit(24);
play_music(SEQUENCE_MAIN_MENU);
set_music_fade_timer(0x100);
func_80000B18();
@@ -3234,7 +3233,7 @@ void menu_save_options_init(void) {
gOpacityDecayTimer = 0;
D_80126A64 = (u8 *) allocate_from_main_pool_safe(0x800, COLOUR_TAG_WHITE);
D_80126A0C = (unk800861C8 *) allocate_from_main_pool_safe(0xA00, COLOUR_TAG_WHITE);
D_80126A04 = &D_80126A0C[80]; //0x500 bytes forward
D_80126A04 = &D_80126A0C[80];
D_80126A08 = 0;
D_80126BD4 = 0;
D_80126BDC = 0.0f;
+1 -1
View File
@@ -475,11 +475,11 @@ s32 menu_results_loop(s32 updateRate);
s32 menu_options_loop(s32 updateRate);
void func_8008B4C8(void);
void func_8008B758(s8 *activePlayers);
s32 menu_audio_options_loop(s32 updateRate);
// Non Matching functions below here
void load_menu_text(s32 language); // Non Matching
void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2);
s32 menu_audio_options_loop(s32 arg0);
s32 menu_controller_pak_loop(s32 updateRate);
void render_magic_codes_list_menu_text(s32 arg0);
void randomise_ai_racer_slots(s32 arg0);
+1 -1
View File
@@ -535,7 +535,7 @@ void obj_loop_torch_mist(Object *obj, s32 updateRate) {
void obj_init_effectbox(UNUSED Object *obj, UNUSED LevelObjectEntry_EffectBox *entry) {
}
void obj_loop_effectbox(Object *effectBoxObj, s32 arg1) {
void obj_loop_effectbox(Object *effectBoxObj, UNUSED s32 updateRate) {
Object **racers;
LevelObjectEntry_EffectBox *effectBoxEntry;
s32 numRacers;
+1 -1
View File
@@ -403,6 +403,7 @@ void play_rocket_trailing_sound(Object *obj, struct Object_Weapon *weapon, u16 s
void rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket);
void homing_rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket);
void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry);
void obj_loop_effectbox(Object *obj, s32 updateRate);
//Non Matching
void obj_loop_lavaspurt(Object *obj, s32 updateRate);
@@ -413,7 +414,6 @@ void obj_loop_goldenballoon(Object *obj, s32 updateRate);
void obj_loop_groundzipper(Object *obj, s32 updateRate);
void obj_loop_laserbolt(Object *obj, s32 updateRate);
void obj_loop_posarrow(Object *obj, s32 updateRate);
void obj_loop_effectbox(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);
+3 -3
View File
@@ -373,7 +373,7 @@ void load_next_ingame_level(s32 numPlayers, s32 trackID, Vehicle vehicle) {
void load_level_game(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicleId) {
alloc_displaylist_heap(numberOfPlayers);
set_free_queue_state(0);
func_80065EA0();
camera_init();
load_game_text_table();
load_level(levelId, numberOfPlayers, entranceId, vehicleId, gGameCurrentCutscene);
init_hud(get_viewport_count());
@@ -819,7 +819,7 @@ void load_menu_with_level_background(s32 menuId, s32 levelId, s32 cutsceneId) {
set_sound_channel_volume(0, 32767);
set_sound_channel_volume(1, 32767);
set_sound_channel_volume(2, 32767);
func_80065EA0();
camera_init();
if (!gIsLoading) {
gIsLoading = FALSE;
@@ -864,7 +864,7 @@ Vehicle get_level_default_vehicle(void) {
*/
void load_level_menu(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicleId, s32 cutsceneId) {
set_free_queue_state(0);
func_80065EA0();
camera_init();
load_game_text_table();
load_level(levelId, numberOfPlayers, entranceId, vehicleId, cutsceneId);
init_hud(get_viewport_count());
+198 -11
View File
@@ -69,7 +69,7 @@ unk800E3184 *D_800E3184 = NULL;
s32 D_800E3188 = NULL;
s32 D_800E318C = 0;
unk800E3190 *D_800E3190 = NULL;
s32 *D_800E3194 = NULL;
Object **D_800E3194 = NULL;
Object *D_800E3198 = 0;
s32 D_800E319C = 0;
@@ -240,7 +240,7 @@ s32 func_800B9228(LevelModelSegment *arg0) {
while (v0 < D_8012A0E0 && arg0 != D_800E30D8[v0].unk00) {
v0++;
};
if (D_800E30D4[D_800E30D8[v0].unk0C]) {
if (D_800E30D4[D_800E30D8[v0].unkC]) {
result = TRUE;
D_8012A1E8[D_800E30DC++] = v0;
}
@@ -250,7 +250,50 @@ s32 func_800B9228(LevelModelSegment *arg0) {
GLOBAL_ASM("asm/non_matchings/waves/func_800B92F4.s")
GLOBAL_ASM("asm/non_matchings/waves/func_800B97A8.s")
GLOBAL_ASM("asm/non_matchings/waves/func_800B9C18.s")
GLOBAL_ASM("asm/non_matchings/waves/func_800BA288.s")
void func_800BA288(s32 arg0, s32 arg1) {
s32 i;
s32 j;
arg1 <<= 3;
for (i = 0; i < D_8012A0E0; i++) {
if (D_8012A0E8[D_800E30D8[i].unkB] & (1 << D_800E30D8[i].unkA)) {
if (D_80129FC8->unk28 != 0) {
for(j = 0; j < 4; j++) {
s32 ti = j << 3;
if (D_800E30D4[D_800E30D8[i].unkC] & (0xFF << ti)) {
if (arg1 < D_800E30D8[i].unk14[arg0].unk0[j]) {
D_800E30D8[i].unk14[arg0].unk0[j] -= arg1;
} else {
D_800E30D8[i].unk14[arg0].unk0[j] = 0;
}
} else {
if (D_800E30D8[i].unk14[arg0].unk0[j] + arg1 < 128) {
D_800E30D8[i].unk14[arg0].unk0[j] += arg1;
} else {
D_800E30D8[i].unk14[arg0].unk0[j] = 128;
}
}
}
} else {
if (D_800E30D4[D_800E30D8[i].unkC]) {
if (arg1 < D_800E30D8[i].unk14[arg0].unk0[0]) {
D_800E30D8[i].unk14[arg0].unk0[0] -= arg1;
} else {
D_800E30D8[i].unk14[arg0].unk0[0] = 0;
}
} else {
if (D_800E30D8[i].unk14[arg0].unk0[0] + arg1 < 128) {
D_800E30D8[i].unk14[arg0].unk0[0] += arg1;
} else {
D_800E30D8[i].unk14[arg0].unk0[0] = 128;
}
}
}
}
}
}
//https://decomp.me/scratch/h4uac
GLOBAL_ASM("asm/non_matchings/waves/func_800BA4B8.s")
GLOBAL_ASM("asm/non_matchings/waves/func_800BA8E4.s")
@@ -413,7 +456,7 @@ f32 func_800BEFC4(s32 arg0, s32 arg1, s32 arg2) {
GLOBAL_ASM("asm/non_matchings/waves/func_800BEFC4.s")
#endif
void func_800BF3E4(s32 arg0) {
void func_800BF3E4(Object *obj) {
s32 i;
s32 k;
s32 j;
@@ -423,7 +466,7 @@ void func_800BF3E4(s32 arg0) {
if (D_800E3190 != NULL) {
for (i = 0, m = 0; i < D_800E3188 && m == 0; i++) {
if (arg0 == D_800E3194[i]) {
if (obj == D_800E3194[i]) {
m = -1;
}
}
@@ -441,7 +484,7 @@ void func_800BF3E4(s32 arg0) {
}
}
}
D_800E3194[j] = 0;
D_800E3194[j] = NULL;
D_800E3188 -= 1;
}
}
@@ -459,13 +502,157 @@ void func_800BF524(Object *obj) {
if (temp_v0->unk11 != 0) {
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);
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);
}
unk800E3190 *func_800BF634(Object *obj, f32 xPos, f32 zPos, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8) {
f32 var_f0;
s32 var_a0;
s32 var_a0_2;
s32 j;
s32 var_a2_2;
s32 k;
s32 i;
unk800E3184 *temp;
unk800E3190 *result;
GLOBAL_ASM("asm/non_matchings/waves/func_800BF634.s")
GLOBAL_ASM("asm/non_matchings/waves/func_800BF9F8.s")
result = NULL;
if (D_800E3190 != NULL) {
for(i = 0, var_a0 = 0; i < 32 && var_a0 == 0; i++) {
if (D_800E3194[i] == NULL) {
var_a0 = -1;
}
}
i--;
if (var_a0 != 0) {
D_800E3194[i] = obj;
D_800E3188 += 1;
var_f0 = D_8012A0B8;
if (D_80129FC8->unk28 != 0) {
var_f0 *= 0.5f;
}
var_a0_2 = (((xPos - arg3) - D_8012A0D0) / var_f0);
if (var_a0_2 >= D_800E318C) {
return NULL;
}
var_a2_2 = (((xPos + arg3) - D_8012A0D0) / var_f0);
if (var_a2_2 < 0) {
return NULL;
}
if (var_a0_2 < 0) {
var_a0_2 = 0;
}
if (var_a2_2 >= D_800E318C) {
var_a2_2 = D_800E318C - 1;
}
for (j = var_a0_2; j <= var_a2_2; j++) {
temp = &D_800E3184[j];
if (temp->unk0[7] == 0xFF) {
k = 0;
while (temp->unk0[k] != 0xFF) {
k++;
}
temp->unk0[k] = i;
}
}
result = &D_800E3190[i];
result->unk0 = zPos - arg3;
result->unk4 = zPos + arg3;
result->unk8 = xPos;
result->unkC = zPos;
result->unk10 = arg3;
result->unk18 = i;
result->unk14 = arg3 * arg3;
result->unk1A = arg4;
if (osTvType == TV_TYPE_PAL) {
result->unk1C = arg5 * 20971.52;//(f64) (0x80000 / 25.0);
} else {
result->unk1C = arg5 * 17476.27;//(f64) ((0x80000 / 1.2) / 25.0);
}
result->unk20 = 65536.0f / arg6;
result->unk24 = arg7;
result->unk28 = arg5;
result->unk31 = arg8 & 1;
result->unk32 = arg8 & 2;
result->unk2C = arg6;
}
}
return result;
}
void func_800BF9F8(unk800BF9F8 *arg0, f32 arg1, f32 arg2) {
UNUSED s32 pad[4];
s32 sp1C;
f32 var_f0;
s32 var_a1;
s32 i;
s32 var_a2;
s32 j;
s32 iteration;
s32 temp_v1;
u8 *var_a2_2;
if (arg0 != NULL) {
var_f0 = D_8012A0B8;
iteration = 0;
if (D_80129FC8->unk28 != 0) {
var_f0 *= 0.5f;
}
temp_v1 = arg0->unk18;
while (iteration != 2) {
var_a1 = TRUE;
var_a2 = (((arg0->unk8 - arg0->unk10) - D_8012A0D0) / var_f0);
if (var_a2 >= D_800E318C) {
var_a1 = FALSE;
} else if (var_a2 < 0) {
var_a2 = 0;
}
if (var_a1) {
sp1C = (((arg0->unk8 + arg0->unk10) - D_8012A0D0) / var_f0);
if (sp1C < 0) {
var_a1 = FALSE;
} else if (sp1C >= D_800E318C) {
sp1C = D_800E318C - 1;
}
}
if (var_a1) {
for (i = var_a2; i <= sp1C; i++) {
var_a2_2 = &D_800E3184[i].unk0[0];
j = 0;
if (iteration != 0) {
if (var_a2_2[7] == 0xFF) {
while(var_a2_2[0] != 0xFF) {
var_a2_2++;
}
var_a2_2[0] = temp_v1;
}
} else {
while (j < 8) {
if (temp_v1 == var_a2_2[j]) {
while(j < 7){
var_a2_2[j] = var_a2_2[j+1];
j++;
}
var_a2_2[j] = 0xFF;
j++;
}
j++;
}
}
}
}
if (iteration == 0) {
arg0->unk8 += arg1;
arg0->unkC += arg2;
arg0->unk0 += arg2;
arg0->unk4 += arg2;
}
iteration++;
}
}
}
UNUSED void func_800BFC54(unk800BFC54_arg0 *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
if (arg0 != NULL) {
@@ -494,7 +681,7 @@ void func_800BFE98(s32 arg0) {
s32 i;
for(i = 0; i < 32; i++) {
if (D_800E3194[i] != 0) {
if (D_800E3194[i] != NULL) {
D_800E3190[i].unk1A += ((0, D_800E3190[i].unk1C * arg0)) >> 4;
}
}
+24 -7
View File
@@ -4,13 +4,17 @@
#include "types.h"
#include "structs.h"
typedef struct{
typedef struct {
u8 unk0[4];
} LevelModelSubArray;
typedef struct {
LevelModelSegment *unk00;
u8 pad04[0x6];
u8 unkA;
u8 unkB;
u32 unk0C;
u8 pad10[0xC];
u32 unkC;
u8 pad10[0x4];
LevelModelSubArray unk14[2];
} LevelModel_Alternate;
typedef struct unk800E3190 {
@@ -20,12 +24,13 @@ typedef struct unk800E3190 {
f32 unkC;
f32 unk10;
f32 unk14;
u8 pad18[0x2];
s16 unk18;
u16 unk1A;
u32 unk1C;
f32 unk20;
f32 unk24;
u8 pad28[0x8];
f32 unk28;
f32 unk2C;
u8 unk31;
u8 unk32;
u8 pad33[0xE];
@@ -101,6 +106,16 @@ typedef struct unk800BFC54_arg0 {
f32 unk2C;
} unk800BFC54_arg0;
typedef struct unk800BF9F8 {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
u8 pad14[4];
u16 unk18;
} unk800BF9F8;
void func_800B7D20(void);
void func_800B8B8C(void);
s32 func_800B9228(LevelModelSegment *arg0);
@@ -110,15 +125,17 @@ void func_800B8134(unk800B8134 *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);
void func_800BF3E4(s32 arg0);
void func_800BF3E4(Object *obj);
f32 get_wave_height(Object_Log *log, s32 updateRate);
void func_800BA288(s32 arg0, s32 arg1);
void func_800BF9F8(unk800BF9F8 *arg0, f32 arg1, f32 arg2);
unk800E3190 *func_800BF634(Object *obj, f32 arg1, f32 arg2, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8);
Object_64 *func_800BE654(s16, f32, f32); // Non Matching
void func_800BBF78(LevelModel *arg0); // Non Matching
f32 func_800BB2F4(s32, f32, f32, f32*);
void func_800B8C04(s32, s32, s32, s32, s32);
void func_800BF524(Object *);
void *func_800BF634(Object *arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8);
f32 func_800BEFC4(s32, s32, s32);
#endif
+1
View File
@@ -10,6 +10,7 @@ compiler_type = "ido"
"G_IM_.*" = "unsigned int"
"KEEPLINEBREAK" = "void"
"IO_READ" = "volatile unsigned int *"
"WAIT_ON_IOBUSY" = "void"
[decompme.compilers]
"./tools/ido-static-recomp/build/5.3/out/cc" = "ido5.3_irix"