Browse Source

Refresh 2

master
n64 3 years ago
parent
commit
52e605f075
  1. 29
      CHANGES
  2. 29
      Makefile
  3. 60
      README.md
  4. 3
      actors/bubba/model.s
  5. 3
      actors/chain_ball/model.s
  6. 3
      actors/cyan_fish/model.s
  7. 3
      actors/flyguy/model.s
  8. 3
      actors/klepto/model.s
  9. 3
      actors/piranha_plant/model.s
  10. 68
      actors/power_meter/model.s
  11. 5
      actors/small_key/model.s
  12. 3
      actors/snowman/model.s
  13. 12
      actors/sparkle/model.s
  14. 5
      actors/spindrift/model.s
  15. 3
      actors/sushi/model.s
  16. 3
      actors/ukiki/model.s
  17. 16
      actors/water_splash/model.s
  18. 20
      actors/whomp/collision.s
  19. 4
      actors/whomp/model.s
  20. 469
      asm/non_matchings/func_80316928_jp.s
  21. 503
      asm/non_matchings/func_80316928_us.s
  22. 40
      asm/non_matchings/handle_dialog_text_and_pages_eu.s
  23. 28
      assets.json
  24. 16
      assets/demo_data.s
  25. 13
      assets/mario_anim_data.s
  26. 2
      bin/effect.s
  27. 1198
      bin/segment2.s
  28. 19
      charmap.txt
  29. 30
      charmap_menu.txt
  30. 19
      data/behavior_data.s
  31. 10240
      data/trig_tables.s
  32. 16
      diff.sh
  33. 10
      enhancements/mem_error_screen.inc.c
  34. 473
      include/PR/abi.h
  35. 206
      include/PR/gbi.h
  36. 16
      include/PR/gbi.inc
  37. 308
      include/PR/gbi_old.h
  38. 6
      include/PR/os_cache.h
  39. 2
      include/PR/os_misc.h
  40. 14
      include/PR/os_pi.h
  41. 14
      include/PR/ultratypes.h
  42. 976
      include/audio_defines.h
  43. 2
      include/behavior_data.h
  44. 10
      include/config.h
  45. 2
      include/geo_commands.inc
  46. 56
      include/level_commands.inc
  47. 9
      include/macros.h
  48. 10
      include/macros.inc
  49. 9
      include/object_constants.h
  50. 1793
      include/object_fields.h
  51. 9
      include/sm64.h
  52. 18
      include/text_menu_strings.h.in
  53. 390
      include/text_strings.h.in
  54. 29
      include/types.h
  55. 11
      levels/castle_grounds/areas/1/11/anim.s
  56. 2
      levels/castle_grounds/areas/1/13/model.s
  57. 2
      levels/ending/geo.s
  58. 82
      levels/ending/leveldata.s
  59. 4
      levels/hmc/areas/1/painting.s
  60. 2
      levels/intro/geo.s
  61. 56
      levels/menu/geo.s
  62. 1121
      levels/menu/leveldata.s
  63. 32
      levels/menu/script.s
  64. BIN
      lib/PR/audio/aspMain.bin
  65. BIN
      lib/PR/audio/aspMain_unk.bin
  66. BIN
      lib/PR/f3d/old/F3D.bin
  67. BIN
      lib/PR/f3d/old/F3D_unk.bin
  68. 9
      lib/rsp.s
  69. 2
      lib/src/_Ldtob.c
  70. 2
      lib/src/_Printf.c
  71. 2
      lib/src/__osSiRawReadIo.c
  72. 2
      lib/src/__osSiRawWriteIo.c
  73. 4
      lib/src/alBnkfNew.c
  74. 2
      lib/src/hardware.h
  75. 2
      lib/src/kdebugserver.c
  76. 2
      lib/src/osAiSetNextBuffer.c
  77. 3
      lib/src/osPiRawStartDma.c
  78. 2
      lib/src/osPiStartDma.c
  79. 4
      lib/src/osStartThread.c
  80. 12
      lib/src/osVirtualToPhysical.c
  81. 56
      sm64.ld
  82. 2090
      sound/sequences/00_sound_player.s
  83. 82
      src/audio/external.c
  84. 6
      src/audio/external.h
  85. 4
      src/audio/internal.h
  86. 96
      src/audio/load.c
  87. 8
      src/audio/load.h
  88. 49
      src/audio/memory.c
  89. 18
      src/audio/seqplayer.c
  90. 51
      src/audio/synthesis.c
  91. 0
      src/buffers/buffers.c
  92. 4
      src/buffers/buffers.h
  93. 108
      src/engine/behavior_script.c
  94. 59
      src/engine/geo_layout.c
  95. 5
      src/engine/geo_layout.h
  96. 19
      src/engine/graph_node.c
  97. 13
      src/engine/graph_node.h
  98. 91
      src/engine/level_script.c
  99. 2
      src/engine/surface_load.c
  100. 26
      src/game/area.c

29
CHANGES

@ -1,3 +1,32 @@
Refresh #2
Changes from Refresh #1:
1.) Label src/game/behaviors/boo.inc.c
2.) Verify half of audio_defines.h
3.) Label ingame_menu.c and some dialog stuff
4.) Improve handle_dialog_text_and_pages EU non-matching
5.) Fix texture format for water splash/sparkle
6.) Merge ucode.bin and ucode_unk.bin
7.) 64-bit fixes
8.) [AUDIO] Match func_80316928
9.) Documented bug in Tuxie's mother's code
10.) [AUDIO] Slightly closer matching for process_level_music_dynamics
11.) Name channel scripts in sequence 0
12.) Nicer error message when sha1sum doesn't match
13.) Refactor object fields
14.) Document file_select.c
15.) Document star_select.c
16.) Add uncompressed string support to textconv
17.) Document main_menu geo and leveldata
18.) Document hud.c and rename char textures
19.) Correct gSPTextureRectangle values
20.) Linker script wildcard
- Fixes "undefined reference to x in discarded section y" linker errors.
- Also means that you no longer have to add linker script entries for source files.
21.) Reference qemu-irix package and add project structure
- Installing qemu-irix is as simple as installing the provided Debian package on the GitHub "Releases" tab
(https://github.com/n64decomp/qemu-irix).
- Old qemu-irix installs are unaffected by this change, and it is still possible to install qemu-irix with the older method.
Refresh #1
Changes from initial release:

29
Makefile

@ -131,7 +131,7 @@ TEXTURE_DIR := textures
ACTOR_DIR := actors
# Directories containing source files
SRC_DIRS := src src/engine src/game src/audio
SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers
ASM_DIRS := asm actors lib data levels assets sound text
BIN_DIRS := bin bin/$(VERSION)
@ -207,6 +207,14 @@ else
CROSS := mips64-elf-
endif
# check that either QEMU_IRIX is set or qemu-irix package installed
ifndef QEMU_IRIX
QEMU_IRIX := $(shell which qemu-irix)
ifeq (, $(QEMU_IRIX))
$(error Please install qemu-irix package or set QEMU_IRIX env var to the full qemu-irix binary path)
endif
endif
AS := $(CROSS)as
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
CPP := cpp -P
@ -260,15 +268,11 @@ ifeq ($(BINUTILS_DEPEND),0)
$(error binutils version 2.27 required, version $(BINUTILS_VER_MAJOR).$(BINUTILS_VER_MINOR) detected)
endif
ifndef QEMU_IRIX
$(error env variable QEMU_IRIX should point to the qemu-mips binary)
endif
######################## Targets #############################
all: $(ROM)
ifeq ($(COMPARE),1)
@$(SHA1SUM) -c $(TARGET).sha1
@$(SHA1SUM) -c $(TARGET).sha1 || (echo 'The build succeeded, but did not match the official ROM. This is expected if you are making changes to the game.\nTo silence this message, use "make COMPARE=0"'. && false)
endif
clean:
@ -288,13 +292,16 @@ libultra: $(BUILD_DIR)/libultra.a
asm/boot.s: $(BUILD_DIR)/lib/bin/ipl3_font.bin
$(BUILD_DIR)/lib/bin/ipl3_font.bin: lib/ipl3_font.png | $(BUILD_DIR)
$(BUILD_DIR)/lib/bin/ipl3_font.bin: lib/ipl3_font.png
$(IPLFONTUTIL) e $< $@
$(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in | $(BUILD_DIR)
$(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in
$(TEXTCONV) charmap.txt $< $@
$(BUILD_DIR)/text/%.s: text/$(VERSION)/%.s.in | $(BUILD_DIR)
$(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in
$(TEXTCONV) charmap_menu.txt $< $@
$(BUILD_DIR)/text/%.s: text/$(VERSION)/%.s.in
$(TEXTCONV) charmap.txt $< $@
ifeq ($(VERSION),eu)
@ -313,8 +320,8 @@ ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GOD
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
$(BUILD_DIR)/src/game/star_select.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/game/file_select.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/include/text_menu_strings.h
$(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/include/text_menu_strings.h
$(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
################################################################

60
README.md

@ -35,33 +35,22 @@ __Debian / Ubuntu__
sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev
```
__Arch Linux__
Download latest package from [qemu-irix Releases](https://github.com/n64decomp/qemu-irix/releases)
```
sudo pacman -Sy base-devel python audiofile
sudo dpkg -i qemu-irix-2.11.0-2169-g32ab296eef_amd64.deb
```
Install the following AUR packages:
* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
* [qemu-irix-git](https://aur.archlinux.org/packages/qemu-irix-git) (AUR)
#### 3. Install qemu-irix
(Optional) Clone https://github.com/n64decomp/qemu-irix and follow the install instructions in the README.
1. Options:
1. Clone https://github.com/n64decomp/qemu-irix to somewhere and follow its install instructions in the README.
2. Optionally, grab the prebuilt qemu-irix from the [Releases](https://github.com/n64decomp/sm64/releases) section.
3. (Arch) Use AUR package [qemu-irix-git](https://aur.archlinux.org/packages/qemu-irix-git)
2. (For the first two options), copy executable `qemu-irix` from irix-linux-user to
somewhere convenient with a relatively short path. e.g.:
```
mkdir -p /opt/qemu-irix/bin
cp irix-linux-user/qemu-irix /opt/qemu-irix/bin
```
3. Define `QEMU_IRIX` environment variable in your `~/.bashrc` to point to this qemu-irix executable.
__Arch Linux__
```
export QEMU_IRIX=/opt/qemu-irix/bin/qemu-irix
sudo pacman -S base-devel python audiofile
```
Install the following AUR packages:
* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
* [qemu-irix-git](https://aur.archlinux.org/packages/qemu-irix-git) (AUR)
#### 4. Build ROM
#### 3. Build ROM
Run `make` to build the ROM (defaults to `VERSION=us`). Make sure your path to the repo
is not too long or else this process will error, as the emulated IDO compiler cannot
@ -85,6 +74,37 @@ Then follow the directions in the [Linux](#linux) installation section above.
macOS is currently unsupported as qemu-irix is unable to be built for macOS host.
The recommended path is installing a Linux distribution under a VM.
## Project Structure
```
sm64
├── actors: object behaviors, geo layout, and display lists
├── asm: handwritten assembly code
│   └── non_matchings: asm for non-matching sections
├── assets: animation and demo data
│   ├── anims: animation data
│   └── demos: demo data
├── bin: asm files for ordering display lists and textures
├── build: output directory
├── data: behavior scripts, misc. data
├── doxygen: documentation infrastructure
├── enhancements: example source modifications
├── include: header files
├── levels: level scripts, geo layout, and display lists
├── lib: SDK library code
├── sound: sequences, sound samples, and sound banks
├── src: C source code for game
│   ├── audio: audio code
│   ├── buffers: stacks, heaps, and task buffers
│   ├── engine: script processing engines and utils
│   ├── game: behaviors and rest of game source
│   ├── goddard: Mario intro screen
│   └── menu: title screen and file, act, and debug level selection menus
├── text: dialog, level names, act names
├── textures: skybox and generic texture data
└── tools: build tools
```
## Contributing
Pull requests are welcome. For major changes, please open an issue first to

3
actors/bubba/model.s

@ -2,8 +2,7 @@
# It's possible that bubba and bub used to be 2 "actors" in
# one actor file.
.word 0
.word 0 # Bin ID? What is this?
.dword 0 # Bin ID? What is this?
# Bubba

3
actors/chain_ball/model.s

@ -8,7 +8,8 @@ vertex 26, -26, 0, 992, 992, 0xFF, 0xFF, 0xFF, 0xFF
vertex 26, 26, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -26, 26, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
.word 0, 0 # align but balign wont here?
.dword 0 # align? binid?
chain_ball_seg6_texture_06020AE8: # 0x06020AE8
.incbin "actors/chain_ball/chain_ball.rgba16"

3
actors/cyan_fish/model.s

@ -1,8 +1,7 @@
# Cyan Fish
# ???
.word 0
.word 0
.dword 0
cyan_fish_seg6_texture_0600D468: # 0x0600D468
.incbin "actors/cyan_fish/cyan_fish.rgba16"

3
actors/flyguy/model.s

@ -1,8 +1,7 @@
# Flyguy
# ???
.word 0
.word 0
.dword 0
flyguy_seg8_texture_0800E088: # 0x0800E088
.incbin "actors/flyguy/flyguy_cloth_wrinkle.rgba16"

3
actors/klepto/model.s

@ -1,7 +1,6 @@
# Possible Removed Actor File
.word 0
.word 0 # Bin ID? What is this?
.dword 0 # Bin ID? What is this?
# Klepto

3
actors/piranha_plant/model.s

@ -2191,5 +2191,4 @@ glabel piranha_plant_seg6_anims_0601C31C # 0x0601C31C
.word 0
# huh? this isnt following the Bin ID format?
.word 0
.word 1
.dword 1

68
actors/power_meter/model.s

@ -1,50 +1,48 @@
# Power Meter HUD
# ???
.word 0
.word 0
.word 0, 0
power_meter_seg3_texture_030233E0: # 0x030233E0
texture_power_meter_left_side: # 0x030233E0
.incbin "actors/power_meter/power_meter_left_side.rgba16"
power_meter_seg3_texture_030243E0: # 0x030243E0
texture_power_meter_right_side: # 0x030243E0
.incbin "actors/power_meter/power_meter_right_side.rgba16"
power_meter_seg3_texture_030253E0: # 0x030253E0
texture_power_meter_full: # 0x030253E0
.incbin "actors/power_meter/power_meter_full.rgba16"
power_meter_seg3_texture_03025BE0: # 0x03025BE0
texture_power_meter_seven_segments: # 0x03025BE0
.incbin "actors/power_meter/power_meter_seven_segments.rgba16"
power_meter_seg3_texture_030263E0: # 0x030263E0
texture_power_meter_six_segments: # 0x030263E0
.incbin "actors/power_meter/power_meter_six_segments.rgba16"
power_meter_seg3_texture_03026BE0: # 0x03026BE0
texture_power_meter_five_segments: # 0x03026BE0
.incbin "actors/power_meter/power_meter_five_segments.rgba16"
power_meter_seg3_texture_030273E0: # 0x030273E0
texture_power_meter_four_segments: # 0x030273E0
.incbin "actors/power_meter/power_meter_four_segments.rgba16"
power_meter_seg3_texture_03027BE0: # 0x03027BE0
texture_power_meter_three_segments: # 0x03027BE0
.incbin "actors/power_meter/power_meter_three_segments.rgba16"
power_meter_seg3_texture_030283E0: # 0x030283E0
texture_power_meter_two_segments: # 0x030283E0
.incbin "actors/power_meter/power_meter_two_segments.rgba16"
power_meter_seg3_texture_03028BE0: # 0x03028BE0
texture_power_meter_one_segments: # 0x03028BE0
.incbin "actors/power_meter/power_meter_one_segment.rgba16"
glabel power_meter_seg3_health_icons_030293E0 # 0x030293E0
.word power_meter_seg3_texture_03028BE0
.word power_meter_seg3_texture_030283E0
.word power_meter_seg3_texture_03027BE0
.word power_meter_seg3_texture_030273E0
.word power_meter_seg3_texture_03026BE0
.word power_meter_seg3_texture_030263E0
.word power_meter_seg3_texture_03025BE0
.word power_meter_seg3_texture_030253E0
power_meter_seg3_vertex_03029400: # 0x03029400
glabel power_meter_health_segments_lut # 0x030293E0
.word texture_power_meter_one_segments
.word texture_power_meter_two_segments
.word texture_power_meter_three_segments
.word texture_power_meter_four_segments
.word texture_power_meter_five_segments
.word texture_power_meter_six_segments
.word texture_power_meter_seven_segments
.word texture_power_meter_full
vertex_power_meter_base: # 0x03029400
vertex -32, -32, 0, 0, 2016, 0xFF, 0xFF, 0xFF, 0xFF
vertex 0, -32, 0, 992, 2016, 0xFF, 0xFF, 0xFF, 0xFF
vertex 0, 32, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF
@ -54,56 +52,56 @@ vertex 32, -32, 0, 1024, 2016, 0xFF, 0xFF, 0xFF, 0xFF
vertex 32, 32, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex 0, 32, 0, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF
glabel power_meter_seg3_dl_03029480 # 0x03029480 - 0x03029530
glabel dl_power_meter_base # 0x03029480 - 0x03029530
gsDPPipeSync
gsSPClearGeometryMode G_LIGHTING
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0
# There were multiple matching pairs, so I don't know if this is correct or not.
gsDPSetRenderMode G_RM_TEX_EDGE, G_RM_TEX_EDGE2
# It could also be one of these:
# It could also be one of these:
# G_RM_OPA_SURF, G_RM_TEX_EDGE2; G_RM_TEX_EDGE, G_RM_OPA_SURF2; G_RM_RA_ZB_OPA_SURF, G_RM_TEX_EDGE, G_RM_OPA_CI2;
# G_RM_OPA_CI, G_RM_TEX_EDGE2; G_G_RM_PASS, G_RM_TEX_EDGE2;
# G_RM_OPA_CI, G_RM_TEX_EDGE2; G_G_RM_PASS, G_RM_TEX_EDGE2;
gsDPSetTextureFilter G_TF_POINT
gsSPTexture -1, -1, 0, 0, 1
gsSPVertex power_meter_seg3_vertex_03029400, 8, 0
gsSPVertex vertex_power_meter_base, 8, 0
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 124, 252
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, power_meter_seg3_texture_030233E0
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_power_meter_left_side
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x7FF, 0x100
gsSP2Triangles 0, 1, 2, 0x0, 0, 2, 3, 0x0
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, power_meter_seg3_texture_030243E0
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_power_meter_right_side
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x7FF, 0x100
gsSP2Triangles 4, 5, 6, 0x0, 4, 6, 7, 0x0
gsSPEndDisplayList
power_meter_seg3_vertex_03029530: # 0x03029530
vertex_power_meter_health_segments: # 0x03029530
vertex -16, -16, 0, 0, 992, 0xFF, 0xFF, 0xFF, 0xFF
vertex 15, -16, 0, 992, 992, 0xFF, 0xFF, 0xFF, 0xFF
vertex 15, 16, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -16, 16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
glabel power_meter_seg3_dl_03029570 # 0x03029570 - 0x030295A0
glabel dl_power_meter_health_segments_begin # 0x03029570 - 0x030295A0
gsDPPipeSync
gsSPVertex power_meter_seg3_vertex_03029530, 4, 0
gsSPVertex vertex_power_meter_health_segments, 4, 0
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 124, 124
gsSPEndDisplayList
glabel power_meter_seg3_dl_030295A0 # 0x030295A0 - 0x030295D8
glabel dl_power_meter_health_segments_end # 0x030295A0 - 0x030295D8
gsDPPipeSync
gsSPTexture -1, -1, 0, 0, 0
gsSPSetGeometryMode G_LIGHTING
# There were multiple matching pairs, so I don't know if this is correct or not.
gsDPSetRenderMode G_RM_OPA_SURF, G_RM_OPA_SURF2
# It could also be one of these:
# It could also be one of these:
# G_RM_OPA_SURF, G_RM_OPA_CI2; G_RM_OPA_CI, G_RM_OPA_SURF2; G_RM_PASS, G_RM_OPA_SURF2;
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_SHADE, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_SHADE

5
actors/small_key/model.s

@ -1,8 +1,7 @@
# Small Key (unused)
# ???
.word 0
.word 0
.dword 0
small_key_seg5_light_05005798: # 0x05005798
.byte 0x3F, 0x19, 0x0C, 0x00, 0x3F, 0x19, 0x0C, 0x00
@ -32,7 +31,7 @@ small_key_seg5_light_050057E8: # 0x050057E8
.byte 0xCC, 0xFF, 0x00, 0x00, 0xCC, 0xFF, 0x00, 0x00
.byte 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00
.word 0, 0 # align?
.balign 16
small_key_seg5_vertex_05005800: # 0x05005800
vertex -14, -109, 14, 0, 0, 0x00, 0x00, 0x7F, 0x00
vertex 14, -109, 14, 0, 0, 0x00, 0x00, 0x7F, 0x00

3
actors/snowman/model.s

@ -1,8 +1,7 @@
# Snowman
# ???
.word 0
.word 1
.dword 1
# Unreferenced light
.byte 0x0D, 0x0C, 0x28, 0x00, 0x0D, 0x0C, 0x28, 0x00

12
actors/sparkle/model.s

@ -7,22 +7,22 @@ vertex 32, 64, 0, 1984, 0, 0x00, 0x00, 0x7F, 0x00
vertex -32, 64, 0, 0, 0, 0x00, 0x00, 0x7F, 0x00
sparkles_seg4_texture_04027490: # 0x04027490
.incbin "actors/sparkle/sparkle_0.ia16"
.incbin "actors/sparkle/sparkle_0.rgba16"
sparkles_seg4_texture_04027C90: # 0x04027C90
.incbin "actors/sparkle/sparkle_1.ia16"
.incbin "actors/sparkle/sparkle_1.rgba16"
sparkles_seg4_texture_04028490: # 0x04028490
.incbin "actors/sparkle/sparkle_2.ia16"
.incbin "actors/sparkle/sparkle_2.rgba16"
sparkles_seg4_texture_04028C90: # 0x04028C90
.incbin "actors/sparkle/sparkle_3.ia16"
.incbin "actors/sparkle/sparkle_3.rgba16"
sparkles_seg4_texture_04029490: # 0x04029490
.incbin "actors/sparkle/sparkle_4.ia16"
.incbin "actors/sparkle/sparkle_4.rgba16"
sparkles_seg4_texture_04029C90: # 0x04029C90
.incbin "actors/sparkle/sparkle_5.ia16"
.incbin "actors/sparkle/sparkle_5.rgba16"
glabel sparkles_seg4_dl_0402A490 # 0x0402A490 - 0x0402A4F8
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0

5
actors/spindrift/model.s

@ -184,10 +184,9 @@ spindrift_seg5_anim_050006AC: # 0x050006AC
.word spindrift_seg5_animindex_050005F8
.word 0
.word 0
.balign 8
.word 0
.word 1 # False Bin ID?
.dword 1 # False Bin ID?
spindrift_seg5_texture_050006D0: # 0x050006D0
.incbin "actors/spindrift/spindrift_face.rgba16"

3
actors/sushi/model.s

@ -3,8 +3,7 @@
# Could be a duplicate binid of the previous actor, but i'm putting it here for
# macro reasons so I don't have to clutter the macros.inc with a new macro for this
# case.
.word 0
.word 1
.dword 1
sushi_seg5_texture_05008ED0: # 0x05008ED0
.incbin "actors/sushi/sushi_snout.rgba16"

3
actors/ukiki/model.s

@ -19,8 +19,7 @@ ukiki_seg5_light_05007BA8: # 0x05007BA8
.byte 0xE7, 0x93, 0x61, 0x00, 0xE7, 0x93, 0x61, 0x00
.byte 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00
.word 0
.word 1 # The hell?
.dword 1 # The hell?
ukiki_seg5_texture_05007BC0: # 0x05007BC0
.incbin "actors/ukiki/ukiki_face.rgba16"

16
actors/water_splash/model.s

@ -7,28 +7,28 @@ vertex 64, 256, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -64, 256, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
water_splash_seg4_texture_0402A5C8: # 0x0402A5C8
.incbin "actors/water_splash/water_splash_0.ia16"
.incbin "actors/water_splash/water_splash_0.rgba16"
water_splash_seg4_texture_0402B5C8: # 0x0402B5C8
.incbin "actors/water_splash/water_splash_1.ia16"
.incbin "actors/water_splash/water_splash_1.rgba16"
water_splash_seg4_texture_0402C5C8: # 0x0402C5C8
.incbin "actors/water_splash/water_splash_2.ia16"
.incbin "actors/water_splash/water_splash_2.rgba16"
water_splash_seg4_texture_0402D5C8: # 0x0402D5C8
.incbin "actors/water_splash/water_splash_3.ia16"
.incbin "actors/water_splash/water_splash_3.rgba16"
water_splash_seg4_texture_0402E5C8: # 0x0402E5C8
.incbin "actors/water_splash/water_splash_4.ia16"
.incbin "actors/water_splash/water_splash_4.rgba16"
water_splash_seg4_texture_0402F5C8: # 0x0402F5C8
.incbin "actors/water_splash/water_splash_5.ia16"
.incbin "actors/water_splash/water_splash_5.rgba16"
water_splash_seg4_texture_040305C8: # 0x040305C8
.incbin "actors/water_splash/water_splash_6.ia16"
.incbin "actors/water_splash/water_splash_6.rgba16"
water_splash_seg4_texture_040315C8: # 0x040315C8
.incbin "actors/water_splash/water_splash_7.ia16"
.incbin "actors/water_splash/water_splash_7.rgba16"
glabel water_splash_seg4_dl_040325C8 # 0x040325C8 - 0x04032640
gsSPClearGeometryMode G_LIGHTING

20
actors/whomp/collision.s

@ -13,23 +13,6 @@ colVertex 150, 430, -3
colVertex 150, 50, -3
colVertex -200, 430, -3
colTriInit SURFACE_CAM_NO_COL, 12
colTri 2, 1, 0
colTri 3, 2, 0
colTri 6, 5, 4
colTri 5, 7, 4
colTri 7, 5, 3
colTri 5, 2, 3
colTri 6, 4, 0
colTri 1, 6, 0
colTri 5, 1, 2
colTri 6, 1, 5
colTri 0, 7, 3
colTri 0, 4, 7
colTriStop
colEnd
.word 0
.else
colInit
@ -42,6 +25,7 @@ colVertex -150, 50, -3
colVertex 150, 430, -3
colVertex 150, 50, -3
colVertex -150, 430, -3
.endif
colTriInit SURFACE_CAM_NO_COL, 12
colTri 2, 1, 0
@ -58,5 +42,5 @@ colTri 0, 7, 3
colTri 0, 4, 7
colTriStop
colEnd
.word 0
.endif

4
actors/whomp/model.s

@ -1,8 +1,7 @@
# Whomp
# ???
.word 0
.word 2
.dword 2
.balign 8
@ -571,4 +570,3 @@ whomp_seg6_anim_060209EC: # 0x060209EC
glabel whomp_seg6_anims_06020A04 # 0x06020A04
.word whomp_seg6_anim_060209EC
.word whomp_seg6_anim_060202DC
# no terminator? TODO: What does the 0 at the end of these structs actually do?

469
asm/non_matchings/func_80316928_jp.s

@ -1,469 +0,0 @@
.late_rodata
glabel jtbl_80337BE0
.word L80316BD0
.word L80316BDC
.word L80316C1C
.word L80316BEC
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316BFC
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316C1C
.word L80316C0C
.text
glabel func_80316928
/* 0D1928 80316928 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0D192C 8031692C 3C0E8033 */ lui $t6, %hi(gAudioLoadLock) # $t6, 0x8033
/* 0D1930 80316930 AFBF0024 */ sw $ra, 0x24($sp)
/* 0D1934 80316934 AFB30020 */ sw $s3, 0x20($sp)
/* 0D1938 80316938 AFB2001C */ sw $s2, 0x1c($sp)
/* 0D193C 8031693C AFB10018 */ sw $s1, 0x18($sp)
/* 0D1940 80316940 AFB00014 */ sw $s0, 0x14($sp)
/* 0D1944 80316944 AFA40038 */ sw $a0, 0x38($sp)
/* 0D1948 80316948 25CE3EF4 */ addiu $t6, %lo(gAudioLoadLock) # addiu $t6, $t6, 0x3ef4
/* 0D194C 8031694C 8DCF0000 */ lw $t7, ($t6)
/* 0D1950 80316950 51E0007A */ beql $t7, $zero, .L80316B3C
/* 0D1954 80316954 8FB80038 */ lw $t8, 0x38($sp)
/* 0D1958 80316958 0C0C5A33 */ jal func_803168CC
/* 0D195C 8031695C 00000000 */ nop
/* 0D1960 80316960 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D1964 80316964 8C636D70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D1968 80316968 00008025 */ move $s0, $zero
/* 0D196C 8031696C 00002025 */ move $a0, $zero
/* 0D1970 80316970 18600027 */ blez $v1, .L80316A10
/* 0D1974 80316974 00008825 */ move $s1, $zero
/* 0D1978 80316978 3C068022 */ lui $a2, %hi(gAudioUpdatesPerFrame) # $a2, 0x8022
/* 0D197C 8031697C 3C058022 */ lui $a1, %hi(gNotes) # $a1, 0x8022
/* 0D1980 80316980 24A52A10 */ addiu $a1, %lo(gNotes) # addiu $a1, $a1, 0x2a10
/* 0D1984 80316984 24C66D7E */ addiu $a2, %lo(gAudioUpdatesPerFrame) # addiu $a2, $a2, 0x6d7e
.L80316988:
/* 0D1988 80316988 8CB80000 */ lw $t8, ($a1)
/* 0D198C 8031698C 26100001 */ addiu $s0, $s0, 1
/* 0D1990 80316990 03041021 */ addu $v0, $t8, $a0
/* 0D1994 80316994 8C590000 */ lw $t9, ($v0)
/* 0D1998 80316998 001967C2 */ srl $t4, $t9, 0x1f
/* 0D199C 8031699C 5180001A */ beql $t4, $zero, .L80316A08
/* 0D19A0 803169A0 0203082A */ slt $at, $s0, $v1
/* 0D19A4 803169A4 904D0055 */ lbu $t5, 0x55($v0)
/* 0D19A8 803169A8 51A00017 */ beql $t5, $zero, .L80316A08
/* 0D19AC 803169AC 0203082A */ slt $at, $s0, $v1
/* 0D19B0 803169B0 80CE0000 */ lb $t6, ($a2)
/* 0D19B4 803169B4 340F8000 */ li $t7, 32768
/* 0D19B8 803169B8 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D19BC 803169BC 01EE001A */ div $zero, $t7, $t6
/* 0D19C0 803169C0 0000C012 */ mflo $t8
/* 0D19C4 803169C4 A4580062 */ sh $t8, 0x62($v0)
/* 0D19C8 803169C8 8CB90000 */ lw $t9, ($a1)
/* 0D19CC 803169CC 15C00002 */ bnez $t6, .L803169D8
/* 0D19D0 803169D0 00000000 */ nop
/* 0D19D4 803169D4 0007000D */ break 7
.L803169D8:
/* 0D19D8 803169D8 2401FFFF */ li $at, -1
/* 0D19DC 803169DC 15C10004 */ bne $t6, $at, .L803169F0
/* 0D19E0 803169E0 3C018000 */ lui $at, 0x8000
/* 0D19E4 803169E4 15E10002 */ bne $t7, $at, .L803169F0
/* 0D19E8 803169E8 00000000 */ nop
/* 0D19EC 803169EC 0006000D */ break 6
.L803169F0:
/* 0D19F0 803169F0 03241021 */ addu $v0, $t9, $a0
/* 0D19F4 803169F4 904C0054 */ lbu $t4, 0x54($v0)
/* 0D19F8 803169F8 358D0010 */ ori $t5, $t4, 0x10
/* 0D19FC 803169FC A04D0054 */ sb $t5, 0x54($v0)
/* 0D1A00 80316A00 8C636D70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D1A04 80316A04 0203082A */ slt $at, $s0, $v1
.L80316A08:
/* 0D1A08 80316A08 1420FFDF */ bnez $at, .L80316988
/* 0D1A0C 80316A0C 248400C0 */ addiu $a0, $a0, 0xc0
.L80316A10:
/* 0D1A10 80316A10 0C0C5A3D */ jal wait_for_audio_frames
/* 0D1A14 80316A14 24040001 */ li $a0, 1
/* 0D1A18 80316A18 26310001 */ addiu $s1, $s1, 1
/* 0D1A1C 80316A1C 2A2100F1 */ slti $at, $s1, 0xf1
/* 0D1A20 80316A20 10200013 */ beqz $at, .L80316A70
/* 0D1A24 80316A24 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D1A28 80316A28 8C636D70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D1A2C 80316A2C 00008025 */ move $s0, $zero
/* 0D1A30 80316A30 3C028022 */ lui $v0, %hi(gNotes) # $v0, 0x8022
/* 0D1A34 80316A34 1860000A */ blez $v1, .L80316A60
/* 0D1A38 80316A38 00000000 */ nop
/* 0D1A3C 80316A3C 8C422A10 */ lw $v0, %lo(gNotes)($v0)
.L80316A40:
/* 0D1A40 80316A40 8C4F0000 */ lw $t7, ($v0)
/* 0D1A44 80316A44 000F77C2 */ srl $t6, $t7, 0x1f
/* 0D1A48 80316A48 15C00005 */ bnez $t6, .L80316A60
/* 0D1A4C 80316A4C 00000000 */ nop
/* 0D1A50 80316A50 26100001 */ addiu $s0, $s0, 1
/* 0D1A54 80316A54 0203082A */ slt $at, $s0, $v1
/* 0D1A58 80316A58 1420FFF9 */ bnez $at, .L80316A40
/* 0D1A5C 80316A5C 244200C0 */ addiu $v0, $v0, 0xc0
.L80316A60:
/* 0D1A60 80316A60 12030003 */ beq $s0, $v1, .L80316A70
/* 0D1A64 80316A64 00000000 */ nop
/* 0D1A68 80316A68 1000FFE9 */ b .L80316A10
/* 0D1A6C 80316A6C 00000000 */ nop
.L80316A70:
/* 0D1A70 80316A70 0C0C5A33 */ jal func_803168CC
/* 0D1A74 80316A74 00000000 */ nop
/* 0D1A78 80316A78 0C0C5A3D */ jal wait_for_audio_frames
/* 0D1A7C 80316A7C 24040003 */ li $a0, 3
/* 0D1A80 80316A80 3C181971 */ lui $t8, (0x19710515 >> 16) # lui $t8, 0x1971
/* 0D1A84 80316A84 3C198033 */ lui $t9, %hi(gAudioLoadLock) # $t9, 0x8033
/* 0D1A88 80316A88 27393EF4 */ addiu $t9, %lo(gAudioLoadLock) # addiu $t9, $t9, 0x3ef4
/* 0D1A8C 80316A8C 37180515 */ ori $t8, (0x19710515 & 0xFFFF) # ori $t8, $t8, 0x515
/* 0D1A90 80316A90 AF380000 */ sw $t8, ($t9)
/* 0D1A94 80316A94 0C0C5A3D */ jal wait_for_audio_frames
/* 0D1A98 80316A98 24040003 */ li $a0, 3
/* 0D1A9C 80316A9C 3C138022 */ lui $s3, %hi(gCurrAudioFrameDmaCount) # $s3, 0x8022
/* 0D1AA0 80316AA0 26736D84 */ addiu $s3, %lo(gCurrAudioFrameDmaCount) # addiu $s3, $s3, 0x6d84
/* 0D1AA4 80316AA4 8E710000 */ lw $s1, ($s3)
/* 0D1AA8 80316AA8 1A200014 */ blez $s1, .L80316AFC
/* 0D1AAC 80316AAC 00000000 */ nop
/* 0D1AB0 80316AB0 3C128022 */ lui $s2, %hi(gCurrAudioFrameDmaQueue) # $s2, 0x8022
/* 0D1AB4 80316AB4 26525EE8 */ addiu $s2, %lo(gCurrAudioFrameDmaQueue) # addiu $s2, $s2, 0x5ee8
/* 0D1AB8 80316AB8 8E6C0000 */ lw $t4, ($s3)
.L80316ABC:
/* 0D1ABC 80316ABC 00008025 */ move $s0, $zero
/* 0D1AC0 80316AC0 1980000C */ blez $t4, .L80316AF4
/* 0D1AC4 80316AC4 02402025 */ move $a0, $s2
.L80316AC8:
/* 0D1AC8 80316AC8 00002825 */ move $a1, $zero
/* 0D1ACC 80316ACC 0C0C8634 */ jal osRecvMesg
/* 0D1AD0 80316AD0 00003025 */ move $a2, $zero
/* 0D1AD4 80316AD4 54400003 */ bnezl $v0, .L80316AE4
/* 0D1AD8 80316AD8 8E6D0000 */ lw $t5, ($s3)
/* 0D1ADC 80316ADC 2631FFFF */ addiu $s1, $s1, -1
/* 0D1AE0 80316AE0 8E6D0000 */ lw $t5, ($s3)
.L80316AE4:
/* 0D1AE4 80316AE4 26100001 */ addiu $s0, $s0, 1
/* 0D1AE8 80316AE8 020D082A */ slt $at, $s0, $t5
/* 0D1AEC 80316AEC 5420FFF6 */ bnezl $at, .L80316AC8
/* 0D1AF0 80316AF0 02402025 */ move $a0, $s2
.L80316AF4:
/* 0D1AF4 80316AF4 5E20FFF1 */ bgtzl $s1, .L80316ABC
/* 0D1AF8 80316AF8 8E6C0000 */ lw $t4, ($s3)
.L80316AFC:
/* 0D1AFC 80316AFC 3C038022 */ lui $v1, %hi(gAiBuffers) # $v1, 0x8022
/* 0D1B00 80316B00 3C068022 */ lui $a2, %hi(gAiBuffers + 0xC) # $a2, 0x8022
/* 0D1B04 80316B04 AE600000 */ sw $zero, ($s3)
/* 0D1B08 80316B08 24C66E4C */ addiu $a2, %lo(gAiBuffers + 0xC) # addiu $a2, $a2, 0x6e4c
/* 0D1B0C 80316B0C 24636E40 */ addiu $v1, %lo(gAiBuffers) # addiu $v1, $v1, 0x6e40
/* 0D1B10 80316B10 24040A00 */ li $a0, 2560
/* 0D1B14 80316B14 00001025 */ move $v0, $zero
.L80316B18:
/* 0D1B18 80316B18 8C6F0000 */ lw $t7, ($v1)
/* 0D1B1C 80316B1C 01E27021 */ addu $t6, $t7, $v0
/* 0D1B20 80316B20 24420002 */ addiu $v0, $v0, 2
/* 0D1B24 80316B24 1444FFFC */ bne $v0, $a0, .L80316B18
/* 0D1B28 80316B28 A5C00000 */ sh $zero, ($t6)
/* 0D1B2C 80316B2C 24630004 */ addiu $v1, $v1, 4
/* 0D1B30 80316B30 5466FFF9 */ bnel $v1, $a2, .L80316B18
/* 0D1B34 80316B34 00001025 */ move $v0, $zero
/* 0D1B38 80316B38 8FB80038 */ lw $t8, 0x38($sp)
.L80316B3C:
/* 0D1B3C 80316B3C 3C018022 */ lui $at, %hi(gSampleDmaNumListItems) # $at, 0x8022
/* 0D1B40 80316B40 AC206B38 */ sw $zero, %lo(gSampleDmaNumListItems)($at)
/* 0D1B44 80316B44 97190006 */ lhu $t9, 6($t8)
/* 0D1B48 80316B48 AFB9002C */ sw $t9, 0x2c($sp)
/* 0D1B4C 80316B4C 0C0C9290 */ jal osAiSetFrequency
/* 0D1B50 80316B50 8F040000 */ lw $a0, ($t8)
/* 0D1B54 80316B54 2401003C */ li $at, 60
/* 0D1B58 80316B58 0041001A */ div $zero, $v0, $at
/* 0D1B5C 80316B5C 8FA80038 */ lw $t0, 0x38($sp)
/* 0D1B60 80316B60 3C038022 */ lui $v1, %hi(gAiFrequency) # $v1, 0x8022
/* 0D1B64 80316B64 24636D64 */ addiu $v1, %lo(gAiFrequency) # addiu $v1, $v1, 0x6d64
/* 0D1B68 80316B68 AC620000 */ sw $v0, ($v1)
/* 0D1B6C 80316B6C 910C0004 */ lbu $t4, 4($t0)
/* 0D1B70 80316B70 00007812 */ mflo $t7
/* 0D1B74 80316B74 3C0A8022 */ lui $t2, %hi(D_80226D74) # $t2, 0x8022
/* 0D1B78 80316B78 3C0B8022 */ lui $t3, %hi(gMaxSimultaneousNotes) # $t3, 0x8022
/* 0D1B7C 80316B7C 25EE000F */ addiu $t6, $t7, 0xf
/* 0D1B80 80316B80 2401FFF0 */ li $at, -16
/* 0D1B84 80316B84 256B6D70 */ addiu $t3, %lo(gMaxSimultaneousNotes) # addiu $t3, $t3, 0x6d70
/* 0D1B88 80316B88 254A6D74 */ addiu $t2, %lo(D_80226D74) # addiu $t2, $t2, 0x6d74
/* 0D1B8C 80316B8C 01C1C824 */ and $t9, $t6, $at
/* 0D1B90 80316B90 AD590000 */ sw $t9, ($t2)
/* 0D1B94 80316B94 AD6C0000 */ sw $t4, ($t3)
/* 0D1B98 80316B98 91180005 */ lbu $t8, 5($t0)
/* 0D1B9C 80316B9C 3C098022 */ lui $t1, %hi(D_802212A2) # $t1, 0x8022
/* 0D1BA0 80316BA0 252912A2 */ addiu $t1, %lo(D_802212A2) # addiu $t1, $t1, 0x12a2
/* 0D1BA4 80316BA4 A1380000 */ sb $t8, ($t1)
/* 0D1BA8 80316BA8 812C0000 */ lb $t4, ($t1)
/* 0D1BAC 80316BAC 258DFFFF */ addiu $t5, $t4, -1
/* 0D1BB0 80316BB0 2DA10010 */ sltiu $at, $t5, 0x10
/* 0D1BB4 80316BB4 10200019 */ beqz $at, .L80316C1C
/* 0D1BB8 80316BB8 000D6880 */ sll $t5, $t5, 2
/* 0D1BBC 80316BBC 3C018033 */ lui $at, %hi(jtbl_80337BE0)
/* 0D1BC0 80316BC0 002D0821 */ addu $at, $at, $t5
/* 0D1BC4 80316BC4 8C2D7BE0 */ lw $t5, %lo(jtbl_80337BE0)($at)
/* 0D1BC8 80316BC8 01A00008 */ jr $t5
/* 0D1BCC 80316BCC 00000000 */ nop
glabel L80316BD0
/* 0D1BD0 80316BD0 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1BD4 80316BD4 10000013 */ b .L80316C24
/* 0D1BD8 80316BD8 A02012A3 */ sb $zero, %lo(D_802212A3)($at)
glabel L80316BDC
/* 0D1BDC 80316BDC 240F0001 */ li $t7, 1
/* 0D1BE0 80316BE0 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1BE4 80316BE4 1000000F */ b .L80316C24
/* 0D1BE8 80316BE8 A02F12A3 */ sb $t7, %lo(D_802212A3)($at)
glabel L80316BEC
/* 0D1BEC 80316BEC 240E0002 */ li $t6, 2
/* 0D1BF0 80316BF0 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1BF4 80316BF4 1000000B */ b .L80316C24
/* 0D1BF8 80316BF8 A02E12A3 */ sb $t6, %lo(D_802212A3)($at)
glabel L80316BFC
/* 0D1BFC 80316BFC 24190003 */ li $t9, 3
/* 0D1C00 80316C00 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1C04 80316C04 10000007 */ b .L80316C24
/* 0D1C08 80316C08 A03912A3 */ sb $t9, %lo(D_802212A3)($at)
glabel L80316C0C
/* 0D1C0C 80316C0C 24180004 */ li $t8, 4
/* 0D1C10 80316C10 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1C14 80316C14 10000003 */ b .L80316C24
/* 0D1C18 80316C18 A03812A3 */ sb $t8, %lo(D_802212A3)($at)
.L80316C1C:
glabel L80316C1C
/* 0D1C1C 80316C1C 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D1C20 80316C20 A02012A3 */ sb $zero, %lo(D_802212A3)($at)
.L80316C24:
/* 0D1C24 80316C24 910C0005 */ lbu $t4, 5($t0)
/* 0D1C28 80316C28 3C018022 */ lui $at, %hi(D_802212A0) # $at, 0x8022
/* 0D1C2C 80316C2C 3C188033 */ lui $t8, %hi(gTatumsPerBeat) # $t8, 0x8033
/* 0D1C30 80316C30 A12C0000 */ sb $t4, ($t1)
/* 0D1C34 80316C34 950D000A */ lhu $t5, 0xa($t0)
/* 0D1C38 80316C38 87183EE4 */ lh $t8, %lo(gTatumsPerBeat)($t8)
/* 0D1C3C 80316C3C 3C138022 */ lui $s3, %hi(D_80226D6C) # $s3, 0x8022
/* 0D1C40 80316C40 A42D12A0 */ sh $t5, %lo(D_802212A0)($at)
/* 0D1C44 80316C44 8D420000 */ lw $v0, ($t2)
/* 0D1C48 80316C48 3C018022 */ lui $at, %hi(gMinAiBufferLength) # $at, 0x8022
/* 0D1C4C 80316C4C 26736D6C */ addiu $s3, %lo(D_80226D6C) # addiu $s3, $s3, 0x6d6c
/* 0D1C50 80316C50 244FFFF0 */ addiu $t7, $v0, -0x10
/* 0D1C54 80316C54 AC2F6D78 */ sw $t7, %lo(gMinAiBufferLength)($at)
/* 0D1C58 80316C58 240100A0 */ li $at, 160
/* 0D1C5C 80316C5C 0041001A */ div $zero, $v0, $at
/* 0D1C60 80316C60 00001812 */ mflo $v1
/* 0D1C64 80316C64 24630001 */ addiu $v1, $v1, 1
/* 0D1C68 80316C68 00032E00 */ sll $a1, $v1, 0x18
/* 0D1C6C 80316C6C 00057603 */ sra $t6, $a1, 0x18
/* 0D1C70 80316C70 000EC8C0 */ sll $t9, $t6, 3
/* 0D1C74 80316C74 032EC823 */ subu $t9, $t9, $t6
/* 0D1C78 80316C78 0019C940 */ sll $t9, $t9, 5
/* 0D1C7C 80316C7C 032EC821 */ addu $t9, $t9, $t6
/* 0D1C80 80316C80 0019C900 */ sll $t9, $t9, 4
/* 0D1C84 80316C84 0338001A */ div $zero, $t9, $t8
/* 0D1C88 80316C88 3C018022 */ lui $at, %hi(gAudioUpdatesPerFrame) # $at, 0x8022
/* 0D1C8C 80316C8C A0236D7E */ sb $v1, %lo(gAudioUpdatesPerFrame)($at)
/* 0D1C90 80316C90 00006012 */ mflo $t4
/* 0D1C94 80316C94 01C02825 */ move $a1, $t6
/* 0D1C98 80316C98 3C048022 */ lui $a0, %hi(D_80221898) # $a0, 0x8022
/* 0D1C9C 80316C9C 24841898 */ addiu $a0, %lo(D_80221898) # addiu $a0, $a0, 0x1898
/* 0D1CA0 80316CA0 17000002 */ bnez $t8, .L80316CAC
/* 0D1CA4 80316CA4 00000000 */ nop
/* 0D1CA8 80316CA8 0007000D */ break 7
.L80316CAC:
/* 0D1CAC 80316CAC 2401FFFF */ li $at, -1
/* 0D1CB0 80316CB0 17010004 */ bne $t8, $at, .L80316CC4
/* 0D1CB4 80316CB4 3C018000 */ lui $at, 0x8000
/* 0D1CB8 80316CB8 17210002 */ bne $t9, $at, .L80316CC4
/* 0D1CBC 80316CBC 00000000 */ nop
/* 0D1CC0 80316CC0 0006000D */ break 6
.L80316CC4:
/* 0D1CC4 80316CC4 3C018022 */ lui $at, %hi(gTempoInternalToExternal) # $at, 0x8022
/* 0D1CC8 80316CC8 A42C6D7C */ sh $t4, %lo(gTempoInternalToExternal)($at)
/* 0D1CCC 80316CCC 8D6D0000 */ lw $t5, ($t3)
/* 0D1CD0 80316CD0 000D7880 */ sll $t7, $t5, 2
/* 0D1CD4 80316CD4 01ED7821 */ addu $t7, $t7, $t5
/* 0D1CD8 80316CD8 000F7880 */ sll $t7, $t7, 2
/* 0D1CDC 80316CDC 01E50019 */ multu $t7, $a1
/* 0D1CE0 80316CE0 00007012 */ mflo $t6
/* 0D1CE4 80316CE4 25D90140 */ addiu $t9, $t6, 0x140
/* 0D1CE8 80316CE8 AE790000 */ sw $t9, ($s3)
/* 0D1CEC 80316CEC 8D0C000C */ lw $t4, 0xc($t0)
/* 0D1CF0 80316CF0 8D180010 */ lw $t8, 0x10($t0)
/* 0D1CF4 80316CF4 8D0F0014 */ lw $t7, 0x14($t0)
/* 0D1CF8 80316CF8 8D0D0018 */ lw $t5, 0x18($t0)
/* 0D1CFC 80316CFC 3C0E8022 */ lui $t6, %hi(D_802212A8 + 8) # $t6, 0x8022
/* 0D1D00 80316D00 8DCE12B0 */ lw $t6, %lo(D_802212A8 + 8)($t6)
/* 0D1D04 80316D04 030C8021 */ addu $s0, $t8, $t4
/* 0D1D08 80316D08 01AF8821 */ addu $s1, $t5, $t7
/* 0D1D0C 80316D0C 02113021 */ addu $a2, $s0, $s1
/* 0D1D10 80316D10 01C63823 */ subu $a3, $t6, $a2
/* 0D1D14 80316D14 24E7FF00 */ addiu $a3, $a3, -0x100
/* 0D1D18 80316D18 AC870000 */ sw $a3, ($a0)
/* 0D1D1C 80316D1C 0C0C5859 */ jal func_80316164
/* 0D1D20 80316D20 AC86000C */ sw $a2, 0xc($a0)
/* 0D1D24 80316D24 3C048022 */ lui $a0, %hi(D_802218A8) # $a0, 0x8022
/* 0D1D28 80316D28 248418A8 */ addiu $a0, %lo(D_802218A8) # addiu $a0, $a0, 0x18a8
/* 0D1D2C 80316D2C AC900000 */ sw $s0, ($a0)
/* 0D1D30 80316D30 0C0C5878 */ jal func_803161E0
/* 0D1D34 80316D34 AC910004 */ sw $s1, 4($a0)
/* 0D1D38 80316D38 8FA20038 */ lw $v0, 0x38($sp)
/* 0D1D3C 80316D3C 3C048022 */ lui $a0, %hi(D_802218B0) # $a0, 0x8022
/* 0D1D40 80316D40 248418B0 */ addiu $a0, %lo(D_802218B0) # addiu $a0, $a0, 0x18b0
/* 0D1D44 80316D44 8C59000C */ lw $t9, 0xc($v0)
/* 0D1D48 80316D48 AC990000 */ sw $t9, ($a0)
/* 0D1D4C 80316D4C 8C580010 */ lw $t8, 0x10($v0)
/* 0D1D50 80316D50 AC800008 */ sw $zero, 8($a0)
/* 0D1D54 80316D54 0C0C5897 */ jal func_8031625C
/* 0D1D58 80316D58 AC980004 */ sw $t8, 4($a0)
/* 0D1D5C 80316D5C 8FAC0038 */ lw $t4, 0x38($sp)
/* 0D1D60 80316D60 8FAF0038 */ lw $t7, 0x38($sp)
/* 0D1D64 80316D64 3C048022 */ lui $a0, %hi(D_802218C0) # $a0, 0x8022
/* 0D1D68 80316D68 8D8D0014 */ lw $t5, 0x14($t4)
/* 0D1D6C 80316D6C 248418C0 */ addiu $a0, %lo(D_802218C0) # addiu $a0, $a0, 0x18c0
/* 0D1D70 80316D70 AC8D0000 */ sw $t5, ($a0)
/* 0D1D74 80316D74 8DEE0018 */ lw $t6, 0x18($t7)
/* 0D1D78 80316D78 AC800008 */ sw $zero, 8($a0)
/* 0D1D7C 80316D7C 0C0C58C6 */ jal func_80316318
/* 0D1D80 80316D80 AC8E0004 */ sw $t6, 4($a0)
/* 0D1D84 80316D84 0C0C5798 */ jal reset_bank_and_seq_load_status
/* 0D1D88 80316D88 00000000 */ nop
/* 0D1D8C 80316D8C 3C108022 */ lui $s0, %hi(gAudioCmdBuffers) # $s0, 0x8022
/* 0D1D90 80316D90 3C128022 */ lui $s2, %hi(D_802212C8) # $s2, 0x8022
/* 0D1D94 80316D94 3C118022 */ lui $s1, %hi(gAudioCmdBuffers + 8) # $s1, 0x8022
/* 0D1D98 80316D98 26316D98 */ addiu $s1, %lo(gAudioCmdBuffers + 8) # addiu $s1, $s1, 0x6d98
/* 0D1D9C 80316D9C 265212C8 */ addiu $s2, %lo(D_802212C8) # addiu $s2, $s2, 0x12c8
/* 0D1DA0 80316DA0 26106D90 */ addiu $s0, %lo(gAudioCmdBuffers) # addiu $s0, $s0, 0x6d90
.L80316DA4:
/* 0D1DA4 80316DA4 8E650000 */ lw $a1, ($s3)
/* 0D1DA8 80316DA8 02402025 */ move $a0, $s2
/* 0D1DAC 80316DAC 0005C8C0 */ sll $t9, $a1, 3
/* 0D1DB0 80316DB0 0C0C5808 */ jal soundAlloc
/* 0D1DB4 80316DB4 03202825 */ move $a1, $t9
/* 0D1DB8 80316DB8 26100004 */ addiu $s0, $s0, 4
/* 0D1DBC 80316DBC 1611FFF9 */ bne $s0, $s1, .L80316DA4
/* 0D1DC0 80316DC0 AE02FFFC */ sw $v0, -4($s0)
/* 0D1DC4 80316DC4 3C058022 */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x8022
/* 0D1DC8 80316DC8 8CA56D70 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0D1DCC 80316DCC 02402025 */ move $a0, $s2
/* 0D1DD0 80316DD0 0005C080 */ sll $t8, $a1, 2
/* 0D1DD4 80316DD4 0305C023 */ subu $t8, $t8, $a1
/* 0D1DD8 80316DD8 0C0C5808 */ jal soundAlloc
/* 0D1DDC 80316DDC 00182980 */ sll $a1, $t8, 6
/* 0D1DE0 80316DE0 3C018022 */ lui $at, %hi(gNotes) # $at, 0x8022
/* 0D1DE4 80316DE4 0C0C6750 */ jal note_init_all
/* 0D1DE8 80316DE8 AC222A10 */ sw $v0, %lo(gNotes)($at)
/* 0D1DEC 80316DEC 0C0C6492 */ jal init_note_free_list
/* 0D1DF0 80316DF0 00000000 */ nop
/* 0D1DF4 80316DF4 8FA2002C */ lw $v0, 0x2c($sp)
/* 0D1DF8 80316DF8 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D1DFC 80316DFC 263111B0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0x11b0
/* 0D1E00 80316E00 14400005 */ bnez $v0, .L80316E18
/* 0D1E04 80316E04 240C0008 */ li $t4, 8
/* 0D1E08 80316E08 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D1E0C 80316E0C 263111B0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0x11b0
/* 0D1E10 80316E10 10000051 */ b .L80316F58
/* 0D1E14 80316E14 A2200001 */ sb $zero, 1($s1)
.L80316E18:
/* 0D1E18 80316E18 00028040 */ sll $s0, $v0, 1
/* 0D1E1C 80316E1C A22C0001 */ sb $t4, 1($s1)
/* 0D1E20 80316E20 02002825 */ move $a1, $s0
/* 0D1E24 80316E24 0C0C5808 */ jal soundAlloc
/* 0D1E28 80316E28 02402025 */ move $a0, $s2
/* 0D1E2C 80316E2C AE220014 */ sw $v0, 0x14($s1)
/* 0D1E30 80316E30 02402025 */ move $a0, $s2
/* 0D1E34 80316E34 0C0C5808 */ jal soundAlloc
/* 0D1E38 80316E38 02002825 */ move $a1, $s0
/* 0D1E3C 80316E3C 8FAD002C */ lw $t5, 0x2c($sp)
/* 0D1E40 80316E40 8FAF0038 */ lw $t7, 0x38($sp)
/* 0D1E44 80316E44 AE220018 */ sw $v0, 0x18($s1)
/* 0D1E48 80316E48 AE200008 */ sw $zero, 8($s1)
/* 0D1E4C 80316E4C AE20000C */ sw $zero, 0xc($s1)
/* 0D1E50 80316E50 A2200003 */ sb $zero, 3($s1)
/* 0D1E54 80316E54 AE2D0010 */ sw $t5, 0x10($s1)
/* 0D1E58 80316E58 95EE0008 */ lhu $t6, 8($t7)
/* 0D1E5C 80316E5C 24190002 */ li $t9, 2
/* 0D1E60 80316E60 A2390002 */ sb $t9, 2($s1)
/* 0D1E64 80316E64 3C038022 */ lui $v1, %hi(D_802212A2) # $v1, 0x8022
/* 0D1E68 80316E68 A62E0004 */ sh $t6, 4($s1)
/* 0D1E6C 80316E6C 806312A2 */ lb $v1, %lo(D_802212A2)($v1)
/* 0D1E70 80316E70 24010001 */ li $at, 1
/* 0D1E74 80316E74 24180001 */ li $t8, 1
/* 0D1E78 80316E78 10610037 */ beq $v1, $at, .L80316F58
/* 0D1E7C 80316E7C 340C8000 */ li $t4, 32768
/* 0D1E80 80316E80 0183001A */ div $zero, $t4, $v1
/* 0D1E84 80316E84 00006812 */ mflo $t5
/* 0D1E88 80316E88 A2380000 */ sb $t8, ($s1)
/* 0D1E8C 80316E8C 14600002 */ bnez $v1, .L80316E98
/* 0D1E90 80316E90 00000000 */ nop
/* 0D1E94 80316E94 0007000D */ break 7
.L80316E98:
/* 0D1E98 80316E98 2401FFFF */ li $at, -1
/* 0D1E9C 80316E9C 14610004 */ bne $v1, $at, .L80316EB0
/* 0D1EA0 80316EA0 3C018000 */ lui $at, 0x8000
/* 0D1EA4 80316EA4 15810002 */ bne $t4, $at, .L80316EB0
/* 0D1EA8 80316EA8 00000000 */ nop
/* 0D1EAC 80316EAC 0006000D */ break 6
.L80316EB0:
/* 0D1EB0 80316EB0 A62D0006 */ sh $t5, 6($s1)
/* 0D1EB4 80316EB4 02402025 */ move $a0, $s2
/* 0D1EB8 80316EB8 24050020 */ li $a1, 32
/* 0D1EBC 80316EBC 0C0C5808 */ jal soundAlloc
/* 0D1EC0 80316EC0 00008025 */ move $s0, $zero
/* 0D1EC4 80316EC4 AE22001C */ sw $v0, 0x1c($s1)
/* 0D1EC8 80316EC8 02402025 */ move $a0, $s2
/* 0D1ECC 80316ECC 0C0C5808 */ jal soundAlloc
/* 0D1ED0 80316ED0 24050020 */ li $a1, 32
/* 0D1ED4 80316ED4 AE220020 */ sw $v0, 0x20($s1)
/* 0D1ED8 80316ED8 02402025 */ move $a0, $s2
/* 0D1EDC 80316EDC 0C0C5808 */ jal soundAlloc
/* 0D1EE0 80316EE0 24050020 */ li $a1, 32
/* 0D1EE4 80316EE4 AE220024 */ sw $v0, 0x24($s1)
/* 0D1EE8 80316EE8 02402025 */ move $a0, $s2
/* 0D1EEC 80316EEC 0C0C5808 */ jal soundAlloc
/* 0D1EF0 80316EF0 24050020 */ li $a1, 32
/* 0D1EF4 80316EF4 AE220028 */ sw $v0, 0x28($s1)
/* 0D1EF8 80316EF8 3C0F8022 */ lui $t7, %hi(gAudioUpdatesPerFrame) # $t7, 0x8022
/* 0D1EFC 80316EFC 81EF6D7E */ lb $t7, %lo(gAudioUpdatesPerFrame)($t7)
/* 0D1F00 80316F00 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D1F04 80316F04 263111B0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0x11b0
/* 0D1F08 80316F08 19E00013 */ blez $t7, .L80316F58
/* 0D1F0C 80316F0C 02402025 */ move $a0, $s2
.L80316F10:
/* 0D1F10 80316F10 0C0C5808 */ jal soundAlloc
/* 0D1F14 80316F14 24050280 */ li $a1, 640
/* 0D1F18 80316F18 244E0140 */ addiu $t6, $v0, 0x140
/* 0D1F1C 80316F1C AE220030 */ sw $v0, 0x30($s1)
/* 0D1F20 80316F20 AE2E0034 */ sw $t6, 0x34($s1)
/* 0D1F24 80316F24 02402025 */ move $a0, $s2
/* 0D1F28 80316F28 0C0C5808 */ jal soundAlloc
/* 0D1F2C 80316F2C 24050280 */ li $a1, 640
/* 0D1F30 80316F30 24590140 */ addiu $t9, $v0, 0x140
/* 0D1F34 80316F34 3C188022 */ lui $t8, %hi(gAudioUpdatesPerFrame) # $t8, 0x8022
/* 0D1F38 80316F38 AE220080 */ sw $v0, 0x80($s1)
/* 0D1F3C 80316F3C AE390084 */ sw $t9, 0x84($s1)
/* 0D1F40 80316F40 83186D7E */ lb $t8, %lo(gAudioUpdatesPerFrame)($t8)
/* 0D1F44 80316F44 26100001 */ addiu $s0, $s0, 1
/* 0D1F48 80316F48 26310014 */ addiu $s1, $s1, 0x14
/* 0D1F4C 80316F4C 0218082A */ slt $at, $s0, $t8
/* 0D1F50 80316F50 5420FFEF */ bnezl $at, .L80316F10
/* 0D1F54 80316F54 02402025 */ move $a0, $s2
.L80316F58:
/* 0D1F58 80316F58 3C048022 */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x8022
/* 0D1F5C 80316F5C 0C0C5D63 */ jal func_8031758C
/* 0D1F60 80316F60 8C846D70 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0D1F64 80316F64 0C0C8804 */ jal osWritebackDCacheAll
/* 0D1F68 80316F68 00000000 */ nop
/* 0D1F6C 80316F6C 3C0C8033 */ lui $t4, %hi(gAudioLoadLock) # $t4, 0x8033
/* 0D1F70 80316F70 258C3EF4 */ addiu $t4, %lo(gAudioLoadLock) # addiu $t4, $t4, 0x3ef4
/* 0D1F74 80316F74 8D8D0000 */ lw $t5, ($t4)
/* 0D1F78 80316F78 3C0F7655 */ lui $t7, (0x76557364 >> 16) # lui $t7, 0x7655
/* 0D1F7C 80316F7C 35EF7364 */ ori $t7, (0x76557364 & 0xFFFF) # ori $t7, $t7, 0x7364
/* 0D1F80 80316F80 51A00003 */ beql $t5, $zero, .L80316F90
/* 0D1F84 80316F84 8FBF0024 */ lw $ra, 0x24($sp)
/* 0D1F88 80316F88 AD8F0000 */ sw $t7, ($t4)
/* 0D1F8C 80316F8C 8FBF0024 */ lw $ra, 0x24($sp)
.L80316F90:
/* 0D1F90 80316F90 8FB00014 */ lw $s0, 0x14($sp)
/* 0D1F94 80316F94 8FB10018 */ lw $s1, 0x18($sp)
/* 0D1F98 80316F98 8FB2001C */ lw $s2, 0x1c($sp)
/* 0D1F9C 80316F9C 8FB30020 */ lw $s3, 0x20($sp)
/* 0D1FA0 80316FA0 03E00008 */ jr $ra
/* 0D1FA4 80316FA4 27BD0038 */ addiu $sp, $sp, 0x38

503
asm/non_matchings/func_80316928_us.s

@ -1,503 +0,0 @@
.late_rodata
glabel jtbl_80337BE0
.word L80317BF0
.word L80317BFC
.word L80317C3C
.word L80317C0C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C1C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C2C
glabel D_U_80338E00
.word 0x4A2FC800 /* 2880000.0f */
glabel D_U_80338E04
.word 0x4185B439 /* 16.713f */
.text
glabel func_80316928
/* 0D2948 80317948 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0D294C 8031794C 3C0E8033 */ lui $t6, %hi(gAudioLoadLock) # $t6, 0x8033
/* 0D2950 80317950 AFBF0024 */ sw $ra, 0x24($sp)
/* 0D2954 80317954 AFB30020 */ sw $s3, 0x20($sp)
/* 0D2958 80317958 AFB2001C */ sw $s2, 0x1c($sp)
/* 0D295C 8031795C AFB10018 */ sw $s1, 0x18($sp)
/* 0D2960 80317960 AFB00014 */ sw $s0, 0x14($sp)
/* 0D2964 80317964 AFA40038 */ sw $a0, 0x38($sp)
/* 0D2968 80317968 25CE5004 */ addiu $t6, %lo(gAudioLoadLock) # addiu $t6, $t6, 0x5004
/* 0D296C 8031796C 8DCF0000 */ lw $t7, ($t6)
/* 0D2970 80317970 51E0007A */ beql $t7, $zero, .L80317B5C
/* 0D2974 80317974 8FB80038 */ lw $t8, 0x38($sp)
/* 0D2978 80317978 0C0C5E3B */ jal func_803168CC
/* 0D297C 8031797C 00000000 */ nop
/* 0D2980 80317980 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D2984 80317984 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2988 80317988 00008025 */ move $s0, $zero
/* 0D298C 8031798C 00002025 */ move $a0, $zero
/* 0D2990 80317990 18600027 */ blez $v1, .L80317A30
/* 0D2994 80317994 00008825 */ move $s1, $zero
/* 0D2998 80317998 3C068022 */ lui $a2, %hi(gAudioUpdatesPerFrame) # $a2, 0x8022
/* 0D299C 8031799C 3C058022 */ lui $a1, %hi(gNotes) # $a1, 0x8022
/* 0D29A0 803179A0 24A52610 */ addiu $a1, %lo(gNotes) # addiu $a1, $a1, 0x2610
/* 0D29A4 803179A4 24C66B7E */ addiu $a2, %lo(gAudioUpdatesPerFrame) # addiu $a2, $a2, 0x6b7e
.L803179A8:
/* 0D29A8 803179A8 8CB80000 */ lw $t8, ($a1)
/* 0D29AC 803179AC 26100001 */ addiu $s0, $s0, 1
/* 0D29B0 803179B0 03041021 */ addu $v0, $t8, $a0
/* 0D29B4 803179B4 8C590000 */ lw $t9, ($v0)
/* 0D29B8 803179B8 001967C2 */ srl $t4, $t9, 0x1f
/* 0D29BC 803179BC 5180001A */ beql $t4, $zero, .L80317A28
/* 0D29C0 803179C0 0203082A */ slt $at, $s0, $v1
/* 0D29C4 803179C4 904D0055 */ lbu $t5, 0x55($v0)
/* 0D29C8 803179C8 51A00017 */ beql $t5, $zero, .L80317A28
/* 0D29CC 803179CC 0203082A */ slt $at, $s0, $v1
/* 0D29D0 803179D0 80CE0000 */ lb $t6, ($a2)
/* 0D29D4 803179D4 340F8000 */ li $t7, 32768
/* 0D29D8 803179D8 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D29DC 803179DC 01EE001A */ div $zero, $t7, $t6
/* 0D29E0 803179E0 0000C012 */ mflo $t8
/* 0D29E4 803179E4 A4580062 */ sh $t8, 0x62($v0)
/* 0D29E8 803179E8 8CB90000 */ lw $t9, ($a1)
/* 0D29EC 803179EC 15C00002 */ bnez $t6, .L803179F8
/* 0D29F0 803179F0 00000000 */ nop
/* 0D29F4 803179F4 0007000D */ break 7
.L803179F8:
/* 0D29F8 803179F8 2401FFFF */ li $at, -1
/* 0D29FC 803179FC 15C10004 */ bne $t6, $at, .L80317A10
/* 0D2A00 80317A00 3C018000 */ lui $at, 0x8000
/* 0D2A04 80317A04 15E10002 */ bne $t7, $at, .L80317A10
/* 0D2A08 80317A08 00000000 */ nop
/* 0D2A0C 80317A0C 0006000D */ break 6
.L80317A10:
/* 0D2A10 80317A10 03241021 */ addu $v0, $t9, $a0
/* 0D2A14 80317A14 904C0054 */ lbu $t4, 0x54($v0)
/* 0D2A18 80317A18 358D0010 */ ori $t5, $t4, 0x10
/* 0D2A1C 80317A1C A04D0054 */ sb $t5, 0x54($v0)
/* 0D2A20 80317A20 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2A24 80317A24 0203082A */ slt $at, $s0, $v1
.L80317A28:
/* 0D2A28 80317A28 1420FFDF */ bnez $at, .L803179A8
/* 0D2A2C 80317A2C 248400C0 */ addiu $a0, $a0, 0xc0
.L80317A30:
/* 0D2A30 80317A30 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2A34 80317A34 24040001 */ li $a0, 1
/* 0D2A38 80317A38 26310001 */ addiu $s1, $s1, 1
/* 0D2A3C 80317A3C 2A2100F1 */ slti $at, $s1, 0xf1
/* 0D2A40 80317A40 10200013 */ beqz $at, .L80317A90
/* 0D2A44 80317A44 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D2A48 80317A48 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2A4C 80317A4C 00008025 */ move $s0, $zero
/* 0D2A50 80317A50 3C028022 */ lui $v0, %hi(gNotes) # $v0, 0x8022
/* 0D2A54 80317A54 1860000A */ blez $v1, .L80317A80
/* 0D2A58 80317A58 00000000 */ nop
/* 0D2A5C 80317A5C 8C422610 */ lw $v0, %lo(gNotes)($v0)
.L80317A60:
/* 0D2A60 80317A60 8C4F0000 */ lw $t7, ($v0)
/* 0D2A64 80317A64 000F77C2 */ srl $t6, $t7, 0x1f
/* 0D2A68 80317A68 15C00005 */ bnez $t6, .L80317A80
/* 0D2A6C 80317A6C 00000000 */ nop
/* 0D2A70 80317A70 26100001 */ addiu $s0, $s0, 1
/* 0D2A74 80317A74 0203082A */ slt $at, $s0, $v1
/* 0D2A78 80317A78 1420FFF9 */ bnez $at, .L80317A60
/* 0D2A7C 80317A7C 244200C0 */ addiu $v0, $v0, 0xc0
.L80317A80:
/* 0D2A80 80317A80 12030003 */ beq $s0, $v1, .L80317A90
/* 0D2A84 80317A84 00000000 */ nop
/* 0D2A88 80317A88 1000FFE9 */ b .L80317A30
/* 0D2A8C 80317A8C 00000000 */ nop
.L80317A90:
/* 0D2A90 80317A90 0C0C5E3B */ jal func_803168CC
/* 0D2A94 80317A94 00000000 */ nop
/* 0D2A98 80317A98 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2A9C 80317A9C 24040003 */ li $a0, 3
/* 0D2AA0 80317AA0 3C181971 */ lui $t8, (0x19710515 >> 16) # lui $t8, 0x1971
/* 0D2AA4 80317AA4 3C198033 */ lui $t9, %hi(gAudioLoadLock) # $t9, 0x8033
/* 0D2AA8 80317AA8 27395004 */ addiu $t9, %lo(gAudioLoadLock) # addiu $t9, $t9, 0x5004
/* 0D2AAC 80317AAC 37180515 */ ori $t8, (0x19710515 & 0xFFFF) # ori $t8, $t8, 0x515
/* 0D2AB0 80317AB0 AF380000 */ sw $t8, ($t9)
/* 0D2AB4 80317AB4 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2AB8 80317AB8 24040003 */ li $a0, 3
/* 0D2ABC 80317ABC 3C138022 */ lui $s3, %hi(gCurrAudioFrameDmaCount) # $s3, 0x8022
/* 0D2AC0 80317AC0 26736B84 */ addiu $s3, %lo(gCurrAudioFrameDmaCount) # addiu $s3, $s3, 0x6b84
/* 0D2AC4 80317AC4 8E710000 */ lw $s1, ($s3)
/* 0D2AC8 80317AC8 3C128022 */ lui $s2, %hi(gCurrAudioFrameDmaQueue) # $s2, 0x8022
/* 0D2ACC 80317ACC 26525CE8 */ addiu $s2, %lo(gCurrAudioFrameDmaQueue) # addiu $s2, $s2, 0x5ce8
/* 0D2AD0 80317AD0 1A200012 */ blez $s1, .L80317B1C
/* 0D2AD4 80317AD4 00000000 */ nop
/* 0D2AD8 80317AD8 8E6C0000 */ lw $t4, ($s3)
.L80317ADC:
/* 0D2ADC 80317ADC 00008025 */ move $s0, $zero
/* 0D2AE0 80317AE0 1980000C */ blez $t4, .L80317B14
/* 0D2AE4 80317AE4 02402025 */ move $a0, $s2
.L80317AE8:
/* 0D2AE8 80317AE8 00002825 */ move $a1, $zero
/* 0D2AEC 80317AEC 0C0C8A00 */ jal osRecvMesg
/* 0D2AF0 80317AF0 00003025 */ move $a2, $zero
/* 0D2AF4 80317AF4 54400003 */ bnezl $v0, .L80317B04
/* 0D2AF8 80317AF8 8E6D0000 */ lw $t5, ($s3)
/* 0D2AFC 80317AFC 2631FFFF */ addiu $s1, $s1, -1
/* 0D2B00 80317B00 8E6D0000 */ lw $t5, ($s3)
.L80317B04:
/* 0D2B04 80317B04 26100001 */ addiu $s0, $s0, 1
/* 0D2B08 80317B08 020D082A */ slt $at, $s0, $t5
/* 0D2B0C 80317B0C 5420FFF6 */ bnezl $at, .L80317AE8
/* 0D2B10 80317B10 02402025 */ move $a0, $s2
.L80317B14:
/* 0D2B14 80317B14 5E20FFF1 */ bgtzl $s1, .L80317ADC
/* 0D2B18 80317B18 8E6C0000 */ lw $t4, ($s3)
.L80317B1C:
/* 0D2B1C 80317B1C 3C038022 */ lui $v1, %hi(gAiBuffers) # $v1, 0x8022
/* 0D2B20 80317B20 3C068022 */ lui $a2, %hi(gAiBuffers + 0xC) # $a2, 0x8022
/* 0D2B24