Split audio funcs (#53)

* Split audio funcs
This commit is contained in:
CoderStig 2021-11-06 03:49:37 -06:00 committed by GitHub
parent fd052c4825
commit 964344abb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 11501 additions and 24052 deletions

3
.gitmodules vendored
View File

@ -1,6 +1,3 @@
[submodule "autodecompiler"]
path = autodecompiler
url = https://github.com/farisawan-2000/auto-decompiler
[submodule "asm-differ"]
path = tools/asm-differ
url = https://github.com/simonlindholm/asm-differ

View File

@ -73,7 +73,9 @@ MIO0_DIR = bin
# Files with GLOBAL_ASM blocks
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/*.c)
GLOBAL_ASM_AUDIO_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/audio/*.c)
GLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
GLOBAL_ASM_AUDIO_O_FILES = $(foreach file,$(GLOBAL_ASM_AUDIO_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
# GLOBAL_ASM_DEP = $(BUILD_DIR)/src/audio/non_matching_dep
COURSE_ASM_FILES := $(wildcard courses/*/*/packed.s)
@ -256,6 +258,8 @@ $(BUILD_DIR)/%.o: %.s $(MIO0_FILES) $(RAW_TEXTURE_FILES)
$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) #repeat for other files
$(CPP) $(VERSION_CFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<

View File

@ -1,781 +0,0 @@
# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel func_800BDE50
/* 0BEA50 800BDE50 8C820000 */ lw $v0, ($a0)
/* 0BEA54 800BDE54 00003025 */ move $a2, $zero
/* 0BEA58 800BDE58 00803825 */ move $a3, $a0
/* 0BEA5C 800BDE5C 00027A40 */ sll $t7, $v0, 9
/* 0BEA60 800BDE60 05E00003 */ bltz $t7, .L800BDE70
/* 0BEA64 800BDE64 24090010 */ li $t1, 16
/* 0BEA68 800BDE68 50A00016 */ beql $a1, $zero, .L800BDEC4
/* 0BEA6C 800BDE6C 00027280 */ sll $t6, $v0, 0xa
.L800BDE70:
/* 0BEA70 800BDE70 C4840024 */ lwc1 $f4, 0x24($a0)
/* 0BEA74 800BDE74 C4860020 */ lwc1 $f6, 0x20($a0)
/* 0BEA78 800BDE78 8C820044 */ lw $v0, 0x44($a0)
/* 0BEA7C 800BDE7C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEA80 800BDE80 C44A002C */ lwc1 $f10, 0x2c($v0)
/* 0BEA84 800BDE84 8C580000 */ lw $t8, ($v0)
/* 0BEA88 800BDE88 00185080 */ sll $t2, $t8, 2
/* 0BEA8C 800BDE8C 460A4002 */ mul.s $f0, $f8, $f10
/* 0BEA90 800BDE90 05410008 */ bgez $t2, .L800BDEB4
/* 0BEA94 800BDE94 00000000 */ nop
/* 0BEA98 800BDE98 908B0003 */ lbu $t3, 3($a0)
/* 0BEA9C 800BDE9C 316C0020 */ andi $t4, $t3, 0x20
/* 0BEAA0 800BDEA0 11800004 */ beqz $t4, .L800BDEB4
/* 0BEAA4 800BDEA4 00000000 */ nop
/* 0BEAA8 800BDEA8 C4500024 */ lwc1 $f16, 0x24($v0)
/* 0BEAAC 800BDEAC 46008002 */ mul.s $f0, $f16, $f0
/* 0BEAB0 800BDEB0 00000000 */ nop
.L800BDEB4:
/* 0BEAB4 800BDEB4 46000482 */ mul.s $f18, $f0, $f0
/* 0BEAB8 800BDEB8 8C820000 */ lw $v0, ($a0)
/* 0BEABC 800BDEBC E492002C */ swc1 $f18, 0x2c($a0)
/* 0BEAC0 800BDEC0 00027280 */ sll $t6, $v0, 0xa
.L800BDEC4:
/* 0BEAC4 800BDEC4 05C10007 */ bgez $t6, .L800BDEE4
/* 0BEAC8 800BDEC8 24080080 */ li $t0, 128
/* 0BEACC 800BDECC 908F0009 */ lbu $t7, 9($a0)
/* 0BEAD0 800BDED0 9098000A */ lbu $t8, 0xa($a0)
/* 0BEAD4 800BDED4 01F80019 */ multu $t7, $t8
/* 0BEAD8 800BDED8 0000C812 */ mflo $t9
/* 0BEADC 800BDEDC AC990028 */ sw $t9, 0x28($a0)
/* 0BEAE0 800BDEE0 00000000 */ nop
.L800BDEE4:
/* 0BEAE4 800BDEE4 8CE30048 */ lw $v1, 0x48($a3)
/* 0BEAE8 800BDEE8 24C60004 */ addiu $a2, $a2, 4
/* 0BEAEC 800BDEEC 1060003E */ beqz $v1, .L800BDFE8
/* 0BEAF0 800BDEF0 00000000 */ nop
/* 0BEAF4 800BDEF4 8C620000 */ lw $v0, ($v1)
/* 0BEAF8 800BDEF8 000257C2 */ srl $t2, $v0, 0x1f
/* 0BEAFC 800BDEFC 1140003A */ beqz $t2, .L800BDFE8
/* 0BEB00 800BDF00 00000000 */ nop
/* 0BEB04 800BDF04 8C6B0040 */ lw $t3, 0x40($v1)
/* 0BEB08 800BDF08 00026940 */ sll $t5, $v0, 5
/* 0BEB0C 800BDF0C 11600036 */ beqz $t3, .L800BDFE8
/* 0BEB10 800BDF10 00000000 */ nop
/* 0BEB14 800BDF14 05A30017 */ bgezl $t5, .L800BDF74
/* 0BEB18 800BDF18 80980001 */ lb $t8, 1($a0)
/* 0BEB1C 800BDF1C C4640024 */ lwc1 $f4, 0x24($v1)
/* 0BEB20 800BDF20 C4860030 */ lwc1 $f6, 0x30($a0)
/* 0BEB24 800BDF24 C46A0028 */ lwc1 $f10, 0x28($v1)
/* 0BEB28 800BDF28 906E0005 */ lbu $t6, 5($v1)
/* 0BEB2C 800BDF2C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEB30 800BDF30 906D0000 */ lbu $t5, ($v1)
/* 0BEB34 800BDF34 E4680030 */ swc1 $f8, 0x30($v1)
/* 0BEB38 800BDF38 C490002C */ lwc1 $f16, 0x2c($a0)
/* 0BEB3C 800BDF3C 46105482 */ mul.s $f18, $f10, $f16
/* 0BEB40 800BDF40 E472002C */ swc1 $f18, 0x2c($v1)
/* 0BEB44 800BDF44 908F000A */ lbu $t7, 0xa($a0)
/* 0BEB48 800BDF48 8C8A0028 */ lw $t2, 0x28($a0)
/* 0BEB4C 800BDF4C 010FC023 */ subu $t8, $t0, $t7
/* 0BEB50 800BDF50 01D80019 */ multu $t6, $t8
/* 0BEB54 800BDF54 31AFFFFB */ andi $t7, $t5, 0xfffb
/* 0BEB58 800BDF58 A06F0000 */ sb $t7, ($v1)
/* 0BEB5C 800BDF5C 0000C812 */ mflo $t9
/* 0BEB60 800BDF60 01595821 */ addu $t3, $t2, $t9
/* 0BEB64 800BDF64 000B61C3 */ sra $t4, $t3, 7
/* 0BEB68 800BDF68 1000001F */ b .L800BDFE8
/* 0BEB6C 800BDF6C A06C0006 */ sb $t4, 6($v1)
/* 0BEB70 800BDF70 80980001 */ lb $t8, 1($a0)
.L800BDF74:
/* 0BEB74 800BDF74 07030006 */ bgezl $t8, .L800BDF90
/* 0BEB78 800BDF78 8C820000 */ lw $v0, ($a0)
/* 0BEB7C 800BDF7C C4640024 */ lwc1 $f4, 0x24($v1)
/* 0BEB80 800BDF80 C4860030 */ lwc1 $f6, 0x30($a0)
/* 0BEB84 800BDF84 46062202 */ mul.s $f8, $f4, $f6
/* 0BEB88 800BDF88 E4680030 */ swc1 $f8, 0x30($v1)
/* 0BEB8C 800BDF8C 8C820000 */ lw $v0, ($a0)
.L800BDF90:
/* 0BEB90 800BDF90 0002CA40 */ sll $t9, $v0, 9
/* 0BEB94 800BDF94 07220004 */ bltzl $t9, .L800BDFA8
/* 0BEB98 800BDF98 C46A0028 */ lwc1 $f10, 0x28($v1)
/* 0BEB9C 800BDF9C 50A00007 */ beql $a1, $zero, .L800BDFBC
/* 0BEBA0 800BDFA0 00026280 */ sll $t4, $v0, 0xa
/* 0BEBA4 800BDFA4 C46A0028 */ lwc1 $f10, 0x28($v1)
.L800BDFA8:
/* 0BEBA8 800BDFA8 C490002C */ lwc1 $f16, 0x2c($a0)
/* 0BEBAC 800BDFAC 46105482 */ mul.s $f18, $f10, $f16
/* 0BEBB0 800BDFB0 E472002C */ swc1 $f18, 0x2c($v1)
/* 0BEBB4 800BDFB4 8C820000 */ lw $v0, ($a0)
/* 0BEBB8 800BDFB8 00026280 */ sll $t4, $v0, 0xa
.L800BDFBC:
/* 0BEBBC 800BDFBC 0581000A */ bgez $t4, .L800BDFE8
/* 0BEBC0 800BDFC0 00000000 */ nop
/* 0BEBC4 800BDFC4 908F000A */ lbu $t7, 0xa($a0)
/* 0BEBC8 800BDFC8 906D0005 */ lbu $t5, 5($v1)
/* 0BEBCC 800BDFCC 8C8A0028 */ lw $t2, 0x28($a0)
/* 0BEBD0 800BDFD0 010F7023 */ subu $t6, $t0, $t7
/* 0BEBD4 800BDFD4 01AE0019 */ multu $t5, $t6
/* 0BEBD8 800BDFD8 0000C012 */ mflo $t8
/* 0BEBDC 800BDFDC 0158C821 */ addu $t9, $t2, $t8
/* 0BEBE0 800BDFE0 001959C3 */ sra $t3, $t9, 7
/* 0BEBE4 800BDFE4 A06B0006 */ sb $t3, 6($v1)
.L800BDFE8:
/* 0BEBE8 800BDFE8 14C9FFBE */ bne $a2, $t1, .L800BDEE4
/* 0BEBEC 800BDFEC 24E70004 */ addiu $a3, $a3, 4
/* 0BEBF0 800BDFF0 03E00008 */ jr $ra
/* 0BEBF4 800BDFF4 A0800001 */ sb $zero, 1($a0)
glabel func_800BDFF8
/* 0BEBF8 800BDFF8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0BEBFC 800BDFFC AFBF002C */ sw $ra, 0x2c($sp)
/* 0BEC00 800BE000 AFB50028 */ sw $s5, 0x28($sp)
/* 0BEC04 800BE004 AFB40024 */ sw $s4, 0x24($sp)
/* 0BEC08 800BE008 AFB30020 */ sw $s3, 0x20($sp)
/* 0BEC0C 800BE00C AFB2001C */ sw $s2, 0x1c($sp)
/* 0BEC10 800BE010 AFB10018 */ sw $s1, 0x18($sp)
/* 0BEC14 800BE014 AFB00014 */ sw $s0, 0x14($sp)
/* 0BEC18 800BE018 948E0010 */ lhu $t6, 0x10($a0)
/* 0BEC1C 800BE01C 3C15803B */ lui $s5, %hi(D_803B5EF0) # $s5, 0x803b
/* 0BEC20 800BE020 00809825 */ move $s3, $a0
/* 0BEC24 800BE024 11C00025 */ beqz $t6, .L800BE0BC
/* 0BEC28 800BE028 26B55EF0 */ addiu $s5, %lo(D_803B5EF0) # addiu $s5, $s5, 0x5ef0
/* 0BEC2C 800BE02C C4840018 */ lwc1 $f4, 0x18($a0)
/* 0BEC30 800BE030 C486001C */ lwc1 $f6, 0x1c($a0)
/* 0BEC34 800BE034 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEC38 800BE038 44811000 */ mtc1 $at, $f2
/* 0BEC3C 800BE03C 46062200 */ add.s $f8, $f4, $f6
/* 0BEC40 800BE040 90980000 */ lbu $t8, ($a0)
/* 0BEC44 800BE044 E4880018 */ swc1 $f8, 0x18($a0)
/* 0BEC48 800BE048 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BEC4C 800BE04C 37190004 */ ori $t9, $t8, 4
/* 0BEC50 800BE050 A0990000 */ sb $t9, ($a0)
/* 0BEC54 800BE054 4600103C */ c.lt.s $f2, $f0
/* 0BEC58 800BE058 00000000 */ nop
/* 0BEC5C 800BE05C 45020004 */ bc1fl .L800BE070
/* 0BEC60 800BE060 44801000 */ mtc1 $zero, $f2
/* 0BEC64 800BE064 E4820018 */ swc1 $f2, 0x18($a0)
/* 0BEC68 800BE068 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BEC6C 800BE06C 44801000 */ mtc1 $zero, $f2
.L800BE070:
/* 0BEC70 800BE070 00000000 */ nop
/* 0BEC74 800BE074 4602003C */ c.lt.s $f0, $f2
/* 0BEC78 800BE078 00000000 */ nop
/* 0BEC7C 800BE07C 45020003 */ bc1fl .L800BE08C
/* 0BEC80 800BE080 96680010 */ lhu $t0, 0x10($s3)
/* 0BEC84 800BE084 E6620018 */ swc1 $f2, 0x18($s3)
/* 0BEC88 800BE088 96680010 */ lhu $t0, 0x10($s3)
.L800BE08C:
/* 0BEC8C 800BE08C 2509FFFF */ addiu $t1, $t0, -1
/* 0BEC90 800BE090 312AFFFF */ andi $t2, $t1, 0xffff
/* 0BEC94 800BE094 15400009 */ bnez $t2, .L800BE0BC
/* 0BEC98 800BE098 A6690010 */ sh $t1, 0x10($s3)
/* 0BEC9C 800BE09C 926B0001 */ lbu $t3, 1($s3)
/* 0BECA0 800BE0A0 24010002 */ li $at, 2
/* 0BECA4 800BE0A4 55610006 */ bnel $t3, $at, .L800BE0C0
/* 0BECA8 800BE0A8 8E6C0000 */ lw $t4, ($s3)
/* 0BECAC 800BE0AC 0C02FBCB */ jal func_800BEF2C
/* 0BECB0 800BE0B0 02602025 */ move $a0, $s3
/* 0BECB4 800BE0B4 10000020 */ b .L800BE138
/* 0BECB8 800BE0B8 8FBF002C */ lw $ra, 0x2c($sp)
.L800BE0BC:
/* 0BECBC 800BE0BC 8E6C0000 */ lw $t4, ($s3)
.L800BE0C0:
/* 0BECC0 800BE0C0 00008025 */ move $s0, $zero
/* 0BECC4 800BE0C4 02608825 */ move $s1, $s3
/* 0BECC8 800BE0C8 000C7140 */ sll $t6, $t4, 5
/* 0BECCC 800BE0CC 05C10005 */ bgez $t6, .L800BE0E4
/* 0BECD0 800BE0D0 24140040 */ li $s4, 64
/* 0BECD4 800BE0D4 C66A0018 */ lwc1 $f10, 0x18($s3)
/* 0BECD8 800BE0D8 C6700028 */ lwc1 $f16, 0x28($s3)
/* 0BECDC 800BE0DC 46105482 */ mul.s $f18, $f10, $f16
/* 0BECE0 800BE0E0 E672002C */ swc1 $f18, 0x2c($s3)
.L800BE0E4:
/* 0BECE4 800BE0E4 24120001 */ li $s2, 1
.L800BE0E8:
/* 0BECE8 800BE0E8 8E240030 */ lw $a0, 0x30($s1)
/* 0BECEC 800BE0EC 02A47826 */ xor $t7, $s5, $a0
/* 0BECF0 800BE0F0 000F782B */ sltu $t7, $zero, $t7
/* 0BECF4 800BE0F4 564F000A */ bnel $s2, $t7, .L800BE120
/* 0BECF8 800BE0F8 26100004 */ addiu $s0, $s0, 4
/* 0BECFC 800BE0FC 8C980000 */ lw $t8, ($a0)
/* 0BED00 800BE100 0018CFC2 */ srl $t9, $t8, 0x1f
/* 0BED04 800BE104 56590006 */ bnel $s2, $t9, .L800BE120
/* 0BED08 800BE108 26100004 */ addiu $s0, $s0, 4
/* 0BED0C 800BE10C 8E650000 */ lw $a1, ($s3)
/* 0BED10 800BE110 00054140 */ sll $t0, $a1, 5
/* 0BED14 800BE114 0C02F794 */ jal func_800BDE50
/* 0BED18 800BE118 00082FC2 */ srl $a1, $t0, 0x1f
/* 0BED1C 800BE11C 26100004 */ addiu $s0, $s0, 4
.L800BE120:
/* 0BED20 800BE120 1614FFF1 */ bne $s0, $s4, .L800BE0E8
/* 0BED24 800BE124 26310004 */ addiu $s1, $s1, 4
/* 0BED28 800BE128 926A0000 */ lbu $t2, ($s3)
/* 0BED2C 800BE12C 314BFFFB */ andi $t3, $t2, 0xfffb
/* 0BED30 800BE130 A26B0000 */ sb $t3, ($s3)
/* 0BED34 800BE134 8FBF002C */ lw $ra, 0x2c($sp)
.L800BE138:
/* 0BED38 800BE138 8FB00014 */ lw $s0, 0x14($sp)
/* 0BED3C 800BE13C 8FB10018 */ lw $s1, 0x18($sp)
/* 0BED40 800BE140 8FB2001C */ lw $s2, 0x1c($sp)
/* 0BED44 800BE144 8FB30020 */ lw $s3, 0x20($sp)
/* 0BED48 800BE148 8FB40024 */ lw $s4, 0x24($sp)
/* 0BED4C 800BE14C 8FB50028 */ lw $s5, 0x28($sp)
/* 0BED50 800BE150 03E00008 */ jr $ra
/* 0BED54 800BE154 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800BE158
/* 0BED58 800BE158 C4840004 */ lwc1 $f4, 4($a0)
/* 0BED5C 800BE15C C4860008 */ lwc1 $f6, 8($a0)
/* 0BED60 800BE160 24020001 */ li $v0, 1
/* 0BED64 800BE164 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000
/* 0BED68 800BE168 46062200 */ add.s $f8, $f4, $f6
/* 0BED6C 800BE16C E4880004 */ swc1 $f8, 4($a0)
/* 0BED70 800BE170 444EF800 */ cfc1 $t6, $31
/* 0BED74 800BE174 44C2F800 */ ctc1 $v0, $31
/* 0BED78 800BE178 C48A0004 */ lwc1 $f10, 4($a0)
/* 0BED7C 800BE17C 46005424 */ cvt.w.s $f16, $f10
/* 0BED80 800BE180 4442F800 */ cfc1 $v0, $31
/* 0BED84 800BE184 00000000 */ nop
/* 0BED88 800BE188 30420078 */ andi $v0, $v0, 0x78
/* 0BED8C 800BE18C 50400013 */ beql $v0, $zero, .L800BE1DC
/* 0BED90 800BE190 44028000 */ mfc1 $v0, $f16
/* 0BED94 800BE194 44818000 */ mtc1 $at, $f16
/* 0BED98 800BE198 24020001 */ li $v0, 1
/* 0BED9C 800BE19C 46105401 */ sub.s $f16, $f10, $f16
/* 0BEDA0 800BE1A0 44C2F800 */ ctc1 $v0, $31
/* 0BEDA4 800BE1A4 00000000 */ nop
/* 0BEDA8 800BE1A8 46008424 */ cvt.w.s $f16, $f16
/* 0BEDAC 800BE1AC 4442F800 */ cfc1 $v0, $31
/* 0BEDB0 800BE1B0 00000000 */ nop
/* 0BEDB4 800BE1B4 30420078 */ andi $v0, $v0, 0x78
/* 0BEDB8 800BE1B8 14400005 */ bnez $v0, .L800BE1D0
/* 0BEDBC 800BE1BC 00000000 */ nop
/* 0BEDC0 800BE1C0 44028000 */ mfc1 $v0, $f16
/* 0BEDC4 800BE1C4 3C018000 */ lui $at, 0x8000
/* 0BEDC8 800BE1C8 10000007 */ b .L800BE1E8
/* 0BEDCC 800BE1CC 00411025 */ or $v0, $v0, $at
.L800BE1D0:
/* 0BEDD0 800BE1D0 10000005 */ b .L800BE1E8
/* 0BEDD4 800BE1D4 2402FFFF */ li $v0, -1
/* 0BEDD8 800BE1D8 44028000 */ mfc1 $v0, $f16
.L800BE1DC:
/* 0BEDDC 800BE1DC 00000000 */ nop
/* 0BEDE0 800BE1E0 0440FFFB */ bltz $v0, .L800BE1D0
/* 0BEDE4 800BE1E4 00000000 */ nop
.L800BE1E8:
/* 0BEDE8 800BE1E8 44CEF800 */ ctc1 $t6, $31
/* 0BEDEC 800BE1EC 2C410080 */ sltiu $at, $v0, 0x80
/* 0BEDF0 800BE1F0 54200003 */ bnel $at, $zero, .L800BE200
/* 0BEDF4 800BE1F4 3C013F80 */ lui $at, 0x3f80
/* 0BEDF8 800BE1F8 2402007F */ li $v0, 127
/* 0BEDFC 800BE1FC 3C013F80 */ li $at, 0x3F800000 # 1.000000
.L800BE200:
/* 0BEE00 800BE200 44816000 */ mtc1 $at, $f12
/* 0BEE04 800BE204 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200)
/* 0BEE08 800BE208 00027880 */ sll $t7, $v0, 2
/* 0BEE0C 800BE20C 002F0821 */ addu $at, $at, $t7
/* 0BEE10 800BE210 C4325E20 */ lwc1 $f18, %lo(gPitchBendFrequencyScale + 0x200)($at)
/* 0BEE14 800BE214 C486000C */ lwc1 $f6, 0xc($a0)
/* 0BEE18 800BE218 460C9101 */ sub.s $f4, $f18, $f12
/* 0BEE1C 800BE21C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEE20 800BE220 460C4080 */ add.s $f2, $f8, $f12
/* 0BEE24 800BE224 03E00008 */ jr $ra
/* 0BEE28 800BE228 46001006 */ mov.s $f0, $f2
glabel func_800BE22C
/* 0BEE2C 800BE22C C4840010 */ lwc1 $f4, 0x10($a0)
/* 0BEE30 800BE230 8C8E0004 */ lw $t6, 4($a0)
/* 0BEE34 800BE234 8C8A0008 */ lw $t2, 8($a0)
/* 0BEE38 800BE238 4600218D */ trunc.w.s $f6, $f4
/* 0BEE3C 800BE23C 44183000 */ mfc1 $t8, $f6
/* 0BEE40 800BE240 00000000 */ nop
/* 0BEE44 800BE244 01D8C821 */ addu $t9, $t6, $t8
/* 0BEE48 800BE248 00194282 */ srl $t0, $t9, 0xa
/* 0BEE4C 800BE24C 3109003F */ andi $t1, $t0, 0x3f
/* 0BEE50 800BE250 00095840 */ sll $t3, $t1, 1
/* 0BEE54 800BE254 AC990004 */ sw $t9, 4($a0)
/* 0BEE58 800BE258 014B6021 */ addu $t4, $t2, $t3
/* 0BEE5C 800BE25C 85820000 */ lh $v0, ($t4)
/* 0BEE60 800BE260 00026A03 */ sra $t5, $v0, 8
/* 0BEE64 800BE264 000D7C00 */ sll $t7, $t5, 0x10
/* 0BEE68 800BE268 03E00008 */ jr $ra
/* 0BEE6C 800BE26C 000F1403 */ sra $v0, $t7, 0x10
glabel func_800BE270
/* 0BEE70 800BE270 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0BEE74 800BE274 AFBF0014 */ sw $ra, 0x14($sp)
/* 0BEE78 800BE278 9482001A */ lhu $v0, 0x1a($a0)
/* 0BEE7C 800BE27C 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEE80 800BE280 10400004 */ beqz $v0, .L800BE294
/* 0BEE84 800BE284 244EFFFF */ addiu $t6, $v0, -1
/* 0BEE88 800BE288 44810000 */ mtc1 $at, $f0
/* 0BEE8C 800BE28C 10000072 */ b .L800BE458
/* 0BEE90 800BE290 A48E001A */ sh $t6, 0x1a($a0)
.L800BE294:
/* 0BEE94 800BE294 94820018 */ lhu $v0, 0x18($a0)
/* 0BEE98 800BE298 24010001 */ li $at, 1
/* 0BEE9C 800BE29C 5040001C */ beql $v0, $zero, .L800BE310
/* 0BEEA0 800BE2A0 C48A000C */ lwc1 $f10, 0xc($a0)
/* 0BEEA4 800BE2A4 14410009 */ bne $v0, $at, .L800BE2CC
/* 0BEEA8 800BE2A8 00401825 */ move $v1, $v0
/* 0BEEAC 800BE2AC 8C8F0000 */ lw $t7, ($a0)
/* 0BEEB0 800BE2B0 94820018 */ lhu $v0, 0x18($a0)
/* 0BEEB4 800BE2B4 95F80012 */ lhu $t8, 0x12($t7)
/* 0BEEB8 800BE2B8 44982000 */ mtc1 $t8, $f4
/* 0BEEBC 800BE2BC 00000000 */ nop
/* 0BEEC0 800BE2C0 468021A0 */ cvt.s.w $f6, $f4
/* 0BEEC4 800BE2C4 1000000D */ b .L800BE2FC
/* 0BEEC8 800BE2C8 E486000C */ swc1 $f6, 0xc($a0)
.L800BE2CC:
/* 0BEECC 800BE2CC 8C990000 */ lw $t9, ($a0)
/* 0BEED0 800BE2D0 44839000 */ mtc1 $v1, $f18
/* 0BEED4 800BE2D4 C480000C */ lwc1 $f0, 0xc($a0)
/* 0BEED8 800BE2D8 97280012 */ lhu $t0, 0x12($t9)
/* 0BEEDC 800BE2DC 46809120 */ cvt.s.w $f4, $f18
/* 0BEEE0 800BE2E0 44884000 */ mtc1 $t0, $f8
/* 0BEEE4 800BE2E4 00000000 */ nop
/* 0BEEE8 800BE2E8 468042A0 */ cvt.s.w $f10, $f8
/* 0BEEEC 800BE2EC 46005401 */ sub.s $f16, $f10, $f0
/* 0BEEF0 800BE2F0 46048183 */ div.s $f6, $f16, $f4
/* 0BEEF4 800BE2F4 46060200 */ add.s $f8, $f0, $f6
/* 0BEEF8 800BE2F8 E488000C */ swc1 $f8, 0xc($a0)
.L800BE2FC:
/* 0BEEFC 800BE2FC 2449FFFF */ addiu $t1, $v0, -1
/* 0BEF00 800BE300 A4890018 */ sh $t1, 0x18($a0)
/* 0BEF04 800BE304 10000011 */ b .L800BE34C
/* 0BEF08 800BE308 8C830000 */ lw $v1, ($a0)
/* 0BEF0C 800BE30C C48A000C */ lwc1 $f10, 0xc($a0)
.L800BE310:
/* 0BEF10 800BE310 8C830000 */ lw $v1, ($a0)
/* 0BEF14 800BE314 4600548D */ trunc.w.s $f18, $f10
/* 0BEF18 800BE318 946C0012 */ lhu $t4, 0x12($v1)
/* 0BEF1C 800BE31C 440B9000 */ mfc1 $t3, $f18
/* 0BEF20 800BE320 00000000 */ nop
/* 0BEF24 800BE324 516C000A */ beql $t3, $t4, .L800BE350
/* 0BEF28 800BE328 94820016 */ lhu $v0, 0x16($a0)
/* 0BEF2C 800BE32C 94620016 */ lhu $v0, 0x16($v1)
/* 0BEF30 800BE330 14400006 */ bnez $v0, .L800BE34C
/* 0BEF34 800BE334 A4820018 */ sh $v0, 0x18($a0)
/* 0BEF38 800BE338 946D0012 */ lhu $t5, 0x12($v1)
/* 0BEF3C 800BE33C 448D8000 */ mtc1 $t5, $f16
/* 0BEF40 800BE340 00000000 */ nop
/* 0BEF44 800BE344 46808120 */ cvt.s.w $f4, $f16
/* 0BEF48 800BE348 E484000C */ swc1 $f4, 0xc($a0)
.L800BE34C:
/* 0BEF4C 800BE34C 94820016 */ lhu $v0, 0x16($a0)
.L800BE350:
/* 0BEF50 800BE350 24010001 */ li $at, 1
/* 0BEF54 800BE354 50400018 */ beql $v0, $zero, .L800BE3B8
/* 0BEF58 800BE358 C4920010 */ lwc1 $f18, 0x10($a0)
/* 0BEF5C 800BE35C 14410008 */ bne $v0, $at, .L800BE380
/* 0BEF60 800BE360 00402825 */ move $a1, $v0
/* 0BEF64 800BE364 946E0010 */ lhu $t6, 0x10($v1)
/* 0BEF68 800BE368 94820016 */ lhu $v0, 0x16($a0)
/* 0BEF6C 800BE36C 448E3000 */ mtc1 $t6, $f6
/* 0BEF70 800BE370 00000000 */ nop
/* 0BEF74 800BE374 46803220 */ cvt.s.w $f8, $f6
/* 0BEF78 800BE378 1000000B */ b .L800BE3A8
/* 0BEF7C 800BE37C E4880010 */ swc1 $f8, 0x10($a0)
.L800BE380:
/* 0BEF80 800BE380 946F0010 */ lhu $t7, 0x10($v1)
/* 0BEF84 800BE384 44852000 */ mtc1 $a1, $f4
/* 0BEF88 800BE388 C4800010 */ lwc1 $f0, 0x10($a0)
/* 0BEF8C 800BE38C 448F5000 */ mtc1 $t7, $f10
/* 0BEF90 800BE390 468021A0 */ cvt.s.w $f6, $f4
/* 0BEF94 800BE394 468054A0 */ cvt.s.w $f18, $f10
/* 0BEF98 800BE398 46009401 */ sub.s $f16, $f18, $f0
/* 0BEF9C 800BE39C 46068203 */ div.s $f8, $f16, $f6
/* 0BEFA0 800BE3A0 46080280 */ add.s $f10, $f0, $f8
/* 0BEFA4 800BE3A4 E48A0010 */ swc1 $f10, 0x10($a0)
.L800BE3A8:
/* 0BEFA8 800BE3A8 2458FFFF */ addiu $t8, $v0, -1
/* 0BEFAC 800BE3AC 10000010 */ b .L800BE3F0
/* 0BEFB0 800BE3B0 A4980016 */ sh $t8, 0x16($a0)
/* 0BEFB4 800BE3B4 C4920010 */ lwc1 $f18, 0x10($a0)
.L800BE3B8:
/* 0BEFB8 800BE3B8 94690010 */ lhu $t1, 0x10($v1)
/* 0BEFBC 800BE3BC 4600910D */ trunc.w.s $f4, $f18
/* 0BEFC0 800BE3C0 44082000 */ mfc1 $t0, $f4
/* 0BEFC4 800BE3C4 00000000 */ nop
/* 0BEFC8 800BE3C8 5109000A */ beql $t0, $t1, .L800BE3F4
/* 0BEFCC 800BE3CC 44804000 */ mtc1 $zero, $f8
/* 0BEFD0 800BE3D0 94620014 */ lhu $v0, 0x14($v1)
/* 0BEFD4 800BE3D4 14400006 */ bnez $v0, .L800BE3F0
/* 0BEFD8 800BE3D8 A4820016 */ sh $v0, 0x16($a0)
/* 0BEFDC 800BE3DC 946A0010 */ lhu $t2, 0x10($v1)
/* 0BEFE0 800BE3E0 448A8000 */ mtc1 $t2, $f16
/* 0BEFE4 800BE3E4 00000000 */ nop
/* 0BEFE8 800BE3E8 468081A0 */ cvt.s.w $f6, $f16
/* 0BEFEC 800BE3EC E4860010 */ swc1 $f6, 0x10($a0)
.L800BE3F0:
/* 0BEFF0 800BE3F0 44804000 */ mtc1 $zero, $f8
.L800BE3F4:
/* 0BEFF4 800BE3F4 C48A000C */ lwc1 $f10, 0xc($a0)
/* 0BEFF8 800BE3F8 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEFFC 800BE3FC 460A4032 */ c.eq.s $f8, $f10
/* 0BF000 800BE400 00000000 */ nop
/* 0BF004 800BE404 45000004 */ bc1f .L800BE418
/* 0BF008 800BE408 00000000 */ nop
/* 0BF00C 800BE40C 44810000 */ mtc1 $at, $f0
/* 0BF010 800BE410 10000012 */ b .L800BE45C
/* 0BF014 800BE414 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE418:
/* 0BF018 800BE418 0C02F88B */ jal func_800BE22C
/* 0BF01C 800BE41C AFA40018 */ sw $a0, 0x18($sp)
/* 0BF020 800BE420 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF024 800BE424 44817000 */ mtc1 $at, $f14
/* 0BF028 800BE428 8FA40018 */ lw $a0, 0x18($sp)
/* 0BF02C 800BE42C 3C013980 */ li $at, 0x39800000 # 0.000244
/* 0BF030 800BE430 44812000 */ mtc1 $at, $f4
/* 0BF034 800BE434 C492000C */ lwc1 $f18, 0xc($a0)
/* 0BF038 800BE438 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200)
/* 0BF03C 800BE43C 00025880 */ sll $t3, $v0, 2
/* 0BF040 800BE440 002B0821 */ addu $at, $at, $t3
/* 0BF044 800BE444 46049082 */ mul.s $f2, $f18, $f4
/* 0BF048 800BE448 C4305E20 */ lwc1 $f16, %lo(gPitchBendFrequencyScale + 0x200)($at)
/* 0BF04C 800BE44C 460E8181 */ sub.s $f6, $f16, $f14
/* 0BF050 800BE450 46023202 */ mul.s $f8, $f6, $f2
/* 0BF054 800BE454 460E4000 */ add.s $f0, $f8, $f14
.L800BE458:
/* 0BF058 800BE458 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE45C:
/* 0BF05C 800BE45C 27BD0018 */ addiu $sp, $sp, 0x18
/* 0BF060 800BE460 03E00008 */ jr $ra
/* 0BF064 800BE464 00000000 */ nop
glabel func_800BE468
/* 0BF068 800BE468 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0BF06C 800BE46C AFBF0014 */ sw $ra, 0x14($sp)
/* 0BF070 800BE470 908E007C */ lbu $t6, 0x7c($a0)
/* 0BF074 800BE474 00802825 */ move $a1, $a0
/* 0BF078 800BE478 2484007C */ addiu $a0, $a0, 0x7c
/* 0BF07C 800BE47C 51C00006 */ beql $t6, $zero, .L800BE498
/* 0BF080 800BE480 90AF00A0 */ lbu $t7, 0xa0($a1)
/* 0BF084 800BE484 0C02F856 */ jal func_800BE158
/* 0BF088 800BE488 AFA50018 */ sw $a1, 0x18($sp)
/* 0BF08C 800BE48C 8FA50018 */ lw $a1, 0x18($sp)
/* 0BF090 800BE490 E4A00038 */ swc1 $f0, 0x38($a1)
/* 0BF094 800BE494 90AF00A0 */ lbu $t7, 0xa0($a1)
.L800BE498:
/* 0BF098 800BE498 51E0000B */ beql $t7, $zero, .L800BE4C8
/* 0BF09C 800BE49C 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BF0A0 800BE4A0 8CB80044 */ lw $t8, 0x44($a1)
/* 0BF0A4 800BE4A4 2401FFFF */ li $at, -1
/* 0BF0A8 800BE4A8 24A4008C */ addiu $a0, $a1, 0x8c
/* 0BF0AC 800BE4AC 53010006 */ beql $t8, $at, .L800BE4C8
/* 0BF0B0 800BE4B0 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BF0B4 800BE4B4 0C02F89C */ jal func_800BE270
/* 0BF0B8 800BE4B8 AFA50018 */ sw $a1, 0x18($sp)
/* 0BF0BC 800BE4BC 8FA50018 */ lw $a1, 0x18($sp)
/* 0BF0C0 800BE4C0 E4A0003C */ swc1 $f0, 0x3c($a1)
/* 0BF0C4 800BE4C4 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE4C8:
/* 0BF0C8 800BE4C8 27BD0018 */ addiu $sp, $sp, 0x18
/* 0BF0CC 800BE4CC 03E00008 */ jr $ra
/* 0BF0D0 800BE4D0 00000000 */ nop
glabel func_800BE4D4
/* 0BF0D4 800BE4D4 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF0D8 800BE4D8 44810000 */ mtc1 $at, $f0
/* 0BF0DC 800BE4DC 240E0001 */ li $t6, 1
/* 0BF0E0 800BE4E0 A08E00A0 */ sb $t6, 0xa0($a0)
/* 0BF0E4 800BE4E4 AC800090 */ sw $zero, 0x90($a0)
/* 0BF0E8 800BE4E8 3C0F800F */ lui $t7, %hi(gWaveSamples + 8) # $t7, 0x800f
/* 0BF0EC 800BE4EC E480003C */ swc1 $f0, 0x3c($a0)
/* 0BF0F0 800BE4F0 E4800038 */ swc1 $f0, 0x38($a0)
/* 0BF0F4 800BE4F4 8DEF5C08 */ lw $t7, %lo(gWaveSamples + 8)($t7)
/* 0BF0F8 800BE4F8 8C980044 */ lw $t8, 0x44($a0)
/* 0BF0FC 800BE4FC 2483008C */ addiu $v1, $a0, 0x8c
/* 0BF100 800BE500 AC8F0094 */ sw $t7, 0x94($a0)
/* 0BF104 800BE504 8F19004C */ lw $t9, 0x4c($t8)
/* 0BF108 800BE508 AC99008C */ sw $t9, 0x8c($a0)
/* 0BF10C 800BE50C 97220016 */ lhu $v0, 0x16($t9)
/* 0BF110 800BE510 14400009 */ bnez $v0, .L800BE538
/* 0BF114 800BE514 A48200A4 */ sh $v0, 0xa4($a0)
/* 0BF118 800BE518 2483008C */ addiu $v1, $a0, 0x8c
/* 0BF11C 800BE51C 8C650000 */ lw $a1, ($v1)
/* 0BF120 800BE520 94A90012 */ lhu $t1, 0x12($a1)
/* 0BF124 800BE524 44892000 */ mtc1 $t1, $f4
/* 0BF128 800BE528 00000000 */ nop
/* 0BF12C 800BE52C 468021A0 */ cvt.s.w $f6, $f4
/* 0BF130 800BE530 10000007 */ b .L800BE550
/* 0BF134 800BE534 E466000C */ swc1 $f6, 0xc($v1)
.L800BE538:
/* 0BF138 800BE538 8C650000 */ lw $a1, ($v1)
/* 0BF13C 800BE53C 94AA000E */ lhu $t2, 0xe($a1)
/* 0BF140 800BE540 448A4000 */ mtc1 $t2, $f8
/* 0BF144 800BE544 00000000 */ nop
/* 0BF148 800BE548 468042A0 */ cvt.s.w $f10, $f8
/* 0BF14C 800BE54C E46A000C */ swc1 $f10, 0xc($v1)
.L800BE550:
/* 0BF150 800BE550 94A20014 */ lhu $v0, 0x14($a1)
/* 0BF154 800BE554 14400007 */ bnez $v0, .L800BE574
/* 0BF158 800BE558 A4620016 */ sh $v0, 0x16($v1)
/* 0BF15C 800BE55C 94AB0010 */ lhu $t3, 0x10($a1)
/* 0BF160 800BE560 448B8000 */ mtc1 $t3, $f16
/* 0BF164 800BE564 00000000 */ nop
/* 0BF168 800BE568 468084A0 */ cvt.s.w $f18, $f16
/* 0BF16C 800BE56C 10000006 */ b .L800BE588
/* 0BF170 800BE570 E4720010 */ swc1 $f18, 0x10($v1)
.L800BE574:
/* 0BF174 800BE574 94AC000C */ lhu $t4, 0xc($a1)
/* 0BF178 800BE578 448C2000 */ mtc1 $t4, $f4
/* 0BF17C 800BE57C 00000000 */ nop
/* 0BF180 800BE580 468021A0 */ cvt.s.w $f6, $f4
/* 0BF184 800BE584 E4660010 */ swc1 $f6, 0x10($v1)
.L800BE588:
/* 0BF188 800BE588 94AD0018 */ lhu $t5, 0x18($a1)
/* 0BF18C 800BE58C 24820030 */ addiu $v0, $a0, 0x30
/* 0BF190 800BE590 A46D001A */ sh $t5, 0x1a($v1)
/* 0BF194 800BE594 8C4E0014 */ lw $t6, 0x14($v0)
/* 0BF198 800BE598 8DC10008 */ lw $at, 8($t6)
/* 0BF19C 800BE59C AC41004C */ sw $at, 0x4c($v0)
/* 0BF1A0 800BE5A0 8DD8000C */ lw $t8, 0xc($t6)
/* 0BF1A4 800BE5A4 AC580050 */ sw $t8, 0x50($v0)
/* 0BF1A8 800BE5A8 8DC10010 */ lw $at, 0x10($t6)
/* 0BF1AC 800BE5AC AC410054 */ sw $at, 0x54($v0)
/* 0BF1B0 800BE5B0 8DD80014 */ lw $t8, 0x14($t6)
/* 0BF1B4 800BE5B4 03E00008 */ jr $ra
/* 0BF1B8 800BE5B8 AC580058 */ sw $t8, 0x58($v0)
glabel func_800BE5BC
/* 0BF1BC 800BE5BC AFA60008 */ sw $a2, 8($sp)
/* 0BF1C0 800BE5C0 44800000 */ mtc1 $zero, $f0
/* 0BF1C4 800BE5C4 A0800000 */ sb $zero, ($a0)
/* 0BF1C8 800BE5C8 A0800001 */ sb $zero, 1($a0)
/* 0BF1CC 800BE5CC A4800004 */ sh $zero, 4($a0)
/* 0BF1D0 800BE5D0 AC850020 */ sw $a1, 0x20($a0)
/* 0BF1D4 800BE5D4 E4800008 */ swc1 $f0, 8($a0)
/* 0BF1D8 800BE5D8 03E00008 */ jr $ra
/* 0BF1DC 800BE5DC E4800014 */ swc1 $f0, 0x14($a0)
glabel func_800BE5E0
/* 0BF1E0 800BE5E0 90830001 */ lbu $v1, 1($a0)
/* 0BF1E4 800BE5E4 90820000 */ lbu $v0, ($a0)
/* 0BF1E8 800BE5E8 2C610009 */ sltiu $at, $v1, 9
/* 0BF1EC 800BE5EC 1020009D */ beqz $at, .L800BE864
/* 0BF1F0 800BE5F0 00602825 */ move $a1, $v1
/* 0BF1F4 800BE5F4 00037080 */ sll $t6, $v1, 2
/* 0BF1F8 800BE5F8 3C01800F */ lui $at, %hi(D_800F2EE0)
/* 0BF1FC 800BE5FC 002E0821 */ addu $at, $at, $t6
/* 0BF200 800BE600 8C2E2EE0 */ lw $t6, %lo(D_800F2EE0)($at)
/* 0BF204 800BE604 01C00008 */ jr $t6
/* 0BF208 800BE608 00000000 */ nop
glabel L800BE60C
/* 0BF20C 800BE60C 44800000 */ mtc1 $zero, $f0
/* 0BF210 800BE610 03E00008 */ jr $ra
/* 0BF214 800BE614 00000000 */ nop
glabel L800BE618
/* 0BF218 800BE618 304F0040 */ andi $t7, $v0, 0x40
/* 0BF21C 800BE61C 11E00003 */ beqz $t7, .L800BE62C
/* 0BF220 800BE620 24180005 */ li $t8, 5
/* 0BF224 800BE624 1000008F */ b .L800BE864
/* 0BF228 800BE628 A0980001 */ sb $t8, 1($a0)
.L800BE62C:
glabel L800BE62C
/* 0BF22C 800BE62C 24190003 */ li $t9, 3
/* 0BF230 800BE630 A4800002 */ sh $zero, 2($a0)
/* 0BF234 800BE634 A0990001 */ sb $t9, 1($a0)
.L800BE638:
glabel L800BE638
/* 0BF238 800BE638 84890002 */ lh $t1, 2($a0)
/* 0BF23C 800BE63C 8C880020 */ lw $t0, 0x20($a0)
/* 0BF240 800BE640 2401FFFD */ li $at, -3
/* 0BF244 800BE644 00095080 */ sll $t2, $t1, 2
/* 0BF248 800BE648 010A1821 */ addu $v1, $t0, $t2
/* 0BF24C 800BE64C 846B0000 */ lh $t3, ($v1)
/* 0BF250 800BE650 A48B0004 */ sh $t3, 4($a0)
/* 0BF254 800BE654 84860004 */ lh $a2, 4($a0)
/* 0BF258 800BE658 10C10010 */ beq $a2, $at, .L800BE69C
/* 0BF25C 800BE65C 00C02825 */ move $a1, $a2
/* 0BF260 800BE660 2401FFFE */ li $at, -2
/* 0BF264 800BE664 10C1000A */ beq $a2, $at, .L800BE690
/* 0BF268 800BE668 2401FFFF */ li $at, -1
/* 0BF26C 800BE66C 50C10006 */ beql $a2, $at, .L800BE688
/* 0BF270 800BE670 240C0005 */ li $t4, 5
/* 0BF274 800BE674 14C0000C */ bnez $a2, .L800BE6A8
/* 0BF278 800BE678 28C10004 */ slti $at, $a2, 4
/* 0BF27C 800BE67C 10000041 */ b .L800BE784
/* 0BF280 800BE680 A0800001 */ sb $zero, 1($a0)
/* 0BF284 800BE684 240C0005 */ li $t4, 5
.L800BE688:
/* 0BF288 800BE688 1000003E */ b .L800BE784
/* 0BF28C 800BE68C A08C0001 */ sb $t4, 1($a0)
.L800BE690:
/* 0BF290 800BE690 846D0002 */ lh $t5, 2($v1)
/* 0BF294 800BE694 1000FFE8 */ b .L800BE638
/* 0BF298 800BE698 A48D0002 */ sh $t5, 2($a0)
.L800BE69C:
/* 0BF29C 800BE69C 240E0001 */ li $t6, 1
/* 0BF2A0 800BE6A0 10000038 */ b .L800BE784
/* 0BF2A4 800BE6A4 A08E0001 */ sb $t6, 1($a0)
.L800BE6A8:
/* 0BF2A8 800BE6A8 14200019 */ bnez $at, .L800BE710
/* 0BF2AC 800BE6AC 3C03803B */ lui $v1, %hi(D_803B7088) # $v1, 0x803b
/* 0BF2B0 800BE6B0 24637088 */ addiu $v1, %lo(D_803B7088) # addiu $v1, $v1, 0x7088
/* 0BF2B4 800BE6B4 846F000C */ lh $t7, 0xc($v1)
/* 0BF2B8 800BE6B8 84790000 */ lh $t9, ($v1)
/* 0BF2BC 800BE6BC 00CF0019 */ multu $a2, $t7
/* 0BF2C0 800BE6C0 0000C012 */ mflo $t8
/* 0BF2C4 800BE6C4 00000000 */ nop
/* 0BF2C8 800BE6C8 00000000 */ nop
/* 0BF2CC 800BE6CC 0319001A */ div $zero, $t8, $t9
/* 0BF2D0 800BE6D0 17200002 */ bnez $t9, .L800BE6DC
/* 0BF2D4 800BE6D4 00000000 */ nop
/* 0BF2D8 800BE6D8 0007000D */ break 7
.L800BE6DC:
/* 0BF2DC 800BE6DC 2401FFFF */ li $at, -1
/* 0BF2E0 800BE6E0 17210004 */ bne $t9, $at, .L800BE6F4
/* 0BF2E4 800BE6E4 3C018000 */ lui $at, 0x8000
/* 0BF2E8 800BE6E8 17010002 */ bne $t8, $at, .L800BE6F4
/* 0BF2EC 800BE6EC 00000000 */ nop
/* 0BF2F0 800BE6F0 0006000D */ break 6
.L800BE6F4:
/* 0BF2F4 800BE6F4 00004812 */ mflo $t1
/* 0BF2F8 800BE6F8 05210003 */ bgez $t1, .L800BE708
/* 0BF2FC 800BE6FC 00094083 */ sra $t0, $t1, 2
/* 0BF300 800BE700 25210003 */ addiu $at, $t1, 3
/* 0BF304 800BE704 00014083 */ sra $t0, $at, 2
.L800BE708:
/* 0BF308 800BE708 A4880004 */ sh $t0, 4($a0)
/* 0BF30C 800BE70C 84860004 */ lh $a2, 4($a0)
.L800BE710:
/* 0BF310 800BE710 14C00003 */ bnez $a2, .L800BE720
/* 0BF314 800BE714 240A0001 */ li $t2, 1
/* 0BF318 800BE718 A48A0004 */ sh $t2, 4($a0)
/* 0BF31C 800BE71C 84860004 */ lh $a2, 4($a0)
.L800BE720:
/* 0BF320 800BE720 84830002 */ lh $v1, 2($a0)
/* 0BF324 800BE724 8C8B0020 */ lw $t3, 0x20($a0)
/* 0BF328 800BE728 3C01800F */ lui $at, %hi(D_800F2F04) # $at, 0x800f
/* 0BF32C 800BE72C 00036080 */ sll $t4, $v1, 2
/* 0BF330 800BE730 016C6821 */ addu $t5, $t3, $t4
/* 0BF334 800BE734 85AE0002 */ lh $t6, 2($t5)
/* 0BF338 800BE738 C4282F04 */ lwc1 $f8, %lo(D_800F2F04)($at)
/* 0BF33C 800BE73C 240F0004 */ li $t7, 4
/* 0BF340 800BE740 448E2000 */ mtc1 $t6, $f4
/* 0BF344 800BE744 24780001 */ addiu $t8, $v1, 1
/* 0BF348 800BE748 A08F0001 */ sb $t7, 1($a0)
/* 0BF34C 800BE74C 468021A0 */ cvt.s.w $f6, $f4
/* 0BF350 800BE750 C4840014 */ lwc1 $f4, 0x14($a0)
/* 0BF354 800BE754 A4980002 */ sh $t8, 2($a0)
/* 0BF358 800BE758 46083283 */ div.s $f10, $f6, $f8
/* 0BF35C 800BE75C 44864000 */ mtc1 $a2, $f8
/* 0BF360 800BE760 E48A0018 */ swc1 $f10, 0x18($a0)
/* 0BF364 800BE764 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BF368 800BE768 468042A0 */ cvt.s.w $f10, $f8
/* 0BF36C 800BE76C 46000402 */ mul.s $f16, $f0, $f0
/* 0BF370 800BE770 E4900018 */ swc1 $f16, 0x18($a0)
/* 0BF374 800BE774 C4920018 */ lwc1 $f18, 0x18($a0)
/* 0BF378 800BE778 46049181 */ sub.s $f6, $f18, $f4
/* 0BF37C 800BE77C 460A3403 */ div.s $f16, $f6, $f10
/* 0BF380 800BE780 E490000C */ swc1 $f16, 0xc($a0)
.L800BE784:
/* 0BF384 800BE784 90990001 */ lbu $t9, 1($a0)
/* 0BF388 800BE788 24010004 */ li $at, 4
/* 0BF38C 800BE78C 57210036 */ bnel $t9, $at, .L800BE868
/* 0BF390 800BE790 44806000 */ mtc1 $zero, $f12
glabel L800BE794
/* 0BF394 800BE794 84890004 */ lh $t1, 4($a0)
/* 0BF398 800BE798 C4920014 */ lwc1 $f18, 0x14($a0)
/* 0BF39C 800BE79C C484000C */ lwc1 $f4, 0xc($a0)
/* 0BF3A0 800BE7A0 2528FFFF */ addiu $t0, $t1, -1
/* 0BF3A4 800BE7A4 A4880004 */ sh $t0, 4($a0)
/* 0BF3A8 800BE7A8 46049200 */ add.s $f8, $f18, $f4
/* 0BF3AC 800BE7AC 848A0004 */ lh $t2, 4($a0)
/* 0BF3B0 800BE7B0 240B0003 */ li $t3, 3
/* 0BF3B4 800BE7B4 1D40002B */ bgtz $t2, .L800BE864
/* 0BF3B8 800BE7B8 E4880014 */ swc1 $f8, 0x14($a0)
/* 0BF3BC 800BE7BC 10000029 */ b .L800BE864
/* 0BF3C0 800BE7C0 A08B0001 */ sb $t3, 1($a0)
glabel L800BE7C4
/* 0BF3C4 800BE7C4 44806000 */ mtc1 $zero, $f12
/* 0BF3C8 800BE7C8 C4800008 */ lwc1 $f0, 8($a0)
/* 0BF3CC 800BE7CC C4860014 */ lwc1 $f6, 0x14($a0)
/* 0BF3D0 800BE7D0 C48A0010 */ lwc1 $f10, 0x10($a0)
/* 0BF3D4 800BE7D4 46006032 */ c.eq.s $f12, $f0
/* 0BF3D8 800BE7D8 24010006 */ li $at, 6
/* 0BF3DC 800BE7DC 460A3401 */ sub.s $f16, $f6, $f10
/* 0BF3E0 800BE7E0 4501000E */ bc1t .L800BE81C
/* 0BF3E4 800BE7E4 E4900014 */ swc1 $f16, 0x14($a0)
/* 0BF3E8 800BE7E8 14A1000C */ bne $a1, $at, .L800BE81C
/* 0BF3EC 800BE7EC 00000000 */ nop
/* 0BF3F0 800BE7F0 C4920014 */ lwc1 $f18, 0x14($a0)
/* 0BF3F4 800BE7F4 240C0080 */ li $t4, 128
/* 0BF3F8 800BE7F8 240D0008 */ li $t5, 8
/* 0BF3FC 800BE7FC 4600903C */ c.lt.s $f18, $f0
/* 0BF400 800BE800 00000000 */ nop
/* 0BF404 800BE804 45020018 */ bc1fl .L800BE868
/* 0BF408 800BE808 44806000 */ mtc1 $zero, $f12
/* 0BF40C 800BE80C E4800014 */ swc1 $f0, 0x14($a0)
/* 0BF410 800BE810 A48C0004 */ sh $t4, 4($a0)
/* 0BF414 800BE814 10000013 */ b .L800BE864
/* 0BF418 800BE818 A08D0001 */ sb $t5, 1($a0)
.L800BE81C:
/* 0BF41C 800BE81C 3C01800F */ lui $at, %hi(D_800F2F08) # $at, 0x800f
/* 0BF420 800BE820 C4282F08 */ lwc1 $f8, %lo(D_800F2F08)($at)
/* 0BF424 800BE824 C4840014 */ lwc1 $f4, 0x14($a0)
/* 0BF428 800BE828 4608203C */ c.lt.s $f4, $f8
/* 0BF42C 800BE82C 00000000 */ nop
/* 0BF430 800BE830 4502000D */ bc1fl .L800BE868
/* 0BF434 800BE834 44806000 */ mtc1 $zero, $f12
/* 0BF438 800BE838 E48C0014 */ swc1 $f12, 0x14($a0)
/* 0BF43C 800BE83C 10000009 */ b .L800BE864
/* 0BF440 800BE840 A0800001 */ sb $zero, 1($a0)
glabel L800BE844
/* 0BF444 800BE844 848E0004 */ lh $t6, 4($a0)
/* 0BF448 800BE848 24190007 */ li $t9, 7
/* 0BF44C 800BE84C 25CFFFFF */ addiu $t7, $t6, -1
/* 0BF450 800BE850 A48F0004 */ sh $t7, 4($a0)
/* 0BF454 800BE854 84980004 */ lh $t8, 4($a0)
/* 0BF458 800BE858 57000003 */ bnel $t8, $zero, .L800BE868
/* 0BF45C 800BE85C 44806000 */ mtc1 $zero, $f12
/* 0BF460 800BE860 A0990001 */ sb $t9, 1($a0)
.L800BE864:
glabel L800BE864
/* 0BF464 800BE864 44806000 */ mtc1 $zero, $f12
.L800BE868:
/* 0BF468 800BE868 30490020 */ andi $t1, $v0, 0x20
/* 0BF46C 800BE86C 11200005 */ beqz $t1, .L800BE884
/* 0BF470 800BE870 00401825 */ move $v1, $v0
/* 0BF474 800BE874 24080006 */ li $t0, 6
/* 0BF478 800BE878 304AFFDF */ andi $t2, $v0, 0xffdf
/* 0BF47C 800BE87C A0880001 */ sb $t0, 1($a0)
/* 0BF480 800BE880 A08A0000 */ sb $t2, ($a0)
.L800BE884:
/* 0BF484 800BE884 306B0010 */ andi $t3, $v1, 0x10
/* 0BF488 800BE888 11600004 */ beqz $t3, .L800BE89C
/* 0BF48C 800BE88C 240C0007 */ li $t4, 7
/* 0BF490 800BE890 306DFFEF */ andi $t5, $v1, 0xffef
/* 0BF494 800BE894 A08C0001 */ sb $t4, 1($a0)
/* 0BF498 800BE898 A08D0000 */ sb $t5, ($a0)
.L800BE89C:
/* 0BF49C 800BE89C C4820014 */ lwc1 $f2, 0x14($a0)
/* 0BF4A0 800BE8A0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF4A4 800BE8A4 460C103C */ c.lt.s $f2, $f12
/* 0BF4A8 800BE8A8 00000000 */ nop
/* 0BF4AC 800BE8AC 45020004 */ bc1fl .L800BE8C0
/* 0BF4B0 800BE8B0 44816000 */ mtc1 $at, $f12
/* 0BF4B4 800BE8B4 03E00008 */ jr $ra
/* 0BF4B8 800BE8B8 46006006 */ mov.s $f0, $f12
/* 0BF4BC 800BE8BC 44816000 */ mtc1 $at, $f12
.L800BE8C0:
/* 0BF4C0 800BE8C0 00000000 */ nop
/* 0BF4C4 800BE8C4 4602603C */ c.lt.s $f12, $f2
/* 0BF4C8 800BE8C8 00000000 */ nop
/* 0BF4CC 800BE8CC 45020004 */ bc1fl .L800BE8E0
/* 0BF4D0 800BE8D0 46001006 */ mov.s $f0, $f2
/* 0BF4D4 800BE8D4 03E00008 */ jr $ra
/* 0BF4D8 800BE8D8 46006006 */ mov.s $f0, $f12
/* 0BF4DC 800BE8DC 46001006 */ mov.s $f0, $f2
.L800BE8E0:
/* 0BF4E0 800BE8E0 03E00008 */ jr $ra
/* 0BF4E4 800BE8E4 00000000 */ nop
/* 0BF4E8 800BE8E8 00000000 */ nop
/* 0BF4EC 800BE8EC 00000000 */ nop

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,874 +0,0 @@
# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel create_next_audio_frame_task
/* 0CBF30 800CB330 3C03803B */ lui $v1, %hi(D_803B70B8) # $v1, 0x803b
/* 0CBF34 800CB334 246370B8 */ addiu $v1, %lo(D_803B70B8) # addiu $v1, $v1, 0x70b8
/* 0CBF38 800CB338 8C620000 */ lw $v0, ($v1)
/* 0CBF3C 800CB33C 3C18803B */ lui $t8, %hi(D_803B7088) # $t8, 0x803b
/* 0CBF40 800CB340 27BDFF88 */ addiu $sp, $sp, -0x78
/* 0CBF44 800CB344 244E0001 */ addiu $t6, $v0, 1
/* 0CBF48 800CB348 AC6E0000 */ sw $t6, ($v1)
/* 0CBF4C 800CB34C 8C6F0000 */ lw $t7, ($v1)
/* 0CBF50 800CB350 87187088 */ lh $t8, %lo(D_803B7088)($t8)
/* 0CBF54 800CB354 AFBE0030 */ sw $fp, 0x30($sp)
/* 0CBF58 800CB358 03A0F025 */ move $fp, $sp
/* 0CBF5C 800CB35C 01F8001A */ div $zero, $t7, $t8
/* 0CBF60 800CB360 0000C810 */ mfhi $t9
/* 0CBF64 800CB364 AFBF0034 */ sw $ra, 0x34($sp)
/* 0CBF68 800CB368 AFB2002C */ sw $s2, 0x2c($sp)
/* 0CBF6C 800CB36C AFB10028 */ sw $s1, 0x28($sp)
/* 0CBF70 800CB370 AFB00024 */ sw $s0, 0x24($sp)
/* 0CBF74 800CB374 17000002 */ bnez $t8, .L800CB380
/* 0CBF78 800CB378 00000000 */ nop
/* 0CBF7C 800CB37C 0007000D */ break 7
.L800CB380:
/* 0CBF80 800CB380 2401FFFF */ li $at, -1
/* 0CBF84 800CB384 17010004 */ bne $t8, $at, .L800CB398
/* 0CBF88 800CB388 3C018000 */ lui $at, 0x8000
/* 0CBF8C 800CB38C 15E10002 */ bne $t7, $at, .L800CB398
/* 0CBF90 800CB390 00000000 */ nop
/* 0CBF94 800CB394 0006000D */ break 6
.L800CB398:
/* 0CBF98 800CB398 3C04800F */ lui $a0, %hi(D_800EA3A8) # $a0, 0x800f
/* 0CBF9C 800CB39C 13200003 */ beqz $t9, .L800CB3AC
/* 0CBFA0 800CB3A0 00003025 */ move $a2, $zero
/* 0CBFA4 800CB3A4 10000114 */ b .L800CB7F8
/* 0CBFA8 800CB3A8 00001025 */ move $v0, $zero
.L800CB3AC:
/* 0CBFAC 800CB3AC 8C84A3A8 */ lw $a0, %lo(D_800EA3A8)($a0)
/* 0CBFB0 800CB3B0 0C033630 */ jal osSendMesg
/* 0CBFB4 800CB3B4 8C650000 */ lw $a1, ($v1)
/* 0CBFB8 800CB3B8 24030003 */ li $v1, 3
/* 0CBFBC 800CB3BC 3C04803B */ lui $a0, %hi(D_803B70C4) # $a0, 0x803b
/* 0CBFC0 800CB3C0 248470C4 */ addiu $a0, %lo(D_803B70C4) # addiu $a0, $a0, 0x70c4
/* 0CBFC4 800CB3C4 8C8A0000 */ lw $t2, ($a0)
/* 0CBFC8 800CB3C8 3C05803B */ lui $a1, %hi(D_803B70C0) # $a1, 0x803b
/* 0CBFCC 800CB3CC 24A570C0 */ addiu $a1, %lo(D_803B70C0) # addiu $a1, $a1, 0x70c0
/* 0CBFD0 800CB3D0 254B0001 */ addiu $t3, $t2, 1
/* 0CBFD4 800CB3D4 0163001A */ div $zero, $t3, $v1
/* 0CBFD8 800CB3D8 00006810 */ mfhi $t5
/* 0CBFDC 800CB3DC 25AF0001 */ addiu $t7, $t5, 1
/* 0CBFE0 800CB3E0 01606025 */ move $t4, $t3
/* 0CBFE4 800CB3E4 01E3001A */ div $zero, $t7, $v1
/* 0CBFE8 800CB3E8 8CA80000 */ lw $t0, ($a1)
/* 0CBFEC 800CB3EC AC8B0000 */ sw $t3, ($a0)
/* 0CBFF0 800CB3F0 00008010 */ mfhi $s0
/* 0CBFF4 800CB3F4 39090001 */ xori $t1, $t0, 1
/* 0CBFF8 800CB3F8 ACA90000 */ sw $t1, ($a1)
/* 0CBFFC 800CB3FC 14600002 */ bnez $v1, .L800CB408
/* 0CC000 800CB400 00000000 */ nop
/* 0CC004 800CB404 0007000D */ break 7
.L800CB408:
/* 0CC008 800CB408 2401FFFF */ li $at, -1
/* 0CC00C 800CB40C 14610004 */ bne $v1, $at, .L800CB420
/* 0CC010 800CB410 3C018000 */ lui $at, 0x8000
/* 0CC014 800CB414 15810002 */ bne $t4, $at, .L800CB420
/* 0CC018 800CB418 00000000 */ nop
/* 0CC01C 800CB41C 0006000D */ break 6
.L800CB420:
/* 0CC020 800CB420 AC8D0000 */ sw $t5, ($a0)
/* 0CC024 800CB424 01A07025 */ move $t6, $t5
/* 0CC028 800CB428 14600002 */ bnez $v1, .L800CB434
/* 0CC02C 800CB42C 00000000 */ nop
/* 0CC030 800CB430 0007000D */ break 7
.L800CB434:
/* 0CC034 800CB434 2401FFFF */ li $at, -1
/* 0CC038 800CB438 14610004 */ bne $v1, $at, .L800CB44C
/* 0CC03C 800CB43C 3C018000 */ lui $at, 0x8000
/* 0CC040 800CB440 15E10002 */ bne $t7, $at, .L800CB44C
/* 0CC044 800CB444 00000000 */ nop
/* 0CC048 800CB448 0006000D */ break 6
.L800CB44C:
/* 0CC04C 800CB44C 0C034438 */ jal osAiGetLength
/* 0CC050 800CB450 00000000 */ nop
/* 0CC054 800CB454 0002C082 */ srl $t8, $v0, 2
/* 0CC058 800CB458 0010C840 */ sll $t9, $s0, 1
/* 0CC05C 800CB45C 3C03803B */ lui $v1, %hi(D_803B718C) # 0x803b
/* 0CC060 800CB460 AFD80074 */ sw $t8, 0x74($fp)
/* 0CC064 800CB464 00791821 */ addu $v1, $v1, $t9
/* 0CC068 800CB468 8463718C */ lh $v1, %lo(D_803B718C)($v1) # 0x718c($v1)
/* 0CC06C 800CB46C 00104080 */ sll $t0, $s0, 2
/* 0CC070 800CB470 3C04803B */ lui $a0, %hi(D_803B7180) # 0x803b
/* 0CC074 800CB474 10600004 */ beqz $v1, .L800CB488
/* 0CC078 800CB478 00882021 */ addu $a0, $a0, $t0
/* 0CC07C 800CB47C 8C847180 */ lw $a0, %lo(D_803B7180)($a0) # 0x7180($a0)
/* 0CC080 800CB480 0C03443C */ jal osAiSetNextBuffer
/* 0CC084 800CB484 00032880 */ sll $a1, $v1, 2
.L800CB488:
/* 0CC088 800CB488 3C02803B */ lui $v0, %hi(D_803B70BC) # $v0, 0x803b
/* 0CC08C 800CB48C 8C5170BC */ lw $s1, %lo(D_803B70BC)($v0)
/* 0CC090 800CB490 3C12803B */ lui $s2, %hi(D_803B6008) # $s2, 0x803b
/* 0CC094 800CB494 26526008 */ addiu $s2, %lo(D_803B6008) # addiu $s2, $s2, 0x6008
/* 0CC098 800CB498 1A20000D */ blez $s1, .L800CB4D0
/* 0CC09C 800CB49C 00008025 */ move $s0, $zero
/* 0CC0A0 800CB4A0 02402025 */ move $a0, $s2
.L800CB4A4:
/* 0CC0A4 800CB4A4 00002825 */ move $a1, $zero
/* 0CC0A8 800CB4A8 0C0335D4 */ jal osRecvMesg
/* 0CC0AC 800CB4AC 00003025 */ move $a2, $zero
/* 0CC0B0 800CB4B0 14400002 */ bnez $v0, .L800CB4BC
/* 0CC0B4 800CB4B4 3C09803B */ lui $t1, %hi(D_803B70BC) # $t1, 0x803b
/* 0CC0B8 800CB4B8 2631FFFF */ addiu $s1, $s1, -1
.L800CB4BC:
/* 0CC0BC 800CB4BC 8D2970BC */ lw $t1, %lo(D_803B70BC)($t1)
/* 0CC0C0 800CB4C0 26100001 */ addiu $s0, $s0, 1
/* 0CC0C4 800CB4C4 0209082A */ slt $at, $s0, $t1
/* 0CC0C8 800CB4C8 5420FFF6 */ bnel $at, $zero, .L800CB4A4
/* 0CC0CC 800CB4CC 02402025 */ move $a0, $s2
.L800CB4D0:
/* 0CC0D0 800CB4D0 3C12803B */ lui $s2, %hi(D_803B6008) # $s2, 0x803b
/* 0CC0D4 800CB4D4 1220000A */ beqz $s1, .L800CB500
/* 0CC0D8 800CB4D8 26526008 */ addiu $s2, %lo(D_803B6008) # addiu $s2, $s2, 0x6008
/* 0CC0DC 800CB4DC 1A200008 */ blez $s1, .L800CB500
/* 0CC0E0 800CB4E0 00008025 */ move $s0, $zero
/* 0CC0E4 800CB4E4 02402025 */ move $a0, $s2
.L800CB4E8:
/* 0CC0E8 800CB4E8 00002825 */ move $a1, $zero
/* 0CC0EC 800CB4EC 0C0335D4 */ jal osRecvMesg
/* 0CC0F0 800CB4F0 24060001 */ li $a2, 1
/* 0CC0F4 800CB4F4 26100001 */ addiu $s0, $s0, 1
/* 0CC0F8 800CB4F8 5611FFFB */ bnel $s0, $s1, .L800CB4E8
/* 0CC0FC 800CB4FC 02402025 */ move $a0, $s2
.L800CB500:
/* 0CC100 800CB500 8E510008 */ lw $s1, 8($s2)
/* 0CC104 800CB504 1220000A */ beqz $s1, .L800CB530
/* 0CC108 800CB508 00000000 */ nop
/* 0CC10C 800CB50C 1A200008 */ blez $s1, .L800CB530
/* 0CC110 800CB510 00008025 */ move $s0, $zero
/* 0CC114 800CB514 02402025 */ move $a0, $s2
.L800CB518:
/* 0CC118 800CB518 00002825 */ move $a1, $zero
/* 0CC11C 800CB51C 0C0335D4 */ jal osRecvMesg
/* 0CC120 800CB520 00003025 */ move $a2, $zero
/* 0CC124 800CB524 26100001 */ addiu $s0, $s0, 1
/* 0CC128 800CB528 5611FFFB */ bnel $s0, $s1, .L800CB518
/* 0CC12C 800CB52C 02402025 */ move $a0, $s2
.L800CB530:
/* 0CC130 800CB530 3C01803B */ lui $at, %hi(D_803B70BC) # $at, 0x803b
/* 0CC134 800CB534 0C02EB01 */ jal func_800BAC04
/* 0CC138 800CB538 AC2070BC */ sw $zero, %lo(D_803B70BC)($at)
/* 0CC13C 800CB53C 3C04800F */ lui $a0, %hi(D_800EA3B0) # $a0, 0x800f
/* 0CC140 800CB540 8C84A3B0 */ lw $a0, %lo(D_800EA3B0)($a0)
/* 0CC144 800CB544 27C50058 */ addiu $a1, $fp, 0x58
/* 0CC148 800CB548 0C0335D4 */ jal osRecvMesg
/* 0CC14C 800CB54C 00003025 */ move $a2, $zero
/* 0CC150 800CB550 2401FFFF */ li $at, -1
/* 0CC154 800CB554 10410007 */ beq $v0, $at, .L800CB574
/* 0CC158 800CB558 3C10803B */ lui $s0, %hi(D_803B0500) # $s0, 0x803b
/* 0CC15C 800CB55C 8FCA0058 */ lw $t2, 0x58($fp)
/* 0CC160 800CB560 3C01803B */ lui $at, %hi(D_803B0501) # $at, 0x803b
/* 0CC164 800CB564 26100500 */ addiu $s0, %lo(D_803B0500) # addiu $s0, $s0, 0x500
/* 0CC168 800CB568 240B0005 */ li $t3, 5
/* 0CC16C 800CB56C A02A0501 */ sb $t2, %lo(D_803B0501)($at)
/* 0CC170 800CB570 A20B0000 */ sb $t3, ($s0)
.L800CB574:
/* 0CC174 800CB574 3C10803B */ lui $s0, %hi(D_803B0500) # $s0, 0x803b
/* 0CC178 800CB578 26100500 */ addiu $s0, %lo(D_803B0500) # addiu $s0, $s0, 0x500
/* 0CC17C 800CB57C 920C0000 */ lbu $t4, ($s0)
/* 0CC180 800CB580 1180000F */ beqz $t4, .L800CB5C0
/* 0CC184 800CB584 00000000 */ nop
/* 0CC188 800CB588 0C02E803 */ jal func_800BA00C
/* 0CC18C 800CB58C 00000000 */ nop
/* 0CC190 800CB590 1440000B */ bnez $v0, .L800CB5C0
/* 0CC194 800CB594 00000000 */ nop
/* 0CC198 800CB598 920D0000 */ lbu $t5, ($s0)
/* 0CC19C 800CB59C 3C04800F */ lui $a0, %hi(D_800EA3B4) # $a0, 0x800f
/* 0CC1A0 800CB5A0 3C05803B */ lui $a1, %hi(D_803B0501) # $a1, 0x803b
/* 0CC1A4 800CB5A4 15A00004 */ bnez $t5, .L800CB5B8
/* 0CC1A8 800CB5A8 00003025 */ move $a2, $zero
/* 0CC1AC 800CB5AC 8C84A3B4 */ lw $a0, %lo(D_800EA3B4)($a0)
/* 0CC1B0 800CB5B0 0C033630 */ jal osSendMesg
/* 0CC1B4 800CB5B4 90A50501 */ lbu $a1, %lo(D_803B0501)($a1)
.L800CB5B8:
/* 0CC1B8 800CB5B8 1000008F */ b .L800CB7F8
/* 0CC1BC 800CB5BC 00001025 */ move $v0, $zero
.L800CB5C0:
/* 0CC1C0 800CB5C0 3C02803B */ lui $v0, %hi(D_803B70C0) # $v0, 0x803b
/* 0CC1C4 800CB5C4 8C4270C0 */ lw $v0, %lo(D_803B70C0)($v0)
/* 0CC1C8 800CB5C8 3C0F803B */ lui $t7, %hi(D_803B70D8) # $t7, 0x803b
/* 0CC1CC 800CB5CC 3C12803B */ lui $s2, %hi(D_803B70D4) # $s2, 0x803b
/* 0CC1D0 800CB5D0 00027080 */ sll $t6, $v0, 2
/* 0CC1D4 800CB5D4 01C27021 */ addu $t6, $t6, $v0
/* 0CC1D8 800CB5D8 000E7100 */ sll $t6, $t6, 4
/* 0CC1DC 800CB5DC 25EF70D8 */ addiu $t7, %lo(D_803B70D8) # addiu $t7, $t7, 0x70d8
/* 0CC1E0 800CB5E0 265270D4 */ addiu $s2, %lo(D_803B70D4) # addiu $s2, $s2, 0x70d4
/* 0CC1E4 800CB5E4 01CFC021 */ addu $t8, $t6, $t7
/* 0CC1E8 800CB5E8 AE580000 */ sw $t8, ($s2)
/* 0CC1EC 800CB5EC 3C08803B */ lui $t0, %hi(D_803B70C8) # 0x803b
/* 0CC1F0 800CB5F0 3C10803B */ lui $s0, %hi(D_803B70C4) # $s0, 0x803b
/* 0CC1F4 800CB5F4 0002C880 */ sll $t9, $v0, 2
/* 0CC1F8 800CB5F8 8E1070C4 */ lw $s0, %lo(D_803B70C4)($s0)
/* 0CC1FC 800CB5FC 01194021 */ addu $t0, $t0, $t9
/* 0CC200 800CB600 8D0870C8 */ lw $t0, %lo(D_803B70C8)($t0) # 0x70c8($t0)
/* 0CC204 800CB604 3C0A803B */ lui $t2, %hi(D_803B7180) # $t2, 0x803b
/* 0CC208 800CB608 3C01803B */ lui $at, %hi(D_803B70D0) # $at, 0x803b
/* 0CC20C 800CB60C 254A7180 */ addiu $t2, %lo(D_803B7180) # addiu $t2, $t2, 0x7180
/* 0CC210 800CB610 00104880 */ sll $t1, $s0, 2
/* 0CC214 800CB614 012A3821 */ addu $a3, $t1, $t2
/* 0CC218 800CB618 AC2870D0 */ sw $t0, %lo(D_803B70D0)($at)
/* 0CC21C 800CB61C 8CEB0000 */ lw $t3, ($a3)
/* 0CC220 800CB620 3C05803B */ lui $a1, %hi(D_803B7088) # $a1, 0x803b
/* 0CC224 800CB624 24A57088 */ addiu $a1, %lo(D_803B7088) # addiu $a1, $a1, 0x7088
/* 0CC228 800CB628 AFCB0060 */ sw $t3, 0x60($fp)
/* 0CC22C 800CB62C 84AE0006 */ lh $t6, 6($a1)
/* 0CC230 800CB630 8FCF0074 */ lw $t7, 0x74($fp)
/* 0CC234 800CB634 3C0D803B */ lui $t5, %hi(D_803B718C) # $t5, 0x803b
/* 0CC238 800CB638 25AD718C */ addiu $t5, %lo(D_803B718C) # addiu $t5, $t5, 0x718c
/* 0CC23C 800CB63C 01CFC023 */ subu $t8, $t6, $t7
/* 0CC240 800CB640 27190040 */ addiu $t9, $t8, 0x40
/* 0CC244 800CB644 3328FFF0 */ andi $t0, $t9, 0xfff0
/* 0CC248 800CB648 00106040 */ sll $t4, $s0, 1
/* 0CC24C 800CB64C 018D8821 */ addu $s1, $t4, $t5
/* 0CC250 800CB650 25090010 */ addiu $t1, $t0, 0x10
/* 0CC254 800CB654 A6290000 */ sh $t1, ($s1)
/* 0CC258 800CB658 86230000 */ lh $v1, ($s1)
/* 0CC25C 800CB65C 84A4000A */ lh $a0, 0xa($a1)
/* 0CC260 800CB660 00003025 */ move $a2, $zero
/* 0CC264 800CB664 0064082A */ slt $at, $v1, $a0
/* 0CC268 800CB668 50200004 */ beql $at, $zero, .L800CB67C
/* 0CC26C 800CB66C 84A20008 */ lh $v0, 8($a1)
/* 0CC270 800CB670 A6240000 */ sh $a0, ($s1)
/* 0CC274 800CB674 86230000 */ lh $v1, ($s1)
/* 0CC278 800CB678 84A20008 */ lh $v0, 8($a1)
.L800CB67C:
/* 0CC27C 800CB67C 27C50054 */ addiu $a1, $fp, 0x54
/* 0CC280 800CB680 3C04800F */ lui $a0, %hi(D_800EA3AC) # $a0, 0x800f
/* 0CC284 800CB684 0043082A */ slt $at, $v0, $v1
/* 0CC288 800CB688 10200002 */ beqz $at, .L800CB694
/* 0CC28C 800CB68C 00000000 */ nop
/* 0CC290 800CB690 A6220000 */ sh $v0, ($s1)
.L800CB694:
/* 0CC294 800CB694 8C84A3AC */ lw $a0, %lo(D_800EA3AC)($a0)
/* 0CC298 800CB698 0C0335D4 */ jal osRecvMesg
/* 0CC29C 800CB69C AFC70040 */ sw $a3, 0x40($fp)
/* 0CC2A0 800CB6A0 3C10803B */ lui $s0, %hi(D_803B70D0) # $s0, 0x803b
/* 0CC2A4 800CB6A4 2401FFFF */ li $at, -1
/* 0CC2A8 800CB6A8 10410003 */ beq $v0, $at, .L800CB6B8
/* 0CC2AC 800CB6AC 261070D0 */ addiu $s0, %lo(D_803B70D0) # addiu $s0, $s0, 0x70d0
/* 0CC2B0 800CB6B0 0C032F2C */ jal func_800CBCB0
/* 0CC2B4 800CB6B4 8FC40054 */ lw $a0, 0x54($fp)
.L800CB6B8:
/* 0CC2B8 800CB6B8 8E040000 */ lw $a0, ($s0)
/* 0CC2BC 800CB6BC 27C50070 */ addiu $a1, $fp, 0x70
/* 0CC2C0 800CB6C0 8FC60060 */ lw $a2, 0x60($fp)
/* 0CC2C4 800CB6C4 0C02DC3B */ jal func_800B70EC
/* 0CC2C8 800CB6C8 86270000 */ lh $a3, ($s1)
/* 0CC2CC 800CB6CC 0C034468 */ jal osGetCount
/* 0CC2D0 800CB6D0 AE020000 */ sw $v0, ($s0)
/* 0CC2D4 800CB6D4 3C04803B */ lui $a0, %hi(D_803B7194) # $a0, 0x803b
/* 0CC2D8 800CB6D8 3C07803B */ lui $a3, %hi(D_803B70B8) # $a3, 0x803b
/* 0CC2DC 800CB6DC 24E770B8 */ addiu $a3, %lo(D_803B70B8) # addiu $a3, $a3, 0x70b8
/* 0CC2E0 800CB6E0 24847194 */ addiu $a0, %lo(D_803B7194) # addiu $a0, $a0, 0x7194
/* 0CC2E4 800CB6E4 8C8A0000 */ lw $t2, ($a0)
/* 0CC2E8 800CB6E8 8CEB0000 */ lw $t3, ($a3)
/* 0CC2EC 800CB6EC 8CF80000 */ lw $t8, ($a3)
/* 0CC2F0 800CB6F0 3C10803B */ lui $s0, %hi(D_803B70C0) # $s0, 0x803b
/* 0CC2F4 800CB6F4 014B6021 */ addu $t4, $t2, $t3
/* 0CC2F8 800CB6F8 004C0019 */ multu $v0, $t4
/* 0CC2FC 800CB6FC 331900FF */ andi $t9, $t8, 0xff
/* 0CC300 800CB700 00194040 */ sll $t0, $t9, 1
/* 0CC304 800CB704 3C06800F */ lui $a2, %hi(aspMainDataStart) # $a2, 0x800f
/* 0CC308 800CB708 24C64D00 */ addiu $a2, %lo(aspMainDataStart) # addiu $a2, $a2, 0x4d00
/* 0CC30C 800CB70C 3C05800E */ lui $a1, %hi(rspbootTextStart) # $a1, 0x800e
/* 0CC310 800CB710 24180002 */ li $t8, 2
/* 0CC314 800CB714 3C19800E */ lui $t9, %hi(rspbootTextEnd) # $t9, 0x800e
/* 0CC318 800CB718 24A58F70 */ addiu $a1, %lo(rspbootTextStart) # addiu $a1, $a1, -0x7090
/* 0CC31C 800CB71C 27399040 */ addiu $t9, %lo(rspbootTextEnd) # addiu $t9, $t9, -0x6fc0
/* 0CC320 800CB720 00006812 */ mflo $t5
/* 0CC324 800CB724 AC8D0000 */ sw $t5, ($a0)
/* 0CC328 800CB728 8FCE0040 */ lw $t6, 0x40($fp)
/* 0CC32C 800CB72C 8C8B0000 */ lw $t3, ($a0)
/* 0CC330 800CB730 8E4D0000 */ lw $t5, ($s2)
/* 0CC334 800CB734 8DCF0000 */ lw $t7, ($t6)
/* 0CC338 800CB738 01E84821 */ addu $t1, $t7, $t0
/* 0CC33C 800CB73C 852A0000 */ lh $t2, ($t1)
/* 0CC340 800CB740 3C08800E */ lui $t0, %hi(aspMainTextStart) # $t0, 0x800e
/* 0CC344 800CB744 03257823 */ subu $t7, $t9, $a1
/* 0CC348 800CB748 014B6021 */ addu $t4, $t2, $t3
/* 0CC34C 800CB74C AC8C0000 */ sw $t4, ($a0)
/* 0CC350 800CB750 8E1070C0 */ lw $s0, %lo(D_803B70C0)($s0)
/* 0CC354 800CB754 ADA00040 */ sw $zero, 0x40($t5)
/* 0CC358 800CB758 8E4E0000 */ lw $t6, ($s2)
/* 0CC35C 800CB75C 3C0A800F */ lui $t2, %hi(aspMainDataEnd) # $t2, 0x800f
/* 0CC360 800CB760 254A5000 */ addiu $t2, %lo(aspMainDataEnd) # addiu $t2, $t2, 0x5000
/* 0CC364 800CB764 ADC00044 */ sw $zero, 0x44($t6)
/* 0CC368 800CB768 8E430000 */ lw $v1, ($s2)
/* 0CC36C 800CB76C 01465823 */ subu $t3, $t2, $a2
/* 0CC370 800CB770 000B60C3 */ sra $t4, $t3, 3
/* 0CC374 800CB774 AC780000 */ sw $t8, ($v1)
/* 0CC378 800CB778 2508B830 */ addiu $t0, %lo(aspMainTextStart) # addiu $t0, $t0, -0x47d0
/* 0CC37C 800CB77C 24091000 */ li $t1, 4096
/* 0CC380 800CB780 000C68C0 */ sll $t5, $t4, 3
/* 0CC384 800CB784 3C18803B */ lui $t8, %hi(D_803B70C8) # 0x803b
/* 0CC388 800CB788 00107080 */ sll $t6, $s0, 2
/* 0CC38C 800CB78C 030EC021 */ addu $t8, $t8, $t6
/* 0CC390 800CB790 AC600004 */ sw $zero, 4($v1)
/* 0CC394 800CB794 AC650008 */ sw $a1, 8($v1)
/* 0CC398 800CB798 AC6F000C */ sw $t7, 0xc($v1)
/* 0CC39C 800CB79C AC680010 */ sw $t0, 0x10($v1)
/* 0CC3A0 800CB7A0 AC660018 */ sw $a2, 0x18($v1)
/* 0CC3A4 800CB7A4 AC690014 */ sw $t1, 0x14($v1)
/* 0CC3A8 800CB7A8 AC6D001C */ sw $t5, 0x1c($v1)
/* 0CC3AC 800CB7AC AC600020 */ sw $zero, 0x20($v1)
/* 0CC3B0 800CB7B0 AC600024 */ sw $zero, 0x24($v1)
/* 0CC3B4 800CB7B4 AC600028 */ sw $zero, 0x28($v1)
/* 0CC3B8 800CB7B8 AC60002C */ sw $zero, 0x2c($v1)
/* 0CC3BC 800CB7BC 8F1870C8 */ lw $t8, %lo(D_803B70C8)($t8) # 0x70c8($t8)
/* 0CC3C0 800CB7C0 3C08800F */ lui $t0, %hi(D_800EA484) # $t0, 0x800f
/* 0CC3C4 800CB7C4 AC780030 */ sw $t8, 0x30($v1)
/* 0CC3C8 800CB7C8 8FD90070 */ lw $t9, 0x70($fp)
/* 0CC3CC 800CB7CC AC600038 */ sw $zero, 0x38($v1)
/* 0CC3D0 800CB7D0 AC60003C */ sw $zero, 0x3c($v1)
/* 0CC3D4 800CB7D4 001978C0 */ sll $t7, $t9, 3
/* 0CC3D8 800CB7D8 AC6F0034 */ sw $t7, 0x34($v1)
/* 0CC3DC 800CB7DC 8FC90070 */ lw $t1, 0x70($fp)
/* 0CC3E0 800CB7E0 8D08A484 */ lw $t0, %lo(D_800EA484)($t0)
/* 0CC3E4 800CB7E4 0109082A */ slt $at, $t0, $t1
/* 0CC3E8 800CB7E8 10200002 */ beqz $at, .L800CB7F4
/* 0CC3EC 800CB7EC 3C01800F */ lui $at, %hi(D_800EA484) # $at, 0x800f
/* 0CC3F0 800CB7F0 AC29A484 */ sw $t1, %lo(D_800EA484)($at)
.L800CB7F4:
/* 0CC3F4 800CB7F4 8E420000 */ lw $v0, ($s2)
.L800CB7F8:
/* 0CC3F8 800CB7F8 8FDF0034 */ lw $ra, 0x34($fp)
/* 0CC3FC 800CB7FC 03C0E825 */ move $sp, $fp
/* 0CC400 800CB800 8FD00024 */ lw $s0, 0x24($fp)
/* 0CC404 800CB804 8FD10028 */ lw $s1, 0x28($fp)
/* 0CC408 800CB808 8FD2002C */ lw $s2, 0x2c($fp)
/* 0CC40C 800CB80C 8FDE0030 */ lw $fp, 0x30($fp)
/* 0CC410 800CB810 03E00008 */ jr $ra
/* 0CC414 800CB814 27BD0078 */ addiu $sp, $sp, 0x78
glabel func_800CB818
/* 0CC418 800CB818 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0CC41C 800CB81C AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC420 800CB820 AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC424 800CB824 90820000 */ lbu $v0, ($a0)
/* 0CC428 800CB828 24010081 */ li $at, 129
/* 0CC42C 800CB82C 03A0F025 */ move $fp, $sp
/* 0CC430 800CB830 10410014 */ beq $v0, $at, .L800CB884
/* 0CC434 800CB834 00803825 */ move $a3, $a0
/* 0CC438 800CB838 24010082 */ li $at, 130
/* 0CC43C 800CB83C 10410016 */ beq $v0, $at, .L800CB898
/* 0CC440 800CB840 24010083 */ li $at, 131
/* 0CC444 800CB844 1041001F */ beq $v0, $at, .L800CB8C4
/* 0CC448 800CB848 24010088 */ li $at, 136
/* 0CC44C 800CB84C 10410012 */ beq $v0, $at, .L800CB898
/* 0CC450 800CB850 240100F0 */ li $at, 240
/* 0CC454 800CB854 10410033 */ beq $v0, $at, .L800CB924
/* 0CC458 800CB858 240100F1 */ li $at, 241
/* 0CC45C 800CB85C 10410035 */ beq $v0, $at, .L800CB934
/* 0CC460 800CB860 3C03803B */ lui $v1, %hi(D_803B1658) # 0x803b
/* 0CC464 800CB864 240100F2 */ li $at, 242
/* 0CC468 800CB868 10410046 */ beq $v0, $at, .L800CB984
/* 0CC46C 800CB86C 3C03803B */ lui $v1, %hi(D_803B1658) # $v1, 0x803b
/* 0CC470 800CB870 240100F3 */ li $at, 243
/* 0CC474 800CB874 5041005C */ beql $v0, $at, .L800CB9E8
/* 0CC478 800CB878 90E40001 */ lbu $a0, 1($a3)
/* 0CC47C 800CB87C 1000005E */ b .L800CB9F8
/* 0CC480 800CB880 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB884:
/* 0CC484 800CB884 90E40002 */ lbu $a0, 2($a3)
/* 0CC488 800CB888 0C02EF77 */ jal func_800BBDDC
/* 0CC48C 800CB88C 24050003 */ li $a1, 3
/* 0CC490 800CB890 10000059 */ b .L800CB9F8
/* 0CC494 800CB894 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB898:
/* 0CC498 800CB898 90E40001 */ lbu $a0, 1($a3)
/* 0CC49C 800CB89C 90E50002 */ lbu $a1, 2($a3)
/* 0CC4A0 800CB8A0 90E60003 */ lbu $a2, 3($a3)
/* 0CC4A4 800CB8A4 0C02EFBC */ jal func_800BBEF0
/* 0CC4A8 800CB8A8 AFC70030 */ sw $a3, 0x30($fp)
/* 0CC4AC 800CB8AC 8FC70030 */ lw $a3, 0x30($fp)
/* 0CC4B0 800CB8B0 90E40001 */ lbu $a0, 1($a3)
/* 0CC4B4 800CB8B4 0C032E99 */ jal func_800CBA64
/* 0CC4B8 800CB8B8 8CE50004 */ lw $a1, 4($a3)
/* 0CC4BC 800CB8BC 1000004E */ b .L800CB9F8
/* 0CC4C0 800CB8C0 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB8C4:
/* 0CC4C4 800CB8C4 90E20001 */ lbu $v0, 1($a3)
/* 0CC4C8 800CB8C8 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b
/* 0CC4CC 800CB8CC 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510
/* 0CC4D0 800CB8D0 00027080 */ sll $t6, $v0, 2
/* 0CC4D4 800CB8D4 01C27021 */ addu $t6, $t6, $v0
/* 0CC4D8 800CB8D8 000E70C0 */ sll $t6, $t6, 3
/* 0CC4DC 800CB8DC 01C27021 */ addu $t6, $t6, $v0
/* 0CC4E0 800CB8E0 000E70C0 */ sll $t6, $t6, 3
/* 0CC4E4 800CB8E4 01CF2021 */ addu $a0, $t6, $t7
/* 0CC4E8 800CB8E8 8C980000 */ lw $t8, ($a0)
/* 0CC4EC 800CB8EC 0018CFC2 */ srl $t9, $t8, 0x1f
/* 0CC4F0 800CB8F0 53200041 */ beql $t9, $zero, .L800CB9F8
/* 0CC4F4 800CB8F4 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC4F8 800CB8F8 8CE50004 */ lw $a1, 4($a3)
/* 0CC4FC 800CB8FC 14A00005 */ bnez $a1, .L800CB914
/* 0CC500 800CB900 00000000 */ nop
/* 0CC504 800CB904 0C02FBCB */ jal func_800BEF2C
/* 0CC508 800CB908 00000000 */ nop
/* 0CC50C 800CB90C 1000003A */ b .L800CB9F8
/* 0CC510 800CB910 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB914:
/* 0CC514 800CB914 0C032E82 */ jal func_800CBA08
/* 0CC518 800CB918 00402025 */ move $a0, $v0
/* 0CC51C 800CB91C 10000036 */ b .L800CB9F8
/* 0CC520 800CB920 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB924:
/* 0CC524 800CB924 8CE80004 */ lw $t0, 4($a3)
/* 0CC528 800CB928 3C01803B */ lui $at, %hi(D_803B70B6) # $at, 0x803b
/* 0CC52C 800CB92C 10000031 */ b .L800CB9F4
/* 0CC530 800CB930 A02870B6 */ sb $t0, %lo(D_803B70B6)($at)
.L800CB934:
/* 0CC534 800CB934 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b
/* 0CC538 800CB938 904B1510 */ lbu $t3, %lo(D_803B1510)($v0)
/* 0CC53C 800CB93C 90681658 */ lbu $t0, %lo(D_803B1658)($v1)
/* 0CC540 800CB940 3C04803B */ lui $a0, %hi(D_803B17A0) # $a0, 0x803b
/* 0CC544 800CB944 3C05803B */ lui $a1, %hi(D_803B18E8) # $a1, 0x803b
/* 0CC548 800CB948 90AA18E8 */ lbu $t2, %lo(D_803B18E8)($a1)
/* 0CC54C 800CB94C 908E17A0 */ lbu $t6, %lo(D_803B17A0)($a0)
/* 0CC550 800CB950 3C01803B */ lui $at, %hi(D_803B1510) # $at, 0x803b
/* 0CC554 800CB954 35620024 */ ori $v0, $t3, 0x24
/* 0CC558 800CB958 A0221510 */ sb $v0, %lo(D_803B1510)($at)
/* 0CC55C 800CB95C 3C01803B */ lui $at, %hi(D_803B1658) # $at, 0x803b
/* 0CC560 800CB960 35030024 */ ori $v1, $t0, 0x24
/* 0CC564 800CB964 A0231658 */ sb $v1, %lo(D_803B1658)($at)
/* 0CC568 800CB968 3C01803B */ lui $at, %hi(D_803B17A0) # $at, 0x803b
/* 0CC56C 800CB96C 35D80024 */ ori $t8, $t6, 0x24
/* 0CC570 800CB970 A03817A0 */ sb $t8, %lo(D_803B17A0)($at)
/* 0CC574 800CB974 3C01803B */ lui $at, %hi(D_803B18E8) # $at, 0x803b
/* 0CC578 800CB978 354C0024 */ ori $t4, $t2, 0x24
/* 0CC57C 800CB97C 1000001D */ b .L800CB9F4
/* 0CC580 800CB980 A02C18E8 */ sb $t4, %lo(D_803B18E8)($at)
.L800CB984:
/* 0CC584 800CB984 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b
/* 0CC588 800CB988 90421510 */ lbu $v0, %lo(D_803B1510)($v0)
/* 0CC58C 800CB98C 90631658 */ lbu $v1, %lo(D_803B1658)($v1)
/* 0CC590 800CB990 3C04803B */ lui $a0, %hi(D_803B17A0) # $a0, 0x803b
/* 0CC594 800CB994 908417A0 */ lbu $a0, %lo(D_803B17A0)($a0)
/* 0CC598 800CB998 3C05803B */ lui $a1, %hi(D_803B18E8) # $a1, 0x803b
/* 0CC59C 800CB99C 304FFFDF */ andi $t7, $v0, 0xffdf
/* 0CC5A0 800CB9A0 90A518E8 */ lbu $a1, %lo(D_803B18E8)($a1)
/* 0CC5A4 800CB9A4 3C01803B */ lui $at, %hi(D_803B1510) # $at, 0x803b
/* 0CC5A8 800CB9A8 35E20004 */ ori $v0, $t7, 4
/* 0CC5AC 800CB9AC A0221510 */ sb $v0, %lo(D_803B1510)($at)
/* 0CC5B0 800CB9B0 306AFFDF */ andi $t2, $v1, 0xffdf
/* 0CC5B4 800CB9B4 35430004 */ ori $v1, $t2, 4
/* 0CC5B8 800CB9B8 3C01803B */ lui $at, %hi(D_803B1658) # $at, 0x803b
/* 0CC5BC 800CB9BC A0231658 */ sb $v1, %lo(D_803B1658)($at)
/* 0CC5C0 800CB9C0 308FFFDF */ andi $t7, $a0, 0xffdf
/* 0CC5C4 800CB9C4 35F90004 */ ori $t9, $t7, 4
/* 0CC5C8 800CB9C8 3C01803B */ lui $at, %hi(D_803B17A0) # $at, 0x803b
/* 0CC5CC 800CB9CC A03917A0 */ sb $t9, %lo(D_803B17A0)($at)
/* 0CC5D0 800CB9D0 30AAFFDF */ andi $t2, $a1, 0xffdf
/* 0CC5D4 800CB9D4 354C0004 */ ori $t4, $t2, 4
/* 0CC5D8 800CB9D8 3C01803B */ lui $at, %hi(D_803B18E8) # $at, 0x803b
/* 0CC5DC 800CB9DC 10000005 */ b .L800CB9F4
/* 0CC5E0 800CB9E0 A02C18E8 */ sb $t4, %lo(D_803B18E8)($at)
/* 0CC5E4 800CB9E4 90E40001 */ lbu $a0, 1($a3)
.L800CB9E8:
/* 0CC5E8 800CB9E8 90E50002 */ lbu $a1, 2($a3)
/* 0CC5EC 800CB9EC 0C02ECE2 */ jal func_800BB388
/* 0CC5F0 800CB9F0 90E60003 */ lbu $a2, 3($a3)
.L800CB9F4:
/* 0CC5F4 800CB9F4 8FDF002C */ lw $ra, 0x2c($fp)
.L800CB9F8:
/* 0CC5F8 800CB9F8 03C0E825 */ move $sp, $fp
/* 0CC5FC 800CB9FC 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC600 800CBA00 03E00008 */ jr $ra
/* 0CC604 800CBA04 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800CBA08
/* 0CC608 800CBA08 14A00002 */ bnez $a1, .L800CBA14
/* 0CC60C 800CBA0C 27ADFFF0 */ addiu $t5, $sp, -0x10
/* 0CC610 800CBA10 24050001 */ li $a1, 1
.L800CBA14:
/* 0CC614 800CBA14 44853000 */ mtc1 $a1, $f6
/* 0CC618 800CBA18 00047080 */ sll $t6, $a0, 2
/* 0CC61C 800CBA1C 01C47021 */ addu $t6, $t6, $a0
/* 0CC620 800CBA20 000E70C0 */ sll $t6, $t6, 3
/* 0CC624 800CBA24 46803220 */ cvt.s.w $f8, $f6
/* 0CC628 800CBA28 01C47021 */ addu $t6, $t6, $a0
/* 0CC62C 800CBA2C 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b
/* 0CC630 800CBA30 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510
/* 0CC634 800CBA34 000E70C0 */ sll $t6, $t6, 3
/* 0CC638 800CBA38 01CF1021 */ addu $v0, $t6, $t7
/* 0CC63C 800CBA3C C4440018 */ lwc1 $f4, 0x18($v0)
/* 0CC640 800CBA40 24180002 */ li $t8, 2
/* 0CC644 800CBA44 01A0E825 */ move $sp, $t5
/* 0CC648 800CBA48 46082283 */ div.s $f10, $f4, $f8
/* 0CC64C 800CBA4C A0580001 */ sb $t8, 1($v0)
/* 0CC650 800CBA50 A4450010 */ sh $a1, 0x10($v0)
/* 0CC654 800CBA54 25BD0010 */ addiu $sp, $t5, 0x10
/* 0CC658 800CBA58 46005407 */ neg.s $f16, $f10
/* 0CC65C 800CBA5C 03E00008 */ jr $ra
/* 0CC660 800CBA60 E450001C */ swc1 $f16, 0x1c($v0)
glabel func_800CBA64
/* 0CC664 800CBA64 10A00010 */ beqz $a1, .L800CBAA8
/* 0CC668 800CBA68 27ADFFF0 */ addiu $t5, $sp, -0x10
/* 0CC66C 800CBA6C 00047080 */ sll $t6, $a0, 2
/* 0CC670 800CBA70 01C47021 */ addu $t6, $t6, $a0
/* 0CC674 800CBA74 000E70C0 */ sll $t6, $t6, 3
/* 0CC678 800CBA78 01C47021 */ addu $t6, $t6, $a0
/* 0CC67C 800CBA7C 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b
/* 0CC680 800CBA80 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510
/* 0CC684 800CBA84 000E70C0 */ sll $t6, $t6, 3
/* 0CC688 800CBA88 01CF1021 */ addu $v0, $t6, $t7
/* 0CC68C 800CBA8C 44800000 */ mtc1 $zero, $f0
/* 0CC690 800CBA90 24180001 */ li $t8, 1
/* 0CC694 800CBA94 A0580001 */ sb $t8, 1($v0)
/* 0CC698 800CBA98 A4450012 */ sh $a1, 0x12($v0)
/* 0CC69C 800CBA9C A4450010 */ sh $a1, 0x10($v0)
/* 0CC6A0 800CBAA0 E4400018 */ swc1 $f0, 0x18($v0)
/* 0CC6A4 800CBAA4 E440001C */ swc1 $f0, 0x1c($v0)
.L800CBAA8:
/* 0CC6A8 800CBAA8 01A0E825 */ move $sp, $t5
/* 0CC6AC 800CBAAC 03E00008 */ jr $ra
/* 0CC6B0 800CBAB0 25BD0010 */ addiu $sp, $t5, 0x10
glabel func_800CBAB4
/* 0CC6B4 800CBAB4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0CC6B8 800CBAB8 3C01800F */ lui $at, %hi(D_800EA3A0) # $at, 0x800f
/* 0CC6BC 800CBABC A020A3A0 */ sb $zero, %lo(D_800EA3A0)($at)
/* 0CC6C0 800CBAC0 AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC6C4 800CBAC4 AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC6C8 800CBAC8 3C01800F */ lui $at, %hi(D_800EA3A4) # $at, 0x800f
/* 0CC6CC 800CBACC 3C04800F */ lui $a0, %hi(D_800EA3A8) # $a0, 0x800f
/* 0CC6D0 800CBAD0 3C058019 */ lui $a1, %hi(D_80194020) # $a1, 0x8019
/* 0CC6D4 800CBAD4 03A0F025 */ move $fp, $sp
/* 0CC6D8 800CBAD8 A020A3A4 */ sb $zero, %lo(D_800EA3A4)($at)
/* 0CC6DC 800CBADC 24A54020 */ addiu $a1, %lo(D_80194020) # addiu $a1, $a1, 0x4020
/* 0CC6E0 800CBAE0 8C84A3A8 */ lw $a0, %lo(D_800EA3A8)($a0)
/* 0CC6E4 800CBAE4 0C033358 */ jal osCreateMesgQueue
/* 0CC6E8 800CBAE8 24060001 */ li $a2, 1
/* 0CC6EC 800CBAEC 3C04800F */ lui $a0, %hi(D_800EA3AC) # $a0, 0x800f
/* 0CC6F0 800CBAF0 3C058019 */ lui $a1, %hi(D_80194028) # $a1, 0x8019
/* 0CC6F4 800CBAF4 24A54028 */ addiu $a1, %lo(D_80194028) # addiu $a1, $a1, 0x4028
/* 0CC6F8 800CBAF8 8C84A3AC */ lw $a0, %lo(D_800EA3AC)($a0)
/* 0CC6FC 800CBAFC 0C033358 */ jal osCreateMesgQueue
/* 0CC700 800CBB00 24060004 */ li $a2, 4
/* 0CC704 800CBB04 3C04800F */ lui $a0, %hi(D_800EA3B0) # $a0, 0x800f
/* 0CC708 800CBB08 3C058019 */ lui $a1, %hi(D_80194038) # $a1, 0x8019
/* 0CC70C 800CBB0C 24A54038 */ addiu $a1, %lo(D_80194038) # addiu $a1, $a1, 0x4038
/* 0CC710 800CBB10 8C84A3B0 */ lw $a0, %lo(D_800EA3B0)($a0)
/* 0CC714 800CBB14 0C033358 */ jal osCreateMesgQueue
/* 0CC718 800CBB18 24060001 */ li $a2, 1
/* 0CC71C 800CBB1C 3C04800F */ lui $a0, %hi(D_800EA3B4) # $a0, 0x800f
/* 0CC720 800CBB20 3C058019 */ lui $a1, %hi(D_8019403C) # $a1, 0x8019
/* 0CC724 800CBB24 24A5403C */ addiu $a1, %lo(D_8019403C) # addiu $a1, $a1, 0x403c
/* 0CC728 800CBB28 8C84A3B4 */ lw $a0, %lo(D_800EA3B4)($a0)
/* 0CC72C 800CBB2C 0C033358 */ jal osCreateMesgQueue
/* 0CC730 800CBB30 24060001 */ li $a2, 1
/* 0CC734 800CBB34 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC738 800CBB38 03C0E825 */ move $sp, $fp
/* 0CC73C 800CBB3C 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC740 800CBB40 03E00008 */ jr $ra
/* 0CC744 800CBB44 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800CBB48
/* 0CC748 800CBB48 3C03800F */ lui $v1, %hi(D_800EA3A0) # $v1, 0x800f
/* 0CC74C 800CBB4C 2463A3A0 */ addiu $v1, %lo(D_800EA3A0) # addiu $v1, $v1, -0x5c60
/* 0CC750 800CBB50 906F0000 */ lbu $t7, ($v1)
/* 0CC754 800CBB54 3C198019 */ lui $t9, %hi(D_80193820) # $t9, 0x8019
/* 0CC758 800CBB58 27393820 */ addiu $t9, %lo(D_80193820) # addiu $t9, $t9, 0x3820
/* 0CC75C 800CBB5C 000FC0C0 */ sll $t8, $t7, 3
/* 0CC760 800CBB60 03191021 */ addu $v0, $t8, $t9
/* 0CC764 800CBB64 AC440000 */ sw $a0, ($v0)
/* 0CC768 800CBB68 8CA80000 */ lw $t0, ($a1)
/* 0CC76C 800CBB6C 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 0CC770 800CBB70 AC480004 */ sw $t0, 4($v0)
/* 0CC774 800CBB74 90690000 */ lbu $t1, ($v1)
/* 0CC778 800CBB78 27BD0010 */ addiu $sp, $sp, 0x10
/* 0CC77C 800CBB7C 252A0001 */ addiu $t2, $t1, 1
/* 0CC780 800CBB80 03E00008 */ jr $ra
/* 0CC784 800CBB84 A06A0000 */ sb $t2, ($v1)
glabel func_800CBB88
/* 0CC788 800CBB88 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0CC78C 800CBB8C AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC790 800CBB90 AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC794 800CBB94 AFA50034 */ sw $a1, 0x34($sp)
/* 0CC798 800CBB98 03A0F025 */ move $fp, $sp
/* 0CC79C 800CBB9C 0C032ED2 */ jal func_800CBB48
/* 0CC7A0 800CBBA0 27A50034 */ addiu $a1, $sp, 0x34
/* 0CC7A4 800CBBA4 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC7A8 800CBBA8 03C0E825 */ move $sp, $fp
/* 0CC7AC 800CBBAC 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC7B0 800CBBB0 03E00008 */ jr $ra
/* 0CC7B4 800CBBB4 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800CBBB8
/* 0CC7B8 800CBBB8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0CC7BC 800CBBBC AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC7C0 800CBBC0 AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC7C4 800CBBC4 AFA50034 */ sw $a1, 0x34($sp)
/* 0CC7C8 800CBBC8 03A0F025 */ move $fp, $sp
/* 0CC7CC 800CBBCC 0C032ED2 */ jal func_800CBB48
/* 0CC7D0 800CBBD0 27A50034 */ addiu $a1, $sp, 0x34
/* 0CC7D4 800CBBD4 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC7D8 800CBBD8 03C0E825 */ move $sp, $fp
/* 0CC7DC 800CBBDC 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC7E0 800CBBE0 03E00008 */ jr $ra
/* 0CC7E4 800CBBE4 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800CBBE8
/* 0CC7E8 800CBBE8 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0CC7EC 800CBBEC 00A07025 */ move $t6, $a1
/* 0CC7F0 800CBBF0 AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC7F4 800CBBF4 AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC7F8 800CBBF8 AFA5003C */ sw $a1, 0x3c($sp)
/* 0CC7FC 800CBBFC 000E7E00 */ sll $t7, $t6, 0x18
/* 0CC800 800CBC00 03A0F025 */ move $fp, $sp
/* 0CC804 800CBC04 AFAF0034 */ sw $t7, 0x34($sp)
/* 0CC808 800CBC08 0C032ED2 */ jal func_800CBB48
/* 0CC80C 800CBC0C 27A50034 */ addiu $a1, $sp, 0x34
/* 0CC810 800CBC10 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC814 800CBC14 03C0E825 */ move $sp, $fp
/* 0CC818 800CBC18 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC81C 800CBC1C 03E00008 */ jr $ra
/* 0CC820 800CBC20 27BD0038 */ addiu $sp, $sp, 0x38
glabel func_800CBC24
/* 0CC824 800CBC24 3C02800F */ lui $v0, %hi(D_800EA3A0) # $v0, 0x800f
/* 0CC828 800CBC28 3C03800F */ lui $v1, %hi(D_800EA3A4) # $v1, 0x800f
/* 0CC82C 800CBC2C 9063A3A4 */ lbu $v1, %lo(D_800EA3A4)($v1)
/* 0CC830 800CBC30 9042A3A0 */ lbu $v0, %lo(D_800EA3A0)($v0)
/* 0CC834 800CBC34 3C0F800F */ lui $t7, %hi(D_800EA4A4) # $t7, 0x800f
/* 0CC838 800CBC38 8DEFA4A4 */ lw $t7, %lo(D_800EA4A4)($t7)
/* 0CC83C 800CBC3C 00432023 */ subu $a0, $v0, $v1
/* 0CC840 800CBC40 24840100 */ addiu $a0, $a0, 0x100
/* 0CC844 800CBC44 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0CC848 800CBC48 308E00FF */ andi $t6, $a0, 0xff
/* 0CC84C 800CBC4C AFBE0028 */ sw $fp, 0x28($sp)
/* 0CC850 800CBC50 01EE082A */ slt $at, $t7, $t6
/* 0CC854 800CBC54 03A0F025 */ move $fp, $sp
/* 0CC858 800CBC58 10200003 */ beqz $at, .L800CBC68
/* 0CC85C 800CBC5C AFBF002C */ sw $ra, 0x2c($sp)
/* 0CC860 800CBC60 3C01800F */ lui $at, %hi(D_800EA4A4) # $at, 0x800f
/* 0CC864 800CBC64 AC2EA4A4 */ sw $t6, %lo(D_800EA4A4)($at)
.L800CBC68:
/* 0CC868 800CBC68 307800FF */ andi $t8, $v1, 0xff
/* 0CC86C 800CBC6C 0018CA00 */ sll $t9, $t8, 8
/* 0CC870 800CBC70 304800FF */ andi $t0, $v0, 0xff
/* 0CC874 800CBC74 3C04800F */ lui $a0, %hi(D_800EA3AC) # $a0, 0x800f
/* 0CC878 800CBC78 03282825 */ or $a1, $t9, $t0
/* 0CC87C 800CBC7C 8C84A3AC */ lw $a0, %lo(D_800EA3AC)($a0)
/* 0CC880 800CBC80 0C033630 */ jal osSendMesg
/* 0CC884 800CBC84 00003025 */ move $a2, $zero
/* 0CC888 800CBC88 3C09800F */ lui $t1, %hi(D_800EA3A0) # $t1, 0x800f
/* 0CC88C 800CBC8C 9129A3A0 */ lbu $t1, %lo(D_800EA3A0)($t1)
/* 0CC890 800CBC90 3C01800F */ lui $at, %hi(D_800EA3A4) # $at, 0x800f
/* 0CC894 800CBC94 03C0E825 */ move $sp, $fp
/* 0CC898 800CBC98 A029A3A4 */ sb $t1, %lo(D_800EA3A4)($at)
/* 0CC89C 800CBC9C 8FDF002C */ lw $ra, 0x2c($fp)
/* 0CC8A0 800CBCA0 8FDE0028 */ lw $fp, 0x28($fp)
/* 0CC8A4 800CBCA4 27BD0030 */ addiu $sp, $sp, 0x30
/* 0CC8A8 800CBCA8 03E00008 */ jr $ra
/* 0CC8AC 800CBCAC 00000000 */ nop
glabel func_800CBCB0
/* 0CC8B0 800CBCB0 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 0CC8B4 800CBCB4 AFB20030 */ sw $s2, 0x30($sp)
/* 0CC8B8 800CBCB8 AFB5003C */ sw $s5, 0x3c($sp)
/* 0CC8BC 800CBCBC AFB30034 */ sw $s3, 0x34($sp)
/* 0CC8C0 800CBCC0 00809025 */ move $s2, $a0
/* 0CC8C4 800CBCC4 AFBE0048 */ sw $fp, 0x48($sp)
/* 0CC8C8 800CBCC8 AFB70044 */ sw $s7, 0x44($sp)
/* 0CC8CC 800CBCCC AFB60040 */ sw $s6, 0x40($sp)
/* 0CC8D0 800CBCD0 AFB40038 */ sw $s4, 0x38($sp)
/* 0CC8D4 800CBCD4 AFB1002C */ sw $s1, 0x2c($sp)
/* 0CC8D8 800CBCD8 00047202 */ srl $t6, $a0, 8
/* 0CC8DC 800CBCDC 325800FF */ andi $t8, $s2, 0xff
/* 0CC8E0 800CBCE0 3C138019 */ lui $s3, %hi(D_80193820) # $s3, 0x8019
/* 0CC8E4 800CBCE4 3C15803B */ lui $s5, %hi(D_803B1510) # $s5, 0x803b
/* 0CC8E8 800CBCE8 03A0F025 */ move $fp, $sp
/* 0CC8EC 800CBCEC AFBF004C */ sw $ra, 0x4c($sp)
/* 0CC8F0 800CBCF0 AFB00028 */ sw $s0, 0x28($sp)
/* 0CC8F4 800CBCF4 31D100FF */ andi $s1, $t6, 0xff
/* 0CC8F8 800CBCF8 26B51510 */ addiu $s5, %lo(D_803B1510) # addiu $s5, $s5, 0x1510
/* 0CC8FC 800CBCFC 26733820 */ addiu $s3, %lo(D_80193820) # addiu $s3, $s3, 0x3820
/* 0CC900 800CBD00 03009025 */ move $s2, $t8
/* 0CC904 800CBD04 241400F0 */ li $s4, 240
/* 0CC908 800CBD08 24160148 */ li $s6, 328
/* 0CC90C 800CBD0C 24170041 */ li $s7, 65
/* 0CC910 800CBD10 12510080 */ beq $s2, $s1, .L800CBF14
/* 0CC914 800CBD14 02201025 */ move $v0, $s1
.L800CBD18:
/* 0CC918 800CBD18 305900FF */ andi $t9, $v0, 0xff
/* 0CC91C 800CBD1C 001940C0 */ sll $t0, $t9, 3
/* 0CC920 800CBD20 02688021 */ addu $s0, $s3, $t0
/* 0CC924 800CBD24 92040000 */ lbu $a0, ($s0)
/* 0CC928 800CBD28 26310001 */ addiu $s1, $s1, 1
/* 0CC92C 800CBD2C 322900FF */ andi $t1, $s1, 0xff
/* 0CC930 800CBD30 308A00F0 */ andi $t2, $a0, 0xf0
/* 0CC934 800CBD34 168A0005 */ bne $s4, $t2, .L800CBD4C
/* 0CC938 800CBD38 01208825 */ move $s1, $t1
/* 0CC93C 800CBD3C 0C032E06 */ jal func_800CB818
/* 0CC940 800CBD40 02002025 */ move $a0, $s0
/* 0CC944 800CBD44 10000071 */ b .L800CBF0C
/* 0CC948 800CBD48 02201025 */ move $v0, $s1
.L800CBD4C:
/* 0CC94C 800CBD4C 92020001 */ lbu $v0, 1($s0)
/* 0CC950 800CBD50 28410004 */ slti $at, $v0, 4
/* 0CC954 800CBD54 5020006D */ beql $at, $zero, .L800CBF0C
/* 0CC958 800CBD58 02201025 */ move $v0, $s1
/* 0CC95C 800CBD5C 00560019 */ multu $v0, $s6
/* 0CC960 800CBD60 308C0080 */ andi $t4, $a0, 0x80
/* 0CC964 800CBD64 308D0040 */ andi $t5, $a0, 0x40
/* 0CC968 800CBD68 00005812 */ mflo $t3
/* 0CC96C 800CBD6C 02AB1821 */ addu $v1, $s5, $t3
/* 0CC970 800CBD70 11800005 */ beqz $t4, .L800CBD88
/* 0CC974 800CBD74 00000000 */ nop
/* 0CC978 800CBD78 0C032E06 */ jal func_800CB818
/* 0CC97C 800CBD7C 02002025 */ move $a0, $s0
/* 0CC980 800CBD80 10000062 */ b .L800CBF0C
/* 0CC984 800CBD84 02201025 */ move $v0, $s1
.L800CBD88:
/* 0CC988 800CBD88 51A00020 */ beql $t5, $zero, .L800CBE0C
/* 0CC98C 800CBD8C 8C6D0000 */ lw $t5, ($v1)
/* 0CC990 800CBD90 10970009 */ beq $a0, $s7, .L800CBDB8
/* 0CC994 800CBD94 24010046 */ li $at, 70
/* 0CC998 800CBD98 10810016 */ beq $a0, $at, .L800CBDF4
/* 0CC99C 800CBD9C 24010047 */ li $at, 71
/* 0CC9A0 800CBDA0 1081000B */ beq $a0, $at, .L800CBDD0
/* 0CC9A4 800CBDA4 24010048 */ li $at, 72
/* 0CC9A8 800CBDA8 50810010 */ beql $a0, $at, .L800CBDEC
/* 0CC9AC 800CBDAC 82090004 */ lb $t1, 4($s0)
/* 0CC9B0 800CBDB0 10000056 */ b .L800CBF0C
/* 0CC9B4 800CBDB4 02201025 */ move $v0, $s1
.L800CBDB8:
/* 0CC9B8 800CBDB8 906F0000 */ lbu $t7, ($v1)
/* 0CC9BC 800CBDBC C6040004 */ lwc1 $f4, 4($s0)
/* 0CC9C0 800CBDC0 35F80004 */ ori $t8, $t7, 4
/* 0CC9C4 800CBDC4 A0780000 */ sb $t8, ($v1)
/* 0CC9C8 800CBDC8 1000004F */ b .L800CBF08
/* 0CC9CC 800CBDCC E4640028 */ swc1 $f4, 0x28($v1)
.L800CBDD0:
/* 0CC9D0 800CBDD0 8E190004 */ lw $t9, 4($s0)
/* 0CC9D4 800CBDD4 00194080 */ sll $t0, $t9, 2
/* 0CC9D8 800CBDD8 01194023 */ subu $t0, $t0, $t9
/* 0CC9DC 800CBDDC 00084100 */ sll $t0, $t0, 4
/* 0CC9E0 800CBDE0 10000049 */ b .L800CBF08
/* 0CC9E4 800CBDE4 A4680008 */ sh $t0, 8($v1)
/* 0CC9E8 800CBDE8 82090004 */ lb $t1, 4($s0)
.L800CBDEC:
/* 0CC9EC 800CBDEC 10000046 */ b .L800CBF08
/* 0CC9F0 800CBDF0 A469000C */ sh $t1, 0xc($v1)
.L800CBDF4:
/* 0CC9F4 800CBDF4 920B0003 */ lbu $t3, 3($s0)
/* 0CC9F8 800CBDF8 820A0004 */ lb $t2, 4($s0)
/* 0CC9FC 800CBDFC 006B6021 */ addu $t4, $v1, $t3
/* 0CCA00 800CBE00 10000041 */ b .L800CBF08
/* 0CCA04 800CBE04 A18A0007 */ sb $t2, 7($t4)
/* 0CCA08 800CBE08 8C6D0000 */ lw $t5, ($v1)
.L800CBE0C:
/* 0CCA0C 800CBE0C 000D77C2 */ srl $t6, $t5, 0x1f
/* 0CCA10 800CBE10 51C0003E */ beql $t6, $zero, .L800CBF0C
/* 0CCA14 800CBE14 02201025 */ move $v0, $s1
/* 0CCA18 800CBE18 92050002 */ lbu $a1, 2($s0)
/* 0CCA1C 800CBE1C 28A10010 */ slti $at, $a1, 0x10
/* 0CCA20 800CBE20 10200039 */ beqz $at, .L800CBF08
/* 0CCA24 800CBE24 00057880 */ sll $t7, $a1, 2
/* 0CCA28 800CBE28 006FC021 */ addu $t8, $v1, $t7
/* 0CCA2C 800CBE2C 8F020030 */ lw $v0, 0x30($t8)
/* 0CCA30 800CBE30 3C19803B */ lui $t9, %hi(D_803B5EF0) # $t9, 0x803b
/* 0CCA34 800CBE34 27395EF0 */ addiu $t9, %lo(D_803B5EF0) # addiu $t9, $t9, 0x5ef0
/* 0CCA38 800CBE38 10590033 */ beq $v0, $t9, .L800CBF08
/* 0CCA3C 800CBE3C 2488FFFF */ addiu $t0, $a0, -1
/* 0CCA40 800CBE40 2D010008 */ sltiu $at, $t0, 8
/* 0CCA44 800CBE44 10200030 */ beqz $at, .L800CBF08
/* 0CCA48 800CBE48 00084080 */ sll $t0, $t0, 2
/* 0CCA4C 800CBE4C 3C01800F */ lui $at, %hi(D_800F39C0)
/* 0CCA50 800CBE50 00280821 */ addu $at, $at, $t0
/* 0CCA54 800CBE54 8C2839C0 */ lw $t0, %lo(D_800F39C0)($at)
/* 0CCA58 800CBE58 01000008 */ jr $t0
/* 0CCA5C 800CBE5C 00000000 */ nop
glabel L800CBE60
/* 0CCA60 800CBE60 904B0001 */ lbu $t3, 1($v0)
/* 0CCA64 800CBE64 C6060004 */ lwc1 $f6, 4($s0)
/* 0CCA68 800CBE68 356A0040 */ ori $t2, $t3, 0x40
/* 0CCA6C 800CBE6C A04A0001 */ sb $t2, 1($v0)
/* 0CCA70 800CBE70 10000025 */ b .L800CBF08
/* 0CCA74 800CBE74 E4460020 */ swc1 $f6, 0x20($v0)
glabel L800CBE78
/* 0CCA78 800CBE78 904D0001 */ lbu $t5, 1($v0)
/* 0CCA7C 800CBE7C C6080004 */ lwc1 $f8, 4($s0)
/* 0CCA80 800CBE80 35AE0040 */ ori $t6, $t5, 0x40
/* 0CCA84 800CBE84 A04E0001 */ sb $t6, 1($v0)
/* 0CCA88 800CBE88 1000001F */ b .L800CBF08
/* 0CCA8C 800CBE8C E4480024 */ swc1 $f8, 0x24($v0)
glabel L800CBE90
/* 0CCA90 800CBE90 90590001 */ lbu $t9, 1($v0)
/* 0CCA94 800CBE94 820F0004 */ lb $t7, 4($s0)
/* 0CCA98 800CBE98 37280020 */ ori $t0, $t9, 0x20
/* 0CCA9C 800CBE9C A0480001 */ sb $t0, 1($v0)
/* 0CCAA0 800CBEA0 10000019 */ b .L800CBF08
/* 0CCAA4 800CBEA4 A04F0009 */ sb $t7, 9($v0)
glabel L800CBEA8
/* 0CCAA8 800CBEA8 904B0001 */ lbu $t3, 1($v0)
/* 0CCAAC 800CBEAC C60A0004 */ lwc1 $f10, 4($s0)
/* 0CCAB0 800CBEB0 356A0080 */ ori $t2, $t3, 0x80
/* 0CCAB4 800CBEB4 A04A0001 */ sb $t2, 1($v0)
/* 0CCAB8 800CBEB8 10000013 */ b .L800CBF08
/* 0CCABC 800CBEBC E44A0030 */ swc1 $f10, 0x30($v0)
glabel L800CBEC0
/* 0CCAC0 800CBEC0 820C0004 */ lb $t4, 4($s0)
/* 0CCAC4 800CBEC4 10000010 */ b .L800CBF08
/* 0CCAC8 800CBEC8 A04C0004 */ sb $t4, 4($v0)
glabel L800CBECC
/* 0CCACC 800CBECC 92030003 */ lbu $v1, 3($s0)
/* 0CCAD0 800CBED0 28610008 */ slti $at, $v1, 8
/* 0CCAD4 800CBED4 5020000D */ beql $at, $zero, .L800CBF0C
/* 0CCAD8 800CBED8 02201025 */ move $v0, $s1
/* 0CCADC 800CBEDC 820D0004 */ lb $t5, 4($s0)
/* 0CCAE0 800CBEE0 00437021 */ addu $t6, $v0, $v1
/* 0CCAE4 800CBEE4 10000008 */ b .L800CBF08
/* 0CCAE8 800CBEE8 A1CD0058 */ sb $t5, 0x58($t6)
glabel L800CBEEC
/* 0CCAEC 800CBEEC 82180004 */ lb $t8, 4($s0)
/* 0CCAF0 800CBEF0 90490000 */ lbu $t1, ($v0)
/* 0CCAF4 800CBEF4 0018C900 */ sll $t9, $t8, 4
/* 0CCAF8 800CBEF8 33280010 */ andi $t0, $t9, 0x10
/* 0CCAFC 800CBEFC 312BFFEF */ andi $t3, $t1, 0xffef
/* 0CCB00 800CBF00 010B5025 */ or $t2, $t0, $t3
/* 0CCB04 800CBF04 A04A0000 */ sb $t2, ($v0)
.L800CBF08:
glabel L800CBF08
/* 0CCB08 800CBF08 02201025 */ move $v0, $s1
.L800CBF0C:
/* 0CCB0C 800CBF0C 1651FF82 */ bne $s2, $s1, .L800CBD18
/* 0CCB10 800CBF10 A2000000 */ sb $zero, ($s0)
.L800CBF14:
/* 0CCB14 800CBF14 8FDF004C */ lw $ra, 0x4c($fp)
/* 0CCB18 800CBF18 03C0E825 */ move $sp, $fp
/* 0CCB1C 800CBF1C 8FD00028 */ lw $s0, 0x28($fp)
/* 0CCB20 800CBF20 8FD1002C */ lw $s1, 0x2c($fp)
/* 0CCB24 800CBF24 8FD20030 */ lw $s2, 0x30($fp)
/* 0CCB28 800CBF28 8FD30034 */ lw $s3, 0x34($fp)
/* 0CCB2C 800CBF2C 8FD40038 */ lw $s4, 0x38($fp)
/* 0CCB30 800CBF30 8FD5003C */ lw $s5, 0x3c($fp)
/* 0CCB34 800CBF34 8FD60040 */ lw $s6, 0x40($fp)
/* 0CCB38 800CBF38 8FD70044 */ lw $s7, 0x44($fp)
/* 0CCB3C 800CBF3C 8FDE0048 */ lw $fp, 0x48($fp)
/* 0CCB40 800CBF40 03E00008 */ jr $ra
/* 0CCB44 800CBF44 27BD0050 */ addiu $sp, $sp, 0x50
glabel func_800CBF48
/* 0CCB48 800CBF48 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0CCB4C 800CBF4C AFBF0024 */ sw $ra, 0x24($sp)
/* 0CCB50 800CBF50 AFBE0020 */ sw $fp, 0x20($sp)
/* 0CCB54 800CBF54 0C032EAD */ jal func_800CBAB4
/* 0CCB58 800CBF58 03A0F025 */ move $fp, $sp
/* 0CCB5C 800CBF5C 8FDF0024 */ lw $ra, 0x24($fp)
/* 0CCB60 800CBF60 03C0E825 */ move $sp, $fp
/* 0CCB64 800CBF64 8FDE0020 */ lw $fp, 0x20($fp)
/* 0CCB68 800CBF68 03E00008 */ jr $ra
/* 0CCB6C 800CBF6C 27BD0028 */ addiu $sp, $sp, 0x28

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,79 +0,0 @@
glabel synthesis_load_reverb_ring_buffer
/* 0B7A84 800B6E84 00074103 */ sra $t0, $a3, 4
/* 0B7A88 800B6E88 AFA50004 */ sw $a1, 4($sp)
/* 0B7A8C 800B6E8C 00A07025 */ move $t6, $a1
/* 0B7A90 800B6E90 311800FF */ andi $t8, $t0, 0xff
/* 0B7A94 800B6E94 01C02825 */ move $a1, $t6
/* 0B7A98 800B6E98 AFA60008 */ sw $a2, 8($sp)
/* 0B7A9C 800B6E9C 30CFFFFF */ andi $t7, $a2, 0xffff
/* 0B7AA0 800B6EA0 0018CC00 */ sll $t9, $t8, 0x10
/* 0B7AA4 800B6EA4 3C011400 */ lui $at, 0x1400
/* 0B7AA8 800B6EA8 01E03025 */ move $a2, $t7
/* 0B7AAC 800B6EAC 03214025 */ or $t0, $t9, $at
/* 0B7AB0 800B6EB0 31CEFFFF */ andi $t6, $t6, 0xffff
/* 0B7AB4 800B6EB4 010E7825 */ or $t7, $t0, $t6
/* 0B7AB8 800B6EB8 AC8F0000 */ sw $t7, ($a0)
/* 0B7ABC 800B6EBC 8FB80010 */ lw $t8, 0x10($sp)
/* 0B7AC0 800B6EC0 3C0D803B */ lui $t5, %hi(gSynthesisReverbs) # $t5, 0x803b
/* 0B7AC4 800B6EC4 25ADF790 */ addiu $t5, %lo(gSynthesisReverbs) # addiu $t5, $t5, -0x870
/* 0B7AC8 800B6EC8 0018C940 */ sll $t9, $t8, 5
/* 0B7ACC 800B6ECC 0338C821 */ addu $t9, $t9, $t8
/* 0B7AD0 800B6ED0 0019C8C0 */ sll $t9, $t9, 3
/* 0B7AD4 800B6ED4 032D4821 */ addu $t1, $t9, $t5
/* 0B7AD8 800B6ED8 8D2E0018 */ lw $t6, 0x18($t1)
/* 0B7ADC 800B6EDC 00065040 */ sll $t2, $a2, 1
/* 0B7AE0 800B6EE0 3C0C8000 */ lui $t4, 0x8000
/* 0B7AE4 800B6EE4 24B90180 */ addiu $t9, $a1, 0x180
/* 0B7AE8 800B6EE8 01CA7821 */ addu $t7, $t6, $t2
/* 0B7AEC 800B6EEC 01ECC021 */ addu $t8, $t7, $t4
/* 0B7AF0 800B6EF0 332DFFFF */ andi $t5, $t9, 0xffff
/* 0B7AF4 800B6EF4 AC980004 */ sw $t8, 4($a0)
/* 0B7AF8 800B6EF8 248B0008 */ addiu $t3, $a0, 8
/* 0B7AFC 800B6EFC 010D7025 */ or $t6, $t0, $t5
/* 0B7B00 800B6F00 AD6E0000 */ sw $t6, ($t3)
/* 0B7B04 800B6F04 8D2F001C */ lw $t7, 0x1c($t1)
/* 0B7B08 800B6F08 25620008 */ addiu $v0, $t3, 8
/* 0B7B0C 800B6F0C 01EAC021 */ addu $t8, $t7, $t2
/* 0B7B10 800B6F10 030CC821 */ addu $t9, $t8, $t4
/* 0B7B14 800B6F14 03E00008 */ jr $ra
/* 0B7B18 800B6F18 AD790004 */ sw $t9, 4($t3)
glabel func_800B6F1C
/* 0B7B1C 800B6F1C 00074103 */ sra $t0, $a3, 4
/* 0B7B20 800B6F20 AFA50004 */ sw $a1, 4($sp)
/* 0B7B24 800B6F24 00A07025 */ move $t6, $a1
/* 0B7B28 800B6F28 311800FF */ andi $t8, $t0, 0xff
/* 0B7B2C 800B6F2C 01C02825 */ move $a1, $t6
/* 0B7B30 800B6F30 AFA60008 */ sw $a2, 8($sp)
/* 0B7B34 800B6F34 30CFFFFF */ andi $t7, $a2, 0xffff
/* 0B7B38 800B6F38 0018CC00 */ sll $t9, $t8, 0x10
/* 0B7B3C 800B6F3C 3C011500 */ lui $at, 0x1500
/* 0B7B40 800B6F40 01E03025 */ move $a2, $t7
/* 0B7B44 800B6F44 03214025 */ or $t0, $t9, $at
/* 0B7B48 800B6F48 31CEFFFF */ andi $t6, $t6, 0xffff
/* 0B7B4C 800B6F4C 010E7825 */ or $t7, $t0, $t6
/* 0B7B50 800B6F50 AC8F0000 */ sw $t7, ($a0)
/* 0B7B54 800B6F54 8FB80010 */ lw $t8, 0x10($sp)
/* 0B7B58 800B6F58 3C0D803B */ lui $t5, %hi(gSynthesisReverbs) # $t5, 0x803b
/* 0B7B5C 800B6F5C 25ADF790 */ addiu $t5, %lo(gSynthesisReverbs) # addiu $t5, $t5, -0x870
/* 0B7B60 800B6F60 0018C940 */ sll $t9, $t8, 5
/* 0B7B64 800B6F64 0338C821 */ addu $t9, $t9, $t8
/* 0B7B68 800B6F68 0019C8C0 */ sll $t9, $t9, 3
/* 0B7B6C 800B6F6C 032D4821 */ addu $t1, $t9, $t5
/* 0B7B70 800B6F70 8D2E0018 */ lw $t6, 0x18($t1)
/* 0B7B74 800B6F74 00065040 */ sll $t2, $a2, 1
/* 0B7B78 800B6F78 3C0C8000 */ lui $t4, 0x8000
/* 0B7B7C 800B6F7C 24B90180 */ addiu $t9, $a1, 0x180
/* 0B7B80 800B6F80 01CA7821 */ addu $t7, $t6, $t2
/* 0B7B84 800B6F84 01ECC021 */ addu $t8, $t7, $t4
/* 0B7B88 800B6F88 332DFFFF */ andi $t5, $t9, 0xffff
/* 0B7B8C 800B6F8C AC980004 */ sw $t8, 4($a0)
/* 0B7B90 800B6F90 248B0008 */ addiu $t3, $a0, 8
/* 0B7B94 800B6F94 010D7025 */ or $t6, $t0, $t5
/* 0B7B98 800B6F98 AD6E0000 */ sw $t6, ($t3)
/* 0B7B9C 800B6F9C 8D2F001C */ lw $t7, 0x1c($t1)
/* 0B7BA0 800B6FA0 25620008 */ addiu $v0, $t3, 8
/* 0B7BA4 800B6FA4 01EAC021 */ addu $t8, $t7, $t2
/* 0B7BA8 800B6FA8 030CC821 */ addu $t9, $t8, $t4
/* 0B7BAC 800B6FAC 03E00008 */ jr $ra
/* 0B7BB0 800B6FB0 AD790004 */ sw $t9, 4($t3)

View File

@ -1,67 +0,0 @@
#!/usr/bin/env python3
import argparse
import os
import sys
import subprocess
from pathlib import Path
script_dir = os.path.dirname(os.path.realpath(__file__))
root_dir = os.path.abspath(os.path.join(script_dir, ""))
print(root_dir)
src_dir = root_dir + "src/"
# Project-specific
CPP_FLAGS = [
"-Iinclude",
"-Isrc",
"-D_LANGUAGE_C",
"-DF3DEX_GBI",
"-D_MIPS_SZLONG=32",
"-DSCRIPT(...)={}"
"-D__attribute__(...)=",
"-D__asm__(...)=",
"-ffreestanding",
]
def import_c_file(in_file) -> str:
in_file = os.path.relpath(in_file, root_dir)
cpp_command = ["gcc", "-E", "-P", "-dM", *CPP_FLAGS, in_file]
cpp_command2 = ["gcc", "-E", "-P", *CPP_FLAGS, in_file]
out_text = ""
try:
out_text += subprocess.check_output(cpp_command, cwd=root_dir, encoding="utf-8")
out_text += subprocess.check_output(cpp_command2, cwd=root_dir, encoding="utf-8")
except subprocess.CalledProcessError:
print(
"Failed to preprocess input file, when running command:\n"
+ cpp_command,
file=sys.stderr,
)
sys.exit(1)
if not out_text:
print("Output is empty - aborting")
sys.exit(1)
return out_text
def main():
parser = argparse.ArgumentParser(
description="""Create a context file which can be used for mips_to_c"""
)
parser.add_argument(
"c_file",
help="""File from which to create context""",
)
args = parser.parse_args()
output = import_c_file(args.c_file)
with open(os.path.join(root_dir, "ctx.c"), "w", encoding="UTF-8") as f:
f.write(output)
if __name__ == "__main__":
main()

18
mk64.ld
View File

@ -88,14 +88,14 @@ SECTIONS
BUILD_DIR/src/code_8008C1D0.o(.text);
BUILD_DIR/src/code_80091750.o(.text);
BUILD_DIR/src/code_800AF9B0.o(.text);
BUILD_DIR/src/synthesis.o(.text);
BUILD_DIR/asm/audio/heap.o(.text);
BUILD_DIR/asm/audio/load.o(.text);
BUILD_DIR/asm/audio/playback.o(.text);
BUILD_DIR/asm/audio/effects.o(.text);
BUILD_DIR/asm/audio/seqplayer.o(.text);
BUILD_DIR/asm/audio/external.o(.text);
BUILD_DIR/asm/audio/port_eu.o(.text);
BUILD_DIR/src/audio/synthesis.o(.text);
BUILD_DIR/src/audio/heap.o(.text);
BUILD_DIR/src/audio/load.o(.text);
BUILD_DIR/src/audio/playback.o(.text);
BUILD_DIR/src/audio/effects.o(.text);
BUILD_DIR/src/audio/seqplayer.o(.text);
BUILD_DIR/src/audio/external.o(.text);
BUILD_DIR/src/audio/port_eu.o(.text);
BUILD_DIR/src/os/osCreateThread.o(.text);
BUILD_DIR/src/os/osInitialize.o(.text);
@ -331,7 +331,7 @@ SECTIONS
. = SEG_AUDIO;
BEGIN_NOLOAD(audio)
{
BUILD_DIR/src/synthesis.o(.bss*);
BUILD_DIR/src/audio/synthesis.o(.bss*);
}
END_NOLOAD(audio)

327
src/audio/effects.c Normal file
View File

@ -0,0 +1,327 @@
#include <ultra64.h>
#include <macros.h>
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800BDE50(void *arg0, s32 arg1) {
f32 temp_f0;
s32 temp_a2;
u32 temp_v0_2;
void *temp_v0;
void *temp_v1;
f32 phi_f0;
void *phi_a3;
s32 phi_a2;
phi_a3 = arg0;
phi_a2 = 0;
if (((arg0->unk0 << 9) < 0) || (arg1 != 0)) {
temp_v0 = arg0->unk44;
temp_f0 = arg0->unk24 * arg0->unk20 * temp_v0->unk2C;
phi_f0 = temp_f0;
if (((temp_v0->unk0 * 4) < 0) && ((arg0->unk3 & 0x20) != 0)) {
phi_f0 = temp_v0->unk24 * temp_f0;
}
arg0->unk2C = phi_f0 * phi_f0;
}
if (arg0->unk0 & 0x200000) {
arg0->unk28 = arg0->unk9 * arg0->unkA;
}
do {
temp_v1 = phi_a3->unk48;
temp_a2 = phi_a2 + 4;
phi_a2 = temp_a2;
if (temp_v1 != 0) {
temp_v0_2 = temp_v1->unk0;
if (((temp_v0_2 >> 0x1F) != 0) && (temp_v1->unk40 != 0)) {
if (temp_v0_2 & 0x4000000) {
temp_v1->unk30 = temp_v1->unk24 * arg0->unk30;
temp_v1->unk2C = temp_v1->unk28 * arg0->unk2C;
temp_v1->unk0 = temp_v1->unk0 & 0xFFFB;
temp_v1->unk6 = (arg0->unk28 + (temp_v1->unk5 * (0x80 - arg0->unkA))) >> 7;
} else {
if (arg0->unk1 < 0) {
temp_v1->unk30 = temp_v1->unk24 * arg0->unk30;
}
if (((arg0->unk0 << 9) < 0) || (arg1 != 0)) {
temp_v1->unk2C = temp_v1->unk28 * arg0->unk2C;
}
if (arg0->unk0 & 0x200000) {
temp_v1->unk6 = (arg0->unk28 + (temp_v1->unk5 * (0x80 - arg0->unkA))) >> 7;
}
}
}
}
phi_a3 += 4;
} while (temp_a2 != 0x10);
arg0->unk1 = 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BDE50.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BDE50(s32, u32); // extern
? func_800BEF2C(void *); // extern
extern ? D_803B5EF0;
void func_800BDFF8(void *arg0) {
s32 temp_a0;
s32 temp_s0;
u16 temp_t1;
void *phi_s1;
s32 phi_s0;
if (arg0->unk10 != 0) {
arg0->unk18 = arg0->unk18 + arg0->unk1C;
arg0->unk0 = arg0->unk0 | 4;
if (arg0->unk18 > 1.0f) {
arg0->unk18 = 1.0f;
}
if (arg0->unk18 < 0.0f) {
arg0->unk18 = 0.0f;
}
temp_t1 = arg0->unk10 - 1;
arg0->unk10 = temp_t1;
if (((temp_t1 & 0xFFFF) == 0) && (arg0->unk1 == 2)) {
func_800BEF2C(arg0);
return;
}
goto block_8;
}
block_8:
phi_s1 = arg0;
phi_s0 = 0;
if (arg0->unk0 & 0x4000000) {
arg0->unk2C = arg0->unk18 * arg0->unk28;
}
do {
temp_a0 = phi_s1->unk30;
if (((&D_803B5EF0 != temp_a0) == 1) && ((*temp_a0 >> 0x1F) == 1)) {
func_800BDE50(temp_a0, (arg0->unk0 << 5) >> 0x1F);
}
temp_s0 = phi_s0 + 4;
phi_s1 += 4;
phi_s0 = temp_s0;
} while (temp_s0 != 0x40);
arg0->unk0 = arg0->unk0 & 0xFFFB;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BDFF8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? gPitchBendFrequencyScale;
f32 func_800BE158(void *arg0) {
u32 temp_v0;
u32 phi_v0;
arg0->unk4 = arg0->unk4 + arg0->unk8;
temp_v0 = arg0->unk4;
phi_v0 = temp_v0;
if (temp_v0 >= 0x80) {
phi_v0 = 0x7F;
}
return ((*(&gPitchBendFrequencyScale + 0x200 + (phi_v0 * 4)) - 1.0f) * arg0->unkC) + 1.0f;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE158.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_800BE22C(void *arg0) {
s32 temp_t3;
u32 temp_t9;
temp_t9 = arg0->unk4 + arg0->unk10;
temp_t3 = ((temp_t9 >> 0xA) & 0x3F) * 2;
arg0->unk4 = temp_t9;
return *(arg0->unk8 + temp_t3) >> 8;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE22C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800BE22C(u16); // extern
extern ? gPitchBendFrequencyScale;
f32 func_800BE270(void *arg0, u16 arg1) {
f32 temp_f0;
f32 temp_f0_2;
u16 temp_v0;
u16 temp_v0_2;
u16 temp_v0_3;
u16 temp_v0_4;
u16 temp_v0_5;
void *temp_v1;
u16 phi_a1;
temp_v0 = arg0->unk1A;
phi_a1 = arg1;
if (temp_v0 != 0) {
arg0->unk1A = temp_v0 - 1;
return 1.0f;
}
temp_v0_2 = arg0->unk18;
if (temp_v0_2 != 0) {
if (temp_v0_2 == 1) {
arg0->unkC = arg0->unk0->unk12;
} else {
temp_f0 = arg0->unkC;
arg0->unkC = temp_f0 + ((arg0->unk0->unk12 - temp_f0) / temp_v0_2);
}
arg0->unk18 = arg0->unk18 - 1;
} else {
temp_v1 = arg0->unk0;
if (arg0->unkC != temp_v1->unk12) {
temp_v0_3 = temp_v1->unk16;
arg0->unk18 = temp_v0_3;
if (temp_v0_3 == 0) {
arg0->unkC = temp_v1->unk12;
}
}
}
temp_v0_4 = arg0->unk16;
if (temp_v0_4 != 0) {
phi_a1 = temp_v0_4;
if (temp_v0_4 == 1) {
arg0->unk10 = arg0->unk0->unk10;
} else {
temp_f0_2 = arg0->unk10;
arg0->unk10 = temp_f0_2 + ((arg0->unk0->unk10 - temp_f0_2) / temp_v0_4);
}
arg0->unk16 = arg0->unk16 - 1;
} else if (arg0->unk10 != arg0->unk0->unk10) {
temp_v0_5 = arg0->unk0->unk14;
arg0->unk16 = temp_v0_5;
if (temp_v0_5 == 0) {
arg0->unk10 = arg0->unk0->unk10;
}
}
if (arg0->unkC == 0.0f) {
return 1.0f;
}
return ((*(&gPitchBendFrequencyScale + 0x200 + (func_800BE22C(phi_a1) * 4)) - 1.0f) * (arg0->unkC * 0.00024414062f)) + 1.0f;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE270.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
f32 func_800BE158(void *, void *); // extern
f32 func_800BE270(void *, void *); // extern
void func_800BE468(void *arg0) {
void *temp_a0;
void *temp_a1;
void *phi_a1;
temp_a1 = arg0;
temp_a0 = arg0 + 0x7C;
phi_a1 = temp_a1;
if (arg0->unk7C != 0) {
arg0 = temp_a1;
arg0->unk38 = func_800BE158(temp_a0, temp_a1);
phi_a1 = arg0;
}
if ((phi_a1->unkA0 != 0) && (phi_a1->unk44 != -1)) {
arg0 = phi_a1;
arg0->unk3C = func_800BE270(phi_a1 + 0x8C, phi_a1);
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE468.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? gWaveSamples;
void func_800BE4D4(void *arg0) {
u16 temp_v0;
u16 temp_v0_2;
void *temp_a1;
void *temp_a1_2;
void *temp_t6;
void *temp_t9;
void *temp_v0_3;
void *temp_v1;
void *temp_v1_2;
void *phi_a1;
void *phi_v1;
arg0->unkA0 = 1;
arg0->unk90 = 0;
arg0->unk3C = 1.0f;
arg0->unk38 = 1.0f;
temp_v1 = arg0 + 0x8C;
arg0->unk94 = *(&gWaveSamples + 8);
temp_t9 = arg0->unk44->unk4C;
arg0->unk8C = temp_t9;
temp_v0 = temp_t9->unk16;
arg0->unkA4 = temp_v0;
phi_v1 = temp_v1;
if (temp_v0 == 0) {
temp_v1_2 = arg0 + 0x8C;
temp_a1 = temp_v1_2->unk0;
temp_v1_2->unkC = temp_a1->unk12;
phi_a1 = temp_a1;
phi_v1 = temp_v1_2;
} else {
temp_a1_2 = temp_v1->unk0;
temp_v1->unkC = temp_a1_2->unkE;
phi_a1 = temp_a1_2;
}
temp_v0_2 = phi_a1->unk14;
phi_v1->unk16 = temp_v0_2;
if (temp_v0_2 == 0) {
phi_v1->unk10 = phi_a1->unk10;
} else {
phi_v1->unk10 = phi_a1->unkC;
}
temp_v0_3 = arg0 + 0x30;
phi_v1->unk1A = phi_a1->unk18;
temp_t6 = temp_v0_3->unk14;
temp_v0_3->unk4C = temp_t6->unk8;
temp_v0_3->unk50 = temp_t6->unkC;
temp_v0_3->unk54 = temp_t6->unk10;
temp_v0_3->unk58 = temp_t6->unk14;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE4D4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800BE5BC(void *arg0, s32 arg1, ? arg2) {
arg0->unk0 = 0;
arg0->unk1 = 0;
arg0->unk4 = 0;
arg0->unk20 = arg1;
arg0->unk8 = 0.0f;
arg0->unk14 = 0.0f;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5BC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800BE5E0:
Unable to determine jump table for jr instruction at func_800BE5E0.s line 11.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl"/"jpt_".
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5E0.s")
#endif

4944
src/audio/external.c Normal file

File diff suppressed because it is too large Load Diff

1087
src/audio/heap.c Normal file

File diff suppressed because it is too large Load Diff

1190
src/audio/load.c Normal file

File diff suppressed because it is too large Load Diff

1231
src/audio/playback.c Normal file

File diff suppressed because it is too large Load Diff

433
src/audio/port_eu.c Normal file
View File

@ -0,0 +1,433 @@
#include <ultra64.h>
#include <macros.h>
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B70EC(s32, s32 *, s32, s16); // extern
s32 func_800BA00C(); // extern
? func_800BAC04(); // extern
? func_800CBCB0(void *); // extern
extern OSMesgQueue *D_800EA3A8;
extern OSMesgQueue *D_800EA3AC;
extern OSMesgQueue *D_800EA3B0;
extern OSMesgQueue *D_800EA3B4;
extern s32 D_800EA484;
extern u8 D_803B0500;
extern u8 D_803B0501;
extern OSMesgQueue D_803B6008;
extern ? D_803B7088;
extern s32 D_803B70B8;
extern s32 D_803B70BC;
extern s32 D_803B70C0;
extern s32 D_803B70C4;
extern ? D_803B70C8;
extern s32 D_803B70D0;
extern void *D_803B70D4;
extern ? D_803B70D8;
extern ? D_803B7180;
extern ? D_803B718C;
extern s32 D_803B7194;
extern ? aspMainDataEnd;
extern ? aspMainDataStart;
extern ? aspMainTextStart;
extern ? rspbootTextEnd;
extern ? rspbootTextStart;
void *create_next_audio_frame_task(void) {
u32 sp74;
s32 sp70;
s32 sp60;
void *sp58;
void *sp54;
s32 *sp40;
s16 *temp_s1_3;
s16 temp_a0;
s16 temp_v0_2;
s16 temp_v1;
s32 *temp_a3;
s32 temp_hi;
s32 temp_s0;
s32 temp_s0_2;
s32 temp_s0_3;
s32 temp_s0_4;
s32 temp_s1;
s32 temp_s1_2;
s32 temp_t3;
s32 temp_t5;
s32 temp_v0;
void *temp_v1_2;
s32 phi_s0;
s32 phi_s1;
s32 phi_s0_2;
s32 phi_s0_3;
s32 phi_s1_2;
s32 phi_s1_3;
D_803B70B8 = D_803B70B8 + 1;
if ((D_803B70B8 % D_803B7088.unk0) != 0) {
return NULL;
}
osSendMesg(D_800EA3A8, D_803B70B8, 0);
temp_t3 = D_803B70C4 + 1;
temp_t5 = temp_t3 % 3;
temp_hi = (temp_t5 + 1) % 3;
D_803B70C4 = temp_t3;
D_803B70C0 = D_803B70C0 ^ 1;
D_803B70C4 = temp_t5;
sp74 = osAiGetLength() >> 2;
temp_v1 = *(&D_803B718C + (temp_hi * 2));
if (temp_v1 != 0) {
osAiSetNextBuffer(*(&D_803B7180 + (temp_hi * 4)), temp_v1 * 4);
}
temp_s1 = D_803B70BC;
phi_s0 = 0;
phi_s1 = temp_s1;
phi_s0_2 = 0;
phi_s0_3 = 0;
phi_s1_3 = temp_s1;
if (temp_s1 > 0) {
do {
phi_s1_2 = phi_s1_3;
if (osRecvMesg(&D_803B6008, NULL, 0) == 0) {
phi_s1_2 = phi_s1_3 - 1;
}
temp_s0 = phi_s0 + 1;
phi_s0 = temp_s0;
phi_s1 = phi_s1_2;
phi_s1_3 = phi_s1_2;
} while (temp_s0 < D_803B70BC);
}
if ((phi_s1 != 0) && (phi_s1 > 0)) {
do {
osRecvMesg(&D_803B6008, NULL, 1);
temp_s0_2 = phi_s0_2 + 1;
phi_s0_2 = temp_s0_2;
} while (temp_s0_2 != phi_s1);
}
temp_s1_2 = D_803B6008.validCount;
if ((temp_s1_2 != 0) && (temp_s1_2 > 0)) {
do {
osRecvMesg(&D_803B6008, NULL, 0);
temp_s0_3 = phi_s0_3 + 1;
phi_s0_3 = temp_s0_3;
} while (temp_s0_3 != temp_s1_2);
}
D_803B70BC = 0;
func_800BAC04();
if (osRecvMesg(D_800EA3B0, &sp58, 0) != -1) {
D_803B0501 = sp58;
D_803B0500 = 5;
}
if ((D_803B0500 != 0) && (func_800BA00C() == 0)) {
if (D_803B0500 == 0) {
osSendMesg(D_800EA3B4, D_803B0501, 0);
}
return NULL;
}
temp_v0 = D_803B70C0;
D_803B70D4 = (temp_v0 * 0x50) + &D_803B70D8;
temp_s0_4 = D_803B70C4;
temp_a3 = (temp_s0_4 * 4) + &D_803B7180;
D_803B70D0 = *(&D_803B70C8 + (temp_v0 * 4));
sp60 = *temp_a3;
temp_s1_3 = (temp_s0_4 * 2) + &D_803B718C;
*temp_s1_3 = (((D_803B7088.unk6 - sp74) + 0x40) & 0xFFF0) + 0x10;
temp_a0 = D_803B7088.unkA;
if (*temp_s1_3 < temp_a0) {
*temp_s1_3 = temp_a0;
}
temp_v0_2 = D_803B7088.unk8;
if (temp_v0_2 < *temp_s1_3) {
*temp_s1_3 = temp_v0_2;
}
sp40 = temp_a3;
if (osRecvMesg(D_800EA3AC, &sp54, 0) != -1) {
func_800CBCB0(sp54);
}
D_803B70D0 = func_800B70EC(D_803B70D0, &sp70, sp60, *temp_s1_3);
D_803B7194 = osGetCount() * (D_803B7194 + D_803B70B8);
D_803B7194 = *(*sp40 + ((D_803B70B8 & 0xFF) * 2)) + D_803B7194;
D_803B70D4->unk40 = 0;
D_803B70D4->unk44 = 0;
temp_v1_2 = D_803B70D4;
temp_v1_2->unk0 = 2;
temp_v1_2->unk4 = 0;
temp_v1_2->unk8 = &rspbootTextStart;
temp_v1_2->unkC = &rspbootTextEnd - &rspbootTextStart;
temp_v1_2->unk10 = &aspMainTextStart;
temp_v1_2->unk18 = &aspMainDataStart;
temp_v1_2->unk14 = 0x1000;
temp_v1_2->unk1C = ((&aspMainDataEnd - &aspMainDataStart) >> 3) * 8;
temp_v1_2->unk20 = 0;
temp_v1_2->unk24 = 0;
temp_v1_2->unk28 = 0;
temp_v1_2->unk2C = 0;
temp_v1_2->unk30 = *(&D_803B70C8 + (D_803B70C0 * 4));
temp_v1_2->unk38 = 0;
temp_v1_2->unk3C = 0;
temp_v1_2->unk34 = sp70 * 8;
if (D_800EA484 < sp70) {
D_800EA484 = sp70;
}
return D_803B70D4;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BB388(u8, u8, u8, void *); // extern
? func_800BBDDC(u8, ?, void *); // extern
? func_800BBEF0(u8, u8, u8, void *); // extern
? func_800BEF2C(u32 *, s32, void *); // extern
? func_800CBA08(u8, s32, void *); // extern
? func_800CBA64(u8, s32); // extern
extern u8 D_803B1510;
extern u8 D_803B1658;
extern u8 D_803B17A0;
extern u8 D_803B18E8;
extern s8 D_803B70B6;
void func_800CB818(void *arg0) {
s32 temp_a1;
u32 *temp_a0;
u8 temp_a0_2;
u8 temp_a1_2;
u8 temp_a2;
u8 temp_v0;
u8 temp_v0_2;
void *temp_a3;
temp_v0 = arg0->unk0;
temp_a3 = arg0;
if (temp_v0 != 0x81) {
if (temp_v0 != 0x82) {
if (temp_v0 != 0x83) {
if (temp_v0 != 0x88) {
if (temp_v0 != 0xF0) {
if (temp_v0 != 0xF1) {
if (temp_v0 != 0xF2) {
if (temp_v0 != 0xF3) {
return;
}
func_800BB388(temp_a3->unk1, temp_a3->unk2, temp_a3->unk3, temp_a3);
// Duplicate return node #19. Try simplifying control flow for better match
return;
}
D_803B1510 = (D_803B1510 & 0xFFDF) | 4;
D_803B1658 = (D_803B1658 & 0xFFDF) | 4;
D_803B17A0 = (D_803B17A0 & 0xFFDF) | 4;
D_803B18E8 = (D_803B18E8 & 0xFFDF) | 4;
return;
}
D_803B1510 = D_803B1510 | 0x24;
D_803B1658 = D_803B1658 | 0x24;
D_803B17A0 = D_803B17A0 | 0x24;
D_803B18E8 = D_803B18E8 | 0x24;
return;
}
D_803B70B6 = temp_a3->unk4;
return;
}
goto block_10;
}
temp_v0_2 = temp_a3->unk1;
temp_a0 = (temp_v0_2 * 0x148) + &D_803B1510;
if ((*temp_a0 >> 0x1F) != 0) {
temp_a1 = temp_a3->unk4;
if (temp_a1 == 0) {
func_800BEF2C(temp_a0, temp_a1, temp_a3);
return;
}
func_800CBA08(temp_v0_2, temp_a1, temp_a3);
return;
}
return;
}
block_10:
temp_a0_2 = temp_a3->unk1;
temp_a1_2 = temp_a3->unk2;
temp_a2 = temp_a3->unk3;
arg0 = temp_a3;
func_800BBEF0(temp_a0_2, temp_a1_2, temp_a2, temp_a3);
func_800CBA64(arg0->unk1, arg0->unk4);
return;
}
func_800BBDDC(temp_a3->unk2, 3, temp_a3);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CB818.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803B1510;
void func_800CBA08(s32 arg0, s16 arg1) {
? sp-10;
void *temp_v0;
s16 phi_a1;
phi_a1 = arg1;
if (arg1 == 0) {
phi_a1 = 1;
}
temp_v0 = (arg0 * 0x148) + &D_803B1510;
temp_v0->unk1 = 2;
temp_v0->unk10 = phi_a1;
temp_v0->unk1C = -(temp_v0->unk18 / phi_a1);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBA08.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803B1510;
void func_800CBA64(s32 arg0, s16 arg1) {
? sp-10;
void *temp_v0;
if (arg1 != 0) {
temp_v0 = (arg0 * 0x148) + &D_803B1510;
temp_v0->unk1 = 1;
temp_v0->unk12 = arg1;
temp_v0->unk10 = arg1;
temp_v0->unk18 = 0.0f;
temp_v0->unk1C = 0.0f;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBA64.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern s8 D_800EA3A0;
extern s8 D_800EA3A4;
extern OSMesgQueue *D_800EA3A8;
extern OSMesgQueue *D_800EA3AC;
extern OSMesgQueue *D_800EA3B0;
extern OSMesgQueue *D_800EA3B4;
extern void *D_80194020;
extern void *D_80194028;
extern void *D_80194038;
extern void *D_8019403C;
void func_800CBAB4(void) {
D_800EA3A0 = 0;
D_800EA3A4 = 0;
osCreateMesgQueue(D_800EA3A8, &D_80194020, 1);
osCreateMesgQueue(D_800EA3AC, &D_80194028, 4);
osCreateMesgQueue(D_800EA3B0, &D_80194038, 1);
osCreateMesgQueue(D_800EA3B4, &D_8019403C, 1);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBAB4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern u8 D_800EA3A0;
extern ? D_80193820;
void func_800CBB48(s32 arg0, s32 *arg1) {
void *temp_v0;
temp_v0 = (D_800EA3A0 * 8) + &D_80193820;
temp_v0->unk0 = arg0;
temp_v0->unk4 = *arg1;
D_800EA3A0 = D_800EA3A0 + 1;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBB48.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800CBB48(? *); // extern
void func_800CBB88(? arg1) {
func_800CBB48(&arg1);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBB88.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800CBB48(? *); // extern
void func_800CBBB8(? arg1) {
func_800CBB48(&arg1);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBBB8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800CBB48(s32 *); // extern
void func_800CBBE8(s32 arg1) {
s32 sp34;
sp34 = arg1 << 0x18;
func_800CBB48(&sp34);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBBE8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern u8 D_800EA3A0;
extern u8 D_800EA3A4;
extern OSMesgQueue *D_800EA3AC;
extern s32 D_800EA4A4;
void func_800CBC24(void) {
s32 temp_t6;
u8 temp_v0;
u8 temp_v1;
temp_v1 = D_800EA3A4;
temp_v0 = D_800EA3A0;
temp_t6 = ((temp_v0 - temp_v1) + 0x100) & 0xFF;
if (D_800EA4A4 < temp_t6) {
D_800EA4A4 = temp_t6;
}
osSendMesg(D_800EA3AC, ((temp_v1 & 0xFF) << 8) | (temp_v0 & 0xFF), 0);
D_800EA3A4 = D_800EA3A0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBC24.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800CBCB0:
Unable to determine jump table for jr instruction at func_800CBCB0.s line 116.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl"/"jpt_".
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBCB0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800CBF48:
Last instruction is missing a delay slot:
jr $ra
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBF48.s")
#endif

807
src/audio/seqplayer.c Normal file
View File

@ -0,0 +1,807 @@
#include <ultra64.h>
#include <macros.h>
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD318(void *, void *, s32); // extern
void func_800BE8F0(void *arg0) {
s32 temp_a0;
u8 temp_t0;
u8 temp_t2;
u8 temp_t4;
u8 temp_t6;
u8 temp_t8;
u8 temp_t8_2;
void *temp_v1;
void *phi_v1;
s32 phi_a0;
temp_t8 = arg0->unk0 & 0xFF7F;
temp_t0 = temp_t8 & 0xBF;
arg0->unk0 = temp_t8;
temp_t2 = temp_t0 & 0xDF;
arg0->unk0 = temp_t0;
temp_t4 = temp_t2 & 0xEF;
arg0->unk0 = temp_t2;
temp_t6 = temp_t4 & 0xF7;
arg0->unk0 = temp_t4;
temp_t8_2 = temp_t6 & 0xFB;
arg0->unk0 = temp_t6;
arg0->unk0 = temp_t8_2;
arg0->unk10 = 0x800;
arg0->unkC = 0x800;
arg0->unk1E = 0;
arg0->unk0 = temp_t8_2 & 0xFD;
arg0->unk8 = 0;
arg0->unk1 = 0xFF;
arg0->unk78 = 0;
arg0->unk9 = 0x40;
arg0->unkA = 0x80;
arg0->unk38 = 0;
arg0->unk7 = 0;
arg0->unk4 = 0;
arg0->unk5 = 3;
arg0->unk1A = 0;
arg0->unk80 = gDefaultEnvelope;
arg0->unk7C = 0x20;
arg0->unk7D = 0;
arg0->unk12 = 0;
arg0->unkE = 0;
arg0->unk14 = 0;
arg0->unk16 = 0;
arg0->unk18 = 0;
arg0->unk24 = 1.0f;
arg0->unk20 = 1.0f;
arg0->unk30 = 1.0f;
phi_v1 = arg0;
phi_a0 = 0;
do {
temp_a0 = phi_a0 + 4;
phi_v1->unk59 = -1;
phi_v1->unk5A = -1;
phi_v1->unk5B = -1;
temp_v1 = phi_v1 + 4;
temp_v1->unk54 = -1;
phi_v1 = temp_v1;
phi_a0 = temp_a0;
} while (temp_a0 != 8);
arg0->unk0 = arg0->unk0 & 0xFFFE;
func_800BD318(arg0 + 0x84, arg0, 8);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BE8F0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD120(s32, void *, s32); // extern
s32 func_800BF044(? *, void *, s32); // extern
extern ? D_803B5FB8;
? func_800BEA10(void *arg0, s32 arg1) {
void *sp1C;
s32 temp_a3;
s32 temp_t7;
s32 temp_v0;
u8 temp_t0;
u8 temp_t1;
u8 temp_t5;
u8 temp_t7_2;
void *temp_a2;
void *temp_v1;
temp_t7 = arg1 * 4;
temp_a2 = arg0 + temp_t7;
temp_a3 = temp_a2->unk48;
if (temp_a3 == 0) {
sp1C = temp_a2;
temp_v0 = func_800BF044(&D_803B5FB8, temp_a2, temp_a3);
temp_a2->unk48 = temp_v0;
if (temp_v0 == 0) {
temp_a2->unk48 = 0;
return -1;
}
goto block_4;
}
sp1C = temp_a2;
func_800BD120(temp_a3, temp_a2, temp_a3);
block_4:
temp_v1 = (arg0 + temp_t7)->unk48;
temp_v1->unk4C = arg0;
temp_t5 = temp_v1->unk0 | 0x80;
temp_t7_2 = temp_t5 & 0xDF;
temp_t0 = temp_t7_2 & 0xEF;
temp_v1->unk18 = arg0->unk7C;
temp_v1->unk0 = temp_t5;
temp_v1->unk1C = arg0->unk80;
temp_t1 = temp_t0 & 0xBF;
temp_v1->unk0 = temp_t7_2;
temp_v1->unk0 = temp_t0;
temp_v1->unk0 = temp_t1;
temp_v1->unk18 = 0;
temp_v1->unk0 = temp_t1 & 0xFD;
temp_v1->unk8 = 0;
temp_v1->unk68 = 0;
temp_v1->unk2 = 0;
temp_v1->unk3 = 0x80;
temp_v1->unk5 = 0x40;
temp_v1->unk22 = 0;
temp_v1->unk38 = 0;
temp_v1->unk3A = 0;
temp_v1->unk3C = 0;
temp_v1->unk40 = 0;
temp_v1->unk44 = 0;
temp_v1->unk1 = 0xFF;
temp_v1->unk28 = 0.0f;
temp_v1->unk24 = 1.0f;
return 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEA10.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD120(); // extern
void func_800BEB18(u8 *arg0) {
u8 temp_t0;
u8 temp_t9;
if (arg0 != 0) {
func_800BD120();
temp_t9 = *arg0 & 0xFF7F;
temp_t0 = temp_t9 | 0x40;
*arg0 = temp_t9;
*arg0 = temp_t0;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEB18.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BEB18(s32); // extern
? func_800BF004(? *, s32, s32); // extern
extern ? D_803B5FB8;
void func_800BEB54(s32 arg0, s32 arg1) {
s32 sp1C;
void *sp18;
s32 temp_a2;
void *temp_v0;
temp_v0 = arg0 + (arg1 * 4);
temp_a2 = temp_v0->unk48;
if (temp_a2 != 0) {
sp18 = temp_v0;
sp1C = temp_a2;
func_800BF004(&D_803B5FB8, temp_a2 + 0x6C, temp_a2);
func_800BEB18(sp1C);
temp_v0->unk48 = 0;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEB54.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD418(s32); // extern
? func_800BEB54(u8 *, s32); // extern
void func_800BEBA4(u8 *arg0) {
s32 temp_s0;
u8 temp_t9;
s32 phi_s0;
phi_s0 = 0;
do {
func_800BEB54(arg0, phi_s0);
temp_s0 = phi_s0 + 1;
phi_s0 = temp_s0;
} while (temp_s0 != 4);
func_800BD418(arg0 + 0x84);
temp_t9 = *arg0 & 0xFF7F;
*arg0 = temp_t9;
*arg0 = temp_t9 | 0x40;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEBA4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803B1A30;
extern ? D_803B3EF0;
extern ? D_803B5EF0;
? *func_800BEC10(void) {
? *temp_v1;
? *phi_v1;
phi_v1 = &D_803B1A30;
loop_1:
if (phi_v1->unk44 == 0) {
return phi_v1;
}
if (phi_v1->unk108 == 0) {
return phi_v1 + 0xC4;
}
if (phi_v1->unk1CC == 0) {
return phi_v1 + 0x188;
}
if (phi_v1->unk290 == 0) {
return phi_v1 + 0x24C;
}
temp_v1 = phi_v1 + 0x310;
phi_v1 = temp_v1;
if (temp_v1 == &D_803B3EF0) {
return &D_803B5EF0;
}
goto loop_1;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEC10.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BE8F0(s32); // extern
? func_800BEBA4(s32, s32); // extern
s32 func_800BEC10(); // extern
extern ? D_803B5EF0;
extern s32 D_803B7198;
void func_800BEC8C(void *arg0, s32 arg1) {
s32 temp_s0;
s32 temp_s3;
s32 temp_v0;
void *temp_s2;
s32 phi_a1;
s32 phi_s3;
phi_a1 = arg1 & 0xFFFF;
phi_s3 = 0;
do {
if ((phi_a1 & 1) != 0) {
temp_s2 = arg0 + (phi_s3 * 4);
temp_s0 = temp_s2->unk30;
if (((temp_s0 != &D_803B5EF0) == 1) && (arg0 == temp_s0->unk44)) {
func_800BEBA4(temp_s0, phi_a1);
temp_s0->unk44 = 0;
}
temp_v0 = func_800BEC10();
if (temp_v0 == &D_803B5EF0) {
D_803B7198 = phi_s3 + 0x10000;
temp_s2->unk30 = temp_v0;
} else {
func_800BE8F0(temp_v0);
temp_s2->unk30 = temp_v0;
temp_v0->unk44 = arg0;
temp_v0->unk6 = arg0->unk5;
temp_v0->unk3 = arg0->unk3;
temp_v0->unk2 = arg0->unk2;
}
}
temp_s3 = phi_s3 + 1;
phi_a1 = (phi_a1 >> 1) & 0xFFFF;
phi_s3 = temp_s3;
} while (temp_s3 != 0x10);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEC8C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BEBA4(s32, s32); // extern
extern ? D_803B5EF0;
void func_800BEDB8(s32 arg0, s32 arg1) {
s32 temp_s0;
s32 temp_s1;
void *temp_s3;
s32 phi_a1;
s32 phi_s1;
phi_a1 = arg1 & 0xFFFF;
phi_s1 = 0;
do {
if ((phi_a1 & 1) != 0) {
temp_s3 = arg0 + (phi_s1 * 4);
temp_s0 = temp_s3->unk30;
if ((temp_s0 != &D_803B5EF0) == 1) {
if (arg0 == temp_s0->unk44) {
func_800BEBA4(temp_s0, phi_a1);
temp_s0->unk44 = 0;
}
temp_s3->unk30 = &D_803B5EF0;
}
}
temp_s1 = phi_s1 + 1;
phi_a1 = (phi_a1 >> 1) & 0xFFFF;
phi_s1 = temp_s1;
} while (temp_s1 != 0x10);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEDB8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BEB54(void *, s32); // extern
extern ? D_803B5EF0;
void func_800BEE88(s32 arg0, s32 arg1, s32 arg2) {
s32 temp_s0;
u8 temp_t4;
void *temp_s2;
void *phi_s1;
s32 phi_s0;
temp_s2 = (arg0 + ((arg1 & 0xFF) * 4))->unk30;
phi_s0 = 0;
if (temp_s2 != &D_803B5EF0) {
temp_s2->unk78 = 0;
temp_s2->unk60 = arg2;
temp_t4 = temp_s2->unk0 | 0x80;
temp_s2->unk0 = temp_t4;
temp_s2->unk0 = temp_t4 & 0xBF;
temp_s2->unk1A = 0;
phi_s1 = temp_s2;
do {
if (phi_s1->unk48 != 0) {
func_800BEB54(temp_s2, phi_s0);
}
temp_s0 = phi_s0 + 1;
phi_s1 += 4;
phi_s0 = temp_s0;
} while (temp_s0 != 4);
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEE88.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD418(s32); // extern
? func_800BEDB8(?); // extern
extern ? D_803AFE18;
extern ? D_803B03C0;
extern ? D_803B0400;
void func_800BEF2C(void *arg0) {
u8 *temp_v0;
u8 *temp_v1_2;
u8 temp_a0;
u8 temp_t0;
u8 temp_t9;
u8 temp_v1;
func_800BEDB8(0xFFFF);
func_800BD418(arg0 + 0x94);
temp_t9 = arg0->unk0 | 0x40;
temp_t0 = temp_t9 & 0x7F;
arg0->unk0 = temp_t9;
arg0->unk0 = temp_t0;
temp_v0 = arg0->unk4 + &D_803B0400;
temp_v1 = *temp_v0;
if ((temp_v1 >= 2) && (temp_v1 != 5)) {
*temp_v0 = 3;
}
temp_v1_2 = arg0->unk5 + &D_803B03C0;
temp_a0 = *temp_v1_2;
if ((temp_a0 >= 2) && (temp_a0 != 5)) {
*temp_v1_2 = 4;
}
if (arg0->unk5 == D_803AFE18.unk1B2) {
D_803AFE18.unk194 = 1;
return;
}
if (arg0->unk5 == D_803AFE18.unk1BE) {
D_803AFE18.unk194 = 0;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEF2C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800BF004(void *arg0, void *arg1) {
if (arg1->unk0 == 0) {
arg0->unk0->unk4 = arg1;
arg1->unk4 = arg0;
arg1->unk0 = arg0->unk0;
arg0->unk0 = arg1;
arg0->unk8 = arg0->unk8 + 1;
arg1->unkC = arg0->unkC;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF004.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800BF044(void *arg0) {
void *temp_v1;
temp_v1 = arg0->unk0;
if (temp_v1 == arg0) {
return 0;
}
temp_v1->unk0->unk4 = arg0;
arg0->unk0 = temp_v1->unk0;
temp_v1->unk0 = NULL;
arg0->unk8 = arg0->unk8 - 1;
return temp_v1->unk8;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF044.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BF004(? *, ? *); // extern
extern ? D_803B3EF0;
extern ? D_803B3F5C;
extern ? D_803B5F5C;
extern ? D_803B5FB8;
void func_800BF084(void) {
? *temp_s1;
? *phi_s0;
? *phi_s1;
D_803B5FB8.unk0 = &D_803B5FB8;
D_803B5FB8.unk4 = &D_803B5FB8;
D_803B5FB8.unk8 = 0;
D_803B5FB8.unkC = 0;
phi_s0 = &D_803B3EF0;
phi_s1 = &D_803B3F5C;
do {
phi_s0->unk74 = phi_s0;
phi_s0->unk6C = 0;
func_800BF004(&D_803B5FB8, phi_s1);
temp_s1 = phi_s1 + 0x80;
phi_s0 += 0x80;
phi_s1 = temp_s1;
} while (temp_s1 != &D_803B5F5C);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF084.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
u8 func_800BF108(u8 **arg0) {
u8 *temp_a1;
u8 temp_v0;
temp_a1 = *arg0;
temp_v0 = *temp_a1;
*arg0 = temp_a1 + 1;
return temp_v0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF108.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_800BF11C(u8 **arg0) {
u8 *temp_a1;
u8 *temp_t9;
u8 temp_v1;
temp_a1 = *arg0;
temp_v1 = *temp_a1;
temp_t9 = temp_a1 + 1;
*arg0 = temp_t9;
*arg0 = temp_t9 + 1;
return *temp_t9 | (temp_v1 << 8);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF11C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
u8 func_800BF14C(u8 **arg0) {
u8 *temp_t6;
u8 *temp_v0;
u8 temp_v1;
u8 phi_v1;
temp_v0 = *arg0;
temp_v1 = *temp_v0;
temp_t6 = temp_v0 + 1;
*arg0 = temp_t6;
phi_v1 = temp_v1;
if ((temp_v1 & 0x80) != 0) {
*arg0 = temp_t6 + 1;
phi_v1 = (*temp_t6 | ((temp_v1 << 8) & 0x7F00)) & 0xFFFF;
}
return phi_v1;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF14C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800BF190:
Unable to determine jump table for jr instruction at func_800BF190.s line 611.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl"/"jpt_".
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF190.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void *func_800BC948(u8, u8); // extern
s32 func_800BFC68(void *arg0, u8 arg1, void **arg2, void *arg3) {
void *temp_v0;
temp_v0 = func_800BC948(arg0->unk6, arg1);
if (temp_v0 == 0) {
*arg2 = NULL;
return 0;
}
arg3->unk4 = temp_v0->unk4;
arg3->unk0 = temp_v0->unk3;
*arg2 = temp_v0;
return (arg1 + 1) & 0xFF;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFC68.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_800BFC68(s32, void *, void *); // extern
void func_800BFCD8(u8 *arg0, s32 arg1) {
s16 temp_v0;
s32 temp_t6;
temp_t6 = arg1 & 0xFF;
if (temp_t6 >= 0x80) {
arg0->unk1C = temp_t6;
arg0->unk40 = 0;
goto block_6;
}
if (temp_t6 == 0x7F) {
arg0->unk1C = 0;
arg0->unk40 = 1;
goto block_6;
}
temp_v0 = func_800BFC68(temp_t6, arg0 + 0x40, arg0 + 0x7C);
arg0->unk1C = temp_v0;
if (temp_v0 == 0) {
arg0->unk0 = arg0->unk0 & 0xFFF7;
return;
}
block_6:
arg0->unk0 = arg0->unk0 | 8;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFCD8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800BFD6C(void *arg0, s32 arg1) {
arg0->unk24 = (arg1 & 0xFF) / 127.0f;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFD6C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800BFD90:
Unable to determine jump table for jr instruction at func_800BFD90.s line 639.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl"/"jpt_".
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFD90.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
/*
Failed to decompile function func_800C08CC:
Unable to determine jump table for jr instruction at func_800C08CC.s line 530.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl"/"jpt_".
*/
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C08CC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BCBC4(); // extern
? func_800BDFF8(u32 *); // extern
? func_800C08CC(u32 *); // extern
extern u32 D_803B1510;
extern ? D_803B1A30;
void func_800C1138(s32 arg0) {
u32 *temp_s0;
u32 *phi_s0;
phi_s0 = &D_803B1510;
do {
if ((*phi_s0 >> 0x1F) == 1) {
func_800C08CC(phi_s0);
func_800BDFF8(phi_s0);
}
temp_s0 = phi_s0 + 0x148;
phi_s0 = temp_s0;
} while (temp_s0 != &D_803B1A30);
func_800BCBC4();
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C1138.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BEF2C(void *); // extern
extern ? D_803B1510;
extern ? gDefaultShortNoteDurationTable;
extern ? gDefaultShortNoteVelocityTable;
void func_800C11B0(s32 arg0) {
void *sp18;
void *temp_a0;
temp_a0 = (arg0 * 0x148) + &D_803B1510;
sp18 = temp_a0;
func_800BEF2C(temp_a0);
temp_a0->unkE = 0;
temp_a0->unk1 = 1;
temp_a0->unk10 = 0;
temp_a0->unk12 = 0;
temp_a0->unkA = 0;
temp_a0->unk8 = 0x1680;
temp_a0->unkC = 0;
temp_a0->unk2 = 0;
temp_a0->unk8C = &gDefaultShortNoteVelocityTable;
temp_a0->unk90 = &gDefaultShortNoteDurationTable;
temp_a0->unk18 = 1.0f;
temp_a0->unk28 = 1.0f;
temp_a0->unk1C = 0.0f;
temp_a0->unk20 = 0.0f;
temp_a0->unk24 = 0.5f;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C11B0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BD318(? *); // extern
? func_800BF084(s32, ? *, u32, u8 *); // extern
? func_800C11B0(s32); // extern
extern ? D_803B1510;
extern ? D_803B15A4;
extern ? D_803B1A30;
extern u8 D_803B3EF0;
extern ? D_803B5EF0;
void func_800C125C(void) {
? *temp_a1;
? *temp_v1;
? *temp_v1_2;
s32 temp_s3;
s32 temp_v0;
s32 temp_v0_3;
u32 temp_a2;
u8 *temp_v0_2;
u8 temp_t4;
u8 temp_t6;
u8 temp_t8;
? *phi_a1;
? *phi_v1;
s32 phi_v0;
? *phi_a2;
u8 *phi_v0_2;
? *phi_v1_2;
s32 phi_v0_3;
? *phi_s1;
? *phi_s5;
s32 phi_s3;
? *phi_s4;
phi_a1 = &D_803B1A30;
phi_a2 = &D_803B1A30;
do {
phi_a1->unk44 = 0;
phi_a1->unk0 = phi_a1->unk0 & 0xFF7F;
phi_v1 = phi_a2;
phi_v0 = 0;
phi_v0_3 = 0;
loop_2:
temp_v0 = phi_v0 + 4;
phi_v1->unk4C = 0;
phi_v1->unk50 = 0;
phi_v1->unk54 = 0;
temp_v1 = phi_v1 + 0x10;
temp_v1->unk38 = 0;
phi_v1 = temp_v1;
phi_v0 = temp_v0;
if (temp_v0 != 0x40) {
goto loop_2;
}
temp_a2 = phi_a2 + 0xC4;
temp_a1 = phi_a1 + 0xC4;
phi_a1 = temp_a1;
phi_a2 = temp_a2;
} while (temp_a2 < &D_803B3EF0);
func_800BF084(0x40, temp_a1, temp_a2, &D_803B3EF0);
phi_v0_2 = &D_803B3EF0;
do {
temp_v0_2 = phi_v0_2 + 0x80;
temp_v0_2->unk-34 = 0;
temp_v0_2->unk-80 = *phi_v0_2 & 0xFF7F;
phi_v0_2 = temp_v0_2;
} while (temp_v0_2 < &D_803B5EF0);
phi_s1 = &D_803B1510;
phi_s5 = &D_803B15A4;
phi_s3 = 0;
phi_s4 = &D_803B1510;
do {
phi_v1_2 = phi_s4;
loop_8:
temp_v0_3 = phi_v0_3 + 4;
phi_v1_2->unk34 = &D_803B5EF0;
phi_v1_2->unk38 = &D_803B5EF0;
phi_v1_2->unk3C = &D_803B5EF0;
temp_v1_2 = phi_v1_2 + 0x10;
temp_v1_2->unk20 = &D_803B5EF0;
phi_v1_2 = temp_v1_2;
phi_v0_3 = temp_v0_3;
if (temp_v0_3 != 0x10) {
goto loop_8;
}
phi_s1->unk7 = -1;
phi_s1->unk3 = 0xE0;
temp_t4 = phi_s1->unk0 & 0xFF7F;
temp_t6 = temp_t4 & 0xDF;
phi_s1->unk0 = temp_t4;
temp_t8 = temp_t6 & 0xF7;
phi_s1->unk0 = temp_t6;
phi_s1->unk0 = temp_t8;
phi_s1->unk0 = temp_t8 & 0xEF;
func_800BD318(phi_s5);
func_800C11B0(phi_s3);
temp_s3 = phi_s3 + 1;
phi_s1 += 0x148;
phi_s5 += 0x148;
phi_s3 = temp_s3;
phi_s4 += 0x148;
} while (temp_s3 != 4);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C125C.s")
#endif

1469
src/audio/synthesis.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,197 +0,0 @@
#include <ultra64.h>
#include <macros.h>
#include "synthesis.h"
//#include "heap.h"
//#include "data.h"
//#include "load.h"
//#include "seqplayer.h"
#include "internal.h"
//#include "external.h"
#define DMEM_ADDR_TEMP 0x0
#define DMEM_ADDR_RESAMPLED 0x20
#define DMEM_ADDR_RESAMPLED2 0x160
#define DMEM_ADDR_UNCOMPRESSED_NOTE 0x180
#define DMEM_ADDR_NOTE_PAN_TEMP 0x200
#define DMEM_ADDR_STEREO_STRONG_TEMP_DRY 0x200
#define DMEM_ADDR_STEREO_STRONG_TEMP_WET 0x340
#define DMEM_ADDR_COMPRESSED_ADPCM_DATA 0x3f0
#define DMEM_ADDR_LEFT_CH 0x4c0
#define DMEM_ADDR_RIGHT_CH 0x600
#define DMEM_ADDR_WET_LEFT_CH 0x740
#define DMEM_ADDR_WET_RIGHT_CH 0x880
#define aSetLoadBufferPair(pkt, c, off) \
aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_LEFT_CH, 0, DEFAULT_LEN_1CH - c); \
aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left + (off))); \
aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_RIGHT_CH, 0, DEFAULT_LEN_1CH - c); \
aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)))
#define aSetSaveBufferPair(pkt, c, d, off) \
aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_LEFT_CH, d); \
aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left + (off))); \
aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_RIGHT_CH, d); \
aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)));
#define ALIGN(val, amnt) (((val) + (1 << amnt) - 1) & ~((1 << amnt) - 1))
struct VolumeChange {
u16 sourceLeft;
u16 sourceRight;
u16 targetLeft;
u16 targetRight;
};
u64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex);
u64 *synthesis_process_note(struct Note *note, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, u64 *cmd);
u64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad);
u64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags);
u64 *process_envelope(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags);
u64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight);
struct SynthesisReverb gSynthesisReverbs[4];
u8 sAudioSynthesisPad[0x10];
s16 gVolume;
s8 gUseReverb;
s8 gNumSynthesisReverbs;
struct NoteSubEu *gNoteSubsEu;
extern struct Note *D_803B7088;
extern s32 D_803B70B0;
f32 gLeftVolRampings[3][1024];
f32 gRightVolRampings[3][1024];
f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above
f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above
u8 audioString1[] = "pitch %x: delaybytes %d : olddelay %d\n";
u8 audioString2[] = "cont %x: delaybytes %d : olddelay %d\n";
// Equivalent functionality as the US/JP version,
// just that the reverb structure is chosen from an array with index
void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) {
struct ReverbRingBufferItem *item;
struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex];
s32 srcPos;
s32 dstPos;
s32 nSamples;
s32 excessiveSamples;
s32 UNUSED pad[3];
if (reverb->downsampleRate != 1) {
if (reverb->framesLeftToIgnore == 0) {
// Now that the RSP has finished, downsample the samples produced two frames ago by skipping
// samples.
item = &reverb->items[reverb->curFrame][updateIndex];
// Touches both left and right since they are adjacent in memory
osInvalDCache(item->toDownsampleLeft, 0x300);
for (srcPos = 0, dstPos = 0; dstPos < item->lengthA / 2;
srcPos += reverb->downsampleRate, dstPos++) {
reverb->ringBuffer.left[item->startPos + dstPos] =
item->toDownsampleLeft[srcPos];
reverb->ringBuffer.right[item->startPos + dstPos] =
item->toDownsampleRight[srcPos];
}
for (dstPos = 0; dstPos < item->lengthB / 2; srcPos += reverb->downsampleRate, dstPos++) {
reverb->ringBuffer.left[dstPos] = item->toDownsampleLeft[srcPos];
reverb->ringBuffer.right[dstPos] = item->toDownsampleRight[srcPos];
}
}
}
item = &reverb->items[reverb->curFrame][updateIndex];
nSamples = chunkLen / reverb->downsampleRate;
excessiveSamples = (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel;
if (excessiveSamples < 0) {
// There is space in the ring buffer before it wraps around
item->lengthA = nSamples * 2;
item->lengthB = 0;
item->startPos = (s32) reverb->nextRingBufferPos;
reverb->nextRingBufferPos += nSamples;
} else {
// Ring buffer wrapped around
item->lengthA = (nSamples - excessiveSamples) * 2;
item->lengthB = excessiveSamples * 2;
item->startPos = reverb->nextRingBufferPos;
reverb->nextRingBufferPos = excessiveSamples;
}
// These fields are never read later
item->numSamplesAfterDownsampling = nSamples;
item->chunkLen = chunkLen;
}
/* sm64
u64 *synthesis_load_reverb_ring_buffer(u64 *cmd, u16 addr, u16 srcOffset, s32 len, s32 reverbIndex) {
aSetBuffer(cmd++, 0, addr, 0, len&0xFF<<0x10);
aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.left[srcOffset]));
aSetBuffer(cmd++, 0, addr + DEFAULT_LEN_1CH, 0, len&0xFF<<0x10);
aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.right[srcOffset]));
return cmd;
}
*/
/* mk64
void *synthesis_load_reverb_ring_buffer(void *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
s32 temp_t0;
s32 temp_t2;
void *temp_t1;
void *temp_t3;
temp_t0 = (((arg3 >> 4) & 0xFF) << 0x10) | 0x14000000;
arg0->unk0 = (s32) (temp_t0 | (arg1 & 0xFFFF));
temp_t1 = (arg4 * 0x108) + &gSynthesisReverbs;
temp_t2 = (arg2 & 0xFFFF) * 2;
arg0->unk4 = (s32) (temp_t1->unk18 + temp_t2 + 0x80000000);
temp_t3 = arg0 + 8;
temp_t3->unk0 = (s32) (temp_t0 | ((arg1 + 0x180) & 0xFFFF));
temp_t3->unk4 = (s32) (temp_t1->unk1C + temp_t2 + 0x80000000);
return temp_t3 + 8;
}
*/
// includes 2 funcs
GLOBAL_ASM("asm/non_matchings/audio/wip.s")
/* sm64
void synthesis_load_note_subs_eu(s32 updateIndex) {
struct NoteSubEu *src;
struct NoteSubEu *dest;
s32 i;
for (i = 0; i < D_803B70B0; i++) {
src = &D_803B7088[i].noteSubEu;
dest = &gNoteSubsEu[D_803B70B0 * updateIndex + i];
if (src->enabled) {
*dest = *src;
src->needsInit = FALSE;
} else {
dest->enabled = FALSE;
}
}
}
// mk64 m2c (with minor edits) struct access appears quite different.
void func_800B6FB4(s32 arg0, s32 arg1) {
s32 *dest;
s32 temp_v0;
s32 temp_v0_2;
s32 phi_v0;
temp_v0 = arg0 + 1;
if (i = 0; temp_v0 < (s32) D_803B7088.unkC; i++) {
phi_v0 = temp_v0;
for(i = 0; temp_v0_2 < (s32) D_803B7088.unkC; i++) {
dest = &gNoteSubsEu[D_803B70B0 * phi_v0 + (arg1 * 0x10)];
if ((*dest * 2) >= 0) {
temp_v0_2 = phi_v0 + 1;
*dest = (s8) ((u8) *dest & 0xFF7F);
phi_v0 = temp_v0_2;
}
}
}
}
*/
GLOBAL_ASM("asm/non_matchings/audio/synthesis.s")