Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Sirius902
2020-09-24 23:21:39 -07:00
115 changed files with 5269 additions and 4926 deletions
+22 -5
View File
@@ -16,6 +16,23 @@ endif
PROJECT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
MAKE = make
CPPFLAGS = -P
ifeq ($(OS),Windows_NT)
$(error Native Windows builds not yet supported. Please use WSL, Docker or a Linux VM)
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
DETECTED_OS=linux
endif
ifeq ($(UNAME_S),Darwin)
DETECTED_OS=macos
MAKE=gmake
CPPFLAGS += -xc++
endif
endif
#### Tools ####
ifeq ($(shell type mips-linux-gnu-ld >/dev/null 2>/dev/null; echo $$?), 0)
MIPS_BINUTILS_PREFIX := mips-linux-gnu-
@@ -23,8 +40,8 @@ else
$(error Please install or build mips-linux-gnu)
endif
CC := tools/ido_recomp/linux/7.1/cc
CC_OLD := tools/ido_recomp/linux/5.3/cc
CC := tools/ido_recomp/$(DETECTED_OS)/7.1/cc
CC_OLD := tools/ido_recomp/$(DETECTED_OS)/5.3/cc
# if ORIG_COMPILER is 1, check that either QEMU_IRIX is set or qemu-irix package installed
ifeq ($(ORIG_COMPILER),1)
@@ -159,18 +176,18 @@ $(ELF): $(TEXTURE_FILES_OUT) $(O_FILES) build/ldscript.txt build/undefined_syms.
$(LD) -T build/undefined_syms.txt -T build/ldscript.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map build/z64.map -o $@
build/ldscript.txt: $(SPEC)
$(CPP) -P $< > build/spec
$(CPP) $(CPPFLAGS) $< > build/spec
$(MKLDSCRIPT) build/spec $@
build/undefined_syms.txt: undefined_syms.txt
$(CPP) -P $< > build/undefined_syms.txt
$(CPP) $(CPPFLAGS) $< > build/undefined_syms.txt
clean:
$(RM) -r $(ROM) $(ELF) build
setup:
git submodule update --init --recursive
make -C tools
$(MAKE) -C tools
python3 fixbaserom.py
python3 extract_baserom.py
python3 extract_assets.py
+14 -21
View File
@@ -35,7 +35,20 @@ For older versions of Windows, install a Linux VM or refer to [Docker](#Docker)
### macOS
For macOS, install a Linux VM or refer to [Docker](#Docker) instructions.
For macOS, use homebrew to install the following dependencies:
* coreutils
* make
* python3
```bash
brew update
brew install coreutils make python3
```
You'll also need to [build and install mips-linux-binutils](docs/BUILDING_BINUTILS_MACOS.md).
Going forward in this guide, please use `gmake` whenever you encounter a `make` command.
The `make` that comes with MacOS behaves differently than GNU make and is incompatible with this project.
You should now be able to continue onto step 3.
### Linux (Native or under WSL / VM)
@@ -136,32 +149,12 @@ docker build . -t oot
#### 3. Start the container
##### Option A: With docker run
To start the container, you can mount your local filesystem into the docker container and run an interactive bash session.
```bash
docker run -it --rm --mount type=bind,source="$(pwd)",destination=/oot oot /bin/bash
```
##### Option B (only for macOS): With docker-sync
Prerequisite for this option: Install docker-sync with `gem install docker-sync`
To start docker-sync and the development container, use `docker-sync-stack start`
After a lot of waiting, you'll see something like "Attaching to oot_oot_1".
This means the container is ready.
Then it's time to log into the container to begin working.
Note that this will be done in another tab while you leave the docker-sync tab going.
To get the container id, use `docker container ls` and use the ID from the container with image oot:latest in the following command:
`docker exec -it <CONTAINER-ID> /bin/bash` You're in.
> Note: When done working, type Ctrl+c on the docker-sync tab to close the container and docker-sync.
#### 4. Setup and Build the ROM
Once inside the container, you can follow Step 6 and 7 of the Linux instructions to setup and build the ROM, or run any other command you need.
@@ -1,27 +0,0 @@
glabel Audio_Alloc
/* B5557C 800DE3DC 8C860004 */ lw $a2, 4($a0)
/* B55580 800DE3E0 8C8E0000 */ lw $t6, ($a0)
/* B55584 800DE3E4 8C8F0008 */ lw $t7, 8($a0)
/* B55588 800DE3E8 24A2000F */ addiu $v0, $a1, 0xf
/* B5558C 800DE3EC 2401FFF0 */ li $at, -16
/* B55590 800DE3F0 00411024 */ and $v0, $v0, $at
/* B55594 800DE3F4 00C2C821 */ addu $t9, $a2, $v0
/* B55598 800DE3F8 01CFC021 */ addu $t8, $t6, $t7
/* B5559C 800DE3FC 0319082B */ sltu $at, $t8, $t9
/* B555A0 800DE400 14200004 */ bnez $at, .L800DE414
/* B555A4 800DE404 00C01825 */ move $v1, $a2
/* B555A8 800DE408 00C24021 */ addu $t0, $a2, $v0
/* B555AC 800DE40C 10000003 */ b .L800DE41C
/* B555B0 800DE410 AC880004 */ sw $t0, 4($a0)
.L800DE414:
/* B555B4 800DE414 03E00008 */ jr $ra
/* B555B8 800DE418 00001025 */ move $v0, $zero
.L800DE41C:
/* B555BC 800DE41C 8C89000C */ lw $t1, 0xc($a0)
/* B555C0 800DE420 00601025 */ move $v0, $v1
/* B555C4 800DE424 252A0001 */ addiu $t2, $t1, 1
/* B555C8 800DE428 AC8A000C */ sw $t2, 0xc($a0)
/* B555CC 800DE42C 03E00008 */ jr $ra
/* B555D0 800DE430 00000000 */ nop
@@ -1,552 +0,0 @@
glabel Audio_AllocBankOrSeq
/* B55A80 800DE8E0 27BDFFB0 */ addiu $sp, $sp, -0x50
/* B55A84 800DE8E4 AFB00018 */ sw $s0, 0x18($sp)
/* B55A88 800DE8E8 00808025 */ move $s0, $a0
/* B55A8C 800DE8EC AFBF001C */ sw $ra, 0x1c($sp)
/* B55A90 800DE8F0 AFA50054 */ sw $a1, 0x54($sp)
/* B55A94 800DE8F4 AFA7005C */ sw $a3, 0x5c($sp)
/* B55A98 800DE8F8 8FAB0030 */ lw $t3, 0x30($sp)
/* B55A9C 800DE8FC 8FA8004C */ lw $t0, 0x4c($sp)
/* B55AA0 800DE900 240A0002 */ li $t2, 2
/* B55AA4 800DE904 24090001 */ li $t1, 1
.L800DE908:
/* B55AA8 800DE908 12000007 */ beqz $s0, .L800DE928
/* B55AAC 800DE90C 8FA50054 */ lw $a1, 0x54($sp)
/* B55AB0 800DE910 1209000A */ beq $s0, $t1, .L800DE93C
/* B55AB4 800DE914 00000000 */ nop
/* B55AB8 800DE918 120A000D */ beq $s0, $t2, .L800DE950
/* B55ABC 800DE91C 00000000 */ nop
/* B55AC0 800DE920 1000000F */ b .L800DE960
/* B55AC4 800DE924 00000000 */ nop
.L800DE928:
/* B55AC8 800DE928 3C088017 */ lui $t0, %hi(gAudioContext+0x2a20) # $t0, 0x8017
/* B55ACC 800DE92C 3C0B8017 */ lui $t3, %hi(gAudioContext+0x3498) # $t3, 0x8017
/* B55AD0 800DE930 25081BA0 */ addiu $t0, %lo(gAudioContext+0x2a20) # addiu $t0, $t0, 0x1ba0
/* B55AD4 800DE934 1000000A */ b .L800DE960
/* B55AD8 800DE938 256B2618 */ addiu $t3, %lo(gAudioContext+0x3498) # addiu $t3, $t3, 0x2618
.L800DE93C:
/* B55ADC 800DE93C 3C088017 */ lui $t0, %hi(gAudioContext+0x2b30) # $t0, 0x8017
/* B55AE0 800DE940 3C0B8017 */ lui $t3, %hi(gAudioContext+0x3468) # $t3, 0x8017
/* B55AE4 800DE944 25081CB0 */ addiu $t0, %lo(gAudioContext+0x2b30) # addiu $t0, $t0, 0x1cb0
/* B55AE8 800DE948 10000005 */ b .L800DE960
/* B55AEC 800DE94C 256B25E8 */ addiu $t3, %lo(gAudioContext+0x3468) # addiu $t3, $t3, 0x25e8
.L800DE950:
/* B55AF0 800DE950 3C088017 */ lui $t0, %hi(gAudioContext+0x2c40) # $t0, 0x8017
/* B55AF4 800DE954 3C0B8017 */ lui $t3, %hi(gAudioContext+0x3438) # $t3, 0x8017
/* B55AF8 800DE958 25081DC0 */ addiu $t0, %lo(gAudioContext+0x2c40) # addiu $t0, $t0, 0x1dc0
/* B55AFC 800DE95C 256B25B8 */ addiu $t3, %lo(gAudioContext+0x3438) # addiu $t3, $t3, 0x25b8
.L800DE960:
/* B55B00 800DE960 14C00192 */ bnez $a2, .L800DEFAC
/* B55B04 800DE964 25040004 */ addiu $a0, $t0, 4
/* B55B08 800DE968 8D0E00E0 */ lw $t6, 0xe0($t0)
/* B55B0C 800DE96C 8FAF0054 */ lw $t7, 0x54($sp)
/* B55B10 800DE970 250700D4 */ addiu $a3, $t0, 0xd4
/* B55B14 800DE974 01CF082A */ slt $at, $t6, $t7
/* B55B18 800DE978 50200004 */ beql $at, $zero, .L800DE98C
/* B55B1C 800DE97C 84E6001E */ lh $a2, 0x1e($a3)
/* B55B20 800DE980 100001B7 */ b .L800DF060
/* B55B24 800DE984 00001025 */ move $v0, $zero
/* B55B28 800DE988 84E6001E */ lh $a2, 0x1e($a3)
.L800DE98C:
/* B55B2C 800DE98C 2401FFFF */ li $at, -1
/* B55B30 800DE990 14C10003 */ bne $a2, $at, .L800DE9A0
/* B55B34 800DE994 00CBC021 */ addu $t8, $a2, $t3
/* B55B38 800DE998 10000002 */ b .L800DE9A4
/* B55B3C 800DE99C 00006025 */ move $t4, $zero
.L800DE9A0:
/* B55B40 800DE9A0 930C0000 */ lbu $t4, ($t8)
.L800DE9A4:
/* B55B44 800DE9A4 84E4002A */ lh $a0, 0x2a($a3)
/* B55B48 800DE9A8 2401FFFF */ li $at, -1
/* B55B4C 800DE9AC 14810003 */ bne $a0, $at, .L800DE9BC
/* B55B50 800DE9B0 008BC821 */ addu $t9, $a0, $t3
/* B55B54 800DE9B4 10000002 */ b .L800DE9C0
/* B55B58 800DE9B8 00006825 */ move $t5, $zero
.L800DE9BC:
/* B55B5C 800DE9BC 932D0000 */ lbu $t5, ($t9)
.L800DE9C0:
/* B55B60 800DE9C0 16090047 */ bne $s0, $t1, .L800DEAE0
/* B55B64 800DE9C4 24010004 */ li $at, 4
/* B55B68 800DE9C8 15810020 */ bne $t4, $at, .L800DEA4C
/* B55B6C 800DE9CC 3C058017 */ lui $a1, %hi(gAudioContext+0x2894) # $a1, 0x8017
/* B55B70 800DE9D0 8CA51A14 */ lw $a1, %lo(gAudioContext+0x2894)($a1)
/* B55B74 800DE9D4 00001825 */ move $v1, $zero
/* B55B78 800DE9D8 3C028017 */ lui $v0, %hi(gAudioContext+0x352c) # $v0, 0x8017
/* B55B7C 800DE9DC 18A0000D */ blez $a1, .L800DEA14
/* B55B80 800DE9E0 00C02025 */ move $a0, $a2
/* B55B84 800DE9E4 8C4226AC */ lw $v0, %lo(gAudioContext+0x352c)($v0)
.L800DE9E8:
/* B55B88 800DE9E8 904E0033 */ lbu $t6, 0x33($v0)
/* B55B8C 800DE9EC 55C60006 */ bnel $t6, $a2, .L800DEA08
/* B55B90 800DE9F0 24630001 */ addiu $v1, $v1, 1
/* B55B94 800DE9F4 8C4F00C0 */ lw $t7, 0xc0($v0)
/* B55B98 800DE9F8 000FC7C2 */ srl $t8, $t7, 0x1f
/* B55B9C 800DE9FC 17000005 */ bnez $t8, .L800DEA14
/* B55BA0 800DEA00 00000000 */ nop
/* B55BA4 800DEA04 24630001 */ addiu $v1, $v1, 1
.L800DEA08:
/* B55BA8 800DEA08 0065082A */ slt $at, $v1, $a1
/* B55BAC 800DEA0C 1420FFF6 */ bnez $at, .L800DE9E8
/* B55BB0 800DEA10 244200E0 */ addiu $v0, $v0, 0xe0
.L800DEA14:
/* B55BB4 800DEA14 1465000D */ bne $v1, $a1, .L800DEA4C
/* B55BB8 800DEA18 24050003 */ li $a1, 3
/* B55BBC 800DEA1C AFA70024 */ sw $a3, 0x24($sp)
/* B55BC0 800DEA20 AFA8004C */ sw $t0, 0x4c($sp)
/* B55BC4 800DEA24 AFAB0030 */ sw $t3, 0x30($sp)
/* B55BC8 800DEA28 0C038686 */ jal Audio_SetBankLoadStatus
/* B55BCC 800DEA2C A3AD003A */ sb $t5, 0x3a($sp)
/* B55BD0 800DEA30 8FA70024 */ lw $a3, 0x24($sp)
/* B55BD4 800DEA34 8FA8004C */ lw $t0, 0x4c($sp)
/* B55BD8 800DEA38 24090001 */ li $t1, 1
/* B55BDC 800DEA3C 240A0002 */ li $t2, 2
/* B55BE0 800DEA40 8FAB0030 */ lw $t3, 0x30($sp)
/* B55BE4 800DEA44 93AD003A */ lbu $t5, 0x3a($sp)
/* B55BE8 800DEA48 240C0003 */ li $t4, 3
.L800DEA4C:
/* B55BEC 800DEA4C 24010004 */ li $at, 4
/* B55BF0 800DEA50 15A10023 */ bne $t5, $at, .L800DEAE0
/* B55BF4 800DEA54 3C058017 */ lui $a1, %hi(gAudioContext+0x2894) # $a1, 0x8017
/* B55BF8 800DEA58 8CA51A14 */ lw $a1, %lo(gAudioContext+0x2894)($a1)
/* B55BFC 800DEA5C 00001825 */ move $v1, $zero
/* B55C00 800DEA60 3C028017 */ lui $v0, %hi(gAudioContext+0x352c) # $v0, 0x8017
/* B55C04 800DEA64 18A0000E */ blez $a1, .L800DEAA0
/* B55C08 800DEA68 00000000 */ nop
/* B55C0C 800DEA6C 8C4226AC */ lw $v0, %lo(gAudioContext+0x352c)($v0)
/* B55C10 800DEA70 84E4002A */ lh $a0, 0x2a($a3)
.L800DEA74:
/* B55C14 800DEA74 90590033 */ lbu $t9, 0x33($v0)
/* B55C18 800DEA78 57240006 */ bnel $t9, $a0, .L800DEA94
/* B55C1C 800DEA7C 24630001 */ addiu $v1, $v1, 1
/* B55C20 800DEA80 8C4E00C0 */ lw $t6, 0xc0($v0)
/* B55C24 800DEA84 000E7FC2 */ srl $t7, $t6, 0x1f
/* B55C28 800DEA88 15E00005 */ bnez $t7, .L800DEAA0
/* B55C2C 800DEA8C 00000000 */ nop
/* B55C30 800DEA90 24630001 */ addiu $v1, $v1, 1
.L800DEA94:
/* B55C34 800DEA94 0065082A */ slt $at, $v1, $a1
/* B55C38 800DEA98 1420FFF6 */ bnez $at, .L800DEA74
/* B55C3C 800DEA9C 244200E0 */ addiu $v0, $v0, 0xe0
.L800DEAA0:
/* B55C40 800DEAA0 1465000F */ bne $v1, $a1, .L800DEAE0
/* B55C44 800DEAA4 00000000 */ nop
/* B55C48 800DEAA8 84E4002A */ lh $a0, 0x2a($a3)
/* B55C4C 800DEAAC A3AC003B */ sb $t4, 0x3b($sp)
/* B55C50 800DEAB0 AFAB0030 */ sw $t3, 0x30($sp)
/* B55C54 800DEAB4 AFA8004C */ sw $t0, 0x4c($sp)
/* B55C58 800DEAB8 AFA70024 */ sw $a3, 0x24($sp)
/* B55C5C 800DEABC 0C038686 */ jal Audio_SetBankLoadStatus
/* B55C60 800DEAC0 24050003 */ li $a1, 3
/* B55C64 800DEAC4 8FA70024 */ lw $a3, 0x24($sp)
/* B55C68 800DEAC8 8FA8004C */ lw $t0, 0x4c($sp)
/* B55C6C 800DEACC 24090001 */ li $t1, 1
/* B55C70 800DEAD0 240A0002 */ li $t2, 2
/* B55C74 800DEAD4 8FAB0030 */ lw $t3, 0x30($sp)
/* B55C78 800DEAD8 93AC003B */ lbu $t4, 0x3b($sp)
/* B55C7C 800DEADC 240D0003 */ li $t5, 3
.L800DEAE0:
/* B55C80 800DEAE0 15800004 */ bnez $t4, .L800DEAF4
/* B55C84 800DEAE4 0180F825 */ move $ra, $t4
/* B55C88 800DEAE8 ACE00000 */ sw $zero, ($a3)
/* B55C8C 800DEAEC 10000089 */ b .L800DED14
/* B55C90 800DEAF0 00001025 */ move $v0, $zero
.L800DEAF4:
/* B55C94 800DEAF4 15A00004 */ bnez $t5, .L800DEB08
/* B55C98 800DEAF8 01A06025 */ move $t4, $t5
/* B55C9C 800DEAFC 24020001 */ li $v0, 1
/* B55CA0 800DEB00 10000084 */ b .L800DED14
/* B55CA4 800DEB04 ACE20000 */ sw $v0, ($a3)
.L800DEB08:
/* B55CA8 800DEB08 24020003 */ li $v0, 3
/* B55CAC 800DEB0C 145F0005 */ bne $v0, $ra, .L800DEB24
/* B55CB0 800DEB10 00000000 */ nop
/* B55CB4 800DEB14 144C0003 */ bne $v0, $t4, .L800DEB24
/* B55CB8 800DEB18 00000000 */ nop
/* B55CBC 800DEB1C 1000007D */ b .L800DED14
/* B55CC0 800DEB20 8CE20000 */ lw $v0, ($a3)
.L800DEB24:
/* B55CC4 800DEB24 145F0004 */ bne $v0, $ra, .L800DEB38
/* B55CC8 800DEB28 00000000 */ nop
/* B55CCC 800DEB2C ACE00000 */ sw $zero, ($a3)
/* B55CD0 800DEB30 10000078 */ b .L800DED14
/* B55CD4 800DEB34 00001025 */ move $v0, $zero
.L800DEB38:
/* B55CD8 800DEB38 144C0003 */ bne $v0, $t4, .L800DEB48
/* B55CDC 800DEB3C 24020001 */ li $v0, 1
/* B55CE0 800DEB40 10000074 */ b .L800DED14
/* B55CE4 800DEB44 ACE20000 */ sw $v0, ($a3)
.L800DEB48:
/* B55CE8 800DEB48 1600002F */ bnez $s0, .L800DEC08
/* B55CEC 800DEB4C 00000000 */ nop
/* B55CF0 800DEB50 155F0016 */ bne $t2, $ra, .L800DEBAC
/* B55CF4 800DEB54 3C048017 */ lui $a0, %hi(gAudioContext+0x285c) # $a0, 0x8017
/* B55CF8 800DEB58 848419DC */ lh $a0, %lo(gAudioContext+0x285c)($a0)
/* B55CFC 800DEB5C 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B55D00 800DEB60 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B55D04 800DEB64 1880000D */ blez $a0, .L800DEB9C
/* B55D08 800DEB68 00001825 */ move $v1, $zero
.L800DEB6C:
/* B55D0C 800DEB6C 8C4E3530 */ lw $t6, 0x3530($v0)
/* B55D10 800DEB70 000E7FC2 */ srl $t7, $t6, 0x1f
/* B55D14 800DEB74 51E00006 */ beql $t7, $zero, .L800DEB90
/* B55D18 800DEB78 24630001 */ addiu $v1, $v1, 1
/* B55D1C 800DEB7C 90583534 */ lbu $t8, 0x3534($v0)
/* B55D20 800DEB80 84F9001E */ lh $t9, 0x1e($a3)
/* B55D24 800DEB84 13190005 */ beq $t8, $t9, .L800DEB9C
/* B55D28 800DEB88 00000000 */ nop
/* B55D2C 800DEB8C 24630001 */ addiu $v1, $v1, 1
.L800DEB90:
/* B55D30 800DEB90 0064082A */ slt $at, $v1, $a0
/* B55D34 800DEB94 1420FFF5 */ bnez $at, .L800DEB6C
/* B55D38 800DEB98 24420160 */ addiu $v0, $v0, 0x160
.L800DEB9C:
/* B55D3C 800DEB9C 14640003 */ bne $v1, $a0, .L800DEBAC
/* B55D40 800DEBA0 00001025 */ move $v0, $zero
/* B55D44 800DEBA4 1000005B */ b .L800DED14
/* B55D48 800DEBA8 ACE00000 */ sw $zero, ($a3)
.L800DEBAC:
/* B55D4C 800DEBAC 154C0048 */ bne $t2, $t4, .L800DECD0
/* B55D50 800DEBB0 3C048017 */ lui $a0, %hi(gAudioContext+0x285c) # $a0, 0x8017
/* B55D54 800DEBB4 848419DC */ lh $a0, %lo(gAudioContext+0x285c)($a0)
/* B55D58 800DEBB8 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B55D5C 800DEBBC 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B55D60 800DEBC0 1880000D */ blez $a0, .L800DEBF8
/* B55D64 800DEBC4 00001825 */ move $v1, $zero
.L800DEBC8:
/* B55D68 800DEBC8 8C4E3530 */ lw $t6, 0x3530($v0)
/* B55D6C 800DEBCC 000E7FC2 */ srl $t7, $t6, 0x1f
/* B55D70 800DEBD0 51E00006 */ beql $t7, $zero, .L800DEBEC
/* B55D74 800DEBD4 24630001 */ addiu $v1, $v1, 1
/* B55D78 800DEBD8 90583534 */ lbu $t8, 0x3534($v0)
/* B55D7C 800DEBDC 84F9002A */ lh $t9, 0x2a($a3)
/* B55D80 800DEBE0 13190005 */ beq $t8, $t9, .L800DEBF8
/* B55D84 800DEBE4 00000000 */ nop
/* B55D88 800DEBE8 24630001 */ addiu $v1, $v1, 1
.L800DEBEC:
/* B55D8C 800DEBEC 0064082A */ slt $at, $v1, $a0
/* B55D90 800DEBF0 1420FFF5 */ bnez $at, .L800DEBC8
/* B55D94 800DEBF4 24420160 */ addiu $v0, $v0, 0x160
.L800DEBF8:
/* B55D98 800DEBF8 14640035 */ bne $v1, $a0, .L800DECD0
/* B55D9C 800DEBFC 24020001 */ li $v0, 1
/* B55DA0 800DEC00 10000044 */ b .L800DED14
/* B55DA4 800DEC04 ACE20000 */ sw $v0, ($a3)
.L800DEC08:
/* B55DA8 800DEC08 56090032 */ bnel $s0, $t1, .L800DECD4
/* B55DAC 800DEC0C 8CE20000 */ lw $v0, ($a3)
/* B55DB0 800DEC10 155F0017 */ bne $t2, $ra, .L800DEC70
/* B55DB4 800DEC14 3C058017 */ lui $a1, %hi(gAudioContext+0x2894) # $a1, 0x8017
/* B55DB8 800DEC18 8CA51A14 */ lw $a1, %lo(gAudioContext+0x2894)($a1)
/* B55DBC 800DEC1C 00001825 */ move $v1, $zero
/* B55DC0 800DEC20 3C028017 */ lui $v0, %hi(gAudioContext+0x352c) # $v0, 0x8017
/* B55DC4 800DEC24 18A0000E */ blez $a1, .L800DEC60
/* B55DC8 800DEC28 00000000 */ nop
/* B55DCC 800DEC2C 8C4226AC */ lw $v0, %lo(gAudioContext+0x352c)($v0)
/* B55DD0 800DEC30 84E6001E */ lh $a2, 0x1e($a3)
.L800DEC34:
/* B55DD4 800DEC34 904F0033 */ lbu $t7, 0x33($v0)
/* B55DD8 800DEC38 55E60006 */ bnel $t7, $a2, .L800DEC54
/* B55DDC 800DEC3C 24630001 */ addiu $v1, $v1, 1
/* B55DE0 800DEC40 8C5800C0 */ lw $t8, 0xc0($v0)
/* B55DE4 800DEC44 0018CFC2 */ srl $t9, $t8, 0x1f
/* B55DE8 800DEC48 17200005 */ bnez $t9, .L800DEC60
/* B55DEC 800DEC4C 00000000 */ nop
/* B55DF0 800DEC50 24630001 */ addiu $v1, $v1, 1
.L800DEC54:
/* B55DF4 800DEC54 0065082A */ slt $at, $v1, $a1
/* B55DF8 800DEC58 1420FFF6 */ bnez $at, .L800DEC34
/* B55DFC 800DEC5C 244200E0 */ addiu $v0, $v0, 0xe0
.L800DEC60:
/* B55E00 800DEC60 14650003 */ bne $v1, $a1, .L800DEC70
/* B55E04 800DEC64 00001025 */ move $v0, $zero
/* B55E08 800DEC68 1000002A */ b .L800DED14
/* B55E0C 800DEC6C ACE00000 */ sw $zero, ($a3)
.L800DEC70:
/* B55E10 800DEC70 154C0017 */ bne $t2, $t4, .L800DECD0
/* B55E14 800DEC74 3C058017 */ lui $a1, %hi(gAudioContext+0x2894) # $a1, 0x8017
/* B55E18 800DEC78 8CA51A14 */ lw $a1, %lo(gAudioContext+0x2894)($a1)
/* B55E1C 800DEC7C 00001825 */ move $v1, $zero
/* B55E20 800DEC80 3C028017 */ lui $v0, %hi(gAudioContext+0x352c) # $v0, 0x8017
/* B55E24 800DEC84 18A0000E */ blez $a1, .L800DECC0
/* B55E28 800DEC88 00000000 */ nop
/* B55E2C 800DEC8C 8C4226AC */ lw $v0, %lo(gAudioContext+0x352c)($v0)
/* B55E30 800DEC90 84E4002A */ lh $a0, 0x2a($a3)
.L800DEC94:
/* B55E34 800DEC94 904E0033 */ lbu $t6, 0x33($v0)
/* B55E38 800DEC98 55C40006 */ bnel $t6, $a0, .L800DECB4
/* B55E3C 800DEC9C 24630001 */ addiu $v1, $v1, 1
/* B55E40 800DECA0 8C4F00C0 */ lw $t7, 0xc0($v0)
/* B55E44 800DECA4 000FC7C2 */ srl $t8, $t7, 0x1f
/* B55E48 800DECA8 17000005 */ bnez $t8, .L800DECC0
/* B55E4C 800DECAC 00000000 */ nop
/* B55E50 800DECB0 24630001 */ addiu $v1, $v1, 1
.L800DECB4:
/* B55E54 800DECB4 0065082A */ slt $at, $v1, $a1
/* B55E58 800DECB8 1420FFF6 */ bnez $at, .L800DEC94
/* B55E5C 800DECBC 244200E0 */ addiu $v0, $v0, 0xe0
.L800DECC0:
/* B55E60 800DECC0 14650003 */ bne $v1, $a1, .L800DECD0
/* B55E64 800DECC4 24020001 */ li $v0, 1
/* B55E68 800DECC8 10000012 */ b .L800DED14
/* B55E6C 800DECCC ACE20000 */ sw $v0, ($a3)
.L800DECD0:
/* B55E70 800DECD0 8CE20000 */ lw $v0, ($a3)
.L800DECD4:
/* B55E74 800DECD4 14400007 */ bnez $v0, .L800DECF4
/* B55E78 800DECD8 00000000 */ nop
/* B55E7C 800DECDC 553F000E */ bnel $t1, $ra, .L800DED18
/* B55E80 800DECE0 00027880 */ sll $t7, $v0, 2
/* B55E84 800DECE4 112C0009 */ beq $t1, $t4, .L800DED0C
/* B55E88 800DECE8 24020001 */ li $v0, 1
/* B55E8C 800DECEC 10000009 */ b .L800DED14
/* B55E90 800DECF0 ACE20000 */ sw $v0, ($a3)
.L800DECF4:
/* B55E94 800DECF4 552C0008 */ bnel $t1, $t4, .L800DED18
/* B55E98 800DECF8 00027880 */ sll $t7, $v0, 2
/* B55E9C 800DECFC 113F0003 */ beq $t1, $ra, .L800DED0C
/* B55EA0 800DED00 00001025 */ move $v0, $zero
/* B55EA4 800DED04 10000003 */ b .L800DED14
/* B55EA8 800DED08 ACE00000 */ sw $zero, ($a3)
.L800DED0C:
/* B55EAC 800DED0C 100000D4 */ b .L800DF060
/* B55EB0 800DED10 00001025 */ move $v0, $zero
.L800DED14:
/* B55EB4 800DED14 00027880 */ sll $t7, $v0, 2
.L800DED18:
/* B55EB8 800DED18 01E27823 */ subu $t7, $t7, $v0
/* B55EBC 800DED1C 000F7880 */ sll $t7, $t7, 2
/* B55EC0 800DED20 00EF2821 */ addu $a1, $a3, $t7
/* B55EC4 800DED24 84A4001E */ lh $a0, 0x1e($a1)
/* B55EC8 800DED28 2401FFFF */ li $at, -1
/* B55ECC 800DED2C 00401825 */ move $v1, $v0
/* B55ED0 800DED30 10810020 */ beq $a0, $at, .L800DEDB4
/* B55ED4 800DED34 00000000 */ nop
/* B55ED8 800DED38 560A0010 */ bnel $s0, $t2, .L800DED7C
/* B55EDC 800DED3C 0164C021 */ addu $t8, $t3, $a0
/* B55EE0 800DED40 AFA2002C */ sw $v0, 0x2c($sp)
/* B55EE4 800DED44 AFA50020 */ sw $a1, 0x20($sp)
/* B55EE8 800DED48 AFA70024 */ sw $a3, 0x24($sp)
/* B55EEC 800DED4C AFA8004C */ sw $t0, 0x4c($sp)
/* B55EF0 800DED50 0C03839B */ jal func_800E0E6C
/* B55EF4 800DED54 AFAB0030 */ sw $t3, 0x30($sp)
/* B55EF8 800DED58 8FA50020 */ lw $a1, 0x20($sp)
/* B55EFC 800DED5C 8FA3002C */ lw $v1, 0x2c($sp)
/* B55F00 800DED60 8FA70024 */ lw $a3, 0x24($sp)
/* B55F04 800DED64 8FA8004C */ lw $t0, 0x4c($sp)
/* B55F08 800DED68 24090001 */ li $t1, 1
/* B55F0C 800DED6C 240A0002 */ li $t2, 2
/* B55F10 800DED70 8FAB0030 */ lw $t3, 0x30($sp)
/* B55F14 800DED74 84A4001E */ lh $a0, 0x1e($a1)
/* B55F18 800DED78 0164C021 */ addu $t8, $t3, $a0
.L800DED7C:
/* B55F1C 800DED7C 1609000D */ bne $s0, $t1, .L800DEDB4
/* B55F20 800DED80 A3000000 */ sb $zero, ($t8)
/* B55F24 800DED84 84A4001E */ lh $a0, 0x1e($a1)
/* B55F28 800DED88 AFAB0030 */ sw $t3, 0x30($sp)
/* B55F2C 800DED8C AFA8004C */ sw $t0, 0x4c($sp)
/* B55F30 800DED90 AFA70024 */ sw $a3, 0x24($sp)
/* B55F34 800DED94 0C037812 */ jal func_800DE048
/* B55F38 800DED98 AFA3002C */ sw $v1, 0x2c($sp)
/* B55F3C 800DED9C 8FA3002C */ lw $v1, 0x2c($sp)
/* B55F40 800DEDA0 8FA70024 */ lw $a3, 0x24($sp)
/* B55F44 800DEDA4 8FA8004C */ lw $t0, 0x4c($sp)
/* B55F48 800DEDA8 24090001 */ li $t1, 1
/* B55F4C 800DEDAC 240A0002 */ li $t2, 2
/* B55F50 800DEDB0 8FAB0030 */ lw $t3, 0x30($sp)
.L800DEDB4:
/* B55F54 800DEDB4 10600005 */ beqz $v1, .L800DEDCC
/* B55F58 800DEDB8 250200D8 */ addiu $v0, $t0, 0xd8
/* B55F5C 800DEDBC 10690040 */ beq $v1, $t1, .L800DEEC0
/* B55F60 800DEDC0 250200D8 */ addiu $v0, $t0, 0xd8
/* B55F64 800DEDC4 100000A6 */ b .L800DF060
/* B55F68 800DEDC8 00001025 */ move $v0, $zero
.L800DEDCC:
/* B55F6C 800DEDCC 8C590000 */ lw $t9, ($v0)
/* B55F70 800DEDD0 2401FFFF */ li $at, -1
/* B55F74 800DEDD4 ACF90014 */ sw $t9, 0x14($a3)
/* B55F78 800DEDD8 8FAE005C */ lw $t6, 0x5c($sp)
/* B55F7C 800DEDDC A4EE001E */ sh $t6, 0x1e($a3)
/* B55F80 800DEDE0 8FAF0054 */ lw $t7, 0x54($sp)
/* B55F84 800DEDE4 ACEF0018 */ sw $t7, 0x18($a3)
/* B55F88 800DEDE8 8FB90054 */ lw $t9, 0x54($sp)
/* B55F8C 800DEDEC 8C580000 */ lw $t8, ($v0)
/* B55F90 800DEDF0 03197021 */ addu $t6, $t8, $t9
/* B55F94 800DEDF4 AC4E0004 */ sw $t6, 4($v0)
/* B55F98 800DEDF8 84E4002A */ lh $a0, 0x2a($a3)
/* B55F9C 800DEDFC 5081002B */ beql $a0, $at, .L800DEEAC
/* B55FA0 800DEE00 8CE30014 */ lw $v1, 0x14($a3)
/* B55FA4 800DEE04 8CEF0020 */ lw $t7, 0x20($a3)
/* B55FA8 800DEE08 01EE082B */ sltu $at, $t7, $t6
/* B55FAC 800DEE0C 50200027 */ beql $at, $zero, .L800DEEAC
/* B55FB0 800DEE10 8CE30014 */ lw $v1, 0x14($a3)
/* B55FB4 800DEE14 560A000B */ bnel $s0, $t2, .L800DEE44
/* B55FB8 800DEE18 0164C821 */ addu $t9, $t3, $a0
/* B55FBC 800DEE1C AFA20020 */ sw $v0, 0x20($sp)
/* B55FC0 800DEE20 AFA70024 */ sw $a3, 0x24($sp)
/* B55FC4 800DEE24 0C03839B */ jal func_800E0E6C
/* B55FC8 800DEE28 AFAB0030 */ sw $t3, 0x30($sp)
/* B55FCC 800DEE2C 8FA70024 */ lw $a3, 0x24($sp)
/* B55FD0 800DEE30 8FA20020 */ lw $v0, 0x20($sp)
/* B55FD4 800DEE34 24090001 */ li $t1, 1
/* B55FD8 800DEE38 8FAB0030 */ lw $t3, 0x30($sp)
/* B55FDC 800DEE3C 84E4002A */ lh $a0, 0x2a($a3)
/* B55FE0 800DEE40 0164C821 */ addu $t9, $t3, $a0
.L800DEE44:
/* B55FE4 800DEE44 12000005 */ beqz $s0, .L800DEE5C
/* B55FE8 800DEE48 A3200000 */ sb $zero, ($t9)
/* B55FEC 800DEE4C 5209000B */ beql $s0, $t1, .L800DEE7C
/* B55FF0 800DEE50 84E4002A */ lh $a0, 0x2a($a3)
/* B55FF4 800DEE54 1000000F */ b .L800DEE94
/* B55FF8 800DEE58 240EFFFF */ li $t6, -1
.L800DEE5C:
/* B55FFC 800DEE5C 84E4002A */ lh $a0, 0x2a($a3)
/* B56000 800DEE60 AFA70024 */ sw $a3, 0x24($sp)
/* B56004 800DEE64 0C03786D */ jal func_800DE1B4
/* B56008 800DEE68 AFA20020 */ sw $v0, 0x20($sp)
/* B5600C 800DEE6C 8FA20020 */ lw $v0, 0x20($sp)
/* B56010 800DEE70 10000007 */ b .L800DEE90
/* B56014 800DEE74 8FA70024 */ lw $a3, 0x24($sp)
/* B56018 800DEE78 84E4002A */ lh $a0, 0x2a($a3)
.L800DEE7C:
/* B5601C 800DEE7C AFA70024 */ sw $a3, 0x24($sp)
/* B56020 800DEE80 0C037812 */ jal func_800DE048
/* B56024 800DEE84 AFA20020 */ sw $v0, 0x20($sp)
/* B56028 800DEE88 8FA20020 */ lw $v0, 0x20($sp)
/* B5602C 800DEE8C 8FA70024 */ lw $a3, 0x24($sp)
.L800DEE90:
/* B56030 800DEE90 240EFFFF */ li $t6, -1
.L800DEE94:
/* B56034 800DEE94 A4EE002A */ sh $t6, 0x2a($a3)
/* B56038 800DEE98 8C580008 */ lw $t8, 8($v0)
/* B5603C 800DEE9C 8C4F0000 */ lw $t7, ($v0)
/* B56040 800DEEA0 01F8C821 */ addu $t9, $t7, $t8
/* B56044 800DEEA4 ACF90020 */ sw $t9, 0x20($a3)
/* B56048 800DEEA8 8CE30014 */ lw $v1, 0x14($a3)
.L800DEEAC:
/* B5604C 800DEEAC 8CEE0000 */ lw $t6, ($a3)
/* B56050 800DEEB0 00601025 */ move $v0, $v1
/* B56054 800DEEB4 39CF0001 */ xori $t7, $t6, 1
/* B56058 800DEEB8 10000069 */ b .L800DF060
/* B5605C 800DEEBC ACEF0000 */ sw $t7, ($a3)
.L800DEEC0:
/* B56060 800DEEC0 8C580000 */ lw $t8, ($v0)
/* B56064 800DEEC4 8C590008 */ lw $t9, 8($v0)
/* B56068 800DEEC8 8FAF0054 */ lw $t7, 0x54($sp)
/* B5606C 800DEECC 2401FFF0 */ li $at, -16
/* B56070 800DEED0 03197021 */ addu $t6, $t8, $t9
/* B56074 800DEED4 01CFC023 */ subu $t8, $t6, $t7
/* B56078 800DEED8 0301C824 */ and $t9, $t8, $at
/* B5607C 800DEEDC ACF90020 */ sw $t9, 0x20($a3)
/* B56080 800DEEE0 8FAE005C */ lw $t6, 0x5c($sp)
/* B56084 800DEEE4 84E6001E */ lh $a2, 0x1e($a3)
/* B56088 800DEEE8 2401FFFF */ li $at, -1
/* B5608C 800DEEEC A4EE002A */ sh $t6, 0x2a($a3)
/* B56090 800DEEF0 8FAF0054 */ lw $t7, 0x54($sp)
/* B56094 800DEEF4 0320C025 */ move $t8, $t9
/* B56098 800DEEF8 10C10028 */ beq $a2, $at, .L800DEF9C
/* B5609C 800DEEFC ACEF0024 */ sw $t7, 0x24($a3)
/* B560A0 800DEF00 8C590004 */ lw $t9, 4($v0)
/* B560A4 800DEF04 0319082B */ sltu $at, $t8, $t9
/* B560A8 800DEF08 10200024 */ beqz $at, .L800DEF9C
/* B560AC 800DEF0C 00000000 */ nop
/* B560B0 800DEF10 160A000A */ bne $s0, $t2, .L800DEF3C
/* B560B4 800DEF14 00C02025 */ move $a0, $a2
/* B560B8 800DEF18 AFA20020 */ sw $v0, 0x20($sp)
/* B560BC 800DEF1C AFA70024 */ sw $a3, 0x24($sp)
/* B560C0 800DEF20 0C03839B */ jal func_800E0E6C
/* B560C4 800DEF24 AFAB0030 */ sw $t3, 0x30($sp)
/* B560C8 800DEF28 8FA70024 */ lw $a3, 0x24($sp)
/* B560CC 800DEF2C 8FA20020 */ lw $v0, 0x20($sp)
/* B560D0 800DEF30 24090001 */ li $t1, 1
/* B560D4 800DEF34 8FAB0030 */ lw $t3, 0x30($sp)
/* B560D8 800DEF38 84E6001E */ lh $a2, 0x1e($a3)
.L800DEF3C:
/* B560DC 800DEF3C 01667021 */ addu $t6, $t3, $a2
/* B560E0 800DEF40 12000005 */ beqz $s0, .L800DEF58
/* B560E4 800DEF44 A1C00000 */ sb $zero, ($t6)
/* B560E8 800DEF48 5209000B */ beql $s0, $t1, .L800DEF78
/* B560EC 800DEF4C 84E4001E */ lh $a0, 0x1e($a3)
/* B560F0 800DEF50 1000000F */ b .L800DEF90
/* B560F4 800DEF54 240FFFFF */ li $t7, -1
.L800DEF58:
/* B560F8 800DEF58 84E4001E */ lh $a0, 0x1e($a3)
/* B560FC 800DEF5C AFA70024 */ sw $a3, 0x24($sp)
/* B56100 800DEF60 0C03786D */ jal func_800DE1B4
/* B56104 800DEF64 AFA20020 */ sw $v0, 0x20($sp)
/* B56108 800DEF68 8FA20020 */ lw $v0, 0x20($sp)
/* B5610C 800DEF6C 10000007 */ b .L800DEF8C
/* B56110 800DEF70 8FA70024 */ lw $a3, 0x24($sp)
/* B56114 800DEF74 84E4001E */ lh $a0, 0x1e($a3)
.L800DEF78:
/* B56118 800DEF78 AFA70024 */ sw $a3, 0x24($sp)
/* B5611C 800DEF7C 0C037812 */ jal func_800DE048
/* B56120 800DEF80 AFA20020 */ sw $v0, 0x20($sp)
/* B56124 800DEF84 8FA20020 */ lw $v0, 0x20($sp)
/* B56128 800DEF88 8FA70024 */ lw $a3, 0x24($sp)
.L800DEF8C:
/* B5612C 800DEF8C 240FFFFF */ li $t7, -1
.L800DEF90:
/* B56130 800DEF90 A4EF001E */ sh $t7, 0x1e($a3)
/* B56134 800DEF94 8C580000 */ lw $t8, ($v0)
/* B56138 800DEF98 AC580004 */ sw $t8, 4($v0)
.L800DEF9C:
/* B5613C 800DEF9C 1000FFC3 */ b .L800DEEAC
/* B56140 800DEFA0 8CE30020 */ lw $v1, 0x20($a3)
/* B56144 800DEFA4 1000002E */ b .L800DF060
/* B56148 800DEFA8 00001025 */ move $v0, $zero
.L800DEFAC:
/* B5614C 800DEFAC AFA60058 */ sw $a2, 0x58($sp)
/* B56150 800DEFB0 AFA8004C */ sw $t0, 0x4c($sp)
/* B56154 800DEFB4 0C0378F7 */ jal Audio_Alloc
/* B56158 800DEFB8 AFAB0030 */ sw $t3, 0x30($sp)
/* B5615C 800DEFBC 8FA8004C */ lw $t0, 0x4c($sp)
/* B56160 800DEFC0 2407000C */ li $a3, 12
/* B56164 800DEFC4 8FA60058 */ lw $a2, 0x58($sp)
/* B56168 800DEFC8 8D190000 */ lw $t9, ($t0)
/* B5616C 800DEFCC 8FAB0030 */ lw $t3, 0x30($sp)
/* B56170 800DEFD0 24090001 */ li $t1, 1
/* B56174 800DEFD4 03270019 */ multu $t9, $a3
/* B56178 800DEFD8 240A0002 */ li $t2, 2
/* B5617C 800DEFDC 00007012 */ mflo $t6
/* B56180 800DEFE0 010E7821 */ addu $t7, $t0, $t6
/* B56184 800DEFE4 1440000B */ bnez $v0, .L800DF014
/* B56188 800DEFE8 ADE20014 */ sw $v0, 0x14($t7)
/* B5618C 800DEFEC 10C00007 */ beqz $a2, .L800DF00C
/* B56190 800DEFF0 00000000 */ nop
/* B56194 800DEFF4 10C90005 */ beq $a2, $t1, .L800DF00C
/* B56198 800DEFF8 00000000 */ nop
/* B5619C 800DEFFC 54CA0006 */ bnel $a2, $t2, .L800DF018
/* B561A0 800DF000 8D190000 */ lw $t9, ($t0)
/* B561A4 800DF004 1000FE40 */ b .L800DE908
/* B561A8 800DF008 00003025 */ move $a2, $zero
.L800DF00C:
/* B561AC 800DF00C 10000014 */ b .L800DF060
/* B561B0 800DF010 00001025 */ move $v0, $zero
.L800DF014:
/* B561B4 800DF014 8D190000 */ lw $t9, ($t0)
.L800DF018:
/* B561B8 800DF018 8FB8005C */ lw $t8, 0x5c($sp)
/* B561BC 800DF01C 03270019 */ multu $t9, $a3
/* B561C0 800DF020 00007012 */ mflo $t6
/* B561C4 800DF024 010E7821 */ addu $t7, $t0, $t6
/* B561C8 800DF028 A5F8001E */ sh $t8, 0x1e($t7)
/* B561CC 800DF02C 8D0E0000 */ lw $t6, ($t0)
/* B561D0 800DF030 8FB90054 */ lw $t9, 0x54($sp)
/* B561D4 800DF034 01C70019 */ multu $t6, $a3
/* B561D8 800DF038 0000C012 */ mflo $t8
/* B561DC 800DF03C 01187821 */ addu $t7, $t0, $t8
/* B561E0 800DF040 ADF90018 */ sw $t9, 0x18($t7)
/* B561E4 800DF044 8D030000 */ lw $v1, ($t0)
/* B561E8 800DF048 00670019 */ multu $v1, $a3
/* B561EC 800DF04C 24790001 */ addiu $t9, $v1, 1
/* B561F0 800DF050 00007012 */ mflo $t6
/* B561F4 800DF054 010EC021 */ addu $t8, $t0, $t6
/* B561F8 800DF058 8F020014 */ lw $v0, 0x14($t8)
/* B561FC 800DF05C AD190000 */ sw $t9, ($t0)
.L800DF060:
/* B56200 800DF060 8FBF001C */ lw $ra, 0x1c($sp)
/* B56204 800DF064 8FB00018 */ lw $s0, 0x18($sp)
/* B56208 800DF068 27BD0050 */ addiu $sp, $sp, 0x50
/* B5620C 800DF06C 03E00008 */ jr $ra
/* B56210 800DF070 00000000 */ nop
@@ -1,18 +0,0 @@
glabel Audio_AllocDmaMemory
/* B554A8 800DE308 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B554AC 800DE30C AFBF0014 */ sw $ra, 0x14($sp)
/* B554B0 800DE310 0C0378F7 */ jal Audio_Alloc
/* B554B4 800DE314 AFA50024 */ sw $a1, 0x24($sp)
/* B554B8 800DE318 10400005 */ beqz $v0, .L800DE330
/* B554BC 800DE31C 00402025 */ move $a0, $v0
/* B554C0 800DE320 8FA50024 */ lw $a1, 0x24($sp)
/* B554C4 800DE324 0C03788E */ jal func_800DE238
/* B554C8 800DE328 AFA2001C */ sw $v0, 0x1c($sp)
/* B554CC 800DE32C 8FA4001C */ lw $a0, 0x1c($sp)
.L800DE330:
/* B554D0 800DE330 8FBF0014 */ lw $ra, 0x14($sp)
/* B554D4 800DE334 27BD0020 */ addiu $sp, $sp, 0x20
/* B554D8 800DE338 00801025 */ move $v0, $a0
/* B554DC 800DE33C 03E00008 */ jr $ra
/* B554E0 800DE340 00000000 */ nop
@@ -1,28 +0,0 @@
glabel Audio_AllocZeroed
/* B55520 800DE380 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B55524 800DE384 AFBF0014 */ sw $ra, 0x14($sp)
/* B55528 800DE388 0C0378F7 */ jal Audio_Alloc
/* B5552C 800DE38C AFA40018 */ sw $a0, 0x18($sp)
/* B55530 800DE390 8FA40018 */ lw $a0, 0x18($sp)
/* B55534 800DE394 1040000C */ beqz $v0, .L800DE3C8
/* B55538 800DE398 00402825 */ move $a1, $v0
/* B5553C 800DE39C 8C8E0004 */ lw $t6, 4($a0)
/* B55540 800DE3A0 00401825 */ move $v1, $v0
/* B55544 800DE3A4 004E082B */ sltu $at, $v0, $t6
/* B55548 800DE3A8 50200008 */ beql $at, $zero, .L800DE3CC
/* B5554C 800DE3AC 8FBF0014 */ lw $ra, 0x14($sp)
/* B55550 800DE3B0 A0600000 */ sb $zero, ($v1)
.L800DE3B4:
/* B55554 800DE3B4 8C8F0004 */ lw $t7, 4($a0)
/* B55558 800DE3B8 24630001 */ addiu $v1, $v1, 1
/* B5555C 800DE3BC 006F082B */ sltu $at, $v1, $t7
/* B55560 800DE3C0 5420FFFC */ bnezl $at, .L800DE3B4
/* B55564 800DE3C4 A0600000 */ sb $zero, ($v1)
.L800DE3C8:
/* B55568 800DE3C8 8FBF0014 */ lw $ra, 0x14($sp)
.L800DE3CC:
/* B5556C 800DE3CC 27BD0018 */ addiu $sp, $sp, 0x18
/* B55570 800DE3D0 00A01025 */ move $v0, $a1
/* B55574 800DE3D4 03E00008 */ jr $ra
/* B55578 800DE3D8 00000000 */ nop
@@ -1,26 +0,0 @@
glabel Audio_InitMainPools
/* B55790 800DE5F0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B55794 800DE5F4 00803025 */ move $a2, $a0
/* B55798 800DE5F8 AFBF0014 */ sw $ra, 0x14($sp)
/* B5579C 800DE5FC 3C048017 */ lui $a0, %hi(gAudioContext+0x29b0) # $a0, 0x8017
/* B557A0 800DE600 3C058017 */ lui $a1, %hi(gAudioContext+0x3524) # $a1, 0x8017
/* B557A4 800DE604 8CA526A4 */ lw $a1, %lo(gAudioContext+0x3524)($a1)
/* B557A8 800DE608 24841B30 */ addiu $a0, %lo(gAudioContext+0x29b0) # addiu $a0, $a0, 0x1b30
/* B557AC 800DE60C 0C03790D */ jal Audio_SoundAllocPoolInit
/* B557B0 800DE610 AFA60018 */ sw $a2, 0x18($sp)
/* B557B4 800DE614 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B557B8 800DE618 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B557BC 800DE61C 8FA70018 */ lw $a3, 0x18($sp)
/* B557C0 800DE620 8C4E3524 */ lw $t6, 0x3524($v0)
/* B557C4 800DE624 8C4F3528 */ lw $t7, 0x3528($v0)
/* B557C8 800DE628 3C048017 */ lui $a0, %hi(gAudioContext+0x2990) # $a0, 0x8017
/* B557CC 800DE62C 24841B10 */ addiu $a0, %lo(gAudioContext+0x2990) # addiu $a0, $a0, 0x1b10
/* B557D0 800DE630 01C72821 */ addu $a1, $t6, $a3
/* B557D4 800DE634 0C03790D */ jal Audio_SoundAllocPoolInit
/* B557D8 800DE638 01E73023 */ subu $a2, $t7, $a3
/* B557DC 800DE63C 8FBF0014 */ lw $ra, 0x14($sp)
/* B557E0 800DE640 3C018017 */ lui $at, %hi(gAudioContext+0x29a0) # $at, 0x8017
/* B557E4 800DE644 AC201B20 */ sw $zero, %lo(gAudioContext+0x29a0)($at)
/* B557E8 800DE648 03E00008 */ jr $ra
/* B557EC 800DE64C 27BD0018 */ addiu $sp, $sp, 0x18
@@ -1,7 +0,0 @@
glabel Audio_PersistentPoolClear
/* B555FC 800DE45C 8C8E0004 */ lw $t6, 4($a0)
/* B55600 800DE460 AC800010 */ sw $zero, 0x10($a0)
/* B55604 800DE464 AC800000 */ sw $zero, ($a0)
/* B55608 800DE468 03E00008 */ jr $ra
/* B5560C 800DE46C AC8E0008 */ sw $t6, 8($a0)
@@ -1,51 +0,0 @@
glabel Audio_PersistentPoolsInit
/* B558F8 800DE758 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B558FC 800DE75C 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B55900 800DE760 8C4E2A00 */ lw $t6, 0x2a00($v0)
/* B55904 800DE764 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B55908 800DE768 AFB00018 */ sw $s0, 0x18($sp)
/* B5590C 800DE76C 00808025 */ move $s0, $a0
/* B55910 800DE770 AFBF001C */ sw $ra, 0x1c($sp)
/* B55914 800DE774 3C048017 */ lui $a0, %hi(gAudioContext+0x2a00) # $a0, 0x8017
/* B55918 800DE778 AC4E2A04 */ sw $t6, 0x2a04($v0)
/* B5591C 800DE77C 8E050000 */ lw $a1, ($s0)
/* B55920 800DE780 0C0378F7 */ jal Audio_Alloc
/* B55924 800DE784 24841B80 */ addiu $a0, %lo(gAudioContext+0x2a00) # addiu $a0, $a0, 0x1b80
/* B55928 800DE788 3C048017 */ lui $a0, %hi(gAudioContext+0x2a24) # $a0, 0x8017
/* B5592C 800DE78C 24841BA4 */ addiu $a0, %lo(gAudioContext+0x2a24) # addiu $a0, $a0, 0x1ba4
/* B55930 800DE790 00402825 */ move $a1, $v0
/* B55934 800DE794 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55938 800DE798 8E060000 */ lw $a2, ($s0)
/* B5593C 800DE79C 3C048017 */ lui $a0, %hi(gAudioContext+0x2a00) # $a0, 0x8017
/* B55940 800DE7A0 24841B80 */ addiu $a0, %lo(gAudioContext+0x2a00) # addiu $a0, $a0, 0x1b80
/* B55944 800DE7A4 0C0378F7 */ jal Audio_Alloc
/* B55948 800DE7A8 8E050004 */ lw $a1, 4($s0)
/* B5594C 800DE7AC 3C048017 */ lui $a0, %hi(gAudioContext+0x2b34) # $a0, 0x8017
/* B55950 800DE7B0 24841CB4 */ addiu $a0, %lo(gAudioContext+0x2b34) # addiu $a0, $a0, 0x1cb4
/* B55954 800DE7B4 00402825 */ move $a1, $v0
/* B55958 800DE7B8 0C03790D */ jal Audio_SoundAllocPoolInit
/* B5595C 800DE7BC 8E060004 */ lw $a2, 4($s0)
/* B55960 800DE7C0 3C048017 */ lui $a0, %hi(gAudioContext+0x2a00) # $a0, 0x8017
/* B55964 800DE7C4 24841B80 */ addiu $a0, %lo(gAudioContext+0x2a00) # addiu $a0, $a0, 0x1b80
/* B55968 800DE7C8 0C0378F7 */ jal Audio_Alloc
/* B5596C 800DE7CC 8E050008 */ lw $a1, 8($s0)
/* B55970 800DE7D0 3C048017 */ lui $a0, %hi(gAudioContext+0x2c44) # $a0, 0x8017
/* B55974 800DE7D4 24841DC4 */ addiu $a0, %lo(gAudioContext+0x2c44) # addiu $a0, $a0, 0x1dc4
/* B55978 800DE7D8 00402825 */ move $a1, $v0
/* B5597C 800DE7DC 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55980 800DE7E0 8E060008 */ lw $a2, 8($s0)
/* B55984 800DE7E4 3C048017 */ lui $a0, %hi(gAudioContext+0x2a20) # $a0, 0x8017
/* B55988 800DE7E8 0C037917 */ jal Audio_PersistentPoolClear
/* B5598C 800DE7EC 24841BA0 */ addiu $a0, %lo(gAudioContext+0x2a20) # addiu $a0, $a0, 0x1ba0
/* B55990 800DE7F0 3C048017 */ lui $a0, %hi(gAudioContext+0x2b30) # $a0, 0x8017
/* B55994 800DE7F4 0C037917 */ jal Audio_PersistentPoolClear
/* B55998 800DE7F8 24841CB0 */ addiu $a0, %lo(gAudioContext+0x2b30) # addiu $a0, $a0, 0x1cb0
/* B5599C 800DE7FC 3C048017 */ lui $a0, %hi(gAudioContext+0x2c40) # $a0, 0x8017
/* B559A0 800DE800 0C037917 */ jal Audio_PersistentPoolClear
/* B559A4 800DE804 24841DC0 */ addiu $a0, %lo(gAudioContext+0x2c40) # addiu $a0, $a0, 0x1dc0
/* B559A8 800DE808 8FBF001C */ lw $ra, 0x1c($sp)
/* B559AC 800DE80C 8FB00018 */ lw $s0, 0x18($sp)
/* B559B0 800DE810 27BD0020 */ addiu $sp, $sp, 0x20
/* B559B4 800DE814 03E00008 */ jr $ra
/* B559B8 800DE818 00000000 */ nop
@@ -1,35 +0,0 @@
glabel Audio_SeqAndBankPoolInit
/* B55874 800DE6D4 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B55878 800DE6D8 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B5587C 800DE6DC 8C4E29F0 */ lw $t6, 0x29f0($v0)
/* B55880 800DE6E0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B55884 800DE6E4 AFA40018 */ sw $a0, 0x18($sp)
/* B55888 800DE6E8 8FAF0018 */ lw $t7, 0x18($sp)
/* B5588C 800DE6EC AFBF0014 */ sw $ra, 0x14($sp)
/* B55890 800DE6F0 3C048017 */ lui $a0, %hi(gAudioContext+0x29f0) # $a0, 0x8017
/* B55894 800DE6F4 AC4E29F4 */ sw $t6, 0x29f4($v0)
/* B55898 800DE6F8 24841B70 */ addiu $a0, %lo(gAudioContext+0x29f0) # addiu $a0, $a0, 0x1b70
/* B5589C 800DE6FC 0C0378F7 */ jal Audio_Alloc
/* B558A0 800DE700 8DE50000 */ lw $a1, ($t7)
/* B558A4 800DE704 8FB80018 */ lw $t8, 0x18($sp)
/* B558A8 800DE708 3C048017 */ lui $a0, %hi(gAudioContext+0x2a00) # $a0, 0x8017
/* B558AC 800DE70C 24841B80 */ addiu $a0, %lo(gAudioContext+0x2a00) # addiu $a0, $a0, 0x1b80
/* B558B0 800DE710 00402825 */ move $a1, $v0
/* B558B4 800DE714 0C03790D */ jal Audio_SoundAllocPoolInit
/* B558B8 800DE718 8F060000 */ lw $a2, ($t8)
/* B558BC 800DE71C 8FB90018 */ lw $t9, 0x18($sp)
/* B558C0 800DE720 3C048017 */ lui $a0, %hi(gAudioContext+0x29f0) # $a0, 0x8017
/* B558C4 800DE724 24841B70 */ addiu $a0, %lo(gAudioContext+0x29f0) # addiu $a0, $a0, 0x1b70
/* B558C8 800DE728 0C0378F7 */ jal Audio_Alloc
/* B558CC 800DE72C 8F250004 */ lw $a1, 4($t9)
/* B558D0 800DE730 8FA80018 */ lw $t0, 0x18($sp)
/* B558D4 800DE734 3C048017 */ lui $a0, %hi(gAudioContext+0x2a10) # $a0, 0x8017
/* B558D8 800DE738 24841B90 */ addiu $a0, %lo(gAudioContext+0x2a10) # addiu $a0, $a0, 0x1b90
/* B558DC 800DE73C 00402825 */ move $a1, $v0
/* B558E0 800DE740 0C03790D */ jal Audio_SoundAllocPoolInit
/* B558E4 800DE744 8D060004 */ lw $a2, 4($t0)
/* B558E8 800DE748 8FBF0014 */ lw $ra, 0x14($sp)
/* B558EC 800DE74C 27BD0018 */ addiu $sp, $sp, 0x18
/* B558F0 800DE750 03E00008 */ jr $ra
/* B558F4 800DE754 00000000 */ nop
@@ -1,35 +0,0 @@
glabel Audio_SessionPoolsInit
/* B557F0 800DE650 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B557F4 800DE654 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B557F8 800DE658 8C4E2990 */ lw $t6, 0x2990($v0)
/* B557FC 800DE65C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B55800 800DE660 AFA40018 */ sw $a0, 0x18($sp)
/* B55804 800DE664 8FAF0018 */ lw $t7, 0x18($sp)
/* B55808 800DE668 AFBF0014 */ sw $ra, 0x14($sp)
/* B5580C 800DE66C 3C048017 */ lui $a0, %hi(gAudioContext+0x2990) # $a0, 0x8017
/* B55810 800DE670 AC4E2994 */ sw $t6, 0x2994($v0)
/* B55814 800DE674 24841B10 */ addiu $a0, %lo(gAudioContext+0x2990) # addiu $a0, $a0, 0x1b10
/* B55818 800DE678 0C0378F7 */ jal Audio_Alloc
/* B5581C 800DE67C 8DE50000 */ lw $a1, ($t7)
/* B55820 800DE680 8FB80018 */ lw $t8, 0x18($sp)
/* B55824 800DE684 3C048017 */ lui $a0, %hi(gAudioContext+0x29c0) # $a0, 0x8017
/* B55828 800DE688 24841B40 */ addiu $a0, %lo(gAudioContext+0x29c0) # addiu $a0, $a0, 0x1b40
/* B5582C 800DE68C 00402825 */ move $a1, $v0
/* B55830 800DE690 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55834 800DE694 8F060000 */ lw $a2, ($t8)
/* B55838 800DE698 8FB90018 */ lw $t9, 0x18($sp)
/* B5583C 800DE69C 3C048017 */ lui $a0, %hi(gAudioContext+0x2990) # $a0, 0x8017
/* B55840 800DE6A0 24841B10 */ addiu $a0, %lo(gAudioContext+0x2990) # addiu $a0, $a0, 0x1b10
/* B55844 800DE6A4 0C0378F7 */ jal Audio_Alloc
/* B55848 800DE6A8 8F25000C */ lw $a1, 0xc($t9)
/* B5584C 800DE6AC 8FA80018 */ lw $t0, 0x18($sp)
/* B55850 800DE6B0 3C048017 */ lui $a0, %hi(gAudioContext+0x29f0) # $a0, 0x8017
/* B55854 800DE6B4 24841B70 */ addiu $a0, %lo(gAudioContext+0x29f0) # addiu $a0, $a0, 0x1b70
/* B55858 800DE6B8 00402825 */ move $a1, $v0
/* B5585C 800DE6BC 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55860 800DE6C0 8D06000C */ lw $a2, 0xc($t0)
/* B55864 800DE6C4 8FBF0014 */ lw $ra, 0x14($sp)
/* B55868 800DE6C8 27BD0018 */ addiu $sp, $sp, 0x18
/* B5586C 800DE6CC 03E00008 */ jr $ra
/* B55870 800DE6D0 00000000 */ nop
@@ -1,12 +0,0 @@
glabel Audio_SoundAllocPoolInit
/* B555D4 800DE434 24A2000F */ addiu $v0, $a1, 0xf
/* B555D8 800DE438 2401FFF0 */ li $at, -16
/* B555DC 800DE43C 30AE000F */ andi $t6, $a1, 0xf
/* B555E0 800DE440 00411024 */ and $v0, $v0, $at
/* B555E4 800DE444 00CE7823 */ subu $t7, $a2, $t6
/* B555E8 800DE448 AC820000 */ sw $v0, ($a0)
/* B555EC 800DE44C AC820004 */ sw $v0, 4($a0)
/* B555F0 800DE450 AC8F0008 */ sw $t7, 8($a0)
/* B555F4 800DE454 03E00008 */ jr $ra
/* B555F8 800DE458 AC80000C */ sw $zero, 0xc($a0)
@@ -1,14 +0,0 @@
glabel Audio_TemporaryPoolClear
/* B55610 800DE470 8C820004 */ lw $v0, 4($a0)
/* B55614 800DE474 8C8E000C */ lw $t6, 0xc($a0)
/* B55618 800DE478 2403FFFF */ li $v1, -1
/* B5561C 800DE47C AC800010 */ sw $zero, 0x10($a0)
/* B55620 800DE480 004E7821 */ addu $t7, $v0, $t6
/* B55624 800DE484 AC800000 */ sw $zero, ($a0)
/* B55628 800DE488 AC8F0020 */ sw $t7, 0x20($a0)
/* B5562C 800DE48C A483001E */ sh $v1, 0x1e($a0)
/* B55630 800DE490 A483002A */ sh $v1, 0x2a($a0)
/* B55634 800DE494 AC820008 */ sw $v0, 8($a0)
/* B55638 800DE498 03E00008 */ jr $ra
/* B5563C 800DE49C AC820014 */ sw $v0, 0x14($a0)
@@ -1,51 +0,0 @@
glabel Audio_TemporaryPoolsInit
/* B559BC 800DE81C 3C028017 */ lui $v0, %hi(gAudioContext) # $v0, 0x8017
/* B559C0 800DE820 2442F180 */ addiu $v0, %lo(gAudioContext) # addiu $v0, $v0, -0xe80
/* B559C4 800DE824 8C4E2A10 */ lw $t6, 0x2a10($v0)
/* B559C8 800DE828 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B559CC 800DE82C AFB00018 */ sw $s0, 0x18($sp)
/* B559D0 800DE830 00808025 */ move $s0, $a0
/* B559D4 800DE834 AFBF001C */ sw $ra, 0x1c($sp)
/* B559D8 800DE838 3C048017 */ lui $a0, %hi(gAudioContext+0x2a10) # $a0, 0x8017
/* B559DC 800DE83C AC4E2A14 */ sw $t6, 0x2a14($v0)
/* B559E0 800DE840 8E050000 */ lw $a1, ($s0)
/* B559E4 800DE844 0C0378F7 */ jal Audio_Alloc
/* B559E8 800DE848 24841B90 */ addiu $a0, %lo(gAudioContext+0x2a10) # addiu $a0, $a0, 0x1b90
/* B559EC 800DE84C 3C048017 */ lui $a0, %hi(gAudioContext+0x2af8) # $a0, 0x8017
/* B559F0 800DE850 24841C78 */ addiu $a0, %lo(gAudioContext+0x2af8) # addiu $a0, $a0, 0x1c78
/* B559F4 800DE854 00402825 */ move $a1, $v0
/* B559F8 800DE858 0C03790D */ jal Audio_SoundAllocPoolInit
/* B559FC 800DE85C 8E060000 */ lw $a2, ($s0)
/* B55A00 800DE860 3C048017 */ lui $a0, %hi(gAudioContext+0x2a10) # $a0, 0x8017
/* B55A04 800DE864 24841B90 */ addiu $a0, %lo(gAudioContext+0x2a10) # addiu $a0, $a0, 0x1b90
/* B55A08 800DE868 0C0378F7 */ jal Audio_Alloc
/* B55A0C 800DE86C 8E050004 */ lw $a1, 4($s0)
/* B55A10 800DE870 3C048017 */ lui $a0, %hi(gAudioContext+0x2c08) # $a0, 0x8017
/* B55A14 800DE874 24841D88 */ addiu $a0, %lo(gAudioContext+0x2c08) # addiu $a0, $a0, 0x1d88
/* B55A18 800DE878 00402825 */ move $a1, $v0
/* B55A1C 800DE87C 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55A20 800DE880 8E060004 */ lw $a2, 4($s0)
/* B55A24 800DE884 3C048017 */ lui $a0, %hi(gAudioContext+0x2a10) # $a0, 0x8017
/* B55A28 800DE888 24841B90 */ addiu $a0, %lo(gAudioContext+0x2a10) # addiu $a0, $a0, 0x1b90
/* B55A2C 800DE88C 0C0378F7 */ jal Audio_Alloc
/* B55A30 800DE890 8E050008 */ lw $a1, 8($s0)
/* B55A34 800DE894 3C048017 */ lui $a0, %hi(gAudioContext+0x2d18) # $a0, 0x8017
/* B55A38 800DE898 24841E98 */ addiu $a0, %lo(gAudioContext+0x2d18) # addiu $a0, $a0, 0x1e98
/* B55A3C 800DE89C 00402825 */ move $a1, $v0
/* B55A40 800DE8A0 0C03790D */ jal Audio_SoundAllocPoolInit
/* B55A44 800DE8A4 8E060008 */ lw $a2, 8($s0)
/* B55A48 800DE8A8 3C048017 */ lui $a0, %hi(gAudioContext+0x2af4) # $a0, 0x8017
/* B55A4C 800DE8AC 0C03791C */ jal Audio_TemporaryPoolClear
/* B55A50 800DE8B0 24841C74 */ addiu $a0, %lo(gAudioContext+0x2af4) # addiu $a0, $a0, 0x1c74
/* B55A54 800DE8B4 3C048017 */ lui $a0, %hi(gAudioContext+0x2c04) # $a0, 0x8017
/* B55A58 800DE8B8 0C03791C */ jal Audio_TemporaryPoolClear
/* B55A5C 800DE8BC 24841D84 */ addiu $a0, %lo(gAudioContext+0x2c04) # addiu $a0, $a0, 0x1d84
/* B55A60 800DE8C0 3C048017 */ lui $a0, %hi(gAudioContext+0x2d14) # $a0, 0x8017
/* B55A64 800DE8C4 0C03791C */ jal Audio_TemporaryPoolClear
/* B55A68 800DE8C8 24841E94 */ addiu $a0, %lo(gAudioContext+0x2d14) # addiu $a0, $a0, 0x1e94
/* B55A6C 800DE8CC 8FBF001C */ lw $ra, 0x1c($sp)
/* B55A70 800DE8D0 8FB00018 */ lw $s0, 0x18($sp)
/* B55A74 800DE8D4 27BD0020 */ addiu $sp, $sp, 0x20
/* B55A78 800DE8D8 03E00008 */ jr $ra
/* B55A7C 800DE8DC 00000000 */ nop
@@ -1,9 +0,0 @@
glabel func_800DDE20
/* B54FC0 800DDE20 3C014380 */ li $at, 0x43800000 # 0.000000
/* B54FC4 800DDE24 44812000 */ mtc1 $at, $f4
/* B54FC8 800DDE28 3C018017 */ lui $at, %hi(gAudioContext+0x2868)
/* B54FCC 800DDE2C C42619E8 */ lwc1 $f6, %lo(gAudioContext+0x2868)($at)
/* B54FD0 800DDE30 46062202 */ mul.s $f8, $f4, $f6
/* B54FD4 800DDE34 03E00008 */ jr $ra
/* B54FD8 800DDE38 460C4003 */ div.s $f0, $f8, $f12
@@ -1,94 +0,0 @@
.late_rodata
glabel D_801493F0
.float 0.33
glabel D_801493F4
.float 0.66
.text
glabel func_800DDE3C
/* B54FDC 800DDE3C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* B54FE0 800DDE40 3C013E80 */ li $at, 0x3E800000 # 0.000000
/* B54FE4 800DDE44 AFBF0024 */ sw $ra, 0x24($sp)
/* B54FE8 800DDE48 44816000 */ mtc1 $at, $f12
/* B54FEC 800DDE4C AFB30020 */ sw $s3, 0x20($sp)
/* B54FF0 800DDE50 AFB2001C */ sw $s2, 0x1c($sp)
/* B54FF4 800DDE54 AFB10018 */ sw $s1, 0x18($sp)
/* B54FF8 800DDE58 0C037788 */ jal func_800DDE20
/* B54FFC 800DDE5C AFB00014 */ sw $s0, 0x14($sp)
/* B55000 800DDE60 3C138017 */ lui $s3, %hi(gAudioContext) # $s3, 0x8017
/* B55004 800DDE64 2673F180 */ addiu $s3, %lo(gAudioContext) # addiu $s3, $s3, -0xe80
/* B55008 800DDE68 8E6E3520 */ lw $t6, 0x3520($s3)
/* B5500C 800DDE6C 3C018015 */ lui $at, %hi(D_801493F0)
/* B55010 800DDE70 E5C003FC */ swc1 $f0, 0x3fc($t6)
/* B55014 800DDE74 0C037788 */ jal func_800DDE20
/* B55018 800DDE78 C42C93F0 */ lwc1 $f12, %lo(D_801493F0)($at)
/* B5501C 800DDE7C 8E6F3520 */ lw $t7, 0x3520($s3)
/* B55020 800DDE80 3C013F00 */ li $at, 0x3F000000 # 0.000000
/* B55024 800DDE84 44816000 */ mtc1 $at, $f12
/* B55028 800DDE88 0C037788 */ jal func_800DDE20
/* B5502C 800DDE8C E5E003F8 */ swc1 $f0, 0x3f8($t7)
/* B55030 800DDE90 8E783520 */ lw $t8, 0x3520($s3)
/* B55034 800DDE94 3C018015 */ lui $at, %hi(D_801493F4)
/* B55038 800DDE98 E70003F4 */ swc1 $f0, 0x3f4($t8)
/* B5503C 800DDE9C 0C037788 */ jal func_800DDE20
/* B55040 800DDEA0 C42C93F4 */ lwc1 $f12, %lo(D_801493F4)($at)
/* B55044 800DDEA4 8E793520 */ lw $t9, 0x3520($s3)
/* B55048 800DDEA8 3C013F40 */ li $at, 0x3F400000 # 0.000000
/* B5504C 800DDEAC 44816000 */ mtc1 $at, $f12
/* B55050 800DDEB0 0C037788 */ jal func_800DDE20
/* B55054 800DDEB4 E72003F0 */ swc1 $f0, 0x3f0($t9)
/* B55058 800DDEB8 8E683520 */ lw $t0, 0x3520($s3)
/* B5505C 800DDEBC 24110080 */ li $s1, 128
/* B55060 800DDEC0 24100200 */ li $s0, 512
/* B55064 800DDEC4 241200FB */ li $s2, 251
/* B55068 800DDEC8 E50003EC */ swc1 $f0, 0x3ec($t0)
.L800DDECC:
/* B5506C 800DDECC 02514823 */ subu $t1, $s2, $s1
/* B55070 800DDED0 44892000 */ mtc1 $t1, $f4
/* B55074 800DDED4 0C037788 */ jal func_800DDE20
/* B55078 800DDED8 46802320 */ cvt.s.w $f12, $f4
/* B5507C 800DDEDC 8E6A3520 */ lw $t2, 0x3520($s3)
/* B55080 800DDEE0 26310001 */ addiu $s1, $s1, 1
/* B55084 800DDEE4 2A2100FB */ slti $at, $s1, 0xfb
/* B55088 800DDEE8 01505821 */ addu $t3, $t2, $s0
/* B5508C 800DDEEC 26100004 */ addiu $s0, $s0, 4
/* B55090 800DDEF0 1420FFF6 */ bnez $at, .L800DDECC
/* B55094 800DDEF4 E5600000 */ swc1 $f0, ($t3)
/* B55098 800DDEF8 24100040 */ li $s0, 64
/* B5509C 800DDEFC 241201FC */ li $s2, 508
.L800DDF00:
/* B550A0 800DDF00 44923000 */ mtc1 $s2, $f6
/* B550A4 800DDF04 0C037788 */ jal func_800DDE20
/* B550A8 800DDF08 46803320 */ cvt.s.w $f12, $f6
/* B550AC 800DDF0C 8E6C3520 */ lw $t4, 0x3520($s3)
/* B550B0 800DDF10 2652FFFC */ addiu $s2, $s2, -4
/* B550B4 800DDF14 2A41003D */ slti $at, $s2, 0x3d
/* B550B8 800DDF18 01906821 */ addu $t5, $t4, $s0
/* B550BC 800DDF1C 26100004 */ addiu $s0, $s0, 4
/* B550C0 800DDF20 1020FFF7 */ beqz $at, .L800DDF00
/* B550C4 800DDF24 E5A00000 */ swc1 $f0, ($t5)
/* B550C8 800DDF28 24100004 */ li $s0, 4
/* B550CC 800DDF2C 24120528 */ li $s2, 1320
/* B550D0 800DDF30 241101A4 */ li $s1, 420
.L800DDF34:
/* B550D4 800DDF34 44924000 */ mtc1 $s2, $f8
/* B550D8 800DDF38 0C037788 */ jal func_800DDE20
/* B550DC 800DDF3C 46804320 */ cvt.s.w $f12, $f8
/* B550E0 800DDF40 8E6E3520 */ lw $t6, 0x3520($s3)
/* B550E4 800DDF44 2652FFC4 */ addiu $s2, $s2, -0x3c
/* B550E8 800DDF48 01D07821 */ addu $t7, $t6, $s0
/* B550EC 800DDF4C 26100004 */ addiu $s0, $s0, 4
/* B550F0 800DDF50 1632FFF8 */ bne $s1, $s2, .L800DDF34
/* B550F4 800DDF54 E5E00000 */ swc1 $f0, ($t7)
/* B550F8 800DDF58 44805000 */ mtc1 $zero, $f10
/* B550FC 800DDF5C 8E783520 */ lw $t8, 0x3520($s3)
/* B55100 800DDF60 E70A0000 */ swc1 $f10, ($t8)
/* B55104 800DDF64 8FBF0024 */ lw $ra, 0x24($sp)
/* B55108 800DDF68 8FB30020 */ lw $s3, 0x20($sp)
/* B5510C 800DDF6C 8FB2001C */ lw $s2, 0x1c($sp)
/* B55110 800DDF70 8FB10018 */ lw $s1, 0x18($sp)
/* B55114 800DDF74 8FB00014 */ lw $s0, 0x14($sp)
/* B55118 800DDF78 03E00008 */ jr $ra
/* B5511C 800DDF7C 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,61 +0,0 @@
glabel func_800DDF80
/* B55120 800DDF80 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B55124 800DDF84 3C028017 */ lui $v0, %hi(gAudioContext+0x30) # $v0, 0x8017
/* B55128 800DDF88 2442F1B0 */ addiu $v0, %lo(gAudioContext+0x30) # addiu $v0, $v0, -0xe50
/* B5512C 800DDF8C 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
/* B55130 800DDF90 24040005 */ li $a0, 5
/* B55134 800DDF94 906E3468 */ lbu $t6, 0x3468($v1)
.L800DDF98:
/* B55138 800DDF98 508E0003 */ beql $a0, $t6, .L800DDFA8
/* B5513C 800DDF9C 24630001 */ addiu $v1, $v1, 1
/* B55140 800DDFA0 A0603468 */ sb $zero, 0x3468($v1)
/* B55144 800DDFA4 24630001 */ addiu $v1, $v1, 1
.L800DDFA8:
/* B55148 800DDFA8 0062082B */ sltu $at, $v1, $v0
/* B5514C 800DDFAC 5420FFFA */ bnezl $at, .L800DDF98
/* B55150 800DDFB0 906E3468 */ lbu $t6, 0x3468($v1)
/* B55154 800DDFB4 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B55158 800DDFB8 3C028017 */ lui $v0, %hi(gAudioContext+0x30) # $v0, 0x8017
/* B5515C 800DDFBC 2442F1B0 */ addiu $v0, %lo(gAudioContext+0x30) # addiu $v0, $v0, -0xe50
/* B55160 800DDFC0 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
/* B55164 800DDFC4 906F3438 */ lbu $t7, 0x3438($v1)
.L800DDFC8:
/* B55168 800DDFC8 508F0003 */ beql $a0, $t7, .L800DDFD8
/* B5516C 800DDFCC 24630001 */ addiu $v1, $v1, 1
/* B55170 800DDFD0 A0603438 */ sb $zero, 0x3438($v1)
/* B55174 800DDFD4 24630001 */ addiu $v1, $v1, 1
.L800DDFD8:
/* B55178 800DDFD8 0062082B */ sltu $at, $v1, $v0
/* B5517C 800DDFDC 5420FFFA */ bnezl $at, .L800DDFC8
/* B55180 800DDFE0 906F3438 */ lbu $t7, 0x3438($v1)
/* B55184 800DDFE4 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B55188 800DDFE8 3C028017 */ lui $v0, %hi(gAudioContext+0x80) # $v0, 0x8017
/* B5518C 800DDFEC 2442F200 */ addiu $v0, %lo(gAudioContext+0x80) # addiu $v0, $v0, -0xe00
/* B55190 800DDFF0 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
/* B55194 800DDFF4 90783498 */ lbu $t8, 0x3498($v1)
.L800DDFF8:
/* B55198 800DDFF8 50980003 */ beql $a0, $t8, .L800DE008
/* B5519C 800DDFFC 90793499 */ lbu $t9, 0x3499($v1)
/* B551A0 800DE000 A0603498 */ sb $zero, 0x3498($v1)
/* B551A4 800DE004 90793499 */ lbu $t9, 0x3499($v1)
.L800DE008:
/* B551A8 800DE008 50990003 */ beql $a0, $t9, .L800DE018
/* B551AC 800DE00C 9068349A */ lbu $t0, 0x349a($v1)
/* B551B0 800DE010 A0603499 */ sb $zero, 0x3499($v1)
/* B551B4 800DE014 9068349A */ lbu $t0, 0x349a($v1)
.L800DE018:
/* B551B8 800DE018 50880003 */ beql $a0, $t0, .L800DE028
/* B551BC 800DE01C 9069349B */ lbu $t1, 0x349b($v1)
/* B551C0 800DE020 A060349A */ sb $zero, 0x349a($v1)
/* B551C4 800DE024 9069349B */ lbu $t1, 0x349b($v1)
.L800DE028:
/* B551C8 800DE028 50890003 */ beql $a0, $t1, .L800DE038
/* B551CC 800DE02C 24630004 */ addiu $v1, $v1, 4
/* B551D0 800DE030 A060349B */ sb $zero, 0x349b($v1)
/* B551D4 800DE034 24630004 */ addiu $v1, $v1, 4
.L800DE038:
/* B551D8 800DE038 5462FFEF */ bnel $v1, $v0, .L800DDFF8
/* B551DC 800DE03C 90783498 */ lbu $t8, 0x3498($v1)
/* B551E0 800DE040 03E00008 */ jr $ra
/* B551E4 800DE044 00000000 */ nop
@@ -1,63 +0,0 @@
glabel func_800DE048
/* B551E8 800DE048 27BDFFD0 */ addiu $sp, $sp, -0x30
/* B551EC 800DE04C AFB50028 */ sw $s5, 0x28($sp)
/* B551F0 800DE050 3C158017 */ lui $s5, %hi(gAudioContext) # $s5, 0x8017
/* B551F4 800DE054 26B5F180 */ addiu $s5, %lo(gAudioContext) # addiu $s5, $s5, -0xe80
/* B551F8 800DE058 8EA22894 */ lw $v0, 0x2894($s5)
/* B551FC 800DE05C AFB40024 */ sw $s4, 0x24($sp)
/* B55200 800DE060 AFB10018 */ sw $s1, 0x18($sp)
/* B55204 800DE064 0080A025 */ move $s4, $a0
/* B55208 800DE068 AFBF002C */ sw $ra, 0x2c($sp)
/* B5520C 800DE06C AFB30020 */ sw $s3, 0x20($sp)
/* B55210 800DE070 AFB2001C */ sw $s2, 0x1c($sp)
/* B55214 800DE074 AFB00014 */ sw $s0, 0x14($sp)
/* B55218 800DE078 18400023 */ blez $v0, .L800DE108
/* B5521C 800DE07C 00008825 */ move $s1, $zero
/* B55220 800DE080 3C138017 */ lui $s3, %hi(gNoteFreeLists) # $s3, 0x8017
/* B55224 800DE084 26734D18 */ addiu $s3, %lo(gNoteFreeLists) # addiu $s3, $s3, 0x4d18
/* B55228 800DE088 00009025 */ move $s2, $zero
.L800DE08C:
/* B5522C 800DE08C 8EAE352C */ lw $t6, 0x352c($s5)
/* B55230 800DE090 024E8021 */ addu $s0, $s2, $t6
/* B55234 800DE094 920F0033 */ lbu $t7, 0x33($s0)
/* B55238 800DE098 568F0018 */ bnel $s4, $t7, .L800DE0FC
/* B5523C 800DE09C 26310001 */ addiu $s1, $s1, 1
/* B55240 800DE0A0 92180034 */ lbu $t8, 0x34($s0)
/* B55244 800DE0A4 1700000C */ bnez $t8, .L800DE0D8
/* B55248 800DE0A8 00000000 */ nop
/* B5524C 800DE0AC 92190030 */ lbu $t9, 0x30($s0)
/* B55250 800DE0B0 13200009 */ beqz $t9, .L800DE0D8
/* B55254 800DE0B4 00000000 */ nop
/* B55258 800DE0B8 8E020044 */ lw $v0, 0x44($s0)
/* B5525C 800DE0BC 90480000 */ lbu $t0, ($v0)
/* B55260 800DE0C0 3109FF7F */ andi $t1, $t0, 0xff7f
/* B55264 800DE0C4 A0490000 */ sb $t1, ($v0)
/* B55268 800DE0C8 8E020044 */ lw $v0, 0x44($s0)
/* B5526C 800DE0CC 904B0000 */ lbu $t3, ($v0)
/* B55270 800DE0D0 356C0040 */ ori $t4, $t3, 0x40
/* B55274 800DE0D4 A04C0000 */ sb $t4, ($v0)
.L800DE0D8:
/* B55278 800DE0D8 0C039BCA */ jal Audio_NoteDisable
/* B5527C 800DE0DC 02002025 */ move $a0, $s0
/* B55280 800DE0E0 0C03A037 */ jal Audio_AudioListRemove
/* B55284 800DE0E4 02002025 */ move $a0, $s0
/* B55288 800DE0E8 02602025 */ move $a0, $s3
/* B5528C 800DE0EC 0C03A70A */ jal Audio_AudioListPushBack
/* B55290 800DE0F0 02002825 */ move $a1, $s0
/* B55294 800DE0F4 8EA22894 */ lw $v0, 0x2894($s5)
/* B55298 800DE0F8 26310001 */ addiu $s1, $s1, 1
.L800DE0FC:
/* B5529C 800DE0FC 0222082A */ slt $at, $s1, $v0
/* B552A0 800DE100 1420FFE2 */ bnez $at, .L800DE08C
/* B552A4 800DE104 265200E0 */ addiu $s2, $s2, 0xe0
.L800DE108:
/* B552A8 800DE108 8FBF002C */ lw $ra, 0x2c($sp)
/* B552AC 800DE10C 8FB00014 */ lw $s0, 0x14($sp)
/* B552B0 800DE110 8FB10018 */ lw $s1, 0x18($sp)
/* B552B4 800DE114 8FB2001C */ lw $s2, 0x1c($sp)
/* B552B8 800DE118 8FB30020 */ lw $s3, 0x20($sp)
/* B552BC 800DE11C 8FB40024 */ lw $s4, 0x24($sp)
/* B552C0 800DE120 8FB50028 */ lw $s5, 0x28($sp)
/* B552C4 800DE124 03E00008 */ jr $ra
/* B552C8 800DE128 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,39 +0,0 @@
glabel func_800DE12C
/* B552CC 800DE12C 3C088017 */ lui $t0, %hi(gAudioContext) # $t0, 0x8017
/* B552D0 800DE130 2508F180 */ addiu $t0, %lo(gAudioContext) # addiu $t0, $t0, -0xe80
/* B552D4 800DE134 8D032894 */ lw $v1, 0x2894($t0)
/* B552D8 800DE138 00803825 */ move $a3, $a0
/* B552DC 800DE13C 00001025 */ move $v0, $zero
/* B552E0 800DE140 1860001A */ blez $v1, .L800DE1AC
/* B552E4 800DE144 00002825 */ move $a1, $zero
/* B552E8 800DE148 240A0001 */ li $t2, 1
/* B552EC 800DE14C 24090006 */ li $t1, 6
.L800DE150:
/* B552F0 800DE150 8D0E352C */ lw $t6, 0x352c($t0)
/* B552F4 800DE154 24420001 */ addiu $v0, $v0, 1
/* B552F8 800DE158 00AE2021 */ addu $a0, $a1, $t6
/* B552FC 800DE15C 908F0033 */ lbu $t7, 0x33($a0)
/* B55300 800DE160 24860030 */ addiu $a2, $a0, 0x30
/* B55304 800DE164 54EF000F */ bnel $a3, $t7, .L800DE1A4
/* B55308 800DE168 0043082A */ slt $at, $v0, $v1
/* B5530C 800DE16C 90D80000 */ lbu $t8, ($a2)
/* B55310 800DE170 5300000C */ beql $t8, $zero, .L800DE1A4
/* B55314 800DE174 0043082A */ slt $at, $v0, $v1
/* B55318 800DE178 90C40040 */ lbu $a0, 0x40($a2)
/* B5531C 800DE17C 3099000F */ andi $t9, $a0, 0xf
/* B55320 800DE180 55390008 */ bnel $t1, $t9, .L800DE1A4
/* B55324 800DE184 0043082A */ slt $at, $v0, $v1
/* B55328 800DE188 A0CA0000 */ sb $t2, ($a2)
/* B5532C 800DE18C C5042864 */ lwc1 $f4, 0x2864($t0)
/* B55330 800DE190 348C0010 */ ori $t4, $a0, 0x10
/* B55334 800DE194 A0CC0040 */ sb $t4, 0x40($a2)
/* B55338 800DE198 E4C4004C */ swc1 $f4, 0x4c($a2)
/* B5533C 800DE19C 8D032894 */ lw $v1, 0x2894($t0)
/* B55340 800DE1A0 0043082A */ slt $at, $v0, $v1
.L800DE1A4:
/* B55344 800DE1A4 1420FFEA */ bnez $at, .L800DE150
/* B55348 800DE1A8 24A500E0 */ addiu $a1, $a1, 0xe0
.L800DE1AC:
/* B5534C 800DE1AC 03E00008 */ jr $ra
/* B55350 800DE1B0 00000000 */ nop
@@ -1,38 +0,0 @@
glabel func_800DE1B4
/* B55354 800DE1B4 3C028017 */ lui $v0, %hi(gAudioContext+0x285c) # $v0, 0x8017
/* B55358 800DE1B8 844219DC */ lh $v0, %lo(gAudioContext+0x285c)($v0)
/* B5535C 800DE1BC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* B55360 800DE1C0 AFB20020 */ sw $s2, 0x20($sp)
/* B55364 800DE1C4 AFB1001C */ sw $s1, 0x1c($sp)
/* B55368 800DE1C8 00809025 */ move $s2, $a0
/* B5536C 800DE1CC AFBF0024 */ sw $ra, 0x24($sp)
/* B55370 800DE1D0 AFB00018 */ sw $s0, 0x18($sp)
/* B55374 800DE1D4 18400012 */ blez $v0, .L800DE220
/* B55378 800DE1D8 00008825 */ move $s1, $zero
/* B5537C 800DE1DC 3C108017 */ lui $s0, %hi(gAudioContext) # $s0, 0x8017
/* B55380 800DE1E0 2610F180 */ addiu $s0, %lo(gAudioContext) # addiu $s0, $s0, -0xe80
.L800DE1E4:
/* B55384 800DE1E4 8E0E3530 */ lw $t6, 0x3530($s0)
/* B55388 800DE1E8 000E7FC2 */ srl $t7, $t6, 0x1f
/* B5538C 800DE1EC 51E00009 */ beql $t7, $zero, .L800DE214
/* B55390 800DE1F0 26310001 */ addiu $s1, $s1, 1
/* B55394 800DE1F4 92183534 */ lbu $t8, 0x3534($s0)
/* B55398 800DE1F8 56580006 */ bnel $s2, $t8, .L800DE214
/* B5539C 800DE1FC 26310001 */ addiu $s1, $s1, 1
/* B553A0 800DE200 0C03A6DB */ jal Audio_SequencePlayerDisable
/* B553A4 800DE204 26043530 */ addiu $a0, $s0, 0x3530
/* B553A8 800DE208 3C028017 */ lui $v0, %hi(gAudioContext+0x285c) # $v0, 0x8017
/* B553AC 800DE20C 844219DC */ lh $v0, %lo(gAudioContext+0x285c)($v0)
/* B553B0 800DE210 26310001 */ addiu $s1, $s1, 1
.L800DE214:
/* B553B4 800DE214 0222082A */ slt $at, $s1, $v0
/* B553B8 800DE218 1420FFF2 */ bnez $at, .L800DE1E4
/* B553BC 800DE21C 26100160 */ addiu $s0, $s0, 0x160
.L800DE220:
/* B553C0 800DE220 8FBF0024 */ lw $ra, 0x24($sp)
/* B553C4 800DE224 8FB00018 */ lw $s0, 0x18($sp)
/* B553C8 800DE228 8FB1001C */ lw $s1, 0x1c($sp)
/* B553CC 800DE22C 8FB20020 */ lw $s2, 0x20($sp)
/* B553D0 800DE230 03E00008 */ jr $ra
/* B553D4 800DE234 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,10 +0,0 @@
glabel func_800DE238
/* B553D8 800DE238 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B553DC 800DE23C AFBF0014 */ sw $ra, 0x14($sp)
/* B553E0 800DE240 0C039A20 */ jal func_800E6880
/* B553E4 800DE244 00000000 */ nop
/* B553E8 800DE248 8FBF0014 */ lw $ra, 0x14($sp)
/* B553EC 800DE24C 27BD0018 */ addiu $sp, $sp, 0x18
/* B553F0 800DE250 03E00008 */ jr $ra
/* B553F4 800DE254 00000000 */ nop
@@ -1,26 +0,0 @@
glabel func_800DE258
/* B553F8 800DE258 3C0E8017 */ lui $t6, %hi(gAudioContext+0x29a0) # $t6, 0x8017
/* B553FC 800DE25C 8DCE1B20 */ lw $t6, %lo(gAudioContext+0x29a0)($t6)
/* B55400 800DE260 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B55404 800DE264 AFBF0014 */ sw $ra, 0x14($sp)
/* B55408 800DE268 AFA40018 */ sw $a0, 0x18($sp)
/* B5540C 800DE26C AFA5001C */ sw $a1, 0x1c($sp)
/* B55410 800DE270 11C00005 */ beqz $t6, .L800DE288
/* B55414 800DE274 00001825 */ move $v1, $zero
/* B55418 800DE278 3C048017 */ lui $a0, %hi(gAudioContext+0x29a0) # $a0, 0x8017
/* B5541C 800DE27C 0C0378E0 */ jal Audio_AllocZeroed
/* B55420 800DE280 24841B20 */ addiu $a0, %lo(gAudioContext+0x29a0) # addiu $a0, $a0, 0x1b20
/* B55424 800DE284 00401825 */ move $v1, $v0
.L800DE288:
/* B55428 800DE288 14600004 */ bnez $v1, .L800DE29C
/* B5542C 800DE28C 8FA40018 */ lw $a0, 0x18($sp)
/* B55430 800DE290 0C0378E0 */ jal Audio_AllocZeroed
/* B55434 800DE294 8FA5001C */ lw $a1, 0x1c($sp)
/* B55438 800DE298 00401825 */ move $v1, $v0
.L800DE29C:
/* B5543C 800DE29C 8FBF0014 */ lw $ra, 0x14($sp)
/* B55440 800DE2A0 27BD0018 */ addiu $sp, $sp, 0x18
/* B55444 800DE2A4 00601025 */ move $v0, $v1
/* B55448 800DE2A8 03E00008 */ jr $ra
/* B5544C 800DE2AC 00000000 */ nop
@@ -1,26 +0,0 @@
glabel func_800DE2B0
/* B55450 800DE2B0 3C0E8017 */ lui $t6, %hi(gAudioContext+0x29a0) # $t6, 0x8017
/* B55454 800DE2B4 8DCE1B20 */ lw $t6, %lo(gAudioContext+0x29a0)($t6)
/* B55458 800DE2B8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B5545C 800DE2BC AFBF0014 */ sw $ra, 0x14($sp)
/* B55460 800DE2C0 AFA40018 */ sw $a0, 0x18($sp)
/* B55464 800DE2C4 AFA5001C */ sw $a1, 0x1c($sp)
/* B55468 800DE2C8 11C00005 */ beqz $t6, .L800DE2E0
/* B5546C 800DE2CC 00001825 */ move $v1, $zero
/* B55470 800DE2D0 3C048017 */ lui $a0, %hi(gAudioContext+0x29a0) # $a0, 0x8017
/* B55474 800DE2D4 0C0378F7 */ jal Audio_Alloc
/* B55478 800DE2D8 24841B20 */ addiu $a0, %lo(gAudioContext+0x29a0) # addiu $a0, $a0, 0x1b20
/* B5547C 800DE2DC 00401825 */ move $v1, $v0
.L800DE2E0:
/* B55480 800DE2E0 14600004 */ bnez $v1, .L800DE2F4
/* B55484 800DE2E4 8FA40018 */ lw $a0, 0x18($sp)
/* B55488 800DE2E8 0C0378F7 */ jal Audio_Alloc
/* B5548C 800DE2EC 8FA5001C */ lw $a1, 0x1c($sp)
/* B55490 800DE2F0 00401825 */ move $v1, $v0
.L800DE2F4:
/* B55494 800DE2F4 8FBF0014 */ lw $ra, 0x14($sp)
/* B55498 800DE2F8 27BD0018 */ addiu $sp, $sp, 0x18
/* B5549C 800DE2FC 00601025 */ move $v0, $v1
/* B554A0 800DE300 03E00008 */ jr $ra
/* B554A4 800DE304 00000000 */ nop
@@ -1,18 +0,0 @@
glabel func_800DE344
/* B554E4 800DE344 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B554E8 800DE348 AFBF0014 */ sw $ra, 0x14($sp)
/* B554EC 800DE34C 0C0378E0 */ jal Audio_AllocZeroed
/* B554F0 800DE350 AFA50024 */ sw $a1, 0x24($sp)
/* B554F4 800DE354 10400005 */ beqz $v0, .L800DE36C
/* B554F8 800DE358 00402025 */ move $a0, $v0
/* B554FC 800DE35C 8FA50024 */ lw $a1, 0x24($sp)
/* B55500 800DE360 0C03788E */ jal func_800DE238
/* B55504 800DE364 AFA2001C */ sw $v0, 0x1c($sp)
/* B55508 800DE368 8FA4001C */ lw $a0, 0x1c($sp)
.L800DE36C:
/* B5550C 800DE36C 8FBF0014 */ lw $ra, 0x14($sp)
/* B55510 800DE370 27BD0020 */ addiu $sp, $sp, 0x20
/* B55514 800DE374 00801025 */ move $v0, $a0
/* B55518 800DE378 03E00008 */ jr $ra
/* B5551C 800DE37C 00000000 */ nop
@@ -1,6 +0,0 @@
glabel func_800DE4A0
/* B55640 800DE4A0 8C8E0000 */ lw $t6, ($a0)
/* B55644 800DE4A4 AC80000C */ sw $zero, 0xc($a0)
/* B55648 800DE4A8 03E00008 */ jr $ra
/* B5564C 800DE4AC AC8E0004 */ sw $t6, 4($a0)
@@ -1,89 +0,0 @@
glabel func_800DE4B0
/* B55650 800DE4B0 27BDFFD0 */ addiu $sp, $sp, -0x30
/* B55654 800DE4B4 AFBF0014 */ sw $ra, 0x14($sp)
/* B55658 800DE4B8 10800009 */ beqz $a0, .L800DE4E0
/* B5565C 800DE4BC 00803025 */ move $a2, $a0
/* B55660 800DE4C0 24010001 */ li $at, 1
/* B55664 800DE4C4 1081000C */ beq $a0, $at, .L800DE4F8
/* B55668 800DE4C8 3C038017 */ lui $v1, %hi(gAudioContext+0x2b30)
/* B5566C 800DE4CC 24010002 */ li $at, 2
/* B55670 800DE4D0 1081000E */ beq $a0, $at, .L800DE50C
/* B55674 800DE4D4 3C038017 */ lui $v1, %hi(gAudioContext+0x2c40)
/* B55678 800DE4D8 10000010 */ b .L800DE51C
/* B5567C 800DE4DC 8FA3002C */ lw $v1, 0x2c($sp)
.L800DE4E0:
/* B55680 800DE4E0 3C0E8017 */ lui $t6, %hi(gAudioContext+0x3498) # $t6, 0x8017
/* B55684 800DE4E4 3C038017 */ lui $v1, %hi(gAudioContext+0x2a20) # $v1, 0x8017
/* B55688 800DE4E8 25CE2618 */ addiu $t6, %lo(gAudioContext+0x3498) # addiu $t6, $t6, 0x2618
/* B5568C 800DE4EC 24631BA0 */ addiu $v1, %lo(gAudioContext+0x2a20) # addiu $v1, $v1, 0x1ba0
/* B55690 800DE4F0 1000000A */ b .L800DE51C
/* B55694 800DE4F4 AFAE001C */ sw $t6, 0x1c($sp)
.L800DE4F8:
/* B55698 800DE4F8 3C0F8017 */ lui $t7, %hi(gAudioContext+0x3468) # $t7, 0x8017
/* B5569C 800DE4FC 25EF25E8 */ addiu $t7, %lo(gAudioContext+0x3468) # addiu $t7, $t7, 0x25e8
/* B556A0 800DE500 24631CB0 */ addiu $v1, %lo(gAudioContext+0x2b30)
/* B556A4 800DE504 10000005 */ b .L800DE51C
/* B556A8 800DE508 AFAF001C */ sw $t7, 0x1c($sp)
.L800DE50C:
/* B556AC 800DE50C 3C188017 */ lui $t8, %hi(gAudioContext+0x3438) # $t8, 0x8017
/* B556B0 800DE510 271825B8 */ addiu $t8, %lo(gAudioContext+0x3438) # addiu $t8, $t8, 0x25b8
/* B556B4 800DE514 24631DC0 */ addiu $v1, %lo(gAudioContext+0x2c40)
/* B556B8 800DE518 AFB8001C */ sw $t8, 0x1c($sp)
.L800DE51C:
/* B556BC 800DE51C 8C650000 */ lw $a1, ($v1)
/* B556C0 800DE520 24620004 */ addiu $v0, $v1, 4
/* B556C4 800DE524 24010002 */ li $at, 2
/* B556C8 800DE528 10A0002D */ beqz $a1, .L800DE5E0
/* B556CC 800DE52C 0005C880 */ sll $t9, $a1, 2
/* B556D0 800DE530 0325C823 */ subu $t9, $t9, $a1
/* B556D4 800DE534 8C49000C */ lw $t1, 0xc($v0)
/* B556D8 800DE538 0019C880 */ sll $t9, $t9, 2
/* B556DC 800DE53C 00794021 */ addu $t0, $v1, $t9
/* B556E0 800DE540 8D040008 */ lw $a0, 8($t0)
/* B556E4 800DE544 252AFFFF */ addiu $t2, $t1, -1
/* B556E8 800DE548 AC4A000C */ sw $t2, 0xc($v0)
/* B556EC 800DE54C 14C1000C */ bne $a2, $at, .L800DE580
/* B556F0 800DE550 AC440004 */ sw $a0, 4($v0)
/* B556F4 800DE554 8C6B0000 */ lw $t3, ($v1)
/* B556F8 800DE558 000B6080 */ sll $t4, $t3, 2
/* B556FC 800DE55C 018B6023 */ subu $t4, $t4, $t3
/* B55700 800DE560 000C6080 */ sll $t4, $t4, 2
/* B55704 800DE564 006C6821 */ addu $t5, $v1, $t4
/* B55708 800DE568 85A40012 */ lh $a0, 0x12($t5)
/* B5570C 800DE56C AFA60030 */ sw $a2, 0x30($sp)
/* B55710 800DE570 0C03839B */ jal func_800E0E6C
/* B55714 800DE574 AFA3002C */ sw $v1, 0x2c($sp)
/* B55718 800DE578 8FA3002C */ lw $v1, 0x2c($sp)
/* B5571C 800DE57C 8FA60030 */ lw $a2, 0x30($sp)
.L800DE580:
/* B55720 800DE580 24010001 */ li $at, 1
/* B55724 800DE584 54C1000B */ bnel $a2, $at, .L800DE5B4
/* B55728 800DE588 8C680000 */ lw $t0, ($v1)
/* B5572C 800DE58C 8C6E0000 */ lw $t6, ($v1)
/* B55730 800DE590 000E7880 */ sll $t7, $t6, 2
/* B55734 800DE594 01EE7823 */ subu $t7, $t7, $t6
/* B55738 800DE598 000F7880 */ sll $t7, $t7, 2
/* B5573C 800DE59C 006FC021 */ addu $t8, $v1, $t7
/* B55740 800DE5A0 87040012 */ lh $a0, 0x12($t8)
/* B55744 800DE5A4 0C037812 */ jal func_800DE048
/* B55748 800DE5A8 AFA3002C */ sw $v1, 0x2c($sp)
/* B5574C 800DE5AC 8FA3002C */ lw $v1, 0x2c($sp)
/* B55750 800DE5B0 8C680000 */ lw $t0, ($v1)
.L800DE5B4:
/* B55754 800DE5B4 8FB9001C */ lw $t9, 0x1c($sp)
/* B55758 800DE5B8 00084880 */ sll $t1, $t0, 2
/* B5575C 800DE5BC 01284823 */ subu $t1, $t1, $t0
/* B55760 800DE5C0 00094880 */ sll $t1, $t1, 2
/* B55764 800DE5C4 00695021 */ addu $t2, $v1, $t1
/* B55768 800DE5C8 854B0012 */ lh $t3, 0x12($t2)
/* B5576C 800DE5CC 032B6021 */ addu $t4, $t9, $t3
/* B55770 800DE5D0 A1800000 */ sb $zero, ($t4)
/* B55774 800DE5D4 8C6D0000 */ lw $t5, ($v1)
/* B55778 800DE5D8 25AEFFFF */ addiu $t6, $t5, -1
/* B5577C 800DE5DC AC6E0000 */ sw $t6, ($v1)
.L800DE5E0:
/* B55780 800DE5E0 8FBF0014 */ lw $ra, 0x14($sp)
/* B55784 800DE5E4 27BD0030 */ addiu $sp, $sp, 0x30
/* B55788 800DE5E8 03E00008 */ jr $ra
/* B5578C 800DE5EC 00000000 */ nop
@@ -1,28 +0,0 @@
glabel func_800DF074
/* B56214 800DF074 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B56218 800DF078 AFBF0014 */ sw $ra, 0x14($sp)
/* B5621C 800DF07C AFA5001C */ sw $a1, 0x1c($sp)
/* B56220 800DF080 AFA40018 */ sw $a0, 0x18($sp)
/* B56224 800DF084 AFA60020 */ sw $a2, 0x20($sp)
/* B56228 800DF088 0C03813A */ jal func_800E04E8
/* B5622C 800DF08C 00C02825 */ move $a1, $a2
/* B56230 800DF090 10400003 */ beqz $v0, .L800DF0A0
/* B56234 800DF094 8FA5001C */ lw $a1, 0x1c($sp)
/* B56238 800DF098 10000009 */ b .L800DF0C0
/* B5623C 800DF09C 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF0A0:
/* B56240 800DF0A0 24010003 */ li $at, 3
/* B56244 800DF0A4 14A10003 */ bne $a1, $at, .L800DF0B4
/* B56248 800DF0A8 8FA40018 */ lw $a0, 0x18($sp)
/* B5624C 800DF0AC 10000003 */ b .L800DF0BC
/* B56250 800DF0B0 00001025 */ move $v0, $zero
.L800DF0B4:
/* B56254 800DF0B4 0C037C33 */ jal func_800DF0CC
/* B56258 800DF0B8 8FA60020 */ lw $a2, 0x20($sp)
.L800DF0BC:
/* B5625C 800DF0BC 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF0C0:
/* B56260 800DF0C0 27BD0018 */ addiu $sp, $sp, 0x18
/* B56264 800DF0C4 03E00008 */ jr $ra
/* B56268 800DF0C8 00000000 */ nop
@@ -1,81 +0,0 @@
glabel func_800DF0CC
/* B5626C 800DF0CC 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B56270 800DF0D0 AFBF0014 */ sw $ra, 0x14($sp)
/* B56274 800DF0D4 AFA50024 */ sw $a1, 0x24($sp)
/* B56278 800DF0D8 10800009 */ beqz $a0, .L800DF100
/* B5627C 800DF0DC 00803825 */ move $a3, $a0
/* B56280 800DF0E0 24010001 */ li $at, 1
/* B56284 800DF0E4 10810009 */ beq $a0, $at, .L800DF10C
/* B56288 800DF0E8 3C058017 */ lui $a1, %hi(gAudioContext+0x2b30)
/* B5628C 800DF0EC 24010002 */ li $at, 2
/* B56290 800DF0F0 10810008 */ beq $a0, $at, .L800DF114
/* B56294 800DF0F4 3C058017 */ lui $a1, %hi(gAudioContext+0x2c40)
/* B56298 800DF0F8 10000007 */ b .L800DF118
/* B5629C 800DF0FC 8FA50018 */ lw $a1, 0x18($sp)
.L800DF100:
/* B562A0 800DF100 3C058017 */ lui $a1, %hi(gAudioContext+0x2a20) # $a1, 0x8017
/* B562A4 800DF104 10000004 */ b .L800DF118
/* B562A8 800DF108 24A51BA0 */ addiu $a1, %lo(gAudioContext+0x2a20) # addiu $a1, $a1, 0x1ba0
.L800DF10C:
/* B562AC 800DF10C 10000002 */ b .L800DF118
/* B562B0 800DF110 24A51CB0 */ addiu $a1, %lo(gAudioContext+0x2b30)
.L800DF114:
/* B562B4 800DF114 24A51DC0 */ addiu $a1, %lo(gAudioContext+0x2c40)
.L800DF118:
/* B562B8 800DF118 8FAE0024 */ lw $t6, 0x24($sp)
/* B562BC 800DF11C 24A300D4 */ addiu $v1, $a1, 0xd4
/* B562C0 800DF120 55C00011 */ bnezl $t6, .L800DF168
/* B562C4 800DF124 8CA80000 */ lw $t0, ($a1)
/* B562C8 800DF128 846F001E */ lh $t7, 0x1e($v1)
/* B562CC 800DF12C 24180001 */ li $t8, 1
/* B562D0 800DF130 54CF0005 */ bnel $a2, $t7, .L800DF148
/* B562D4 800DF134 8479002A */ lh $t9, 0x2a($v1)
/* B562D8 800DF138 AC780000 */ sw $t8, ($v1)
/* B562DC 800DF13C 10000022 */ b .L800DF1C8
/* B562E0 800DF140 8C620014 */ lw $v0, 0x14($v1)
/* B562E4 800DF144 8479002A */ lh $t9, 0x2a($v1)
.L800DF148:
/* B562E8 800DF148 14D90004 */ bne $a2, $t9, .L800DF15C
/* B562EC 800DF14C 00000000 */ nop
/* B562F0 800DF150 AC600000 */ sw $zero, ($v1)
/* B562F4 800DF154 1000001C */ b .L800DF1C8
/* B562F8 800DF158 8C620020 */ lw $v0, 0x20($v1)
.L800DF15C:
/* B562FC 800DF15C 1000001A */ b .L800DF1C8
/* B56300 800DF160 00001025 */ move $v0, $zero
/* B56304 800DF164 8CA80000 */ lw $t0, ($a1)
.L800DF168:
/* B56308 800DF168 00A02025 */ move $a0, $a1
/* B5630C 800DF16C 00001025 */ move $v0, $zero
/* B56310 800DF170 1100000C */ beqz $t0, .L800DF1A4
/* B56314 800DF174 00A01825 */ move $v1, $a1
/* B56318 800DF178 8469001E */ lh $t1, 0x1e($v1)
.L800DF17C:
/* B5631C 800DF17C 54C90004 */ bnel $a2, $t1, .L800DF190
/* B56320 800DF180 8C8A0000 */ lw $t2, ($a0)
/* B56324 800DF184 10000010 */ b .L800DF1C8
/* B56328 800DF188 8C620014 */ lw $v0, 0x14($v1)
/* B5632C 800DF18C 8C8A0000 */ lw $t2, ($a0)
.L800DF190:
/* B56330 800DF190 24420001 */ addiu $v0, $v0, 1
/* B56334 800DF194 2463000C */ addiu $v1, $v1, 0xc
/* B56338 800DF198 004A082B */ sltu $at, $v0, $t2
/* B5633C 800DF19C 5420FFF7 */ bnezl $at, .L800DF17C
/* B56340 800DF1A0 8469001E */ lh $t1, 0x1e($v1)
.L800DF1A4:
/* B56344 800DF1A4 8FAB0024 */ lw $t3, 0x24($sp)
/* B56348 800DF1A8 24010002 */ li $at, 2
/* B5634C 800DF1AC 00E02025 */ move $a0, $a3
/* B56350 800DF1B0 15610005 */ bne $t3, $at, .L800DF1C8
/* B56354 800DF1B4 00001025 */ move $v0, $zero
/* B56358 800DF1B8 0C037C1D */ jal func_800DF074
/* B5635C 800DF1BC 00002825 */ move $a1, $zero
/* B56360 800DF1C0 10000002 */ b .L800DF1CC
/* B56364 800DF1C4 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF1C8:
/* B56368 800DF1C8 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF1CC:
/* B5636C 800DF1CC 27BD0020 */ addiu $sp, $sp, 0x20
/* B56370 800DF1D0 03E00008 */ jr $ra
/* B56374 800DF1D4 00000000 */ nop
@@ -1,272 +0,0 @@
.late_rodata
glabel D_801493F8
.float 262159
.text
glabel func_800DF1D8
/* B56378 800DF1D8 3C018015 */ lui $at, %hi(D_801493F8)
/* B5637C 800DF1DC C42093F8 */ lwc1 $f0, %lo(D_801493F8)($at)
/* B56380 800DF1E0 27BDFFB0 */ addiu $sp, $sp, -0x50
/* B56384 800DF1E4 27A40014 */ addiu $a0, $sp, 0x14
/* B56388 800DF1E8 46007102 */ mul.s $f4, $f14, $f0
/* B5638C 800DF1EC 27A2002C */ addiu $v0, $sp, 0x2c
/* B56390 800DF1F0 24C30004 */ addiu $v1, $a2, 4
/* B56394 800DF1F4 46006182 */ mul.s $f6, $f12, $f0
/* B56398 800DF1F8 00000000 */ nop
/* B5639C 800DF1FC 460C7202 */ mul.s $f8, $f14, $f12
/* B563A0 800DF200 E7A4000C */ swc1 $f4, 0xc($sp)
/* B563A4 800DF204 E7A6002C */ swc1 $f6, 0x2c($sp)
/* B563A8 800DF208 46004282 */ mul.s $f10, $f8, $f0
/* B563AC 800DF20C 00000000 */ nop
/* B563B0 800DF210 460C6402 */ mul.s $f16, $f12, $f12
/* B563B4 800DF214 E7AA0010 */ swc1 $f10, 0x10($sp)
/* B563B8 800DF218 460E8480 */ add.s $f18, $f16, $f14
/* B563BC 800DF21C 46009102 */ mul.s $f4, $f18, $f0
/* B563C0 800DF220 E7A40030 */ swc1 $f4, 0x30($sp)
.L800DF224:
/* B563C4 800DF224 C486FFFC */ lwc1 $f6, -4($a0)
/* B563C8 800DF228 C48AFFF8 */ lwc1 $f10, -8($a0)
/* B563CC 800DF22C 240F0001 */ li $t7, 1
/* B563D0 800DF230 460C3202 */ mul.s $f8, $f6, $f12
/* B563D4 800DF234 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B563D8 800DF238 460A7402 */ mul.s $f16, $f14, $f10
/* B563DC 800DF23C 46104480 */ add.s $f18, $f8, $f16
/* B563E0 800DF240 444EF800 */ cfc1 $t6, $31
/* B563E4 800DF244 44CFF800 */ ctc1 $t7, $31
/* B563E8 800DF248 00000000 */ nop
/* B563EC 800DF24C 46009124 */ cvt.w.s $f4, $f18
/* B563F0 800DF250 444FF800 */ cfc1 $t7, $31
/* B563F4 800DF254 00000000 */ nop
/* B563F8 800DF258 31EF0078 */ andi $t7, $t7, 0x78
/* B563FC 800DF25C 51E00013 */ beql $t7, $zero, .L800DF2AC
/* B56400 800DF260 440F2000 */ mfc1 $t7, $f4
/* B56404 800DF264 44812000 */ mtc1 $at, $f4
/* B56408 800DF268 240F0001 */ li $t7, 1
/* B5640C 800DF26C 46049101 */ sub.s $f4, $f18, $f4
/* B56410 800DF270 44CFF800 */ ctc1 $t7, $31
/* B56414 800DF274 00000000 */ nop
/* B56418 800DF278 46002124 */ cvt.w.s $f4, $f4
/* B5641C 800DF27C 444FF800 */ cfc1 $t7, $31
/* B56420 800DF280 00000000 */ nop
/* B56424 800DF284 31EF0078 */ andi $t7, $t7, 0x78
/* B56428 800DF288 15E00005 */ bnez $t7, .L800DF2A0
/* B5642C 800DF28C 00000000 */ nop
/* B56430 800DF290 440F2000 */ mfc1 $t7, $f4
/* B56434 800DF294 3C018000 */ lui $at, 0x8000
/* B56438 800DF298 10000007 */ b .L800DF2B8
/* B5643C 800DF29C 01E17825 */ or $t7, $t7, $at
.L800DF2A0:
/* B56440 800DF2A0 10000005 */ b .L800DF2B8
/* B56444 800DF2A4 240FFFFF */ li $t7, -1
/* B56448 800DF2A8 440F2000 */ mfc1 $t7, $f4
.L800DF2AC:
/* B5644C 800DF2AC 00000000 */ nop
/* B56450 800DF2B0 05E0FFFB */ bltz $t7, .L800DF2A0
/* B56454 800DF2B4 00000000 */ nop
.L800DF2B8:
/* B56458 800DF2B8 A46F0000 */ sh $t7, ($v1)
/* B5645C 800DF2BC 44CEF800 */ ctc1 $t6, $31
/* B56460 800DF2C0 C486001C */ lwc1 $f6, 0x1c($a0)
/* B56464 800DF2C4 C4880018 */ lwc1 $f8, 0x18($a0)
/* B56468 800DF2C8 24190001 */ li $t9, 1
/* B5646C 800DF2CC 460C3282 */ mul.s $f10, $f6, $f12
/* B56470 800DF2D0 24840004 */ addiu $a0, $a0, 4
/* B56474 800DF2D4 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B56478 800DF2D8 46087402 */ mul.s $f16, $f14, $f8
/* B5647C 800DF2DC 46105480 */ add.s $f18, $f10, $f16
/* B56480 800DF2E0 4458F800 */ cfc1 $t8, $31
/* B56484 800DF2E4 44D9F800 */ ctc1 $t9, $31
/* B56488 800DF2E8 00000000 */ nop
/* B5648C 800DF2EC 46009124 */ cvt.w.s $f4, $f18
/* B56490 800DF2F0 4459F800 */ cfc1 $t9, $31
/* B56494 800DF2F4 00000000 */ nop
/* B56498 800DF2F8 33390078 */ andi $t9, $t9, 0x78
/* B5649C 800DF2FC 53200013 */ beql $t9, $zero, .L800DF34C
/* B564A0 800DF300 44192000 */ mfc1 $t9, $f4
/* B564A4 800DF304 44812000 */ mtc1 $at, $f4
/* B564A8 800DF308 24190001 */ li $t9, 1
/* B564AC 800DF30C 46049101 */ sub.s $f4, $f18, $f4
/* B564B0 800DF310 44D9F800 */ ctc1 $t9, $31
/* B564B4 800DF314 00000000 */ nop
/* B564B8 800DF318 46002124 */ cvt.w.s $f4, $f4
/* B564BC 800DF31C 4459F800 */ cfc1 $t9, $31
/* B564C0 800DF320 00000000 */ nop
/* B564C4 800DF324 33390078 */ andi $t9, $t9, 0x78
/* B564C8 800DF328 17200005 */ bnez $t9, .L800DF340
/* B564CC 800DF32C 00000000 */ nop
/* B564D0 800DF330 44192000 */ mfc1 $t9, $f4
/* B564D4 800DF334 3C018000 */ lui $at, 0x8000
/* B564D8 800DF338 10000007 */ b .L800DF358
/* B564DC 800DF33C 0321C825 */ or $t9, $t9, $at
.L800DF340:
/* B564E0 800DF340 10000005 */ b .L800DF358
/* B564E4 800DF344 2419FFFF */ li $t9, -1
/* B564E8 800DF348 44192000 */ mfc1 $t9, $f4
.L800DF34C:
/* B564EC 800DF34C 00000000 */ nop
/* B564F0 800DF350 0720FFFB */ bltz $t9, .L800DF340
/* B564F4 800DF354 00000000 */ nop
.L800DF358:
/* B564F8 800DF358 0082082B */ sltu $at, $a0, $v0
/* B564FC 800DF35C 44D8F800 */ ctc1 $t8, $31
/* B56500 800DF360 24630002 */ addiu $v1, $v1, 2
/* B56504 800DF364 1420FFAF */ bnez $at, .L800DF224
/* B56508 800DF368 A479000E */ sh $t9, 0xe($v1)
/* B5650C 800DF36C 00C01825 */ move $v1, $a2
/* B56510 800DF370 27A4000C */ addiu $a0, $sp, 0xc
/* B56514 800DF374 27A2004C */ addiu $v0, $sp, 0x4c
.L800DF378:
/* B56518 800DF378 4448F800 */ cfc1 $t0, $31
/* B5651C 800DF37C 24090001 */ li $t1, 1
/* B56520 800DF380 44C9F800 */ ctc1 $t1, $31
/* B56524 800DF384 C4860000 */ lwc1 $f6, ($a0)
/* B56528 800DF388 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B5652C 800DF38C 46003224 */ cvt.w.s $f8, $f6
/* B56530 800DF390 4449F800 */ cfc1 $t1, $31
/* B56534 800DF394 00000000 */ nop
/* B56538 800DF398 31290078 */ andi $t1, $t1, 0x78
/* B5653C 800DF39C 51200013 */ beql $t1, $zero, .L800DF3EC
/* B56540 800DF3A0 44094000 */ mfc1 $t1, $f8
/* B56544 800DF3A4 44814000 */ mtc1 $at, $f8
/* B56548 800DF3A8 24090001 */ li $t1, 1
/* B5654C 800DF3AC 46083201 */ sub.s $f8, $f6, $f8
/* B56550 800DF3B0 44C9F800 */ ctc1 $t1, $31
/* B56554 800DF3B4 00000000 */ nop
/* B56558 800DF3B8 46004224 */ cvt.w.s $f8, $f8
/* B5655C 800DF3BC 4449F800 */ cfc1 $t1, $31
/* B56560 800DF3C0 00000000 */ nop
/* B56564 800DF3C4 31290078 */ andi $t1, $t1, 0x78
/* B56568 800DF3C8 15200005 */ bnez $t1, .L800DF3E0
/* B5656C 800DF3CC 00000000 */ nop
/* B56570 800DF3D0 44094000 */ mfc1 $t1, $f8
/* B56574 800DF3D4 3C018000 */ lui $at, 0x8000
/* B56578 800DF3D8 10000007 */ b .L800DF3F8
/* B5657C 800DF3DC 01214825 */ or $t1, $t1, $at
.L800DF3E0:
/* B56580 800DF3E0 10000005 */ b .L800DF3F8
/* B56584 800DF3E4 2409FFFF */ li $t1, -1
/* B56588 800DF3E8 44094000 */ mfc1 $t1, $f8
.L800DF3EC:
/* B5658C 800DF3EC 00000000 */ nop
/* B56590 800DF3F0 0520FFFB */ bltz $t1, .L800DF3E0
/* B56594 800DF3F4 00000000 */ nop
.L800DF3F8:
/* B56598 800DF3F8 44C8F800 */ ctc1 $t0, $31
/* B5659C 800DF3FC 240B0001 */ li $t3, 1
/* B565A0 800DF400 A4690000 */ sh $t1, ($v1)
/* B565A4 800DF404 C48A0004 */ lwc1 $f10, 4($a0)
/* B565A8 800DF408 444AF800 */ cfc1 $t2, $31
/* B565AC 800DF40C 44CBF800 */ ctc1 $t3, $31
/* B565B0 800DF410 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B565B4 800DF414 46005424 */ cvt.w.s $f16, $f10
/* B565B8 800DF418 444BF800 */ cfc1 $t3, $31
/* B565BC 800DF41C 00000000 */ nop
/* B565C0 800DF420 316B0078 */ andi $t3, $t3, 0x78
/* B565C4 800DF424 51600013 */ beql $t3, $zero, .L800DF474
/* B565C8 800DF428 440B8000 */ mfc1 $t3, $f16
/* B565CC 800DF42C 44818000 */ mtc1 $at, $f16
/* B565D0 800DF430 240B0001 */ li $t3, 1
/* B565D4 800DF434 46105401 */ sub.s $f16, $f10, $f16
/* B565D8 800DF438 44CBF800 */ ctc1 $t3, $31
/* B565DC 800DF43C 00000000 */ nop
/* B565E0 800DF440 46008424 */ cvt.w.s $f16, $f16
/* B565E4 800DF444 444BF800 */ cfc1 $t3, $31
/* B565E8 800DF448 00000000 */ nop
/* B565EC 800DF44C 316B0078 */ andi $t3, $t3, 0x78
/* B565F0 800DF450 15600005 */ bnez $t3, .L800DF468
/* B565F4 800DF454 00000000 */ nop
/* B565F8 800DF458 440B8000 */ mfc1 $t3, $f16
/* B565FC 800DF45C 3C018000 */ lui $at, 0x8000
/* B56600 800DF460 10000007 */ b .L800DF480
/* B56604 800DF464 01615825 */ or $t3, $t3, $at
.L800DF468:
/* B56608 800DF468 10000005 */ b .L800DF480
/* B5660C 800DF46C 240BFFFF */ li $t3, -1
/* B56610 800DF470 440B8000 */ mfc1 $t3, $f16
.L800DF474:
/* B56614 800DF474 00000000 */ nop
/* B56618 800DF478 0560FFFB */ bltz $t3, .L800DF468
/* B5661C 800DF47C 00000000 */ nop
.L800DF480:
/* B56620 800DF480 44CAF800 */ ctc1 $t2, $31
/* B56624 800DF484 A46B0002 */ sh $t3, 2($v1)
/* B56628 800DF488 240D0001 */ li $t5, 1
/* B5662C 800DF48C C4920008 */ lwc1 $f18, 8($a0)
/* B56630 800DF490 444CF800 */ cfc1 $t4, $31
/* B56634 800DF494 44CDF800 */ ctc1 $t5, $31
/* B56638 800DF498 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B5663C 800DF49C 46009124 */ cvt.w.s $f4, $f18
/* B56640 800DF4A0 444DF800 */ cfc1 $t5, $31
/* B56644 800DF4A4 00000000 */ nop
/* B56648 800DF4A8 31AD0078 */ andi $t5, $t5, 0x78
/* B5664C 800DF4AC 51A00013 */ beql $t5, $zero, .L800DF4FC
/* B56650 800DF4B0 440D2000 */ mfc1 $t5, $f4
/* B56654 800DF4B4 44812000 */ mtc1 $at, $f4
/* B56658 800DF4B8 240D0001 */ li $t5, 1
/* B5665C 800DF4BC 46049101 */ sub.s $f4, $f18, $f4
/* B56660 800DF4C0 44CDF800 */ ctc1 $t5, $31
/* B56664 800DF4C4 00000000 */ nop
/* B56668 800DF4C8 46002124 */ cvt.w.s $f4, $f4
/* B5666C 800DF4CC 444DF800 */ cfc1 $t5, $31
/* B56670 800DF4D0 00000000 */ nop
/* B56674 800DF4D4 31AD0078 */ andi $t5, $t5, 0x78
/* B56678 800DF4D8 15A00005 */ bnez $t5, .L800DF4F0
/* B5667C 800DF4DC 00000000 */ nop
/* B56680 800DF4E0 440D2000 */ mfc1 $t5, $f4
/* B56684 800DF4E4 3C018000 */ lui $at, 0x8000
/* B56688 800DF4E8 10000007 */ b .L800DF508
/* B5668C 800DF4EC 01A16825 */ or $t5, $t5, $at
.L800DF4F0:
/* B56690 800DF4F0 10000005 */ b .L800DF508
/* B56694 800DF4F4 240DFFFF */ li $t5, -1
/* B56698 800DF4F8 440D2000 */ mfc1 $t5, $f4
.L800DF4FC:
/* B5669C 800DF4FC 00000000 */ nop
/* B566A0 800DF500 05A0FFFB */ bltz $t5, .L800DF4F0
/* B566A4 800DF504 00000000 */ nop
.L800DF508:
/* B566A8 800DF508 44CCF800 */ ctc1 $t4, $31
/* B566AC 800DF50C A46D0004 */ sh $t5, 4($v1)
/* B566B0 800DF510 240F0001 */ li $t7, 1
/* B566B4 800DF514 C486000C */ lwc1 $f6, 0xc($a0)
/* B566B8 800DF518 444EF800 */ cfc1 $t6, $31
/* B566BC 800DF51C 44CFF800 */ ctc1 $t7, $31
/* B566C0 800DF520 24840010 */ addiu $a0, $a0, 0x10
/* B566C4 800DF524 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B566C8 800DF528 46003224 */ cvt.w.s $f8, $f6
/* B566CC 800DF52C 444FF800 */ cfc1 $t7, $31
/* B566D0 800DF530 00000000 */ nop
/* B566D4 800DF534 31EF0078 */ andi $t7, $t7, 0x78
/* B566D8 800DF538 51E00013 */ beql $t7, $zero, .L800DF588
/* B566DC 800DF53C 440F4000 */ mfc1 $t7, $f8
/* B566E0 800DF540 44814000 */ mtc1 $at, $f8
/* B566E4 800DF544 240F0001 */ li $t7, 1
/* B566E8 800DF548 46083201 */ sub.s $f8, $f6, $f8
/* B566EC 800DF54C 44CFF800 */ ctc1 $t7, $31
/* B566F0 800DF550 00000000 */ nop
/* B566F4 800DF554 46004224 */ cvt.w.s $f8, $f8
/* B566F8 800DF558 444FF800 */ cfc1 $t7, $31
/* B566FC 800DF55C 00000000 */ nop
/* B56700 800DF560 31EF0078 */ andi $t7, $t7, 0x78
/* B56704 800DF564 15E00005 */ bnez $t7, .L800DF57C
/* B56708 800DF568 00000000 */ nop
/* B5670C 800DF56C 440F4000 */ mfc1 $t7, $f8
/* B56710 800DF570 3C018000 */ lui $at, 0x8000
/* B56714 800DF574 10000007 */ b .L800DF594
/* B56718 800DF578 01E17825 */ or $t7, $t7, $at
.L800DF57C:
/* B5671C 800DF57C 10000005 */ b .L800DF594
/* B56720 800DF580 240FFFFF */ li $t7, -1
/* B56724 800DF584 440F4000 */ mfc1 $t7, $f8
.L800DF588:
/* B56728 800DF588 00000000 */ nop
/* B5672C 800DF58C 05E0FFFB */ bltz $t7, .L800DF57C
/* B56730 800DF590 00000000 */ nop
.L800DF594:
/* B56734 800DF594 44CEF800 */ ctc1 $t6, $31
/* B56738 800DF598 A46F0006 */ sh $t7, 6($v1)
/* B5673C 800DF59C 1482FF76 */ bne $a0, $v0, .L800DF378
/* B56740 800DF5A0 24630008 */ addiu $v1, $v1, 8
/* B56744 800DF5A4 03E00008 */ jr $ra
/* B56748 800DF5A8 27BD0050 */ addiu $sp, $sp, 0x50
@@ -1,15 +0,0 @@
glabel func_800DF5AC
/* B5674C 800DF5AC 00801825 */ move $v1, $a0
/* B56750 800DF5B0 24040008 */ li $a0, 8
/* B56754 800DF5B4 00001025 */ move $v0, $zero
.L800DF5B8:
/* B56758 800DF5B8 24420004 */ addiu $v0, $v0, 4
/* B5675C 800DF5BC A4600002 */ sh $zero, 2($v1)
/* B56760 800DF5C0 A4600004 */ sh $zero, 4($v1)
/* B56764 800DF5C4 A4600006 */ sh $zero, 6($v1)
/* B56768 800DF5C8 24630008 */ addiu $v1, $v1, 8
/* B5676C 800DF5CC 1444FFFA */ bne $v0, $a0, .L800DF5B8
/* B56770 800DF5D0 A460FFF8 */ sh $zero, -8($v1)
/* B56774 800DF5D4 03E00008 */ jr $ra
/* B56778 800DF5D8 00000000 */ nop
@@ -1,24 +0,0 @@
glabel func_800DF5DC
/* B5677C 800DF5DC 3C188013 */ lui $t8, %hi(D_80130228) # $t8, 0x8013
/* B56780 800DF5E0 27180228 */ addiu $t8, %lo(D_80130228) # addiu $t8, $t8, 0x228
/* B56784 800DF5E4 00801825 */ move $v1, $a0
/* B56788 800DF5E8 00057900 */ sll $t7, $a1, 4
/* B5678C 800DF5EC 01F83021 */ addu $a2, $t7, $t8
/* B56790 800DF5F0 24040008 */ li $a0, 8
/* B56794 800DF5F4 00001025 */ move $v0, $zero
.L800DF5F8:
/* B56798 800DF5F8 84D90000 */ lh $t9, ($a2)
/* B5679C 800DF5FC 24420004 */ addiu $v0, $v0, 4
/* B567A0 800DF600 24630008 */ addiu $v1, $v1, 8
/* B567A4 800DF604 A479FFF8 */ sh $t9, -8($v1)
/* B567A8 800DF608 84C80002 */ lh $t0, 2($a2)
/* B567AC 800DF60C 24C60008 */ addiu $a2, $a2, 8
/* B567B0 800DF610 A468FFFA */ sh $t0, -6($v1)
/* B567B4 800DF614 84C9FFFC */ lh $t1, -4($a2)
/* B567B8 800DF618 A469FFFC */ sh $t1, -4($v1)
/* B567BC 800DF61C 84CAFFFE */ lh $t2, -2($a2)
/* B567C0 800DF620 1444FFF5 */ bne $v0, $a0, .L800DF5F8
/* B567C4 800DF624 A46AFFFE */ sh $t2, -2($v1)
/* B567C8 800DF628 03E00008 */ jr $ra
/* B567CC 800DF62C 00000000 */ nop
@@ -1,25 +0,0 @@
glabel func_800DF630
/* B567D0 800DF630 00057900 */ sll $t7, $a1, 4
/* B567D4 800DF634 3C198013 */ lui $t9, %hi(D_80130328) # $t9, 0x8013
/* B567D8 800DF638 27390328 */ addiu $t9, %lo(D_80130328) # addiu $t9, $t9, 0x328
/* B567DC 800DF63C 25F8FFF0 */ addiu $t8, $t7, -0x10
/* B567E0 800DF640 00801825 */ move $v1, $a0
/* B567E4 800DF644 24040008 */ li $a0, 8
/* B567E8 800DF648 03193021 */ addu $a2, $t8, $t9
/* B567EC 800DF64C 00001025 */ move $v0, $zero
.L800DF650:
/* B567F0 800DF650 84C80000 */ lh $t0, ($a2)
/* B567F4 800DF654 24420004 */ addiu $v0, $v0, 4
/* B567F8 800DF658 24630008 */ addiu $v1, $v1, 8
/* B567FC 800DF65C A468FFF8 */ sh $t0, -8($v1)
/* B56800 800DF660 84C90002 */ lh $t1, 2($a2)
/* B56804 800DF664 24C60008 */ addiu $a2, $a2, 8
/* B56808 800DF668 A469FFFA */ sh $t1, -6($v1)
/* B5680C 800DF66C 84CAFFFC */ lh $t2, -4($a2)
/* B56810 800DF670 A46AFFFC */ sh $t2, -4($v1)
/* B56814 800DF674 84CBFFFE */ lh $t3, -2($a2)
/* B56818 800DF678 1444FFF5 */ bne $v0, $a0, .L800DF650
/* B5681C 800DF67C A46BFFFE */ sh $t3, -2($v1)
/* B56820 800DF680 03E00008 */ jr $ra
/* B56824 800DF684 00000000 */ nop
@@ -1,88 +0,0 @@
glabel func_800DF688
/* B56828 800DF688 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B5682C 800DF68C AFBF0014 */ sw $ra, 0x14($sp)
/* B56830 800DF690 AFA40018 */ sw $a0, 0x18($sp)
/* B56834 800DF694 14A00007 */ bnez $a1, .L800DF6B4
/* B56838 800DF698 00A03825 */ move $a3, $a1
/* B5683C 800DF69C 14C00005 */ bnez $a2, .L800DF6B4
/* B56840 800DF6A0 00000000 */ nop
/* B56844 800DF6A4 0C037D77 */ jal func_800DF5DC
/* B56848 800DF6A8 00002825 */ move $a1, $zero
/* B5684C 800DF6AC 10000040 */ b .L800DF7B0
/* B56850 800DF6B0 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF6B4:
/* B56854 800DF6B4 14C00005 */ bnez $a2, .L800DF6CC
/* B56858 800DF6B8 8FA40018 */ lw $a0, 0x18($sp)
/* B5685C 800DF6BC 0C037D77 */ jal func_800DF5DC
/* B56860 800DF6C0 00E02825 */ move $a1, $a3
/* B56864 800DF6C4 1000003A */ b .L800DF7B0
/* B56868 800DF6C8 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF6CC:
/* B5686C 800DF6CC 14E00006 */ bnez $a3, .L800DF6E8
/* B56870 800DF6D0 00002825 */ move $a1, $zero
/* B56874 800DF6D4 8FA40018 */ lw $a0, 0x18($sp)
/* B56878 800DF6D8 0C037D8C */ jal func_800DF630
/* B5687C 800DF6DC 00C02825 */ move $a1, $a2
/* B56880 800DF6E0 10000033 */ b .L800DF7B0
/* B56884 800DF6E4 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF6E8:
/* B56888 800DF6E8 00C07025 */ move $t6, $a2
/* B5688C 800DF6EC 000E7900 */ sll $t7, $t6, 4
/* B56890 800DF6F0 3C198013 */ lui $t9, %hi(D_80130328) # $t9, 0x8013
/* B56894 800DF6F4 3C0A8013 */ lui $t2, %hi(D_80130228) # $t2, 0x8013
/* B56898 800DF6F8 254A0228 */ addiu $t2, %lo(D_80130228) # addiu $t2, $t2, 0x228
/* B5689C 800DF6FC 27390328 */ addiu $t9, %lo(D_80130328) # addiu $t9, $t9, 0x328
/* B568A0 800DF700 25F8FFF0 */ addiu $t8, $t7, -0x10
/* B568A4 800DF704 00074900 */ sll $t1, $a3, 4
/* B568A8 800DF708 012A2021 */ addu $a0, $t1, $t2
/* B568AC 800DF70C 03191821 */ addu $v1, $t8, $t9
/* B568B0 800DF710 24060008 */ li $a2, 8
/* B568B4 800DF714 8FA20018 */ lw $v0, 0x18($sp)
.L800DF718:
/* B568B8 800DF718 846B0000 */ lh $t3, ($v1)
/* B568BC 800DF71C 848C0000 */ lh $t4, ($a0)
/* B568C0 800DF720 24A50004 */ addiu $a1, $a1, 4
/* B568C4 800DF724 24420008 */ addiu $v0, $v0, 8
/* B568C8 800DF728 016C6821 */ addu $t5, $t3, $t4
/* B568CC 800DF72C 05A10003 */ bgez $t5, .L800DF73C
/* B568D0 800DF730 000D7043 */ sra $t6, $t5, 1
/* B568D4 800DF734 25A10001 */ addiu $at, $t5, 1
/* B568D8 800DF738 00017043 */ sra $t6, $at, 1
.L800DF73C:
/* B568DC 800DF73C A44EFFF8 */ sh $t6, -8($v0)
/* B568E0 800DF740 84980002 */ lh $t8, 2($a0)
/* B568E4 800DF744 846F0002 */ lh $t7, 2($v1)
/* B568E8 800DF748 24630008 */ addiu $v1, $v1, 8
/* B568EC 800DF74C 24840008 */ addiu $a0, $a0, 8
/* B568F0 800DF750 01F8C821 */ addu $t9, $t7, $t8
/* B568F4 800DF754 07210003 */ bgez $t9, .L800DF764
/* B568F8 800DF758 00194043 */ sra $t0, $t9, 1
/* B568FC 800DF75C 27210001 */ addiu $at, $t9, 1
/* B56900 800DF760 00014043 */ sra $t0, $at, 1
.L800DF764:
/* B56904 800DF764 A448FFFA */ sh $t0, -6($v0)
/* B56908 800DF768 848AFFFC */ lh $t2, -4($a0)
/* B5690C 800DF76C 8469FFFC */ lh $t1, -4($v1)
/* B56910 800DF770 012A5821 */ addu $t3, $t1, $t2
/* B56914 800DF774 05610003 */ bgez $t3, .L800DF784
/* B56918 800DF778 000B6043 */ sra $t4, $t3, 1
/* B5691C 800DF77C 25610001 */ addiu $at, $t3, 1
/* B56920 800DF780 00016043 */ sra $t4, $at, 1
.L800DF784:
/* B56924 800DF784 A44CFFFC */ sh $t4, -4($v0)
/* B56928 800DF788 848EFFFE */ lh $t6, -2($a0)
/* B5692C 800DF78C 846DFFFE */ lh $t5, -2($v1)
/* B56930 800DF790 01AE7821 */ addu $t7, $t5, $t6
/* B56934 800DF794 05E10003 */ bgez $t7, .L800DF7A4
/* B56938 800DF798 000FC043 */ sra $t8, $t7, 1
/* B5693C 800DF79C 25E10001 */ addiu $at, $t7, 1
/* B56940 800DF7A0 0001C043 */ sra $t8, $at, 1
.L800DF7A4:
/* B56944 800DF7A4 14A6FFDC */ bne $a1, $a2, .L800DF718
/* B56948 800DF7A8 A458FFFE */ sh $t8, -2($v0)
/* B5694C 800DF7AC 8FBF0014 */ lw $ra, 0x14($sp)
.L800DF7B0:
/* B56950 800DF7B0 27BD0018 */ addiu $sp, $sp, 0x18
/* B56954 800DF7B4 03E00008 */ jr $ra
/* B56958 800DF7B8 00000000 */ nop
@@ -1,4 +0,0 @@
glabel func_800DF7BC
/* B5695C 800DF7BC 03E00008 */ jr $ra
/* B56960 800DF7C0 AFA40000 */ sw $a0, ($sp)
@@ -1,57 +0,0 @@
glabel func_800DF7C4
/* B56964 800DF7C4 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B56968 800DF7C8 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
/* B5696C 800DF7CC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* B56970 800DF7D0 846E2848 */ lh $t6, 0x2848($v1)
/* B56974 800DF7D4 24010002 */ li $at, 2
/* B56978 800DF7D8 AFBF0024 */ sw $ra, 0x24($sp)
/* B5697C 800DF7DC AFB30020 */ sw $s3, 0x20($sp)
/* B56980 800DF7E0 AFB2001C */ sw $s2, 0x1c($sp)
/* B56984 800DF7E4 AFB10018 */ sw $s1, 0x18($sp)
/* B56988 800DF7E8 15C10003 */ bne $t6, $at, .L800DF7F8
/* B5698C 800DF7EC AFB00014 */ sw $s0, 0x14($sp)
/* B56990 800DF7F0 10000002 */ b .L800DF7FC
/* B56994 800DF7F4 24120002 */ li $s2, 2
.L800DF7F8:
/* B56998 800DF7F8 24120001 */ li $s2, 1
.L800DF7FC:
/* B5699C 800DF7FC 80620001 */ lb $v0, 1($v1)
/* B569A0 800DF800 00009825 */ move $s3, $zero
/* B569A4 800DF804 5840001A */ blezl $v0, .L800DF870
/* B569A8 800DF808 8FBF0024 */ lw $ra, 0x24($sp)
.L800DF80C:
/* B569AC 800DF80C 1A400013 */ blez $s2, .L800DF85C
/* B569B0 800DF810 00008025 */ move $s0, $zero
/* B569B4 800DF814 00137880 */ sll $t7, $s3, 2
/* B569B8 800DF818 01F37823 */ subu $t7, $t7, $s3
/* B569BC 800DF81C 000F7880 */ sll $t7, $t7, 2
/* B569C0 800DF820 01F37823 */ subu $t7, $t7, $s3
/* B569C4 800DF824 000F78C0 */ sll $t7, $t7, 3
/* B569C8 800DF828 01F37821 */ addu $t7, $t7, $s3
/* B569CC 800DF82C 000F78C0 */ sll $t7, $t7, 3
/* B569D0 800DF830 3C198017 */ lui $t9, %hi(gAudioContext) # $t9, 0x8017
/* B569D4 800DF834 2739F180 */ addiu $t9, %lo(gAudioContext) # addiu $t9, $t9, -0xe80
/* B569D8 800DF838 25F80018 */ addiu $t8, $t7, 0x18
/* B569DC 800DF83C 03198821 */ addu $s1, $t8, $t9
.L800DF840:
/* B569E0 800DF840 0C037DEF */ jal func_800DF7BC
/* B569E4 800DF844 02202025 */ move $a0, $s1
/* B569E8 800DF848 26100001 */ addiu $s0, $s0, 1
/* B569EC 800DF84C 1612FFFC */ bne $s0, $s2, .L800DF840
/* B569F0 800DF850 00000000 */ nop
/* B569F4 800DF854 3C028017 */ lui $v0, %hi(gAudioContext+0x1) # $v0, 0x8017
/* B569F8 800DF858 8042F181 */ lb $v0, %lo(gAudioContext+0x1)($v0)
.L800DF85C:
/* B569FC 800DF85C 26730001 */ addiu $s3, $s3, 1
/* B56A00 800DF860 0262082A */ slt $at, $s3, $v0
/* B56A04 800DF864 1420FFE9 */ bnez $at, .L800DF80C
/* B56A08 800DF868 00000000 */ nop
/* B56A0C 800DF86C 8FBF0024 */ lw $ra, 0x24($sp)
.L800DF870:
/* B56A10 800DF870 8FB00014 */ lw $s0, 0x14($sp)
/* B56A14 800DF874 8FB10018 */ lw $s1, 0x18($sp)
/* B56A18 800DF878 8FB2001C */ lw $s2, 0x1c($sp)
/* B56A1C 800DF87C 8FB30020 */ lw $s3, 0x20($sp)
/* B56A20 800DF880 03E00008 */ jr $ra
/* B56A24 800DF884 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,30 +0,0 @@
glabel func_800DF888
/* B56A28 800DF888 3C068017 */ lui $a2, %hi(gAudioContext) # $a2, 0x8017
/* B56A2C 800DF88C 24C6F180 */ addiu $a2, %lo(gAudioContext) # addiu $a2, $a2, -0xe80
/* B56A30 800DF890 8CC228A8 */ lw $v0, 0x28a8($a2)
/* B56A34 800DF894 84CE2852 */ lh $t6, 0x2852($a2)
/* B56A38 800DF898 00002825 */ move $a1, $zero
/* B56A3C 800DF89C 00027840 */ sll $t7, $v0, 1
/* B56A40 800DF8A0 0002C880 */ sll $t9, $v0, 2
/* B56A44 800DF8A4 00CFC021 */ addu $t8, $a2, $t7
/* B56A48 800DF8A8 00D92021 */ addu $a0, $a2, $t9
/* B56A4C 800DF8AC 24020B00 */ li $v0, 2816
/* B56A50 800DF8B0 A70E2974 */ sh $t6, 0x2974($t8)
.L800DF8B4:
/* B56A54 800DF8B4 8C882968 */ lw $t0, 0x2968($a0)
/* B56A58 800DF8B8 01054821 */ addu $t1, $t0, $a1
/* B56A5C 800DF8BC A5200000 */ sh $zero, ($t1)
/* B56A60 800DF8C0 8C8A2968 */ lw $t2, 0x2968($a0)
/* B56A64 800DF8C4 01455821 */ addu $t3, $t2, $a1
/* B56A68 800DF8C8 A5600002 */ sh $zero, 2($t3)
/* B56A6C 800DF8CC 8C8C2968 */ lw $t4, 0x2968($a0)
/* B56A70 800DF8D0 01856821 */ addu $t5, $t4, $a1
/* B56A74 800DF8D4 A5A00004 */ sh $zero, 4($t5)
/* B56A78 800DF8D8 8C8F2968 */ lw $t7, 0x2968($a0)
/* B56A7C 800DF8DC 01E57021 */ addu $t6, $t7, $a1
/* B56A80 800DF8E0 24A50008 */ addiu $a1, $a1, 8
/* B56A84 800DF8E4 14A2FFF3 */ bne $a1, $v0, .L800DF8B4
/* B56A88 800DF8E8 A5C00006 */ sh $zero, 6($t6)
/* B56A8C 800DF8EC 03E00008 */ jr $ra
/* B56A90 800DF8F0 00000000 */ nop
@@ -1,230 +0,0 @@
.late_rodata
glabel jtbl_801493FC
.word L800DFB54
.word L800DFB18
.word L800DFAB0
.word L800DF9DC
.word L800DF954
.text
glabel func_800DF8F4
/* B56A94 800DF8F4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* B56A98 800DF8F8 AFB10018 */ sw $s1, 0x18($sp)
/* B56A9C 800DF8FC 3C118017 */ lui $s1, %hi(gAudioContext) # $s1, 0x8017
/* B56AA0 800DF900 2631F180 */ addiu $s1, %lo(gAudioContext) # addiu $s1, $s1, -0xe80
/* B56AA4 800DF904 862E2848 */ lh $t6, 0x2848($s1)
/* B56AA8 800DF908 24010002 */ li $at, 2
/* B56AAC 800DF90C AFBF001C */ sw $ra, 0x1c($sp)
/* B56AB0 800DF910 15C10004 */ bne $t6, $at, .L800DF924
/* B56AB4 800DF914 AFB00014 */ sw $s0, 0x14($sp)
/* B56AB8 800DF918 240F0002 */ li $t7, 2
/* B56ABC 800DF91C 10000003 */ b .L800DF92C
/* B56AC0 800DF920 AFAF0024 */ sw $t7, 0x24($sp)
.L800DF924:
/* B56AC4 800DF924 24180001 */ li $t8, 1
/* B56AC8 800DF928 AFB80024 */ sw $t8, 0x24($sp)
.L800DF92C:
/* B56ACC 800DF92C 92393518 */ lbu $t9, 0x3518($s1)
/* B56AD0 800DF930 2728FFFF */ addiu $t0, $t9, -1
/* B56AD4 800DF934 2D010005 */ sltiu $at, $t0, 5
/* B56AD8 800DF938 102000A3 */ beqz $at, .L800DFBC8
/* B56ADC 800DF93C 00084080 */ sll $t0, $t0, 2
/* B56AE0 800DF940 3C018015 */ lui $at, %hi(jtbl_801493FC)
/* B56AE4 800DF944 00280821 */ addu $at, $at, $t0
/* B56AE8 800DF948 8C2893FC */ lw $t0, %lo(jtbl_801493FC)($at)
/* B56AEC 800DF94C 01000008 */ jr $t0
/* B56AF0 800DF950 00000000 */ nop
glabel L800DF954
/* B56AF4 800DF954 8629285C */ lh $t1, 0x285c($s1)
/* B56AF8 800DF958 00002825 */ move $a1, $zero
/* B56AFC 800DF95C 5920000E */ blezl $t1, .L800DF998
/* B56B00 800DF960 8FAB0024 */ lw $t3, 0x24($sp)
/* B56B04 800DF964 3C108017 */ lui $s0, %hi(gAudioContext+0x3530) # $s0, 0x8017
/* B56B08 800DF968 261026B0 */ addiu $s0, %lo(gAudioContext+0x3530) # addiu $s0, $s0, 0x26b0
/* B56B0C 800DF96C 02002025 */ move $a0, $s0
.L800DF970:
/* B56B10 800DF970 0C03A6D1 */ jal Audio_SequencePlayerDisableAsFinished
/* B56B14 800DF974 AFA5002C */ sw $a1, 0x2c($sp)
/* B56B18 800DF978 8FA5002C */ lw $a1, 0x2c($sp)
/* B56B1C 800DF97C 862A285C */ lh $t2, 0x285c($s1)
/* B56B20 800DF980 26100160 */ addiu $s0, $s0, 0x160
/* B56B24 800DF984 24A50001 */ addiu $a1, $a1, 1
/* B56B28 800DF988 00AA082A */ slt $at, $a1, $t2
/* B56B2C 800DF98C 5420FFF8 */ bnezl $at, .L800DF970
/* B56B30 800DF990 02002025 */ move $a0, $s0
/* B56B34 800DF994 8FAB0024 */ lw $t3, 0x24($sp)
.L800DF998:
/* B56B38 800DF998 240C0002 */ li $t4, 2
/* B56B3C 800DF99C 92223518 */ lbu $v0, 0x3518($s1)
/* B56B40 800DF9A0 018B001A */ div $zero, $t4, $t3
/* B56B44 800DF9A4 00006812 */ mflo $t5
/* B56B48 800DF9A8 244EFFFF */ addiu $t6, $v0, -1
/* B56B4C 800DF9AC 15600002 */ bnez $t3, .L800DF9B8
/* B56B50 800DF9B0 00000000 */ nop
/* B56B54 800DF9B4 0007000D */ break 7
.L800DF9B8:
/* B56B58 800DF9B8 2401FFFF */ li $at, -1
/* B56B5C 800DF9BC 15610004 */ bne $t3, $at, .L800DF9D0
/* B56B60 800DF9C0 3C018000 */ lui $at, 0x8000
/* B56B64 800DF9C4 15810002 */ bne $t4, $at, .L800DF9D0
/* B56B68 800DF9C8 00000000 */ nop
/* B56B6C 800DF9CC 0006000D */ break 6
.L800DF9D0:
/* B56B70 800DF9D0 AE2D351C */ sw $t5, 0x351c($s1)
/* B56B74 800DF9D4 1000007C */ b .L800DFBC8
/* B56B78 800DF9D8 A22E3518 */ sb $t6, 0x3518($s1)
glabel L800DF9DC
/* B56B7C 800DF9DC 8E22351C */ lw $v0, 0x351c($s1)
/* B56B80 800DF9E0 10400005 */ beqz $v0, .L800DF9F8
/* B56B84 800DF9E4 244FFFFF */ addiu $t7, $v0, -1
/* B56B88 800DF9E8 0C037DF1 */ jal func_800DF7C4
/* B56B8C 800DF9EC AE2F351C */ sw $t7, 0x351c($s1)
/* B56B90 800DF9F0 10000076 */ b .L800DFBCC
/* B56B94 800DF9F4 922F3518 */ lbu $t7, 0x3518($s1)
.L800DF9F8:
/* B56B98 800DF9F8 8E242894 */ lw $a0, 0x2894($s1)
/* B56B9C 800DF9FC 00002825 */ move $a1, $zero
/* B56BA0 800DFA00 5880001A */ blezl $a0, .L800DFA6C
/* B56BA4 800DFA04 8FAF0024 */ lw $t7, 0x24($sp)
/* B56BA8 800DFA08 00001825 */ move $v1, $zero
.L800DFA0C:
/* B56BAC 800DFA0C 8E38352C */ lw $t8, 0x352c($s1)
/* B56BB0 800DFA10 24A50001 */ addiu $a1, $a1, 1
/* B56BB4 800DFA14 03031021 */ addu $v0, $t8, $v1
/* B56BB8 800DFA18 8C5900C0 */ lw $t9, 0xc0($v0)
/* B56BBC 800DFA1C 001947C2 */ srl $t0, $t9, 0x1f
/* B56BC0 800DFA20 5100000F */ beql $t0, $zero, .L800DFA60
/* B56BC4 800DFA24 00A4082A */ slt $at, $a1, $a0
/* B56BC8 800DFA28 90490070 */ lbu $t1, 0x70($v0)
/* B56BCC 800DFA2C 312A000F */ andi $t2, $t1, 0xf
/* B56BD0 800DFA30 5140000B */ beql $t2, $zero, .L800DFA60
/* B56BD4 800DFA34 00A4082A */ slt $at, $a1, $a0
/* B56BD8 800DFA38 C6242864 */ lwc1 $f4, 0x2864($s1)
/* B56BDC 800DFA3C E444007C */ swc1 $f4, 0x7c($v0)
/* B56BE0 800DFA40 8E2C352C */ lw $t4, 0x352c($s1)
/* B56BE4 800DFA44 01831021 */ addu $v0, $t4, $v1
/* B56BE8 800DFA48 904B0070 */ lbu $t3, 0x70($v0)
/* B56BEC 800DFA4C 316DFFEF */ andi $t5, $t3, 0xffef
/* B56BF0 800DFA50 35AE0010 */ ori $t6, $t5, 0x10
/* B56BF4 800DFA54 A04E0070 */ sb $t6, 0x70($v0)
/* B56BF8 800DFA58 8E242894 */ lw $a0, 0x2894($s1)
/* B56BFC 800DFA5C 00A4082A */ slt $at, $a1, $a0
.L800DFA60:
/* B56C00 800DFA60 1420FFEA */ bnez $at, .L800DFA0C
/* B56C04 800DFA64 246300E0 */ addiu $v1, $v1, 0xe0
/* B56C08 800DFA68 8FAF0024 */ lw $t7, 0x24($sp)
.L800DFA6C:
/* B56C0C 800DFA6C 24180008 */ li $t8, 8
/* B56C10 800DFA70 92223518 */ lbu $v0, 0x3518($s1)
/* B56C14 800DFA74 030F001A */ div $zero, $t8, $t7
/* B56C18 800DFA78 0000C812 */ mflo $t9
/* B56C1C 800DFA7C 2448FFFF */ addiu $t0, $v0, -1
/* B56C20 800DFA80 15E00002 */ bnez $t7, .L800DFA8C
/* B56C24 800DFA84 00000000 */ nop
/* B56C28 800DFA88 0007000D */ break 7
.L800DFA8C:
/* B56C2C 800DFA8C 2401FFFF */ li $at, -1
/* B56C30 800DFA90 15E10004 */ bne $t7, $at, .L800DFAA4
/* B56C34 800DFA94 3C018000 */ lui $at, 0x8000
/* B56C38 800DFA98 17010002 */ bne $t8, $at, .L800DFAA4
/* B56C3C 800DFA9C 00000000 */ nop
/* B56C40 800DFAA0 0006000D */ break 6
.L800DFAA4:
/* B56C44 800DFAA4 AE39351C */ sw $t9, 0x351c($s1)
/* B56C48 800DFAA8 10000047 */ b .L800DFBC8
/* B56C4C 800DFAAC A2283518 */ sb $t0, 0x3518($s1)
glabel L800DFAB0
/* B56C50 800DFAB0 8E22351C */ lw $v0, 0x351c($s1)
/* B56C54 800DFAB4 8FAA0024 */ lw $t2, 0x24($sp)
/* B56C58 800DFAB8 240C0002 */ li $t4, 2
/* B56C5C 800DFABC 10400006 */ beqz $v0, .L800DFAD8
/* B56C60 800DFAC0 00000000 */ nop
/* B56C64 800DFAC4 2449FFFF */ addiu $t1, $v0, -1
/* B56C68 800DFAC8 0C037DF1 */ jal func_800DF7C4
/* B56C6C 800DFACC AE29351C */ sw $t1, 0x351c($s1)
/* B56C70 800DFAD0 1000003E */ b .L800DFBCC
/* B56C74 800DFAD4 922F3518 */ lbu $t7, 0x3518($s1)
.L800DFAD8:
/* B56C78 800DFAD8 018A001A */ div $zero, $t4, $t2
/* B56C7C 800DFADC 92223518 */ lbu $v0, 0x3518($s1)
/* B56C80 800DFAE0 00005812 */ mflo $t3
/* B56C84 800DFAE4 AE2B351C */ sw $t3, 0x351c($s1)
/* B56C88 800DFAE8 15400002 */ bnez $t2, .L800DFAF4
/* B56C8C 800DFAEC 00000000 */ nop
/* B56C90 800DFAF0 0007000D */ break 7
.L800DFAF4:
/* B56C94 800DFAF4 2401FFFF */ li $at, -1
/* B56C98 800DFAF8 15410004 */ bne $t2, $at, .L800DFB0C
/* B56C9C 800DFAFC 3C018000 */ lui $at, 0x8000
/* B56CA0 800DFB00 15810002 */ bne $t4, $at, .L800DFB0C
/* B56CA4 800DFB04 00000000 */ nop
/* B56CA8 800DFB08 0006000D */ break 6
.L800DFB0C:
/* B56CAC 800DFB0C 244DFFFF */ addiu $t5, $v0, -1
/* B56CB0 800DFB10 1000002D */ b .L800DFBC8
/* B56CB4 800DFB14 A22D3518 */ sb $t5, 0x3518($s1)
glabel L800DFB18
/* B56CB8 800DFB18 0C037E22 */ jal func_800DF888
/* B56CBC 800DFB1C 00000000 */ nop
/* B56CC0 800DFB20 8E22351C */ lw $v0, 0x351c($s1)
/* B56CC4 800DFB24 10400003 */ beqz $v0, .L800DFB34
/* B56CC8 800DFB28 244EFFFF */ addiu $t6, $v0, -1
/* B56CCC 800DFB2C 10000026 */ b .L800DFBC8
/* B56CD0 800DFB30 AE2E351C */ sw $t6, 0x351c($s1)
.L800DFB34:
/* B56CD4 800DFB34 92223518 */ lbu $v0, 0x3518($s1)
/* B56CD8 800DFB38 2458FFFF */ addiu $t8, $v0, -1
/* B56CDC 800DFB3C 0C03832F */ jal func_800E0CBC
/* B56CE0 800DFB40 A2383518 */ sb $t8, 0x3518($s1)
/* B56CE4 800DFB44 0C038452 */ jal func_800E1148
/* B56CE8 800DFB48 00000000 */ nop
/* B56CEC 800DFB4C 1000001F */ b .L800DFBCC
/* B56CF0 800DFB50 922F3518 */ lbu $t7, 0x3518($s1)
glabel L800DFB54
/* B56CF4 800DFB54 0C037EFE */ jal func_800DFBF8
/* B56CF8 800DFB58 00000000 */ nop
/* B56CFC 800DFB5C 3C0F8017 */ lui $t7, %hi(gAudioContext)
/* B56D00 800DFB60 25E3F180 */ addiu $v1, $t7, %lo(gAudioContext)
/* B56D04 800DFB64 3C078017 */ lui $a3, %hi(gAudioContext+0xc) # $a3, 0x8017
/* B56D08 800DFB68 A2203518 */ sb $zero, 0x3518($s1)
/* B56D0C 800DFB6C 24E7F18C */ addiu $a3, %lo(gAudioContext+0xc) # addiu $a3, $a3, -0xe74
/* B56D10 800DFB70 00603025 */ move $a2, $v1
/* B56D14 800DFB74 24040B00 */ li $a0, 2816
.L800DFB78:
/* B56D18 800DFB78 86392850 */ lh $t9, 0x2850($s1)
/* B56D1C 800DFB7C 00001025 */ move $v0, $zero
/* B56D20 800DFB80 A4D92974 */ sh $t9, 0x2974($a2)
.L800DFB84:
/* B56D24 800DFB84 8C682968 */ lw $t0, 0x2968($v1)
/* B56D28 800DFB88 01024821 */ addu $t1, $t0, $v0
/* B56D2C 800DFB8C A5200000 */ sh $zero, ($t1)
/* B56D30 800DFB90 8C6C2968 */ lw $t4, 0x2968($v1)
/* B56D34 800DFB94 01825021 */ addu $t2, $t4, $v0
/* B56D38 800DFB98 A5400002 */ sh $zero, 2($t2)
/* B56D3C 800DFB9C 8C6B2968 */ lw $t3, 0x2968($v1)
/* B56D40 800DFBA0 01626821 */ addu $t5, $t3, $v0
/* B56D44 800DFBA4 A5A00004 */ sh $zero, 4($t5)
/* B56D48 800DFBA8 8C6E2968 */ lw $t6, 0x2968($v1)
/* B56D4C 800DFBAC 01C2C021 */ addu $t8, $t6, $v0
/* B56D50 800DFBB0 24420008 */ addiu $v0, $v0, 8
/* B56D54 800DFBB4 1444FFF3 */ bne $v0, $a0, .L800DFB84
/* B56D58 800DFBB8 A7000006 */ sh $zero, 6($t8)
/* B56D5C 800DFBBC 24630004 */ addiu $v1, $v1, 4
/* B56D60 800DFBC0 1467FFED */ bne $v1, $a3, .L800DFB78
/* B56D64 800DFBC4 24C60002 */ addiu $a2, $a2, 2
.L800DFBC8:
/* B56D68 800DFBC8 922F3518 */ lbu $t7, 0x3518($s1)
.L800DFBCC:
/* B56D6C 800DFBCC 8FBF001C */ lw $ra, 0x1c($sp)
/* B56D70 800DFBD0 24020001 */ li $v0, 1
/* B56D74 800DFBD4 29E10003 */ slti $at, $t7, 3
/* B56D78 800DFBD8 10200003 */ beqz $at, .L800DFBE8
/* B56D7C 800DFBDC 00000000 */ nop
/* B56D80 800DFBE0 10000001 */ b .L800DFBE8
/* B56D84 800DFBE4 00001025 */ move $v0, $zero
.L800DFBE8:
/* B56D88 800DFBE8 8FB00014 */ lw $s0, 0x14($sp)
/* B56D8C 800DFBEC 8FB10018 */ lw $s1, 0x18($sp)
/* B56D90 800DFBF0 03E00008 */ jr $ra
/* B56D94 800DFBF4 27BD0030 */ addiu $sp, $sp, 0x30
@@ -9,8 +9,8 @@ glabel func_800DFBF8
/* B56DA0 800DFC00 3C168017 */ lui $s6, %hi(gAudioContext) # $s6, 0x8017
/* B56DA4 800DFC04 26D6F180 */ addiu $s6, %lo(gAudioContext) # addiu $s6, $s6, -0xe80
/* B56DA8 800DFC08 92CE3519 */ lbu $t6, 0x3519($s6)
/* B56DAC 800DFC0C 3C188013 */ lui $t8, %hi(D_801337C8) # $t8, 0x8013
/* B56DB0 800DFC10 271837C8 */ addiu $t8, %lo(D_801337C8) # addiu $t8, $t8, 0x37c8
/* B56DAC 800DFC0C 3C188013 */ lui $t8, %hi(gAudioSessionPresets) # $t8, 0x8013
/* B56DB0 800DFC10 271837C8 */ addiu $t8, %lo(gAudioSessionPresets) # addiu $t8, $t8, 0x37c8
/* B56DB4 800DFC14 000E78C0 */ sll $t7, $t6, 3
/* B56DB8 800DFC18 01EE7823 */ subu $t7, $t7, $t6
/* B56DBC 800DFC1C 000F78C0 */ sll $t7, $t7, 3
@@ -120,10 +120,10 @@ glabel func_800DFBF8
/* B56F4C 800DFDAC A6D9285C */ sh $t9, 0x285c($s6)
.L800DFDB0:
/* B56F50 800DFDB0 950A0014 */ lhu $t2, 0x14($t0)
/* B56F54 800DFDB4 3C0B8015 */ lui $t3, %hi(D_8014A6C0+2) # $t3, 0x8015
/* B56F54 800DFDB4 3C0B8015 */ lui $t3, %hi(gTatumsPerBeat) # $t3, 0x8015
/* B56F58 800DFDB8 3C018015 */ lui $at, %hi(D_80149410)
/* B56F5C 800DFDBC A6CA0002 */ sh $t2, 2($s6)
/* B56F60 800DFDC0 856BA6C2 */ lh $t3, %lo(D_8014A6C0+2)($t3)
/* B56F60 800DFDC0 856BA6C2 */ lh $t3, %lo(gTatumsPerBeat)($t3)
/* B56F64 800DFDC4 C4329410 */ lwc1 $f18, %lo(D_80149410)($at)
/* B56F68 800DFDC8 C6D02960 */ lwc1 $f16, 0x2960($s6)
/* B56F6C 800DFDCC 448B2000 */ mtc1 $t3, $f4
@@ -281,7 +281,7 @@ glabel func_800DFBF8
/* B571B4 800E0014 8C4F002C */ lw $t7, 0x2c($v0)
/* B571B8 800E0018 0C037A07 */ jal Audio_TemporaryPoolsInit
/* B571BC 800E001C AECF3434 */ sw $t7, 0x3434($s6)
/* B571C0 800E0020 0C0377E0 */ jal func_800DDF80
/* B571C0 800E0020 0C0377E0 */ jal Audio_ResetLoadStatus
/* B571C4 800E0024 00000000 */ nop
/* B571C8 800E0028 8EC52894 */ lw $a1, 0x2894($s6)
/* B571CC 800E002C 3C138017 */ lui $s3, %hi(gAudioContext+0x29c0) # $s3, 0x8017
@@ -312,7 +312,7 @@ glabel func_800DFBF8
.L800E0090:
/* B57230 800E0090 8EC52890 */ lw $a1, 0x2890($s6)
/* B57234 800E0094 02602025 */ move $a0, $s3
/* B57238 800E0098 0C0378D1 */ jal func_800DE344
/* B57238 800E0098 0C0378D1 */ jal Audio_AllocDmaMemoryZeroed
/* B5723C 800E009C 000528C0 */ sll $a1, $a1, 3
/* B57240 800E00A0 26100004 */ addiu $s0, $s0, 4
/* B57244 800E00A4 1611FFFA */ bne $s0, $s1, .L800E0090
@@ -504,7 +504,7 @@ glabel func_800DFBF8
/* B57508 800E0368 51A0000F */ beql $t5, $zero, .L800E03A8
/* B5750C 800E036C AE400270 */ sw $zero, 0x270($s2)
/* B57510 800E0370 02602025 */ move $a0, $s3
/* B57514 800E0374 0C0378D1 */ jal func_800DE344
/* B57514 800E0374 0C0378D1 */ jal Audio_AllocDmaMemoryZeroed
/* B57518 800E0378 24050040 */ li $a1, 64
/* B5751C 800E037C AE420278 */ sw $v0, 0x278($s2)
/* B57520 800E0380 02602025 */ move $a0, $s3
@@ -523,7 +523,7 @@ glabel func_800DFBF8
/* B5754C 800E03AC 5180000F */ beql $t4, $zero, .L800E03EC
/* B57550 800E03B0 AE400274 */ sw $zero, 0x274($s2)
/* B57554 800E03B4 02602025 */ move $a0, $s3
/* B57558 800E03B8 0C0378D1 */ jal func_800DE344
/* B57558 800E03B8 0C0378D1 */ jal Audio_AllocDmaMemoryZeroed
/* B5755C 800E03BC 24050040 */ li $a1, 64
/* B57560 800E03C0 AE42027C */ sw $v0, 0x27c($s2)
/* B57564 800E03C4 02602025 */ move $a0, $s3
@@ -1,28 +0,0 @@
glabel func_800E04E8
/* B57688 800E04E8 3C038017 */ lui $v1, %hi(gAudioContext+0x2d5c) # $v1, 0x8017
/* B5768C 800E04EC 8C631EDC */ lw $v1, %lo(gAudioContext+0x2d5c)($v1)
/* B57690 800E04F0 00A03025 */ move $a2, $a1
/* B57694 800E04F4 3C058017 */ lui $a1, %hi(gAudioContext) # $a1, 0x8017
/* B57698 800E04F8 1860000E */ blez $v1, .L800E0534
/* B5769C 800E04FC 00001025 */ move $v0, $zero
/* B576A0 800E0500 24A5F180 */ addiu $a1, %lo(gAudioContext) # addiu $a1, $a1, -0xe80
.L800E0504:
/* B576A4 800E0504 84AE2D68 */ lh $t6, 0x2d68($a1)
/* B576A8 800E0508 24420001 */ addiu $v0, $v0, 1
/* B576AC 800E050C 0043082A */ slt $at, $v0, $v1
/* B576B0 800E0510 148E0006 */ bne $a0, $t6, .L800E052C
/* B576B4 800E0514 00000000 */ nop
/* B576B8 800E0518 84AF2D6A */ lh $t7, 0x2d6a($a1)
/* B576BC 800E051C 14CF0003 */ bne $a2, $t7, .L800E052C
/* B576C0 800E0520 00000000 */ nop
/* B576C4 800E0524 03E00008 */ jr $ra
/* B576C8 800E0528 8CA22D60 */ lw $v0, 0x2d60($a1)
.L800E052C:
/* B576CC 800E052C 1420FFF5 */ bnez $at, .L800E0504
/* B576D0 800E0530 24A5000C */ addiu $a1, $a1, 0xc
.L800E0534:
/* B576D4 800E0534 00001025 */ move $v0, $zero
/* B576D8 800E0538 03E00008 */ jr $ra
/* B576DC 800E053C 00000000 */ nop
@@ -1,37 +0,0 @@
glabel func_800E0540
/* B576E0 800E0540 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B576E4 800E0544 3C0E8017 */ lui $t6, %hi(gAudioContext+0x2d5c) # $t6, 0x8017
/* B576E8 800E0548 8DCE1EDC */ lw $t6, %lo(gAudioContext+0x2d5c)($t6)
/* B576EC 800E054C AFA40020 */ sw $a0, 0x20($sp)
/* B576F0 800E0550 AFBF0014 */ sw $ra, 0x14($sp)
/* B576F4 800E0554 AFA50024 */ sw $a1, 0x24($sp)
/* B576F8 800E0558 3C048017 */ lui $a0, %hi(gAudioContext+0x2d50) # $a0, 0x8017
/* B576FC 800E055C AFA60028 */ sw $a2, 0x28($sp)
/* B57700 800E0560 24841ED0 */ addiu $a0, %lo(gAudioContext+0x2d50) # addiu $a0, $a0, 0x1ed0
/* B57704 800E0564 00C02825 */ move $a1, $a2
/* B57708 800E0568 0C0378F7 */ jal Audio_Alloc
/* B5770C 800E056C AFAE0018 */ sw $t6, 0x18($sp)
/* B57710 800E0570 8FAF0018 */ lw $t7, 0x18($sp)
/* B57714 800E0574 3C198017 */ lui $t9, %hi(gAudioContext) # $t9, 0x8017
/* B57718 800E0578 2739F180 */ addiu $t9, %lo(gAudioContext) # addiu $t9, $t9, -0xe80
/* B5771C 800E057C 000FC080 */ sll $t8, $t7, 2
/* B57720 800E0580 030FC023 */ subu $t8, $t8, $t7
/* B57724 800E0584 0018C080 */ sll $t8, $t8, 2
/* B57728 800E0588 03191821 */ addu $v1, $t8, $t9
/* B5772C 800E058C 14400003 */ bnez $v0, .L800E059C
/* B57730 800E0590 AC622D60 */ sw $v0, 0x2d60($v1)
/* B57734 800E0594 10000007 */ b .L800E05B4
/* B57738 800E0598 00001025 */ move $v0, $zero
.L800E059C:
/* B5773C 800E059C 8FA80020 */ lw $t0, 0x20($sp)
/* B57740 800E05A0 8FA90024 */ lw $t1, 0x24($sp)
/* B57744 800E05A4 8FAA0028 */ lw $t2, 0x28($sp)
/* B57748 800E05A8 A4682D68 */ sh $t0, 0x2d68($v1)
/* B5774C 800E05AC A4692D6A */ sh $t1, 0x2d6a($v1)
/* B57750 800E05B0 AC6A2D64 */ sw $t2, 0x2d64($v1)
.L800E05B4:
/* B57754 800E05B4 8FBF0014 */ lw $ra, 0x14($sp)
/* B57758 800E05B8 27BD0020 */ addiu $sp, $sp, 0x20
/* B5775C 800E05BC 03E00008 */ jr $ra
/* B57760 800E05C0 00000000 */ nop
@@ -1,34 +0,0 @@
glabel func_800E05C4
/* B57764 800E05C4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B57768 800E05C8 8FAE0028 */ lw $t6, 0x28($sp)
/* B5776C 800E05CC AFBF0014 */ sw $ra, 0x14($sp)
/* B57770 800E05D0 AFA5001C */ sw $a1, 0x1c($sp)
/* B57774 800E05D4 AFA60020 */ sw $a2, 0x20($sp)
/* B57778 800E05D8 15C00005 */ bnez $t6, .L800E05F0
/* B5777C 800E05DC AFA70024 */ sw $a3, 0x24($sp)
/* B57780 800E05E0 0C0381B3 */ jal func_800E06CC
/* B57784 800E05E4 00000000 */ nop
/* B57788 800E05E8 10000004 */ b .L800E05FC
/* B5778C 800E05EC 00401825 */ move $v1, $v0
.L800E05F0:
/* B57790 800E05F0 0C0382FE */ jal func_800E0BF8
/* B57794 800E05F4 00000000 */ nop
/* B57798 800E05F8 00401825 */ move $v1, $v0
.L800E05FC:
/* B5779C 800E05FC 10400008 */ beqz $v0, .L800E0620
/* B577A0 800E0600 8FAF001C */ lw $t7, 0x1c($sp)
/* B577A4 800E0604 A06F0002 */ sb $t7, 2($v1)
/* B577A8 800E0608 8FB80020 */ lw $t8, 0x20($sp)
/* B577AC 800E060C 8C620008 */ lw $v0, 8($v1)
/* B577B0 800E0610 AC78000C */ sw $t8, 0xc($v1)
/* B577B4 800E0614 83B90027 */ lb $t9, 0x27($sp)
/* B577B8 800E0618 10000002 */ b .L800E0624
/* B577BC 800E061C A0790001 */ sb $t9, 1($v1)
.L800E0620:
/* B577C0 800E0620 00001025 */ move $v0, $zero
.L800E0624:
/* B577C4 800E0624 8FBF0014 */ lw $ra, 0x14($sp)
/* B577C8 800E0628 27BD0018 */ addiu $sp, $sp, 0x18
/* B577CC 800E062C 03E00008 */ jr $ra
/* B577D0 800E0630 00000000 */ nop
@@ -1,44 +0,0 @@
glabel func_800E0634
/* B577D4 800E0634 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B577D8 800E0638 AFA40018 */ sw $a0, 0x18($sp)
/* B577DC 800E063C AFBF0014 */ sw $ra, 0x14($sp)
/* B577E0 800E0640 AFA5001C */ sw $a1, 0x1c($sp)
/* B577E4 800E0644 3C048017 */ lui $a0, %hi(gAudioContext+0x29c0) # $a0, 0x8017
/* B577E8 800E0648 24841B40 */ addiu $a0, %lo(gAudioContext+0x29c0) # addiu $a0, $a0, 0x1b40
/* B577EC 800E064C 0C0378AC */ jal func_800DE2B0
/* B577F0 800E0650 8FA50018 */ lw $a1, 0x18($sp)
/* B577F4 800E0654 14400004 */ bnez $v0, .L800E0668
/* B577F8 800E0658 00402825 */ move $a1, $v0
/* B577FC 800E065C 3C018017 */ lui $at, %hi(gAudioContext+0x2ee8) # $at, 0x8017
/* B57800 800E0660 10000005 */ b .L800E0678
/* B57804 800E0664 AC202068 */ sw $zero, %lo(gAudioContext+0x2ee8)($at)
.L800E0668:
/* B57808 800E0668 3C048017 */ lui $a0, %hi(gAudioContext+0x2ee0) # $a0, 0x8017
/* B5780C 800E066C 24842060 */ addiu $a0, %lo(gAudioContext+0x2ee0) # addiu $a0, $a0, 0x2060
/* B57810 800E0670 0C03790D */ jal Audio_SoundAllocPoolInit
/* B57814 800E0674 8FA60018 */ lw $a2, 0x18($sp)
.L800E0678:
/* B57818 800E0678 3C048017 */ lui $a0, %hi(gAudioContext+0x29c0) # $a0, 0x8017
/* B5781C 800E067C 24841B40 */ addiu $a0, %lo(gAudioContext+0x29c0) # addiu $a0, $a0, 0x1b40
/* B57820 800E0680 0C0378AC */ jal func_800DE2B0
/* B57824 800E0684 8FA5001C */ lw $a1, 0x1c($sp)
/* B57828 800E0688 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B5782C 800E068C 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
/* B57830 800E0690 14400003 */ bnez $v0, .L800E06A0
/* B57834 800E0694 00402825 */ move $a1, $v0
/* B57838 800E0698 10000007 */ b .L800E06B8
/* B5783C 800E069C AC60317C */ sw $zero, 0x317c($v1)
.L800E06A0:
/* B57840 800E06A0 3C048017 */ lui $a0, %hi(gAudioContext+0x3174) # $a0, 0x8017
/* B57844 800E06A4 248422F4 */ addiu $a0, %lo(gAudioContext+0x3174) # addiu $a0, $a0, 0x22f4
/* B57848 800E06A8 0C03790D */ jal Audio_SoundAllocPoolInit
/* B5784C 800E06AC 8FA6001C */ lw $a2, 0x1c($sp)
/* B57850 800E06B0 3C038017 */ lui $v1, %hi(gAudioContext) # $v1, 0x8017
/* B57854 800E06B4 2463F180 */ addiu $v1, %lo(gAudioContext) # addiu $v1, $v1, -0xe80
.L800E06B8:
/* B57858 800E06B8 8FBF0014 */ lw $ra, 0x14($sp)
/* B5785C 800E06BC AC603170 */ sw $zero, 0x3170($v1)
/* B57860 800E06C0 AC603404 */ sw $zero, 0x3404($v1)
/* B57864 800E06C4 03E00008 */ jr $ra
/* B57868 800E06C8 27BD0018 */ addiu $sp, $sp, 0x18
@@ -1,185 +0,0 @@
glabel func_800E06CC
/* B5786C 800E06CC 27BDFFB8 */ addiu $sp, $sp, -0x48
/* B57870 800E06D0 AFB6002C */ sw $s6, 0x2c($sp)
/* B57874 800E06D4 AFA40048 */ sw $a0, 0x48($sp)
/* B57878 800E06D8 3C048017 */ lui $a0, %hi(gAudioContext+0x3174) # $a0, 0x8017
/* B5787C 800E06DC 3C168017 */ lui $s6, %hi(gAudioContext) # $s6, 0x8017
/* B57880 800E06E0 26D6F180 */ addiu $s6, %lo(gAudioContext) # addiu $s6, $s6, -0xe80
/* B57884 800E06E4 248422F4 */ addiu $a0, %lo(gAudioContext+0x3174) # addiu $a0, $a0, 0x22f4
/* B57888 800E06E8 AFBF0034 */ sw $ra, 0x34($sp)
/* B5788C 800E06EC AFB40024 */ sw $s4, 0x24($sp)
/* B57890 800E06F0 AFB30020 */ sw $s3, 0x20($sp)
/* B57894 800E06F4 AFB70030 */ sw $s7, 0x30($sp)
/* B57898 800E06F8 AFB50028 */ sw $s5, 0x28($sp)
/* B5789C 800E06FC AFB2001C */ sw $s2, 0x1c($sp)
/* B578A0 800E0700 AFB10018 */ sw $s1, 0x18($sp)
/* B578A4 800E0704 AFB00014 */ sw $s0, 0x14($sp)
/* B578A8 800E0708 0080A025 */ move $s4, $a0
/* B578AC 800E070C 8ED33178 */ lw $s3, 0x3178($s6)
/* B578B0 800E0710 0C0378F7 */ jal Audio_Alloc
/* B578B4 800E0714 8FA50048 */ lw $a1, 0x48($sp)
/* B578B8 800E0718 14400013 */ bnez $v0, .L800E0768
/* B578BC 800E071C AFA2003C */ sw $v0, 0x3c($sp)
/* B578C0 800E0720 3C0E8017 */ lui $t6, %hi(gAudioContext+0x3174) # $t6, 0x8017
/* B578C4 800E0724 8DCE22F4 */ lw $t6, %lo(gAudioContext+0x3174)($t6)
/* B578C8 800E0728 3C108017 */ lui $s0, %hi(gAudioContext+0x3178) # $s0, 0x8017
/* B578CC 800E072C 8E1022F8 */ lw $s0, %lo(gAudioContext+0x3178)($s0)
/* B578D0 800E0730 3C018017 */ lui $at, %hi(gAudioContext+0x3178) # $at, 0x8017
/* B578D4 800E0734 3C048017 */ lui $a0, %hi(gAudioContext+0x3174) # $a0, 0x8017
/* B578D8 800E0738 248422F4 */ addiu $a0, %lo(gAudioContext+0x3174) # addiu $a0, $a0, 0x22f4
/* B578DC 800E073C 8FA50048 */ lw $a1, 0x48($sp)
/* B578E0 800E0740 0C0378F7 */ jal Audio_Alloc
/* B578E4 800E0744 AC2E22F8 */ sw $t6, %lo(gAudioContext+0x3178)($at)
/* B578E8 800E0748 14400005 */ bnez $v0, .L800E0760
/* B578EC 800E074C AFA2003C */ sw $v0, 0x3c($sp)
/* B578F0 800E0750 3C018017 */ lui $at, %hi(gAudioContext+0x3178) # $at, 0x8017
/* B578F4 800E0754 AC3022F8 */ sw $s0, %lo(gAudioContext+0x3178)($at)
/* B578F8 800E0758 10000077 */ b .L800E0938
/* B578FC 800E075C 00001025 */ move $v0, $zero
.L800E0760:
/* B57900 800E0760 3C138017 */ lui $s3, %hi(gAudioContext+0x3174) # $s3, 0x8017
/* B57904 800E0764 8E7322F4 */ lw $s3, %lo(gAudioContext+0x3174)($s3)
.L800E0768:
/* B57908 800E0768 8EC7176C */ lw $a3, 0x176c($s6)
/* B5790C 800E076C 3C128017 */ lui $s2, %hi(gAudioContext+0x3178) # $s2, 0x8017
/* B57910 800E0770 8E5222F8 */ lw $s2, %lo(gAudioContext+0x3178)($s2)
/* B57914 800E0774 2415FFFF */ li $s5, -1
/* B57918 800E0778 18E00034 */ blez $a3, .L800E084C
/* B5791C 800E077C 00008825 */ move $s1, $zero
/* B57920 800E0780 3C068017 */ lui $a2, %hi(gAudioContext) # $a2, 0x8017
/* B57924 800E0784 24C6F180 */ addiu $a2, %lo(gAudioContext) # addiu $a2, $a2, -0xe80
/* B57928 800E0788 24170001 */ li $s7, 1
/* B5792C 800E078C 8CCF0D78 */ lw $t7, 0xd78($a2)
.L800E0790:
/* B57930 800E0790 3C0E8017 */ lui $t6, %hi(gAudioContext) # $t6, 0x8017
/* B57934 800E0794 25CEF180 */ addiu $t6, %lo(gAudioContext) # addiu $t6, $t6, -0xe80
/* B57938 800E0798 15E00023 */ bnez $t7, .L800E0828
/* B5793C 800E079C 24C40D68 */ addiu $a0, $a2, 0xd68
/* B57940 800E07A0 8C980004 */ lw $t8, 4($a0)
/* B57944 800E07A4 8C820008 */ lw $v0, 8($a0)
/* B57948 800E07A8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* B5794C 800E07AC 8F190000 */ lw $t9, ($t8)
/* B57950 800E07B0 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* B57954 800E07B4 00401825 */ move $v1, $v0
/* B57958 800E07B8 03214024 */ and $t0, $t9, $at
/* B5795C 800E07BC 00482821 */ addu $a1, $v0, $t0
/* B57960 800E07C0 24A5FFFF */ addiu $a1, $a1, -1
/* B57964 800E07C4 00B3082B */ sltu $at, $a1, $s3
/* B57968 800E07C8 10200009 */ beqz $at, .L800E07F0
/* B5796C 800E07CC 0053082B */ sltu $at, $v0, $s3
/* B57970 800E07D0 10200007 */ beqz $at, .L800E07F0
/* B57974 800E07D4 00074880 */ sll $t1, $a3, 2
/* B57978 800E07D8 01274821 */ addu $t1, $t1, $a3
/* B5797C 800E07DC 3C0A8017 */ lui $t2, %hi(gAudioContext) # $t2, 0x8017
/* B57980 800E07E0 254AF180 */ addiu $t2, %lo(gAudioContext) # addiu $t2, $t2, -0xe80
/* B57984 800E07E4 00094880 */ sll $t1, $t1, 2
/* B57988 800E07E8 10000013 */ b .L800E0838
/* B5798C 800E07EC 012A1021 */ addu $v0, $t1, $t2
.L800E07F0:
/* B57990 800E07F0 00B2082B */ sltu $at, $a1, $s2
/* B57994 800E07F4 14200009 */ bnez $at, .L800E081C
/* B57998 800E07F8 0072082B */ sltu $at, $v1, $s2
/* B5799C 800E07FC 14200007 */ bnez $at, .L800E081C
/* B579A0 800E0800 00075880 */ sll $t3, $a3, 2
/* B579A4 800E0804 01675821 */ addu $t3, $t3, $a3
/* B579A8 800E0808 3C0C8017 */ lui $t4, %hi(gAudioContext) # $t4, 0x8017
/* B579AC 800E080C 258CF180 */ addiu $t4, %lo(gAudioContext) # addiu $t4, $t4, -0xe80
/* B579B0 800E0810 000B5880 */ sll $t3, $t3, 2
/* B579B4 800E0814 10000008 */ b .L800E0838
/* B579B8 800E0818 016C1021 */ addu $v0, $t3, $t4
.L800E081C:
/* B579BC 800E081C AC970010 */ sw $s7, 0x10($a0)
/* B579C0 800E0820 3C078017 */ lui $a3, %hi(gAudioContext+0x176c) # $a3, 0x8017
/* B579C4 800E0824 8CE708EC */ lw $a3, %lo(gAudioContext+0x176c)($a3)
.L800E0828:
/* B579C8 800E0828 00076880 */ sll $t5, $a3, 2
/* B579CC 800E082C 01A76821 */ addu $t5, $t5, $a3
/* B579D0 800E0830 000D6880 */ sll $t5, $t5, 2
/* B579D4 800E0834 01AE1021 */ addu $v0, $t5, $t6
.L800E0838:
/* B579D8 800E0838 24C60014 */ addiu $a2, $a2, 0x14
/* B579DC 800E083C 00C2082B */ sltu $at, $a2, $v0
/* B579E0 800E0840 5420FFD3 */ bnezl $at, .L800E0790
/* B579E4 800E0844 8CCF0D78 */ lw $t7, 0xd78($a2)
/* B579E8 800E0848 00008825 */ move $s1, $zero
.L800E084C:
/* B579EC 800E084C 3C0F8017 */ lui $t7, %hi(gAudioContext+0x3404) # $t7, 0x8017
/* B579F0 800E0850 8DEF2584 */ lw $t7, %lo(gAudioContext+0x3404)($t7)
/* B579F4 800E0854 3C108017 */ lui $s0, %hi(gAudioContext+0x3174) # $s0, 0x8017
/* B579F8 800E0858 24170001 */ li $s7, 1
/* B579FC 800E085C 19E00023 */ blez $t7, .L800E08EC
/* B57A00 800E0860 261022F4 */ addiu $s0, %lo(gAudioContext+0x3174) # addiu $s0, $s0, 0x22f4
/* B57A04 800E0864 2416FFFF */ li $s6, -1
.L800E0868:
/* B57A08 800E0868 82180010 */ lb $t8, 0x10($s0)
/* B57A0C 800E086C 57000004 */ bnezl $t8, .L800E0880
/* B57A10 800E0870 8E030018 */ lw $v1, 0x18($s0)
/* B57A14 800E0874 10000019 */ b .L800E08DC
/* B57A18 800E0878 8E820290 */ lw $v0, 0x290($s4)
/* B57A1C 800E087C 8E030018 */ lw $v1, 0x18($s0)
.L800E0880:
/* B57A20 800E0880 8E190020 */ lw $t9, 0x20($s0)
/* B57A24 800E0884 03232821 */ addu $a1, $t9, $v1
/* B57A28 800E0888 24A5FFFF */ addiu $a1, $a1, -1
/* B57A2C 800E088C 00B3082B */ sltu $at, $a1, $s3
/* B57A30 800E0890 10200005 */ beqz $at, .L800E08A8
/* B57A34 800E0894 0073082B */ sltu $at, $v1, $s3
/* B57A38 800E0898 50200004 */ beql $at, $zero, .L800E08AC
/* B57A3C 800E089C 00B2082B */ sltu $at, $a1, $s2
/* B57A40 800E08A0 1000000E */ b .L800E08DC
/* B57A44 800E08A4 8E820290 */ lw $v0, 0x290($s4)
.L800E08A8:
/* B57A48 800E08A8 00B2082B */ sltu $at, $a1, $s2
.L800E08AC:
/* B57A4C 800E08AC 14200005 */ bnez $at, .L800E08C4
/* B57A50 800E08B0 0072082B */ sltu $at, $v1, $s2
/* B57A54 800E08B4 14200003 */ bnez $at, .L800E08C4
/* B57A58 800E08B8 00000000 */ nop
/* B57A5C 800E08BC 10000007 */ b .L800E08DC
/* B57A60 800E08C0 8E820290 */ lw $v0, 0x290($s4)
.L800E08C4:
/* B57A64 800E08C4 0C0382B6 */ jal func_800E0AD8
/* B57A68 800E08C8 26040010 */ addiu $a0, $s0, 0x10
/* B57A6C 800E08CC 56B60003 */ bnel $s5, $s6, .L800E08DC
/* B57A70 800E08D0 8E820290 */ lw $v0, 0x290($s4)
/* B57A74 800E08D4 0220A825 */ move $s5, $s1
/* B57A78 800E08D8 8E820290 */ lw $v0, 0x290($s4)
.L800E08DC:
/* B57A7C 800E08DC 26310001 */ addiu $s1, $s1, 1
/* B57A80 800E08E0 0222082A */ slt $at, $s1, $v0
/* B57A84 800E08E4 1420FFE0 */ bnez $at, .L800E0868
/* B57A88 800E08E8 26100014 */ addiu $s0, $s0, 0x14
.L800E08EC:
/* B57A8C 800E08EC 2416FFFF */ li $s6, -1
/* B57A90 800E08F0 16B60006 */ bne $s5, $s6, .L800E090C
/* B57A94 800E08F4 3C0B8017 */ lui $t3, %hi(gAudioContext+0x3174) # $t3, 0x8017
/* B57A98 800E08F8 3C088017 */ lui $t0, %hi(gAudioContext+0x3404) # $t0, 0x8017
/* B57A9C 800E08FC 8D152584 */ lw $s5, %lo(gAudioContext+0x3404)($t0)
/* B57AA0 800E0900 3C018017 */ lui $at, %hi(gAudioContext+0x3404) # $at, 0x8017
/* B57AA4 800E0904 26A90001 */ addiu $t1, $s5, 1
/* B57AA8 800E0908 AC292584 */ sw $t1, %lo(gAudioContext+0x3404)($at)
.L800E090C:
/* B57AAC 800E090C 00155080 */ sll $t2, $s5, 2
/* B57AB0 800E0910 01555021 */ addu $t2, $t2, $s5
/* B57AB4 800E0914 000A5080 */ sll $t2, $t2, 2
/* B57AB8 800E0918 256B22F4 */ addiu $t3, %lo(gAudioContext+0x3174) # addiu $t3, $t3, 0x22f4
/* B57ABC 800E091C 014B1821 */ addu $v1, $t2, $t3
/* B57AC0 800E0920 8FAC003C */ lw $t4, 0x3c($sp)
/* B57AC4 800E0924 8FAD0048 */ lw $t5, 0x48($sp)
/* B57AC8 800E0928 A0770010 */ sb $s7, 0x10($v1)
/* B57ACC 800E092C 24620010 */ addiu $v0, $v1, 0x10
/* B57AD0 800E0930 AC6C0018 */ sw $t4, 0x18($v1)
/* B57AD4 800E0934 AC6D0020 */ sw $t5, 0x20($v1)
.L800E0938:
/* B57AD8 800E0938 8FBF0034 */ lw $ra, 0x34($sp)
/* B57ADC 800E093C 8FB00014 */ lw $s0, 0x14($sp)
/* B57AE0 800E0940 8FB10018 */ lw $s1, 0x18($sp)
/* B57AE4 800E0944 8FB2001C */ lw $s2, 0x1c($sp)
/* B57AE8 800E0948 8FB30020 */ lw $s3, 0x20($sp)
/* B57AEC 800E094C 8FB40024 */ lw $s4, 0x24($sp)
/* B57AF0 800E0950 8FB50028 */ lw $s5, 0x28($sp)
/* B57AF4 800E0954 8FB6002C */ lw $s6, 0x2c($sp)
/* B57AF8 800E0958 8FB70030 */ lw $s7, 0x30($sp)
/* B57AFC 800E095C 03E00008 */ jr $ra
/* B57B00 800E0960 27BD0048 */ addiu $sp, $sp, 0x48
@@ -1,106 +0,0 @@
glabel func_800E0964
/* B57B04 800E0964 27BDFFC8 */ addiu $sp, $sp, -0x38
/* B57B08 800E0968 AFB5002C */ sw $s5, 0x2c($sp)
/* B57B0C 800E096C 3C158017 */ lui $s5, %hi(gAudioContext) # $s5, 0x8017
/* B57B10 800E0970 26B5F180 */ addiu $s5, %lo(gAudioContext) # addiu $s5, $s5, -0xe80
/* B57B14 800E0974 AFB30024 */ sw $s3, 0x24($sp)
/* B57B18 800E0978 8EAE2844 */ lw $t6, 0x2844($s5)
/* B57B1C 800E097C 00059880 */ sll $s3, $a1, 2
/* B57B20 800E0980 02659821 */ addu $s3, $s3, $a1
/* B57B24 800E0984 00139880 */ sll $s3, $s3, 2
/* B57B28 800E0988 AFBF0034 */ sw $ra, 0x34($sp)
/* B57B2C 800E098C AFB60030 */ sw $s6, 0x30($sp)
/* B57B30 800E0990 AFB40028 */ sw $s4, 0x28($sp)
/* B57B34 800E0994 AFB20020 */ sw $s2, 0x20($sp)
/* B57B38 800E0998 AFB1001C */ sw $s1, 0x1c($sp)
/* B57B3C 800E099C AFB00018 */ sw $s0, 0x18($sp)
/* B57B40 800E09A0 01D31021 */ addu $v0, $t6, $s3
/* B57B44 800E09A4 904F0000 */ lbu $t7, ($v0)
/* B57B48 800E09A8 00809025 */ move $s2, $a0
/* B57B4C 800E09AC 00A0A025 */ move $s4, $a1
/* B57B50 800E09B0 19E0001D */ blez $t7, .L800E0A28
/* B57B54 800E09B4 00008825 */ move $s1, $zero
/* B57B58 800E09B8 2416007F */ li $s6, 127
/* B57B5C 800E09BC 02802025 */ move $a0, $s4
.L800E09C0:
/* B57B60 800E09C0 0C039D26 */ jal Audio_GetInstrumentInner
/* B57B64 800E09C4 02202825 */ move $a1, $s1
/* B57B68 800E09C8 10400010 */ beqz $v0, .L800E0A0C
/* B57B6C 800E09CC 00408025 */ move $s0, $v0
/* B57B70 800E09D0 90580001 */ lbu $t8, 1($v0)
/* B57B74 800E09D4 02402025 */ move $a0, $s2
/* B57B78 800E09D8 53000004 */ beql $t8, $zero, .L800E09EC
/* B57B7C 800E09DC 92190002 */ lbu $t9, 2($s0)
/* B57B80 800E09E0 0C0382ED */ jal func_800E0BB4
/* B57B84 800E09E4 8C450008 */ lw $a1, 8($v0)
/* B57B88 800E09E8 92190002 */ lbu $t9, 2($s0)
.L800E09EC:
/* B57B8C 800E09EC 02402025 */ move $a0, $s2
/* B57B90 800E09F0 52D90004 */ beql $s6, $t9, .L800E0A04
/* B57B94 800E09F4 02402025 */ move $a0, $s2
/* B57B98 800E09F8 0C0382ED */ jal func_800E0BB4
/* B57B9C 800E09FC 8E050018 */ lw $a1, 0x18($s0)
/* B57BA0 800E0A00 02402025 */ move $a0, $s2
.L800E0A04:
/* B57BA4 800E0A04 0C0382ED */ jal func_800E0BB4
/* B57BA8 800E0A08 8E050010 */ lw $a1, 0x10($s0)
.L800E0A0C:
/* B57BAC 800E0A0C 8EA82844 */ lw $t0, 0x2844($s5)
/* B57BB0 800E0A10 26310001 */ addiu $s1, $s1, 1
/* B57BB4 800E0A14 01131021 */ addu $v0, $t0, $s3
/* B57BB8 800E0A18 90490000 */ lbu $t1, ($v0)
/* B57BBC 800E0A1C 0229082A */ slt $at, $s1, $t1
/* B57BC0 800E0A20 5420FFE7 */ bnezl $at, .L800E09C0
/* B57BC4 800E0A24 02802025 */ move $a0, $s4
.L800E0A28:
/* B57BC8 800E0A28 904A0001 */ lbu $t2, 1($v0)
/* B57BCC 800E0A2C 00008025 */ move $s0, $zero
/* B57BD0 800E0A30 1940000E */ blez $t2, .L800E0A6C
/* B57BD4 800E0A34 02802025 */ move $a0, $s4
.L800E0A38:
/* B57BD8 800E0A38 0C039D5B */ jal Audio_GetDrum
/* B57BDC 800E0A3C 02002825 */ move $a1, $s0
/* B57BE0 800E0A40 10400003 */ beqz $v0, .L800E0A50
/* B57BE4 800E0A44 02402025 */ move $a0, $s2
/* B57BE8 800E0A48 0C0382ED */ jal func_800E0BB4
/* B57BEC 800E0A4C 8C450004 */ lw $a1, 4($v0)
.L800E0A50:
/* B57BF0 800E0A50 8EAB2844 */ lw $t3, 0x2844($s5)
/* B57BF4 800E0A54 26100001 */ addiu $s0, $s0, 1
/* B57BF8 800E0A58 01731021 */ addu $v0, $t3, $s3
/* B57BFC 800E0A5C 904C0001 */ lbu $t4, 1($v0)
/* B57C00 800E0A60 020C082A */ slt $at, $s0, $t4
/* B57C04 800E0A64 5420FFF4 */ bnezl $at, .L800E0A38
/* B57C08 800E0A68 02802025 */ move $a0, $s4
.L800E0A6C:
/* B57C0C 800E0A6C 944D0004 */ lhu $t5, 4($v0)
/* B57C10 800E0A70 00008025 */ move $s0, $zero
/* B57C14 800E0A74 19A0000E */ blez $t5, .L800E0AB0
/* B57C18 800E0A78 02802025 */ move $a0, $s4
.L800E0A7C:
/* B57C1C 800E0A7C 0C039D94 */ jal Audio_GetUnkInstrument
/* B57C20 800E0A80 02002825 */ move $a1, $s0
/* B57C24 800E0A84 10400003 */ beqz $v0, .L800E0A94
/* B57C28 800E0A88 02402025 */ move $a0, $s2
/* B57C2C 800E0A8C 0C0382ED */ jal func_800E0BB4
/* B57C30 800E0A90 8C450000 */ lw $a1, ($v0)
.L800E0A94:
/* B57C34 800E0A94 8EAE2844 */ lw $t6, 0x2844($s5)
/* B57C38 800E0A98 26100001 */ addiu $s0, $s0, 1
/* B57C3C 800E0A9C 01D37821 */ addu $t7, $t6, $s3
/* B57C40 800E0AA0 95F80004 */ lhu $t8, 4($t7)
/* B57C44 800E0AA4 0218082A */ slt $at, $s0, $t8
/* B57C48 800E0AA8 5420FFF4 */ bnezl $at, .L800E0A7C
/* B57C4C 800E0AAC 02802025 */ move $a0, $s4
.L800E0AB0:
/* B57C50 800E0AB0 8FBF0034 */ lw $ra, 0x34($sp)
/* B57C54 800E0AB4 8FB00018 */ lw $s0, 0x18($sp)
/* B57C58 800E0AB8 8FB1001C */ lw $s1, 0x1c($sp)
/* B57C5C 800E0ABC 8FB20020 */ lw $s2, 0x20($sp)
/* B57C60 800E0AC0 8FB30024 */ lw $s3, 0x24($sp)
/* B57C64 800E0AC4 8FB40028 */ lw $s4, 0x28($sp)
/* B57C68 800E0AC8 8FB5002C */ lw $s5, 0x2c($sp)
/* B57C6C 800E0ACC 8FB60030 */ lw $s6, 0x30($sp)
/* B57C70 800E0AD0 03E00008 */ jr $ra
/* B57C74 800E0AD4 27BD0038 */ addiu $sp, $sp, 0x38
@@ -1,64 +0,0 @@
glabel func_800E0AD8
/* B57C78 800E0AD8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* B57C7C 800E0ADC AFB50028 */ sw $s5, 0x28($sp)
/* B57C80 800E0AE0 3C158017 */ lui $s5, %hi(gAudioContext) # $s5, 0x8017
/* B57C84 800E0AE4 26B5F180 */ addiu $s5, %lo(gAudioContext) # addiu $s5, $s5, -0xe80
/* B57C88 800E0AE8 8EAE2834 */ lw $t6, 0x2834($s5)
/* B57C8C 800E0AEC AFBF002C */ sw $ra, 0x2c($sp)
/* B57C90 800E0AF0 AFB40024 */ sw $s4, 0x24($sp)
/* B57C94 800E0AF4 AFB30020 */ sw $s3, 0x20($sp)
/* B57C98 800E0AF8 AFB2001C */ sw $s2, 0x1c($sp)
/* B57C9C 800E0AFC AFB10018 */ sw $s1, 0x18($sp)
/* B57CA0 800E0B00 AFB00014 */ sw $s0, 0x14($sp)
/* B57CA4 800E0B04 85D40000 */ lh $s4, ($t6)
/* B57CA8 800E0B08 00809025 */ move $s2, $a0
/* B57CAC 800E0B0C 00008025 */ move $s0, $zero
/* B57CB0 800E0B10 1A80001F */ blez $s4, .L800E0B90
/* B57CB4 800E0B14 00008825 */ move $s1, $zero
/* B57CB8 800E0B18 241300FF */ li $s3, 255
.L800E0B1C:
/* B57CBC 800E0B1C 8EAF2844 */ lw $t7, 0x2844($s5)
/* B57CC0 800E0B20 82450002 */ lb $a1, 2($s2)
/* B57CC4 800E0B24 01F11021 */ addu $v0, $t7, $s1
/* B57CC8 800E0B28 90430002 */ lbu $v1, 2($v0)
/* B57CCC 800E0B2C 90440003 */ lbu $a0, 3($v0)
/* B57CD0 800E0B30 10730003 */ beq $v1, $s3, .L800E0B40
/* B57CD4 800E0B34 00000000 */ nop
/* B57CD8 800E0B38 50650007 */ beql $v1, $a1, .L800E0B58
/* B57CDC 800E0B3C 24040001 */ li $a0, 1
.L800E0B40:
/* B57CE0 800E0B40 10930003 */ beq $a0, $s3, .L800E0B50
/* B57CE4 800E0B44 00000000 */ nop
/* B57CE8 800E0B48 50850003 */ beql $a0, $a1, .L800E0B58
/* B57CEC 800E0B4C 24040001 */ li $a0, 1
.L800E0B50:
/* B57CF0 800E0B50 14A0000C */ bnez $a1, .L800E0B84
/* B57CF4 800E0B54 24040001 */ li $a0, 1
.L800E0B58:
/* B57CF8 800E0B58 24050002 */ li $a1, 2
/* B57CFC 800E0B5C 0C037C1D */ jal func_800DF074
/* B57D00 800E0B60 02003025 */ move $a2, $s0
/* B57D04 800E0B64 50400008 */ beql $v0, $zero, .L800E0B88
/* B57D08 800E0B68 26100001 */ addiu $s0, $s0, 1
/* B57D0C 800E0B6C 0C03862C */ jal Audio_IsBankLoadComplete
/* B57D10 800E0B70 02002025 */ move $a0, $s0
/* B57D14 800E0B74 10400003 */ beqz $v0, .L800E0B84
/* B57D18 800E0B78 02402025 */ move $a0, $s2
/* B57D1C 800E0B7C 0C038259 */ jal func_800E0964
/* B57D20 800E0B80 02002825 */ move $a1, $s0
.L800E0B84:
/* B57D24 800E0B84 26100001 */ addiu $s0, $s0, 1
.L800E0B88:
/* B57D28 800E0B88 1614FFE4 */ bne $s0, $s4, .L800E0B1C
/* B57D2C 800E0B8C 26310014 */ addiu $s1, $s1, 0x14
.L800E0B90:
/* B57D30 800E0B90 8FBF002C */ lw $ra, 0x2c($sp)
/* B57D34 800E0B94 8FB00014 */ lw $s0, 0x14($sp)
/* B57D38 800E0B98 8FB10018 */ lw $s1, 0x18($sp)
/* B57D3C 800E0B9C 8FB2001C */ lw $s2, 0x1c($sp)
/* B57D40 800E0BA0 8FB30020 */ lw $s3, 0x20($sp)
/* B57D44 800E0BA4 8FB40024 */ lw $s4, 0x24($sp)
/* B57D48 800E0BA8 8FB50028 */ lw $s5, 0x28($sp)
/* B57D4C 800E0BAC 03E00008 */ jr $ra
/* B57D50 800E0BB0 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,20 +0,0 @@
glabel func_800E0BB4
/* B57D54 800E0BB4 10A0000E */ beqz $a1, .L800E0BF0
/* B57D58 800E0BB8 00000000 */ nop
/* B57D5C 800E0BBC 8C8E0008 */ lw $t6, 8($a0)
/* B57D60 800E0BC0 8CAF0004 */ lw $t7, 4($a1)
/* B57D64 800E0BC4 15CF000A */ bne $t6, $t7, .L800E0BF0
/* B57D68 800E0BC8 00000000 */ nop
/* B57D6C 800E0BCC 8C98000C */ lw $t8, 0xc($a0)
/* B57D70 800E0BD0 90AB0000 */ lbu $t3, ($a1)
/* B57D74 800E0BD4 ACB80004 */ sw $t8, 4($a1)
/* B57D78 800E0BD8 80880001 */ lb $t0, 1($a0)
/* B57D7C 800E0BDC 316CFFF3 */ andi $t4, $t3, 0xfff3
/* B57D80 800E0BE0 00084880 */ sll $t1, $t0, 2
/* B57D84 800E0BE4 312A000C */ andi $t2, $t1, 0xc
/* B57D88 800E0BE8 014C6825 */ or $t5, $t2, $t4
/* B57D8C 800E0BEC A0AD0000 */ sb $t5, ($a1)
.L800E0BF0:
/* B57D90 800E0BF0 03E00008 */ jr $ra
/* B57D94 800E0BF4 00000000 */ nop
@@ -1,38 +0,0 @@
glabel func_800E0BF8
/* B57D98 800E0BF8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B57D9C 800E0BFC AFA40018 */ sw $a0, 0x18($sp)
/* B57DA0 800E0C00 AFBF0014 */ sw $ra, 0x14($sp)
/* B57DA4 800E0C04 3C048017 */ lui $a0, %hi(gAudioContext+0x2ee0) # $a0, 0x8017
/* B57DA8 800E0C08 24842060 */ addiu $a0, %lo(gAudioContext+0x2ee0) # addiu $a0, $a0, 0x2060
/* B57DAC 800E0C0C 0C0378F7 */ jal Audio_Alloc
/* B57DB0 800E0C10 8FA50018 */ lw $a1, 0x18($sp)
/* B57DB4 800E0C14 14400003 */ bnez $v0, .L800E0C24
/* B57DB8 800E0C18 00402025 */ move $a0, $v0
/* B57DBC 800E0C1C 10000014 */ b .L800E0C70
/* B57DC0 800E0C20 00001025 */ move $v0, $zero
.L800E0C24:
/* B57DC4 800E0C24 3C0E8017 */ lui $t6, %hi(gAudioContext+0x3170) # $t6, 0x8017
/* B57DC8 800E0C28 8DCE22F0 */ lw $t6, %lo(gAudioContext+0x3170)($t6)
/* B57DCC 800E0C2C 3C198017 */ lui $t9, %hi(gAudioContext+0x2ee0) # $t9, 0x8017
/* B57DD0 800E0C30 27392060 */ addiu $t9, %lo(gAudioContext+0x2ee0) # addiu $t9, $t9, 0x2060
/* B57DD4 800E0C34 000E7880 */ sll $t7, $t6, 2
/* B57DD8 800E0C38 01EE7821 */ addu $t7, $t7, $t6
/* B57DDC 800E0C3C 000F7880 */ sll $t7, $t7, 2
/* B57DE0 800E0C40 25F80010 */ addiu $t8, $t7, 0x10
/* B57DE4 800E0C44 03191021 */ addu $v0, $t8, $t9
/* B57DE8 800E0C48 24080001 */ li $t0, 1
/* B57DEC 800E0C4C A0480000 */ sb $t0, ($v0)
/* B57DF0 800E0C50 AC440008 */ sw $a0, 8($v0)
/* B57DF4 800E0C54 8FA90018 */ lw $t1, 0x18($sp)
/* B57DF8 800E0C58 3C0A8017 */ lui $t2, %hi(gAudioContext+0x3170) # $t2, 0x8017
/* B57DFC 800E0C5C 3C018017 */ lui $at, %hi(gAudioContext+0x3170) # $at, 0x8017
/* B57E00 800E0C60 AC490010 */ sw $t1, 0x10($v0)
/* B57E04 800E0C64 8D4A22F0 */ lw $t2, %lo(gAudioContext+0x3170)($t2)
/* B57E08 800E0C68 254B0001 */ addiu $t3, $t2, 1
/* B57E0C 800E0C6C AC2B22F0 */ sw $t3, %lo(gAudioContext+0x3170)($at)
.L800E0C70:
/* B57E10 800E0C70 8FBF0014 */ lw $ra, 0x14($sp)
/* B57E14 800E0C74 27BD0018 */ addiu $sp, $sp, 0x18
/* B57E18 800E0C78 03E00008 */ jr $ra
/* B57E1C 800E0C7C 00000000 */ nop
@@ -1,19 +0,0 @@
glabel func_800E0C80
/* B57E20 800E0C80 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B57E24 800E0C84 AFBF0014 */ sw $ra, 0x14($sp)
/* B57E28 800E0C88 80820002 */ lb $v0, 2($a0)
/* B57E2C 800E0C8C 10A20005 */ beq $a1, $v0, .L800E0CA4
/* B57E30 800E0C90 00000000 */ nop
/* B57E34 800E0C94 10C20003 */ beq $a2, $v0, .L800E0CA4
/* B57E38 800E0C98 00000000 */ nop
/* B57E3C 800E0C9C 54400004 */ bnezl $v0, .L800E0CB0
/* B57E40 800E0CA0 8FBF0014 */ lw $ra, 0x14($sp)
.L800E0CA4:
/* B57E44 800E0CA4 0C038259 */ jal func_800E0964
/* B57E48 800E0CA8 00E02825 */ move $a1, $a3
/* B57E4C 800E0CAC 8FBF0014 */ lw $ra, 0x14($sp)
.L800E0CB0:
/* B57E50 800E0CB0 27BD0018 */ addiu $sp, $sp, 0x18
/* B57E54 800E0CB4 03E00008 */ jr $ra
/* B57E58 800E0CB8 00000000 */ nop
@@ -1,94 +0,0 @@
glabel func_800E0CBC
/* B57E5C 800E0CBC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* B57E60 800E0CC0 AFB5002C */ sw $s5, 0x2c($sp)
/* B57E64 800E0CC4 3C158017 */ lui $s5, %hi(gAudioContext) # $s5, 0x8017
/* B57E68 800E0CC8 26B5F180 */ addiu $s5, %lo(gAudioContext) # addiu $s5, $s5, -0xe80
/* B57E6C 800E0CCC 8EAE2834 */ lw $t6, 0x2834($s5)
/* B57E70 800E0CD0 AFBF003C */ sw $ra, 0x3c($sp)
/* B57E74 800E0CD4 AFBE0038 */ sw $fp, 0x38($sp)
/* B57E78 800E0CD8 AFB70034 */ sw $s7, 0x34($sp)
/* B57E7C 800E0CDC AFB60030 */ sw $s6, 0x30($sp)
/* B57E80 800E0CE0 AFB40028 */ sw $s4, 0x28($sp)
/* B57E84 800E0CE4 AFB30024 */ sw $s3, 0x24($sp)
/* B57E88 800E0CE8 AFB20020 */ sw $s2, 0x20($sp)
/* B57E8C 800E0CEC AFB1001C */ sw $s1, 0x1c($sp)
/* B57E90 800E0CF0 AFB00018 */ sw $s0, 0x18($sp)
/* B57E94 800E0CF4 85DE0000 */ lh $fp, ($t6)
/* B57E98 800E0CF8 0000A025 */ move $s4, $zero
/* B57E9C 800E0CFC 0000B025 */ move $s6, $zero
/* B57EA0 800E0D00 1BC00036 */ blez $fp, .L800E0DDC
/* B57EA4 800E0D04 241700FF */ li $s7, 255
.L800E0D08:
/* B57EA8 800E0D08 8EAF2844 */ lw $t7, 0x2844($s5)
/* B57EAC 800E0D0C 24040001 */ li $a0, 1
/* B57EB0 800E0D10 24050003 */ li $a1, 3
/* B57EB4 800E0D14 01F61021 */ addu $v0, $t7, $s6
/* B57EB8 800E0D18 90520002 */ lbu $s2, 2($v0)
/* B57EBC 800E0D1C 90530003 */ lbu $s3, 3($v0)
/* B57EC0 800E0D20 16570003 */ bne $s2, $s7, .L800E0D30
/* B57EC4 800E0D24 00000000 */ nop
/* B57EC8 800E0D28 5277002A */ beql $s3, $s7, .L800E0DD4
/* B57ECC 800E0D2C 26940001 */ addiu $s4, $s4, 1
.L800E0D30:
/* B57ED0 800E0D30 0C037C1D */ jal func_800DF074
/* B57ED4 800E0D34 02803025 */ move $a2, $s4
/* B57ED8 800E0D38 50400026 */ beql $v0, $zero, .L800E0DD4
/* B57EDC 800E0D3C 26940001 */ addiu $s4, $s4, 1
/* B57EE0 800E0D40 0C03862C */ jal Audio_IsBankLoadComplete
/* B57EE4 800E0D44 02802025 */ move $a0, $s4
/* B57EE8 800E0D48 50400022 */ beql $v0, $zero, .L800E0DD4
/* B57EEC 800E0D4C 26940001 */ addiu $s4, $s4, 1
/* B57EF0 800E0D50 8EB83170 */ lw $t8, 0x3170($s5)
/* B57EF4 800E0D54 3C118017 */ lui $s1, %hi(gAudioContext+0x2ef0) # $s1, 0x8017
/* B57EF8 800E0D58 26312070 */ addiu $s1, %lo(gAudioContext+0x2ef0) # addiu $s1, $s1, 0x2070
/* B57EFC 800E0D5C 1B00000D */ blez $t8, .L800E0D94
/* B57F00 800E0D60 00008025 */ move $s0, $zero
/* B57F04 800E0D64 02202025 */ move $a0, $s1
.L800E0D68:
/* B57F08 800E0D68 02402825 */ move $a1, $s2
/* B57F0C 800E0D6C 02603025 */ move $a2, $s3
/* B57F10 800E0D70 0C038320 */ jal func_800E0C80
/* B57F14 800E0D74 02803825 */ move $a3, $s4
/* B57F18 800E0D78 8EB93170 */ lw $t9, 0x3170($s5)
/* B57F1C 800E0D7C 26100001 */ addiu $s0, $s0, 1
/* B57F20 800E0D80 26310014 */ addiu $s1, $s1, 0x14
/* B57F24 800E0D84 0219082A */ slt $at, $s0, $t9
/* B57F28 800E0D88 5420FFF7 */ bnezl $at, .L800E0D68
/* B57F2C 800E0D8C 02202025 */ move $a0, $s1
/* B57F30 800E0D90 00008025 */ move $s0, $zero
.L800E0D94:
/* B57F34 800E0D94 8EA83404 */ lw $t0, 0x3404($s5)
/* B57F38 800E0D98 3C118017 */ lui $s1, %hi(gAudioContext+0x3184) # $s1, 0x8017
/* B57F3C 800E0D9C 26312304 */ addiu $s1, %lo(gAudioContext+0x3184) # addiu $s1, $s1, 0x2304
/* B57F40 800E0DA0 1900000B */ blez $t0, .L800E0DD0
/* B57F44 800E0DA4 02202025 */ move $a0, $s1
.L800E0DA8:
/* B57F48 800E0DA8 02402825 */ move $a1, $s2
/* B57F4C 800E0DAC 02603025 */ move $a2, $s3
/* B57F50 800E0DB0 0C038320 */ jal func_800E0C80
/* B57F54 800E0DB4 02803825 */ move $a3, $s4
/* B57F58 800E0DB8 8EA93404 */ lw $t1, 0x3404($s5)
/* B57F5C 800E0DBC 26100001 */ addiu $s0, $s0, 1
/* B57F60 800E0DC0 26310014 */ addiu $s1, $s1, 0x14
/* B57F64 800E0DC4 0209082A */ slt $at, $s0, $t1
/* B57F68 800E0DC8 5420FFF7 */ bnezl $at, .L800E0DA8
/* B57F6C 800E0DCC 02202025 */ move $a0, $s1
.L800E0DD0:
/* B57F70 800E0DD0 26940001 */ addiu $s4, $s4, 1
.L800E0DD4:
/* B57F74 800E0DD4 169EFFCC */ bne $s4, $fp, .L800E0D08
/* B57F78 800E0DD8 26D60014 */ addiu $s6, $s6, 0x14
.L800E0DDC:
/* B57F7C 800E0DDC 8FBF003C */ lw $ra, 0x3c($sp)
/* B57F80 800E0DE0 8FB00018 */ lw $s0, 0x18($sp)
/* B57F84 800E0DE4 8FB1001C */ lw $s1, 0x1c($sp)
/* B57F88 800E0DE8 8FB20020 */ lw $s2, 0x20($sp)
/* B57F8C 800E0DEC 8FB30024 */ lw $s3, 0x24($sp)
/* B57F90 800E0DF0 8FB40028 */ lw $s4, 0x28($sp)
/* B57F94 800E0DF4 8FB5002C */ lw $s5, 0x2c($sp)
/* B57F98 800E0DF8 8FB60030 */ lw $s6, 0x30($sp)
/* B57F9C 800E0DFC 8FB70034 */ lw $s7, 0x34($sp)
/* B57FA0 800E0E00 8FBE0038 */ lw $fp, 0x38($sp)
/* B57FA4 800E0E04 03E00008 */ jr $ra
/* B57FA8 800E0E08 27BD0040 */ addiu $sp, $sp, 0x40
@@ -1,27 +0,0 @@
glabel func_800E0E0C
/* B57FAC 800E0E0C 10A00015 */ beqz $a1, .L800E0E64
/* B57FB0 800E0E10 00000000 */ nop
/* B57FB4 800E0E14 8C830000 */ lw $v1, ($a0)
/* B57FB8 800E0E18 8CA70004 */ lw $a3, 4($a1)
/* B57FBC 800E0E1C 8C8E0008 */ lw $t6, 8($a0)
/* B57FC0 800E0E20 00E3082B */ sltu $at, $a3, $v1
/* B57FC4 800E0E24 1420000F */ bnez $at, .L800E0E64
/* B57FC8 800E0E28 006E3021 */ addu $a2, $v1, $t6
/* B57FCC 800E0E2C 00E6082B */ sltu $at, $a3, $a2
/* B57FD0 800E0E30 1020000C */ beqz $at, .L800E0E64
/* B57FD4 800E0E34 00000000 */ nop
/* B57FD8 800E0E38 8C980004 */ lw $t8, 4($a0)
/* B57FDC 800E0E3C 00E37823 */ subu $t7, $a3, $v1
/* B57FE0 800E0E40 90AD0000 */ lbu $t5, ($a1)
/* B57FE4 800E0E44 01F8C821 */ addu $t9, $t7, $t8
/* B57FE8 800E0E48 ACB90004 */ sw $t9, 4($a1)
/* B57FEC 800E0E4C 908A000C */ lbu $t2, 0xc($a0)
/* B57FF0 800E0E50 31AEFFF3 */ andi $t6, $t5, 0xfff3
/* B57FF4 800E0E54 000A5880 */ sll $t3, $t2, 2
/* B57FF8 800E0E58 316C000C */ andi $t4, $t3, 0xc
/* B57FFC 800E0E5C 018E7825 */ or $t7, $t4, $t6
/* B58000 800E0E60 A0AF0000 */ sb $t7, ($a1)
.L800E0E64:
/* B58004 800E0E64 03E00008 */ jr $ra
/* B58008 800E0E68 00000000 */ nop
@@ -1,11 +0,0 @@
glabel func_800E0E6C
/* B5800C 800E0E6C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B58010 800E0E70 AFBF0014 */ sw $ra, 0x14($sp)
/* B58014 800E0E74 00802825 */ move $a1, $a0
/* B58018 800E0E78 0C0383AD */ jal func_800E0EB4
/* B5801C 800E0E7C 00002025 */ move $a0, $zero
/* B58020 800E0E80 8FBF0014 */ lw $ra, 0x14($sp)
/* B58024 800E0E84 27BD0018 */ addiu $sp, $sp, 0x18
/* B58028 800E0E88 03E00008 */ jr $ra
/* B5802C 800E0E8C 00000000 */ nop
@@ -1,11 +0,0 @@
glabel func_800E0E90
/* B58030 800E0E90 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B58034 800E0E94 AFBF0014 */ sw $ra, 0x14($sp)
/* B58038 800E0E98 00802825 */ move $a1, $a0
/* B5803C 800E0E9C 0C0383AD */ jal func_800E0EB4
/* B58040 800E0EA0 24040001 */ li $a0, 1
/* B58044 800E0EA4 8FBF0014 */ lw $ra, 0x14($sp)
/* B58048 800E0EA8 27BD0018 */ addiu $sp, $sp, 0x18
/* B5804C 800E0EAC 03E00008 */ jr $ra
/* B58050 800E0EB0 00000000 */ nop
@@ -1,188 +0,0 @@
glabel func_800E0EB4
/* B58054 800E0EB4 27BDFF60 */ addiu $sp, $sp, -0xa0
/* B58058 800E0EB8 AFB70034 */ sw $s7, 0x34($sp)
/* B5805C 800E0EBC 3C178017 */ lui $s7, %hi(gAudioContext) # $s7, 0x8017
/* B58060 800E0EC0 26F7F180 */ addiu $s7, %lo(gAudioContext) # addiu $s7, $s7, -0xe80
/* B58064 800E0EC4 8EEE2834 */ lw $t6, 0x2834($s7)
/* B58068 800E0EC8 AFBF003C */ sw $ra, 0x3c($sp)
/* B5806C 800E0ECC AFBE0038 */ sw $fp, 0x38($sp)
/* B58070 800E0ED0 AFB60030 */ sw $s6, 0x30($sp)
/* B58074 800E0ED4 AFB5002C */ sw $s5, 0x2c($sp)
/* B58078 800E0ED8 AFB40028 */ sw $s4, 0x28($sp)
/* B5807C 800E0EDC AFB30024 */ sw $s3, 0x24($sp)
/* B58080 800E0EE0 AFB20020 */ sw $s2, 0x20($sp)
/* B58084 800E0EE4 AFB1001C */ sw $s1, 0x1c($sp)
/* B58088 800E0EE8 AFB00018 */ sw $s0, 0x18($sp)
/* B5808C 800E0EEC AFA500A4 */ sw $a1, 0xa4($sp)
/* B58090 800E0EF0 85CF0000 */ lh $t7, ($t6)
/* B58094 800E0EF4 00808825 */ move $s1, $a0
/* B58098 800E0EF8 8EF02838 */ lw $s0, 0x2838($s7)
/* B5809C 800E0EFC 24040002 */ li $a0, 2
/* B580A0 800E0F00 8FA600A4 */ lw $a2, 0xa4($sp)
/* B580A4 800E0F04 24050002 */ li $a1, 2
/* B580A8 800E0F08 0C037C1D */ jal func_800DF074
/* B580AC 800E0F0C AFAF0094 */ sw $t7, 0x94($sp)
/* B580B0 800E0F10 10400081 */ beqz $v0, .L800E1118
/* B580B4 800E0F14 AFA20078 */ sw $v0, 0x78($sp)
/* B580B8 800E0F18 8FB800A4 */ lw $t8, 0xa4($sp)
/* B580BC 800E0F1C 24010002 */ li $at, 2
/* B580C0 800E0F20 0000B025 */ move $s6, $zero
/* B580C4 800E0F24 0018C900 */ sll $t9, $t8, 4
/* B580C8 800E0F28 02191021 */ addu $v0, $s0, $t9
/* B580CC 800E0F2C 8C480014 */ lw $t0, 0x14($v0)
/* B580D0 800E0F30 241E007F */ li $fp, 127
/* B580D4 800E0F34 27B40078 */ addiu $s4, $sp, 0x78
/* B580D8 800E0F38 AFA80080 */ sw $t0, 0x80($sp)
/* B580DC 800E0F3C 80490018 */ lb $t1, 0x18($v0)
/* B580E0 800E0F40 312300FF */ andi $v1, $t1, 0xff
/* B580E4 800E0F44 10610004 */ beq $v1, $at, .L800E0F58
/* B580E8 800E0F48 A3A90084 */ sb $t1, 0x84($sp)
/* B580EC 800E0F4C 24010003 */ li $at, 3
/* B580F0 800E0F50 54610005 */ bnel $v1, $at, .L800E0F68
/* B580F4 800E0F54 AFA0007C */ sw $zero, 0x7c($sp)
.L800E0F58:
/* B580F8 800E0F58 8C4A0010 */ lw $t2, 0x10($v0)
/* B580FC 800E0F5C 10000002 */ b .L800E0F68
/* B58100 800E0F60 AFAA007C */ sw $t2, 0x7c($sp)
/* B58104 800E0F64 AFA0007C */ sw $zero, 0x7c($sp)
.L800E0F68:
/* B58108 800E0F68 12200007 */ beqz $s1, .L800E0F88
/* B5810C 800E0F6C 24010001 */ li $at, 1
/* B58110 800E0F70 16210005 */ bne $s1, $at, .L800E0F88
/* B58114 800E0F74 8FA2007C */ lw $v0, 0x7c($sp)
/* B58118 800E0F78 8FAB0078 */ lw $t3, 0x78($sp)
/* B5811C 800E0F7C AFA20078 */ sw $v0, 0x78($sp)
/* B58120 800E0F80 A3A00084 */ sb $zero, 0x84($sp)
/* B58124 800E0F84 AFAB007C */ sw $t3, 0x7c($sp)
.L800E0F88:
/* B58128 800E0F88 8FAC0094 */ lw $t4, 0x94($sp)
/* B5812C 800E0F8C 0000A825 */ move $s5, $zero
/* B58130 800E0F90 59800062 */ blezl $t4, .L800E111C
/* B58134 800E0F94 8FBF003C */ lw $ra, 0x3c($sp)
/* B58138 800E0F98 8EED2844 */ lw $t5, 0x2844($s7)
.L800E0F9C:
/* B5813C 800E0F9C 240100FF */ li $at, 255
/* B58140 800E0FA0 01B61021 */ addu $v0, $t5, $s6
/* B58144 800E0FA4 90500002 */ lbu $s0, 2($v0)
/* B58148 800E0FA8 90510003 */ lbu $s1, 3($v0)
/* B5814C 800E0FAC 16010003 */ bne $s0, $at, .L800E0FBC
/* B58150 800E0FB0 240100FF */ li $at, 255
/* B58154 800E0FB4 52210054 */ beql $s1, $at, .L800E1108
/* B58158 800E0FB8 8FA90094 */ lw $t1, 0x94($sp)
.L800E0FBC:
/* B5815C 800E0FBC 0C03862C */ jal Audio_IsBankLoadComplete
/* B58160 800E0FC0 02A02025 */ move $a0, $s5
/* B58164 800E0FC4 1040004F */ beqz $v0, .L800E1104
/* B58168 800E0FC8 24040001 */ li $a0, 1
/* B5816C 800E0FCC 24050002 */ li $a1, 2
/* B58170 800E0FD0 0C037C1D */ jal func_800DF074
/* B58174 800E0FD4 02A03025 */ move $a2, $s5
/* B58178 800E0FD8 1040004A */ beqz $v0, .L800E1104
/* B5817C 800E0FDC 8FAE00A4 */ lw $t6, 0xa4($sp)
/* B58180 800E0FE0 160E0005 */ bne $s0, $t6, .L800E0FF8
/* B58184 800E0FE4 8FAF00A4 */ lw $t7, 0xa4($sp)
/* B58188 800E0FE8 00008825 */ move $s1, $zero
/* B5818C 800E0FEC 00009025 */ move $s2, $zero
/* B58190 800E0FF0 10000005 */ b .L800E1008
/* B58194 800E0FF4 00009825 */ move $s3, $zero
.L800E0FF8:
/* B58198 800E0FF8 162F0042 */ bne $s1, $t7, .L800E1104
/* B5819C 800E0FFC 00009025 */ move $s2, $zero
/* B581A0 800E1000 00008825 */ move $s1, $zero
/* B581A4 800E1004 00009825 */ move $s3, $zero
.L800E1008:
/* B581A8 800E1008 8EF82844 */ lw $t8, 0x2844($s7)
/* B581AC 800E100C 03161021 */ addu $v0, $t8, $s6
/* B581B0 800E1010 90590000 */ lbu $t9, ($v0)
/* B581B4 800E1014 1B20001B */ blez $t9, .L800E1084
/* B581B8 800E1018 02A02025 */ move $a0, $s5
.L800E101C:
/* B581BC 800E101C 0C039D26 */ jal Audio_GetInstrumentInner
/* B581C0 800E1020 02202825 */ move $a1, $s1
/* B581C4 800E1024 10400010 */ beqz $v0, .L800E1068
/* B581C8 800E1028 00408025 */ move $s0, $v0
/* B581CC 800E102C 90480001 */ lbu $t0, 1($v0)
/* B581D0 800E1030 02802025 */ move $a0, $s4
/* B581D4 800E1034 51000004 */ beql $t0, $zero, .L800E1048
/* B581D8 800E1038 92090002 */ lbu $t1, 2($s0)
/* B581DC 800E103C 0C038383 */ jal func_800E0E0C
/* B581E0 800E1040 8C450008 */ lw $a1, 8($v0)
/* B581E4 800E1044 92090002 */ lbu $t1, 2($s0)
.L800E1048:
/* B581E8 800E1048 02802025 */ move $a0, $s4
/* B581EC 800E104C 53C90004 */ beql $fp, $t1, .L800E1060
/* B581F0 800E1050 02802025 */ move $a0, $s4
/* B581F4 800E1054 0C038383 */ jal func_800E0E0C
/* B581F8 800E1058 8E050018 */ lw $a1, 0x18($s0)
/* B581FC 800E105C 02802025 */ move $a0, $s4
.L800E1060:
/* B58200 800E1060 0C038383 */ jal func_800E0E0C
/* B58204 800E1064 8E050010 */ lw $a1, 0x10($s0)
.L800E1068:
/* B58208 800E1068 8EEA2844 */ lw $t2, 0x2844($s7)
/* B5820C 800E106C 26310001 */ addiu $s1, $s1, 1
/* B58210 800E1070 01561021 */ addu $v0, $t2, $s6
/* B58214 800E1074 904B0000 */ lbu $t3, ($v0)
/* B58218 800E1078 022B082A */ slt $at, $s1, $t3
/* B5821C 800E107C 5420FFE7 */ bnezl $at, .L800E101C
/* B58220 800E1080 02A02025 */ move $a0, $s5
.L800E1084:
/* B58224 800E1084 904C0001 */ lbu $t4, 1($v0)
/* B58228 800E1088 1980000E */ blez $t4, .L800E10C4
/* B5822C 800E108C 02A02025 */ move $a0, $s5
.L800E1090:
/* B58230 800E1090 0C039D5B */ jal Audio_GetDrum
/* B58234 800E1094 02402825 */ move $a1, $s2
/* B58238 800E1098 10400003 */ beqz $v0, .L800E10A8
/* B5823C 800E109C 02802025 */ move $a0, $s4
/* B58240 800E10A0 0C038383 */ jal func_800E0E0C
/* B58244 800E10A4 8C450004 */ lw $a1, 4($v0)
.L800E10A8:
/* B58248 800E10A8 8EED2844 */ lw $t5, 0x2844($s7)
/* B5824C 800E10AC 26520001 */ addiu $s2, $s2, 1
/* B58250 800E10B0 01B61021 */ addu $v0, $t5, $s6
/* B58254 800E10B4 904E0001 */ lbu $t6, 1($v0)
/* B58258 800E10B8 024E082A */ slt $at, $s2, $t6
/* B5825C 800E10BC 5420FFF4 */ bnezl $at, .L800E1090
/* B58260 800E10C0 02A02025 */ move $a0, $s5
.L800E10C4:
/* B58264 800E10C4 944F0004 */ lhu $t7, 4($v0)
/* B58268 800E10C8 19E0000E */ blez $t7, .L800E1104
/* B5826C 800E10CC 02A02025 */ move $a0, $s5
.L800E10D0:
/* B58270 800E10D0 0C039D94 */ jal Audio_GetUnkInstrument
/* B58274 800E10D4 02602825 */ move $a1, $s3
/* B58278 800E10D8 10400003 */ beqz $v0, .L800E10E8
/* B5827C 800E10DC 02802025 */ move $a0, $s4
/* B58280 800E10E0 0C038383 */ jal func_800E0E0C
/* B58284 800E10E4 8C450000 */ lw $a1, ($v0)
.L800E10E8:
/* B58288 800E10E8 8EF82844 */ lw $t8, 0x2844($s7)
/* B5828C 800E10EC 26730001 */ addiu $s3, $s3, 1
/* B58290 800E10F0 0316C821 */ addu $t9, $t8, $s6
/* B58294 800E10F4 97280004 */ lhu $t0, 4($t9)
/* B58298 800E10F8 0268082A */ slt $at, $s3, $t0
/* B5829C 800E10FC 5420FFF4 */ bnezl $at, .L800E10D0
/* B582A0 800E1100 02A02025 */ move $a0, $s5
.L800E1104:
/* B582A4 800E1104 8FA90094 */ lw $t1, 0x94($sp)
.L800E1108:
/* B582A8 800E1108 26B50001 */ addiu $s5, $s5, 1
/* B582AC 800E110C 26D60014 */ addiu $s6, $s6, 0x14
/* B582B0 800E1110 56A9FFA2 */ bnel $s5, $t1, .L800E0F9C
/* B582B4 800E1114 8EED2844 */ lw $t5, 0x2844($s7)
.L800E1118:
/* B582B8 800E1118 8FBF003C */ lw $ra, 0x3c($sp)
.L800E111C:
/* B582BC 800E111C 8FB00018 */ lw $s0, 0x18($sp)
/* B582C0 800E1120 8FB1001C */ lw $s1, 0x1c($sp)
/* B582C4 800E1124 8FB20020 */ lw $s2, 0x20($sp)
/* B582C8 800E1128 8FB30024 */ lw $s3, 0x24($sp)
/* B582CC 800E112C 8FB40028 */ lw $s4, 0x28($sp)
/* B582D0 800E1130 8FB5002C */ lw $s5, 0x2c($sp)
/* B582D4 800E1134 8FB60030 */ lw $s6, 0x30($sp)
/* B582D8 800E1138 8FB70034 */ lw $s7, 0x34($sp)
/* B582DC 800E113C 8FBE0038 */ lw $fp, 0x38($sp)
/* B582E0 800E1140 03E00008 */ jr $ra
/* B582E4 800E1144 27BD00A0 */ addiu $sp, $sp, 0xa0
@@ -1,44 +0,0 @@
glabel func_800E1148
/* B582E8 800E1148 3C0E8017 */ lui $t6, %hi(gAudioContext+0x2d32) # $t6, 0x8017
/* B582EC 800E114C 85CE1EB2 */ lh $t6, %lo(gAudioContext+0x2d32)($t6)
/* B582F0 800E1150 27BDFFD8 */ addiu $sp, $sp, -0x28
/* B582F4 800E1154 AFB00018 */ sw $s0, 0x18($sp)
/* B582F8 800E1158 2410FFFF */ li $s0, -1
/* B582FC 800E115C AFBF0024 */ sw $ra, 0x24($sp)
/* B58300 800E1160 AFB20020 */ sw $s2, 0x20($sp)
/* B58304 800E1164 120E0003 */ beq $s0, $t6, .L800E1174
/* B58308 800E1168 AFB1001C */ sw $s1, 0x1c($sp)
/* B5830C 800E116C 0C03839B */ jal func_800E0E6C
/* B58310 800E1170 01C02025 */ move $a0, $t6
.L800E1174:
/* B58314 800E1174 3C048017 */ lui $a0, %hi(gAudioContext+0x2d3e) # $a0, 0x8017
/* B58318 800E1178 84841EBE */ lh $a0, %lo(gAudioContext+0x2d3e)($a0)
/* B5831C 800E117C 12040003 */ beq $s0, $a0, .L800E118C
/* B58320 800E1180 00000000 */ nop
/* B58324 800E1184 0C03839B */ jal func_800E0E6C
/* B58328 800E1188 00000000 */ nop
.L800E118C:
/* B5832C 800E118C 3C188017 */ lui $t8, %hi(gAudioContext+0x2c40) # $t8, 0x8017
/* B58330 800E1190 8F181DC0 */ lw $t8, %lo(gAudioContext+0x2c40)($t8)
/* B58334 800E1194 3C0F8017 */ lui $t7, %hi(gAudioContext+0x2c40) # $t7, 0x8017
/* B58338 800E1198 25EF1DC0 */ addiu $t7, %lo(gAudioContext+0x2c40) # addiu $t7, $t7, 0x1dc0
/* B5833C 800E119C 01E09025 */ move $s2, $t7
/* B58340 800E11A0 1300000A */ beqz $t8, .L800E11CC
/* B58344 800E11A4 00008025 */ move $s0, $zero
/* B58348 800E11A8 01E08825 */ move $s1, $t7
.L800E11AC:
/* B5834C 800E11AC 0C03839B */ jal func_800E0E6C
/* B58350 800E11B0 8624001E */ lh $a0, 0x1e($s1)
/* B58354 800E11B4 8E590000 */ lw $t9, ($s2)
/* B58358 800E11B8 26100001 */ addiu $s0, $s0, 1
/* B5835C 800E11BC 2631000C */ addiu $s1, $s1, 0xc
/* B58360 800E11C0 0219082B */ sltu $at, $s0, $t9
/* B58364 800E11C4 1420FFF9 */ bnez $at, .L800E11AC
/* B58368 800E11C8 00000000 */ nop
.L800E11CC:
/* B5836C 800E11CC 8FBF0024 */ lw $ra, 0x24($sp)
/* B58370 800E11D0 8FB00018 */ lw $s0, 0x18($sp)
/* B58374 800E11D4 8FB1001C */ lw $s1, 0x1c($sp)
/* B58378 800E11D8 8FB20020 */ lw $s2, 0x20($sp)
/* B5837C 800E11DC 03E00008 */ jr $ra
/* B58380 800E11E0 27BD0028 */ addiu $sp, $sp, 0x28
@@ -40,7 +40,7 @@ glabel func_800E202C
/* B59254 800E20B4 5420FFF8 */ bnezl $at, .L800E2098
/* B59258 800E20B8 844A001E */ lh $t2, 0x1e($v0)
.L800E20BC:
/* B5925C 800E20BC 0C037812 */ jal func_800DE048
/* B5925C 800E20BC 0C037812 */ jal Audio_DiscardBank
/* B59260 800E20C0 00C02025 */ move $a0, $a2
/* B59264 800E20C4 8FBF0014 */ lw $ra, 0x14($sp)
/* B59268 800E20C8 27BD0018 */ addiu $sp, $sp, 0x18
@@ -168,7 +168,7 @@ glabel func_800E3094
/* B5A498 800E32F8 240F0001 */ li $t7, 1
/* B5A49C 800E32FC A2203519 */ sb $zero, 0x3519($s1)
/* B5A4A0 800E3300 A22F3518 */ sb $t7, 0x3518($s1)
/* B5A4A4 800E3304 0C037E3D */ jal func_800DF8F4
/* B5A4A4 800E3304 0C037E3D */ jal Audio_ResetStep
/* B5A4A8 800E3308 A62D2840 */ sh $t5, 0x2840($s1)
/* B5A4AC 800E330C 3C050004 */ lui $a1, %hi(_AudioseqSegmentRomStart) # $a1, 4
/* B5A4B0 800E3310 24A54DF0 */ addiu $a1, %lo(_AudioseqSegmentRomStart) # addiu $a1, $a1, 0x4df0
@@ -27,7 +27,7 @@ glabel func_800E35E0
/* B5A7D8 800E3638 10000008 */ b .L800E365C
/* B5A7DC 800E363C 8C430004 */ lw $v1, 4($v0)
.L800E3640:
/* B5A7E0 800E3640 0C039D94 */ jal Audio_GetUnkInstrument
/* B5A7E0 800E3640 0C039D94 */ jal Audio_GetSfx
/* B5A7E4 800E3644 24C5FF00 */ addiu $a1, $a2, -0x100
/* B5A7E8 800E3648 54400004 */ bnezl $v0, .L800E365C
/* B5A7EC 800E364C 8C430000 */ lw $v1, ($v0)
@@ -81,7 +81,7 @@ glabel func_800E4918
/* B5BBD0 800E4A30 1B20000B */ blez $t9, .L800E4A60
/* B5BBD4 800E4A34 02202025 */ move $a0, $s1
.L800E4A38:
/* B5BBD8 800E4A38 0C039D94 */ jal Audio_GetUnkInstrument
/* B5BBD8 800E4A38 0C039D94 */ jal Audio_GetSfx
/* B5BBDC 800E4A3C 02402825 */ move $a1, $s2
/* B5BBE0 800E4A40 10400003 */ beqz $v0, .L800E4A50
/* B5BBE4 800E4A44 00402025 */ move $a0, $v0
@@ -187,7 +187,7 @@ glabel func_800E5000
/* B5C434 800E5294 924D3518 */ lbu $t5, 0x3518($s2)
/* B5C438 800E5298 51A00011 */ beql $t5, $zero, .L800E52E0
/* B5C43C 800E529C 8E4F2984 */ lw $t7, 0x2984($s2)
/* B5C440 800E52A0 0C037E3D */ jal func_800DF8F4
/* B5C440 800E52A0 0C037E3D */ jal Audio_ResetStep
/* B5C444 800E52A4 00000000 */ nop
/* B5C448 800E52A8 5440000D */ bnezl $v0, .L800E52E0
/* B5C44C 800E52AC 8E4F2984 */ lw $t7, 0x2984($s2)
@@ -1,31 +0,0 @@
glabel BgPoSyokudai_Destroy
/* 0029C 808A834C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 002A0 808A8350 AFA40018 */ sw $a0, 0x0018($sp)
/* 002A4 808A8354 8FAE0018 */ lw $t6, 0x0018($sp)
/* 002A8 808A8358 AFBF0014 */ sw $ra, 0x0014($sp)
/* 002AC 808A835C 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
/* 002B0 808A8360 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 002B4 808A8364 8DC60150 */ lw $a2, 0x0150($t6) ## 00000150
/* 002B8 808A8368 AFA7001C */ sw $a3, 0x001C($sp)
/* 002BC 808A836C 0C01E9F1 */ jal LightContext_RemoveLight
/* 002C0 808A8370 24A507A8 */ addiu $a1, $a1, 0x07A8 ## $a1 = 000007A8
/* 002C4 808A8374 8FA50018 */ lw $a1, 0x0018($sp)
/* 002C8 808A8378 8FA4001C */ lw $a0, 0x001C($sp)
/* 002CC 808A837C 0C0170EB */ jal Collider_DestroyCylinder
/* 002D0 808A8380 24A50164 */ addiu $a1, $a1, 0x0164 ## $a1 = 00000164
/* 002D4 808A8384 8FA7001C */ lw $a3, 0x001C($sp)
/* 002D8 808A8388 3C0F0001 */ lui $t7, 0x0001 ## $t7 = 00010000
/* 002DC 808A838C 240100FF */ addiu $at, $zero, 0x00FF ## $at = 000000FF
/* 002E0 808A8390 01E77821 */ addu $t7, $t7, $a3
/* 002E4 808A8394 91EF0AE3 */ lbu $t7, 0x0AE3($t7) ## 00010AE3
/* 002E8 808A8398 241800FF */ addiu $t8, $zero, 0x00FF ## $t8 = 000000FF
/* 002EC 808A839C 11E10003 */ beq $t7, $at, .L808A83AC
/* 002F0 808A83A0 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 002F4 808A83A4 00270821 */ addu $at, $at, $a3
/* 002F8 808A83A8 A0380AE3 */ sb $t8, 0x0AE3($at) ## 00010AE3
.L808A83AC:
/* 002FC 808A83AC 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00300 808A83B0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00304 808A83B4 03E00008 */ jr $ra
/* 00308 808A83B8 00000000 */ nop
@@ -1,375 +0,0 @@
.rdata
glabel D_808A89D0
.asciz "../z_bg_po_syokudai.c"
.balign 4
glabel D_808A89E8
.asciz "../z_bg_po_syokudai.c"
.balign 4
glabel D_808A8A00
.asciz "../z_bg_po_syokudai.c"
.balign 4
glabel D_808A8A18
.asciz "../z_bg_po_syokudai.c"
.balign 4
.late_rodata
glabel D_808A8A34
.float 0.3
glabel D_808A8A38
.float 0.7
glabel D_808A8A3C
.float 9.58738019108e-05
glabel D_808A8A40
.float 0.0027
.text
glabel BgPoSyokudai_Draw
/* 00390 808A8440 27BDFF70 */ addiu $sp, $sp, 0xFF70 ## $sp = FFFFFF70
/* 00394 808A8444 AFB10038 */ sw $s1, 0x0038($sp)
/* 00398 808A8448 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 0039C 808A844C AFBF003C */ sw $ra, 0x003C($sp)
/* 003A0 808A8450 AFB00034 */ sw $s0, 0x0034($sp)
/* 003A4 808A8454 AFA40090 */ sw $a0, 0x0090($sp)
/* 003A8 808A8458 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
/* 003AC 808A845C 3C06808B */ lui $a2, %hi(D_808A89D0) ## $a2 = 808B0000
/* 003B0 808A8460 24C689D0 */ addiu $a2, $a2, %lo(D_808A89D0) ## $a2 = 808A89D0
/* 003B4 808A8464 27A40070 */ addiu $a0, $sp, 0x0070 ## $a0 = FFFFFFE0
/* 003B8 808A8468 2407013B */ addiu $a3, $zero, 0x013B ## $a3 = 0000013B
/* 003BC 808A846C 0C031AB1 */ jal Graph_OpenDisps
/* 003C0 808A8470 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
/* 003C4 808A8474 0C024F46 */ jal func_80093D18
/* 003C8 808A8478 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 003CC 808A847C 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
/* 003D0 808A8480 3C0FDA38 */ lui $t7, 0xDA38 ## $t7 = DA380000
/* 003D4 808A8484 35EF0003 */ ori $t7, $t7, 0x0003 ## $t7 = DA380003
/* 003D8 808A8488 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 003DC 808A848C AE0E02C0 */ sw $t6, 0x02C0($s0) ## 000002C0
/* 003E0 808A8490 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000
/* 003E4 808A8494 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 003E8 808A8498 3C05808B */ lui $a1, %hi(D_808A89E8) ## $a1 = 808B0000
/* 003EC 808A849C 24A589E8 */ addiu $a1, $a1, %lo(D_808A89E8) ## $a1 = 808A89E8
/* 003F0 808A84A0 2406013F */ addiu $a2, $zero, 0x013F ## $a2 = 0000013F
/* 003F4 808A84A4 0C0346A2 */ jal Matrix_NewMtx
/* 003F8 808A84A8 AFA2006C */ sw $v0, 0x006C($sp)
/* 003FC 808A84AC 8FA3006C */ lw $v1, 0x006C($sp)
/* 00400 808A84B0 3C090600 */ lui $t1, 0x0600 ## $t1 = 06000000
/* 00404 808A84B4 252903A0 */ addiu $t1, $t1, 0x03A0 ## $t1 = 060003A0
/* 00408 808A84B8 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 0040C 808A84BC 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
/* 00410 808A84C0 3C19DE00 */ lui $t9, 0xDE00 ## $t9 = DE000000
/* 00414 808A84C4 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00418 808A84C8 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
/* 0041C 808A84CC AE1802C0 */ sw $t8, 0x02C0($s0) ## 000002C0
/* 00420 808A84D0 AC490004 */ sw $t1, 0x0004($v0) ## 00000004
/* 00424 808A84D4 AC590000 */ sw $t9, 0x0000($v0) ## 00000000
/* 00428 808A84D8 8FAA0090 */ lw $t2, 0x0090($sp)
/* 0042C 808A84DC 0C00B2D0 */ jal Flags_GetSwitch
/* 00430 808A84E0 8545001C */ lh $a1, 0x001C($t2) ## 0000001C
/* 00434 808A84E4 10400113 */ beq $v0, $zero, .L808A8934
/* 00438 808A84E8 8FAB0090 */ lw $t3, 0x0090($sp)
/* 0043C 808A84EC 9162014C */ lbu $v0, 0x014C($t3) ## 0000014C
/* 00440 808A84F0 3C0C808B */ lui $t4, %hi(D_808A898C) ## $t4 = 808B0000
/* 00444 808A84F4 3C0D808B */ lui $t5, %hi(D_808A899C) ## $t5 = 808B0000
/* 00448 808A84F8 00021080 */ sll $v0, $v0, 2
/* 0044C 808A84FC 258C898C */ addiu $t4, $t4, %lo(D_808A898C) ## $t4 = 808A898C
/* 00450 808A8500 25AD899C */ addiu $t5, $t5, %lo(D_808A899C) ## $t5 = 808A899C
/* 00454 808A8504 004C4021 */ addu $t0, $v0, $t4
/* 00458 808A8508 004D7021 */ addu $t6, $v0, $t5
/* 0045C 808A850C AFAE0060 */ sw $t6, 0x0060($sp)
/* 00460 808A8510 0C03F66B */ jal Math_Rand_ZeroOne
## Rand.Next() float
/* 00464 808A8514 AFA80064 */ sw $t0, 0x0064($sp)
/* 00468 808A8518 3C01808B */ lui $at, %hi(D_808A8A34) ## $at = 808B0000
/* 0046C 808A851C C4248A34 */ lwc1 $f4, %lo(D_808A8A34)($at)
/* 00470 808A8520 8FA80064 */ lw $t0, 0x0064($sp)
/* 00474 808A8524 3C01808B */ lui $at, %hi(D_808A8A38) ## $at = 808B0000
/* 00478 808A8528 46040182 */ mul.s $f6, $f0, $f4
/* 0047C 808A852C 910F0000 */ lbu $t7, 0x0000($t0) ## 00000000
/* 00480 808A8530 C4288A38 */ lwc1 $f8, %lo(D_808A8A38)($at)
/* 00484 808A8534 8FA40090 */ lw $a0, 0x0090($sp)
/* 00488 808A8538 448F5000 */ mtc1 $t7, $f10 ## $f10 = 0.00
/* 0048C 808A853C 240C00C8 */ addiu $t4, $zero, 0x00C8 ## $t4 = 000000C8
/* 00490 808A8540 24840154 */ addiu $a0, $a0, 0x0154 ## $a0 = 00000154
/* 00494 808A8544 46083080 */ add.s $f2, $f6, $f8
/* 00498 808A8548 05E10005 */ bgez $t7, .L808A8560
/* 0049C 808A854C 46805420 */ cvt.s.w $f16, $f10
/* 004A0 808A8550 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
/* 004A4 808A8554 44819000 */ mtc1 $at, $f18 ## $f18 = 4294967296.00
/* 004A8 808A8558 00000000 */ nop
/* 004AC 808A855C 46128400 */ add.s $f16, $f16, $f18
.L808A8560:
/* 004B0 808A8560 46028102 */ mul.s $f4, $f16, $f2
/* 004B4 808A8564 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 004B8 808A8568 4458F800 */ cfc1 $t8, $31
/* 004BC 808A856C 44C5F800 */ ctc1 $a1, $31
/* 004C0 808A8570 00000000 */ nop
/* 004C4 808A8574 460021A4 */ cvt.w.s $f6, $f4
/* 004C8 808A8578 4445F800 */ cfc1 $a1, $31
/* 004CC 808A857C 00000000 */ nop
/* 004D0 808A8580 30A50078 */ andi $a1, $a1, 0x0078 ## $a1 = 00000000
/* 004D4 808A8584 10A00012 */ beq $a1, $zero, .L808A85D0
/* 004D8 808A8588 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000
/* 004DC 808A858C 44813000 */ mtc1 $at, $f6 ## $f6 = 2147483648.00
/* 004E0 808A8590 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 004E4 808A8594 46062181 */ sub.s $f6, $f4, $f6
/* 004E8 808A8598 44C5F800 */ ctc1 $a1, $31
/* 004EC 808A859C 00000000 */ nop
/* 004F0 808A85A0 460031A4 */ cvt.w.s $f6, $f6
/* 004F4 808A85A4 4445F800 */ cfc1 $a1, $31
/* 004F8 808A85A8 00000000 */ nop
/* 004FC 808A85AC 30A50078 */ andi $a1, $a1, 0x0078 ## $a1 = 00000000
/* 00500 808A85B0 14A00005 */ bne $a1, $zero, .L808A85C8
/* 00504 808A85B4 00000000 */ nop
/* 00508 808A85B8 44053000 */ mfc1 $a1, $f6
/* 0050C 808A85BC 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 00510 808A85C0 10000007 */ beq $zero, $zero, .L808A85E0
/* 00514 808A85C4 00A12825 */ or $a1, $a1, $at ## $a1 = 80000000
.L808A85C8:
/* 00518 808A85C8 10000005 */ beq $zero, $zero, .L808A85E0
/* 0051C 808A85CC 2405FFFF */ addiu $a1, $zero, 0xFFFF ## $a1 = FFFFFFFF
.L808A85D0:
/* 00520 808A85D0 44053000 */ mfc1 $a1, $f6
/* 00524 808A85D4 00000000 */ nop
/* 00528 808A85D8 04A0FFFB */ bltz $a1, .L808A85C8
/* 0052C 808A85DC 00000000 */ nop
.L808A85E0:
/* 00530 808A85E0 91190001 */ lbu $t9, 0x0001($t0) ## 00000001
/* 00534 808A85E4 44D8F800 */ ctc1 $t8, $31
/* 00538 808A85E8 30A500FF */ andi $a1, $a1, 0x00FF ## $a1 = 000000FF
/* 0053C 808A85EC 44994000 */ mtc1 $t9, $f8 ## $f8 = 0.00
/* 00540 808A85F0 07210005 */ bgez $t9, .L808A8608
/* 00544 808A85F4 468042A0 */ cvt.s.w $f10, $f8
/* 00548 808A85F8 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
/* 0054C 808A85FC 44819000 */ mtc1 $at, $f18 ## $f18 = 4294967296.00
/* 00550 808A8600 00000000 */ nop
/* 00554 808A8604 46125280 */ add.s $f10, $f10, $f18
.L808A8608:
/* 00558 808A8608 46025402 */ mul.s $f16, $f10, $f2
/* 0055C 808A860C 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00560 808A8610 4449F800 */ cfc1 $t1, $31
/* 00564 808A8614 44C6F800 */ ctc1 $a2, $31
/* 00568 808A8618 00000000 */ nop
/* 0056C 808A861C 46008124 */ cvt.w.s $f4, $f16
/* 00570 808A8620 4446F800 */ cfc1 $a2, $31
/* 00574 808A8624 00000000 */ nop
/* 00578 808A8628 30C60078 */ andi $a2, $a2, 0x0078 ## $a2 = 00000000
/* 0057C 808A862C 10C00012 */ beq $a2, $zero, .L808A8678
/* 00580 808A8630 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000
/* 00584 808A8634 44812000 */ mtc1 $at, $f4 ## $f4 = 2147483648.00
/* 00588 808A8638 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 0058C 808A863C 46048101 */ sub.s $f4, $f16, $f4
/* 00590 808A8640 44C6F800 */ ctc1 $a2, $31
/* 00594 808A8644 00000000 */ nop
/* 00598 808A8648 46002124 */ cvt.w.s $f4, $f4
/* 0059C 808A864C 4446F800 */ cfc1 $a2, $31
/* 005A0 808A8650 00000000 */ nop
/* 005A4 808A8654 30C60078 */ andi $a2, $a2, 0x0078 ## $a2 = 00000000
/* 005A8 808A8658 14C00005 */ bne $a2, $zero, .L808A8670
/* 005AC 808A865C 00000000 */ nop
/* 005B0 808A8660 44062000 */ mfc1 $a2, $f4
/* 005B4 808A8664 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 005B8 808A8668 10000007 */ beq $zero, $zero, .L808A8688
/* 005BC 808A866C 00C13025 */ or $a2, $a2, $at ## $a2 = 80000000
.L808A8670:
/* 005C0 808A8670 10000005 */ beq $zero, $zero, .L808A8688
/* 005C4 808A8674 2406FFFF */ addiu $a2, $zero, 0xFFFF ## $a2 = FFFFFFFF
.L808A8678:
/* 005C8 808A8678 44062000 */ mfc1 $a2, $f4
/* 005CC 808A867C 00000000 */ nop
/* 005D0 808A8680 04C0FFFB */ bltz $a2, .L808A8670
/* 005D4 808A8684 00000000 */ nop
.L808A8688:
/* 005D8 808A8688 910A0002 */ lbu $t2, 0x0002($t0) ## 00000002
/* 005DC 808A868C 44C9F800 */ ctc1 $t1, $31
/* 005E0 808A8690 30C600FF */ andi $a2, $a2, 0x00FF ## $a2 = 000000FF
/* 005E4 808A8694 448A3000 */ mtc1 $t2, $f6 ## $f6 = 0.00
/* 005E8 808A8698 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
/* 005EC 808A869C 05410004 */ bgez $t2, .L808A86B0
/* 005F0 808A86A0 46803220 */ cvt.s.w $f8, $f6
/* 005F4 808A86A4 44819000 */ mtc1 $at, $f18 ## $f18 = 4294967296.00
/* 005F8 808A86A8 00000000 */ nop
/* 005FC 808A86AC 46124200 */ add.s $f8, $f8, $f18
.L808A86B0:
/* 00600 808A86B0 46024282 */ mul.s $f10, $f8, $f2
/* 00604 808A86B4 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 00608 808A86B8 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000
/* 0060C 808A86BC 444BF800 */ cfc1 $t3, $31
/* 00610 808A86C0 44C7F800 */ ctc1 $a3, $31
/* 00614 808A86C4 00000000 */ nop
/* 00618 808A86C8 46005424 */ cvt.w.s $f16, $f10
/* 0061C 808A86CC 4447F800 */ cfc1 $a3, $31
/* 00620 808A86D0 00000000 */ nop
/* 00624 808A86D4 30E70078 */ andi $a3, $a3, 0x0078 ## $a3 = 00000000
/* 00628 808A86D8 50E00013 */ beql $a3, $zero, .L808A8728
/* 0062C 808A86DC 44078000 */ mfc1 $a3, $f16
/* 00630 808A86E0 44818000 */ mtc1 $at, $f16 ## $f16 = 2147483648.00
/* 00634 808A86E4 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 00638 808A86E8 46105401 */ sub.s $f16, $f10, $f16
/* 0063C 808A86EC 44C7F800 */ ctc1 $a3, $31
/* 00640 808A86F0 00000000 */ nop
/* 00644 808A86F4 46008424 */ cvt.w.s $f16, $f16
/* 00648 808A86F8 4447F800 */ cfc1 $a3, $31
/* 0064C 808A86FC 00000000 */ nop
/* 00650 808A8700 30E70078 */ andi $a3, $a3, 0x0078 ## $a3 = 00000000
/* 00654 808A8704 14E00005 */ bne $a3, $zero, .L808A871C
/* 00658 808A8708 00000000 */ nop
/* 0065C 808A870C 44078000 */ mfc1 $a3, $f16
/* 00660 808A8710 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 00664 808A8714 10000007 */ beq $zero, $zero, .L808A8734
/* 00668 808A8718 00E13825 */ or $a3, $a3, $at ## $a3 = 80000000
.L808A871C:
/* 0066C 808A871C 10000005 */ beq $zero, $zero, .L808A8734
/* 00670 808A8720 2407FFFF */ addiu $a3, $zero, 0xFFFF ## $a3 = FFFFFFFF
/* 00674 808A8724 44078000 */ mfc1 $a3, $f16
.L808A8728:
/* 00678 808A8728 00000000 */ nop
/* 0067C 808A872C 04E0FFFB */ bltz $a3, .L808A871C
/* 00680 808A8730 00000000 */ nop
.L808A8734:
/* 00684 808A8734 44CBF800 */ ctc1 $t3, $31
/* 00688 808A8738 30E700FF */ andi $a3, $a3, 0x00FF ## $a3 = 000000FF
/* 0068C 808A873C 0C01E796 */ jal Lights_PointSetColorAndRadius
/* 00690 808A8740 AFAC0010 */ sw $t4, 0x0010($sp)
/* 00694 808A8744 0C024F61 */ jal func_80093D84
/* 00698 808A8748 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 0069C 808A874C 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 006A0 808A8750 8FA80064 */ lw $t0, 0x0064($sp)
/* 006A4 808A8754 3C0EDB06 */ lui $t6, 0xDB06 ## $t6 = DB060000
/* 006A8 808A8758 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008
/* 006AC 808A875C AE0D02D0 */ sw $t5, 0x02D0($s0) ## 000002D0
/* 006B0 808A8760 35CE0020 */ ori $t6, $t6, 0x0020 ## $t6 = DB060020
/* 006B4 808A8764 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000
/* 006B8 808A8768 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 006BC 808A876C 8FA90090 */ lw $t1, 0x0090($sp)
/* 006C0 808A8770 240F0020 */ addiu $t7, $zero, 0x0020 ## $t7 = 00000020
/* 006C4 808A8774 24180040 */ addiu $t8, $zero, 0x0040 ## $t8 = 00000040
/* 006C8 808A8778 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
/* 006CC 808A877C AFB90018 */ sw $t9, 0x0018($sp)
/* 006D0 808A8780 AFB80014 */ sw $t8, 0x0014($sp)
/* 006D4 808A8784 AFAF0010 */ sw $t7, 0x0010($sp)
/* 006D8 808A8788 AFA0001C */ sw $zero, 0x001C($sp)
/* 006DC 808A878C 852A014E */ lh $t2, 0x014E($t1) ## 0000014E
/* 006E0 808A8790 240E0080 */ addiu $t6, $zero, 0x0080 ## $t6 = 00000080
/* 006E4 808A8794 240D0020 */ addiu $t5, $zero, 0x0020 ## $t5 = 00000020
/* 006E8 808A8798 000A0823 */ subu $at, $zero, $t2
/* 006EC 808A879C 00015880 */ sll $t3, $at, 2
/* 006F0 808A87A0 01615821 */ addu $t3, $t3, $at
/* 006F4 808A87A4 000B5880 */ sll $t3, $t3, 2
/* 006F8 808A87A8 316C01FF */ andi $t4, $t3, 0x01FF ## $t4 = 00000000
/* 006FC 808A87AC AFAC0020 */ sw $t4, 0x0020($sp)
/* 00700 808A87B0 AFAD0024 */ sw $t5, 0x0024($sp)
/* 00704 808A87B4 AFAE0028 */ sw $t6, 0x0028($sp)
/* 00708 808A87B8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 0070C 808A87BC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 00710 808A87C0 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 00714 808A87C4 AFA2005C */ sw $v0, 0x005C($sp)
/* 00718 808A87C8 0C0253D0 */ jal Gfx_TwoTexScroll
/* 0071C 808A87CC AFA80064 */ sw $t0, 0x0064($sp)
/* 00720 808A87D0 8FA3005C */ lw $v1, 0x005C($sp)
/* 00724 808A87D4 8FA80064 */ lw $t0, 0x0064($sp)
/* 00728 808A87D8 3C18FA00 */ lui $t8, 0xFA00 ## $t8 = FA000000
/* 0072C 808A87DC AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 00730 808A87E0 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00734 808A87E4 37188080 */ ori $t8, $t8, 0x8080 ## $t8 = FA008080
/* 00738 808A87E8 44806000 */ mtc1 $zero, $f12 ## $f12 = 0.00
/* 0073C 808A87EC 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008
/* 00740 808A87F0 AE0F02D0 */ sw $t7, 0x02D0($s0) ## 000002D0
/* 00744 808A87F4 AC580000 */ sw $t8, 0x0000($v0) ## 00000000
/* 00748 808A87F8 910C0001 */ lbu $t4, 0x0001($t0) ## 00000001
/* 0074C 808A87FC 91090000 */ lbu $t1, 0x0000($t0) ## 00000000
/* 00750 808A8800 91180002 */ lbu $t8, 0x0002($t0) ## 00000002
/* 00754 808A8804 000C6C00 */ sll $t5, $t4, 16
/* 00758 808A8808 00095600 */ sll $t2, $t1, 24
/* 0075C 808A880C 014D7025 */ or $t6, $t2, $t5 ## $t6 = 00000000
/* 00760 808A8810 0018CA00 */ sll $t9, $t8, 8
/* 00764 808A8814 01D94825 */ or $t1, $t6, $t9 ## $t1 = 00000000
/* 00768 808A8818 352B00FF */ ori $t3, $t1, 0x00FF ## $t3 = 000000FF
/* 0076C 808A881C AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 00770 808A8820 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00774 808A8824 8FA40060 */ lw $a0, 0x0060($sp)
/* 00778 808A8828 3C0AFB00 */ lui $t2, 0xFB00 ## $t2 = FB000000
/* 0077C 808A882C 244C0008 */ addiu $t4, $v0, 0x0008 ## $t4 = 00000008
/* 00780 808A8830 AE0C02D0 */ sw $t4, 0x02D0($s0) ## 000002D0
/* 00784 808A8834 AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
/* 00788 808A8838 90990001 */ lbu $t9, 0x0001($a0) ## 00000001
/* 0078C 808A883C 908F0000 */ lbu $t7, 0x0000($a0) ## 00000000
/* 00790 808A8840 908A0002 */ lbu $t2, 0x0002($a0) ## 00000002
/* 00794 808A8844 00194C00 */ sll $t1, $t9, 16
/* 00798 808A8848 000FC600 */ sll $t8, $t7, 24
/* 0079C 808A884C 03095825 */ or $t3, $t8, $t1 ## $t3 = FA008080
/* 007A0 808A8850 000A6A00 */ sll $t5, $t2, 8
/* 007A4 808A8854 016D7825 */ or $t7, $t3, $t5 ## $t7 = FA008080
/* 007A8 808A8858 3C014250 */ lui $at, 0x4250 ## $at = 42500000
/* 007AC 808A885C 35EE00FF */ ori $t6, $t7, 0x00FF ## $t6 = FA0080FF
/* 007B0 808A8860 44817000 */ mtc1 $at, $f14 ## $f14 = 52.00
/* 007B4 808A8864 44066000 */ mfc1 $a2, $f12
/* 007B8 808A8868 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 007BC 808A886C 0C034261 */ jal Matrix_Translate
/* 007C0 808A8870 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004
/* 007C4 808A8874 863907A0 */ lh $t9, 0x07A0($s1) ## 000007A0
/* 007C8 808A8878 0019C080 */ sll $t8, $t9, 2
/* 007CC 808A887C 02384821 */ addu $t1, $s1, $t8
/* 007D0 808A8880 0C016A7D */ jal func_8005A9F4
/* 007D4 808A8884 8D240790 */ lw $a0, 0x0790($t1) ## 00000790
/* 007D8 808A8888 8FAC0090 */ lw $t4, 0x0090($sp)
/* 007DC 808A888C 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000
/* 007E0 808A8890 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 007E4 808A8894 858A00B6 */ lh $t2, 0x00B6($t4) ## 000000B6
/* 007E8 808A8898 004A5823 */ subu $t3, $v0, $t2
/* 007EC 808A889C 01616821 */ addu $t5, $t3, $at
/* 007F0 808A88A0 000D7C00 */ sll $t7, $t5, 16
/* 007F4 808A88A4 000F7403 */ sra $t6, $t7, 16
/* 007F8 808A88A8 448E2000 */ mtc1 $t6, $f4 ## $f4 = 0.00
/* 007FC 808A88AC 3C01808B */ lui $at, %hi(D_808A8A3C) ## $at = 808B0000
/* 00800 808A88B0 C4328A3C */ lwc1 $f18, %lo(D_808A8A3C)($at)
/* 00804 808A88B4 468021A0 */ cvt.s.w $f6, $f4
/* 00808 808A88B8 46123302 */ mul.s $f12, $f6, $f18
/* 0080C 808A88BC 0C034348 */ jal Matrix_RotateY
/* 00810 808A88C0 00000000 */ nop
/* 00814 808A88C4 3C01808B */ lui $at, %hi(D_808A8A40) ## $at = 808B0000
/* 00818 808A88C8 C42C8A40 */ lwc1 $f12, %lo(D_808A8A40)($at)
/* 0081C 808A88CC 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 00820 808A88D0 44066000 */ mfc1 $a2, $f12
/* 00824 808A88D4 0C0342A3 */ jal Matrix_Scale
/* 00828 808A88D8 46006386 */ mov.s $f14, $f12
/* 0082C 808A88DC 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00830 808A88E0 3C18DA38 */ lui $t8, 0xDA38 ## $t8 = DA380000
/* 00834 808A88E4 37180003 */ ori $t8, $t8, 0x0003 ## $t8 = DA380003
/* 00838 808A88E8 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 0083C 808A88EC AE1902D0 */ sw $t9, 0x02D0($s0) ## 000002D0
/* 00840 808A88F0 AC580000 */ sw $t8, 0x0000($v0) ## 00000000
/* 00844 808A88F4 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 00848 808A88F8 3C05808B */ lui $a1, %hi(D_808A8A00) ## $a1 = 808B0000
/* 0084C 808A88FC 24A58A00 */ addiu $a1, $a1, %lo(D_808A8A00) ## $a1 = 808A8A00
/* 00850 808A8900 24060170 */ addiu $a2, $zero, 0x0170 ## $a2 = 00000170
/* 00854 808A8904 0C0346A2 */ jal Matrix_NewMtx
/* 00858 808A8908 AFA20050 */ sw $v0, 0x0050($sp)
/* 0085C 808A890C 8FA30050 */ lw $v1, 0x0050($sp)
/* 00860 808A8910 3C0A0405 */ lui $t2, 0x0405 ## $t2 = 04050000
/* 00864 808A8914 254AD4E0 */ addiu $t2, $t2, 0xD4E0 ## $t2 = 0404D4E0
/* 00868 808A8918 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 0086C 808A891C 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00870 808A8920 3C0CDE00 */ lui $t4, 0xDE00 ## $t4 = DE000000
/* 00874 808A8924 24490008 */ addiu $t1, $v0, 0x0008 ## $t1 = 00000008
/* 00878 808A8928 AE0902D0 */ sw $t1, 0x02D0($s0) ## 000002D0
/* 0087C 808A892C AC4A0004 */ sw $t2, 0x0004($v0) ## 00000004
/* 00880 808A8930 AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000
.L808A8934:
/* 00884 808A8934 3C06808B */ lui $a2, %hi(D_808A8A18) ## $a2 = 808B0000
/* 00888 808A8938 24C68A18 */ addiu $a2, $a2, %lo(D_808A8A18) ## $a2 = 808A8A18
/* 0088C 808A893C 27A40070 */ addiu $a0, $sp, 0x0070 ## $a0 = FFFFFFE0
/* 00890 808A8940 8E250000 */ lw $a1, 0x0000($s1) ## 00000000
/* 00894 808A8944 0C031AD5 */ jal Graph_CloseDisps
/* 00898 808A8948 24070175 */ addiu $a3, $zero, 0x0175 ## $a3 = 00000175
/* 0089C 808A894C 8FBF003C */ lw $ra, 0x003C($sp)
/* 008A0 808A8950 8FB00034 */ lw $s0, 0x0034($sp)
/* 008A4 808A8954 8FB10038 */ lw $s1, 0x0038($sp)
/* 008A8 808A8958 03E00008 */ jr $ra
/* 008AC 808A895C 27BD0090 */ addiu $sp, $sp, 0x0090 ## $sp = 00000000
@@ -1,189 +0,0 @@
.late_rodata
glabel D_808A8A30
.word 0xC4C3C000
.text
glabel BgPoSyokudai_Init
/* 00000 808A80B0 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8
/* 00004 808A80B4 AFB10030 */ sw $s1, 0x0030($sp)
/* 00008 808A80B8 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 0000C 808A80BC AFBF0034 */ sw $ra, 0x0034($sp)
/* 00010 808A80C0 AFB0002C */ sw $s0, 0x002C($sp)
/* 00014 808A80C4 3C05808B */ lui $a1, %hi(D_808A89CC) ## $a1 = 808B0000
/* 00018 808A80C8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0001C 808A80CC 0C01E037 */ jal Actor_ProcessInitChain
/* 00020 808A80D0 24A589CC */ addiu $a1, $a1, %lo(D_808A89CC) ## $a1 = 808A89CC
/* 00024 808A80D4 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 00028 808A80D8 8619001C */ lh $t9, 0x001C($s0) ## 0000001C
/* 0002C 808A80DC 240900FF */ addiu $t1, $zero, 0x00FF ## $t1 = 000000FF
/* 00030 808A80E0 000EC203 */ sra $t8, $t6, 8
/* 00034 808A80E4 3328003F */ andi $t0, $t9, 0x003F ## $t0 = 00000000
/* 00038 808A80E8 A218014C */ sb $t8, 0x014C($s0) ## 0000014C
/* 0003C 808A80EC A608001C */ sh $t0, 0x001C($s0) ## 0000001C
/* 00040 808A80F0 A20900AE */ sb $t1, 0x00AE($s0) ## 000000AE
/* 00044 808A80F4 26060154 */ addiu $a2, $s0, 0x0154 ## $a2 = 00000154
/* 00048 808A80F8 AFA6003C */ sw $a2, 0x003C($sp)
/* 0004C 808A80FC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00050 808A8100 0C01E9D9 */ jal LightContext_InsertLight
/* 00054 808A8104 262507A8 */ addiu $a1, $s1, 0x07A8 ## $a1 = 000007A8
/* 00058 808A8108 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028
/* 0005C 808A810C C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
/* 00060 808A8110 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C
/* 00064 808A8114 4600428D */ trunc.w.s $f10, $f8
/* 00068 808A8118 AE020150 */ sw $v0, 0x0150($s0) ## 00000150
/* 0006C 808A811C AFA0001C */ sw $zero, 0x001C($sp)
/* 00070 808A8120 4600218D */ trunc.w.s $f6, $f4
/* 00074 808A8124 44065000 */ mfc1 $a2, $f10
/* 00078 808A8128 AFA00018 */ sw $zero, 0x0018($sp)
/* 0007C 808A812C 4600848D */ trunc.w.s $f18, $f16
/* 00080 808A8130 44053000 */ mfc1 $a1, $f6
/* 00084 808A8134 00063400 */ sll $a2, $a2, 16
/* 00088 808A8138 00063403 */ sra $a2, $a2, 16
/* 0008C 808A813C 44079000 */ mfc1 $a3, $f18
/* 00090 808A8140 24C60041 */ addiu $a2, $a2, 0x0041 ## $a2 = 00000041
/* 00094 808A8144 00063400 */ sll $a2, $a2, 16
/* 00098 808A8148 00052C00 */ sll $a1, $a1, 16
/* 0009C 808A814C 00073C00 */ sll $a3, $a3, 16
/* 000A0 808A8150 00073C03 */ sra $a3, $a3, 16
/* 000A4 808A8154 00052C03 */ sra $a1, $a1, 16
/* 000A8 808A8158 00063403 */ sra $a2, $a2, 16
/* 000AC 808A815C AFA00014 */ sw $zero, 0x0014($sp)
/* 000B0 808A8160 AFA00010 */ sw $zero, 0x0010($sp)
/* 000B4 808A8164 0C01E77C */ jal Lights_PointGlowSetInfo
/* 000B8 808A8168 8FA4003C */ lw $a0, 0x003C($sp)
/* 000BC 808A816C 26050164 */ addiu $a1, $s0, 0x0164 ## $a1 = 00000164
/* 000C0 808A8170 AFA5003C */ sw $a1, 0x003C($sp)
/* 000C4 808A8174 0C0170D9 */ jal Collider_InitCylinder
/* 000C8 808A8178 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 000CC 808A817C 3C07808B */ lui $a3, %hi(D_808A8960) ## $a3 = 808B0000
/* 000D0 808A8180 8FA5003C */ lw $a1, 0x003C($sp)
/* 000D4 808A8184 24E78960 */ addiu $a3, $a3, %lo(D_808A8960) ## $a3 = 808A8960
/* 000D8 808A8188 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 000DC 808A818C 0C01712B */ jal Collider_SetCylinder
/* 000E0 808A8190 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 000E4 808A8194 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
/* 000E8 808A8198 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028
/* 000EC 808A819C C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C
/* 000F0 808A81A0 4600218D */ trunc.w.s $f6, $f4
/* 000F4 808A81A4 9209014C */ lbu $t1, 0x014C($s0) ## 0000014C
/* 000F8 808A81A8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 000FC 808A81AC 4600428D */ trunc.w.s $f10, $f8
/* 00100 808A81B0 440E3000 */ mfc1 $t6, $f6
/* 00104 808A81B4 4600848D */ trunc.w.s $f18, $f16
/* 00108 808A81B8 44185000 */ mfc1 $t8, $f10
/* 0010C 808A81BC A60E01AA */ sh $t6, 0x01AA($s0) ## 000001AA
/* 00110 808A81C0 44089000 */ mfc1 $t0, $f18
/* 00114 808A81C4 A61801AC */ sh $t8, 0x01AC($s0) ## 000001AC
/* 00118 808A81C8 15200025 */ bne $t1, $zero, .L808A8260
/* 0011C 808A81CC A60801AE */ sh $t0, 0x01AE($s0) ## 000001AE
/* 00120 808A81D0 0C00B2D0 */ jal Flags_GetSwitch
/* 00124 808A81D4 2405001F */ addiu $a1, $zero, 0x001F ## $a1 = 0000001F
/* 00128 808A81D8 10400021 */ beq $v0, $zero, .L808A8260
/* 0012C 808A81DC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00130 808A81E0 0C00B2D0 */ jal Flags_GetSwitch
/* 00134 808A81E4 2405001E */ addiu $a1, $zero, 0x001E ## $a1 = 0000001E
/* 00138 808A81E8 1040001D */ beq $v0, $zero, .L808A8260
/* 0013C 808A81EC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00140 808A81F0 0C00B2D0 */ jal Flags_GetSwitch
/* 00144 808A81F4 2405001D */ addiu $a1, $zero, 0x001D ## $a1 = 0000001D
/* 00148 808A81F8 10400019 */ beq $v0, $zero, .L808A8260
/* 0014C 808A81FC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00150 808A8200 0C00B2D0 */ jal Flags_GetSwitch
/* 00154 808A8204 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 00158 808A8208 14400015 */ bne $v0, $zero, .L808A8260
/* 0015C 808A820C 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24
/* 00160 808A8210 3C014361 */ lui $at, 0x4361 ## $at = 43610000
/* 00164 808A8214 44812000 */ mtc1 $at, $f4 ## $f4 = 225.00
/* 00168 808A8218 3C01808B */ lui $at, %hi(D_808A8A30) ## $at = 808B0000
/* 0016C 808A821C C4268A30 */ lwc1 $f6, %lo(D_808A8A30)($at)
/* 00170 808A8220 AFA00018 */ sw $zero, 0x0018($sp)
/* 00174 808A8224 AFA0001C */ sw $zero, 0x001C($sp)
/* 00178 808A8228 AFA00020 */ sw $zero, 0x0020($sp)
/* 0017C 808A822C E7A40010 */ swc1 $f4, 0x0010($sp)
/* 00180 808A8230 E7A60014 */ swc1 $f6, 0x0014($sp)
/* 00184 808A8234 860A001C */ lh $t2, 0x001C($s0) ## 0000001C
/* 00188 808A8238 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 0018C 808A823C 24060091 */ addiu $a2, $zero, 0x0091 ## $a2 = 00000091
/* 00190 808A8240 3C0742EE */ lui $a3, 0x42EE ## $a3 = 42EE0000
/* 00194 808A8244 0C00C7D4 */ jal Actor_Spawn
## ActorSpawn
/* 00198 808A8248 AFAA0024 */ sw $t2, 0x0024($sp)
/* 0019C 808A824C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 001A0 808A8250 00310821 */ addu $at, $at, $s1
/* 001A4 808A8254 240B0004 */ addiu $t3, $zero, 0x0004 ## $t3 = 00000004
/* 001A8 808A8258 1000002D */ beq $zero, $zero, .L808A8310
/* 001AC 808A825C A02B0AE3 */ sb $t3, 0x0AE3($at) ## 00010AE3
.L808A8260:
/* 001B0 808A8260 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 001B4 808A8264 0C00B2D0 */ jal Flags_GetSwitch
/* 001B8 808A8268 2405001C */ addiu $a1, $zero, 0x001C ## $a1 = 0000001C
/* 001BC 808A826C 1440001B */ bne $v0, $zero, .L808A82DC
/* 001C0 808A8270 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 001C4 808A8274 0C00B2D0 */ jal Flags_GetSwitch
/* 001C8 808A8278 2405001B */ addiu $a1, $zero, 0x001B ## $a1 = 0000001B
/* 001CC 808A827C 14400017 */ bne $v0, $zero, .L808A82DC
/* 001D0 808A8280 3C014250 */ lui $at, 0x4250 ## $at = 42500000
/* 001D4 808A8284 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028
/* 001D8 808A8288 44815000 */ mtc1 $at, $f10 ## $f10 = 52.00
/* 001DC 808A828C 8E070024 */ lw $a3, 0x0024($s0) ## 00000024
/* 001E0 808A8290 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24
/* 001E4 808A8294 460A4400 */ add.s $f16, $f8, $f10
/* 001E8 808A8298 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 001EC 808A829C 24060091 */ addiu $a2, $zero, 0x0091 ## $a2 = 00000091
/* 001F0 808A82A0 E7B00010 */ swc1 $f16, 0x0010($sp)
/* 001F4 808A82A4 C612002C */ lwc1 $f18, 0x002C($s0) ## 0000002C
/* 001F8 808A82A8 AFA00020 */ sw $zero, 0x0020($sp)
/* 001FC 808A82AC AFA0001C */ sw $zero, 0x001C($sp)
/* 00200 808A82B0 AFA00018 */ sw $zero, 0x0018($sp)
/* 00204 808A82B4 E7B20014 */ swc1 $f18, 0x0014($sp)
/* 00208 808A82B8 920C014C */ lbu $t4, 0x014C($s0) ## 0000014C
/* 0020C 808A82BC 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 00210 808A82C0 000C6A00 */ sll $t5, $t4, 8
/* 00214 808A82C4 01AE7821 */ addu $t7, $t5, $t6
/* 00218 808A82C8 25F81000 */ addiu $t8, $t7, 0x1000 ## $t8 = 00001000
/* 0021C 808A82CC 0C00C7D4 */ jal Actor_Spawn
## ActorSpawn
/* 00220 808A82D0 AFB80024 */ sw $t8, 0x0024($sp)
/* 00224 808A82D4 1000000E */ beq $zero, $zero, .L808A8310
/* 00228 808A82D8 00000000 */ nop
.L808A82DC:
/* 0022C 808A82DC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00230 808A82E0 0C00B2D0 */ jal Flags_GetSwitch
/* 00234 808A82E4 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 00238 808A82E8 14400009 */ bne $v0, $zero, .L808A8310
/* 0023C 808A82EC 3C190001 */ lui $t9, 0x0001 ## $t9 = 00010000
/* 00240 808A82F0 0331C821 */ addu $t9, $t9, $s1
/* 00244 808A82F4 93390AE3 */ lbu $t9, 0x0AE3($t9) ## 00010AE3
/* 00248 808A82F8 240100FF */ addiu $at, $zero, 0x00FF ## $at = 000000FF
/* 0024C 808A82FC 24080004 */ addiu $t0, $zero, 0x0004 ## $t0 = 00000004
/* 00250 808A8300 17210003 */ bne $t9, $at, .L808A8310
/* 00254 808A8304 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00258 808A8308 00310821 */ addu $at, $at, $s1
/* 0025C 808A830C A0280AE3 */ sb $t0, 0x0AE3($at) ## 00010AE3
.L808A8310:
/* 00260 808A8310 0C03F66B */ jal Math_Rand_ZeroOne
## Rand.Next() float
/* 00264 808A8314 00000000 */ nop
/* 00268 808A8318 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000
/* 0026C 808A831C 44812000 */ mtc1 $at, $f4 ## $f4 = 20.00
/* 00270 808A8320 00000000 */ nop
/* 00274 808A8324 46040182 */ mul.s $f6, $f0, $f4
/* 00278 808A8328 4600320D */ trunc.w.s $f8, $f6
/* 0027C 808A832C 440A4000 */ mfc1 $t2, $f8
/* 00280 808A8330 00000000 */ nop
/* 00284 808A8334 A60A014E */ sh $t2, 0x014E($s0) ## 0000014E
/* 00288 808A8338 8FBF0034 */ lw $ra, 0x0034($sp)
/* 0028C 808A833C 8FB10030 */ lw $s1, 0x0030($sp)
/* 00290 808A8340 8FB0002C */ lw $s0, 0x002C($sp)
/* 00294 808A8344 03E00008 */ jr $ra
/* 00298 808A8348 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000
@@ -1,38 +0,0 @@
glabel BgPoSyokudai_Update
/* 0030C 808A83BC 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00310 808A83C0 AFB00018 */ sw $s0, 0x0018($sp)
/* 00314 808A83C4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00318 808A83C8 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 0031C 808A83CC 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
/* 00320 808A83D0 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00324 808A83D4 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00328 808A83D8 AFBF001C */ sw $ra, 0x001C($sp)
/* 0032C 808A83DC 00A12821 */ addu $a1, $a1, $at
/* 00330 808A83E0 26060164 */ addiu $a2, $s0, 0x0164 ## $a2 = 00000164
/* 00334 808A83E4 AFA60020 */ sw $a2, 0x0020($sp)
/* 00338 808A83E8 AFA50024 */ sw $a1, 0x0024($sp)
/* 0033C 808A83EC 0C01767D */ jal CollisionCheck_SetAC
## CollisionCheck_setAC
/* 00340 808A83F0 AFA70034 */ sw $a3, 0x0034($sp)
/* 00344 808A83F4 8FA50024 */ lw $a1, 0x0024($sp)
/* 00348 808A83F8 8FA60020 */ lw $a2, 0x0020($sp)
/* 0034C 808A83FC 0C017713 */ jal CollisionCheck_SetOC
## CollisionCheck_setOT
/* 00350 808A8400 8FA40034 */ lw $a0, 0x0034($sp)
/* 00354 808A8404 8FA40034 */ lw $a0, 0x0034($sp)
/* 00358 808A8408 0C00B2D0 */ jal Flags_GetSwitch
/* 0035C 808A840C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 00360 808A8410 10400003 */ beq $v0, $zero, .L808A8420
/* 00364 808A8414 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00368 808A8418 0C00BE5D */ jal func_8002F974
/* 0036C 808A841C 24052031 */ addiu $a1, $zero, 0x2031 ## $a1 = 00002031
.L808A8420:
/* 00370 808A8420 860E014E */ lh $t6, 0x014E($s0) ## 0000014E
/* 00374 808A8424 25CF0001 */ addiu $t7, $t6, 0x0001 ## $t7 = 00000001
/* 00378 808A8428 A60F014E */ sh $t7, 0x014E($s0) ## 0000014E
/* 0037C 808A842C 8FBF001C */ lw $ra, 0x001C($sp)
/* 00380 808A8430 8FB00018 */ lw $s0, 0x0018($sp)
/* 00384 808A8434 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00388 808A8438 03E00008 */ jr $ra
/* 0038C 808A843C 00000000 */ nop
@@ -1,14 +0,0 @@
glabel BgSpot18Shutter_Destroy
/* 001AC 808B957C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 001B0 808B9580 AFA40018 */ sw $a0, 0x0018($sp)
/* 001B4 808B9584 8FAE0018 */ lw $t6, 0x0018($sp)
/* 001B8 808B9588 AFBF0014 */ sw $ra, 0x0014($sp)
/* 001BC 808B958C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 001C0 808B9590 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
/* 001C4 808B9594 0C00FB56 */ jal DynaPolyInfo_Free
## DynaPolyInfo_delReserve
/* 001C8 808B9598 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
/* 001CC 808B959C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 001D0 808B95A0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 001D4 808B95A4 03E00008 */ jr $ra
/* 001D8 808B95A8 00000000 */ nop
@@ -1,15 +0,0 @@
glabel BgSpot18Shutter_Draw
/* 0044C 808B981C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00450 808B9820 AFA40018 */ sw $a0, 0x0018($sp)
/* 00454 808B9824 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00458 808B9828 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0045C 808B982C 3C050600 */ lui $a1, 0x0600 ## $a1 = 06000000
/* 00460 808B9830 0C00D498 */ jal Gfx_DrawDListOpa
/* 00464 808B9834 24A50420 */ addiu $a1, $a1, 0x0420 ## $a1 = 06000420
/* 00468 808B9838 8FBF0014 */ lw $ra, 0x0014($sp)
/* 0046C 808B983C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00470 808B9840 03E00008 */ jr $ra
/* 00474 808B9844 00000000 */ nop
/* 00478 808B9848 00000000 */ nop
/* 0047C 808B984C 00000000 */ nop
@@ -1,121 +0,0 @@
glabel BgSpot18Shutter_Init
/* 00000 808B93D0 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 00004 808B93D4 AFBF001C */ sw $ra, 0x001C($sp)
/* 00008 808B93D8 AFB00018 */ sw $s0, 0x0018($sp)
/* 0000C 808B93DC AFA5003C */ sw $a1, 0x003C($sp)
/* 00010 808B93E0 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00014 808B93E4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00018 808B93E8 AFA00028 */ sw $zero, 0x0028($sp)
/* 0001C 808B93EC 000E7A03 */ sra $t7, $t6, 8
/* 00020 808B93F0 31F80001 */ andi $t8, $t7, 0x0001 ## $t8 = 00000000
/* 00024 808B93F4 AFB8002C */ sw $t8, 0x002C($sp)
/* 00028 808B93F8 0C010D20 */ jal DynaPolyInfo_SetActorMove
/* 0002C 808B93FC 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00030 808B9400 3C05808C */ lui $a1, %hi(D_808B9870) ## $a1 = 808C0000
/* 00034 808B9404 24A59870 */ addiu $a1, $a1, %lo(D_808B9870) ## $a1 = 808B9870
/* 00038 808B9408 0C01E037 */ jal Actor_ProcessInitChain
/* 0003C 808B940C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00040 808B9410 8FB9002C */ lw $t9, 0x002C($sp)
/* 00044 808B9414 3C038016 */ lui $v1, %hi(gSaveContext)
/* 00048 808B9418 24010011 */ addiu $at, $zero, 0x0011 ## $at = 00000011
/* 0004C 808B941C 1720002D */ bne $t9, $zero, .L808B94D4
/* 00050 808B9420 2463E660 */ addiu $v1, %lo(gSaveContext)
/* 00054 808B9424 3C038016 */ lui $v1, %hi(gSaveContext)
/* 00058 808B9428 2463E660 */ addiu $v1, %lo(gSaveContext)
/* 0005C 808B942C 8C680004 */ lw $t0, 0x0004($v1) ## 8015E664
/* 00060 808B9430 24020011 */ addiu $v0, $zero, 0x0011 ## $v0 = 00000011
/* 00064 808B9434 11000003 */ beq $t0, $zero, .L808B9444
/* 00068 808B9438 00000000 */ nop
/* 0006C 808B943C 10000001 */ beq $zero, $zero, .L808B9444
/* 00070 808B9440 24020005 */ addiu $v0, $zero, 0x0005 ## $v0 = 00000005
.L808B9444:
/* 00074 808B9444 54410012 */ bnel $v0, $at, .L808B9490
/* 00078 808B9448 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 0007C 808B944C 94690F18 */ lhu $t1, 0x0F18($v1) ## 8015F578
/* 00080 808B9450 3C0C808C */ lui $t4, %hi(func_808B9618) ## $t4 = 808C0000
/* 00084 808B9454 3C014334 */ lui $at, 0x4334 ## $at = 43340000
/* 00088 808B9458 312A0200 */ andi $t2, $t1, 0x0200 ## $t2 = 00000000
/* 0008C 808B945C 11400009 */ beq $t2, $zero, .L808B9484
/* 00090 808B9460 258C9618 */ addiu $t4, $t4, %lo(func_808B9618) ## $t4 = 808B9618
/* 00094 808B9464 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
/* 00098 808B9468 44813000 */ mtc1 $at, $f6 ## $f6 = 180.00
/* 0009C 808B946C 3C0B808C */ lui $t3, %hi(func_808B95AC) ## $t3 = 808C0000
/* 000A0 808B9470 256B95AC */ addiu $t3, $t3, %lo(func_808B95AC) ## $t3 = 808B95AC
/* 000A4 808B9474 46062200 */ add.s $f8, $f4, $f6
/* 000A8 808B9478 AE0B0164 */ sw $t3, 0x0164($s0) ## 00000164
/* 000AC 808B947C 10000030 */ beq $zero, $zero, .L808B9540
/* 000B0 808B9480 E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028
.L808B9484:
/* 000B4 808B9484 1000002E */ beq $zero, $zero, .L808B9540
/* 000B8 808B9488 AE0C0164 */ sw $t4, 0x0164($s0) ## 00000164
/* 000BC 808B948C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
.L808B9490:
/* 000C0 808B9490 8FA4003C */ lw $a0, 0x003C($sp)
/* 000C4 808B9494 0C00B2D0 */ jal Flags_GetSwitch
/* 000C8 808B9498 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
/* 000CC 808B949C 1040000A */ beq $v0, $zero, .L808B94C8
/* 000D0 808B94A0 3C0E808C */ lui $t6, %hi(func_808B95B8) ## $t6 = 808C0000
/* 000D4 808B94A4 3C014334 */ lui $at, 0x4334 ## $at = 43340000
/* 000D8 808B94A8 44818000 */ mtc1 $at, $f16 ## $f16 = 180.00
/* 000DC 808B94AC C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
/* 000E0 808B94B0 3C0D808C */ lui $t5, %hi(func_808B95AC) ## $t5 = 808C0000
/* 000E4 808B94B4 25AD95AC */ addiu $t5, $t5, %lo(func_808B95AC) ## $t5 = 808B95AC
/* 000E8 808B94B8 46105480 */ add.s $f18, $f10, $f16
/* 000EC 808B94BC AE0D0164 */ sw $t5, 0x0164($s0) ## 00000164
/* 000F0 808B94C0 1000001F */ beq $zero, $zero, .L808B9540
/* 000F4 808B94C4 E6120028 */ swc1 $f18, 0x0028($s0) ## 00000028
.L808B94C8:
/* 000F8 808B94C8 25CE95B8 */ addiu $t6, $t6, %lo(func_808B95B8) ## $t6 = 808B95B8
/* 000FC 808B94CC 1000001C */ beq $zero, $zero, .L808B9540
/* 00100 808B94D0 AE0E0164 */ sw $t6, 0x0164($s0) ## 00000164
.L808B94D4:
/* 00104 808B94D4 946F0F18 */ lhu $t7, 0x0F18($v1) ## 00000F18
/* 00108 808B94D8 3C08808C */ lui $t0, %hi(func_808B9618) ## $t0 = 808C0000
/* 0010C 808B94DC 25089618 */ addiu $t0, $t0, %lo(func_808B9618) ## $t0 = 808B9618
/* 00110 808B94E0 31F80200 */ andi $t8, $t7, 0x0200 ## $t8 = 00000000
/* 00114 808B94E4 53000016 */ beql $t8, $zero, .L808B9540
/* 00118 808B94E8 AE080164 */ sw $t0, 0x0164($s0) ## 00000164
/* 0011C 808B94EC 0C01DE0D */ jal Math_Coss
## coss?
/* 00120 808B94F0 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 00124 808B94F4 3C0142FA */ lui $at, 0x42FA ## $at = 42FA0000
/* 00128 808B94F8 44813000 */ mtc1 $at, $f6 ## $f6 = 125.00
/* 0012C 808B94FC C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
/* 00130 808B9500 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 00134 808B9504 46003202 */ mul.s $f8, $f6, $f0
/* 00138 808B9508 46082280 */ add.s $f10, $f4, $f8
/* 0013C 808B950C 0C01DE1C */ jal Math_Sins
## sins?
/* 00140 808B9510 E60A0024 */ swc1 $f10, 0x0024($s0) ## 00000024
/* 00144 808B9514 3C0142FA */ lui $at, 0x42FA ## $at = 42FA0000
/* 00148 808B9518 44819000 */ mtc1 $at, $f18 ## $f18 = 125.00
/* 0014C 808B951C C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C
/* 00150 808B9520 3C19808C */ lui $t9, %hi(func_808B95AC) ## $t9 = 808C0000
/* 00154 808B9524 46009182 */ mul.s $f6, $f18, $f0
/* 00158 808B9528 273995AC */ addiu $t9, $t9, %lo(func_808B95AC) ## $t9 = 808B95AC
/* 0015C 808B952C AE190164 */ sw $t9, 0x0164($s0) ## 00000164
/* 00160 808B9530 46068101 */ sub.s $f4, $f16, $f6
/* 00164 808B9534 10000002 */ beq $zero, $zero, .L808B9540
/* 00168 808B9538 E604002C */ swc1 $f4, 0x002C($s0) ## 0000002C
/* 0016C 808B953C AE080164 */ sw $t0, 0x0164($s0) ## 00000164
.L808B9540:
/* 00170 808B9540 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000
/* 00174 808B9544 24840534 */ addiu $a0, $a0, 0x0534 ## $a0 = 06000534
/* 00178 808B9548 0C010620 */ jal DynaPolyInfo_Alloc
/* 0017C 808B954C 27A50028 */ addiu $a1, $sp, 0x0028 ## $a1 = FFFFFFF0
/* 00180 808B9550 8FA4003C */ lw $a0, 0x003C($sp)
/* 00184 808B9554 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 00188 808B9558 8FA70028 */ lw $a3, 0x0028($sp)
/* 0018C 808B955C 0C00FA9D */ jal DynaPolyInfo_RegisterActor
## DynaPolyInfo_setActor
/* 00190 808B9560 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
/* 00194 808B9564 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
/* 00198 808B9568 8FBF001C */ lw $ra, 0x001C($sp)
/* 0019C 808B956C 8FB00018 */ lw $s0, 0x0018($sp)
/* 001A0 808B9570 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 001A4 808B9574 03E00008 */ jr $ra
/* 001A8 808B9578 00000000 */ nop
@@ -1,10 +0,0 @@
glabel BgSpot18Shutter_Update
/* 00428 808B97F8 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0042C 808B97FC AFBF0014 */ sw $ra, 0x0014($sp)
/* 00430 808B9800 8C990164 */ lw $t9, 0x0164($a0) ## 00000164
/* 00434 808B9804 0320F809 */ jalr $ra, $t9
/* 00438 808B9808 00000000 */ nop
/* 0043C 808B980C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00440 808B9810 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00444 808B9814 03E00008 */ jr $ra
/* 00448 808B9818 00000000 */ nop
@@ -1,4 +0,0 @@
glabel func_808B95AC
/* 001DC 808B95AC AFA40000 */ sw $a0, 0x0000($sp)
/* 001E0 808B95B0 03E00008 */ jr $ra
/* 001E4 808B95B4 AFA50004 */ sw $a1, 0x0004($sp)
@@ -1,28 +0,0 @@
glabel func_808B95B8
/* 001E8 808B95B8 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 001EC 808B95BC AFA40018 */ sw $a0, 0x0018($sp)
/* 001F0 808B95C0 8FAE0018 */ lw $t6, 0x0018($sp)
/* 001F4 808B95C4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 001F8 808B95C8 AFA5001C */ sw $a1, 0x001C($sp)
/* 001FC 808B95CC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00200 808B95D0 85C5001C */ lh $a1, 0x001C($t6) ## 0000001C
/* 00204 808B95D4 0C00B2D0 */ jal Flags_GetSwitch
/* 00208 808B95D8 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
/* 0020C 808B95DC 1040000A */ beq $v0, $zero, .L808B9608
/* 00210 808B95E0 8FA40018 */ lw $a0, 0x0018($sp)
/* 00214 808B95E4 0C00B56E */ jal Actor_SetHeight
/* 00218 808B95E8 3C05428C */ lui $a1, 0x428C ## $a1 = 428C0000
/* 0021C 808B95EC 8FA4001C */ lw $a0, 0x001C($sp)
/* 00220 808B95F0 0C020120 */ jal func_80080480
/* 00224 808B95F4 8FA50018 */ lw $a1, 0x0018($sp)
/* 00228 808B95F8 8FB80018 */ lw $t8, 0x0018($sp)
/* 0022C 808B95FC 3C0F808C */ lui $t7, %hi(func_808B9698) ## $t7 = 808C0000
/* 00230 808B9600 25EF9698 */ addiu $t7, $t7, %lo(func_808B9698) ## $t7 = 808B9698
/* 00234 808B9604 AF0F0164 */ sw $t7, 0x0164($t8) ## 00000164
.L808B9608:
/* 00238 808B9608 8FBF0014 */ lw $ra, 0x0014($sp)
/* 0023C 808B960C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00240 808B9610 03E00008 */ jr $ra
/* 00244 808B9614 00000000 */ nop
@@ -1,36 +0,0 @@
glabel func_808B9618
/* 00248 808B9618 3C0E8016 */ lui $t6, %hi(gSaveContext+0xf18)
/* 0024C 808B961C 95CEF578 */ lhu $t6, %lo(gSaveContext+0xf18)($t6)
/* 00250 808B9620 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00254 808B9624 AFBF001C */ sw $ra, 0x001C($sp)
/* 00258 808B9628 31CF0200 */ andi $t7, $t6, 0x0200 ## $t7 = 00000000
/* 0025C 808B962C AFA50024 */ sw $a1, 0x0024($sp)
/* 00260 808B9630 11E00015 */ beq $t7, $zero, .L808B9688
/* 00264 808B9634 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 00268 808B9638 3C05428C */ lui $a1, 0x428C ## $a1 = 428C0000
/* 0026C 808B963C 0C00B56E */ jal Actor_SetHeight
/* 00270 808B9640 AFA70020 */ sw $a3, 0x0020($sp)
/* 00274 808B9644 8FA70020 */ lw $a3, 0x0020($sp)
/* 00278 808B9648 3C0A808C */ lui $t2, %hi(func_808B971C) ## $t2 = 808C0000
/* 0027C 808B964C 3C09808C */ lui $t1, %hi(func_808B9698) ## $t1 = 808C0000
/* 00280 808B9650 84F8001C */ lh $t8, 0x001C($a3) ## 0000001C
/* 00284 808B9654 254A971C */ addiu $t2, $t2, %lo(func_808B971C) ## $t2 = 808B971C
/* 00288 808B9658 2405107D */ addiu $a1, $zero, 0x107D ## $a1 = 0000107D
/* 0028C 808B965C 0018CA03 */ sra $t9, $t8, 8
/* 00290 808B9660 33280001 */ andi $t0, $t9, 0x0001 ## $t0 = 00000000
/* 00294 808B9664 15000004 */ bne $t0, $zero, .L808B9678
/* 00298 808B9668 2406008C */ addiu $a2, $zero, 0x008C ## $a2 = 0000008C
/* 0029C 808B966C 25299698 */ addiu $t1, $t1, %lo(func_808B9698) ## $t1 = 808B9698
/* 002A0 808B9670 10000005 */ beq $zero, $zero, .L808B9688
/* 002A4 808B9674 ACE90164 */ sw $t1, 0x0164($a3) ## 00000164
.L808B9678:
/* 002A8 808B9678 ACEA0164 */ sw $t2, 0x0164($a3) ## 00000164
/* 002AC 808B967C AFA00010 */ sw $zero, 0x0010($sp)
/* 002B0 808B9680 0C02003E */ jal func_800800F8
/* 002B4 808B9684 8FA40024 */ lw $a0, 0x0024($sp)
.L808B9688:
/* 002B8 808B9688 8FBF001C */ lw $ra, 0x001C($sp)
/* 002BC 808B968C 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 002C0 808B9690 03E00008 */ jr $ra
/* 002C4 808B9694 00000000 */ nop
@@ -1,38 +0,0 @@
glabel func_808B9698
/* 002C8 808B9698 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 002CC 808B969C AFBF0014 */ sw $ra, 0x0014($sp)
/* 002D0 808B96A0 AFA5001C */ sw $a1, 0x001C($sp)
/* 002D4 808B96A4 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 002D8 808B96A8 3C014334 */ lui $at, 0x4334 ## $at = 43340000
/* 002DC 808B96AC 44813000 */ mtc1 $at, $f6 ## $f6 = 180.00
/* 002E0 808B96B0 C4E4000C */ lwc1 $f4, 0x000C($a3) ## 0000000C
/* 002E4 808B96B4 3C063FB8 */ lui $a2, 0x3FB8 ## $a2 = 3FB80000
/* 002E8 808B96B8 34C651EC */ ori $a2, $a2, 0x51EC ## $a2 = 3FB851EC
/* 002EC 808B96BC 46062200 */ add.s $f8, $f4, $f6
/* 002F0 808B96C0 AFA70018 */ sw $a3, 0x0018($sp)
/* 002F4 808B96C4 24840028 */ addiu $a0, $a0, 0x0028 ## $a0 = 00000028
/* 002F8 808B96C8 44054000 */ mfc1 $a1, $f8
/* 002FC 808B96CC 0C01DE80 */ jal Math_ApproxF
/* 00300 808B96D0 00000000 */ nop
/* 00304 808B96D4 1040000A */ beq $v0, $zero, .L808B9700
/* 00308 808B96D8 8FA70018 */ lw $a3, 0x0018($sp)
/* 0030C 808B96DC 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 00310 808B96E0 24052893 */ addiu $a1, $zero, 0x2893 ## $a1 = 00002893
/* 00314 808B96E4 0C00BE0A */ jal Audio_PlayActorSound2
/* 00318 808B96E8 AFA70018 */ sw $a3, 0x0018($sp)
/* 0031C 808B96EC 8FA70018 */ lw $a3, 0x0018($sp)
/* 00320 808B96F0 3C0E808C */ lui $t6, %hi(func_808B95AC) ## $t6 = 808C0000
/* 00324 808B96F4 25CE95AC */ addiu $t6, $t6, %lo(func_808B95AC) ## $t6 = 808B95AC
/* 00328 808B96F8 10000004 */ beq $zero, $zero, .L808B970C
/* 0032C 808B96FC ACEE0164 */ sw $t6, 0x0164($a3) ## 00000164
.L808B9700:
/* 00330 808B9700 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 00334 808B9704 0C00BE5D */ jal func_8002F974
/* 00338 808B9708 2405201E */ addiu $a1, $zero, 0x201E ## $a1 = 0000201E
.L808B970C:
/* 0033C 808B970C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00340 808B9710 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00344 808B9714 03E00008 */ jr $ra
/* 00348 808B9718 00000000 */ nop
@@ -1,63 +0,0 @@
glabel func_808B971C
/* 0034C 808B971C 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00350 808B9720 AFB00018 */ sw $s0, 0x0018($sp)
/* 00354 808B9724 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00358 808B9728 AFBF001C */ sw $ra, 0x001C($sp)
/* 0035C 808B972C AFA50034 */ sw $a1, 0x0034($sp)
/* 00360 808B9730 0C01DE1C */ jal Math_Sins
## sins?
/* 00364 808B9734 84840032 */ lh $a0, 0x0032($a0) ## 00000032
/* 00368 808B9738 E7A0002C */ swc1 $f0, 0x002C($sp)
/* 0036C 808B973C 0C01DE0D */ jal Math_Coss
## coss?
/* 00370 808B9740 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 00374 808B9744 3C0142FA */ lui $at, 0x42FA ## $at = 42FA0000
/* 00378 808B9748 44813000 */ mtc1 $at, $f6 ## $f6 = 125.00
/* 0037C 808B974C 46000086 */ mov.s $f2, $f0
/* 00380 808B9750 C6040008 */ lwc1 $f4, 0x0008($s0) ## 00000008
/* 00384 808B9754 46023202 */ mul.s $f8, $f6, $f2
/* 00388 808B9758 46000005 */ abs.s $f0, $f0
/* 0038C 808B975C 26040024 */ addiu $a0, $s0, 0x0024 ## $a0 = 00000024
/* 00390 808B9760 44060000 */ mfc1 $a2, $f0
/* 00394 808B9764 46082280 */ add.s $f10, $f4, $f8
/* 00398 808B9768 44055000 */ mfc1 $a1, $f10
/* 0039C 808B976C 0C01DE80 */ jal Math_ApproxF
/* 003A0 808B9770 00000000 */ nop
/* 003A4 808B9774 3C0142FA */ lui $at, 0x42FA ## $at = 42FA0000
/* 003A8 808B9778 C7A2002C */ lwc1 $f2, 0x002C($sp)
/* 003AC 808B977C 44819000 */ mtc1 $at, $f18 ## $f18 = 125.00
/* 003B0 808B9780 C6100010 */ lwc1 $f16, 0x0010($s0) ## 00000010
/* 003B4 808B9784 46001005 */ abs.s $f0, $f2
/* 003B8 808B9788 46029182 */ mul.s $f6, $f18, $f2
/* 003BC 808B978C 30430001 */ andi $v1, $v0, 0x0001 ## $v1 = 00000000
/* 003C0 808B9790 44060000 */ mfc1 $a2, $f0
/* 003C4 808B9794 AFA30024 */ sw $v1, 0x0024($sp)
/* 003C8 808B9798 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C
/* 003CC 808B979C 46068101 */ sub.s $f4, $f16, $f6
/* 003D0 808B97A0 44052000 */ mfc1 $a1, $f4
/* 003D4 808B97A4 0C01DE80 */ jal Math_ApproxF
/* 003D8 808B97A8 00000000 */ nop
/* 003DC 808B97AC 8FA30024 */ lw $v1, 0x0024($sp)
/* 003E0 808B97B0 24052893 */ addiu $a1, $zero, 0x2893 ## $a1 = 00002893
/* 003E4 808B97B4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 003E8 808B97B8 00621824 */ and $v1, $v1, $v0
/* 003EC 808B97BC 10600007 */ beq $v1, $zero, .L808B97DC
/* 003F0 808B97C0 00000000 */ nop
/* 003F4 808B97C4 0C00BE0A */ jal Audio_PlayActorSound2
/* 003F8 808B97C8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 003FC 808B97CC 3C0E808C */ lui $t6, %hi(func_808B95AC) ## $t6 = 808C0000
/* 00400 808B97D0 25CE95AC */ addiu $t6, $t6, %lo(func_808B95AC) ## $t6 = 808B95AC
/* 00404 808B97D4 10000003 */ beq $zero, $zero, .L808B97E4
/* 00408 808B97D8 AE0E0164 */ sw $t6, 0x0164($s0) ## 00000164
.L808B97DC:
/* 0040C 808B97DC 0C00BE5D */ jal func_8002F974
/* 00410 808B97E0 2405201E */ addiu $a1, $zero, 0x201E ## $a1 = 0000201E
.L808B97E4:
/* 00414 808B97E4 8FBF001C */ lw $ra, 0x001C($sp)
/* 00418 808B97E8 8FB00018 */ lw $s0, 0x0018($sp)
/* 0041C 808B97EC 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00420 808B97F0 03E00008 */ jr $ra
/* 00424 808B97F4 00000000 */ nop
@@ -1,21 +0,0 @@
glabel ObjHana_Destroy
/* 000F8 80B93958 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 000FC 80B9395C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00100 80B93960 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00104 80B93964 3C1980B9 */ lui $t9, %hi(D_80B93AB0) ## $t9 = 80B90000
/* 00108 80B93968 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 0010C 80B9396C 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00110 80B93970 000FC100 */ sll $t8, $t7, 4
/* 00114 80B93974 0338C821 */ addu $t9, $t9, $t8
/* 00118 80B93978 87393AB0 */ lh $t9, %lo(D_80B93AB0)($t9)
/* 0011C 80B9397C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00120 80B93980 07220004 */ bltzl $t9, .L80B93994
/* 00124 80B93984 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00128 80B93988 0C0170EB */ jal Collider_DestroyCylinder
/* 0012C 80B9398C 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
/* 00130 80B93990 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B93994:
/* 00134 80B93994 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00138 80B93998 03E00008 */ jr $ra
/* 0013C 80B9399C 00000000 */ nop
@@ -1,18 +0,0 @@
glabel ObjHana_Draw
/* 001B0 80B93A10 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 001B4 80B93A14 AFBF0014 */ sw $ra, 0x0014($sp)
/* 001B8 80B93A18 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 001BC 80B93A1C 84EE001C */ lh $t6, 0x001C($a3) ## 0000001C
/* 001C0 80B93A20 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 001C4 80B93A24 3C0580B9 */ lui $a1, %hi(D_80B93AA4) ## $a1 = 80B90000
/* 001C8 80B93A28 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 001CC 80B93A2C 000FC100 */ sll $t8, $t7, 4
/* 001D0 80B93A30 00B82821 */ addu $a1, $a1, $t8
/* 001D4 80B93A34 0C00D498 */ jal Gfx_DrawDListOpa
/* 001D8 80B93A38 8CA53AA4 */ lw $a1, %lo(D_80B93AA4)($a1)
/* 001DC 80B93A3C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 001E0 80B93A40 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 001E4 80B93A44 03E00008 */ jr $ra
/* 001E8 80B93A48 00000000 */ nop
/* 001EC 80B93A4C 00000000 */ nop
@@ -1,72 +0,0 @@
glabel ObjHana_Init
/* 00000 80B93860 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 00004 80B93864 AFBF001C */ sw $ra, 0x001C($sp)
/* 00008 80B93868 AFB10018 */ sw $s1, 0x0018($sp)
/* 0000C 80B9386C AFB00014 */ sw $s0, 0x0014($sp)
/* 00010 80B93870 AFA5003C */ sw $a1, 0x003C($sp)
/* 00014 80B93874 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00018 80B93878 3C0580B9 */ lui $a1, %hi(D_80B93AD4) ## $a1 = 80B90000
/* 0001C 80B9387C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00020 80B93880 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00024 80B93884 A7AF0032 */ sh $t7, 0x0032($sp)
/* 00028 80B93888 0C01E037 */ jal Actor_ProcessInitChain
/* 0002C 80B9388C 24A53AD4 */ addiu $a1, $a1, %lo(D_80B93AD4) ## $a1 = 80B93AD4
/* 00030 80B93890 87B80032 */ lh $t8, 0x0032($sp)
/* 00034 80B93894 3C0880B9 */ lui $t0, %hi(D_80B93AA4) ## $t0 = 80B90000
/* 00038 80B93898 25083AA4 */ addiu $t0, $t0, %lo(D_80B93AA4) ## $t0 = 80B93AA4
/* 0003C 80B9389C 0018C900 */ sll $t9, $t8, 4
/* 00040 80B938A0 03288821 */ addu $s1, $t9, $t0
/* 00044 80B938A4 8E250004 */ lw $a1, 0x0004($s1) ## 00000004
/* 00048 80B938A8 0C00B58B */ jal Actor_SetScale
/* 0004C 80B938AC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00050 80B938B0 C6240008 */ lwc1 $f4, 0x0008($s1) ## 00000008
/* 00054 80B938B4 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00058 80B938B8 E60400BC */ swc1 $f4, 0x00BC($s0) ## 000000BC
/* 0005C 80B938BC 8629000C */ lh $t1, 0x000C($s1) ## 0000000C
/* 00060 80B938C0 8FA4003C */ lw $a0, 0x003C($sp)
/* 00064 80B938C4 05200015 */ bltz $t1, .L80B9391C
/* 00068 80B938C8 00000000 */ nop
/* 0006C 80B938CC 0C0170D9 */ jal Collider_InitCylinder
/* 00070 80B938D0 AFA50024 */ sw $a1, 0x0024($sp)
/* 00074 80B938D4 3C0780B9 */ lui $a3, %hi(D_80B93A70) ## $a3 = 80B90000
/* 00078 80B938D8 24E73A70 */ addiu $a3, $a3, %lo(D_80B93A70) ## $a3 = 80B93A70
/* 0007C 80B938DC 8FA4003C */ lw $a0, 0x003C($sp)
/* 00080 80B938E0 8FA50024 */ lw $a1, 0x0024($sp)
/* 00084 80B938E4 0C01712B */ jal Collider_SetCylinder
/* 00088 80B938E8 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 0008C 80B938EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00090 80B938F0 0C0189B7 */ jal Collider_CylinderUpdate
/* 00094 80B938F4 8FA50024 */ lw $a1, 0x0024($sp)
/* 00098 80B938F8 862A000C */ lh $t2, 0x000C($s1) ## 0000000C
/* 0009C 80B938FC 3C0680B9 */ lui $a2, %hi(D_80B93A9C) ## $a2 = 80B90000
/* 000A0 80B93900 24C63A9C */ addiu $a2, $a2, %lo(D_80B93A9C) ## $a2 = 80B93A9C
/* 000A4 80B93904 A60A018C */ sh $t2, 0x018C($s0) ## 0000018C
/* 000A8 80B93908 862B000E */ lh $t3, 0x000E($s1) ## 0000000E
/* 000AC 80B9390C 26040098 */ addiu $a0, $s0, 0x0098 ## $a0 = 00000098
/* 000B0 80B93910 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 000B4 80B93914 0C0187B5 */ jal func_80061ED4
/* 000B8 80B93918 A60B018E */ sh $t3, 0x018E($s0) ## 0000018E
.L80B9391C:
/* 000BC 80B9391C 3C0C80B9 */ lui $t4, %hi(D_80B93AC4) ## $t4 = 80B90000
/* 000C0 80B93920 258C3AC4 */ addiu $t4, $t4, %lo(D_80B93AC4) ## $t4 = 80B93AC4
/* 000C4 80B93924 162C0007 */ bne $s1, $t4, .L80B93944
/* 000C8 80B93928 3C0D8016 */ lui $t5, %hi(gSaveContext+0xedc)
/* 000CC 80B9392C 95ADF53C */ lhu $t5, %lo(gSaveContext+0xedc)($t5)
/* 000D0 80B93930 31AE0001 */ andi $t6, $t5, 0x0001 ## $t6 = 00000000
/* 000D4 80B93934 51C00004 */ beql $t6, $zero, .L80B93948
/* 000D8 80B93938 8FBF001C */ lw $ra, 0x001C($sp)
/* 000DC 80B9393C 0C00B55C */ jal Actor_Kill
/* 000E0 80B93940 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80B93944:
/* 000E4 80B93944 8FBF001C */ lw $ra, 0x001C($sp)
.L80B93948:
/* 000E8 80B93948 8FB00014 */ lw $s0, 0x0014($sp)
/* 000EC 80B9394C 8FB10018 */ lw $s1, 0x0018($sp)
/* 000F0 80B93950 03E00008 */ jr $ra
/* 000F4 80B93954 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
@@ -1,31 +0,0 @@
glabel ObjHana_Update
/* 00140 80B939A0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00144 80B939A4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00148 80B939A8 AFA5001C */ sw $a1, 0x001C($sp)
/* 0014C 80B939AC 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00150 80B939B0 3C1980B9 */ lui $t9, %hi(D_80B93AB0) ## $t9 = 80B90000
/* 00154 80B939B4 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 00158 80B939B8 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 0015C 80B939BC 000FC100 */ sll $t8, $t7, 4
/* 00160 80B939C0 0338C821 */ addu $t9, $t9, $t8
/* 00164 80B939C4 87393AB0 */ lh $t9, %lo(D_80B93AB0)($t9)
/* 00168 80B939C8 3C0143C8 */ lui $at, 0x43C8 ## $at = 43C80000
/* 0016C 80B939CC 0722000D */ bltzl $t9, .L80B93A04
/* 00170 80B939D0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00174 80B939D4 C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090
/* 00178 80B939D8 44813000 */ mtc1 $at, $f6 ## $f6 = 400.00
/* 0017C 80B939DC 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00180 80B939E0 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00184 80B939E4 4606203C */ c.lt.s $f4, $f6
/* 00188 80B939E8 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 0018C 80B939EC 00A12821 */ addu $a1, $a1, $at
/* 00190 80B939F0 45020004 */ bc1fl .L80B93A04
/* 00194 80B939F4 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00198 80B939F8 0C017713 */ jal CollisionCheck_SetOC
## CollisionCheck_setOT
/* 0019C 80B939FC 24E6014C */ addiu $a2, $a3, 0x014C ## $a2 = 0000014C
/* 001A0 80B93A00 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B93A04:
/* 001A4 80B93A04 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 001A8 80B93A08 03E00008 */ jr $ra
/* 001AC 80B93A0C 00000000 */ nop
+1 -1
View File
@@ -63,7 +63,7 @@ glabel D_801336F0
glabel D_80133738
.incbin "baserom.z64", 0xBAA8D8, 0x90
glabel D_801337C8
glabel gAudioSessionPresets
.incbin "baserom.z64", 0xBAA968, 0x5
glabel D_801337CD
+2
View File
@@ -48,6 +48,8 @@ glabel jtbl_8014A680
glabel D_8014A6C0
.half 0x1C00
glabel gTatumsPerBeat
.half 0x0030
glabel D_8014A6C4
@@ -1,26 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel D_808A8960
.word 0x09000D39, 0x20010000, 0x00000000, 0x00000000, 0x00000000, 0xFFCFFFFF, 0x00000000, 0x00010100, 0x000C003C, 0x00000000, 0x00000000
glabel D_808A898C
.word 0xFFAAFFFF, 0xFFC800FF, 0x00AAFFFF, 0xAAFF00FF
glabel D_808A899C
.word 0x6400FFFF, 0xFF0000FF, 0x0000FFFF, 0x009600FF
glabel Bg_Po_Syokudai_InitVars
.word 0x01050600, 0x00000000, 0x00A40000, 0x000001B0
.word BgPoSyokudai_Init
.word BgPoSyokudai_Destroy
.word BgPoSyokudai_Update
.word BgPoSyokudai_Draw
glabel D_808A89CC
.word 0x485003E8
@@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_808A8A50
.incbin "baserom/ovl_Bg_Po_Syokudai", 0x9A0, 0x00000090
@@ -1,20 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel Bg_Spot18_Shutter_InitVars
.word 0x01C40600, 0x00000030, 0x00AF0000, 0x00000168
.word BgSpot18Shutter_Init
.word BgSpot18Shutter_Destroy
.word BgSpot18Shutter_Update
.word BgSpot18Shutter_Draw
glabel D_808B9870
.word 0x48500064, 0x00000000, 0x00000000, 0x00000000
@@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_808B9880
.incbin "baserom/ovl_Bg_Spot18_Shutter", 0x4B0, 0x00000090
-30
View File
@@ -1,30 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel Obj_Hana_InitVars
.word 0x014F0600, 0x00000000, 0x00020000, 0x00000198
.word ObjHana_Init
.word ObjHana_Destroy
.word ObjHana_Update
.word ObjHana_Draw
glabel D_80B93A70
.word 0x0A000039, 0x20010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x0008000A, 0x00000000, 0x00000000
glabel D_80B93A9C
.word 0x0000000C, 0x003CFF00
glabel D_80B93AA4
.word 0x05000500, 0x3C23D70A, 0x00000000
glabel D_80B93AB0
.word 0xFFFF0000, 0x0500A880, 0x3DCCCCCD, 0x42680000, 0x000A0012
glabel D_80B93AC4
.word 0x0500B9D0, 0x3ECCCCCD, 0x00000000, 0x000C002C
glabel D_80B93AD4
.word 0xC850000A, 0xB0F40384, 0xB0F8003C, 0x30FC0320, 0x00000000, 0x00000000, 0x00000000
-13
View File
@@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_80B93AF0
.incbin "baserom/ovl_Obj_Hana", 0x290, 0x00000070
+525 -219
View File
@@ -1,47 +1,71 @@
#!/usr/bin/env python3
import sys
import re
import os
import ast
import argparse
import subprocess
import difflib
import string
import itertools
import threading
import queue
import time
def fail(msg):
print(msg, file=sys.stderr)
sys.exit(1)
MISSING_PREREQUISITES = (
"Missing prerequisite python module {}. "
"Run `python3 -m pip install --user colorama ansiwrap attrs watchdog python-Levenshtein` to install prerequisites (python-Levenshtein only needed for --algorithm=levenshtein)."
)
try:
import attr
from colorama import Fore, Style, Back
import ansiwrap
import watchdog
except ModuleNotFoundError as e:
fail(MISSING_PREREQUISITES.format(e.name))
# Prefer to use diff_settings.py from the current working directory
sys.path.insert(0, ".")
try:
import diff_settings
except ModuleNotFoundError:
fail("Unable to find diff_settings.py in the same directory.")
sys.path.pop(0)
# ==== CONFIG ====
# ==== COMMAND-LINE ====
try:
import argcomplete # type: ignore
except ModuleNotFoundError:
argcomplete = None
import argparse
parser = argparse.ArgumentParser(description="Diff MIPS assembly.")
parser.add_argument("start", help="Function name or address to start diffing from.")
start_argument = parser.add_argument("start", help="Function name or address to start diffing from.")
if argcomplete:
def complete_symbol(**kwargs):
prefix = kwargs["prefix"]
if prefix == "":
# skip reading the map file, which would
# result in a lot of useless completions
return []
parsed_args = kwargs["parsed_args"]
config = {}
diff_settings.apply(config, parsed_args)
mapfile = config.get("mapfile")
if not mapfile:
return []
completes = []
with open(mapfile) as f:
data = f.read()
# assume symbols are prefixed by a space character
search = f" {prefix}"
pos = data.find(search)
while pos != -1:
# skip the space character in the search string
pos += 1
# assume symbols are suffixed by either a space
# character or a (unix-style) line return
spacePos = data.find(" ", pos)
lineReturnPos = data.find("\n", pos)
if lineReturnPos == -1:
endPos = spacePos
elif spacePos == -1:
endPos = lineReturnPos
else:
endPos = min(spacePos, lineReturnPos)
if endPos == -1:
match = data[pos:]
pos = -1
else:
match = data[pos:endPos]
pos = data.find(search, endPos)
completes.append(match)
return completes
start_argument.completer = complete_symbol
parser.add_argument("end", nargs="?", help="Address to end diff at.")
parser.add_argument(
"-o",
@@ -49,6 +73,22 @@ parser.add_argument(
action="store_true",
help="Diff .o files rather than a whole binary. This makes it possible to see symbol names. (Recommended)",
)
parser.add_argument(
"-e",
"--elf",
dest="diff_elf_symbol",
help="Diff a given function in two ELFs, one being stripped and the other one non-stripped. Requires objdump from binutils 2.33+.",
)
parser.add_argument(
"--source",
action="store_true",
help="Show source code (if possible). Only works with -o and -e.",
)
parser.add_argument(
"--inlines",
action="store_true",
help="Show inline function calls (if possible). Only works with -o and -e.",
)
parser.add_argument(
"--base-asm",
dest="base_asm",
@@ -116,6 +156,14 @@ parser.add_argument(
help="Automatically update when source/object files change. "
"Recommended in combination with -m.",
)
parser.add_argument(
"-3",
"--threeway",
dest="threeway",
action="store_true",
help="Show a three-way diff between target asm, current asm, and asm "
"prior to -w rebuild. Requires -w.",
)
parser.add_argument(
"--width",
dest="column_width",
@@ -126,28 +174,70 @@ parser.add_argument(
parser.add_argument(
"--algorithm",
dest="algorithm",
default="difflib",
default="levenshtein",
choices=["levenshtein", "difflib"],
help="Diff algorithm to use.",
)
parser.add_argument(
"--max-size",
"--max-lines",
dest="max_lines",
type=int,
default=1024,
help="The maximum length of the diff, in lines.",
)
# Project-specific flags, e.g. different versions/make arguments.
if hasattr(diff_settings, "add_custom_arguments"):
diff_settings.add_custom_arguments(parser)
diff_settings.add_custom_arguments(parser) # type: ignore
if argcomplete:
argcomplete.autocomplete(parser)
# ==== IMPORTS ====
import re
import os
import ast
import subprocess
import difflib
import string
import itertools
import threading
import queue
import time
from typing import Any, Dict, List, NamedTuple, Optional, Set, Tuple, Union
MISSING_PREREQUISITES = (
"Missing prerequisite python module {}. "
"Run `python3 -m pip install --user colorama ansiwrap watchdog python-Levenshtein cxxfilt` to install prerequisites (cxxfilt only needed with --source)."
)
try:
from colorama import Fore, Style, Back # type: ignore
import ansiwrap # type: ignore
import watchdog # type: ignore
except ModuleNotFoundError as e:
fail(MISSING_PREREQUISITES.format(e.name))
# ==== CONFIG ====
args = parser.parse_args()
# Set imgs, map file and make flags in a project-specific manner.
config = {}
config: Dict[str, Any] = {}
diff_settings.apply(config, args)
arch = config.get("arch", "mips")
baseimg = config.get("baseimg", None)
myimg = config.get("myimg", None)
mapfile = config.get("mapfile", None)
makeflags = config.get("makeflags", [])
source_directories = config.get("source_directories", None)
objdump_executable = config.get("objdump_executable", None)
MAX_FUNCTION_SIZE_LINES = 4096
MAX_FUNCTION_SIZE_LINES = args.max_lines
MAX_FUNCTION_SIZE_BYTES = MAX_FUNCTION_SIZE_LINES * 4
COLOR_ROTATION = [
@@ -163,7 +253,7 @@ COLOR_ROTATION = [
]
BUFFER_CMD = ["tail", "-c", str(10 ** 9)]
LESS_CMD = ["less", "-Ric"]
LESS_CMD = ["less", "-SRic", "-#6"]
DEBOUNCE_DELAY = 0.1
FS_WATCH_EXTENSIONS = [".c", ".h"]
@@ -172,29 +262,34 @@ FS_WATCH_EXTENSIONS = [".c", ".h"]
if args.algorithm == "levenshtein":
try:
import Levenshtein
import Levenshtein # type: ignore
except ModuleNotFoundError as e:
fail(MISSING_PREREQUISITES.format(e.name))
binutils_prefix = None
for binutils_cand in ["mips-linux-gnu-", "mips64-elf-"]:
if args.source:
try:
subprocess.check_call(
[binutils_cand + "objdump", "--version"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
binutils_prefix = binutils_cand
break
except subprocess.CalledProcessError:
pass
except FileNotFoundError:
pass
import cxxfilt # type: ignore
except ModuleNotFoundError as e:
fail(MISSING_PREREQUISITES.format(e.name))
if not binutils_prefix:
if objdump_executable is None:
for objdump_cand in ["mips-linux-gnu-objdump", "mips64-elf-objdump"]:
try:
subprocess.check_call(
[objdump_cand, "--version"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
objdump_executable = objdump_cand
break
except subprocess.CalledProcessError:
pass
except FileNotFoundError:
pass
if not objdump_executable:
fail(
"Missing binutils; please ensure mips-linux-gnu-objdump or mips64-elf-objdump exist."
"Missing binutils; please ensure mips-linux-gnu-objdump or mips64-elf-objdump exist, or configure objdump_executable."
)
@@ -210,6 +305,10 @@ def eval_int(expr, emsg=None):
return None
def eval_line_num(expr):
return int(expr.strip().replace(":", ""), 16)
def run_make(target, capture_output=False):
if capture_output:
return subprocess.run(
@@ -235,10 +334,26 @@ def restrict_to_function(dump, fn_name):
return "\n".join(out)
def maybe_get_objdump_source_flags():
if not args.source:
return []
flags = [
"--source",
"--source-comment=| ",
"-l",
]
if args.inlines:
flags.append("--inlines")
return flags
def run_objdump(cmd):
flags, target, restrict = cmd
out = subprocess.check_output(
[binutils_prefix + "objdump"] + flags + [target], universal_newlines=True
[objdump_executable] + arch_flags + flags + [target], universal_newlines=True
)
if restrict is not None:
return restrict_to_function(out, restrict)
@@ -291,6 +406,36 @@ def search_map_file(fn_name):
return None, None
def dump_elf():
if not baseimg or not myimg:
fail("Missing myimg/baseimg in config.")
if base_shift:
fail("--base-shift not compatible with -e")
start_addr = eval_int(args.start, "Start address must be an integer expression.")
if args.end is not None:
end_addr = eval_int(args.end, "End address must be an integer expression.")
else:
end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES
flags1 = [
f"--start-address={start_addr}",
f"--stop-address={end_addr}",
]
flags2 = [
f"--disassemble={args.diff_elf_symbol}",
]
objdump_flags = ["-drz", "-j", ".text"]
return (
myimg,
(objdump_flags + flags1, baseimg, None),
(objdump_flags + flags2 + maybe_get_objdump_source_flags(), myimg, None),
)
def dump_objfile():
if base_shift:
fail("--base-shift not compatible with -o")
@@ -317,7 +462,7 @@ def dump_objfile():
return (
objfile,
(objdump_flags, refobjfile, args.start),
(objdump_flags, objfile, args.start),
(objdump_flags + maybe_get_objdump_source_flags(), objfile, args.start),
)
@@ -357,29 +502,47 @@ def ansi_ljust(s, width):
return s
re_int = re.compile(r"[0-9]+")
re_comments = re.compile(r"<.*?>")
re_regs = re.compile(r"\$?\b(a[0-3]|t[0-9]|s[0-8]|at|v[01]|f[12]?[0-9]|f3[01]|fp)\b")
re_sprel = re.compile(r",([1-9][0-9]*|0x[1-9a-f][0-9a-f]*)\(sp\)")
re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}")
re_imm = re.compile(r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(sp)|%(lo|hi)\([^)]*\)")
forbidden = set(string.ascii_letters + "_")
branch_likely_instructions = {
"beql",
"bnel",
"beqzl",
"bnezl",
"bgezl",
"bgtzl",
"blezl",
"bltzl",
"bc1tl",
"bc1fl",
}
branch_instructions = branch_likely_instructions.union(
{"b", "beq", "bne", "beqz", "bnez", "bgez", "bgtz", "blez", "bltz", "bc1t", "bc1f"}
)
jump_instructions = branch_instructions.union({"jal", "j"})
if arch == "mips":
re_int = re.compile(r"[0-9]+")
re_comment = re.compile(r"<.*?>")
re_reg = re.compile(r"\$?\b(a[0-3]|t[0-9]|s[0-8]|at|v[01]|f[12]?[0-9]|f3[01]|k[01]|fp|ra)\b")
re_sprel = re.compile(r"(?<=,)([0-9]+|0x[0-9a-f]+)\(sp\)")
re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}")
re_imm = re.compile(r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(sp)|%(lo|hi)\([^)]*\)")
forbidden = set(string.ascii_letters + "_")
arch_flags = ["-m", "mips:4300"]
branch_likely_instructions = {
"beql",
"bnel",
"beqzl",
"bnezl",
"bgezl",
"bgtzl",
"blezl",
"bltzl",
"bc1tl",
"bc1fl",
}
branch_instructions = branch_likely_instructions.union(
{"b", "beq", "bne", "beqz", "bnez", "bgez", "bgtz", "blez", "bltz", "bc1t", "bc1f"}
)
instructions_with_address_immediates = branch_instructions.union({"jal", "j"})
elif arch == "aarch64":
re_int = re.compile(r"[0-9]+")
re_comment = re.compile(r"(<.*?>|//.*$)")
# GPRs and FP registers: X0-X30, W0-W30, [DSHQ]0..31
# The zero registers and SP should not be in this list.
re_reg = re.compile(r"\$?\b([dshq][12]?[0-9]|[dshq]3[01]|[xw][12]?[0-9]|[xw]30)\b")
re_sprel = re.compile(r"sp, #-?(0x[0-9a-fA-F]+|[0-9]+)\b")
re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}")
re_imm = re.compile(r"(?<!sp, )#-?(0x[0-9a-fA-F]+|[0-9]+)\b")
arch_flags = []
forbidden = set(string.ascii_letters + "_")
branch_likely_instructions = set()
branch_instructions = {"bl", "b", "b.eq", "b.ne", "b.cs", "b.hs", "b.cc", "b.lo", "b.mi", "b.pl", "b.vs", "b.vc", "b.hi", "b.ls", "b.ge", "b.lt", "b.gt", "b.le", "cbz", "cbnz", "tbz", "tbnz"}
instructions_with_address_immediates = branch_instructions.union({"adrp"})
else:
fail("Unknown architecture.")
def hexify_int(row, pat):
@@ -412,11 +575,18 @@ def parse_relocated_line(line):
return before, imm, after
def process_reloc(row, prev):
def process_mips_reloc(row, prev):
before, imm, after = parse_relocated_line(prev)
repl = row.split()[-1]
if imm != "0":
if before.strip() == "jal" and not imm.startswith("0x"):
# MIPS uses relocations with addends embedded in the code as immediates.
# If there is an immediate, show it as part of the relocation. Ideally
# we'd show this addend in both %lo/%hi, but annoyingly objdump's output
# doesn't include enough information to pair up %lo's and %hi's...
# TODO: handle unambiguous cases where all addends for a symbol are the
# same, or show "+???".
mnemonic = prev.split()[0]
if mnemonic in instructions_with_address_immediates and not imm.startswith("0x"):
imm = "0x" + imm
repl += "+" + imm if int(imm, 0) > 0 else imm
if "R_MIPS_LO16" in row:
@@ -431,38 +601,63 @@ def process_reloc(row, prev):
return before + repl + after
def pad_mnemonic(line):
if "\t" not in line:
return line
mn, args = line.split("\t", 1)
return f"{mn:<7s} {args}"
class Line(NamedTuple):
mnemonic: str
diff_row: str
original: str
line_num: str
branch_target: Optional[str]
source_lines: List[str]
comment: Optional[str]
def process(lines):
mnemonics = []
diff_rows = []
rows_with_imms = []
skip_next = False
originals = []
line_nums = []
branch_targets = []
source_lines = []
if not args.diff_obj:
lines = lines[7:]
if lines and not lines[-1]:
lines.pop()
output = []
stop_after_delay_slot = False
for row in lines:
if args.diff_obj and (">:" in row or not row):
continue
if "R_MIPS_" in row:
# N.B. Don't transform the diff rows, they already ignore immediates
# if diff_rows[-1] != '<delay-slot>':
# diff_rows[-1] = process_reloc(row, rows_with_imms[-1])
originals[-1] = process_reloc(row, originals[-1])
if args.source and (row and row[0] != " "):
source_lines.append(row)
continue
row = re.sub(re_comments, "", row)
if "R_AARCH64_" in row:
# TODO: handle relocation
continue
if "R_MIPS_" in row:
# N.B. Don't transform the diff rows, they already ignore immediates
# if output[-1].diff_row != "<delay-slot>":
# output[-1] = output[-1].replace(diff_row=process_mips_reloc(row, output[-1].row_with_imm))
new_original = process_mips_reloc(row, output[-1].original)
output[-1] = output[-1]._replace(original=new_original)
continue
m_comment = re.search(re_comment, row)
comment = m_comment[0] if m_comment else None
row = re.sub(re_comment, "", row)
row = row.rstrip()
tabs = row.split("\t")
row = "\t".join(tabs[2:])
line_num = tabs[0].strip()
row_parts = row.split("\t", 1)
mnemonic = row_parts[0].strip()
if mnemonic not in jump_instructions:
if mnemonic not in instructions_with_address_immediates:
row = re.sub(re_int, lambda s: hexify_int(row, s), row)
original = row
if skip_next:
@@ -471,42 +666,46 @@ def process(lines):
mnemonic = "<delay-slot>"
if mnemonic in branch_likely_instructions:
skip_next = True
row = re.sub(re_regs, "<reg>", row)
row = re.sub(re_sprel, ",addr(sp)", row)
row = re.sub(re_reg, "<reg>", row)
row = re.sub(re_sprel, "addr(sp)", row)
row_with_imm = row
if mnemonic in jump_instructions:
if mnemonic in instructions_with_address_immediates:
row = row.strip()
row, _ = split_off_branch(row)
row += "<imm>"
else:
row = re.sub(re_imm, "<imm>", row)
row = normalize_imms(row)
mnemonics.append(mnemonic)
rows_with_imms.append(row_with_imm)
diff_rows.append(row)
originals.append(original)
line_nums.append(line_num)
branch_target = None
if mnemonic in branch_instructions:
target = row_parts[1].strip().split(",")[-1]
if mnemonic in branch_likely_instructions:
target = hex(int(target, 16) - 4)[2:]
branch_targets.append(target)
else:
branch_targets.append(None)
branch_target = target.strip()
output.append(
Line(
mnemonic=mnemonic,
diff_row=row,
original=original,
line_num=line_num,
branch_target=branch_target,
source_lines=source_lines,
comment=comment,
)
)
source_lines = []
if args.stop_jrra and mnemonic == "jr" and row_parts[1].strip() == "ra":
stop_after_delay_slot = True
elif stop_after_delay_slot:
break
# Cleanup whitespace
originals = [original.strip() for original in originals]
originals = [
"".join(f"{o:<8s}" for o in original.split("\t")) for original in originals
]
# return diff_rows, diff_rows, line_nums
return mnemonics, diff_rows, originals, line_nums, branch_targets
return output
def format_single_line_diff(line1, line2, column_width):
return f"{ansi_ljust(line1,column_width)}{ansi_ljust(line2,column_width)}"
return f"{ansi_ljust(line1,column_width)}{line2}"
class SymbolColorer:
@@ -535,10 +734,14 @@ def normalize_imms(row):
return re.sub(re_imm, "<imm>", row)
def normalize_stack(row):
return re.sub(re_sprel, "addr(sp)", row)
def split_off_branch(line):
parts = line.split(",")
if len(parts) < 2:
parts = line.split()
parts = line.split(None, 1)
off = len(line) - len(parts[-1])
return line[:off], line[off:]
@@ -600,21 +803,30 @@ def diff_sequences(seq1, seq2):
return Levenshtein.opcodes(seq1, seq2)
def do_diff(basedump, mydump):
asm_lines1 = basedump.split("\n")
asm_lines2 = mydump.split("\n")
class OutputLine:
base: Optional[str]
fmt2: str
key2: str
output = []
def __init__(self, base: Optional[str], fmt2: str, key2: str) -> None:
self.base = base
self.fmt2 = fmt2
self.key2 = key2
# TODO: status line?
# output.append(sha1sum(mydump))
def __eq__(self, other: object) -> bool:
if not isinstance(other, OutputLine):
return NotImplemented
return self.key2 == other.key2
mnemonics1, asm_lines1, originals1, line_nums1, branch_targets1 = process(
asm_lines1
)
mnemonics2, asm_lines2, originals2, line_nums2, branch_targets2 = process(
asm_lines2
)
def __hash__(self) -> int:
return hash(self.key2)
def do_diff(basedump: str, mydump: str) -> List[OutputLine]:
output: List[OutputLine] = []
lines1 = process(basedump.split("\n"))
lines2 = process(mydump.split("\n"))
sc1 = SymbolColorer(0)
sc2 = SymbolColorer(0)
@@ -622,141 +834,227 @@ def do_diff(basedump, mydump):
sc4 = SymbolColorer(4)
sc5 = SymbolColorer(0)
sc6 = SymbolColorer(0)
bts1 = set()
bts2 = set()
bts1: Set[str] = set()
bts2: Set[str] = set()
if args.show_branches:
for (bts, btset, sc) in [
(branch_targets1, bts1, sc5),
(branch_targets2, bts2, sc6),
for (lines, btset, sc) in [
(lines1, bts1, sc5),
(lines2, bts2, sc6),
]:
for bt in bts:
for line in lines:
bt = line.branch_target
if bt is not None:
btset.add(bt + ":")
sc.color_symbol(bt + ":")
for (tag, i1, i2, j1, j2) in diff_sequences(mnemonics1, mnemonics2):
lines1 = asm_lines1[i1:i2]
lines2 = asm_lines2[j1:j2]
for k, (line1, line2) in enumerate(itertools.zip_longest(lines1, lines2)):
for (tag, i1, i2, j1, j2) in diff_sequences(
[line.mnemonic for line in lines1], [line.mnemonic for line in lines2]
):
for line1, line2 in itertools.zip_longest(lines1[i1:i2], lines2[j1:j2]):
if tag == "replace":
if line1 is None:
tag = "insert"
elif line2 is None:
tag = "delete"
try:
original1 = originals1[i1 + k]
line_num1 = line_nums1[i1 + k]
except:
original1 = ""
line_num1 = ""
try:
original2 = originals2[j1 + k]
line_num2 = line_nums2[j1 + k]
except:
original2 = ""
line_num2 = ""
elif tag == "insert":
assert line1 is None
elif tag == "delete":
assert line2 is None
line_color1 = line_color2 = sym_color = Fore.RESET
line_prefix = " "
if line1 == line2:
if maybe_normalize_large_imms(original1) == maybe_normalize_large_imms(
original2
):
out1 = f"{original1}"
out2 = f"{original2}"
elif line1 == "<delay-slot>":
out1 = f"{Style.DIM}{original1}"
out2 = f"{Style.DIM}{original2}"
if line1 and line2 and line1.diff_row == line2.diff_row:
if maybe_normalize_large_imms(
line1.original
) == maybe_normalize_large_imms(line2.original):
out1 = line1.original
out2 = line2.original
elif line1.diff_row == "<delay-slot>":
out1 = f"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line1.original}"
out2 = f"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line2.original}"
else:
mnemonic = original1.split()[0]
out1, out2 = original1, original2
mnemonic = line1.original.split()[0]
out1, out2 = line1.original, line2.original
branch1 = branch2 = ""
if mnemonic in jump_instructions:
out1, branch1 = split_off_branch(original1)
out2, branch2 = split_off_branch(original2)
if mnemonic in instructions_with_address_immediates:
out1, branch1 = split_off_branch(line1.original)
out2, branch2 = split_off_branch(line2.original)
branchless1 = out1
branchless2 = out2
out1, out2 = color_imms(out1, out2)
branch1, branch2 = color_branch_imms(branch1, branch2)
same_relative_target = False
if line1.branch_target is not None and line2.branch_target is not None:
relative_target1 = eval_line_num(line1.branch_target) - eval_line_num(line1.line_num)
relative_target2 = eval_line_num(line2.branch_target) - eval_line_num(line2.line_num)
same_relative_target = relative_target1 == relative_target2
if not same_relative_target:
branch1, branch2 = color_branch_imms(branch1, branch2)
out1 += branch1
out2 += branch2
if normalize_imms(branchless1) == normalize_imms(branchless2):
# only imms differences
sym_color = Fore.LIGHTBLUE_EX
line_prefix = "i"
if not same_relative_target:
# only imms differences
sym_color = Fore.LIGHTBLUE_EX
line_prefix = "i"
else:
# regs differences and maybe imms as well
line_color1 = line_color2 = sym_color = Fore.YELLOW
line_prefix = "r"
out1 = re.sub(
re_regs, lambda s: sc1.color_symbol(s.group()), out1
re_sprel, lambda s: sc3.color_symbol(s.group()), out1,
)
out2 = re.sub(
re_regs, lambda s: sc2.color_symbol(s.group()), out2
re_sprel, lambda s: sc4.color_symbol(s.group()), out2,
)
out1 = re.sub(
re_sprel, lambda s: sc3.color_symbol(s.group()), out1
)
out2 = re.sub(
re_sprel, lambda s: sc4.color_symbol(s.group()), out2
)
out1 = f"{Fore.YELLOW}{out1}{Style.RESET_ALL}"
out2 = f"{Fore.YELLOW}{out2}{Style.RESET_ALL}"
elif tag in ["replace", "equal"]:
if normalize_stack(branchless1) == normalize_stack(branchless2):
# only stack differences (luckily stack and imm
# differences can't be combined in MIPS, so we
# don't have to think about that case)
sym_color = Fore.YELLOW
line_prefix = "s"
else:
# regs differences and maybe imms as well
out1 = re.sub(
re_reg, lambda s: sc1.color_symbol(s.group()), out1
)
out2 = re.sub(
re_reg, lambda s: sc2.color_symbol(s.group()), out2
)
line_color1 = line_color2 = sym_color = Fore.YELLOW
line_prefix = "r"
elif line1 and line2:
line_prefix = "|"
line_color1 = Fore.LIGHTBLUE_EX
line_color2 = Fore.LIGHTBLUE_EX
sym_color = Fore.LIGHTBLUE_EX
out1 = f"{Fore.LIGHTBLUE_EX}{original1}{Style.RESET_ALL}"
out2 = f"{Fore.LIGHTBLUE_EX}{original2}{Style.RESET_ALL}"
elif tag == "delete":
out1 = line1.original
out2 = line2.original
elif line1:
line_prefix = "<"
line_color1 = line_color2 = sym_color = Fore.RED
out1 = f"{Fore.RED}{original1}{Style.RESET_ALL}"
line_color1 = sym_color = Fore.RED
out1 = line1.original
out2 = ""
elif tag == "insert":
elif line2:
line_prefix = ">"
line_color1 = line_color2 = sym_color = Fore.GREEN
line_color2 = sym_color = Fore.GREEN
out1 = ""
out2 = f"{Fore.GREEN}{original2}{Style.RESET_ALL}"
out2 = line2.original
in_arrow1 = " "
in_arrow2 = " "
out_arrow1 = ""
out_arrow2 = ""
line_num1 = line_num1 if out1 else ""
line_num2 = line_num2 if out2 else ""
if args.source and line2 and line2.comment:
out2 += f" {line2.comment}"
if args.show_branches and out1:
if line_num1 in bts1:
in_arrow1 = sc5.color_symbol(line_num1, "~>")
if branch_targets1[i1 + k] is not None:
out_arrow1 = " " + sc5.color_symbol(
branch_targets1[i1 + k] + ":", "~>"
)
if args.show_branches and out2:
if line_num2 in bts2:
in_arrow2 = sc6.color_symbol(line_num2, "~>")
if branch_targets2[j1 + k] is not None:
out_arrow2 = " " + sc6.color_symbol(
branch_targets2[j1 + k] + ":", "~>"
)
def format_part(out: str, line: Optional[Line], line_color: str, btset: Set[str], sc: SymbolColorer) -> Optional[str]:
if line is None:
return None
in_arrow = " "
out_arrow = ""
if args.show_branches:
if line.line_num in btset:
in_arrow = sc.color_symbol(line.line_num, "~>") + line_color
if line.branch_target is not None:
out_arrow = " " + sc.color_symbol(line.branch_target + ":", "~>")
out = pad_mnemonic(out)
return f"{line_color}{line.line_num} {in_arrow} {out}{Style.RESET_ALL}{out_arrow}"
if sym_color == line_color2:
line_color2 = ""
out1 = f"{line_color1}{line_num1} {in_arrow1} {out1}{Style.RESET_ALL}{out_arrow1}"
out2 = f"{sym_color}{line_prefix} {line_color2}{line_num2} {in_arrow2} {out2}{Style.RESET_ALL}{out_arrow2}"
output.append(format_single_line_diff(out1, out2, args.column_width))
part1 = format_part(out1, line1, line_color1, bts1, sc5)
part2 = format_part(out2, line2, line_color2, bts2, sc6)
key2 = line2.original if line2 else ""
return output[args.skip_lines :]
mid = f"{sym_color}{line_prefix}"
if line2:
for source_line in line2.source_lines:
color = Style.DIM
# File names and function names
if source_line and source_line[0] != "|":
color += Style.BRIGHT
# Function names
if source_line.endswith("():"):
# Underline. Colorama does not provide this feature, unfortunately.
color += "\u001b[4m"
try:
source_line = cxxfilt.demangle(
source_line[:-3], external_only=False
)
except:
pass
output.append(OutputLine(None, f" {color}{source_line}{Style.RESET_ALL}", source_line))
fmt2 = mid + " " + (part2 or "")
output.append(OutputLine(part1, fmt2, key2))
return output
def chunk_diff(diff: List[OutputLine]) -> List[Union[List[OutputLine], OutputLine]]:
cur_right: List[OutputLine] = []
chunks: List[Union[List[OutputLine], OutputLine]] = []
for output_line in diff:
if output_line.base is not None:
chunks.append(cur_right)
chunks.append(output_line)
cur_right = []
else:
cur_right.append(output_line)
chunks.append(cur_right)
return chunks
def format_diff(old_diff: List[OutputLine], new_diff: List[OutputLine]) -> Tuple[str, List[str]]:
old_chunks = chunk_diff(old_diff)
new_chunks = chunk_diff(new_diff)
output: List[Tuple[str, OutputLine, OutputLine]] = []
assert len(old_chunks) == len(new_chunks), "same target"
empty = OutputLine("", "", "")
for old_chunk, new_chunk in zip(old_chunks, new_chunks):
if isinstance(old_chunk, list):
assert isinstance(new_chunk, list)
if not old_chunk and not new_chunk:
# Most of the time lines sync up without insertions/deletions,
# and there's no interdiffing to be done.
continue
differ = difflib.SequenceMatcher(a=old_chunk, b=new_chunk, autojunk=False)
for (tag, i1, i2, j1, j2) in differ.get_opcodes():
if tag in ["equal", "replace"]:
for i, j in zip(range(i1, i2), range(j1, j2)):
output.append(("", old_chunk[i], new_chunk[j]))
elif tag == "insert":
for j in range(j1, j2):
output.append(("", empty, new_chunk[j]))
else:
for i in range(i1, i2):
output.append(("", old_chunk[i], empty))
else:
assert isinstance(new_chunk, OutputLine)
# old_chunk.base and new_chunk.base have the same text since
# both diffs are based on the same target, but they might
# differ in color. Use the new version.
output.append((new_chunk.base or "", old_chunk, new_chunk))
# TODO: status line, with e.g. approximate permuter score?
width = args.column_width
if args.threeway:
header_line = "TARGET".ljust(width) + " CURRENT".ljust(width) + " PREVIOUS"
diff_lines = [
ansi_ljust(base, width)
+ ansi_ljust(new.fmt2, width)
+ (old.fmt2 or "-" if old != new else "")
for (base, old, new) in output
]
else:
header_line = ""
diff_lines = [
ansi_ljust(base, width) + new.fmt2
for (base, old, new) in output
if base or new.key2
]
return header_line, diff_lines
def debounced_fs_watch(targets, outq, debounce_delay):
import watchdog.events
import watchdog.observers
import watchdog.events # type: ignore
import watchdog.observers # type: ignore
class WatchEventHandler(watchdog.events.FileSystemEventHandler):
def __init__(self, queue, file_targets):
@@ -827,12 +1125,18 @@ class Display:
self.basedump = basedump
self.mydump = mydump
self.emsg = None
self.last_diff_output = None
def run_less(self):
if self.emsg is not None:
output = self.emsg
else:
output = "\n".join(do_diff(self.basedump, self.mydump))
diff_output = do_diff(self.basedump, self.mydump)
last_diff_output = self.last_diff_output or diff_output
self.last_diff_output = diff_output
header, diff_lines = format_diff(last_diff_output, diff_output)
header_lines = [header] if header else []
output = "\n".join(header_lines + diff_lines[args.skip_lines :])
# Pipe the output through 'tail' and only then to less, to ensure the
# write call doesn't block. ('tail' has to buffer all its input before
@@ -912,14 +1216,16 @@ class Display:
def main():
if args.diff_obj:
if args.diff_elf_symbol:
make_target, basecmd, mycmd = dump_elf()
elif args.diff_obj:
make_target, basecmd, mycmd = dump_objfile()
else:
make_target, basecmd, mycmd = dump_binary()
if args.write_asm is not None:
mydump = run_objdump(mycmd)
with open(args.write_asm) as f:
with open(args.write_asm, "w") as f:
f.write(mydump)
print(f"Wrote assembly to {args.write_asm}.")
sys.exit(0)
@@ -980,4 +1286,4 @@ def main():
display.terminate()
main()
main()
-5
View File
@@ -1,5 +0,0 @@
version: "2"
syncs:
oot-sync:
src: '.'
+47
View File
@@ -0,0 +1,47 @@
# Building mips-linux-binutils on MacOS
The following instructions are written for MacOS users but should apply to any unix-like system, with maybe some modifications at the end regarding the bash_profile.
Create destination dir for binutils
```bash
sudo mkdir -p /opt/cross
```
Create and enter local working dir
```bash
mkdir ~/binutils-tmp
cd ~/binutils-tmp
```
Get and extract binutils source
```bash
wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2
tar xjf binutils-2.35.tar.bz2
```
Create and enter build dir
```bash
mkdir build-binutils
cd build-binutils
```
Configure the build
```bash
../binutils-2.35/configure --target=mips-linux-gnu --prefix=/opt/cross --disable-gprof --disable-gdb --disable-werror
```
Make and install binutils
```bash
make -j
sudo make install
```
Edit your ~/.bash_profile to add the new binutils binaries to the system PATH
```bash
echo "export PATH=$PATH:/opt/cross/bin" >> ~/.bash_profile
```
Reload ~/.bash_profile (or just launch a new terminal tab)
```bash
source ~/.bash_profile
```
+46 -48
View File
@@ -1931,57 +1931,55 @@ void FaultDrawer_SetDefault();
// ? func_800DD6CC(?);
// ? func_800DD9F4(?);
// ? func_800DDB64(?);
// ? func_800DDE20(?);
// ? func_800DDE3C(?);
// ? func_800DDF80(?);
// ? func_800DE048(?);
// ? func_800DE1B4(?);
// ? func_800DE238(?);
// ? func_800DE258(?);
// ? func_800DE2B0(?);
f32 func_800DDE20(f32 arg0);
void func_800DDE3C(void);
void Audio_ResetLoadStatus(void);
void Audio_DiscardBank(s32 bankId);
void Audio_DiscardSequence(s32 seqId);
void func_800DE238(void* mem, u32 size);
void* func_800DE258(SoundAllocPool* pool, u32 size);
void* func_800DE2B0(SoundAllocPool* pool, u32 size);
void* Audio_AllocDmaMemory(SoundAllocPool* pool, u32 size);
// ? func_800DE344(?);
void* Audio_AllocDmaMemoryZeroed(SoundAllocPool *pool, u32 size);
void* Audio_AllocZeroed(SoundAllocPool* pool, u32 size);
void* Audio_Alloc(SoundAllocPool* pool, u32 size);
void Audio_SoundAllocPoolInit(SoundAllocPool* pool, void* memAddr, u32 size);
void Audio_PersistentPoolClear(PersistentPool* persistent);
void Audio_TemporaryPoolClear(TemporaryPool* temporary);
void func_800DE4B0(SoundAllocPool* pool);
void func_800DE4B0(s32 poolIdx);
void Audio_InitMainPools(s32 sizeForAudioInitPool);
// void Audio_SessionPoolsInit(?);
// void Audio_SeqAndBankPoolInit(?);
// void Audio_PersistentPoolsInit(?);
// void Audio_TemporaryPoolsInit(?);
// void* Audio_AllocBankOrSeq(?);
// ? func_800DF074(?);
// ? func_800DF0CC(?);
// ? func_800DF5DC(?);
// ? func_800DF630(?);
// ? func_800DF688(?);
// ? func_800DF7BC(?);
// ? func_800DF7C4(?);
// ? func_800DF888(?);
// ? func_800DF8F4(?);
// ? func_800DFBF8(?);
// ? func_800E04E8(?);
void Audio_SessionPoolsInit(AudioPoolSplit4* split);
void Audio_SeqAndBankPoolInit(AudioPoolSplit2* split);
void Audio_PersistentPoolsInit(AudioPoolSplit3* split);
void Audio_TemporaryPoolsInit(AudioPoolSplit3* split);
void* Audio_AllocBankOrSeq(s32 poolIdx, s32 size, s32 arg2, s32 id);
void* func_800DF074(s32 poolIdx, s32 arg1, s32 id);
void* func_800DF0CC(s32 poolIdx, s32 arg1, s32 id);
void func_800DF5DC(s16* arg0, s32 arg1);
void func_800DF630(s16* arg0, s32 arg1);
void func_800DF688(s16* arg0, s32 arg1, s32 arg2);
void func_800DF7C4(void);
void func_800DF888(void);
s32 Audio_ResetStep(void);
void func_800DFBF8(void);
void* func_800E04E8(s32 poolIdx, s32 id);
// ? func_800E0540(?);
// ? func_800E05C4(?);
// ? func_800E0634(?);
// ? func_800E06CC(?);
// ? func_800E0964(?);
// ? func_800E0AD8(?);
// ? func_800E0BB4(?);
// ? func_800E0BF8(?);
void* func_800E05C4(u32 size, s32 arg1, void* arg2, s8 arg3, s32 arg4);
void func_800E0634(u32 arg0, u32 arg1);
UnkHeapEntry* func_800E06CC(u32 size);
void func_800E0964(UnkHeapEntry* entry, s32 bankId);
void func_800E0AD8(UnkHeapEntry* entry);
void func_800E0BB4(UnkHeapEntry* entry, AudioBankSample* sample);
UnkHeapEntry* func_800E0BF8(u32 size);
// ? func_800E0C80(?);
// ? func_800E0CBC(?);
// ? func_800E0E0C(?);
// ? func_800E0E6C(?);
// ? func_800E0E90(?);
// ? func_800E0EB4(?);
// ? func_800E1148(?);
void func_800E0CBC(void);
void func_800E0E6C(s32 id);
void func_800E0E90(s32 id);
void func_800E0EB4(s32 arg0, s32 id);
void func_800E1148(void);
// ? func_800E11F0(?);
// ? func_800E12DC(?);
// ? func_800E1618(?);
void func_800E1618(s32 arg0);
s32 Audio_IsBankLoadComplete(s32 bankId);
s32 Audio_IsSeqLoadComplete(s32 seqId);
void Audio_SetBankLoadStatus(s32 bankId, u8 status);
@@ -2020,7 +2018,7 @@ void Audio_SetSeqLoadStatus(s32 seqId, u8 status);
void func_800E301C(void* callback);
// ? func_800E3034(?);
// ? func_800E3094(?);
// ? func_800E3400(?);
void func_800E3400(void);
// ? func_800E3414(?);
// ? func_800E35E0(?);
// ? func_800E3678(?);
@@ -2028,7 +2026,7 @@ void func_800E301C(void* callback);
// ? func_800E3874(?);
// ? func_800E38F8(?);
// ? func_800E390C(?);
// ? func_800E3A14(?);
void func_800E3A14(void);
// ? func_800E3A44(?);
// ? func_800E3AC8(?);
// ? func_800E3BEC(?);
@@ -2043,10 +2041,10 @@ void func_800E301C(void* callback);
// ? func_800E4744(?);
// ? func_800E48C0(?);
// ? func_800E4918(?);
// ? func_800E4D94(?);
void func_800E4D94(void);
// ? func_800E4EEC(?);
// ? func_800E4F58(?);
// ? func_800E4FB0(?);
void func_800E4FB0(void);
// ? func_800E4FE0(?);
// ? func_800E5000(?);
// ? func_800E5584(?);
@@ -2075,7 +2073,7 @@ void func_800E301C(void* callback);
// ? func_800E67C0(?);
// ? func_800E6818(?);
// ? func_800E6840(?);
// ? func_800E6880(?);
void func_800E6880(void* mem, s32 size);
s32 osAiSetNextBuffer(void*, u32);
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb);
void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput);
@@ -2085,8 +2083,8 @@ void Audio_ProcessNotes(void);
AudioBankSound* Audio_InstrumentGetAudioBankSound(Instrument* instrument, s32 semitone);
Instrument* Audio_GetInstrumentInner(s32 bankId, s32 instId);
Drum* Audio_GetDrum(s32 bankId, s32 drumId);
UnkInstrument* Audio_GetUnkInstrument(s32 bankId, s32 unkInstrumentId);
s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3);
AudioBankSound* Audio_GetSfx(s32 bankId, s32 sfxId);
s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, void* arg3);
void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target);
void Audio_SeqChanLayerNoteDecay(SequenceChannelLayer* seqLayer);
void Audio_SeqChanLayerNoteRelease(SequenceChannelLayer* seqLayer);
@@ -2461,7 +2459,7 @@ void guPosition(Mtx*, f32, f32, f32, f32, f32, f32, f32);
// ? osSpTaskYielded(?);
// ? guRotateF(?);
void guRotate(Mtx*, f32 angle, f32 x, f32 y, f32 z);
// ? osAiSetFrequency(?);
s32 osAiSetFrequency(u32 frequency);
// ? __osGetActiveQueue(?);
// ? guNormalize(?);
u32 osDpGetStatus(void);
+4 -4
View File
@@ -608,8 +608,8 @@ extern f32 gStereoPanVolume[128];
//extern ? D_80130004;
//extern ? D_80130006;
extern f32 gDefaultPanVolume[128];
//extern ? D_80130228;
//extern ? D_80130328;
extern s16 D_80130228[];
extern s16 D_80130328[];
//extern ? D_801304A0;
//extern ? D_801304AC;
//extern ? D_801304C0;
@@ -786,7 +786,7 @@ extern u32 D_801333E8;
//extern ? D_8013340C;
//extern ? D_80133414;
//extern ? D_80133418;
//extern ? D_801337C8;
extern AudioSessionSettings gAudioSessionPresets[];
extern s32 gOverlayLogSeverity;
//extern ? D_80134480;
//extern ? D_80134484;
@@ -2976,7 +2976,7 @@ extern char D_80146238[];
//extern ? D_8014A450;
//extern ? D_8014A45C;
//extern ? D_8014A460;
//extern ? D_8014A6C2;
extern s16 gTatumsPerBeat;
//extern ? D_8014A6C4;
//extern ? D_8014A6C8;
//extern ? D_8014A6CC;
+220 -54
View File
@@ -79,7 +79,7 @@ typedef struct {
/*?0x08 */ u32 count;
/*?0x0C */ char unk_0C[0x4];
/*?0x10 */ s16 state[16]; // only exists if count != 0. 8-byte aligned
} AdpcmLoop;
} AdpcmLoop; // size = 0x30
typedef struct {
/*?0x00 */ s32 order;
@@ -90,12 +90,12 @@ typedef struct {
typedef struct {
/* 0x00 */ u8 bits4 : 4;
/* 0x00 */ u8 bits2 : 2;
/*?0x01 */ u8 loaded;
/*?0x04 */ u8* sampleAddr;
/* 0x00 */ u8 unk_bits2 : 2;
/* 0x01 */ u32 bits24 : 24;
/* 0x04 */ u8* sampleAddr;
/* 0x08 */ AdpcmLoop* loop;
/*?0x0C */ AdpcmBook* book;
/*?0x10 */ u32 sampleSize; // never read. either 0 or 1 mod 9, depending on padding
} AudioBankSample;
} AudioBankSample; // size = 0x10
typedef struct {
/* 0x00 */ AudioBankSample* sample;
@@ -103,10 +103,52 @@ typedef struct {
} AudioBankSound; // size = 0x8
typedef struct {
// contained within a larger struct, struct might not start at offset zero
/* 0x00 */ AudioBankSound sound; // offset might be wrong
/* 0x10 */ u8 pad[0x2c0];
} LargeSound; // size = 0x2C8
/*?0x00 */ s16 numSamplesAfterDownsampling;
/*?0x02 */ s16 chunkLen; // never read
/* 0x04 */ s16* toDownsampleLeft;
/* 0x08 */ s16* toDownsampleRight; // data pointed to by left and right are adjacent in memory
/*?0x0C */ s32 startPos; // start pos in ring buffer
/*?0x10 */ s16 lengthA; // first length in ring buffer (from startPos, at most until end)
/*?0x12 */ s16 lengthB; // second length in ring buffer (from pos 0)
/* 0x14 */ u8 pad[8];
} ReverbRingBufferItem; // size = 0x1C
typedef struct {
/* 0x000 */ u8 unk_00;
/* 0x001 */ u8 useReverb;
/* 0x002 */ u8 unk_02;
/* 0x003 */ u8 unk_03;
/* 0x004 */ u8 downsampleRate;
/* 0x005 */ u8 unk_05;
/* 0x006 */ u16 windowSize;
/* 0x008 */ u16 unk_08;
/* 0x00A */ u16 unk_0A;
/* 0x00C */ u16 unk_0C;
/* 0x00E */ u16 unk_0E;
/* 0x010 */ u16 unk_10;
/* 0x012 */ u16 unk_12;
/* 0x014 */ u16 unk_14;
/* 0x016 */ u16 unk_16;
/* 0x018 */ u8 unk_18;
/* 0x01C */ s32 unk_1C;
/* 0x020 */ s32 unk_20;
/* 0x024 */ s32 unk_24;
/* 0x028 */ s16* unk_28;
/* 0x02C */ s16* unk_2C;
/* 0x030 */ void* unk_30;
/* 0x034 */ void* unk_34;
/* 0x038 */ void* unk_38;
/* 0x03C */ void* unk_3C;
/* 0x040 */ ReverbRingBufferItem items[2][5];
/*?0x158 */ ReverbRingBufferItem items2[2][5];
/* 0x270 */ s16* unk_270;
/* 0x274 */ s16* unk_274;
/* 0x278 */ void* unk_278;
/* 0x27C */ void* unk_27C;
/* 0x280 */ AudioBankSound sound;
/* 0x288 */ AudioBankSample sample;
/* 0x298 */ AdpcmLoop loop;
} SynthesisReverb; // size = 0x2C8
typedef struct {
/*?0x00 */ u8 loaded;
@@ -127,19 +169,15 @@ typedef struct {
/* 0x14 */ AdsrEnvelope *envelope;
} Drum; // size >= 0x14
typedef struct {
u32 unk_0;
u32 unk_4;
} UnkInstrument; // TODO: probably the same as AudioBankSound
typedef struct {
/* 0x00 */ u8 numInstruments;
/* 0x01 */ u8 numDrums;
/* 0x02 */ char unk_02[0x02];
/* 0x04 */ u16 numUnkInstruments;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ u16 numSfx;
/* 0x08 */ Instrument** instruments;
/* 0x0C */ Drum** drums;
/* 0x10 */ UnkInstrument* unkInstruments;
/* 0x10 */ AudioBankSound* soundEffects;
} CtlEntry; // size = 0x14
typedef struct {
@@ -473,42 +511,95 @@ typedef struct Note {
} Note; // size = 0xE0
typedef struct {
// everything here is wildly wrong, and the struct might not start at
// zero (it's embedded into another struct)
/*?0x00 */ s16 presetUnk4; // audio frames per vsync?
/*?0x02 */ u16 frequency;
/*?0x04 */ u16 aiFrequency; // ?16
/*?0x06 */ s16 samplesPerFrameTarget;
/* 0x08 */ s16 unk_08; // maxAiBufferLength;
/*?0x0A */ s16 minAiBufferLength;
/*?0x0C */ s16 updatesPerFrame;
/*?0x0E */ s16 samplesPerUpdate;
/* 0x10 */ s16 unk_10; // samplesPerUpdateMax;
/*?0x12 */ s16 samplesPerUpdateMin;
/* 0x14 */ f32 resampleRate; // contains 32000.0f / frequency
/* 0x18 */ f32 updatesPerFrameInv; // 1.0f / updatesPerFrame
/*?0x1C */ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame)
} AudioBufferParametersEU;
/* 0x00 */ u8 downsampleRate;
/* 0x02 */ u16 windowSize;
/* 0x04 */ u16 unk_4;
/* 0x06 */ u16 unk_6;
/* 0x08 */ u16 unk_8;
/* 0x0A */ u16 unk_A;
/* 0x0C */ u16 unk_C;
/* 0x0E */ u16 unk_E;
/* 0x10 */ s8 unk_10;
/* 0x12 */ u16 unk_12;
/* 0x14 */ s16 unk_14;
/* 0x16 */ s16 unk_16;
} ReverbSettings; // size = 0x18
typedef struct {
/*?0x00 */ u32 frequency;
/*?0x04 */ u8 unk_04;
/* 0x05 */ u8 maxSimultaneousNotes;
/* 0x06 */ u8 numSequencePlayers;
/* 0x07 */ u8 pad_07[2];
/* 0x09 */ u8 numReverbs;
/* 0x0A */ u8 pad_0A[2];
/* 0x0C */ ReverbSettings* reverbSettings;
/* 0x10 */ u16 unk_10;
/* 0x12 */ u16 unk_12;
/* 0x14 */ u16 unk_14;
/* 0x18 */ u32 persistentSeqMem;
/* 0x1C */ u32 persistentBankMem;
/* 0x20 */ u32 persistentUnusedMem;
/* 0x24 */ u32 temporarySeqMem;
/* 0x28 */ u32 temporaryBankMem;
/* 0x2C */ u32 temporaryUnusedMem;
/* 0x30 */ s32 unk_30;
/* 0x34 */ s32 unk_34;
} AudioSessionSettings; // size = 0x38
typedef struct {
/* 0x00 */ s16 presetUnk4;
/* 0x02 */ u16 frequency;
/* 0x04 */ u16 aiFrequency;
/* 0x06 */ s16 samplesPerFrameTarget;
/* 0x08 */ s16 maxAiBufferLength;
/* 0x0A */ s16 minAiBufferLength;
/* 0x0C */ s16 updatesPerFrame;
/* 0x0E */ s16 samplesPerUpdate;
/* 0x10 */ s16 samplesPerUpdateMax;
/* 0x12 */ s16 samplesPerUpdateMin;
/* 0x14 */ s16 numSequencePlayers;
/* 0x18 */ f32 resampleRate;
/* 0x1C */ f32 updatesPerFrameInv;
/* 0x20 */ f32 unkUpdatesPerFrameScaled;
/* 0x24 */ f32 unk_24;
} AudioBufferParameters;
typedef struct {
/* 0x0 */ u8* start;
/* 0x4 */ u8* cur;
/* 0x8 */ u32 size;
/* 0x8 */ s32 size;
/* 0xC */ s32 unused; // set to 0, never read
} SoundAllocPool; // size = 0x10
typedef struct {
/* 0x0 */ u8 *ptr;
/*?0x4 */ u32 size;
/* */ u16 pad;
/* 0x4 */ u32 size;
/* 0x8 */ s16 poolIndex;
/* 0xA */ s16 id; // seqId or bankId
} SeqOrBankEntry; // size = 0xC
typedef struct {
/* 0x00 */ s8 unk_00;
/* 0x01 */ s8 unk_01;
/* 0x02 */ s8 unk_02;
/* 0x03 */ char pad[0x5];
/* 0x08 */ u8* unk_08;
/* 0x0C */ void* unk_0C;
/* 0x10 */ u32 size;
} UnkHeapEntry; // size = 0x14
typedef struct {
/* 0x000 */ SoundAllocPool pool;
/* 0x010 */ UnkHeapEntry entries[32];
/* 0x290 */ s32 size;
} UnkPool; // size = 0x294
typedef struct
{
/* 0x00*/ u32 numEntries;
/* 0x04*/ SoundAllocPool pool;
/*?0x14*/ SeqOrBankEntry entries[16];
/* 0x14*/ SeqOrBankEntry entries[16];
} PersistentPool; // size = 0xD4
typedef struct
@@ -526,42 +617,117 @@ typedef struct
} SoundMultiPool; // size = 0x110
typedef struct {
/* 0x0000 */ char unk_0000[0x14];
u32 wantPersistent;
u32 wantTemporary;
} AudioPoolSplit2; // size = 0x8
typedef struct {
u32 wantSeq;
u32 wantBank;
u32 wantUnused;
} AudioPoolSplit3; // size = 0xC
typedef struct {
u32 wantSeq;
u32 wantBank;
u32 wantUnused;
u32 wantCustom;
} AudioPoolSplit4; // size = 0x10
typedef struct {
u8* unk_0;
u8* unk_4;
u32 unk_8;
s8 unk_C;
} Struct_800E0E0C_2;
typedef struct {
char pad[0xC];
Struct_800E0E0C_2 unk_C[1]; // unknown size
} ManyStruct_800E0E0C_2;
typedef struct {
/* 0x00 */ s32 unk_00;
/* 0x04 */ AudioBankSample* sample;
/* 0x08 */ u8* unk_08;
/* 0x0C */ s32 pad;
/* 0x10 */ s32 unk_10;
} AudioStruct0D68; // size = 0x14
typedef struct {
/* 0x0000 */ char unk_0000;
/* 0x0001 */ s8 gNumSynthesisReverbs;
/* 0x0002 */ u16 unk_2;
/* 0x0004 */ u16 unk_4;
/* 0x0006 */ char unk_0006[0x0e];
/* 0x0014 */ NoteSubEu* gNoteSubsEu;
/* 0x0018 */ char unk_0018[0x280];
/*?0x0298 */ LargeSound largeSounds[1]; // size <= 14, offset might be wrong
/* 0x0560 */ char unk_0560[0x22E4];
/* 0x0018 */ SynthesisReverb gSynthesisReverbs[4];
/* 0x0B38 */ char unk_0B38[0x230];
/* 0x0D68 */ AudioStruct0D68 unk_0D68[128]; // guessing at size
/* 0x1768 */ char unk_1768[4];
/* 0x176C */ s32 unk_176C;
/* 0x1770 */ char unk_1770[0xEB0];
/* 0x2620 */ s32 gSampleDmaNumListItems;
/* 0x2624 */ char unk_2624[0x210];
/* 0x2834 */ s16* unk_2834;
/* 0x2838 */ ManyStruct_800E0E0C_2* unk_2838;
/* 0x283C */ char unk_283C[0x8];
/* 0x2844 */ CtlEntry* gCtlEntries;
/* 0x2848 */ char unk_2848[0x4];
/*?0x284C */ AudioBufferParametersEU gAudioBufferParameters; // offset might be wrong
/* 0x286C */ f32 unk_286C;
/* 0x2848 */ AudioBufferParameters gAudioBufferParameters;
/* 0x2870 */ f32 unk_2870;
/* 0x2874 */ char unk_2874[0x20];
/* 0x2874 */ s32 unk_2874;
/* 0x2874 */ s32 unk_2878;
/* 0x287C */ char unk_287C[0x14];
/* 0x2890 */ s32 gMaxAudioCmds;
/* 0x2894 */ s32 gMaxSimultaneousNotes; // (bad name)
/* 0x2898 */ s16 unk_2898;
/* 0x2898 */ s16 gTempoInternalToExternal;
/* 0x289A */ s8 gSoundMode;
/* 0x289B */ char unk_289B[0xE1];
/* 0x289B */ char unk_289B[0xD];
/* 0x28A8 */ s32 unk_28A8;
/* 0x28AC */ u64* gAudioCmdBuffers[2];
/* 0x28B4 */ char unk_28B4[0xAC];
/* 0x2960 */ f32 unk_2960;
/* 0x2964 */ s32 gRefreshRate;
/* 0x2968 */ s16* unk_2968[3];
/* 0x2974 */ s16 unk_2974[3];
/* 0x297C */ u32 gAudioRandom;
/* 0x2980 */ s32 gAudioErrorFlags;
/* 0x2984 */ char unk_2984[0x3C];
/* 0x2984 */ char unk_2984[0xC];
/* 0x2990 */ SoundAllocPool gAudioSessionPool;
/* 0x29A0 */ SoundAllocPool gUnkPool;
/* 0x29B0 */ SoundAllocPool gAudioInitPool;
/* 0x29C0 */ SoundAllocPool gNotesAndBuffersPool;
/* 0x29D0 */ char unk_29D0[0x20]; // probably two unused pools
/* 0x29F0 */ SoundAllocPool gSeqAndBankPool;
/* 0x2A00 */ SoundAllocPool gTemporaryCommonPool;
/* 0x2A10 */ SoundAllocPool gPersistentCommonPool;
/* 0x2A00 */ SoundAllocPool gPersistentCommonPool;
/* 0x2A10 */ SoundAllocPool gTemporaryCommonPool;
/* 0x2A20 */ SoundMultiPool gSeqLoadedPool;
/* 0x2B30 */ SoundMultiPool gBankLoadedPool;
/* 0x2C40 */ SoundMultiPool gUnusedLoadedPool;
/* 0x2D50 */ char unk_2D50[0x7D0];
/* 0x2C40 */ SoundMultiPool gUnusedLoadedPool; // rename after we figure out what this is
/* 0x2D50 */ SoundAllocPool unk_2D50;
/* 0x2D60 */ SeqOrBankEntry unk_2D60[32];
/* 0x2EE0 */ UnkPool unk_2EE0;
/* 0x3174 */ UnkPool unk_3174;
/* 0x3408 */ AudioPoolSplit4 sSessionPoolSplit;
/* 0x3418 */ AudioPoolSplit2 sSeqAndBankPoolSplit;
/* 0x3420 */ AudioPoolSplit3 sPersistentCommonPoolSplit;
/* 0x342C */ AudioPoolSplit3 sTemporaryCommonPoolSplit;
/* 0x3438 */ u8 gUnusedLoadStatus[0x30];
/* 0x3468 */ u8 gBankLoadStatus[0x30];
/* 0x3498 */ u8 gSeqLoadStatus[0x80];
/* 0x3518 */ volatile u8 gAudioResetStatus;
/* 0x3519 */ u8 gAudioResetPresetIdToLoad;
/* 0x351C */ s32 gAudioResetFadeOutFramesLeft;
/* 0x3520 */ f32* unk_3520;
/* 0x3524 */ char unk_3524[8];
/* 0x3524 */ u8* gAudioHeap;
/* 0x3528 */ u32 gAudioHeapSize;
/* 0x352C */ Note* gNotes;
/* 0x3530 */ SequencePlayer gSequencePlayers[4];
/* 0x3AB0 */ SequenceChannelLayer gSequenceLayers[64];
/* 0x5AB0 */ SequenceChannel gSequenceChannelNone;
/* 0x5B84 */ s32 gNoteSubEuOffset;
/* 0x5B88 */ AudioListItem gLayerFreeList;
} AudioContext; // might be bigger
} AudioContext; // size >= 0x5c50
typedef struct {
/* 0x00 */ u8 reverb; // i.e. volume
+4 -8
View File
@@ -172,8 +172,7 @@ endseg
beginseg
name "icon_item_nes_static"
romalign 0x1000
include "build/baserom/icon_item_nes_static.o"
//include "build/assets/textures/icon_item_nes_static/icon_item_nes_static.o"
include "build/baserom/icon_item_nes_static.o" //include "build/assets/textures/icon_item_nes_static/icon_item_nes_static.o"
endseg
beginseg
@@ -1164,8 +1163,7 @@ endseg
beginseg
name "ovl_Bg_Po_Syokudai"
include "build/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o"
include "build/data/overlays/actors/z_bg_po_syokudai.data.o"
include "build/data/overlays/actors/z_bg_po_syokudai.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o"
endseg
beginseg
@@ -1363,8 +1361,7 @@ endseg
beginseg
name "ovl_Bg_Spot18_Shutter"
include "build/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o"
include "build/data/overlays/actors/z_bg_spot18_shutter.data.o"
include "build/data/overlays/actors/z_bg_spot18_shutter.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o"
endseg
beginseg
@@ -3529,8 +3526,7 @@ endseg
beginseg
name "ovl_Obj_Hana"
include "build/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o"
include "build/data/overlays/actors/z_obj_hana.data.o"
include "build/data/overlays/actors/z_obj_hana.reloc.o"
include "build/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o"
endseg
beginseg
+7 -7
View File
@@ -21,7 +21,7 @@ void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalcul
chanFreqScale = seqChannel->freqScale;
if (b != 0) {
chanFreqScale *= seqChannel->seqPlayer->unk_34;
seqChannel->changes.s.freqScale = 1;
seqChannel->changes.s.freqScale = true;
}
for (i = 0; i < 4; i++) {
@@ -31,7 +31,7 @@ void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalcul
layer->noteFreqScale = layer->freqScale * chanFreqScale;
layer->noteVelocity = layer->velocitySquare2 * seqChannel->appliedVolume;
layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7;
layer->notePropertiesNeedInit = 0;
layer->notePropertiesNeedInit = false;
} else {
if (seqChannel->changes.s.freqScale) {
layer->noteFreqScale = layer->freqScale * chanFreqScale;
@@ -53,7 +53,7 @@ void Audio_SequencePlayerProcessSound(SequencePlayer* seqPlayer) {
if (seqPlayer->fadeTimer != 0) {
seqPlayer->fadeVolume += seqPlayer->fadeVelocity;
seqPlayer->recalculateVolume = 1;
seqPlayer->recalculateVolume = true;
if (seqPlayer->fadeVolume > 1.0f) {
seqPlayer->fadeVolume = 1.0f;
@@ -78,7 +78,7 @@ void Audio_SequencePlayerProcessSound(SequencePlayer* seqPlayer) {
}
}
seqPlayer->recalculateVolume = 0;
seqPlayer->recalculateVolume = false;
}
f32 Audio_GetPortamentoFreqScale(Portamento* p) {
@@ -258,7 +258,7 @@ f32 Audio_AdsrUpdate(AdsrState* adsr) {
break;
default:
adsr->delay *= gAudioContext.unk_286C;
adsr->delay *= gAudioContext.gAudioBufferParameters.unk_24;
if (adsr->delay == 0) {
adsr->delay = 1;
}
@@ -313,12 +313,12 @@ f32 Audio_AdsrUpdate(AdsrState* adsr) {
if (adsr->action.s.decay) {
adsr->action.s.state = ADSR_STATE_DECAY;
adsr->action.s.decay = 0;
adsr->action.s.decay = false;
}
if (adsr->action.s.release) {
adsr->action.s.state = ADSR_STATE_RELEASE;
adsr->action.s.release = 0;
adsr->action.s.release = false;
}
if (adsr->current < 0.0f) {
+1329 -51
View File
File diff suppressed because it is too large Load Diff
+42 -42
View File
@@ -27,8 +27,8 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
pan &= 0x7F;
sub->bitField0.s.stereoStrongRight = 0;
sub->bitField0.s.stereoStrongLeft = 0;
sub->bitField0.s.stereoStrongRight = false;
sub->bitField0.s.stereoStrongLeft = false;
sub->bitField0.s.stereoHeadsetEffects = sp24.stereoHeadsetEffects;
sub->bitField0.s.usesHeadsetPanEffects = sp24.usesHeadsetPanEffects;
if (stereoHeadsetEffects && gAudioContext.gSoundMode == 1) {
@@ -39,7 +39,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex];
sub->headsetPanRight = gHeadsetPanQuantization[0x3f - smallPanIndex];
sub->bitField1.s.hasTwoAdpcmParts = 1;
sub->bitField1.s.hasTwoAdpcmParts = true;
volLeft = gHeadsetPanVolume[pan];
volRight = gHeadsetPanVolume[0x7f - pan];
@@ -47,7 +47,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
strongLeft = strongRight = 0;
sub->headsetPanRight = 0;
sub->headsetPanLeft = 0;
sub->bitField1.s.hasTwoAdpcmParts = 0;
sub->bitField1.s.hasTwoAdpcmParts = false;
volLeft = gStereoPanVolume[pan];
volRight = gStereoPanVolume[0x7f - pan];
@@ -78,8 +78,8 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
}
} else if (gAudioContext.gSoundMode == 3) {
sub->bitField0.s.stereoHeadsetEffects = 0;
sub->bitField0.s.usesHeadsetPanEffects = 0;
sub->bitField0.s.stereoHeadsetEffects = false;
sub->bitField0.s.usesHeadsetPanEffects = false;
volLeft = 0.707f;
volRight = 0.707f;
} else {
@@ -106,7 +106,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput)
f32 resamplingRate = 0.0f;
if (resamplingRateInput < 2.0f) {
noteSubEu->bitField1.s.isSyntheticWave = 0;
noteSubEu->bitField1.s.isSyntheticWave = false;
if (1.99998f < resamplingRateInput) {
resamplingRate = 1.99998f;
@@ -115,7 +115,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput)
}
} else {
noteSubEu->bitField1.s.isSyntheticWave = 1;
noteSubEu->bitField1.s.isSyntheticWave = true;
if (3.99996f < resamplingRateInput) {
resamplingRate = 1.99998f;
} else {
@@ -140,13 +140,13 @@ void Audio_NoteInit(Note* note) {
}
void Audio_NoteDisable(Note* note) {
if (note->noteSubEu.bitField0.s.needsInit == 1) {
note->noteSubEu.bitField0.s.needsInit = 0;
if (note->noteSubEu.bitField0.s.needsInit == true) {
note->noteSubEu.bitField0.s.needsInit = false;
}
note->playbackState.priority = 0;
note->noteSubEu.bitField0.s.enabled = 0;
note->noteSubEu.bitField0.s.enabled = false;
note->playbackState.unk_04 = 0;
note->noteSubEu.bitField0.s.finished = 0;
note->noteSubEu.bitField0.s.finished = false;
note->playbackState.parentLayer = NO_LAYER;
note->playbackState.prevParentLayer = NO_LAYER;
note->playbackState.adsr.action.s.state = ADSR_STATE_DISABLED;
@@ -175,7 +175,7 @@ void Audio_ProcessNotes(void) {
}
if (note != playbackState->parentLayer->note && playbackState->unk_04 == 0) {
playbackState->adsr.action.s.release = 1;
playbackState->adsr.action.s.release = true;
playbackState->adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv;
playbackState->priority = 1;
playbackState->unk_04 = 2;
@@ -229,7 +229,7 @@ void Audio_ProcessNotes(void) {
}
} else {
if (playbackState->parentLayer != NO_LAYER) {
playbackState->parentLayer->bit1 = 1;
playbackState->parentLayer->bit1 = true;
}
Audio_NoteDisable(note);
Audio_AudioListRemove(&note->listItem);
@@ -239,7 +239,7 @@ void Audio_ProcessNotes(void) {
}
} else if (playbackState->adsr.action.s.state == ADSR_STATE_DISABLED) {
if (playbackState->parentLayer != NO_LAYER) {
playbackState->parentLayer->bit1 = 1;
playbackState->parentLayer->bit1 = true;
}
Audio_NoteDisable(note);
Audio_AudioListRemove(&note->listItem);
@@ -362,8 +362,8 @@ Drum* Audio_GetDrum(s32 bankId, s32 drumId) {
return drum;
}
UnkInstrument* Audio_GetUnkInstrument(s32 bankId, s32 unkInstrumentId) {
UnkInstrument* unkInstrument;
AudioBankSound* Audio_GetSfx(s32 bankId, s32 sfxId) {
AudioBankSound* sfx;
if (bankId == 0xFF) {
return NULL;
@@ -374,29 +374,29 @@ UnkInstrument* Audio_GetUnkInstrument(s32 bankId, s32 unkInstrumentId) {
return NULL;
}
if (unkInstrumentId >= gAudioContext.gCtlEntries[bankId].numUnkInstruments) {
gAudioContext.gAudioErrorFlags = ((bankId << 8) + unkInstrumentId) + 0x4000000;
if (sfxId >= gAudioContext.gCtlEntries[bankId].numSfx) {
gAudioContext.gAudioErrorFlags = ((bankId << 8) + sfxId) + 0x4000000;
return NULL;
}
if ((u32)gAudioContext.gCtlEntries[bankId].unkInstruments < 0x80000000U) {
if ((u32)gAudioContext.gCtlEntries[bankId].soundEffects < 0x80000000U) {
return NULL;
}
unkInstrument = &gAudioContext.gCtlEntries[bankId].unkInstruments[unkInstrumentId];
sfx = &gAudioContext.gCtlEntries[bankId].soundEffects[sfxId];
if (unkInstrument == NULL) {
gAudioContext.gAudioErrorFlags = ((bankId << 8) + unkInstrumentId) + 0x5000000;
if (sfx == NULL) {
gAudioContext.gAudioErrorFlags = ((bankId << 8) + sfxId) + 0x5000000;
}
if (unkInstrument->unk_0 == 0) {
if (sfx->sample == NULL) {
return NULL;
}
return unkInstrument;
return sfx;
}
s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3) {
s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, void* arg3) {
if (bankId == 0xFF) {
return -1;
}
@@ -410,21 +410,21 @@ s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3) {
if (instId >= gAudioContext.gCtlEntries[bankId].numDrums) {
return -3;
}
gAudioContext.gCtlEntries[bankId].drums[instId] = (void*)arg3;
gAudioContext.gCtlEntries[bankId].drums[instId] = arg3;
break;
case 1:
if (instId >= gAudioContext.gCtlEntries[bankId].numUnkInstruments) {
if (instId >= gAudioContext.gCtlEntries[bankId].numSfx) {
return -3;
}
gAudioContext.gCtlEntries[bankId].unkInstruments[instId] = *arg3;
gAudioContext.gCtlEntries[bankId].soundEffects[instId] = *(AudioBankSound*)arg3;
break;
default:
if (instId >= gAudioContext.gCtlEntries[bankId].numInstruments) {
return -3;
}
gAudioContext.gCtlEntries[bankId].instruments[instId] = (void*)arg3;
gAudioContext.gCtlEntries[bankId].instruments[instId] = arg3;
break;
}
@@ -441,7 +441,7 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
return;
}
seqLayer->bit3 = 0;
seqLayer->bit3 = false;
if (seqLayer->note == NULL) {
return;
@@ -458,7 +458,7 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
if (note->playbackState.parentLayer == NO_LAYER && note->playbackState.wantedParentLayer == NO_LAYER &&
note->playbackState.prevParentLayer == seqLayer && target != ADSR_STATE_DECAY) {
note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = 1;
note->playbackState.adsr.action.s.release = true;
}
return;
}
@@ -484,7 +484,7 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
attributes->unk_6 = chan->unk_20;
attributes->unk_4 = chan->unk_0F;
if (chan->seqPlayer->muted && (chan->muteBehavior & 8)) {
note->noteSubEu.bitField0.s.finished = 1;
note->noteSubEu.bitField0.s.finished = true;
}
if (seqLayer->reverbBits.asByte == 0) {
@@ -502,11 +502,11 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
note->playbackState.parentLayer = NO_LAYER;
if (target == ADSR_STATE_RELEASE) {
note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = 1;
note->playbackState.adsr.action.s.release = true;
note->playbackState.unk_04 = 2;
} else {
note->playbackState.unk_04 = 1;
note->playbackState.adsr.action.s.decay = 1;
note->playbackState.adsr.action.s.decay = true;
if (seqLayer->adsr.releaseRate == 0) {
note->playbackState.adsr.fadeOutVel = gAudioContext.unk_3520[seqLayer->seqChannel->adsr.releaseRate];
} else {
@@ -753,8 +753,8 @@ void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer) {
note->playbackState.prevParentLayer = NO_LAYER;
note->playbackState.parentLayer = seqLayer;
playback->priority = seqLayer->seqChannel->notePriority;
seqLayer->notePropertiesNeedInit = 1;
seqLayer->bit3 = 1;
seqLayer->notePropertiesNeedInit = true;
seqLayer->bit3 = true;
seqLayer->note = note;
seqLayer->seqChannel->noteUnused = note;
seqLayer->seqChannel->layerUnused = seqLayer;
@@ -768,9 +768,9 @@ void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer) {
sub->sound.audioBankSound = seqLayer->sound;
if (instId >= 0x80 && instId < 0xC0) {
sub->bitField1.s.bit2 = 1;
sub->bitField1.s.bit2 = true;
} else {
sub->bitField1.s.bit2 = 0;
sub->bitField1.s.bit2 = false;
}
if (sub->bitField1.s.bit2) {
@@ -792,7 +792,7 @@ void Audio_NoteReleaseAndTakeOwnership(Note* note, SequenceChannelLayer* seqLaye
note->playbackState.priority = seqLayer->seqChannel->notePriority;
note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv;
note->playbackState.adsr.action.s.release = 1;
note->playbackState.adsr.action.s.release = true;
}
Note* Audio_AllocNoteFromDisabled(NotePool* pool, SequenceChannelLayer* seqLayer) {
@@ -906,7 +906,7 @@ Note* Audio_AllocNote(SequenceChannelLayer* seqLayer) {
return ret;
null_return:
seqLayer->bit3 = 1;
seqLayer->bit3 = true;
return NULL;
}
@@ -929,7 +929,7 @@ void Audio_NoteInitAll(void) {
note->vibratoState.active = 0;
note->portamento.cur = 0;
note->portamento.speed = 0;
note->playbackState.stereoHeadsetEffects = 0;
note->playbackState.stereoHeadsetEffects = false;
note->unk_BC = 0;
note->synthesisState.synthesisBuffers = Audio_AllocDmaMemory(&gAudioContext.gNotesAndBuffersPool, 0x1E0);
}
+61 -61
View File
@@ -110,14 +110,14 @@ void Audio_SequenceChannelInit(SequenceChannel* seqChannel) {
return;
}
seqChannel->enabled = 0;
seqChannel->finished = 0;
seqChannel->stopScript = 0;
seqChannel->stopSomething2 = 0;
seqChannel->hasInstrument = 0;
seqChannel->stereoHeadsetEffects = 0;
seqChannel->enabled = false;
seqChannel->finished = false;
seqChannel->stopScript = false;
seqChannel->stopSomething2 = false;
seqChannel->hasInstrument = false;
seqChannel->stereoHeadsetEffects = false;
seqChannel->transposition = 0;
seqChannel->largeNotes = 0;
seqChannel->largeNotes = false;
seqChannel->bookOffset = 0;
seqChannel->reverbBits.asByte = 0;
seqChannel->changes.asByte = 0xff;
@@ -154,7 +154,7 @@ void Audio_SequenceChannelInit(SequenceChannel* seqChannel) {
seqChannel->soundScriptIO[i] = -1;
}
seqChannel->unused = 0;
seqChannel->unused = false;
Audio_InitNoteLists(&seqChannel->notePool);
}
@@ -177,14 +177,14 @@ s32 Audio_SeqChannelSetLayer(SequenceChannel* seqChannel, s32 layerIdx) {
layer->seqChannel = seqChannel;
layer->adsr = seqChannel->adsr;
layer->adsr.releaseRate = 0;
layer->enabled = 1;
layer->finished = 0;
layer->stopSomething = 0;
layer->continuousNotes = 0;
layer->bit3 = 0;
layer->ignoreDrumPan = 0;
layer->bit1 = 0;
layer->notePropertiesNeedInit = 0;
layer->enabled = true;
layer->finished = false;
layer->stopSomething = false;
layer->continuousNotes = false;
layer->bit3 = false;
layer->ignoreDrumPan = false;
layer->bit1 = false;
layer->notePropertiesNeedInit = false;
layer->reverbBits.asByte = 0;
layer->portamento.mode = 0;
layer->scriptState.depth = 0;
@@ -210,8 +210,8 @@ void Audio_SeqChannelLayerDisable(SequenceChannelLayer* layer) {
} else {
Audio_SeqChanLayerNoteDecay(layer);
}
layer->enabled = 0;
layer->finished = 1;
layer->enabled = false;
layer->finished = true;
}
}
@@ -232,8 +232,8 @@ void Audio_SequenceChannelDisable(SequenceChannel* seqChannel) {
}
Audio_NotePoolClear(&seqChannel->notePool);
seqChannel->enabled = 0;
seqChannel->finished = 1;
seqChannel->enabled = false;
seqChannel->finished = true;
}
void Audio_SequencePlayerInitChannels(SequencePlayer* seqPlayer, u16 channelBits) {
@@ -267,8 +267,8 @@ void Audio_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIdx, void*
SequenceChannel* seqChannel = seqPlayer->channels[channelIdx];
s32 i;
seqChannel->enabled = 1;
seqChannel->finished = 0;
seqChannel->enabled = true;
seqChannel->finished = false;
seqChannel->scriptState.depth = 0;
seqChannel->scriptState.pc = script;
seqChannel->delay = 0;
@@ -280,7 +280,7 @@ void Audio_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIdx, void*
}
void Audio_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer) {
seqPlayer->finished = 1;
seqPlayer->finished = true;
Audio_SequencePlayerDisable(seqPlayer);
}
@@ -290,8 +290,8 @@ void Audio_SequencePlayerDisable(SequencePlayer* seqPlayer) {
if (!seqPlayer->enabled) {
return;
}
seqPlayer->enabled = 0;
seqPlayer->finished = 1;
seqPlayer->enabled = false;
seqPlayer->finished = true;
if (Audio_IsSeqLoadComplete(seqPlayer->seqId)) {
Audio_SetSeqLoadStatus(seqPlayer->seqId, 3);
@@ -381,7 +381,7 @@ void Audio_SeqChannelLayerProcessScript(SequenceChannelLayer* layer) {
layer->delay--;
if (!layer->stopSomething && layer->delay <= layer->duration) {
Audio_SeqChanLayerNoteDecay(layer);
layer->stopSomething = 1;
layer->stopSomething = true;
}
return;
}
@@ -418,13 +418,13 @@ void func_800E9ED8(SequenceChannelLayer* layer) {
PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) {
layer->portamento.mode = 0;
}
layer->notePropertiesNeedInit = 1;
layer->notePropertiesNeedInit = true;
}
s32 func_800E9F64(SequenceChannelLayer* layer, s32 arg1) {
if (!layer->stopSomething && layer->sound != NULL && layer->sound->sample->bits4 == 2 &&
layer->sound->sample->bits2 != 0) {
layer->stopSomething = 1;
layer->stopSomething = true;
return -1;
}
@@ -503,11 +503,11 @@ s32 func_800EA0C0(SequenceChannelLayer* layer) {
case 0xC4: // layer_continuousnoteson
case 0xC5: // layer_continuousnotesoff
if (cmd == 0xC4) {
layer->continuousNotes = 1;
layer->continuousNotes = true;
} else {
layer->continuousNotes = 0;
layer->continuousNotes = false;
}
layer->bit1 = 0;
layer->bit1 = false;
Audio_SeqChanLayerNoteDecay(layer);
break;
@@ -578,7 +578,7 @@ s32 func_800EA0C0(SequenceChannelLayer* layer) {
break;
case 0xCC:
layer->ignoreDrumPan = 1;
layer->ignoreDrumPan = true;
break;
case 0xCD:
@@ -617,11 +617,11 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
AudioBankSound* sound;
Instrument* instrument;
Drum* drum;
AudioBankSound* unkInstrument;
s32 pad;
SequenceChannel* seqChannel;
SequencePlayer* seqPlayer;
u8 cmd;
u16 unkInstrumentId;
u16 sfxId;
s32 cmd2;
s32 vel;
f32 time;
@@ -647,7 +647,7 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
layer->semitone = cmd;
drum = Audio_GetDrum(seqChannel->bankId, cmd);
if (drum == NULL) {
layer->stopSomething = 1;
layer->stopSomething = true;
layer->delay2 = layer->delay;
return -1;
}
@@ -663,10 +663,10 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
case 1:
layer->semitone = cmd;
unkInstrumentId = (layer->transposition << 6) + cmd;
sound = (AudioBankSound*)Audio_GetUnkInstrument(seqChannel->bankId, unkInstrumentId);
sfxId = (layer->transposition << 6) + cmd;
sound = Audio_GetSfx(seqChannel->bankId, sfxId);
if (sound == NULL) {
layer->stopSomething = 1;
layer->stopSomething = true;
layer->delay2 = layer->delay + 1;
return -1;
}
@@ -679,7 +679,7 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
cmd2 = cmd;
layer->semitone = cmd;
if (cmd >= 0x80) {
layer->stopSomething = 1;
layer->stopSomething = true;
return -1;
}
if (layer->instOrWave == 0xFF) {
@@ -701,7 +701,7 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
layer->sound = NULL;
tuning = 1.0f;
if (instOrWave >= 0xC0) {
layer->sound = &gAudioContext.largeSounds[instOrWave - 0xC0].sound;
layer->sound = &gAudioContext.gSynthesisReverbs[instOrWave - 0xC0].sound;
}
}
@@ -729,12 +729,12 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
portamento->extent = (freqScale2 / freqScale) - 1.0f;
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
speed = seqPlayer->tempo * 0x8000 / gAudioContext.unk_2898;
speed = seqPlayer->tempo * 0x8000 / gAudioContext.gTempoInternalToExternal;
if (layer->delay != 0) {
speed = speed * 0x100 / (layer->delay * layer->portamentoTime);
}
} else {
speed = 0x20000 / (layer->portamentoTime * gAudioContext.gAudioBufferParameters.unk_08);
speed = 0x20000 / (layer->portamentoTime * gAudioContext.gAudioBufferParameters.updatesPerFrame);
}
if (speed >= 0x7FFF) {
@@ -761,7 +761,7 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
layer->sound = NULL;
layer->freqScale = gNoteFrequencies[cmd2];
if (instOrWave >= 0xC0) {
layer->sound = &gAudioContext.largeSounds[instOrWave - 0xC0].sound;
layer->sound = &gAudioContext.gSynthesisReverbs[instOrWave - 0xC0].sound;
}
}
break;
@@ -788,7 +788,7 @@ s32 func_800EA440(SequenceChannelLayer* layer, s32 arg1) {
// set when this is reached...)
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
s32 speed2;
speed2 = seqPlayer->tempo * 0x8000 / gAudioContext.unk_2898;
speed2 = seqPlayer->tempo * 0x8000 / gAudioContext.gTempoInternalToExternal;
speed2 = speed2 * 0x100 / (layer->delay * layer->portamentoTime);
if (speed2 >= 0x7FFF) {
speed2 = 0x7FFF;
@@ -817,12 +817,12 @@ s32 func_800EAAE0(SequenceChannelLayer* layer, s32 arg1) {
if (arg1 == 0xC0) {
layer->delay = Audio_M64ReadCompressedU16(state);
layer->stopSomething = 1;
layer->bit1 = 0;
layer->stopSomething = true;
layer->bit1 = false;
return -1;
}
layer->stopSomething = 0;
layer->stopSomething = false;
if (seqChannel->largeNotes == 1) {
switch (arg1 & 0xC0) {
case 0:
@@ -902,11 +902,11 @@ s32 func_800EAAE0(SequenceChannelLayer* layer, s32 arg1) {
}
if ((seqPlayer->muted && (seqChannel->muteBehavior & (0x40 | 0x10)) != 0) || seqChannel->stopSomething2) {
layer->stopSomething = 1;
layer->stopSomething = true;
return -1;
}
if (seqPlayer->unk_DC != 0) {
layer->stopSomething = 1;
layer->stopSomething = true;
return -1;
}
return arg1;
@@ -947,10 +947,10 @@ void Audio_SetInstrument(SequenceChannel* seqChannel, u8 instId) {
seqChannel->instrument = (Instrument*)2;
} else if ((seqChannel->instOrWave =
Audio_GetInstrument(seqChannel, instId, &seqChannel->instrument, &seqChannel->adsr)) == 0) {
seqChannel->hasInstrument = 0;
seqChannel->hasInstrument = false;
return;
}
seqChannel->hasInstrument = 1;
seqChannel->hasInstrument = true;
}
void Audio_SequenceChannelSetVolume(SequenceChannel* seqChannel, u8 volume) {
@@ -970,8 +970,8 @@ void Audio_ProcessSequences(s32 arg0) {
u32 i;
gAudioContext.gNoteSubEuOffset =
(gAudioContext.gAudioBufferParameters.unk_08 - arg0 - 1) * gAudioContext.gMaxSimultaneousNotes;
for (i = 0; i < (u32)gAudioContext.gAudioBufferParameters.unk_10; i++) {
(gAudioContext.gAudioBufferParameters.updatesPerFrame - arg0 - 1) * gAudioContext.gMaxSimultaneousNotes;
for (i = 0; i < (u32)gAudioContext.gAudioBufferParameters.numSequencePlayers; i++) {
seqPlayer = &gAudioContext.gSequencePlayers[i];
if (seqPlayer->enabled == 1) {
Audio_SequencePlayerProcessSequence(seqPlayer);
@@ -993,7 +993,7 @@ void Audio_ResetSequencePlayer(SequencePlayer* seqPlayer) {
s32 i;
Audio_SequencePlayerDisable(seqPlayer);
seqPlayer->unk_0b2 = 0;
seqPlayer->unk_0b2 = false;
seqPlayer->delay = 0;
seqPlayer->state = 1;
seqPlayer->fadeTimer = 0;
@@ -1029,7 +1029,7 @@ void func_800EC734(s32 seqPlayerIdx) {
} else {
seqChannel = seqPlayer->channels[i];
seqChannel->seqPlayer = seqPlayer;
seqChannel->enabled = 0;
seqChannel->enabled = false;
for (j = 0; j < 4; j++) {
seqChannel->layers[j] = NULL;
}
@@ -1045,11 +1045,11 @@ void Audio_InitSequencePlayer(SequencePlayer* seqPlayer) {
seqPlayer->channels[i] = &gAudioContext.gSequenceChannelNone;
}
seqPlayer->enabled = 0;
seqPlayer->muted = 0;
seqPlayer->bankDmaInProgress = 0;
seqPlayer->seqDmaInProgress = 0;
seqPlayer->unk_0b1 = 0;
seqPlayer->enabled = false;
seqPlayer->muted = false;
seqPlayer->bankDmaInProgress = false;
seqPlayer->seqDmaInProgress = false;
seqPlayer->unk_0b1 = false;
for (j = 0; j < 8; j++) {
seqPlayer->unk_158[j] = -1;
@@ -1067,7 +1067,7 @@ void Audio_InitSequencePlayers(void) {
Audio_InitLayerFreelist();
for (i = 0; i < 64; i++) {
gAudioContext.gSequenceLayers[i].seqChannel = NULL;
gAudioContext.gSequenceLayers[i].enabled = 0;
gAudioContext.gSequenceLayers[i].enabled = false;
}
for (i = 0; i < 4; i++) {
@@ -1,15 +1,49 @@
/*
* File: z_bg_po_syokudai.c
* Overlay: ovl_Bg_Po_Syokudai
* Description: Golden Torch Stand (Poe Sisters)
*/
#include "z_bg_po_syokudai.h"
#define FLAGS 0x00000000
#define THIS ((BgPoSyokudai*)thisx)
typedef enum {
POE_FLAME_PURPLE, // Meg
POE_FLAME_RED, // Joelle
POE_FLAME_BLUE, // Beth
POE_FLAME_GREEN // Amy
} PoeFlameColor;
#define POE_TORCH_FLAG 0x1C
void BgPoSyokudai_Init(Actor* thisx, GlobalContext* globalCtx);
void BgPoSyokudai_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgPoSyokudai_Update(Actor* thisx, GlobalContext* globalCtx);
void BgPoSyokudai_Draw(Actor* thisx, GlobalContext* globalCtx);
/*
static ColliderCylinderInit sCylinderInit = {
{ COLTYPE_METAL_SHIELD, 0x00, 0x0D, 0x39, 0x20, COLSHAPE_CYLINDER },
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0xFFCFFFFF, 0x00, 0x00 }, 0x00, 0x01, 0x01 },
{ 12, 60, 0, { 0, 0, 0 } },
};
static Color_RGBA8 sPrimColors[] = {
{ 255, 170, 255, 255 },
{ 255, 200, 0, 255 },
{ 0, 170, 255, 255 },
{ 170, 255, 0, 255 },
};
static Color_RGBA8 sEnvColors[] = {
{ 100, 0, 255, 255 },
{ 255, 0, 0, 255 },
{ 0, 0, 255, 255 },
{ 0, 150, 0, 255 },
};
const ActorInit Bg_Po_Syokudai_InitVars = {
ACTOR_BG_PO_SYOKUDAI,
ACTORTYPE_PROP,
@@ -21,11 +55,124 @@ const ActorInit Bg_Po_Syokudai_InitVars = {
(ActorFunc)BgPoSyokudai_Update,
(ActorFunc)BgPoSyokudai_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Po_Syokudai/BgPoSyokudai_Init.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Po_Syokudai/BgPoSyokudai_Destroy.s")
static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 1000, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Po_Syokudai/BgPoSyokudai_Update.s")
extern Gfx D_060003A0[];
extern Gfx D_0404D4E0[];
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Po_Syokudai/BgPoSyokudai_Draw.s")
void BgPoSyokudai_Init(Actor* thisx, GlobalContext* globalCtx) {
BgPoSyokudai* this = THIS;
s32 pad;
Actor_ProcessInitChain(&this->actor, sInitChain);
this->flameColor = (THIS->actor.params >> 8) & 0xFF;
this->actor.params &= 0x3F;
this->actor.colChkInfo.mass = 0xFF;
this->lightNode = LightContext_InsertLight(globalCtx, &globalCtx->lightCtx, &this->lightInfo);
Lights_PointGlowSetInfo(&this->lightInfo, this->actor.posRot.pos.x, (s16)this->actor.posRot.pos.y + 65,
this->actor.posRot.pos.z, 0, 0, 0, 0);
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
this->collider.dim.pos.x = this->actor.posRot.pos.x;
this->collider.dim.pos.y = this->actor.posRot.pos.y;
this->collider.dim.pos.z = this->actor.posRot.pos.z;
if (this->flameColor == POE_FLAME_PURPLE && Flags_GetSwitch(globalCtx, POE_TORCH_FLAG + POE_FLAME_GREEN) &&
Flags_GetSwitch(globalCtx, POE_TORCH_FLAG + POE_FLAME_BLUE) &&
Flags_GetSwitch(globalCtx, POE_TORCH_FLAG + POE_FLAME_RED) && !Flags_GetSwitch(globalCtx, this->actor.params)) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_PO_SISTERS, 119.0f, 225.0f, -1566.0f, 0, 0, 0,
this->actor.params);
globalCtx->envCtx.unk_BF = 0x4;
} else if (!Flags_GetSwitch(globalCtx, POE_TORCH_FLAG + POE_FLAME_PURPLE) && !Flags_GetSwitch(globalCtx, 0x1B)) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_PO_SISTERS, this->actor.posRot.pos.x,
this->actor.posRot.pos.y + 52.0f, this->actor.posRot.pos.z, 0, 0, 0,
(this->flameColor << 8) + this->actor.params + 0x1000);
} else if (!Flags_GetSwitch(globalCtx, this->actor.params)) {
if (globalCtx->envCtx.unk_BF == 0xFF) {
globalCtx->envCtx.unk_BF = 4;
}
}
this->flameTextureScroll = (s16)(Math_Rand_ZeroOne() * 20.0f);
}
void BgPoSyokudai_Destroy(Actor* thisx, GlobalContext* globalCtx) {
BgPoSyokudai* this = THIS;
LightContext_RemoveLight(globalCtx, &globalCtx->lightCtx, this->lightNode);
Collider_DestroyCylinder(globalCtx, &this->collider);
if (globalCtx->envCtx.unk_BF != 0xFF) {
globalCtx->envCtx.unk_BF = 0xFF;
}
}
void BgPoSyokudai_Update(Actor* thisx, GlobalContext* globalCtx) {
BgPoSyokudai* this = THIS;
s32 pad;
CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
if (Flags_GetSwitch(globalCtx, this->actor.params)) {
func_8002F974(&this->actor, NA_SE_EV_TORCH - SFX_FLAG);
}
this->flameTextureScroll++;
}
void BgPoSyokudai_Draw(Actor* thisx, GlobalContext* globalCtx) {
BgPoSyokudai* this = THIS;
f32 lightBrightness;
u8 red;
u8 green;
u8 blue;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_po_syokudai.c", 315);
func_80093D18(globalCtx->state.gfxCtx);
gSPMatrix(oGfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_po_syokudai.c", 319),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(oGfxCtx->polyOpa.p++, D_060003A0);
if (Flags_GetSwitch(globalCtx, this->actor.params)) {
Color_RGBA8* primColor = &sPrimColors[this->flameColor];
Color_RGBA8* envColor = &sEnvColors[this->flameColor];
lightBrightness = (0.3f * Math_Rand_ZeroOne()) + 0.7f;
red = (u8)(primColor->r * lightBrightness);
green = (u8)(primColor->g * lightBrightness);
blue = (u8)(primColor->b * lightBrightness);
Lights_PointSetColorAndRadius(&this->lightInfo, red, green, blue, 200);
func_80093D84(globalCtx->state.gfxCtx);
gSPSegment(oGfxCtx->polyXlu.p++, 0x08,
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, 0, 32, 64, 1, 0,
(this->flameTextureScroll * -20) & 0x1FF, 32, 128));
gDPSetPrimColor(oGfxCtx->polyXlu.p++, 0x80, 0x80, primColor->r, primColor->g, primColor->b, 255);
gDPSetEnvColor(oGfxCtx->polyXlu.p++, envColor->r, envColor->g, envColor->b, 255);
Matrix_Translate(0.0f, 52.0f, 0.0f, MTXMODE_APPLY);
Matrix_RotateY((s16)(func_8005A9F4(ACTIVE_CAM) - this->actor.shape.rot.y + 0x8000) * (M_PI / 0x8000),
MTXMODE_APPLY);
Matrix_Scale(0.0027f, 0.0027f, 0.0027f, MTXMODE_APPLY);
gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_po_syokudai.c", 368),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(oGfxCtx->polyXlu.p++, D_0404D4E0);
}
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_po_syokudai.c", 373);
}
@@ -8,7 +8,11 @@ struct BgPoSyokudai;
typedef struct BgPoSyokudai {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x64];
/* 0x014C */ u8 flameColor;
/* 0x014E */ s16 flameTextureScroll;
/* 0x0150 */ LightNode* lightNode;
/* 0x0154 */ LightInfo lightInfo;
/* 0x0164 */ ColliderCylinder collider;
} BgPoSyokudai; // size = 0x01B0
extern const ActorInit Bg_Po_Syokudai_InitVars;
@@ -1,3 +1,9 @@
/*
* File: z_bg_spot18_shutter.c
* Overlay: Bg_Spot18_Shutter
* Description:
*/
#include "z_bg_spot18_shutter.h"
#define FLAGS 0x00000030
@@ -9,7 +15,12 @@ void BgSpot18Shutter_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgSpot18Shutter_Update(Actor* thisx, GlobalContext* globalCtx);
void BgSpot18Shutter_Draw(Actor* thisx, GlobalContext* globalCtx);
/*
void func_808B95AC(BgSpot18Shutter* this, GlobalContext* globalCtx);
void func_808B95B8(BgSpot18Shutter* this, GlobalContext* globalCtx);
void func_808B9618(BgSpot18Shutter* this, GlobalContext* globalCtx);
void func_808B9698(BgSpot18Shutter* this, GlobalContext* globalCtx);
void func_808B971C(BgSpot18Shutter* this, GlobalContext* globalCtx);
const ActorInit Bg_Spot18_Shutter_InitVars = {
ACTOR_BG_SPOT18_SHUTTER,
ACTORTYPE_PROP,
@@ -21,21 +32,114 @@ const ActorInit Bg_Spot18_Shutter_InitVars = {
(ActorFunc)BgSpot18Shutter_Update,
(ActorFunc)BgSpot18Shutter_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/BgSpot18Shutter_Init.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/BgSpot18Shutter_Destroy.s")
static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/func_808B95AC.s")
extern Gfx D_06000420[];
extern UNK_TYPE D_06000534;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/func_808B95B8.s")
void BgSpot18Shutter_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
BgSpot18Shutter* this = THIS;
s32 param = (this->dyna.actor.params >> 8) & 1;
s32 localC = 0;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/func_808B9618.s")
DynaPolyInfo_SetActorMove(&this->dyna, DPM_UNK);
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/func_808B9698.s")
if (param == 0) {
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
if (gSaveContext.infTable[16] & 0x200) {
this->actionFunc = func_808B95AC;
this->dyna.actor.posRot.pos.y += 180.0f;
} else {
this->actionFunc = func_808B9618;
}
} else {
if (Flags_GetSwitch(globalCtx, this->dyna.actor.params & 0x3F)) {
this->actionFunc = func_808B95AC;
this->dyna.actor.posRot.pos.y += 180.0f;
} else {
this->actionFunc = func_808B95B8;
}
}
} else {
if (gSaveContext.infTable[16] & 0x200) {
this->dyna.actor.posRot.pos.x += 125.0f * Math_Coss(this->dyna.actor.posRot.rot.y);
this->dyna.actor.posRot.pos.z -= 125.0f * Math_Sins(this->dyna.actor.posRot.rot.y);
this->actionFunc = func_808B95AC;
} else {
this->actionFunc = func_808B9618;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/func_808B971C.s")
DynaPolyInfo_Alloc(&D_06000534, &localC);
this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, localC);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/BgSpot18Shutter_Update.s")
void BgSpot18Shutter_Destroy(Actor* thisx, GlobalContext* globalCtx) {
BgSpot18Shutter* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot18_Shutter/BgSpot18Shutter_Draw.s")
DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
}
void func_808B95AC(BgSpot18Shutter* this, GlobalContext* globalCtx) {
}
void func_808B95B8(BgSpot18Shutter* this, GlobalContext* globalCtx) {
if (Flags_GetSwitch(globalCtx, this->dyna.actor.params & 0x3F)) {
Actor_SetHeight(&this->dyna.actor, 70.0f);
func_80080480(globalCtx, this);
this->actionFunc = func_808B9698;
}
}
void func_808B9618(BgSpot18Shutter* this, GlobalContext* globalCtx) {
if (gSaveContext.infTable[16] & 0x200) {
Actor_SetHeight(&this->dyna.actor, 70.0f);
if (((this->dyna.actor.params >> 8) & 1) == 0) {
this->actionFunc = func_808B9698;
} else {
this->actionFunc = func_808B971C;
func_800800F8(globalCtx, 0x107D, 0x8C, &this->dyna.actor, 0);
}
}
}
void func_808B9698(BgSpot18Shutter* this, GlobalContext* globalCtx) {
if (Math_ApproxF(&this->dyna.actor.posRot.pos.y, this->dyna.actor.initPosRot.pos.y + 180.0f, 1.44f)) {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_STONEDOOR_STOP);
this->actionFunc = func_808B95AC;
} else {
func_8002F974(&this->dyna.actor, NA_SE_EV_STONE_STATUE_OPEN - SFX_FLAG);
}
}
void func_808B971C(BgSpot18Shutter* this, GlobalContext* globalCtx) {
f32 sin = Math_Sins(this->dyna.actor.posRot.rot.y);
f32 cos = Math_Coss(this->dyna.actor.posRot.rot.y);
s32 flag =
Math_ApproxF(&this->dyna.actor.posRot.pos.x, this->dyna.actor.initPosRot.pos.x + (125.0f * cos), fabsf(cos)) &
1;
flag &=
Math_ApproxF(&this->dyna.actor.posRot.pos.z, this->dyna.actor.initPosRot.pos.z - (125.0f * sin), fabsf(sin));
if (flag) {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_STONEDOOR_STOP);
this->actionFunc = func_808B95AC;
} else {
func_8002F974(&this->dyna.actor, NA_SE_EV_STONE_STATUE_OPEN - SFX_FLAG);
}
}
void BgSpot18Shutter_Update(Actor* thisx, GlobalContext* globalCtx) {
BgSpot18Shutter* this = THIS;
this->actionFunc(this, globalCtx);
}
void BgSpot18Shutter_Draw(Actor* thisx, GlobalContext* globalCtx) {
Gfx_DrawDListOpa(globalCtx, D_06000420);
}
@@ -6,9 +6,11 @@
struct BgSpot18Shutter;
typedef void (*BgSpot18ShutterActionFunc)(struct BgSpot18Shutter*, GlobalContext*);
typedef struct BgSpot18Shutter {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x1C];
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ BgSpot18ShutterActionFunc actionFunc;
} BgSpot18Shutter; // size = 0x0168
extern const ActorInit Bg_Spot18_Shutter_InitVars;
+68 -6
View File
@@ -15,7 +15,6 @@ void ObjHana_Destroy(Actor* thisx, GlobalContext* globalCtx);
void ObjHana_Update(Actor* thisx, GlobalContext* globalCtx);
void ObjHana_Draw(Actor* thisx, GlobalContext* globalCtx);
/*
const ActorInit Obj_Hana_InitVars = {
ACTOR_OBJ_HANA,
ACTORTYPE_PROP,
@@ -27,11 +26,74 @@ const ActorInit Obj_Hana_InitVars = {
(ActorFunc)ObjHana_Update,
(ActorFunc)ObjHana_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Hana/ObjHana_Init.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Hana/ObjHana_Destroy.s")
static ColliderCylinderInit sCylinderInit = {
{ COLTYPE_UNK10, 0x00, 0x00, 0x39, 0x20, COLSHAPE_CYLINDER },
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x00, 0x00, 0x01 },
{ 8, 10, 0, { 0, 0, 0 } },
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Hana/ObjHana_Update.s")
static CollisionCheckInfoInit sColChkInfoInit = { 0, 0xC, 0x3C, 0xFF };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Hana/ObjHana_Draw.s")
typedef struct {
/* 0x00 */ Gfx* dList;
/* 0x04 */ f32 scale;
/* 0x08 */ f32 yOffset;
/* 0x0C */ s16 radius;
/* 0x0E */ s16 height;
} HanaParams; // size = 0x10
static HanaParams sHanaParams[] = {
{ 0x05000500, 0.01f, 0.0f, -1, 0 },
{ 0x0500A880, 0.1f, 58.0f, 10, 18 },
{ 0x0500B9D0, 0.4f, 0.0f, 12, 44 },
};
static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 10, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneForward, 900, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 60, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 800, ICHAIN_STOP),
};
void ObjHana_Init(Actor* thisx, GlobalContext* globalCtx) {
ObjHana* this = THIS;
s16 type = this->actor.params & 3;
HanaParams* params = &sHanaParams[type];
Actor_ProcessInitChain(&this->actor, sInitChain);
Actor_SetScale(&this->actor, params->scale);
this->actor.shape.unk_08 = params->yOffset;
if (params->radius >= 0) {
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
Collider_CylinderUpdate(&this->actor, &this->collider);
this->collider.dim.radius = params->radius;
this->collider.dim.height = params->height;
func_80061ED4(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
}
if (type == 2 && (gSaveContext.eventChkInf[4] & 1)) {
Actor_Kill(&this->actor);
}
}
void ObjHana_Destroy(Actor* thisx, GlobalContext* globalCtx) {
ObjHana* this = THIS;
if (sHanaParams[this->actor.params & 3].radius >= 0) {
Collider_DestroyCylinder(globalCtx, &this->collider);
}
}
void ObjHana_Update(Actor* thisx, GlobalContext* globalCtx) {
ObjHana* this = THIS;
if (sHanaParams[this->actor.params & 3].radius >= 0 && this->actor.xzDistFromLink < 400.0f) {
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
}
}
void ObjHana_Draw(Actor* thisx, GlobalContext* globalCtx) {
Gfx_DrawDListOpa(globalCtx, sHanaParams[thisx->params & 3].dList);
}

Some files were not shown because too many files have changed in this diff Show More