From b8a3bf635c74271900849a9c55155f2762fb71e2 Mon Sep 17 00:00:00 2001
From: Alejandro Asenjo Nitti <96613413+sonicdcer@users.noreply.github.com>
Date: Sat, 9 Nov 2024 14:52:34 -0300
Subject: [PATCH] VERSION_EU audio files (#277)

* remove yamls that were wrong and prevented jp rev0 from building correctly

* playerstate

* some jp rev0 settings

* func_800145FC should return value instead of count

* enum usage

* format

* rename vars in Audio_PlaySoundTestTrack

* Makefile: audio OPTFLAGS for EU

* VERSION EU audio_general decompiled

* audio_effects.c (Identical to US)

* audio_heap.c

* VERSION_EU audio_load.c

* renames

* audio_playback.c

* audio_seqplayer

* audio_synthesis.c

* comment

* EU audio_thread.c

* fox load symbols

* more EU symbols and functions identified

* state_1C8 -> state

* identify more eu symbols

* more EU symbols
---
 Makefile                                      |    1 +
 assets/yaml/jp/rev0/ast_7_ti_1.yaml           |  269 --
 assets/yaml/jp/rev0/ast_7_ti_2.yaml           |   71 -
 assets/yaml/jp/rev0/ast_8_ti.yaml             |   66 -
 assets/yaml/jp/rev0/ast_9_ti.yaml             |   68 -
 assets/yaml/jp/rev0/ast_A_ti.yaml             |   60 -
 assets/yaml/jp/rev0/ast_allies.yaml           |  113 -
 assets/yaml/jp/rev0/ast_andross.yaml          |  269 --
 assets/yaml/jp/rev0/ast_aquas.yaml            |  777 -----
 assets/yaml/jp/rev0/ast_area_6.yaml           |  253 --
 assets/yaml/jp/rev0/ast_arwing.yaml           |  192 --
 assets/yaml/jp/rev0/ast_bg_planet.yaml        |  129 -
 assets/yaml/jp/rev0/ast_bg_space.yaml         |   93 -
 assets/yaml/jp/rev0/ast_blue_marine.yaml      |   90 -
 assets/yaml/jp/rev0/ast_bolse.yaml            |  200 --
 assets/yaml/jp/rev0/ast_common.yaml           |  987 -------
 assets/yaml/jp/rev0/ast_corneria.yaml         |  589 ----
 assets/yaml/jp/rev0/ast_ending.yaml           |  125 -
 .../yaml/jp/rev0/ast_ending_award_back.yaml   |   12 -
 .../yaml/jp/rev0/ast_ending_award_front.yaml  |   12 -
 assets/yaml/jp/rev0/ast_ending_expert.yaml    |   15 -
 assets/yaml/jp/rev0/ast_enmy_planet.yaml      |  112 -
 assets/yaml/jp/rev0/ast_enmy_space.yaml       |  134 -
 assets/yaml/jp/rev0/ast_font_3d.yaml          |  128 -
 assets/yaml/jp/rev0/ast_fortuna.yaml          |  183 --
 assets/yaml/jp/rev0/ast_great_fox.yaml        |   93 -
 assets/yaml/jp/rev0/ast_katina.yaml           |  179 --
 assets/yaml/jp/rev0/ast_landmaster.yaml       |   78 -
 assets/yaml/jp/rev0/ast_logo.yml              |   18 -
 assets/yaml/jp/rev0/ast_macbeth.yaml          |  938 ------
 assets/yaml/jp/rev0/ast_map.yaml              |  577 ----
 assets/yaml/jp/rev0/ast_meteo.yaml            |  320 ---
 assets/yaml/jp/rev0/ast_option.yaml           |  249 --
 assets/yaml/jp/rev0/ast_sector_x.yaml         |  298 --
 assets/yaml/jp/rev0/ast_sector_y.yaml         |  362 ---
 assets/yaml/jp/rev0/ast_sector_z.yaml         |  172 --
 assets/yaml/jp/rev0/ast_solar.yaml            |  227 --
 assets/yaml/jp/rev0/ast_star_wolf.yaml        |  102 -
 assets/yaml/jp/rev0/ast_text.yaml             |  421 ---
 assets/yaml/jp/rev0/ast_titania.yaml          |  188 --
 assets/yaml/jp/rev0/ast_title.yaml            |  263 --
 assets/yaml/jp/rev0/ast_training.yaml         |   88 -
 assets/yaml/jp/rev0/ast_ve1_boss.yaml         |  243 --
 assets/yaml/jp/rev0/ast_venom_1.yaml          |  182 --
 assets/yaml/jp/rev0/ast_venom_2.yaml          |  205 --
 assets/yaml/jp/rev0/ast_versus.yaml           |  762 -----
 assets/yaml/jp/rev0/ast_vs_menu.yaml          |  207 --
 assets/yaml/jp/rev0/ast_warp_zone.yaml        |   42 -
 assets/yaml/jp/rev0/ast_zoness.yaml           |  563 ----
 include/bgm.h                                 |    6 +
 include/fox_option.h                          |   26 +-
 include/sf64player.h                          |   36 +-
 include/sf64save.h                            |    5 +-
 include/variables.h                           |    2 +-
 linker_scripts/eu/rev0/symbol_addrs.txt       | 1092 +++----
 linker_scripts/jp/rev0/symbol_addrs.txt       |    2 -
 .../jp/rev0/symbol_addrs_overlays.txt         |    1 +
 src/audio/audio_general.c                     |   10 +-
 src/audio/audio_load.c                        |    9 +-
 src/audio/audio_seqplayer.c                   |    2 +-
 src/engine/fox_360.c                          |   25 +-
 src/engine/fox_beam.c                         |   21 +-
 src/engine/fox_bg.c                           |   30 +-
 src/engine/fox_boss.c                         |    2 +-
 src/engine/fox_demo.c                         |   34 +-
 src/engine/fox_display.c                      |   40 +-
 src/engine/fox_edisplay.c                     |   29 +-
 src/engine/fox_effect.c                       |   21 +-
 src/engine/fox_enmy.c                         |   30 +-
 src/engine/fox_enmy2.c                        |   10 +-
 src/engine/fox_hud.c                          |   52 +-
 src/engine/fox_play.c                         |  133 +-
 src/engine/fox_radio.c                        |    3 +-
 src/engine/fox_tank.c                         |    4 +-
 src/engine/fox_versus.c                       |   23 +-
 src/mods/object_ram.c                         |   10 +-
 src/overlays/ovl_ending/fox_end2.c            |    2 +-
 src/overlays/ovl_ending/fox_end2_data.c       |    2 +-
 src/overlays/ovl_i1/fox_co.c                  |   18 +-
 src/overlays/ovl_i1/fox_tr360.c               |    2 +-
 src/overlays/ovl_i1/fox_ve1.c                 |    2 +-
 src/overlays/ovl_i2/fox_me.c                  |   13 +-
 src/overlays/ovl_i2/fox_sx.c                  |   16 +-
 src/overlays/ovl_i3/fox_a6.c                  |   10 +-
 src/overlays/ovl_i3/fox_aq.c                  |   12 +-
 src/overlays/ovl_i3/fox_so.c                  |   16 +-
 src/overlays/ovl_i3/fox_zo.c                  |    9 +-
 src/overlays/ovl_i4/fox_bo.c                  |   17 +-
 src/overlays/ovl_i4/fox_fo.c                  |   18 +-
 src/overlays/ovl_i4/fox_ka.c                  |   40 +-
 src/overlays/ovl_i4/fox_sz.c                  |   40 +-
 src/overlays/ovl_i5/fox_ma.c                  |   36 +-
 src/overlays/ovl_i5/fox_ti.c                  |    4 +-
 src/overlays/ovl_i5/fox_ti_cs.c               |    4 +-
 src/overlays/ovl_i6/fox_andross.c             |   40 +-
 src/overlays/ovl_i6/fox_sy.c                  |   26 +-
 src/overlays/ovl_i6/fox_ve2.c                 |   10 +-
 srceu/audio/audio_effects.c                   |  278 +-
 srceu/audio/audio_general.c                   | 2546 ++++++++++++++++-
 srceu/audio/audio_heap.c                      | 1046 ++++++-
 srceu/audio/audio_load.c                      | 1513 +++++++++-
 srceu/audio/audio_playback.c                  |  784 ++++-
 srceu/audio/audio_seqplayer.c                 | 1408 ++++++++-
 srceu/audio/audio_synthesis.c                 |  609 +++-
 srceu/audio/audio_thread.c                    |  442 ++-
 srceu/driverominit.c                          |    2 +-
 srceu/engine/fox_360.c                        |    2 +-
 srceu/engine/fox_game.c                       |   16 +-
 srceu/engine/fox_load.c                       |   40 +-
 srceu/engine/fox_load_inits.c                 |   54 +-
 srceu/engine/fox_message.c                    |    2 +-
 srceu/engine/fox_play.c                       |   35 +-
 srceu/engine/fox_radio.c                      |    6 +
 srceu/engine/fox_rcp.c                        |    4 +-
 srceu/engine/fox_save.c                       |    4 +-
 srceu/engine/fox_std_lib.c                    |    8 +-
 srceu/overlays/ovl_ending/end1.c              |    2 +-
 srceu/overlays/ovl_menu/fox_option.c          |   58 +-
 srceu/sys/sys_lib.c                           |    6 +-
 srceu/sys/sys_matrix.c                        |    6 +-
 srceu/sys/sys_memory.c                        |    4 +-
 srceu/sys/sys_timer.c                         |    4 +-
 srcjp/audio/audio_tables.c                    |  160 ++
 srcjp/overlays/ovl_i1/fox_i1.c                |    2 +-
 starfox64.eu.rev0.uncompressed.md5            |    2 +-
 yamls/eu/rev0/main.yaml                       |    2 +-
 yamls/jp/rev0/header.yaml                     |    1 +
 yamls/jp/rev0/main.yaml                       |    2 +-
 yamls/jp/rev0/overlays.yaml                   |   22 +-
 yamls/us/rev1/overlays.yaml                   |   22 +-
 130 files changed, 9634 insertions(+), 13178 deletions(-)
 delete mode 100644 assets/yaml/jp/rev0/ast_7_ti_1.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_7_ti_2.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_8_ti.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_9_ti.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_A_ti.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_allies.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_andross.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_aquas.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_area_6.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_arwing.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_bg_planet.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_bg_space.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_blue_marine.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_bolse.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_common.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_corneria.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_ending.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_ending_award_back.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_ending_award_front.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_ending_expert.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_enmy_planet.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_enmy_space.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_font_3d.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_fortuna.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_great_fox.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_katina.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_landmaster.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_logo.yml
 delete mode 100644 assets/yaml/jp/rev0/ast_macbeth.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_map.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_meteo.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_option.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_sector_x.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_sector_y.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_sector_z.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_solar.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_star_wolf.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_text.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_titania.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_title.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_training.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_ve1_boss.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_venom_1.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_venom_2.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_versus.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_vs_menu.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_warp_zone.yaml
 delete mode 100644 assets/yaml/jp/rev0/ast_zoness.yaml
 create mode 100644 linker_scripts/jp/rev0/symbol_addrs_overlays.txt
 create mode 100644 srcjp/audio/audio_tables.c

diff --git a/Makefile b/Makefile
index 81ce5d49f..ae17b0bd7 100644
--- a/Makefile
+++ b/Makefile
@@ -332,6 +332,7 @@ build/src/libultra/rmon/%.o: OPTFLAGS := -O1 -g0
 build/src/libultra/debug/%.o: OPTFLAGS := -O1 -g0
 build/src/libultra/host/%.o:	OPTFLAGS := -O1 -g0
 build/src/audio/%.o: OPTFLAGS := -O2 -g0
+build/srceu/audio/%.o: OPTFLAGS := -O2 -g0 # temporary
 
 # per-file flags
 build/src/audio/audio_effects.o: CFLAGS += -use_readwrite_const
diff --git a/assets/yaml/jp/rev0/ast_7_ti_1.yaml b/assets/yaml/jp/rev0/ast_7_ti_1.yaml
deleted file mode 100644
index b80991f56..000000000
--- a/assets/yaml/jp/rev0/ast_7_ti_1.yaml
+++ /dev/null
@@ -1,269 +0,0 @@
-:config:
-  segments:
-    - [0x07, 0x9DE6E0]
-  header:
-    code:
-      - '#include "assets/ast_7_ti_1.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_AST_7_TI_1_7000000:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 28, offset: 0x07000000, symbol: D_AST_7_TI_1_7000000, tlut: 0x07001108 }
-
-D_TI1_7000A80:
-  { type: GFX, offset: 0x7000A80, symbol: D_TI1_7000A80 }
-
-D_TI1_7000D08:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x07000D08, symbol: D_TI1_7000D08, tlut: 0x07001108 }
-
-D_TI1_7001108:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x07001108, symbol: D_TI1_7001108 }
-
-D_TI1_7001268:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7001268, symbol: D_TI1_7001268 }
-
-D_TI1_7002270:
-  { type: GFX, offset: 0x7002270, symbol: D_TI1_7002270 }
-
-D_TI1_7002490:
-  { type: GFX, offset: 0x7002490, symbol: D_TI1_7002490 }
-
-D_TI1_7002730:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07002730, symbol: D_TI1_7002730 }
-
-D_TI1_7002930:
-  { type: GFX, offset: 0x7002930, symbol: D_TI1_7002930 }
-
-D_TI1_7002C88:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x7002C88, symbol: D_TI1_7002C88 }
-
-D_TI1_7003488:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x07003488, symbol: D_TI1_7003488, tlut: 0x07003888 }
-
-D_TI1_7003888:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x07003888, symbol: D_TI1_7003888 }
-
-D_TI1_7003A90:
-  { type: GFX, offset: 0x7003A90, symbol: D_TI1_7003A90 }
-
-D_TI1_7003C50:
-  { type: GFX, offset: 0x7003C50, symbol: D_TI1_7003C50 }
-
-D_TI1_7003E30:
-  { type: GFX, offset: 0x7003E30, symbol: D_TI1_7003E30 }
-
-D_TI1_7003FC0:
-  { type: GFX, offset: 0x7003FC0, symbol: D_TI1_7003FC0 }
-
-D_TI1_7004170:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07004170, symbol: D_TI1_7004170 }
-
-D_TI1_7004370:
-  { type: GFX, offset: 0x7004370, symbol: D_TI1_7004370 }
-
-D_TI1_7004560:
-  { type: GFX, offset: 0x7004560, symbol: D_TI1_7004560 }
-
-D_TI1_7004780:
-  { type: GFX, offset: 0x7004780, symbol: D_TI1_7004780 }
-
-D_TI1_70049A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x070049A0, symbol: D_TI1_70049A0 }
-
-D_TI1_7004BA0:
-  { type: GFX, offset: 0x7004BA0, symbol: D_TI1_7004BA0 }
-
-D_TI1_7004E78:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07004E78, symbol: D_TI1_7004E78 }
-
-D_TI1_7005078:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07005078, symbol: D_TI1_7005078 }
-
-D_TI1_7005280:
-  { type: GFX, offset: 0x7005280, symbol: D_TI1_7005280 }
-
-D_TI1_7005420:
-  { type: GFX, offset: 0x7005420, symbol: D_TI1_7005420 }
-
-D_TI1_70067C4:
-  { type: SF64:ANIM, offset: 0x70067C4, symbol: D_TI1_70067C4 }
-
-aTi1DesertCrawlerSkel:
-  { type: SF64:SKELETON, offset: 0x7006990, symbol: aTi1DesertCrawlerSkel}
-
-D_TI1_7006F74:
-  { type: SF64:ANIM, offset: 0x7006F74, symbol: D_TI1_7006F74 }
-
-D_TI1_7007130:
-  { type: SF64:ANIM, offset: 0x7007130, symbol: D_TI1_7007130 }
-
-D_TI1_7007234:
-  { type: SF64:ANIM, offset: 0x7007234, symbol: D_TI1_7007234 }
-
-D_TI1_700733C:
-  { type: SF64:ANIM, offset: 0x700733C, symbol: D_TI1_700733C }
-
-D_TI1_7007350:
-  { type: GFX, offset: 0x7007350, symbol: D_TI1_7007350 }
-
-D_TI1_7007AB0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x7007AB0, symbol: D_TI1_7007AB0, tlut: 0x07007EB0 }
-
-D_TI1_7007EB0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x07007EB0, symbol: D_TI1_7007EB0 }
-
-D_TI1_7008090:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x07008090, symbol: D_TI1_7008090, tlut: 0x07008490 }
-
-D_TI1_7008490:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x07008490, symbol: D_TI1_7008490 }
-
-D_TI1_7008680:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x07008680, symbol: D_TI1_7008680, tlut: 0x07008490 }
-
-D_TI1_7008780:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 216, offset: 0x07008780, symbol: D_TI1_7008780 }
-
-D_TI1_7008930:
-  { type: GFX, offset: 0x7008930, symbol: D_TI1_7008930 }
-
-D_TI1_7008D10:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x7008D10, symbol: D_TI1_7008D10 }
-
-D_TI1_7008F10:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x7008F10, symbol: D_TI1_7008F10 }
-
-D_TI1_7009110:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07009110, symbol: D_TI1_7009110 }
-
-D_TI1_7009310:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07009310, symbol: D_TI1_7009310 }
-
-D_TI1_7009510:
-  { type: GFX, offset: 0x7009510, symbol: D_TI1_7009510 }
-
-D_TI1_70096D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x070096D8, symbol: D_TI1_70096D8 }
-
-aTiDelphorDL:
-  { type: GFX, offset: 0x70098E0, symbol: aTiDelphorDL }
-
-D_TI1_7009B58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07009B58, symbol: D_TI1_7009B58 }
-
-aTi1Bomb1DL:
-  { type: GFX, offset: 0x7009D60, symbol: aTi1Bomb1DL }
-
-D_TI1_700A190:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0700A190, symbol: D_TI1_700A190 }
-
-aTi1Bomb2DL:
-  { type: GFX, offset: 0x700A990, symbol: aTi1Bomb2DL }
-
-D_TI1_700AAD8:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x700AAD8, symbol: D_TI1_700AAD8, tlut: 0x700AB58 }
-
-D_TI1_700AB58:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x700AB58, symbol: D_TI1_700AB58 }
-
-aTi1LandmineDL:
-  { type: GFX, offset: 0x700AB70, symbol: aTi1LandmineDL }
-
-D_TI1_700AEA8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0700AEA8, symbol: D_TI1_700AEA8 }
-
-D_TI1_700AF30:
-  { type: GFX, offset: 0x700AF30, symbol: D_TI1_700AF30 }
-
-D_TI1_700B5B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0700B5B8, symbol: D_TI1_700B5B8 }
-
-D_TI1_700B7B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0700B7B8, symbol: D_TI1_700B7B8 }
-
-aTi1FekudaGun1DL:
-  { type: GFX, offset: 0x700B9C0, symbol: aTi1FekudaGun1DL }
-
-D_TI1_700BB10:
-  { type: GFX, offset: 0x700BB10, symbol: D_TI1_700BB10 }
-
-aTiBridgeDL:
-  { type: GFX, offset: 0x700BE00, symbol: aTiBridgeDL }
-
-D_TI1_700BFB0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x0700BFB0, symbol: D_TI1_700BFB0, tlut: 0x0700C3B0 }
-
-D_TI1_700C3B0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 128, offset: 0x0700C3B0, symbol: D_TI1_700C3B0 }
-
-aTi1FekudaDL:
-  { type: GFX, offset: 0x700C4B0, symbol: aTi1FekudaDL }
-
-aTi1DesertRoverAnim:
-  { type: SF64:ANIM, offset: 0x700C8D8, symbol: aTi1DesertRoverAnim }
-
-aTi1DesertRoverSkel:
-  { type: SF64:SKELETON, offset: 0x700C964, symbol: aTi1DesertRoverSkel }
-
-aTi1FekudaGun2DL:
-  { type: GFX, offset: 0x700C980, symbol: aTi1FekudaGun2DL }
-
-aTiBomberAnim:
-  { type: SF64:ANIM, offset: 0x700CAF4, symbol: aTiBomberAnim}
-
-aTiBomberSkel:
-  {type: SF64:SKELETON, offset: 0x700CB60, symbol: aTiBomberSkel}
-
-aTiRascoAnim:
-  { type: SF64:ANIM, offset: 0x700D534, symbol: aTiRascoAnim }
-
-aTiRascoSkel:
-  {type: SF64:SKELETON, offset: 0x700D700, symbol: aTiRascoSkel}
-
-D_TI1_700D740:
-  { type: GFX, offset: 0x700D740, symbol: D_TI1_700D740 }
-
-D_TI1_700D880:
-  { type: GFX, offset: 0x700D880, symbol: D_TI1_700D880 }
-
-D_TI1_700D9B0:
-  { type: GFX, offset: 0x700D9B0, symbol: D_TI1_700D9B0 }
-
-D_TI1_700DAD0:
-  { type: GFX, offset: 0x700DAD0, symbol: D_TI1_700DAD0 }
-
-D_TI1_700DBB0:
-  { type: GFX, offset: 0x700DBB0, symbol: D_TI1_700DBB0 }
-
-D_TI1_700DC50:
-  { type: GFX, offset: 0x700DC50, symbol: D_TI1_700DC50 }
-
-D_TI1_700DD68:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0700DD68, symbol: D_TI1_700DD68 }
-
-D_TI1_700DDF0:
-  { type: GFX, offset: 0x700DDF0, symbol: D_TI1_700DDF0 }
-
-D_TI1_700DED0:
-  { type: GFX, offset: 0x700DED0, symbol: D_TI1_700DED0 }
-
-D_TI1_700DF70:
-  { type: GFX, offset: 0x700DF70, symbol: D_TI1_700DF70 }
-
-D_TI1_700E030:
-  { type: GFX, offset: 0x700E030, symbol: D_TI1_700E030 }
-
-D_TI1_700E1E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0700E1E8, symbol: D_TI1_700E1E8 }
-
-aTiBoulderDL:
-  { type: GFX, offset: 0x700E3F0, symbol: aTiBoulderDL }
-
-D_TI1_700E858:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0700E858, symbol: D_TI1_700E858 }
-
-D_TI1_700EA60:
-  { type: GFX, offset: 0x700EA60, symbol: D_TI1_700EA60 }
-
-# size = 0xEDB0
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_7_ti_2.yaml b/assets/yaml/jp/rev0/ast_7_ti_2.yaml
deleted file mode 100644
index a11ccf22d..000000000
--- a/assets/yaml/jp/rev0/ast_7_ti_2.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-:config:
-  segments:
-    - [0x07, 0x9AD730]
-  header:
-    code:
-      - '#include "assets/ast_7_ti_2.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_TI2_7003EE8:
-  { type: SF64:ANIM, offset: 0x7003EE8, symbol: D_TI2_7003EE8 }
-
-D_TI2_7003F00:
-  { type: GFX, offset: 0x7003F00, symbol: D_TI2_7003F00 }
-
-D_TI2_7004270:
-  { type: GFX, offset: 0x7004270, symbol: D_TI2_7004270 }
-
-D_TI2_7004400:
-  { type: GFX, offset: 0x7004400, symbol: D_TI2_7004400 }
-
-D_TI2_70045D0:
-  { type: GFX, offset: 0x70045D0, symbol: D_TI2_70045D0 }
-
-D_TI2_70047B0:
-  { type: TEXTURE, ctype: u8, format: CI8, height: 16, width: 16, offset: 0x70047B0, symbol: D_TI2_70047B0 }
-D_TI2_70048B0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 136, offset: 0x70048B0, symbol: D_TI2_70048B0 }
-
-D_TI2_70049C0:
-  { type: GFX, offset: 0x70049C0, symbol: D_TI2_70049C0 }
-
-D_TI2_7004AB0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 16, offset: 0x7004AB0, symbol: D_TI2_7004AB0 }
-D_TI2_7004CB0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 232 , offset: 0x7004CB0, symbol: D_TI2_7004CB0 }
-
-D_TI2_7004E80:
-  { type: GFX, offset: 0x7004E80, symbol: D_TI2_7004E80 }
-
-D_TI2_7005300:
-  { type: GFX, offset: 0x7005300, symbol: D_TI2_7005300 }
-
-D_TI2_70054C0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x70054C0, symbol: D_TI2_70054C0 }
-
-D_TI2_70084CC:
-  { type: SF64:ANIM, offset: 0x70084CC, symbol: D_TI2_70084CC }
-
-D_TI2_70096EC:
-  { type: SF64:ANIM, offset: 0x70096EC, symbol: D_TI2_70096EC }
-
-D_TI2_7009700:
-  { type: GFX, offset: 0x7009700, symbol: D_TI2_7009700 }
-
-D_TI2_7009890:
-  { type: GFX, offset: 0x7009890, symbol: D_TI2_7009890 }
-
-D_TI2_7009A80:
-  { type: GFX, offset: 0x7009A80, symbol: D_TI2_7009A80 }
-
-D_TI2_7009B48:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 32, offset: 0x7009B48, symbol: D_TI2_7009B48 }
-D_TI2_7009D48:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 56, offset: 0x7009D48, symbol: D_TI2_7009D48 }
-
-D_TI2_700E244:
-  { type: SF64:ANIM, offset: 0x700E244, symbol: D_TI2_700E244 }
-
-# size = 0xE250
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_8_ti.yaml b/assets/yaml/jp/rev0/ast_8_ti.yaml
deleted file mode 100644
index e09bf8b27..000000000
--- a/assets/yaml/jp/rev0/ast_8_ti.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-:config:
-  segments:
-    - [0x08, 0x9BB980]
-  header:
-    code:
-      - '#include "assets/ast_8_ti.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_TI_8000708: { type: SF64:ANIM, offset: 0x8000708, symbol: D_TI_8000708 }
-
-D_TI_8000D80: { type: SF64:ANIM, offset: 0x8000D80, symbol: D_TI_8000D80 }
-
-D_TI_8000D90: { type: GFX, offset: 0x8000D90, symbol: D_TI_8000D90 }
-
-D_TI_8000FC0: { type: TEXTURE, ctype: u16, format: IA16, width: 16, height: 16, offset: 0x8000FC0, symbol: D_TI_8000FC0}
-
-D_TI_80011C0: { type: GFX, offset: 0x80011C0, symbol: D_TI_80011C0 }
-
-D_TI_80012E8: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x80012E8, symbol: D_TI_80012E8, tlut: 0x80013E8}
-D_TI_80013E8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 88, offset: 0x80013E8, symbol: D_TI_80013E8}
-
-D_TI_80014A0: { type: GFX, offset: 0x80014A0, symbol: D_TI_80014A0 }
-
-D_TI_8001630: { type: GFX, offset: 0x8001630, symbol: D_TI_8001630 }
-
-D_TI_80018D0: { type: GFX, offset: 0x80018D0, symbol: D_TI_80018D0 }
-
-D_TI_8001A80: { type: GFX, offset: 0x8001A80, symbol: D_TI_8001A80 }
-
-D_TI_8001D20: { type: GFX, offset: 0x8001D20, symbol: D_TI_8001D20 }
-
-D_TI_8001E20: { type: GFX, offset: 0x8001E20, symbol: D_TI_8001E20 }
-
-D_TI_8001FB0: { type: GFX, offset: 0x8001FB0, symbol: D_TI_8001FB0 }
-
-D_TI_80020D0: { type: GFX, offset: 0x80020D0, symbol: D_TI_80020D0 }
-
-D_TI_8002360: { type: GFX, offset: 0x8002360, symbol: D_TI_8002360 }
-
-D_TI_8002858: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x8002858, symbol: D_TI_8002858, tlut: 0x8002C58}
-D_TI_8002C58: { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x8002C58, symbol: D_TI_8002C58}
-
-D_TI_8002E48: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x8002E48, symbol: D_TI_8002E48, tlut: 0x8002F48}
-D_TI_8002F48: { type: TEXTURE, ctype: u16, format: TLUT, colors: 216, offset: 0x8002F48, symbol: D_TI_8002F48}
-
-D_TI_80030F8: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x80030F8, symbol: D_TI_80030F8, tlut: 0x80031F8}
-D_TI_80031F8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 192, offset: 0x80031F8, symbol: D_TI_80031F8}
-
-D_TI_8003378: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x8003378, symbol: D_TI_8003378, tlut: 0x8003478}
-D_TI_8003478: { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x8003478, symbol: D_TI_8003478}
-
-D_TI_80034A8: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x80034A8, symbol: D_TI_80034A8, tlut: 0x80035A8}
-D_TI_80035A8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 72, offset: 0x80035A8, symbol: D_TI_80035A8}
-
-D_TI_8003640: { type: GFX, offset: 0x8003640, symbol: D_TI_8003640 }
-
-D_TI_8004200: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x8004200, symbol: D_TI_8004200, tlut: 0x8004600}
-D_TI_8004600: { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x8004600, symbol: D_TI_8004600}
-
-D_TI_8008FE8: { type: SF64:ANIM, offset: 0x8008FE8, symbol: D_TI_8008FE8 }
-
-D_TI_8009000: { type: GFX, offset: 0x8009000, symbol: D_TI_8009000 }
-
-# size: 0x92A0
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_9_ti.yaml b/assets/yaml/jp/rev0/ast_9_ti.yaml
deleted file mode 100644
index e9a716a80..000000000
--- a/assets/yaml/jp/rev0/ast_9_ti.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-:config:
-  segments:
-    - [0x09, 0x9C4C20]
-  header:
-    code:
-      - '#include "assets/ast_9_ti.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_TI_9004288:
-  { type: SF64:ANIM, offset: 0x9004288, symbol: D_TI_9004288 }
-
-D_TI_90042A0:
-  { type: GFX, offset: 0x90042A0, symbol: D_TI_90042A0 }
-
-D_TI_90043D0:
-  { type: GFX, offset: 0x90043D0, symbol: D_TI_90043D0 }
-
-D_TI_90044E0:
-  { type: GFX, offset: 0x90044E0, symbol: D_TI_90044E0 }
-
-D_TI_90045F0:
-  { type: GFX, offset: 0x90045F0, symbol: D_TI_90045F0 }
-
-D_TI_9004858:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x9004858, symbol: D_TI_9004858, tlut: 0x9004958 }
-D_TI_9004958:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 136, offset: 0x9004958, symbol: D_TI_9004958 }
-
-D_TI_9004A68:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x9004A68, symbol: D_TI_9004A68, tlut: 0x9004E68 }
-D_TI_9004E68:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x9004E68, symbol: D_TI_9004E68 }
-
-D_TI_9005040:
-  { type: GFX, offset: 0x9005040, symbol: D_TI_9005040 }
-
-D_TI_90051C0:
-  { type: GFX, offset: 0x90051C0, symbol: D_TI_90051C0 }
-
-D_TI_9005450:
-  { type: GFX, offset: 0x9005450, symbol: D_TI_9005450 }
-
-D_TI_9005600:
-  { type: GFX, offset: 0x9005600, symbol: D_TI_9005600 }
-
-D_TI_90058A0:
-  { type: GFX, offset: 0x90058A0, symbol: D_TI_90058A0 }
-
-D_TI_90059B8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x90059B8, symbol: D_TI_90059B8, tlut: 0x9005AB8 }
-D_TI_9005AB8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x9005AB8, symbol: D_TI_9005AB8 }
-
-D_TI_900FC4C:
-  { type: SF64:ANIM, offset: 0x900FC4C, symbol: D_TI_900FC4C }
-
-D_TI_900FC60:
-  { type: GFX, offset: 0x900FC60, symbol: D_TI_900FC60 }
-
-D_TI_900FD70:
-  { type: GFX, offset: 0x900FD70, symbol: D_TI_900FD70 }
-
-D_TI_900FE80:
-  { type: GFX, offset: 0x900FE80, symbol: D_TI_900FE80 }
-
-  # size: 0x10120
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_A_ti.yaml b/assets/yaml/jp/rev0/ast_A_ti.yaml
deleted file mode 100644
index c02dc4e54..000000000
--- a/assets/yaml/jp/rev0/ast_A_ti.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-:config:
-  segments:
-    - [0x0A, 0x9D4D40]
-  header:
-    code:
-      - '#include "assets/ast_A_ti.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_TI_A000000:
-  {type: GFX, offset: 0xA000000, symbol: D_TI_A000000}
-
-D_TI_A0000C8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x0A0000C8, symbol: D_TI_A0000C8, tlut: 0x0A0001C8 }
-
-D_TI_A0001C8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 60, offset: 0x0A0001C8, symbol: D_TI_A0001C8 }
-
-D_TI_A0002BC:
-  {type: SF64:ANIM, offset: 0xA0002BC, symbol: D_TI_A0002BC}
-
-D_TI_A00047C:
-  {type: SF64:ANIM, offset: 0xA00047C, symbol: D_TI_A00047C}
-
-D_TI_A000568:
-  {type: SF64:SKELETON, offset: 0xA000568, symbol: D_TI_A000568}
-
-D_TI_A000858:
-  {type: SF64:ANIM, offset: 0xA000858, symbol: D_TI_A000858}
-
-D_TI_A000934:
-  {type: SF64:ANIM, offset: 0xA000934, symbol: D_TI_A000934}
-
-D_TI_A000D50:
-  {type: SF64:ANIM, offset: 0xA000D50, symbol: D_TI_A000D50}
-
-D_TI_A000EDC:
-  {type: SF64:SKELETON, offset: 0xA000EDC, symbol: D_TI_A000EDC}
-
-D_TI_A001A70:
-  {type: SF64:SKELETON, offset: 0xA001A70, symbol: D_TI_A001A70}
-
-D_TI_A001BE0:
-  {type: GFX, offset: 0xA001BE0, symbol: D_TI_A001BE0}
-
-D_TI_A001DB0:
-  {type: GFX, offset: 0xA001DB0, symbol: D_TI_A001DB0}
-
-D_TI_A001EC0:
-  {type: GFX, offset: 0xA001EC0, symbol: D_TI_A001EC0}
-
-D_TI_A001FA0:
-  {type: GFX, offset: 0xA001FA0, symbol: D_TI_A001FA0}
-
-D_TI_A002170:
-  {type: GFX, offset: 0xA002170, symbol: D_TI_A002170}
-
-D_TI_A009990:
-  {type: SF64:ANIM, offset: 0xA009990, symbol: D_TI_A009990}
diff --git a/assets/yaml/jp/rev0/ast_allies.yaml b/assets/yaml/jp/rev0/ast_allies.yaml
deleted file mode 100644
index 528563237..000000000
--- a/assets/yaml/jp/rev0/ast_allies.yaml
+++ /dev/null
@@ -1,113 +0,0 @@
-:config:
-  segments:
-    - [0x0D, 0x9257A0]
-  header:
-    code:
-      - '#include "assets/ast_allies.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aKattMarkDL:
-  { type: GFX, offset: 0xD000000, symbol: aKattMarkDL }
-
-ast_allies_seg13_vtx_00000098:
-  { type: VTX, count: 3, offset: 0x0D000098, symbol: ast_allies_seg13_vtx_00000098 }
-
-D_D0000C8:
-  { type: BLOB, size: 0x18, offset: 0x0D0000C8, symbol: D_D0000C8 }
-
-aKattMarkTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D0000E0, symbol: aKattMarkTex, tlut: 0x0D000160 }
-
-aKattMarkTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD000160, symbol: aKattMarkTLUT }
-
-D_D000170:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD000170, symbol: D_D000170 }
-
-D_D001090:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD001090, symbol: D_D001090 }
-
-D_D001FB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD001FB0, symbol: D_D001FB0 }
-
-D_D002ED0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD002ED0, symbol: D_D002ED0 }
-
-D_D003DF0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD003DF0, symbol: D_D003DF0 }
-
-D_D004D10:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD004D10, symbol: D_D004D10 }
-
-D_D005C30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD005C30, symbol: D_D005C30 }
-
-D_D006B50:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD006B50, symbol: D_D006B50 }
-
-D_D007A70:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD007A70, symbol: D_D007A70 }
-
-D_D008990:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD008990, symbol: D_D008990 }
-
-aKattRadarMarkDL:
-  { type: GFX, offset: 0xD0098B0, symbol: aKattRadarMarkDL }
-
-aKattRadarMarkTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x0D009938, symbol: aKattRadarMarkTex }
-
-aKattShipDL:
-  { type: GFX, offset: 0xD009A40, symbol: aKattShipDL }
-
-D_D00A3B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0D00A3B8, symbol: D_D00A3B8 }
-
-D_D00ABB8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00ABB8, symbol: D_D00ABB8 }
-
-D_D00ADB8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00ADB8, symbol: D_D00ADB8 }
-
-D_D00AFB8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x0D00AFB8, symbol: D_D00AFB8 }
-
-D_D00B3B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00B3B8, symbol: D_D00B3B8 }
-
-aBillMarkDL:
-  { type: GFX, offset: 0xD00B5C0, symbol: aBillMarkDL }
-
-# Letter B
-aBillMarkTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B688, symbol: aBillMarkTex, tlut: 0xD00B708 }
-
-aBillMarkTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B708, symbol: aBillMarkTLUT }
-
-aJamesMarkDL:
-  { type: GFX, offset: 0xD00B720, symbol: aJamesMarkDL }
-
-# Letter J ?
-aJamesMarkTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B7F0, symbol: aJamesMarkTex, tlut: 0xD00B870 }
-
-aJamesMarkTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B870, symbol: aJamesMarkTLUT }
-
-aBillShipDL:
-  { type: GFX, offset: 0xD00B880, symbol: aBillShipDL }
-
-ast_allies_seg13_vtx_BB70:
-  { type: VTX, count: 144, offset: 0xD00BB70, symbol: ast_allies_seg13_vtx_BB70 }
-
-D_D00C470:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0xD00C470, symbol: D_D00C470 }
-
-D_D00C670:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00C670, symbol: D_D00C670 }
-
-D_D00C870:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00C870, symbol: D_D00C870 }
diff --git a/assets/yaml/jp/rev0/ast_andross.yaml b/assets/yaml/jp/rev0/ast_andross.yaml
deleted file mode 100644
index ece202c04..000000000
--- a/assets/yaml/jp/rev0/ast_andross.yaml
+++ /dev/null
@@ -1,269 +0,0 @@
-:config:
-  segments:
-    - [0x0C, 0xCAEA30]
-  header:
-    code:
-      - '#include "assets/ast_andross.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-D_ANDROSS_C000000:
-  {type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 28, offset: 0xC000000, symbol: D_ANDROSS_C000000}
-
-aAndTitleCardTex:
-  {type: TEXTURE, ctype: u8, format: IA8, width: 128, height: 28, offset: 0xC000A80, symbol: aAndTitleCardTex}
-
-D_ANDROSS_C001880:
-  {type: GFX, offset: 0xC001880, symbol: D_ANDROSS_C001880}
-
-D_ANDROSS_C0019E8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0xC0019E8, symbol: D_ANDROSS_C0019E8}
-
-D_ANDROSS_C00208C:
-  {type: SF64:ANIM, offset: 0xC00208C, symbol: D_ANDROSS_C00208C}
-
-D_ANDROSS_C002654:
-  {type: SF64:ANIM, offset: 0xC002654, symbol: D_ANDROSS_C002654}
-
-D_ANDROSS_C002B08:
-  {type: SF64:ANIM, offset: 0xC002B08, symbol: D_ANDROSS_C002B08}
-
-D_ANDROSS_C002B20:
-  {type: GFX, offset: 0xC002B20, symbol: D_ANDROSS_C002B20}
-
-D_ANDROSS_C002F00:
-  {type: GFX, offset: 0xC002F00, symbol: D_ANDROSS_C002F00}
-
-D_ANDROSS_C0031D0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC0031D0, symbol: D_ANDROSS_C0031D0}
-
-D_ANDROSS_C0039D0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC0039D0, symbol: D_ANDROSS_C0039D0}
-
-D_ANDROSS_C0041D0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0xC0041D0, symbol: D_ANDROSS_C0041D0}
-
-D_ANDROSS_C0043D0:
-  {type: GFX, offset: 0xC0043D0, symbol: D_ANDROSS_C0043D0}
-
-D_ANDROSS_C004658:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0xC004658, symbol: D_ANDROSS_C004658}
-
-D_ANDROSS_C004860:
-  {type: GFX, offset: 0xC004860, symbol: D_ANDROSS_C004860}
-
-D_ANDROSS_C006F08:
-  {type: SF64:ANIM, offset: 0xC006F08, symbol: D_ANDROSS_C006F08}
-
-D_ANDROSS_C007FC0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC007FC0, symbol: D_ANDROSS_C007FC0}
-
-D_ANDROSS_C0087C0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC0087C0, symbol: D_ANDROSS_C0087C0}
-
-D_ANDROSS_C00DE48:
-  {type: SF64:ANIM, offset: 0xC00DE48, symbol: D_ANDROSS_C00DE48}
-
-D_ANDROSS_C00E598:
-  {type: SF64:ANIM, offset: 0xC00E598, symbol: D_ANDROSS_C00E598}
-
-D_ANDROSS_C00F108:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0xC00F108, symbol: D_ANDROSS_C00F108}
-
-D_ANDROSS_C010108:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0xC010108, symbol: D_ANDROSS_C010108}
-
-D_ANDROSS_C010188:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC010188, symbol: D_ANDROSS_C010188}
-
-D_ANDROSS_C010988:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0xC010988, symbol: D_ANDROSS_C010988}
-
-D_ANDROSS_C011988:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC011988, symbol: D_ANDROSS_C011988}
-
-D_ANDROSS_C012188:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC012188, symbol: D_ANDROSS_C012188}
-
-D_ANDROSS_C012988:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC012988, symbol: D_ANDROSS_C012988}
-
-D_ANDROSS_C013738:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC013738, symbol: D_ANDROSS_C013738}
-
-D_ANDROSS_C013F38:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC013F38, symbol: D_ANDROSS_C013F38}
-
-D_ANDROSS_C014738:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0xC014738, symbol: D_ANDROSS_C014738}
-
-D_ANDROSS_C015740:
-  {type: GFX, offset: 0xC015740, symbol: D_ANDROSS_C015740}
-
-D_ANDROSS_C016100:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC016100, symbol: D_ANDROSS_C016100}
-
-D_ANDROSS_C017050:
-  {type: SF64:ANIM, offset: 0xC017050, symbol: D_ANDROSS_C017050}
-
-D_ANDROSS_C017430:
-  {type: SF64:ANIM, offset: 0xC017430, symbol: D_ANDROSS_C017430}
-
-D_ANDROSS_C017440:
-  {type: GFX, offset: 0xC017440, symbol: D_ANDROSS_C017440}
-
-D_ANDROSS_C017598:
-  {type: VTX, count: 34, offset: 0xC017598, symbol: D_ANDROSS_C017598}
-
-D_ANDROSS_C0177B8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0xC0177B8, symbol: D_ANDROSS_C0177B8}
-
-D_ANDROSS_C018BC4:
-  {type: SF64:ANIM, offset: 0xC018BC4, symbol: D_ANDROSS_C018BC4}
-
-D_ANDROSS_C01C490:
-  {type: SF64:ANIM, offset: 0xC01C490, symbol: D_ANDROSS_C01C490}
-
-D_ANDROSS_C01CC3C:
-  {type: SF64:SKELETON, offset: 0xC01CC3C, symbol: D_ANDROSS_C01CC3C}
-
-D_ANDROSS_C020128:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC020128, symbol: D_ANDROSS_C020128}
-
-D_ANDROSS_C022520:
-  {type: GFX, offset: 0xC022520, symbol: D_ANDROSS_C022520}
-
-D_ANDROSS_C022A10:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0xC022A10, symbol: D_ANDROSS_C022A10}
-
-D_ANDROSS_C022A90:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0xC022A90, symbol: D_ANDROSS_C022A90}
-
-D_ANDROSS_C023B54:
-  {type: SF64:ANIM, offset: 0xC023B54, symbol: D_ANDROSS_C023B54}
-
-D_ANDROSS_C0240D0:
-  {type: SF64:ANIM, offset: 0xC0240D0, symbol: D_ANDROSS_C0240D0}
-
-D_ANDROSS_C025C00:
-  {type: SF64:ANIM, offset: 0xC025C00, symbol: D_ANDROSS_C025C00}
-
-D_ANDROSS_C029F74:
-  {type: SF64:ANIM, offset: 0xC029F74, symbol: D_ANDROSS_C029F74}
-
-D_ANDROSS_C02E494:
-  {type: SF64:ANIM, offset: 0xC02E494, symbol: D_ANDROSS_C02E494}
-
-D_ANDROSS_C02EDA0:
-  {type: SF64:ANIM, offset: 0xC02EDA0, symbol: D_ANDROSS_C02EDA0}
-
-D_ANDROSS_C02F634:
-  {type: SF64:ANIM, offset: 0xC02F634, symbol: D_ANDROSS_C02F634}
-
-D_ANDROSS_C030244:
-  {type: SF64:ANIM, offset: 0xC030244, symbol: D_ANDROSS_C030244}
-
-D_ANDROSS_C033780:
-  {type: SF64:ANIM, offset: 0xC033780, symbol: D_ANDROSS_C033780}
-
-D_ANDROSS_C033D98:
-  {type: SF64:ANIM, offset: 0xC033D98, symbol: D_ANDROSS_C033D98}
-
-D_ANDROSS_C035110:
-  {type: SF64:ENVIRONMENT, offset: 0xC035110, symbol: D_ANDROSS_C035110}
-
-D_ANDROSS_C035154:
-  {type: SF64:OBJECT_INIT, offset: 0xC035154, symbol: D_ANDROSS_C035154}
-
-D_ANDROSS_C0356A4:
-  {type: SF64:OBJECT_INIT, offset: 0xC0356A4, symbol: D_ANDROSS_C0356A4}
-
-D_ANDROSS_C0356CC:
-  {type: SF64:OBJECT_INIT, offset: 0xC0356CC, symbol: D_ANDROSS_C0356CC}
-
-D_ANDROSS_C036310:
-  {type: SF64:OBJECT_INIT, offset: 0xC036310, symbol: D_ANDROSS_C036310}
-
-D_ANDROSS_C036B6C:
-  {type: SF64:OBJECT_INIT, offset: 0xC036B6C, symbol: D_ANDROSS_C036B6C}
-
-D_ANDROSS_C03733C:
-  {type: SF64:OBJECT_INIT, offset: 0xC03733C, symbol: D_ANDROSS_C03733C}
-
-D_ANDROSS_C037E3C:
-  {type: SF64:SCRIPT, offset: 0xC037E3C, symbol: D_ANDROSS_C037E3C}
-
-D_ANDROSS_C037FCC:
-  {type: SF64:HITBOX, offset: 0xC037FCC, symbol: D_ANDROSS_C037FCC}
-
-D_ANDROSS_C0380C0:
-  {type: SF64:HITBOX, offset: 0xC0380C0, symbol: D_ANDROSS_C0380C0}
-
-D_ANDROSS_C0381B4:
-  {type: SF64:HITBOX, offset: 0xC0381B4, symbol: D_ANDROSS_C0381B4}
-
-D_ANDROSS_C0382A8:
-  {type: SF64:HITBOX, offset: 0xC0382A8, symbol: D_ANDROSS_C0382A8}
-
-D_ANDROSS_C03839C:
-  {type: SF64:HITBOX, offset: 0xC03839C, symbol: D_ANDROSS_C03839C}
-
-D_ANDROSS_C038490:
-  {type: SF64:HITBOX, offset: 0xC038490, symbol: D_ANDROSS_C038490}
-
-D_ANDROSS_C038584:
-  {type: SF64:HITBOX, offset: 0xC038584, symbol: D_ANDROSS_C038584}
-
-D_ANDROSS_C038678:
-  {type: SF64:HITBOX, offset: 0xC038678, symbol: D_ANDROSS_C038678}
-
-D_ANDROSS_C03876C:
-  {type: SF64:HITBOX, offset: 0xC03876C, symbol: D_ANDROSS_C03876C}
-
-D_ANDROSS_C038860:
-  {type: SF64:HITBOX, offset: 0xC038860, symbol: D_ANDROSS_C038860}
-
-D_ANDROSS_C038954:
-  {type: SF64:HITBOX, offset: 0xC038954, symbol: D_ANDROSS_C038954}
-
-aAndDoorHitbox:
-  {type: SF64:HITBOX, offset: 0xC038A48, symbol: aAndDoorHitbox}
-
-D_ANDROSS_C038AC4:
-  {type: SF64:HITBOX, offset: 0xC038AC4, symbol: D_ANDROSS_C038AC4}
-
-aAndPathHitbox:
-  {type: SF64:HITBOX, offset: 0xC038B40, symbol: aAndPathHitbox}
-
-aAndPathIntersectionHitbox:
-  {type: SF64:HITBOX, offset: 0xC038BA4, symbol: aAndPathIntersectionHitbox}
-
-aAndPassageHitbox:
-  {type: SF64:HITBOX, offset: 0xC038BD8, symbol: aAndPassageHitbox}
-
-D_ANDROSS_C038CCC:
-  {type: SF64:HITBOX, offset: 0xC038CCC, symbol: D_ANDROSS_C038CCC}
-
-aAndAndrossHitbox:
-  {type: SF64:HITBOX, offset: 0xC038DC0, symbol: aAndAndrossHitbox}
-
-aAndBrainHitbox:
-  {type: SF64:HITBOX, offset: 0xC038F24, symbol: aAndBrainHitbox}
-
-D_ANDROSS_C038FE8:
-  {type: VTX, count: 34, offset: 0xC038FE8, symbol: D_ANDROSS_C038FE8}
-
-D_ANDROSS_C039208:
-  {type: GFX, offset: 0xC039208, symbol: D_ANDROSS_C039208}
-
-D_ANDROSS_C039290:
-  {type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0xC039290, symbol: D_ANDROSS_C039290}
-
-D_ANDROSS_C03A290:
-  {type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0xC03A290, symbol: D_ANDROSS_C03A290}
diff --git a/assets/yaml/jp/rev0/ast_aquas.yaml b/assets/yaml/jp/rev0/ast_aquas.yaml
deleted file mode 100644
index e8709e488..000000000
--- a/assets/yaml/jp/rev0/ast_aquas.yaml
+++ /dev/null
@@ -1,777 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xA28E60]
-  header:
-    code:
-      - '#include "assets/ast_aquas.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-aAqTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 13, offset: 0x6000000, symbol: aAqTitleCardTex }
-
-aAqSquidAnim:
-  { type: SF64:ANIM, offset: 0x6000AE4, symbol: aAqSquidAnim }
-
-aAqSquidSkel:
-  { type: SF64:SKELETON, offset: 0x6000DB0, symbol: aAqSquidSkel }
-
-aAqShellDL:
-  { type: GFX, offset: 0x6000E10, symbol: aAqShellDL }
-
-D_AQ_6001130:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6001130, symbol: D_AQ_6001130 }
-
-aAqAnglerFishAnim:
-  { type: SF64:ANIM, offset: 0x6002628, symbol: aAqAnglerFishAnim }
-
-aAqAnglerFishSkel:
-  { type: SF64:SKELETON, offset: 0x6002874, symbol: aAqAnglerFishSkel }
-
-#
-aAqOysterDL:
-  { type: GFX, offset: 0x6002C10, symbol: aAqOysterDL }
-
-D_AQ_6002D58:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6002D58, symbol: D_AQ_6002D58, tlut: 0x6003158 }
-
-D_AQ_6003158:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x6003158, symbol: D_AQ_6003158 }
-
-D_AQ_6003350:
-  { type: GFX, offset: 0x6003350, symbol: D_AQ_6003350 }
-
-D_AQ_6003610:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6003610, symbol: D_AQ_6003610 }
-
-D_AQ_60043B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60043B0, symbol: D_AQ_60043B0 }
-
-D_AQ_6004BB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6004BB0, symbol: D_AQ_6004BB0 }
-
-D_AQ_60040F0:
-  { type: GFX, offset: 0x60040F0, symbol: D_AQ_60040F0 }
-
-D_AQ_6004DB0:
-  { type: GFX, offset: 0x6004DB0, symbol: D_AQ_6004DB0 }
-
-D_AQ_60050F0:
-  { type: GFX, offset: 0x60050F0, symbol: D_AQ_60050F0 }
-
-aAqSculpinAnim:
-  { type: SF64:ANIM, offset: 0x6005954, symbol: aAqSculpinAnim }
-
-aAqSculpinSkel:
-  { type: SF64:SKELETON, offset: 0x6005A80, symbol: aAqSculpinSkel }
-
-D_AQ_6006160:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6006160, symbol: D_AQ_6006160 }
-
-D_AQ_6006960:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6006960, symbol: D_AQ_6006960 }
-
-D_AQ_6007160:
-  { type: GFX, offset: 0x6007160, symbol: D_AQ_6007160 }
-
-D_AQ_6007378:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6007378, symbol: D_AQ_6007378 }
-
-D_AQ_6007B80:
-  { type: GFX, offset: 0x6007B80, symbol: D_AQ_6007B80 }
-
-D_AQ_6007D70:
-  { type: GFX, offset: 0x6007D70, symbol: D_AQ_6007D70 }
-
-D_AQ_6007F68:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6007F68, symbol: D_AQ_6007F68 }
-
-D_AQ_6003FF0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 32, offset: 0x6003FF0, symbol: D_AQ_6003FF0 }
-
-D_AQ_6008168:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6008168, symbol: D_AQ_6008168 }
-
-aAqStarfishDL:
-  { type: GFX, offset: 0x6008970, symbol: aAqStarfishDL }
-
-D_AQ_6008EC8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6008EC8, symbol: D_AQ_6008EC8, tlut: 0x6008FC8 }
-
-D_AQ_6008FC8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 224, offset: 0x6008FC8, symbol: D_AQ_6008FC8 }
-
-D_AQ_6009188:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6009188, symbol: D_AQ_6009188 }
-
-D_AQ_6009990:
-  { type: GFX, offset: 0x6009990, symbol: D_AQ_6009990 }
-
-D_AQ_6009C28:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6009C28, symbol: D_AQ_6009C28, tlut: 0x600A028 }
-
-D_AQ_600A028:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x600A028, symbol: D_AQ_600A028 }
-
-D_AQ_600A220:
-  { type: GFX, offset: 0x600A220, symbol: D_AQ_600A220 }
-
-D_AQ_600A480:
-  { type: GFX, offset: 0x600A480, symbol: D_AQ_600A480 }
-
-D_AQ_600A520:
-  { type: GFX, offset: 0x600A520, symbol: D_AQ_600A520 }
-
-D_AQ_600A720:
-  { type: GFX, offset: 0x600A720, symbol: D_AQ_600A720 }
-
-D_AQ_600A840:
-  { type: GFX, offset: 0x600A840, symbol: D_AQ_600A840 }
-
-D_AQ_600A8E0:
-  { type: GFX, offset: 0x600A8E0, symbol: D_AQ_600A8E0 }
-
-D_AQ_600A970:
-  { type: GFX, offset: 0x600A970, symbol: D_AQ_600A970 }
-
-D_AQ_600AB10:
-  { type: GFX, offset: 0x600AB10, symbol: D_AQ_600AB10 }
-
-D_AQ_600AB68:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600AB68, symbol: D_AQ_600AB68 }
-
-D_AQ_600BD20:
-  { type: GFX, offset: 0x600BD20, symbol: D_AQ_600BD20 }
-
-D_AQ_600B518:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600B518, symbol: D_AQ_600B518 }
-
-aAqTunnel2DL:
-  { type: GFX, offset: 0x600BF80, symbol: aAqTunnel2DL }
-
-D_AQ_600C530:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x600C530, symbol: D_AQ_600C530, tlut: 0x600C930 }
-
-D_AQ_600C930:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x600C930, symbol: D_AQ_600C930 }
-
-D_AQ_600CB20:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x600CB20, symbol: D_AQ_600CB20, tlut: 0x600CF20 }
-
-D_AQ_600CF20:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 104, offset: 0x600CF20, symbol: D_AQ_600CF20 }
-
-D_AQ_600CFF0:
-  { type: GFX, offset: 0x600CFF0, symbol: D_AQ_600CFF0 }
-
-D_AQ_600D390:
-  { type: GFX, offset: 0x600D390, symbol: D_AQ_600D390 }
-
-D_AQ_600D4A0:
-  { type: GFX, offset: 0x600D4A0, symbol: D_AQ_600D4A0 }
-
-D_AQ_600D720:
-  { type: GFX, offset: 0x600D720, symbol: D_AQ_600D720 }
-
-D_AQ_600D810:
-  { type: GFX, offset: 0x600D810, symbol: D_AQ_600D810 }
-
-D_AQ_600D900:
-  { type: GFX, offset: 0x600D900, symbol: D_AQ_600D900 }
-
-D_AQ_600DB80:
-  { type: GFX, offset: 0x600DB80, symbol: D_AQ_600DB80 }
-
-D_AQ_600DF48:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x600DF48, symbol: D_AQ_600DF48 }
-
-D_AQ_600E150:
-  { type: GFX, offset: 0x600E150, symbol: D_AQ_600E150 }
-
-D_AQ_600E368:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600E368, symbol: D_AQ_600E368 }
-
-aAqWall1DL:
-  { type: GFX, offset: 0x600EE10, symbol: aAqWall1DL }
-
-aAqBump2DL:
-  { type: GFX, offset: 0x600EEF0, symbol: aAqBump2DL }
-
-D_AQ_600F030:
-  { type: GFX, offset: 0x600F030, symbol: D_AQ_600F030 }
-
-D_AQ_600F1A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600F1A0, symbol: D_AQ_600F1A0 }
-
-D_AQ_600F9A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600F9A0, symbol: D_AQ_600F9A0 }
-
-D_AQ_60101A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60101A0, symbol: D_AQ_60101A0 }
-
-D_AQ_60109A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60109A0, symbol: D_AQ_60109A0 }
-
-D_AQ_60111A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60111A0, symbol: D_AQ_60111A0 }
-
-D_AQ_60119A0:
-  { type: GFX, offset: 0x60119A0, symbol: D_AQ_60119A0 }
-
-D_AQ_6011A78:
-  { type: VTX, count: 38, offset: 0x6011A78, symbol: D_AQ_6011A78 }
-
-D_AQ_6011CD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6011CD8, symbol: D_AQ_6011CD8 }
-
-aAqTunnel1DL:
-  { type: GFX, offset: 0x6011EE0, symbol: aAqTunnel1DL }
-
-aAqRoofDL:
-  { type: GFX, offset: 0x60120F0, symbol: aAqRoofDL }
-
-D_AQ_60126A8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 64, offset: 0x60126A8, symbol: D_AQ_60126A8, tlut: 0x6012AA8 }
-
-D_AQ_6012AA8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x6012AA8, symbol: D_AQ_6012AA8 }
-
-D_AQ_6012C98:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6012C98, symbol: D_AQ_6012C98, tlut: 0x6012D98 }
-
-D_AQ_6012D98:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 136, offset: 0x6012D98, symbol: D_AQ_6012D98 }
-
-D_AQ_6012EA8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6012EA8, symbol: D_AQ_6012EA8, tlut: 0x60132A8 }
-
-D_AQ_60132A8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x60132A8, symbol: D_AQ_60132A8 }
-
-aAqFishGroupAnim:
-  { type: SF64:ANIM, offset: 0x60135E0, symbol: aAqFishGroupAnim }
-
-aAqFishGroupSkel1:
-  { type: SF64:SKELETON, offset: 0x60136CC, symbol: aAqFishGroupSkel1 }
-
-aAqFishGroupSkel2:
-  { type: SF64:SKELETON, offset: 0x60137CC, symbol: aAqFishGroupSkel2 }
-
-D_AQ_60137F0:
-  { type: GFX, offset: 0x60137F0, symbol: D_AQ_60137F0 }
-
-D_AQ_6013CC0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 32, offset: 0x6013CC0, symbol: D_AQ_6013CC0, tlut: 0x6013EC0 }
-
-D_AQ_6013EC0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 184, offset: 0x6013EC0, symbol: D_AQ_6013EC0 }
-
-D_AQ_6014030:
-  { type: GFX, offset: 0x6014030, symbol: D_AQ_6014030 }
-
-aAqStoneColumnAnim:
-  { type: SF64:ANIM, offset: 0x6014438, symbol: aAqStoneColumnAnim }
-
-aAqStoneColumnSkel:
-  { type: SF64:SKELETON, offset: 0x6014504, symbol: aAqStoneColumnSkel }
-
-D_AQ_6014520:
-  { type: GFX, offset: 0x6014520, symbol: D_AQ_6014520 }
-
-D_AQ_60148B0:
-  { type: GFX, offset: 0x60148B0, symbol: D_AQ_60148B0 }
-
-D_AQ_6014CD0:
-  { type: GFX, offset: 0x6014CD0, symbol: D_AQ_6014CD0 }
-
-D_AQ_6014E50:
-  { type: GFX, offset: 0x6014E50, symbol: D_AQ_6014E50 }
-
-aAqBoulderDL:
-  { type: GFX, offset: 0x6014FD0, symbol: aAqBoulderDL }
-
-D_AQ_6015430:
-  { type: GFX, offset: 0x6015430, symbol: D_AQ_6015430 }
-
-D_AQ_60154F8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x60154F8, symbol: D_AQ_60154F8, tlut: 0x60155F8 }
-
-D_AQ_60155F8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 152, offset: 0x60155F8, symbol: D_AQ_60155F8 }
-
-aAqArchDL:
-  { type: GFX, offset: 0x6015730, symbol: aAqArchDL }
-
-D_AQ_6015DD0:
-  { type: GFX, offset: 0x6015DD0, symbol: D_AQ_6015DD0 }
-
-D_AQ_6015FF0:
-  { type: GFX, offset: 0x6015FF0, symbol: D_AQ_6015FF0 }
-
-D_AQ_6017BD8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6017BD8, symbol: D_AQ_6017BD8, tlut: 0x6017CD8 }
-
-D_AQ_6017CD8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x6017CD8, symbol: D_AQ_6017CD8 }
-
-D_AQ_6018640:
-  { type: GFX, offset: 0x6018640, symbol: D_AQ_6018640 }
-
-D_AQ_6018878:
-  { type: VTX, count: 64, offset: 0x6018878, symbol: D_AQ_6018878 }
-
-D_AQ_6018C78:
-  { type: VTX, count: 64, offset: 0x6018C78, symbol: D_AQ_6018C78 }
-
-D_AQ_6019078:
-  { type: VTX, count: 28, offset: 0x6019078, symbol: D_AQ_6019078 }
-
-D_AQ_6019238:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6019238, symbol: D_AQ_6019238, tlut: 0x6019338 }
-
-D_AQ_6019338:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 200, offset: 0x6019338, symbol: D_AQ_6019338 }
-
-D_AQ_60194D0:
-  { type: GFX, offset: 0x60194D0, symbol: D_AQ_60194D0 }
-
-D_AQ_6019880:
-  { type: GFX, offset: 0x6019880, symbol: D_AQ_6019880 }
-
-D_AQ_6019C28:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6019C28, symbol: D_AQ_6019C28, tlut: 0x6019D28 }
-
-D_AQ_6019D28:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 168, offset: 0x6019D28, symbol: D_AQ_6019D28 }
-
-D_AQ_6019E80:
-  { type: GFX, offset: 0x6019E80, symbol: D_AQ_6019E80 }
-
-D_AQ_601A308:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x601A308, symbol: D_AQ_601A308, tlut: 0x601A708 }
-
-D_AQ_601A708:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x601A708, symbol: D_AQ_601A708 }
-
-D_AQ_601AE70:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x601AE70, symbol: D_AQ_601AE70, tlut: 0x601AF70 }
-
-D_AQ_601AF70:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x601AF70, symbol: D_AQ_601AF70 }
-
-D_AQ_601AFF0:
-  { type: GFX, offset: 0x601AFF0, symbol: D_AQ_601AFF0 }
-
-D_AQ_601B080:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x601C110, symbol: D_AQ_601C110 }
-
-D_AQ_601C080:
-  { type: GFX, offset: 0x601C080, symbol: D_AQ_601C080 }
-
-D_AQ_601C110:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x601B080, symbol: D_AQ_601B080 }
-
-D_AQ_601D110:
-  { type: GFX, offset: 0x601D110, symbol: D_AQ_601D110 }
-
-D_AQ_601DE50:
-  { type: SF64:ANIM, offset: 0x601DE50, symbol: D_AQ_601DE50 }
-
-aAqCoralReef2DL:
-  { type: GFX, offset: 0x601DE60, symbol: aAqCoralReef2DL }
-
-D_AQ_601E1F0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601E1F0, symbol: D_AQ_601E1F0 }
-
-D_AQ_601E9F0:
-  { type: GFX, offset: 0x601E9F0, symbol: D_AQ_601E9F0 }
-
-aAqCoralAnim:
-  { type: SF64:ANIM, offset: 0x601EC68, symbol: aAqCoralAnim }
-
-aAqCoralSkel:
-  { type: SF64:SKELETON, offset: 0x601EDB4, symbol: aAqCoralSkel }
-
-D_AQ_601EDE0:
-  { type: GFX, offset: 0x601EDE0, symbol: D_AQ_601EDE0 }
-
-D_AQ_601F2F0:
-  { type: GFX, offset: 0x601F2F0, symbol: D_AQ_601F2F0 }
-
-D_AQ_601F830:
-  { type: GFX, offset: 0x601F830, symbol: D_AQ_601F830 }
-
-D_AQ_601FD70:
-  { type: GFX, offset: 0x601FD70, symbol: D_AQ_601FD70 }
-
-aAqSeaweedAnim:
-  { type: SF64:ANIM, offset: 0x6020A40, symbol: aAqSeaweedAnim }
-
-aAqSeaweedSkel:
-  { type: SF64:SKELETON, offset: 0x6020C6C, symbol: aAqSeaweedSkel }
-
-D_AQ_6021058:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6021058, symbol: D_AQ_6021058 }
-
-D_AQ_6021858:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6021858, symbol: D_AQ_6021858, tlut: 0x6021C58 }
-
-D_AQ_6021C58:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x6021C58, symbol: D_AQ_6021C58 }
-
-aAqOysterAnim:
-  { type: SF64:ANIM, offset: 0x602201C, symbol: aAqOysterAnim }
-
-aAqOysterSkel:
-  { type: SF64:SKELETON, offset: 0x60220E8, symbol: aAqOysterSkel }
-
-D_AQ_6022110:
-  { type: GFX, offset: 0x6022110, symbol: D_AQ_6022110 }
-
-D_AQ_6022198:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6022198, symbol: D_AQ_6022198, tlut: 0x6022598 }
-
-D_AQ_6022598:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x6022598, symbol: D_AQ_6022598 }
-
-D_AQ_6022788:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6022788, symbol: D_AQ_6022788, tlut: 0x6022888 }
-
-D_AQ_6022888:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 152, offset: 0x6022888, symbol: D_AQ_6022888 }
-
-D_AQ_60229B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60229B8, symbol: D_AQ_60229B8 }
-
-aAqCoralReef1DL:
-  { type: GFX, offset: 0x60231C0, symbol: aAqCoralReef1DL }
-
-aAqJellyfishAnim:
-  { type: SF64:ANIM, offset: 0x6023780, symbol: aAqJellyfishAnim }
-
-aAqJellyfishSkel:
-  { type: SF64:SKELETON, offset: 0x602390C, symbol: aAqJellyfishSkel }
-
-D_AQ_6023940:
-  { type: GFX, offset: 0x6023940, symbol: D_AQ_6023940 }
-
-D_AQ_6023B80:
-  { type: GFX, offset: 0x6023B80, symbol: D_AQ_6023B80 }
-
-D_AQ_6023D70:
-  { type: GFX, offset: 0x6023D70, symbol: D_AQ_6023D70 }
-
-D_AQ_6023EB0:
-  { type: GFX, offset: 0x6023EB0, symbol: D_AQ_6023EB0 }
-
-D_AQ_6023F38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6023F38, symbol: D_AQ_6023F38 }
-
-D_AQ_6024738:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 16, height: 16, offset: 0x6024738, symbol: D_AQ_6024738 }
-
-D_AQ_6024938:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x6024938, symbol: D_AQ_6024938 }
-
-D_AQ_60249C0:
-  { type: GFX, offset: 0x60249C0, symbol: D_AQ_60249C0 }
-
-aAqPearlDL:
-  { type: GFX, offset: 0x6024A50, symbol: aAqPearlDL }
-
-D_AQ_6024F80:
-  { type: SF64:ANIM, offset: 0x6024F80, symbol: D_AQ_6024F80 }
-
-aAqGaroaSkel:
-  { type: SF64:SKELETON, offset: 0x602512C, symbol: aAqGaroaSkel }
-
-aAqSpindlyFishAnim:
-  { type: SF64:ANIM, offset: 0x60260EC, symbol: aAqSpindlyFishAnim }
-
-aAqSpindlyFishSkel:
-  { type: SF64:SKELETON, offset: 0x60263F8, symbol: aAqSpindlyFishSkel }
-
-D_AQ_6026460:
-  { type: GFX, offset: 0x6026460, symbol: D_AQ_6026460 }
-
-D_AQ_60266B0:
-  { type: GFX, offset: 0x60266B0, symbol: D_AQ_60266B0 }
-
-D_AQ_6026950:
-  { type: GFX, offset: 0x6026950, symbol: D_AQ_6026950 }
-
-D_AQ_6026BF0:
-  { type: GFX, offset: 0x6026BF0, symbol: D_AQ_6026BF0 }
-
-D_AQ_6026C80:
-  { type: GFX, offset: 0x6026C80, symbol: D_AQ_6026C80 }
-
-D_AQ_6026D10:
-  { type: GFX, offset: 0x6026D10, symbol: D_AQ_6026D10 }
-
-D_AQ_6026DA0:
-  { type: GFX, offset: 0x6026DA0, symbol: D_AQ_6026DA0 }
-
-D_AQ_6026E30:
-  { type: GFX, offset: 0x6026E30, symbol: D_AQ_6026E30 }
-
-D_AQ_6026EC0:
-  { type: GFX, offset: 0x6026EC0, symbol: D_AQ_6026EC0 }
-
-D_AQ_6026F60:
-  { type: GFX, offset: 0x6026F60, symbol: D_AQ_6026F60 }
-
-D_AQ_6027330:
-  { type: GFX, offset: 0x6027330, symbol: D_AQ_6027330 }
-
-D_AQ_60273C0:
-  { type: GFX, offset: 0x60273C0, symbol: D_AQ_60273C0 }
-
-D_AQ_6027460:
-  { type: GFX, offset: 0x6027460, symbol: D_AQ_6027460 }
-
-D_AQ_60276F0:
-  { type: GFX, offset: 0x60276F0, symbol: D_AQ_60276F0 }
-
-D_AQ_6027810:
-  { type: GFX, offset: 0x6027810, symbol: D_AQ_6027810 }
-
-D_AQ_6027930:
-  { type: GFX, offset: 0x6027930, symbol: D_AQ_6027930 }
-
-D_AQ_6027C90:
-  { type: GFX, offset: 0x6027C90, symbol: D_AQ_6027C90 }
-
-D_AQ_6027FA0:
-  { type: GFX, offset: 0x6027FA0, symbol: D_AQ_6027FA0 }
-
-D_AQ_6028240:
-  { type: GFX, offset: 0x6028240, symbol: D_AQ_6028240 }
-
-D_AQ_6028550:
-  { type: GFX, offset: 0x6028550, symbol: D_AQ_6028550 }
-
-D_AQ_60287F0:
-  { type: GFX, offset: 0x60287F0, symbol: D_AQ_60287F0 }
-
-D_AQ_6028910:
-  { type: GFX, offset: 0x6028910, symbol: D_AQ_6028910 }
-
-D_AQ_6028A80:
-  { type: GFX, offset: 0x6028A80, symbol: D_AQ_6028A80 }
-
-D_AQ_6028F50:
-  { type: GFX, offset: 0x6028F50, symbol: D_AQ_6028F50 }
-
-D_AQ_60290C0:
-  { type: GFX, offset: 0x60290C0, symbol: D_AQ_60290C0 }
-
-D_AQ_60291B0:
-  { type: GFX, offset: 0x60291B0, symbol: D_AQ_60291B0 }
-
-D_AQ_6029240:
-  { type: GFX, offset: 0x6029240, symbol: D_AQ_6029240 }
-
-D_AQ_6029330:
-  { type: GFX, offset: 0x6029330, symbol: D_AQ_6029330 }
-
-D_AQ_60294A0:
-  { type: GFX, offset: 0x60294A0, symbol: D_AQ_60294A0 }
-
-D_AQ_6029530:
-  { type: GFX, offset: 0x6029530, symbol: D_AQ_6029530 }
-
-D_AQ_60296A0:
-  { type: GFX, offset: 0x60296A0, symbol: D_AQ_60296A0 }
-
-D_AQ_6029790:
-  { type: GFX, offset: 0x6029790, symbol: D_AQ_6029790 }
-
-D_AQ_6029900:
-  { type: GFX, offset: 0x6029900, symbol: D_AQ_6029900 }
-
-D_AQ_602AC28:
-  { type: SF64:ANIM, offset: 0x602AC28, symbol: D_AQ_602AC28 }
-
-D_AQ_602AC40:
-  { type: GFX, offset: 0x602AC40, symbol: D_AQ_602AC40 }
-
-D_AQ_602ACC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602ACC0, symbol: D_AQ_602ACC0 }
-
-aAqRockDL:
-  { type: GFX, offset: 0x602B4C0, symbol: aAqRockDL }
-
-D_AQ_602B9D4: # unused and possibly broken
- { type: SF64:ANIM, offset: 0x602B9D4, symbol: D_AQ_602B9D4 }
-
-D_AQ_602BD60:
-  { type: SF64:SKELETON, offset: 0x602BD60, symbol: D_AQ_602BD60 }
-
-D_AQ_602BF88:
-  { type: SF64:ANIM, offset: 0x602BF88, symbol: D_AQ_602BF88 }
-
-D_AQ_602C014:
-  { type: SF64:SKELETON, offset: 0x602C014, symbol: D_AQ_602C014 }
-
-D_AQ_602C030:
-  { type: GFX, offset: 0x602C030, symbol: D_AQ_602C030 }
-
-D_AQ_602C088:
-  { type: GFX, offset: 0x602C088, symbol: D_AQ_602C088 }
-
-D_AQ_602C160:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602C160, symbol: D_AQ_602C160 }
-
-D_AQ_602C960:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602C960, symbol: D_AQ_602C960 }
-
-D_AQ_602DA28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DA28, symbol: D_AQ_602DA28 }
-
-D_AQ_602DC28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DC28, symbol: D_AQ_602DC28 }
-
-D_AQ_602DE28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DE28, symbol: D_AQ_602DE28 }
-
-D_AQ_602E028:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602E028, symbol: D_AQ_602E028 }
-
-D_AQ_602E540:
-  { type: SF64:ENVIRONMENT, offset: 0x602E540, symbol: D_AQ_602E540 }
-
-D_AQ_602E584:
-  { type: SF64:ENVIRONMENT, offset: 0x602E584, symbol: D_AQ_602E584 }
-
-D_AQ_602E5C8:
-  { type: SF64:OBJECT_INIT, offset: 0x602E5C8, symbol: D_AQ_602E5C8 }
-
-D_AQ_60308B8:
-  { type: SF64:SCRIPT, offset: 0x60308B8, symbol: D_AQ_60308B8 }
-
-aBoss301Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030B10, symbol: aBoss301Hitbox }
-
-aAqShellHitbox:
-  { type: SF64:HITBOX, offset: 0x6030B14, symbol: aAqShellHitbox }
-
-aAqStarfishHitbox:
-  { type: SF64:HITBOX, offset: 0x6030B30, symbol: aAqStarfishHitbox }
-
-aAqOysterEvHitbox:
-  { type: SF64:HITBOX, offset: 0x6030B4C, symbol: aAqOysterEvHitbox }
-
-D_AQ_6030B68:
-  { type: SF64:HITBOX, offset: 0x6030B68, symbol: D_AQ_6030B68 }
-
-D_AQ_6030BAC:
-  { type: SF64:HITBOX, offset: 0x6030BAC, symbol: D_AQ_6030BAC }
-
-aAqActor188Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030BE0, symbol: aAqActor188Hitbox }
-
-aAqActor255Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030BFC, symbol: aAqActor255Hitbox }
-
-aAqActor256Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030C18, symbol: aAqActor256Hitbox }
-
-aAqActor257Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030C44, symbol: aAqActor257Hitbox }
-
-aAqCoralReef1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030C60, symbol: aAqCoralReef1Hitbox }
-
-aAqTunnel1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030C7C, symbol: aAqTunnel1Hitbox }
-
-aAqStoneColumnHitbox:
-  { type: SF64:HITBOX, offset: 0x6030D20, symbol: aAqStoneColumnHitbox }
-
-D_AQ_6030D3C:
-  { type: SF64:HITBOX, offset: 0x6030D3C, symbol: D_AQ_6030D3C }
-
-D_AQ_6030D58:
-  { type: SF64:HITBOX, offset: 0x6030D58, symbol: D_AQ_6030D58 }
-
-aAqArchHitbox:
-  { type: SF64:HITBOX, offset: 0x6030D74, symbol: aAqArchHitbox }
-
-aAqCoralReef2Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030DF8, symbol: aAqCoralReef2Hitbox }
-
-aAqRockHitbox:
-  { type: SF64:HITBOX, offset: 0x6030E14, symbol: aAqRockHitbox }
-
-aAqWall1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030E30, symbol: aAqWall1Hitbox }
-
-aAqRoofHitbox:
-  { type: SF64:HITBOX, offset: 0x6030E4C, symbol: aAqRoofHitbox }
-
-aAqTunnel2Hitbox:
-  { type: SF64:HITBOX, offset: 0x6030E68, symbol: aAqTunnel2Hitbox }
-
-aAqBacoonHitbox:
-  { type: SF64:HITBOX, offset: 0x6030F74, symbol: aAqBacoonHitbox }
-
-aAqAnglerFishHitbox:
-  { type: SF64:HITBOX, offset: 0x6031398, symbol: aAqAnglerFishHitbox }
-
-aAqGaroaHitbox:
-  { type: SF64:HITBOX, offset: 0x60313CC, symbol: aAqGaroaHitbox }
-
-aAqSculpinHitbox:
-  { type: SF64:HITBOX, offset: 0x6031400, symbol: aAqSculpinHitbox }
-
-aAqSpindlyFishHitbox:
-  { type: SF64:HITBOX, offset: 0x603144C, symbol: aAqSpindlyFishHitbox }
-
-aAqSquidHitbox:
-  { type: SF64:HITBOX, offset: 0x6031480, symbol: aAqSquidHitbox }
-
-D_AQ_60314AC:
-  { type: SF64:HITBOX, offset: 0x60314AC, symbol: D_AQ_60314AC }
-
-aAqOysterHitbox:
-  { type: SF64:HITBOX, offset: 0x60314C8, symbol: aAqOysterHitbox }
-
-D_AQ_60314E4:
-  { type: SF64:HITBOX, offset: 0x60314E4, symbol: D_AQ_60314E4 }
-
-aAqBoulderHitbox:
-  { type: SF64:HITBOX, offset: 0x6031500, symbol: aAqBoulderHitbox }
-
-D_AQ_603151C:
-  { type: SF64:HITBOX, offset: 0x603151C, symbol: D_AQ_603151C }
-
-aAqCoralHitbox:
-  { type: SF64:HITBOX, offset: 0x6031538, symbol: aAqCoralHitbox }
-
-aAqJellyfishHitbox:
-  { type: SF64:HITBOX, offset: 0x6031554, symbol: aAqJellyfishHitbox }
-
-aAqFishGroupHitbox:
-  { type: SF64:HITBOX, offset: 0x6031570, symbol: aAqFishGroupHitbox }
-
-D_AQ_603158C:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x603158C, symbol: D_AQ_603158C }
-
-D_AQ_6031D90:
-  { type: VTX, count: 34, offset: 0x6031D90, symbol: D_AQ_6031D90 }
-
-D_AQ_6031FB0:
-  { type: SF64:TRIANGLE, count: 8, offset: 0x6031FB0, symbol: D_AQ_6031FB0, mesh_symbol: D_AQ_OFFSET, mesh_count: 2}
-
-D_AQ_60320B8:
-  { type: SF64:TRIANGLE, count: 30, offset: 0x60320B8, symbol: D_AQ_60320B8, mesh_symbol: D_AQ_OFFSET }
-
-D_AQ_6032388:
-  { type: SF64:TRIANGLE, count: 28, offset: 0x6032388, symbol: D_AQ_6032388, mesh_symbol: D_AQ_OFFSET }
diff --git a/assets/yaml/jp/rev0/ast_area_6.yaml b/assets/yaml/jp/rev0/ast_area_6.yaml
deleted file mode 100644
index 27e857a8b..000000000
--- a/assets/yaml/jp/rev0/ast_area_6.yaml
+++ /dev/null
@@ -1,253 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xA5B8F0]
-  header:
-    code:
-      - '#include "assets/ast_area_6.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-aA6TitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 104, height: 28, offset: 0x6000000, symbol: aA6TitleCardTex }
-
-D_A6_6000B60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06000B60, symbol: D_A6_6000B60 }
-
-D_A6_6001A80:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06001A80, symbol: D_A6_6001A80 }
-
-D_A6_60029A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x060029A0, symbol: D_A6_60029A0 }
-
-D_A6_60038C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x060038C0, symbol: D_A6_60038C0 }
-
-D_A6_60047E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x060047E0, symbol: D_A6_60047E0 }
-
-D_A6_6005700:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06005700, symbol: D_A6_6005700 }
-
-D_A6_6006620:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 48, height: 44, offset: 0x06006620, symbol: D_A6_6006620, tlut: 0x06006A40 }
-
-D_A6_6006A40:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 4, offset: 0x6006A40, symbol: D_A6_6006A40}
-
-D_A6_6008918:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06008918, symbol: D_A6_6008918 }
-
-D_A6_6008B18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06008B18, symbol: D_A6_6008B18 }
-
-D_A6_6008D18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06008D18, symbol: D_A6_6008D18 }
-
-D_A6_6008F18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06008F18, symbol: D_A6_6008F18 }
-
-D_A6_6009718:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x06009718, symbol: D_A6_6009718 }
-
-D_A6_6009B18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06009B18, symbol: D_A6_6009B18 }
-
-aA6UmbraStationDL:
-  { type: GFX, offset: 0x600E0C0, symbol: aA6UmbraStationDL }
-
-D_A6_600EBE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x0600EBE8, symbol: D_A6_600EBE8 }
-
-D_A6_600EFE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0600EFE8, symbol: D_A6_600EFE8 }
-
-D_A6_600F1F0:
-  { type: GFX, offset: 0x600F1F0, symbol: D_A6_600F1F0 }
-
-D_A6_600F850:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600F850, symbol: D_A6_600F850 }
-
-D_A6_6010A88:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06010A88, symbol: D_A6_6010A88 }
-
-D_A6_6011288:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x06011288, symbol: D_A6_6011288 }
-
-D_A6_6011688:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06011688, symbol: D_A6_6011688 }
-
-D_A6_6011888:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x06011888, symbol: D_A6_6011888 }
-
-D_A6_6011910:
-  { type: GFX, offset: 0x6011910, symbol: D_A6_6011910 }
-
-D_A6_6011D48:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06011D48, symbol: D_A6_6011D48 }
-
-D_A6_6012550:
-  { type: GFX, offset: 0x6012550, symbol: D_A6_6012550 }
-
-D_A6_6012840:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06012840, symbol: D_A6_6012840 }
-
-aA6HarlockFrigateDL:
-  { type: GFX, offset: 0x6012A40, symbol: aA6HarlockFrigateDL }
-
-D_A6_6013CD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06013CD8, symbol: D_A6_6013CD8 }
-
-D_A6_60144D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060144D8, symbol: D_A6_60144D8 }
-
-D_A6_6014CD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06014CD8, symbol: D_A6_6014CD8 }
-
-D_A6_60154D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060154D8, symbol: D_A6_60154D8 }
-
-D_A6_6015CD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06015CD8, symbol: D_A6_6015CD8 }
-
-D_A6_6015EE0:
-  { type: GFX, offset: 0x6015EE0, symbol: D_A6_6015EE0 }
-
-aA6ZeramClassCruiserDL:
-  { type: GFX, offset: 0x6016190, symbol: aA6ZeramClassCruiserDL }
-
-D_A6_6017120:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06017120, symbol: D_A6_6017120 }
-
-D_A6_6017920:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06017920, symbol: D_A6_6017920 }
-
-D_A6_6017B20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06017B20, symbol: D_A6_6017B20 }
-
-D_A6_6017D20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06017D20, symbol: D_A6_6017D20 }
-
-D_A6_6017F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06017F20, symbol: D_A6_6017F20 }
-
-D_A6_6018720:
-  { type: GFX, offset: 0x6018720, symbol: D_A6_6018720 }
-
-D_A6_60187F8:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x60187F8, symbol: D_A6_60187F8, tlut: 0x6018878}
-
-D_A6_6018878:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x6018878, symbol: D_A6_6018878}
-
-D_A6_6018994:
-  { type: SF64:ANIM, offset: 0x6018994, symbol: D_A6_6018994 }
-
-D_A6_6018BA0:
-  { type: SF64:SKELETON, offset: 0x6018BA0, symbol: D_A6_6018BA0 }
-
-aA6NinjinMissileDL:
-  { type: GFX, offset: 0x6018BF0, symbol: aA6NinjinMissileDL }
-
-D_A6_6019130:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019130, symbol: D_A6_6019130 }
-
-D_A6_6019330:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019330, symbol: D_A6_6019330 }
-
-D_A6_6019530:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019530, symbol: D_A6_6019530 }
-
-aA6RocketDL:
-  { type: GFX, offset: 0x6019730, symbol: aA6RocketDL }
-
-D_A6_6019B20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019B20, symbol: D_A6_6019B20 }
-
-D_A6_6019D20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019D20, symbol: D_A6_6019D20 }
-
-D_A6_6019F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019F20, symbol: D_A6_6019F20 }
-
-aA6SpaceMineDL:
-  { type: GFX, offset: 0x601A120, symbol: aA6SpaceMineDL }
-
-D_A6_601A220:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601A220, symbol: D_A6_601A220 }
-
-D_A6_601AA20:
-  { type: GFX, offset: 0x601AA20, symbol: D_A6_601AA20 }
-
-D_A6_601AAA8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601AAA8, symbol: D_A6_601AAA8 }
-
-D_A6_601B2B0:
-  { type: GFX, offset: 0x601B2B0, symbol: D_A6_601B2B0 }
-
-D_A6_601B338:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601B338, symbol: D_A6_601B338 }
-
-D_A6_601BB40:
-  { type: GFX, offset: 0x601BB40, symbol: D_A6_601BB40 }
-
-D_A6_601BF20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601BF20, symbol: D_A6_601BF20 }
-
-D_A6_601CF20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601CF20, symbol: D_A6_601CF20 }
-
-D_A6_601DF20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601DF20, symbol: D_A6_601DF20 }
-
-D_A6_601EF20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601EF20, symbol: D_A6_601EF20 }
-
-D_A6_601FF20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601FF20, symbol: D_A6_601FF20 }
-
-D_A6_6020F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06020F20, symbol: D_A6_6020F20 }
-
-D_A6_6021F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06021F20, symbol: D_A6_6021F20 }
-
-D_A6_6022F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06022F20, symbol: D_A6_6022F20 }
-
-D_A6_6023F20:
-  { type: SF64:ENVIRONMENT, offset: 0x6023F20, symbol: D_A6_6023F20}
-
-D_A6_6023F64:
-  { type: SF64:OBJECT_INIT, offset: 0x6023F64, symbol: D_A6_6023F64}
-
-D_A6_6027F50:
-  { type: SF64:SCRIPT, offset: 0x6027F50, symbol: D_A6_6027F50}
-
-aA6UmbraStationHitbox:
-  { type: SF64:HITBOX, offset: 0x60280E0, symbol: aA6UmbraStationHitbox }
-
-aA6HarlockFrigateHitbox:
-  { type: SF64:HITBOX, offset: 0x6028254, symbol: aA6HarlockFrigateHitbox }
-
-aA6ZeramClassCruiserHitbox:
-  { type: SF64:HITBOX, offset: 0x60282A0, symbol: aA6ZeramClassCruiserHitbox }
-
-aA6GorgonHitbox:
-  { type: SF64:HITBOX, offset: 0x6028454, symbol: aA6GorgonHitbox }
-
-D_A6_6028578:
-  { type: SF64:HITBOX, offset: 0x6028578, symbol: D_A6_6028578 }
-
-D_A6_6028760:
-  { type: SF64:ENVIRONMENT, offset: 0x6028760, symbol: D_A6_6028760}
-
-D_A6_60287A4:
-  { type: SF64:OBJECT_INIT, offset: 0x60287A4, symbol: D_A6_60287A4}
-
-D_A6_60289FC:
-  { type: SF64:SCRIPT, offset: 0x60289FC, symbol: D_A6_60289FC}
diff --git a/assets/yaml/jp/rev0/ast_arwing.yaml b/assets/yaml/jp/rev0/ast_arwing.yaml
deleted file mode 100644
index 69cec0e5d..000000000
--- a/assets/yaml/jp/rev0/ast_arwing.yaml
+++ /dev/null
@@ -1,192 +0,0 @@
-:config:
-  segments:
-    - [0x3, 0x88F730]
-  header:
-    code:
-      - '#include "assets/ast_arwing.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aArwingLifeIconTex:
-  { type: TEXTURE, format: CI4, offset: 0x3000000, width: 16, height: 16, ctype: u8, tlut: 0x3000080, symbol: aArwingLifeIconTex }
-
-aArwingLifeIconTLUT:
-  { type: TEXTURE, format: TLUT, offset: 0x3000080, colors: 8, ctype: u16, symbol: aArwingLifeIconTLUT }
-
-aAwFoxHeadDL:
-  { type: GFX, offset: 0x3000090, symbol: aAwFoxHeadDL }
-
-aAwJamesHeadDL:
-  { type: GFX, offset: 0x3001C90, symbol: aAwJamesHeadDL }
-
-D_arwing_3003960:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003960, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003960 }
-
-D_arwing_30039E0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30039E0, width: 8, height: 8, ctype: u16, symbol: D_arwing_30039E0 }
-
-D_arwing_3003A60:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003A60, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003A60 }
-
-D_arwing_3003AE0:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003AE0, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003AE0 }
-
-D_arwing_3003B60:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003B60, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003B60 }
-
-D_arwing_3003BE0:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003BE0, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003BE0 }
-
-D_arwing_3003C60:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003C60, width: 8, height: 8, ctype: u16, symbol: D_arwing_3003C60 }
-
-aAwPeppyHeadDL:
-  { type: GFX, offset: 0x3003CE0, symbol: aAwPeppyHeadDL }
-
-aAwSlippyHeadDL:
-  { type: GFX, offset: 0x3005AB0, symbol: aAwSlippyHeadDL }
-
-D_arwing_30074D0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30074D0, width: 8, height: 8, ctype: u16, symbol: D_arwing_30074D0 }
-
-D_arwing_3007550:
-  { type: TEXTURE, format: RGBA16, offset: 0x3007550, width: 8, height: 8, ctype: u16, symbol: D_arwing_3007550 }
-
-D_arwing_30075D0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30075D0, width: 8, height: 8, ctype: u16, symbol: D_arwing_30075D0 }
-
-aArwingItemLasersDL:
-  { type: GFX, offset: 0x3007650, symbol: aArwingItemLasersDL }
-
-ast_arwing_seg3_vtx_7A20:
-  { type: VTX, offset: 0x3007A20, count: 244, symbol: ast_arwing_seg3_vtx_7A20 }
-
-D_arwing_3008960:
-  { type: TEXTURE, format: RGBA16, offset: 0x3008960, width: 64, height: 32, ctype: u16, symbol: D_arwing_3008960 }
-
-D_arwing_3009960:
-  { type: TEXTURE, format: RGBA16, offset: 0x3009960, width: 16, height: 16, ctype: u16, symbol: D_arwing_3009960 }
-
-aAwBodyDL:
-  { type: GFX, offset: 0x3009B60, symbol: aAwBodyDL }
-
-D_arwing_300AC48:
-  { type: TEXTURE, format: RGBA16, offset: 0x300AC48, width: 32, height: 32, ctype: u16, symbol: D_arwing_300AC48 }
-
-D_arwing_300B448:
-  { type: TEXTURE, format: RGBA16, offset: 0x300B448, width: 32, height: 32, ctype: u16, symbol: D_arwing_300B448 }
-
-D_arwing_300BC48:
-  { type: TEXTURE, format: RGBA16, offset: 0x300BC48, width: 32, height: 32, ctype: u16, symbol: D_arwing_300BC48 }
-
-D_arwing_300C448:
-  { type: TEXTURE, format: RGBA16, offset: 0x300C448, width: 32, height: 32, ctype: u16, symbol: D_arwing_300C448 }
-
-D_arwing_300CC48:
-  { type: TEXTURE, format: RGBA16, offset: 0x300CC48, width: 32, height: 32, ctype: u16, symbol: D_arwing_300CC48 }
-
-D_arwing_300D448:
-  { type: TEXTURE, format: RGBA16, offset: 0x300D448, width: 32, height: 32, ctype: u16, symbol: D_arwing_300D448 }
-
-D_arwing_300DC48:
-  { type: TEXTURE, format: RGBA16, offset: 0x300DC48, width: 32, height: 32, ctype: u16, symbol: D_arwing_300DC48 }
-
-D_arwing_300E448:
-  { type: TEXTURE, format: RGBA16, offset: 0x300E448, width: 32, height: 32, ctype: u16, symbol: D_arwing_300E448 }
-
-D_arwing_300EC48:
-  { type: TEXTURE, format: RGBA16, offset: 0x300EC48, width: 32, height: 32, ctype: u16, symbol: D_arwing_300EC48 }
-
-D_arwing_300F448:
-  { type: TEXTURE, format: RGBA16, offset: 0x300F448, width: 64, height: 32, ctype: u16, symbol: D_arwing_300F448 }
-
-D_arwing_3010448:
-  { type: TEXTURE, format: RGBA16, offset: 0x3010448, width: 64, height: 32, ctype: u16, symbol: D_arwing_3010448 }
-
-aAwLaserGun1DL:
-  { type: GFX, offset: 0x3011720, symbol: aAwLaserGun1DL }
-
-D_arwing_30119F0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30119F0, width: 32, height: 32, ctype: u16, symbol: D_arwing_30119F0 }
-
-D_arwing_30121F0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30121F0, width: 32, height: 32, ctype: u16, symbol: D_arwing_30121F0 }
-
-D_arwing_30129F0:
-  { type: TEXTURE, format: RGBA16, offset: 0x30129F0, width: 32, height: 32, ctype: u16, symbol: D_arwing_30129F0 }
-
-aAwCockpitViewDL:
-  { type: GFX, offset: 0x30131F0, symbol: aAwCockpitViewDL }
-
-D_arwing_30137E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x30137E8, width: 32, height: 32, ctype: u16, symbol: D_arwing_30137E8 }
-
-D_arwing_3013FE8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3013FE8, width: 32, height: 32, ctype: u16, symbol: D_arwing_3013FE8 }
-
-D_arwing_30147E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x30147E8, width: 16, height: 32, ctype: u16, symbol: D_arwing_30147E8 }
-
-aAwRightWingBrokenDL:
-  { type: GFX, offset: 0x3014BF0, symbol: aAwRightWingBrokenDL }
-
-D_arwing_3014F20:
-  { type: TEXTURE, format: RGBA16, offset: 0x3014F20, width: 16, height: 16, ctype: u16, symbol: D_arwing_3014F20 }
-
-aAwLeftWingBrokenDL:
-  { type: GFX, offset: 0x3015120, symbol: aAwLeftWingBrokenDL }
-
-aAwFlap1DL:
-  { type: GFX, offset: 0x30155E0, symbol: aAwFlap1DL}
-
-D_arwing_3015AF4:
-  { type: SF64:ANIM, offset: 0x3015AF4, symbol: D_arwing_3015AF4 }
-
-D_arwing_3015C28:
-  { type: SF64:ANIM, offset: 0x3015C28, symbol: D_arwing_3015C28 }
-
-D_arwing_3015D68:
-  { type: SF64:ANIM, offset: 0x3015D68, symbol: D_arwing_3015D68 }
-
-aAwRightWingDL:
-  { type: GFX, offset: 0x3015D80, symbol: aAwRightWingDL }
-
-D_arwing_30163C4:
-  { type: SF64:ANIM, offset: 0x30163C4, symbol: D_arwing_30163C4 }
-
-D_arwing_3016610:
-  { type: SF64:SKELETON, offset: 0x3016610, symbol: D_arwing_3016610 }
-
-aAwLeftWingDL:
-  { type: GFX, offset: 0x3016660, symbol: aAwLeftWingDL}
-
-D_arwing_3016B30:
-  { type: GFX, offset: 0x3016B30, symbol: D_arwing_3016B30 }
-
-D_arwing_3016BB8:
-  { type: TEXTURE, format: IA8, offset: 0x3016BB8, width: 16, height: 16, ctype: u8, symbol: D_arwing_3016BB8 }
-
-aAwFalcoHeadDL:
-  { type: GFX, offset: 0x3016CC0, symbol: aAwFalcoHeadDL }
-
-D_arwing_30182C8:
-  { type: TEXTURE, format: RGBA16, offset: 0x30182C8, width: 8, height: 8, ctype: u16, symbol: D_arwing_30182C8 }
-
-D_arwing_3018348:
-  { type: TEXTURE, format: RGBA16, offset: 0x3018348, width: 8, height: 8, ctype: u16, symbol: D_arwing_3018348 }
-
-D_arwing_30183D0:
-  { type: GFX, offset: 0x30183D0, symbol: D_arwing_30183D0 }
-
-aWindshieldClouldReflextionTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x30184D8, width: 32, height: 32, ctype: u16, symbol: aWindshieldClouldReflextionTex }
-
-D_arwing_3018CD8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3018CD8, width: 64, height: 16, ctype: u16, symbol: D_arwing_3018CD8 }
-
-D_arwing_30194E0:
-  { type: GFX, offset: 0x30194E0, symbol: D_arwing_30194E0 }
-
-D_arwing_30195E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x30195E8, width: 32, height: 32, ctype: u16, symbol: D_arwing_30195E8 }
diff --git a/assets/yaml/jp/rev0/ast_bg_planet.yaml b/assets/yaml/jp/rev0/ast_bg_planet.yaml
deleted file mode 100644
index 46aaff6b6..000000000
--- a/assets/yaml/jp/rev0/ast_bg_planet.yaml
+++ /dev/null
@@ -1,129 +0,0 @@
-:config:
-  segments:
-    - [0x02, 0x87DBD0]
-  header:
-    code:
-      - '#include "assets/ast_bg_planet.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_BG_PLANET_2000000:
-  { type: GFX, offset: 0x2000000, symbol: D_BG_PLANET_2000000 }
-
-D_BG_PLANET_2000088:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x2000088, symbol: D_BG_PLANET_2000088 }
-
-D_BG_PLANET_2001090:
-  { type: GFX, offset: 0x2001090, symbol: D_BG_PLANET_2001090 }
-
-D_BG_PLANET_2001118:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02001118, symbol: D_BG_PLANET_2001118 }
-
-D_BG_PLANET_2002120:
-  { type: GFX, offset: 0x2002120, symbol: D_BG_PLANET_2002120 }
-
-D_BG_PLANET_20021A8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x020021A8, symbol: D_BG_PLANET_20021A8 }
-
-D_BG_PLANET_20031B0:
-  { type: GFX, offset: 0x20031B0, symbol: D_BG_PLANET_20031B0 }
-
-D_BG_PLANET_2003238:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02003238, symbol: D_BG_PLANET_2003238 }
-
-D_BG_PLANET_2004240:
-  { type: GFX, offset: 0x2004240, symbol: D_BG_PLANET_2004240 }
-
-D_BG_PLANET_20042C8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x020042C8, symbol: D_BG_PLANET_20042C8 }
-
-D_BG_PLANET_20052D0:
-  { type: GFX, offset: 0x20052D0, symbol: D_BG_PLANET_20052D0 }
-
-D_BG_PLANET_2005358:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02005358, symbol: D_BG_PLANET_2005358 }
-
-D_BG_PLANET_2006360:
-  { type: GFX, offset: 0x2006360, symbol: D_BG_PLANET_2006360 }
-
-D_BG_PLANET_20063E8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x020063E8, symbol: D_BG_PLANET_20063E8 }
-
-D_BG_PLANET_20073F0:
-  { type: GFX, offset: 0x20073F0, symbol: D_BG_PLANET_20073F0 }
-
-D_BG_PLANET_2007478:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02007478, symbol: D_BG_PLANET_2007478 }
-
-D_BG_PLANET_2008480:
-  { type: GFX, offset: 0x2008480, symbol: D_BG_PLANET_2008480 }
-
-D_BG_PLANET_2008508:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02008508, symbol: D_BG_PLANET_2008508 }
-
-D_BG_PLANET_2009510:
-  { type: GFX, offset: 0x2009510, symbol: D_BG_PLANET_2009510 }
-
-D_BG_PLANET_2009598:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x02009598, symbol: D_BG_PLANET_2009598 }
-
-D_BG_PLANET_200A5A0:
-  { type: GFX, offset: 0x200A5A0, symbol: D_BG_PLANET_200A5A0 }
-
-D_BG_PLANET_200A628:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x0200A628, symbol: D_BG_PLANET_200A628 }
-
-D_BG_PLANET_200B630:
-  { type: GFX, offset: 0x200B630, symbol: D_BG_PLANET_200B630 }
-
-D_BG_PLANET_200B6B8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x0200B6B8, symbol: D_BG_PLANET_200B6B8 }
-
-D_BG_PLANET_200C6C0:
-  { type: GFX, offset: 0x200C6C0, symbol: D_BG_PLANET_200C6C0 }
-
-D_BG_PLANET_200C748:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x0200C748, symbol: D_BG_PLANET_200C748 }
-
-D_BG_PLANET_200D750:
-  { type: GFX, offset: 0x200D750, symbol: D_BG_PLANET_200D750 }
-
-D_BG_PLANET_200D7E8:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 64, height: 32, offset: 0x0200D7E8, symbol: D_BG_PLANET_200D7E8 }
-
-D_BG_PLANET_200E7F0:
-  { type: GFX, offset: 0x200E7F0, symbol: D_BG_PLANET_200E7F0 }
-
-D_BG_PLANET_200E878:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x0200E878, symbol: D_BG_PLANET_200E878 }
-
-D_BG_PLANET_200F080:
-  { type: GFX, offset: 0x200F080, symbol: D_BG_PLANET_200F080 }
-
-D_BG_PLANET_200F108:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x0200F108, symbol: D_BG_PLANET_200F108 }
-
-D_BG_PLANET_200F910:
-  { type: GFX, offset: 0x200F910, symbol: D_BG_PLANET_200F910 }
-
-D_BG_PLANET_200F998:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x0200F998, symbol: D_BG_PLANET_200F998 }
-
-D_BG_PLANET_20101A0:
-  { type: GFX, offset: 0x20101A0, symbol: D_BG_PLANET_20101A0 }
-
-D_BG_PLANET_2010228:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x02010228, symbol: D_BG_PLANET_2010228 }
-
-D_BG_PLANET_2010A30:
-  { type: GFX, offset: 0x2010A30, symbol: D_BG_PLANET_2010A30 }
-
-D_BG_PLANET_2010AB8:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x02010AB8, symbol: D_BG_PLANET_2010AB8 }
-
-D_BG_PLANET_20112C0:
-  { type: GFX, offset: 0x20112C0, symbol: D_BG_PLANET_20112C0 }
-
-D_BG_PLANET_2011358:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x02011358, symbol: D_BG_PLANET_2011358 }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_bg_space.yaml b/assets/yaml/jp/rev0/ast_bg_space.yaml
deleted file mode 100644
index bac9dc73c..000000000
--- a/assets/yaml/jp/rev0/ast_bg_space.yaml
+++ /dev/null
@@ -1,93 +0,0 @@
-:config:
-  segments:
-    - [0x02, 0x8763F0]
-  header:
-    code:
-      - '#include "assets/ast_bg_space.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_BG_SPACE_2000000:
-  { type: GFX, offset: 0x2000000, symbol: D_BG_SPACE_2000000 }
-
-D_BG_SPACE_2000088:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x2000088, symbol: D_BG_SPACE_2000088 }
-
-D_BG_SPACE_2000890:
-  { type: GFX, offset: 0x2000890, symbol: D_BG_SPACE_2000890 }
-
-D_BG_SPACE_2000918:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x2000918, symbol: D_BG_SPACE_2000918 }
-
-D_BG_SPACE_2001120:
-  { type: GFX, offset: 0x2001120, symbol: D_BG_SPACE_2001120 }
-
-D_BG_SPACE_20011A8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x020011A8, symbol: D_BG_SPACE_20011A8 }
-
-D_BG_SPACE_20019B0:
-  { type: GFX, offset: 0x20019B0, symbol: D_BG_SPACE_20019B0 }
-
-D_BG_SPACE_2001A38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02001A38, symbol: D_BG_SPACE_2001A38 }
-
-D_BG_SPACE_2002240:
-  { type: GFX, offset: 0x2002240, symbol: D_BG_SPACE_2002240 }
-
-D_BG_SPACE_20022C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x020022C8, symbol: D_BG_SPACE_20022C8 }
-
-D_BG_SPACE_2002AD0:
-  { type: GFX, offset: 0x2002AD0, symbol: D_BG_SPACE_2002AD0 }
-
-D_BG_SPACE_2002B58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02002B58, symbol: D_BG_SPACE_2002B58 }
-
-D_BG_SPACE_2003360:
-  { type: GFX, offset: 0x2003360, symbol: D_BG_SPACE_2003360 }
-
-D_BG_SPACE_20033E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x020033E8, symbol: D_BG_SPACE_20033E8 }
-
-D_BG_SPACE_2003BF0:
-  { type: GFX, offset: 0x2003BF0, symbol: D_BG_SPACE_2003BF0 }
-
-D_BG_SPACE_2003C78:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02003C78, symbol: D_BG_SPACE_2003C78 }
-
-D_BG_SPACE_2004480:
-  { type: GFX, offset: 0x2004480, symbol: D_BG_SPACE_2004480 }
-
-D_BG_SPACE_2004508:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02004508, symbol: D_BG_SPACE_2004508 }
-
-D_BG_SPACE_2004D10:
-  { type: GFX, offset: 0x2004D10, symbol: D_BG_SPACE_2004D10 }
-
-D_BG_SPACE_2004D98:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02004D98, symbol: D_BG_SPACE_2004D98 }
-
-D_BG_SPACE_20055A0:
-  { type: GFX, offset: 0x20055A0, symbol: D_BG_SPACE_20055A0 }
-
-D_BG_SPACE_2005628:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02005628, symbol: D_BG_SPACE_2005628 }
-
-D_BG_SPACE_2005E30:
-  { type: GFX, offset: 0x2005E30, symbol: D_BG_SPACE_2005E30 }
-
-D_BG_SPACE_2005EB8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02005EB8, symbol: D_BG_SPACE_2005EB8 }
-
-D_BG_SPACE_20066C0:
-  { type: GFX, offset: 0x20066C0, symbol: D_BG_SPACE_20066C0 }
-
-D_BG_SPACE_2006748:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02006748, symbol: D_BG_SPACE_2006748 }
-
-D_BG_SPACE_2006F50:
-  { type: GFX, offset: 0x2006F50, symbol: D_BG_SPACE_2006F50 }
-
-D_BG_SPACE_2006FD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x02006FD8, symbol: D_BG_SPACE_2006FD8 }
diff --git a/assets/yaml/jp/rev0/ast_blue_marine.yaml b/assets/yaml/jp/rev0/ast_blue_marine.yaml
deleted file mode 100644
index 6233790fe..000000000
--- a/assets/yaml/jp/rev0/ast_blue_marine.yaml
+++ /dev/null
@@ -1,90 +0,0 @@
-:config:
-  segments:
-    - [0x03, 0x8B1AB0]
-  header:
-    code:
-      - '#include "assets/ast_blue_marine.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aBlueMarineLifeIconTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x3000000, symbol: aBlueMarineLifeIconTex, tlut: 0x3000080 }
-
-aBlueMarineLifeIconTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x3000080, symbol: aBlueMarineLifeIconTLUT }
-
-D_blue_marine_3000090:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 9, offset: 0x3000090, symbol: D_blue_marine_3000090, tlut: 0x3000120 }
-
-D_blue_marine_3000120:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x3000120, symbol: D_blue_marine_3000120 }
-
-D_blue_marine_3000130:
-  { type: GFX, offset: 0x3000130, symbol: D_blue_marine_3000130 }
-
-ast_blue_marine_seg3_vtx_00000418:
-  { type: VTX, count: 5, offset: 0x3000418, symbol: D_blue_marine_3000418 }
-
-D_blue_marine_3000470:
-  { type: GFX, offset: 0x3000470, symbol: D_blue_marine_3000470 }
-
-D_blue_marine_30005E8:
-  { type: BLOB, size: 24, offset: 0x30005E8, symbol: D_blue_marine_30005E8 }
-
-D_blue_marine_3000600:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 8, offset: 0x3000600, symbol: D_blue_marine_3000600, tlut: 0x3000640 }
-
-D_blue_marine_3000640:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000640, symbol: D_blue_marine_3000640 }
-
-D_blue_marine_3000660:
-  { type: GFX, offset: 0x3000660, symbol: D_blue_marine_3000660 }
-
-D_blue_marine_30006E8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 32, offset: 0x30006E8, symbol: D_blue_marine_30006E8 }
-
-D_blue_marine_3000AF0:
-  { type: GFX, offset: 0x3000AF0, symbol: D_blue_marine_3000AF0 }
-
-D_blue_marine_3000C70:
-  { type: GFX, offset: 0x3000C70, symbol: D_blue_marine_3000C70 }
-
-D_blue_marine_3001900:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x3001900, symbol: D_blue_marine_3001900 }
-
-D_blue_marine_3001980:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3001980, symbol: D_blue_marine_3001980 }
-
-D_blue_marine_3002180:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3002180, symbol: D_blue_marine_3002180 }
-
-D_blue_marine_3002980:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3002980, symbol: D_blue_marine_3002980 }
-
-D_blue_marine_3003180:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3003180, symbol: D_blue_marine_3003180 }
-
-D_blue_marine_3003980:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3003980, symbol: D_blue_marine_3003980 }
-
-D_blue_marine_3004180:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3004180, symbol: D_blue_marine_3004180 }
-
-D_blue_marine_3004980:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x3004980, symbol: D_blue_marine_3004980 }
-
-D_blue_marine_3005980:
-  { type: GFX, offset: 0x3005980, symbol: D_blue_marine_3005980 }
-
-D_blue_marine_30062E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x30062E8, symbol: D_blue_marine_30062E8 }
-
-D_blue_marine_3006AF0:
-  { type: GFX, offset: 0x3006AF0, symbol: D_blue_marine_3006AF0 }
-
-D_blue_marine_3006C70:
-  { type: GFX, offset: 0x3006C70, symbol: D_blue_marine_3006C70 }
-
-D_blue_marine_3006DE0:
-  { type: GFX, offset: 0x3006DE0, symbol: D_blue_marine_3006DE0 }
diff --git a/assets/yaml/jp/rev0/ast_bolse.yaml b/assets/yaml/jp/rev0/ast_bolse.yaml
deleted file mode 100644
index 95a6e02c5..000000000
--- a/assets/yaml/jp/rev0/ast_bolse.yaml
+++ /dev/null
@@ -1,200 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xAD8050]
-  header:
-    code:
-      - '#include "assets/ast_bolse.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-# Bolse Defense Outpost
-aBoTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 168, height: 19, offset: 0x6000000, symbol: aBoTitleCardTex }
-
-D_BO_6000C80:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x6000C80, symbol: D_BO_6000C80 }
-
-D_BO_6000D80:
-  { type: GFX, offset: 0x6000D80, symbol: D_BO_6000D80 }
-
-D_BO_6001908:
-  { type: TEXTURE, format: RGBA16, offset: 0x6001908, width: 16, height: 16, ctype: u16, symbol: D_BO_6001908 }
-
-aBoBaseCoreAnim:
-  { type: SF64:ANIM, offset: 0x6001C64, symbol: aBoBaseCoreAnim }
-
-aBoBaseCoreSkel:
-  { type: SF64:SKELETON, offset: 0x6001FB0, symbol: aBoBaseCoreSkel }
-
-D_BO_6002020:
-  { type: GFX, offset: 0x6002020, symbol: D_BO_6002020 }
-
-D_BO_6004848:
-  { type: TEXTURE, format: RGBA16, offset: 0x06004848, width: 32, height: 32, ctype: u16, symbol: D_BO_6004848 }
-
-D_BO_6005048:
-  { type: TEXTURE, format: RGBA16, offset: 0x06005048, width: 16, height: 32, ctype: u16, symbol: D_BO_6005048 }
-
-D_BO_6005908:
-  { type: TEXTURE, format: RGBA16, offset: 0x06005908, width: 32, height: 32, ctype: u16, symbol: D_BO_6005908 }
-
-D_BO_6006108:
-  { type: TEXTURE, format: RGBA16, offset: 0x06006108, width: 32, height: 32, ctype: u16, symbol: D_BO_6006108 }
-
-D_BO_6006910:
-  { type: GFX, offset: 0x6006910, symbol: D_BO_6006910 }
-
-D_BO_6006AD0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6006AD0, symbol: D_BO_6006AD0 }
-
-D_BO_6006ED0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x06006ED0, symbol: D_BO_6006ED0 }
-
-D_BO_6006F50:
-  { type: TEXTURE, format: RGBA16, offset: 0x06006F50, width: 4, height: 16, ctype: u16, symbol: D_BO_6006F50 }
-
-D_BO_6006FD0:
-  { type: TEXTURE, format: RGBA16, offset: 0x06006FD0, width: 32, height: 32, ctype: u16, symbol: D_BO_6006FD0 }
-
-D_BO_60077D0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x60077D0, symbol: D_BO_60077D0 }
-
-D_BO_6007BD0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x06007BD0, symbol: D_BO_6007BD0 }
-
-D_BO_6007DF8:
-  { type: TEXTURE, format: RGBA16, offset: 0x06007DF8, width: 16, height: 32, ctype: u16, symbol: D_BO_6007DF8 }
-
-D_BO_6008440:
-  { type: TEXTURE, format: RGBA16, offset: 0x06008440, width: 16, height: 16, ctype: u16, symbol: D_BO_6008440 }
-
-# Unused Animation
-D_BO_6008668:
-  { type: SF64:ANIM, offset: 0x6008668, symbol: D_BO_6008668 }
-
-# Unused Skeleton
-D_BO_60086B4:
-  { type: SF64:SKELETON, offset: 0x60086B4, symbol: D_BO_60086B4 }
-
-# Unused Animation
-D_BO_60086F4:
-  { type: SF64:ANIM, offset: 0x60086F4, symbol: D_BO_60086F4 }
-
-# Unused Skeleton
-D_BO_6008760:
-  { type: SF64:SKELETON, offset: 0x6008760, symbol: D_BO_6008760 }
-
-D_BO_6008770:
-  { type: GFX, offset: 0x6008770, symbol: D_BO_6008770 }
-
-D_BO_6008BB8:
-  { type: TEXTURE, format: RGBA16, offset: 0x06008BB8, width: 32, height: 32, ctype: u16, symbol: D_BO_6008BB8 }
-
-D_BO_60093B8:
-  { type: TEXTURE, format: RGBA16, offset: 0x060093B8, width: 32, height: 32, ctype: u16, symbol: D_BO_60093B8 }
-
-D_BO_6009BC0:
-  { type: GFX, offset: 0x6009BC0, symbol: D_BO_6009BC0 }
-
-# Unused DisplayList, looks like a tube.
-D_BO_600A2C0:
-  { type: GFX, offset: 0x600A2C0, symbol: D_BO_600A2C0 }
-
-D_BO_600A810:
-  { type: GFX, offset: 0x600A810, symbol: D_BO_600A810 }
-
-# Unused DisplayList, looks like a cube with an entrance.
-D_BO_600AB90:
-  { type: GFX, offset: 0x600AB90, symbol: D_BO_600AB90 }
-
-D_BO_600AD80:
-  { type: TEXTURE, format: RGBA16, offset: 0x0600AD80, width: 32, height: 32, ctype: u16, symbol: D_BO_600AD80 }
-
-aBoBuildingDL:
-  { type: GFX, offset: 0x600B8B0, symbol: aBoBuildingDL }
-
-D_BO_600BAA0:
-  { type: GFX, offset: 0x600BAA0, symbol: D_BO_600BAA0 }
-
-D_BO_600BEC0:
-  { type: GFX, offset: 0x600BEC0, symbol: D_BO_600BEC0 }
-
-D_BO_600BF30:
-  { type: GFX, offset: 0x600BF30, symbol: D_BO_600BF30 }
-
-D_BO_600C0B8:
-  { type: VTX, count: 34, offset: 0x600C0B8, symbol: D_BO_600C0B8 }
-
-D_BO_600C2D8:
-  { type: TEXTURE, format: IA8, offset: 0x0600C2D8, width: 32, height: 16, ctype: u8, symbol: D_BO_600C2D8 }
-
-aBoBaseShieldDL:
-  { type: GFX, offset: 0x600C4E0, symbol: aBoBaseShieldDL }
-
-aBoBaseShieldTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x0600CF88, width: 16, height: 16, ctype: u16, symbol: aBoBaseShieldTex }
-
-D_BO_600D190:
-  { type: GFX, offset: 0x600D190, symbol: D_BO_600D190 }
-
-D_BO_600D2A0:
-  { type: TEXTURE, format: RGBA16, offset: 0x0600D2A0, width: 32, height: 64, ctype: u16, symbol: D_BO_600D2A0 }
-
-D_BO_600E2A0:
-  { type: TEXTURE, format: RGBA16, offset: 0x0600E2A0, width: 32, height: 64, ctype: u16, symbol: D_BO_600E2A0 }
-
-aBoLaserCannonAnim:
-  { type: SF64:ANIM, offset: 0x600F2E0, symbol: aBoLaserCannonAnim }
-
-aBoLaserCannonSkel:
-  { type: SF64:SKELETON, offset: 0x600F36C, symbol: aBoLaserCannonSkel }
-
-aBoShieldReactorAnim:
-  { type: SF64:ANIM, offset: 0x600F3D8, symbol: aBoShieldReactorAnim }
-
-aBoShieldReactorSkel:
-  { type: SF64:SKELETON, offset: 0x600F4A4, symbol: aBoShieldReactorSkel }
-
-aBoPoleDL:
-  { type: GFX, offset: 0x600F4C0, symbol: aBoPoleDL }
-
-D_BO_600F728:
-  { type: TEXTURE, format: RGBA16, offset: 0x0600F728, width: 32, height: 32, ctype: u16, symbol: D_BO_600F728 }
-
-D_BO_600FF30:
-  { type: SF64:ENVIRONMENT, offset: 0x600FF30, symbol: D_BO_600FF30 }
-
-D_BO_600FF74:
-  { type: SF64:OBJECT_INIT, offset: 0x600FF74, symbol: D_BO_600FF74 }
-
-D_BO_6010294:
-  { type: SF64:COLPOLY, count: 262, offset: 0x6010294, symbol: D_BO_6010294, mesh_symbol: D_BO_OFFSET }
-
-PAD_BO_6011B20:
-  { type: BLOB, size: 0x4, offset: 0x6011B20, symbol: PAD_BO_6011B20, mesh_symbol: D_BO_OFFSET }
-
-aBoShieldReactorHitbox:
-  { type: SF64:HITBOX, offset: 0x6011B24, symbol: aBoShieldReactorHitbox }
-
-D_BO_6011BA4:
-  { type: SF64:HITBOX, offset: 0x6011BA4, symbol: D_BO_6011BA4 }
-
-aBoLaserCannonHitbox:
-  { type: SF64:HITBOX, offset: 0x6011BF4, symbol: aBoLaserCannonHitbox }
-
-aBoPoleHitbox:
-  { type: SF64:HITBOX, offset: 0x6011C10, symbol: aBoPoleHitbox }
-
-aBoBuildingHitbox:
-  { type: SF64:HITBOX, offset: 0x6011C48, symbol: aBoBuildingHitbox }
-
-aBoBaseCoreHitbox:
-  { type: SF64:HITBOX, offset: 0x6011C80, symbol: aBoBaseCoreHitbox }
-
-D_BO_6011E28:
-  { type: VTX, count: 34, offset: 0x6011E28, symbol: D_BO_6011E28 }
diff --git a/assets/yaml/jp/rev0/ast_common.yaml b/assets/yaml/jp/rev0/ast_common.yaml
deleted file mode 100644
index 9cceabbc7..000000000
--- a/assets/yaml/jp/rev0/ast_common.yaml
+++ /dev/null
@@ -1,987 +0,0 @@
-:config:
-  segments:
-    - [0x1, 0x844660]
-  header:
-    code:
-      - '#include "assets/ast_common.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_1000000:
-  { type: TEXTURE, format: IA8, width: 64, height: 10, ctype: u8, offset: 0x1000000, symbol: D_1000000 }
-
-D_1000280:
-  { type: TEXTURE, format: IA8, width: 96, height: 10, ctype: u8, offset: 0x1000280, symbol: D_1000280 }
-
-D_1000640:
-  { type: TEXTURE, format: IA8, width: 96, height: 22, ctype: u8, offset: 0x1000640, symbol: D_1000640 }
-
-aBoostGaugeFrameTex:
-  { type: TEXTURE, format: IA8, width: 48, height: 9, ctype: u8, offset: 0x1000E80, symbol: aBoostGaugeFrameTex }
-
-D_1001030:
-  { type: TEXTURE, format: IA8, width: 8, height: 8, ctype: u8, offset: 0x1001030, symbol: D_1001030 }
-
-D_1001070:
-  { type: TEXTURE, format: IA8, width: 104, height: 10, ctype: u8, offset: 0x1001070, symbol: D_1001070 }
-
-D_1001480:
-  { type: TEXTURE, format: IA8, width: 56, height: 12, ctype: u8, offset: 0x1001480, symbol: D_1001480 }
-
-D_1001720:
-  { type: TEXTURE, format: IA8, width: 40, height: 36, ctype: u8, offset: 0x1001720, symbol: D_1001720 }
-
-D_1001CC0:
-  { type: TEXTURE, format: IA8, width: 64, height: 14, ctype: u8, offset: 0x1001CC0, symbol: D_1001CC0 }
-
-D_1002040:
-  { type: TEXTURE, format: IA8, width: 40, height: 12, ctype: u8, offset: 0x1002040, symbol: D_1002040 }
-
-D_1002220:
-  { type: TEXTURE, format: IA8, width: 8, height: 12, ctype: u8, offset: 0x1002220, symbol: D_1002220 }
-
-aShieldGaugeFrameEdgeTex:
-  { type: TEXTURE, format: IA8, width: 8, height: 12, ctype: u8, offset: 0x1002280, symbol: aShieldGaugeFrameEdgeTex }
-
-D_10022E0:
-  { type: TEXTURE, format: IA8, width: 8, height: 12, ctype: u8, offset: 0x10022E0, symbol: D_10022E0 }
-
-D_1002340:
-  { type: TEXTURE, format: IA8, width: 40, height: 10, ctype: u8, offset: 0x1002340, symbol: D_1002340 }
-
-D_10024D0:
-  { type: TEXTURE, format: IA8, width: 96, height: 32, ctype: u8, offset: 0x10024D0, symbol: D_10024D0 }
-
-aShieldGaugeFrameTex:
-  { type: TEXTURE, format: IA8, width: 8, height: 12, ctype: u8, offset: 0x10030D0, symbol: aShieldGaugeFrameTex }
-
-D_1003130:
-  { type: GFX, offset: 0x1003130, symbol: D_1003130 }
-
-D_1003208:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1003208, tlut: 0x1003288, symbol: D_1003208 }
-
-D_1003288:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1003288, ctype: u16, symbol: D_1003288 }
-
-aFalcoPortraitTex:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x10032A0, symbol: aFalcoPortraitTex }
-
-D_10041C0:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x10041C0, symbol: D_10041C0 }
-
-aFoxPortraitTex:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x10050E0, symbol: aFoxPortraitTex }
-
-D_1006000:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x1006000, symbol: D_1006000 }
-
-D_1006F20:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x1006F20, symbol: D_1006F20 }
-
-D_1007E40:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x1007E40, symbol: D_1007E40 }
-
-D_1008D60:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x1008D60, symbol: D_1008D60 }
-
-D_1009C80:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x1009C80, symbol: D_1009C80 }
-
-D_100ABA0:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100ABA0, symbol: D_100ABA0 }
-
-aPeppyPortraitTex:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100BAC0, symbol: aPeppyPortraitTex }
-
-D_100C9E0:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100C9E0, symbol: D_100C9E0 }
-
-aSlippyPortraitTex:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100D900, symbol: aSlippyPortraitTex }
-
-D_100E820:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100E820, symbol: D_100E820 }
-
-D_100F740:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, ctype: u16, offset: 0x100F740, symbol: D_100F740 }
-
-D_1010660:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010660, tlut: 0x10106A0, symbol: D_1010660 }
-
-D_10106A0:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x10106A0, ctype: u16, symbol: D_10106A0 }
-
-D_10106B0:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x10106B0, tlut: 0x10106F0, symbol: D_10106B0 }
-
-D_10106F0:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x10106F0, ctype: u16, symbol: D_10106F0 }
-
-D_1010700:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010700, tlut: 0x1010740, symbol: D_1010700 }
-
-D_1010740:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010740, ctype: u16, symbol: D_1010740 }
-
-D_1010750:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010750, tlut: 0x1010790, symbol: D_1010750 }
-
-D_1010790:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010790, ctype: u16, symbol: D_1010790 }
-
-D_10107A0:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x10107A0, tlut: 0x10107E0, symbol: D_10107A0 }
-
-D_10107E0:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x10107E0, ctype: u16, symbol: D_10107E0 }
-
-D_10107F0:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x10107F0, tlut: 0x1010830, symbol: D_10107F0 }
-
-D_1010830:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010830, ctype: u16, symbol: D_1010830 }
-
-D_1010840:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010840, tlut: 0x1010880, symbol: D_1010840 }
-
-D_1010880:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010880, ctype: u16, symbol: D_1010880 }
-
-D_1010890:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010890, tlut: 0x10108D0, symbol: D_1010890 }
-
-D_10108D0:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x10108D0, ctype: u16, symbol: D_10108D0 }
-
-D_10108E0:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x10108E0, tlut: 0x1010920, symbol: D_10108E0 }
-
-D_1010920:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010920, ctype: u16, symbol: D_1010920 }
-
-D_1010930:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1010930, tlut: 0x1010970, symbol: D_1010930 }
-
-D_1010970:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1010970, ctype: u16, symbol: D_1010970 }
-
-D_1010980:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1010980, tlut: 0x1010A00, symbol: D_1010980 }
-
-D_1010A00:
-  { type: TEXTURE, format: TLUT, colors: 8, ctype: u16, offset: 0x1010A00, symbol: D_1010A00 }
-
-D_1010A10:
-  { type: TEXTURE, format: CI4, width: 32, height: 7, ctype: u8, offset: 0x1010A10, tlut: 0x1010A80, symbol: D_1010A10 }
-
-D_1010A80:
-  { type: TEXTURE, format: TLUT, colors: 4, ctype: u16, offset: 0x1010A80, symbol: D_1010A80 }
-
-D_1010A90:
-  { type: TEXTURE, format: CI4, width: 64, height: 49, ctype: u8, offset: 0x1010A90, tlut: 0x10110B0, symbol: D_1010A90 }
-
-D_10110B0:
-  { type: TEXTURE, format: TLUT, colors: 4, ctype: u16, offset: 0x10110B0, symbol: D_10110B0 }
-
-D_10110C0:
-  { type: TEXTURE, format: CI4, width: 16, height: 7, ctype: u8, offset: 0x10110C0, tlut: 0x10110F8, symbol: D_10110C0 }
-
-D_10110F8:
-  { type: TEXTURE, format: TLUT, colors: 6, ctype: u16, offset: 0x10110F8, symbol: D_10110F8 }
-
-D_1011110:
-  { type: TEXTURE, format: CI4, width: 16, height: 7, ctype: u8, offset: 0x1011110, tlut: 0x1011148, symbol: D_1011110 }
-
-D_1011148:
-  { type: TEXTURE, format: TLUT, colors: 6, ctype: u16, offset: 0x1011148, symbol: D_1011148 }
-
-D_1011160:
-  { type: TEXTURE, format: CI4, width: 16, height: 7, ctype: u8, offset: 0x1011160, tlut: 0x1011198, symbol: D_1011160 }
-
-D_1011198:
-  { type: TEXTURE, format: TLUT, colors: 6, ctype: u16, offset: 0x1011198, symbol: D_1011198 }
-
-D_10111B0:
-  { type: TEXTURE, format: CI4, width: 16, height: 7, ctype: u8, offset: 0x10111B0, tlut: 0x10111E8, symbol: D_10111B0 }
-
-D_10111E8:
-  { type: TEXTURE, format: TLUT, colors: 6, ctype: u16, offset: 0x10111E8, symbol: D_10111E8 }
-
-D_1011200:
-  { type: TEXTURE, format: CI4, width: 32, height: 7, ctype: u8, offset: 0x1011200, tlut: 0x1011270, symbol: D_1011200 }
-
-D_1011270:
-  { type: TEXTURE, format: TLUT, colors: 6, ctype: u16, offset: 0x1011270, symbol: D_1011270 }
-
-aRadarFrameTex:
-  { type: TEXTURE, format: CI4, width: 48, height: 44, ctype: u8, offset: 0x1011280, tlut: 0x10116A0, symbol: aRadarFrameTex }
-
-aRadarFrameTLUT:
-  { type: TEXTURE, format: TLUT, colors: 8, ctype: u16, offset: 0x10116A0, symbol: aRadarFrameTLUT }
-
-aVsBombIconTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10116B0, tlut: 0x1011730, symbol: aVsBombIconTex }
-
-aVsBombIconTLUT:
-  { type: TEXTURE, format: TLUT, colors: 15, ctype: u16, offset: 0x1011730, symbol: aVsBombIconTLUT }
-
-D_1011750:
-  { type: TEXTURE, format: CI4, width: 80, height: 13, ctype: u8, offset: 0x1011750, tlut: 0x1011958, symbol: D_1011750 }
-
-D_1011958:
-  { type: TEXTURE, format: TLUT, colors: 16, ctype: u16, offset: 0x1011958, symbol: D_1011958 }
-
-D_1011980:
-  { type: TEXTURE, format: CI4, width: 48, height: 7, ctype: u8, offset: 0x1011980, tlut: 0x1011A28, symbol: D_1011980 }
-
-D_1011A28:
-  { type: TEXTURE, format: TLUT, colors: 12, ctype: u16, offset: 0x1011A28, symbol: D_1011A28 }
-
-D_1011A40:
-  { type: TEXTURE, format: CI4, width: 32, height: 7, ctype: u8, offset: 0x1011A40, tlut: 0x1011AB0, symbol: D_1011A40 }
-
-D_1011AB0:
-  { type: TEXTURE, format: TLUT, colors: 8, ctype: u16, offset: 0x1011AB0, symbol: D_1011AB0 }
-
-aIncomingMsgButtonTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 26, ctype: u8, offset: 0x1011AC0, tlut: 0x1011B90, symbol: aIncomingMsgButtonTex }
-
-aIncomingMsgButtonTLUT:
-  { type: TEXTURE, format: TLUT, colors: 15, ctype: u16, offset: 0x1011B90, symbol: aIncomingMsgButtonTLUT }
-
-aIncomingMsgSignal1Tex:
-  { type: TEXTURE, format: CI4, width: 16, height: 26, ctype: u8, offset: 0x1011BB0, tlut: 0x1011C80, symbol: aIncomingMsgSignal1Tex }
-
-aIncomingMsgSignal1TLUT:
-  { type: TEXTURE, format: TLUT, colors: 15, ctype: u16, offset: 0x1011C80, symbol: aIncomingMsgSignal1TLUT }
-
-aIncomingMsgSignal2Tex:
-  { type: TEXTURE, format: CI4, width: 16, height: 26, ctype: u8, offset: 0x1011CA0, tlut: 0x1011D70, symbol: aIncomingMsgSignal2Tex }
-
-aIncomingMsgSignal2TLUT:
-  { type: TEXTURE, format: TLUT, colors: 15, ctype: u16, offset: 0x1011D70, symbol: aIncomingMsgSignal2TLUT }
-
-aIncomingMsgSignal3Tex:
-  { type: TEXTURE, format: CI4, width: 16, height: 26, ctype: u8, offset: 0x1011D90, tlut: 0x1011E60, symbol: aIncomingMsgSignal3Tex }
-
-aIncomingMsgSignal3TLUT:
-  { type: TEXTURE, format: TLUT, colors: 15, ctype: u16, offset: 0x1011E60, symbol: aIncomingMsgSignal3TLUT }
-
-D_1011E80:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1011E80, tlut: 0x1011EC0, symbol: D_1011E80 }
-
-D_1011EC0:
-  { type: TEXTURE, format: TLUT, colors: 8, ctype: u16, offset: 0x1011EC0, symbol: D_1011EC0 }
-
-aXTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 7, ctype: u8, offset: 0x1011ED0, tlut: 0x1011F08, symbol: aXTex }
-
-aXTLUT:
-  { type: TEXTURE, format: TLUT, colors: 12, ctype: u16, offset: 0x1011F08, symbol: aXTLUT }
-
-D_1011F20:
-  { type: GFX, offset: 0x1011F20, symbol: D_1011F20 }
-
-D_1012000:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x1012000, tlut: 0x1012100, symbol: D_1012000 }
-
-D_1012100:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1012100, ctype: u16, symbol: D_1012100 }
-
-aGoldRingEmptySlotDL:
-  { type: GFX, offset: 0x1012110, symbol: aGoldRingEmptySlotDL }
-
-aGoldRingEmptySlotTex:
-  { type: TEXTURE, format: IA8, width: 16, height: 16, ctype: u8, offset: 0x1012190, symbol: aGoldRingEmptySlotTex }
-
-D_1012290:
-  { type: TEXTURE, format: CI8, width: 48, height: 22, ctype: u8, offset: 0x1012290, tlut: 0x10126B0, symbol: D_1012290 }
-
-D_10126B0:
-  { type: TEXTURE, format: TLUT, colors: 32, ctype: u16, offset: 0x10126B0, symbol: D_10126B0 }
-
-D_10126F0:
-  { type: TEXTURE, format: CI8, width: 24, height: 4, ctype: u8, offset: 0x10126F0, tlut: 0x1012750, symbol: D_10126F0 }
-
-D_1012750:
-  { type: TEXTURE, format: TLUT, colors: 59, ctype: u16, offset: 0x1012750, symbol: D_1012750 }
-
-D_1013780:
-  { type: TEXTURE, format: CI8, width: 48, height: 141, ctype: u8, offset: 0x1013780, tlut: 0x10151F0, symbol: D_1013780 }
-
-D_10151F0:
-  { type: TEXTURE, format: TLUT, colors: 146, ctype: u16, offset: 0x10151F0, symbol: D_10151F0 }
-
-aBoostGaugeCoolTex:
-  { type: TEXTURE, format: CI8, width: 40, height: 5, ctype: u8, offset: 0x10127D0, tlut: 0x1012898, symbol: aBoostGaugeCoolTex }
-
-aBoostGaugeCoolTLUT:
-  { type: TEXTURE, format: TLUT, colors: 20, ctype: u16, offset: 0x1012898, symbol: aBoostGaugeCoolTLUT }
-
-aBoostGaugeOverheatTex:
-  { type: TEXTURE, format: CI8, width: 40, height: 5, ctype: u8, offset: 0x10128C0, tlut: 0x1012988, symbol: aBoostGaugeOverheatTex }
-
-aBoostGaugeOverheatTLUT:
-  { type: TEXTURE, format: TLUT, colors: 28, ctype: u16, offset: 0x1012988, symbol: aBoostGaugeOverheatTLUT }
-
-D_10129C0:
-  { type: TEXTURE, format: CI8, width: 16, height: 109, ctype: u8, offset: 0x10129C0, tlut: 0x1013090, symbol: D_10129C0 }
-
-D_1013090:
-  { type: TEXTURE, format: TLUT, colors: 112, ctype: u16, offset: 0x1013090, symbol: D_1013090 }
-
-aMsgWindowBgTex:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, ctype: u8, offset: 0x1013170, tlut: 0x1013570, symbol: aMsgWindowBgTex }
-
-aMsgWindowBgTLUT:
-  { type: TEXTURE, format: TLUT, colors: 8, ctype: u16, offset: 0x1013570, symbol: aMsgWindowBgTLUT }
-
-aShieldGaugeTex:
-  { type: TEXTURE, format: CI8, width: 48, height: 8, ctype: u8, offset: 0x1013580, tlut: 0x1013700, symbol: aShieldGaugeTex }
-
-aShieldGaugeTLUT:
-  { type: TEXTURE, format: TLUT, colors: 58, ctype: u16, offset: 0x1013700, symbol: aShieldGaugeTLUT }
-
-D_1015320:
-  { type: GFX, offset: 0x1015320, symbol: D_1015320 }
-
-D_10153F8:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x10153F8, tlut: 0x10154F8, symbol: D_10153F8 }
-
-D_10154F8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10154F8, ctype: u16, symbol: D_10154F8 }
-
-aRadarMarkArwingDL:
-  { type: GFX, offset: 0x1015510, symbol: aRadarMarkArwingDL }
-
-aRadarMarkArwingTex:
-  { type: TEXTURE, format: IA8, width: 16, height: 16, ctype: u8, offset: 0x1015598, symbol: aRadarMarkArwingTex }
-
-D_10156A0:
-  { type: GFX, offset: 0x10156A0, symbol: D_10156A0 }
-
-D_1015778:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1015778, tlut: 0x10157F8, symbol: D_1015778 }
-
-D_10157F8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10157F8, ctype: u16, symbol: D_10157F8 }
-
-D_1015810:
-  { type: GFX, offset: 0x1015810, symbol: D_1015810 }
-
-D_10158E8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10158E8, tlut: 0x1015968, symbol: D_10158E8 }
-
-D_1015968:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1015968, ctype: u16, symbol: D_1015968 }
-
-D_1015980:
-  { type: GFX, offset: 0x1015980, symbol: D_1015980 }
-
-D_1015A58:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x1015A58, tlut: 0x1015B58, symbol: D_1015A58 }
-
-D_1015B58:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1015B58, ctype: u16, symbol: D_1015B58 }
-
-D_1015B70:
-  { type: GFX, offset: 0x1015B70, symbol: D_1015B70 }
-
-D_1015C48:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1015C48, tlut: 0x1015CC8, symbol: D_1015C48 }
-
-D_1015CC8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1015CC8, ctype: u16, symbol: D_1015CC8 }
-
-D_1015CE0:
-  { type: GFX, offset: 0x1015CE0, symbol: D_1015CE0 }
-
-D_1015DB8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1015DB8, tlut: 0x1015E38, symbol: D_1015DB8 }
-
-D_1015E38:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1015E38, ctype: u16, symbol: D_1015E38 }
-
-D_1015E50:
-  { type: GFX, offset: 0x1015E50, symbol: D_1015E50 }
-
-D_1015F28:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1015F28, tlut: 0x1015FA8, symbol: D_1015F28 }
-
-D_1015FA8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1015FA8, ctype: u16, symbol: D_1015FA8 }
-
-D_1015FC0:
-  { type: GFX, offset: 0x1015FC0, symbol: D_1015FC0 }
-
-D_1016098:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1016098, tlut: 0x1016118, symbol: D_1016098 }
-
-D_1016118:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1016118, ctype: u16, symbol: D_1016118 }
-
-D_1016130:
-  { type: GFX, offset: 0x1016130, symbol: D_1016130 }
-
-D_1016208:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1016208, tlut: 0x1016288, symbol: D_1016208 }
-
-D_1016288:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1016288, ctype: u16, symbol: D_1016288 }
-
-D_10162A0:
-  { type: GFX, offset: 0x10162A0, symbol: D_10162A0 }
-
-D_1016378:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1016378, tlut: 0x10163F8, symbol: D_1016378 }
-
-D_10163F8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10163F8, ctype: u16, symbol: D_10163F8 }
-
-D_1016410:
-  { type: GFX, offset: 0x1016410, symbol: D_1016410 }
-
-D_10164E8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10164E8, tlut: 0x1016568, symbol: D_10164E8 }
-
-D_1016568:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1016568, ctype: u16, symbol: D_1016568 }
-
-D_1016580:
-  { type: GFX, offset: 0x1016580, symbol: D_1016580 }
-
-D_1016658:
-  { type: TEXTURE, format: CI4, width: 64, height: 16, ctype: u8, offset: 0x1016658, tlut: 0x1016858, symbol: D_1016658 }
-
-D_1016858:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1016858, ctype: u16, symbol: D_1016858 }
-
-D_1016870:
-  { type: GFX, offset: 0x1016870, symbol: D_1016870 }
-
-D_1016BC8:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, ctype: u8, offset: 0x1016BC8, tlut: 0x1012100, symbol: D_1016BC8}
-
-D_1016FC8:
-  { type: TEXTURE, format: TLUT, colors: 256, offset: 0x1016FC8, ctype: u16, symbol: D_1016FC8 }
-
-D_10171D0:
-  { type: GFX, offset: 0x10171D0, symbol: D_10171D0 }
-
-D_10172A8:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x10172A8, tlut: 0x10173A8, symbol: D_10172A8 }
-
-D_10173A8:
-  { type: TEXTURE, format: TLUT, colors: 16, offset: 0x10173A8, ctype: u16, symbol: D_10173A8 }
-
-D_10173D0:
-  { type: GFX, offset: 0x10173D0, symbol: D_10173D0 }
-
-D_10174A8:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x10174A8, tlut: 0x10175A8, symbol: D_10174A8 }
-
-D_10175A8:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x10175A8, ctype: u16, symbol: D_10175A8 }
-
-D_10175C0:
-  { type: GFX, offset: 0x10175C0, symbol: D_10175C0 }
-
-D_1017698:
-  { type: TEXTURE, format: CI4, width: 32, height: 16, ctype: u8, offset: 0x1017698, tlut: 0x1017798, symbol: D_1017698 }
-
-D_1017798:
-  { type: TEXTURE, format: TLUT, colors: 16, offset: 0x1017798, ctype: u16, symbol: D_1017798 }
-
-aActorSuppliesDL:
-  { type: GFX, offset: 0x10177C0, symbol: aActorSuppliesDL }
-
-D_1017A38:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x1017A38, symbol: D_1017A38 }
-
-D_1018238:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x1018238, symbol: D_1018238 }
-
-D_10182C0:
-  { type: GFX, offset: 0x10182C0, symbol: D_10182C0 }
-
-D_10190C0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 32, ctype: u16, offset: 0x10190C0, symbol: D_10190C0 }
-
-D_10194C0:
-  { type: GFX, offset: 0x10194C0, symbol: D_10194C0 }
-
-D_1019620:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x1019620, symbol: D_1019620 }
-
-D_1019820:
-  { type: GFX, offset: 0x1019820, symbol: D_1019820 }
-
-D_1019CA0:
-  { type: GFX, offset: 0x1019CA0, symbol: D_1019CA0 }
-
-D_1019AF0:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, ctype: u8, offset: 0x1019AF0, symbol: D_1019AF0 }
-
-D_1019BF0:
-  { type: TEXTURE, format: TLUT, colors: 88, offset: 0x1019BF0, ctype: u16, symbol: D_1019BF0 }
-
-D_101A140:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, ctype: u8, offset: 0x101A140, symbol: D_101A140 }
-
-D_101A540:
-  { type: TEXTURE, format: TLUT, colors: 24, offset: 0x101A540, ctype: u16, symbol: D_101A540 }
-
-D_101A570:
-  { type: GFX, offset: 0x101A570, symbol: D_101A570 }
-
-D_101A8E0:
-  { type: GFX, offset: 0x101A8E0, symbol: D_101A8E0 }
-
-D_101A9B8:
-  { type: TEXTURE, format: CI4, width: 32, height: 32, ctype: u8, offset: 0x101A9B8, tlut: 0x101ABB8, symbol: D_101A9B8 }
-
-D_101ABB8:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x101ABB8, ctype: u16, symbol: D_101ABB8 }
-
-D_101ABD0:
-  { type: GFX, offset: 0x101ABD0, symbol: D_101ABD0 }
-
-D_101AC98:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x0101AC98, symbol: D_101AC98 }
-
-D_101AD20:
-  { type: GFX, offset: 0x101AD20, symbol: D_101AD20 }
-
-D_101AE48:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x101AE48, symbol: D_101AE48 }
-
-D_101AED0:
-  { type: GFX, offset: 0x101AED0, symbol: D_101AED0 }
-
-D_101AF98:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x101AF98, symbol: D_101AF98 }
-
-aGoldRingFrame12DL:
-  { type: GFX, offset: 0x101B1A0, symbol: aGoldRingFrame12DL }
-
-D_101B268:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B268, tlut: 0x101B2E8, symbol: D_101B268 }
-
-D_101B2E8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101B2E8, ctype: u16, symbol: D_101B2E8 }
-
-aGoldRingFrame11DL:
-  { type: GFX, offset: 0x101B310, symbol: aGoldRingFrame11DL }
-
-D_101B3D8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B3D8, tlut: 0x101B458, symbol: D_101B3D8 }
-
-D_101B458:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101B458, ctype: u16, symbol: D_101B458 }
-
-aGoldRingFrame10DL:
-  { type: GFX, offset: 0x101B480, symbol: aGoldRingFrame10DL }
-
-D_101B548:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B548, tlut: 0x101B5C8, symbol: D_101B548 }
-
-D_101B5C8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101B5C8, ctype: u16, symbol: D_101B5C8 }
-
-aGoldRingFrame9DL:
-  { type: GFX, offset: 0x101B5F0, symbol: aGoldRingFrame9DL }
-
-D_101B6B8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B6B8, tlut: 0x101B738, symbol: D_101B6B8 }
-
-D_101B738:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101B738, ctype: u16, symbol: D_101B738 }
-
-aGoldRingFrame8DL:
-  { type: GFX, offset: 0x101B760, symbol: aGoldRingFrame8DL }
-
-D_101B828:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B828, tlut: 0x101B8A8, symbol: D_101B828 }
-
-D_101B8A8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101B8A8, ctype: u16, symbol: D_101B8A8 }
-
-aGoldRingFrame7DL:
-  { type: GFX, offset: 0x101B8D0, symbol: aGoldRingFrame7DL }
-
-D_101B998:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101B998, tlut: 0x101BA18, symbol: D_101B998 }
-
-D_101BA18:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101BA18, ctype: u16, symbol: D_101BA18 }
-
-aGoldRingFrame6DL:
-  { type: GFX, offset: 0x101BA40, symbol: aGoldRingFrame6DL }
-
-D_101BB08:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101BB08, tlut: 0x101BB88, symbol: D_101BB08 }
-
-D_101BB88:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101BB88, ctype: u16, symbol: D_101BB88 }
-
-aGoldRingFrame5DL:
-  { type: GFX, offset: 0x101BBB0, symbol: aGoldRingFrame5DL }
-
-D_101BC78:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101BC78, tlut: 0x101BCF8, symbol: D_101BC78 }
-
-D_101BCF8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101BCF8, ctype: u16, symbol: D_101BCF8 }
-
-aGoldRingFrame4DL:
-  { type: GFX, offset: 0x101BD20, symbol: aGoldRingFrame4DL }
-
-D_101BDE8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101BDE8, tlut: 0x101BE68, symbol: D_101BDE8 }
-
-D_101BE68:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101BE68, ctype: u16, symbol: D_101BE68 }
-
-aGoldRingFrame3DL:
-  { type: GFX, offset: 0x101BE90, symbol: aGoldRingFrame3DL }
-
-D_101BF58:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101BF58, tlut: 0x101BFD8, symbol: D_101BF58 }
-
-D_101BFD8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101BFD8, ctype: u16, symbol: D_101BFD8 }
-
-aGoldRingFrame2DL:
-  { type: GFX, offset: 0x101C000, symbol: aGoldRingFrame2DL }
-
-D_101C0C8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101C0C8, tlut: 0x101C148, symbol: D_101C0C8 }
-
-D_101C148:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101C148, ctype: u16, symbol: D_101C148 }
-
-aGoldRingFrame1DL:
-  { type: GFX, offset: 0x101C170, symbol: aGoldRingFrame1DL }
-
-D_101C238:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x101C238, tlut: 0x101C2B8, symbol: D_101C238 }
-
-D_101C2B8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x101C2B8, ctype: u16, symbol: D_101C2B8 }
-
-aStarDL:
-  { type: GFX, offset: 0x101C2E0, symbol: aStarDL }
-
-aStarTex:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, ctype: u8, colors: 20, offset: 0x101C368, symbol: aStarTex }
-
-D_101C770:
-  { type: GFX, offset: 0x101C770, symbol: D_101C770 }
-
-D_101C920:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, ctype: u8, offset: 0x101C920, tlut: 0x101CA20, symbol: D_101C920 }
-
-D_101CA20:
-  { type: TEXTURE, format: TLUT, colors: 96, offset: 0x101CA20, ctype: u16, symbol: D_101CA20 }
-
-D_101CAE0:
-  { type: GFX, offset: 0x101CAE0, symbol: D_101CAE0 }
-
-D_101CBC0:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, ctype: u8, offset: 0x101CBC0, tlut: 0x101CCC0, symbol: D_101CBC0 }
-
-D_101CCC0:
-  { type: TEXTURE, format: TLUT, colors: 88, offset: 0x101CCC0, ctype: u16, symbol: D_101CCC0 }
-
-aUnusedShieldDL:
-  { type: GFX, offset: 0x101CD70, symbol: aUnusedShieldDL }
-
-aUnusedShieldTex:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x101D070, symbol: aUnusedShieldTex }
-
-D_101D870:
-  { type: GFX, offset: 0x101D870, symbol: D_101D870 }
-
-ast_common_seg1_vtx_1D9C8:
-  { type: VTX, offset: 0x101D9C8, count: 36, symbol: ast_common_seg1_vtx_1D9C8 }
-
-D_101DE20:
-  { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101DE20, symbol: D_101DE20 }
-
-aBarrelRollTex:
-  { type: GFX, offset: 0x101DC10, symbol: aBarrelRollTex }
-
-D_101EE20:
-  { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101EE20, symbol: D_101EE20 }
-
-D_101FE20:
-  { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101FE20, symbol: D_101FE20 }
-
-D_1020E20:
-  { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x1020E20, symbol: D_1020E20 }
-
-D_1021E20:
-  { type: GFX, offset: 0x1021E20, symbol: D_1021E20 }
-
-D_1021EF8:
-  { type: TEXTURE, format: CI4, width: 32, height: 32, ctype: u8, offset: 0x1021EF8, tlut: 0x10220F8, symbol: D_1021EF8 }
-
-D_10220F8:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x10220F8, ctype: u16, symbol: D_10220F8 }
-
-D_1022120:
-  { type: GFX, offset: 0x1022120, symbol: D_1022120 }
-
-ast_common_seg1_vtx_22480:
-  { type: VTX, offset: 0x1022480, count: 124, symbol: ast_common_seg1_vtx_22480 }
-
-D_1022C40:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1022C40, tlut: 0x1022CC0, symbol: D_1022C40 }
-
-D_1022CC0:
-  { type: TEXTURE, format: TLUT, colors: 16, offset: 0x1022CC0, ctype: u16, symbol: D_1022CC0 }
-
-D_1022CE0:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1022CE0, tlut: 0x1022D60, symbol: D_1022CE0 }
-
-D_1022D60:
-  { type: TEXTURE, format: TLUT, colors: 16, offset: 0x1022D60, ctype: u16, symbol: D_1022D60 }
-
-D_1022D80:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 16, ctype: u16, offset: 0x1022D80, symbol: D_1022D80 }
-
-D_1022E80:
-  { type: GFX, offset: 0x1022E80, symbol: D_1022E80 }
-
-D_1022F80:
-  { type: TEXTURE, format: CI4, width: 32, height: 32, ctype: u8, offset: 0x1022F80, tlut: 0x1023180, symbol: D_1022F80 }
-
-D_1023180:
-  { type: TEXTURE, format: TLUT, colors: 16, offset: 0x1023180, ctype: u16, symbol: D_1023180 }
-
-D_10231A0:
-  { type: GFX, offset: 0x10231A0, symbol: D_10231A0 }
-
-D_1023518:
-  { type: TEXTURE, format: IA8, width: 4, height: 5, ctype: u8, offset: 0x1023518, symbol: D_1023518 }
-
-D_1023530:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, ctype: u8, offset: 0x1023530, tlut: 0x1023630, symbol: D_1023530 }
-
-D_1023630:
-  { type: TEXTURE, format: TLUT, colors: 104, offset: 0x1023630, ctype: u16, symbol: D_1023630 }
-
-D_1023700:
-  { type: GFX, offset: 0x1023700, symbol: D_1023700 }
-
-D_1023750:
-  { type: GFX, offset: 0x1023750, symbol: D_1023750 }
-
-D_10237E0:
-  { type: GFX, offset: 0x10237E0, symbol: D_10237E0 }
-
-D_1023878:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, ctype: u8, offset: 0x1023878, symbol: D_1023878 }
-
-D_1023C80:
-  { type: GFX, offset: 0x1023C80, symbol: D_1023C80 }
-
-D_1023E10:
-  { type: TEXTURE, format: CI4, width: 64, height: 16, ctype: u8, offset: 0x1023E10, tlut: 0x1024010, symbol: D_1023E10 }
-
-D_1024010:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1024010, ctype: u16, symbol: D_1024010 }
-
-D_1024020:
-  { type: TEXTURE, format: CI4, width: 64, height: 16, ctype: u8, offset: 0x1024020, tlut: 0x1024220, symbol: D_1024020 }
-
-D_1024220:
-  { type: TEXTURE, format: TLUT, colors: 8, offset: 0x1024220, ctype: u16, symbol: D_1024220 }
-
-D_1024230:
-  { type: GFX, offset: 0x1024230, symbol: D_1024230 }
-
-D_1024290:
-  { type: GFX, offset: 0x1024290, symbol: D_1024290 }
-
-aPeppyMarkDL:
-  { type: GFX, offset: 0x1024410, symbol: aPeppyMarkDL }
-
-aPeppyMarkTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10244D8, tlut: 0x1024558, symbol: aPeppyMarkTex }
-
-aPeppyMarkTLUT:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024558, ctype: u16, symbol: aPeppyMarkTLUT }
-
-aFalcoMarkDL:
-  { type: GFX, offset: 0x1024570, symbol: aFalcoMarkDL }
-
-aFalcoMarkTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024638, tlut: 0x10246B8, symbol: aFalcoMarkTex }
-
-aFalcoMarkTLUT:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10246B8, ctype: u16, symbol: aFalcoMarkTLUT }
-
-aSlippyMarkDL:
-  { type: GFX, offset: 0x10246D0, symbol: aSlippyMarkDL }
-
-aSlippyMarkTex:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024798, tlut: 0x1024818, symbol: aSlippyMarkTex }
-
-aSlippyMarkTLUT:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024818, ctype: u16, symbol: aSlippyMarkTLUT }
-
-aRadarMarkBossDL:
-  { type: GFX, offset: 0x1024830, symbol: aRadarMarkBossDL }
-
-D_10248F8:
-  { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10248F8, tlut: 0x1024978, symbol: D_10248F8 }
-
-D_1024978:
-  { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024978, ctype: u16, symbol: D_1024978 }
-
-aArrowDL:
-  { type: GFX, offset: 0x1024990, symbol: aArrowDL }
-
-D_1024A58:
-  { type: TEXTURE, format: CI4, width: 16, height: 8, ctype: u8, offset: 0x1024A58, tlut: 0x1024A98, symbol: D_1024A58 }
-
-D_1024A98:
-  { type: TEXTURE, format: TLUT, colors: 20, offset: 0x1024A98, ctype: u16, symbol: D_1024A98 }
-
-aOrbDL:
-  { type: GFX, offset: 0x1024AC0, symbol: aOrbDL }
-
-D_1024B58:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, ctype: u8, offset: 0x1024B58, symbol: D_1024B58 }
-
-D_1024F60:
-  { type: GFX, offset: 0x1024F60, symbol: D_1024F60 }
-
-D_1024FF8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x1024FF8, symbol: D_1024FF8 }
-
-D_1025800:
-  { type: GFX, offset: 0x1025800, symbol: D_1025800 }
-
-D_1025888:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x1025888, symbol: D_1025888 }
-
-D_1026090:
-  { type: GFX, offset: 0x1026090, symbol: D_1026090 }
-
-D_1026120:
-  { type: GFX, offset: 0x1026120, symbol: D_1026120 }
-
-D_1026230:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x1026230, symbol: D_1026230 }
-
-D_1027230:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x1027230, symbol: D_1027230 }
-
-D_1028230:
-  { type: GFX, offset: 0x1028230, symbol: D_1028230 }
-
-D_10288D8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x10288D8, symbol: D_10288D8 }
-
-D_1028AD8:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x1028AD8, symbol: D_1028AD8 }
-
-D_1028B58:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x1028B58, symbol: D_1028B58 }
-
-D_1028D58:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x1028D58, symbol: D_1028D58 }
-
-D_1028DE0:
-  { type: GFX, offset: 0x1028DE0, symbol: D_1028DE0 }
-
-D_1028E68:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x1028E68, symbol: D_1028E68 }
-
-D_1028EF0:
-  { type: GFX, offset: 0x1028EF0, symbol: D_1028EF0 }
-
-D_1028F78:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x1028F78, symbol: D_1028F78 }
-
-D_1029780:
-  { type: GFX, offset: 0x1029780, symbol: D_1029780 }
-
-D_1029808:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x1029808, symbol: D_1029808 }
-
-D_102A010:
-  { type: GFX, offset: 0x102A010, symbol: D_102A010 }
-
-D_102A098:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x102A098, symbol: D_102A098 }
-
-aBallDL:
-  { type: GFX, offset: 0x102A8A0, symbol: aBallDL }
-
-D_102A928:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x102A928, symbol: D_102A928 }
-
-D_102AB30:
-  { type: GFX, offset: 0x102AB30, symbol: D_102AB30 }
-
-D_102AC40:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x102AC40, symbol: D_102AC40 }
-
-D_102BC40:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x102BC40, symbol: D_102BC40 }
-
-D_102CC40:
-  { type: GFX, offset: 0x102CC40, symbol: D_102CC40 }
-
-D_102CD50:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x102CD50, symbol: D_102CD50 }
-
-D_102DD50:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, ctype: u16, offset: 0x102DD50, symbol: D_102DD50 }
-
-aBlueSphereDL:
-  { type: GFX, offset: 0x102ED50, symbol: aBlueSphereDL }
-
-D_102EDD8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x102EDD8, symbol: D_102EDD8 }
-
-D_102F5E0:
-  { type: GFX, offset: 0x102F5E0, symbol: D_102F5E0 }
-
-D_102F678:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x102F678, symbol: D_102F678 }
-
-D_102FE80:
-  { type: GFX, offset: 0x102FE80, symbol: D_102FE80 }
-
-D_102FF08:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, ctype: u16, offset: 0x102FF08, symbol: D_102FF08 }
-
-D_102FF90:
-  { type: GFX, offset: 0x102FF90, symbol: D_102FF90 }
-
-D_1031228:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 16, ctype: u16, offset: 0x1031228, symbol: D_1031228 }
-
-D_1031630:
-  { type: GFX, offset: 0x1031630, symbol: D_1031630 }
-
-D_1031CC08:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x1031CC0, symbol: D_1031CC0 }
-
-D_1031EC0:
-  { type: GFX, offset: 0x1031EC0, symbol: D_1031EC0 }
-
-D_1032578:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, ctype: u16, offset: 0x1032578, symbol: D_1032578 }
-
-aArwingShadowDL:
-  { type: GFX, offset: 0x1032780, symbol: aArwingShadowDL }
-
-D_1032808:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, ctype: u8, offset: 0x1032808, symbol: D_1032808 }
diff --git a/assets/yaml/jp/rev0/ast_corneria.yaml b/assets/yaml/jp/rev0/ast_corneria.yaml
deleted file mode 100644
index 10081e3fe..000000000
--- a/assets/yaml/jp/rev0/ast_corneria.yaml
+++ /dev/null
@@ -1,589 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0x932200]
-  header:
-    code:
-      - '#include "assets/ast_corneria.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-# Corneria
-# Former Army Base
-aCoTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 128, height: 28, offset: 0x6000000, symbol: aCoTitleCardTex }
-
-aCoWaterfallDL:
-  { type: GFX, offset: 0x6000E00, symbol: aCoWaterfallDL }
-
-D_CO_60018F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060018F8, symbol: D_CO_60018F8 }
-
-D_CO_60020F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060020F8, symbol: D_CO_60020F8 }
-
-D_CO_60028F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x060028F8, symbol: D_CO_60028F8 }
-
-D_CO_60038F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060038F8, symbol: D_CO_60038F8 }
-
-D_CO_60040F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060040F8, symbol: D_CO_60040F8 }
-
-D_CO_60049F0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x060049F0, symbol: D_CO_60049F0 }
-
-D_CO_6004900:
-  { type: GFX, offset: 0x6004900, symbol: D_CO_6004900 }
-
-D_CO_60059F0:
-  { type: GFX, offset: 0x60059F0, symbol: D_CO_60059F0 }
-
-D_CO_6005A80:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06005A80, symbol: D_CO_6005A80 }
-
-aCoArch3DL:
-  { type: GFX, offset: 0x6006A80, symbol: aCoArch3DL }
-
-D_CO_6006E08:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06006E08, symbol: D_CO_6006E08 }
-
-D_CO_6007610:
-  { type: GFX, offset: 0x6007610, symbol: D_CO_6007610 }
-
-D_CO_60091C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060091C8, symbol: D_CO_60091C8 }
-
-D_CO_60099C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x060099C8, symbol: D_CO_60099C8 }
-
-D_CO_6009BC8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06009BC8, symbol: D_CO_6009BC8 }
-
-D_CO_600A3C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600A3C8, symbol: D_CO_600A3C8 }
-
-D_CO_600ABC8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600ABC8, symbol: D_CO_600ABC8 }
-
-D_CO_600B3C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600B3C8, symbol: D_CO_600B3C8 }
-
-D_CO_600C3D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600C3D8, symbol: D_CO_600C3D8 }
-
-D_CO_600CBD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0600CBD8, symbol: D_CO_600CBD8 }
-
-D_CO_600DBD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600DBD8, symbol: D_CO_600DBD8 }
-
-D_CO_600E3D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600E3D8, symbol: D_CO_600E3D8 }
-
-D_CO_600EBD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600EBD8, symbol: D_CO_600EBD8 }
-
-D_CO_600F3D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600F3D8, symbol: D_CO_600F3D8 }
-
-D_CO_6010050:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06010050, symbol: D_CO_6010050 }
-
-D_CO_6010250:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06010250, symbol: D_CO_6010250 }
-
-D_CO_6010F90:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06010F90, symbol: D_CO_6010F90 }
-
-aCoHighway7DL:
-  { type: GFX, offset: 0x6010A50, symbol: aCoHighway7DL }
-
-aCoHighway5DL:
-  { type: GFX, offset: 0x6010E00, symbol: aCoHighway5DL }
-
-D_CO_6011790:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06011790, symbol: D_CO_6011790 }
-
-aCoCornerianFighterDL:
-  { type: GFX, offset: 0x6011F90, symbol: aCoCornerianFighterDL }
-
-D_CO_6012640:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06012640, symbol: D_CO_6012640 }
-
-D_CO_6012840:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06012840, symbol: D_CO_6012840 }
-
-D_CO_6012D00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06012D00, symbol: D_CO_6012D00 }
-
-aCoHighway1DL:
-  { type: GFX, offset: 0x60132B0, symbol: aCoHighway1DL }
-
-aCoArch2DL:
-  { type: GFX, offset: 0x60137B0, symbol: aCoArch2DL }
-
-aCoRockwallDL:
-  { type: GFX, offset: 0x6013B50, symbol: aCoRockwallDL }
-
-D_CO_6013BE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06013BE0, symbol: D_CO_6013BE0 }
-
-aCoHighway8DL:
-  { type: GFX, offset: 0x60143E0, symbol: aCoHighway8DL }
-
-aCoHighway4DL:
-  { type: GFX, offset: 0x6014500, symbol: aCoHighway4DL }
-
-aCoHighway6DL:
-  { type: GFX, offset: 0x6014670, symbol: aCoHighway6DL }
-
-aCoHighway9DL:
-  { type: GFX, offset: 0x6014A20, symbol: aCoHighway9DL }
-
-aCoBuilding3DL:
-  { type: GFX, offset: 0x6014B50, symbol: aCoBuilding3DL }
-
-D_CO_60151A8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x060151A8, symbol: D_CO_60151A8 }
-
-aCoTowerDL:
-  { type: GFX, offset: 0x60153B0, symbol: aCoTowerDL }
-
-aCoStoneArchDL:
-  { type: GFX, offset: 0x6015F00, symbol: aCoStoneArchDL }
-
-D_CO_6015700:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06015700, symbol: D_CO_6015700 }
-
-aRadarDL:
-  { type: GFX, offset: 0x6016270, symbol: aRadarDL }
-
-aCoHighway3DL:
-  { type: GFX, offset: 0x60164F0, symbol: aCoHighway3DL }
-
-aCoBuilding4DL:
-  { type: GFX, offset: 0x6016580, symbol: aCoBuilding4DL }
-
-D_CO_6017F10:
-  { type: GFX, offset: 0x6017F10, symbol: D_CO_6017F10 }
-
-D_CO_60186E0:
-  { type: GFX, offset: 0x60186E0, symbol: D_CO_60186E0 }
-
-aCoBuilding7DL:
-  { type: GFX, offset: 0x6018E80, symbol: aCoBuilding7DL }
-
-D_CO_60191C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060191C8, symbol: D_CO_60191C8 }
-
-D_CO_60199D0:
-  { type: GFX, offset: 0x60199D0, symbol: D_CO_60199D0 }
-
-D_CO_6019C60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06019C60, symbol: D_CO_6019C60 }
-
-D_CO_6019E60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06019E60, symbol: D_CO_6019E60 }
-
-D_CO_601FF58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601FF58, symbol: D_CO_601FF58 }
-
-aCoBuilding2DL:
-  { type: GFX, offset: 0x601A7D0, symbol: aCoBuilding2DL }
-
-D_CO_601AD60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601AD60, symbol: D_CO_601AD60 }
-
-aCoBuilding5DL:
-  { type: GFX, offset: 0x601B560, symbol: aCoBuilding5DL }
-
-D_CO_601B640:
-  { type: GFX, offset: 0x601B640, symbol: D_CO_601B640 }
-
-D_CO_601B6C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601B6C0, symbol: D_CO_601B6C0 }
-
-aCoBump2DL:
-  { type: GFX, offset: 0x601BEC0, symbol: aCoBump2DL }
-
-D_CO_601C1A8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601C1A8, symbol: D_CO_601C1A8 }
-
-aCoTreeDL:
-  { type: GFX, offset: 0x601C9B0, symbol: aCoTreeDL }
-
-D_CO_601CAA0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0601CAA0, symbol: D_CO_601CAA0 }
-
-D_CO_601DAA0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0601DAA0, symbol: D_CO_601DAA0 }
-
-D_CO_601EAA0:
-  { type: GFX, offset: 0x601EAA0, symbol: D_CO_601EAA0 }
-
-D_CO_601ED00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601ED00, symbol: D_CO_601ED00 }
-
-aCoRuin2DL:
-  { type: GFX, offset: 0x601F500, symbol: aCoRuin2DL }
-
-aCoArch1DL:
-  { type: GFX, offset: 0x601F5A0, symbol: aCoArch1DL }
-
-D_CO_6020760:
-  { type: GFX, offset: 0x6020760, symbol: D_CO_6020760 }
-
-aCoRadarDL:
-  { type: GFX, offset: 0x6020B40, symbol: aCoRadarDL }
-
-D_CO_6021188:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06021188, symbol: D_CO_6021188 }
-
-D_CO_60220D0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060220D0, symbol: D_CO_60220D0 }
-
-aCoIBeamDL:
-  { type: GFX, offset: 0x6023AC0, symbol: aCoIBeamDL }
-
-D_CO_6023DE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06023DE8, symbol: D_CO_6023DE8 }
-
-D_CO_6024160:
-  { type: GFX, offset: 0x6024160, symbol: D_CO_6024160 }
-
-aCoBump4DL:
-  { type: GFX, offset: 0x60244A0, symbol: aCoBump4DL }
-
-D_CO_60245E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x060245E0, symbol: D_CO_60245E0 }
-
-D_CO_6025500:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06025500, symbol: D_CO_6025500 }
-
-D_CO_6026420:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06026420, symbol: D_CO_6026420 }
-
-D_CO_6027340:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06027340, symbol: D_CO_6027340 }
-
-D_CO_6028260:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06028260, symbol: D_CO_6028260 }
-
-D_CO_6028A60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06028A60, symbol: D_CO_6028A60 }
-
-aCoSkibotAnim:
-  { type: SF64:ANIM, offset: 0x6029528, symbol: aCoSkibotAnim }
-
-aCoSkibotSkel:
-  { type: SF64:SKELETON, offset: 0x6029674, symbol: aCoSkibotSkel }
-
-aCoGaruda1Anim:
-  { type: SF64:ANIM, offset: 0x602991C, symbol: aCoGaruda1Anim }
-
-aCoGarudaSkel:
-  { type: SF64:SKELETON, offset: 0x6029A48, symbol: aCoGarudaSkel }
-
-aCoGaruda3Anim:
-  { type: SF64:ANIM, offset: 0x602A520, symbol: aCoGaruda3Anim }
-
-D_CO_602AA04:
-  { type: SF64:ANIM, offset: 0x602AA04, symbol: D_CO_602AA04 }
-
-aCoDoorsAnim:
-  { type: SF64:ANIM, offset: 0x602AA7C, symbol: aCoDoorsAnim }
-
-aCoDoorsSkel:
-  { type: SF64:SKELETON, offset: 0x602AB48, symbol: aCoDoorsSkel }
-
-aCoGrangaWalkingAnim:
-  { type: SF64:ANIM, offset: 0x602BC18, symbol: aCoGrangaWalkingAnim }
-
-aCoGrangaSkel:
-  { type: SF64:SKELETON, offset: 0x602BE64, symbol: aCoGrangaSkel }
-
-aCoGrangaStationaryAnim:
-  { type: SF64:ANIM, offset: 0x602C0D0, symbol: aCoGrangaStationaryAnim }
-
-D_CO_602D31C:
-  { type: SF64:ANIM, offset: 0x602D31C, symbol: D_CO_602D31C }
-
-aCoCarrierAnim:
-  { type: SF64:ANIM, offset: 0x602D400, symbol: aCoCarrierAnim }
-
-aCoCarrierSkel:
-  { type: SF64:SKELETON, offset: 0x602D5AC, symbol: aCoCarrierSkel }
-
-aCoBuilding1DL:
-  { type: GFX, offset: 0x602D5F0, symbol: aCoBuilding1DL }
-
-aCoBuilding9DL:
-  { type: GFX, offset: 0x602DA20, symbol: aCoBuilding9DL }
-
-aCoRuin1DL:
-  { type: GFX, offset: 0x602DCA0, symbol: aCoRuin1DL }
-
-D_CO_602DD40:
-  { type: GFX, offset: 0x602DD40, symbol: D_CO_602DD40 }
-
-aCoHighway2DL:
-  { type: GFX, offset: 0x602E080, symbol: aCoHighway2DL }
-
-aCoBump5DL:
-  { type: GFX, offset: 0x602E570, symbol: aCoBump5DL }
-
-aCoBump3DL:
-  { type: GFX, offset: 0x602E7A0, symbol: aCoBump3DL }
-
-aCoBump1DL:
-  { type: GFX, offset: 0x602E9E0, symbol: aCoBump1DL }
-
-D_CO_602ECB0:
-  { type: GFX, offset: 0x602ECB0, symbol: D_CO_602ECB0 }
-
-D_CO_602ED50:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 16, offset: 0x0602ED50, symbol: D_CO_602ED50 }
-
-aCoPoleDL:
-  { type: GFX, offset: 0x602F7C0, symbol: aCoPoleDL }
-
-D_CO_602F848:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0602F848, symbol: D_CO_602F848 }
-
-D_CO_6030850:
-  { type: GFX, offset: 0x6030850, symbol: D_CO_6030850 }
-
-D_CO_6030FD0:
-  { type: GFX, offset: 0x6030FD0, symbol: D_CO_6030FD0 }
-
-D_CO_6031130:
-  { type: GFX, offset: 0x6031130, symbol: D_CO_6031130 }
-
-D_CO_6031280:
-  { type: GFX, offset: 0x6031280, symbol: D_CO_6031280 }
-
-aCoGarudaTracksTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x060329C0, symbol: aCoGarudaTracksTex }
-
-CoMoleMissileDL:
-  { type: GFX, offset: 0x6032BC0, symbol: CoMoleMissileDL }
-
-D_CO_6033000:
-  { type: GFX, offset: 0x6033000, symbol: D_CO_6033000 }
-
-D_CO_6033088:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06033088, symbol: D_CO_6033088 }
-
-D_CO_6033290:
-  { type: GFX, offset: 0x6033290, symbol: D_CO_6033290 }
-
-D_CO_6033AF0:
-  { type: GFX, offset: 0x6033AF0, symbol: D_CO_6033AF0 }
-
-D_CO_6034388:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06034388, symbol: D_CO_6034388 }
-
-aCoShadow1DL:
-  { type: GFX, offset: 0x6034B90, symbol: aCoShadow1DL }
-
-D_CO_6034C28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06034C28, symbol: D_CO_6034C28 }
-
-D_CO_6035430:
-  { type: GFX, offset: 0x6035430, symbol: D_CO_6035430 }
-
-D_CO_60354F0:
-  { type: GFX, offset: 0x60354F0, symbol: D_CO_60354F0 }
-
-D_CO_60355A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060355A0, symbol: D_CO_60355A0 }
-
-aCoBuilding10DL:
-  { type: GFX, offset: 0x6035DA0, symbol: aCoBuilding10DL }
-
-aCoBuilding8DL:
-  { type: GFX, offset: 0x6035F10, symbol: aCoBuilding8DL }
-
-aCoBuilding6DL:
-  { type: GFX, offset: 0x60361F0, symbol: aCoBuilding6DL }
-
-D_CO_60363B0:
-  { type: GFX, offset: 0x60363B0, symbol: D_CO_60363B0 }
-
-D_CO_6036438:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x06036438, symbol: D_CO_6036438 }
-
-D_CO_6036840:
-  { type: GFX, offset: 0x6036840, symbol: D_CO_6036840 }
-
-D_CO_60368C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x060368C8, symbol: D_CO_60368C8 }
-
-D_CO_6036CD0:
-  { type: GFX, offset: 0x6036CD0, symbol: D_CO_6036CD0 }
-
-D_CO_6036D58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x06036D58, symbol: D_CO_6036D58 }
-
-D_CO_6037160:
-  { type: SF64:ENVIRONMENT, offset: 0x6037160, symbol: D_CO_6037160 }
-
-aCoOnRailsLevelObjects:
-  { type: SF64:OBJECT_INIT, offset: 0x60371A4, symbol: aCoOnRailsLevelObjects }
-
-aCoAllRangeLevelObjects:
-  { type: SF64:OBJECT_INIT, offset: 0x603B074, symbol: aCoAllRangeLevelObjects }
-
-D_CO_603D9E8:
-  { type: SF64:SCRIPT, offset: 0x603D9E8, symbol: D_CO_603D9E8 }
-
-# Seems unused
-D_CO_603DC40:
-  { type: SF64:HITBOX, offset: 0x603DC40, symbol: D_CO_603DC40 }
-
-aCoHighway2Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DD40, symbol: aCoHighway2Hitbox }
-
-aCoBuilding1Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DDF0, symbol: aCoBuilding1Hitbox }
-
-aCoHighway1Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DCA4, symbol: aCoHighway1Hitbox }
-
-aCoBuilding2Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DE8C, symbol: aCoBuilding2Hitbox }
-
-aCoBuilding3Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DEF4, symbol: aCoBuilding3Hitbox }
-
-aCoBuilding4Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DF8C, symbol: aCoBuilding4Hitbox }
-
-aCoBuilding5Hitbox:
-  { type: SF64:HITBOX, offset: 0x603DFDC, symbol: aCoBuilding5Hitbox }
-
-aCoBuilding6Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E014, symbol: aCoBuilding6Hitbox }
-
-aCoBuilding7Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E030, symbol: aCoBuilding7Hitbox }
-
-aCoBuilding8Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E09C, symbol: aCoBuilding8Hitbox }
-
-aCoWaterfallHitbox:
-  { type: SF64:HITBOX, offset: 0x603E0EC, symbol: aCoWaterfallHitbox }
-
-aCoTowerHitbox:
-  { type: SF64:HITBOX, offset: 0x603E118, symbol: aCoTowerHitbox }
-
-aCoArch1Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E14C, symbol: aCoArch1Hitbox }
-
-aCoArch2Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E1B4, symbol: aCoArch2Hitbox }
-
-aCoArch3Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E21C, symbol: aCoArch3Hitbox }
-
-# seems unused
-D_CO_603E2C0:
-  { type: SF64:HITBOX, offset: 0x603E2C0, symbol: D_CO_603E2C0 }
-
-# seems unused
-D_CO_603E2F4:
-  { type: SF64:HITBOX, offset: 0x603E2F4, symbol: D_CO_603E2F4 }
-
-aCoStoneArchHitbox:
-  { type: SF64:HITBOX, offset: 0x603E3E0, symbol: aCoStoneArchHitbox }
-
-aCoPoleHitbox:
-  { type: SF64:HITBOX, offset: 0x603E468, symbol: aCoPoleHitbox }
-
-aCoTreeHitbox:
-  { type: SF64:HITBOX, offset: 0x603E484, symbol: aCoTreeHitbox }
-
-aCoRadarHitbox:
-  { type: SF64:HITBOX, offset: 0x603E4A0, symbol: aCoRadarHitbox }
-
-aCoBuilding9Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E4A4, symbol: aCoBuilding9Hitbox }
-
-aCoBuilding10Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E4DC, symbol: aCoBuilding10Hitbox }
-
-aCoIBeamHitbox:
-  { type: SF64:HITBOX, offset: 0x603E514, symbol: aCoIBeamHitbox }
-
-aCoActorSkibotHitbox:
-  { type: SF64:HITBOX, offset: 0x603E54C, symbol: aCoActorSkibotHitbox }
-
-aCoActorRadarHitbox:
-  { type: SF64:HITBOX, offset: 0x603E598, symbol: aCoActorRadarHitbox }
-
-aCoMoleMissileHitbox:
-  { type: SF64:HITBOX, offset: 0x603E5B4, symbol: aCoMoleMissileHitbox }
-
-CoGarudaHitbox:
-  { type: SF64:HITBOX, offset: 0x603E5D0, symbol: CoGarudaHitbox }
-
-aCoGarudaDestroyHitbox:
-  { type: SF64:HITBOX, offset: 0x603E604, symbol: aCoGarudaDestroyHitbox }
-
-D_CO_603E620:
-  { type: SF64:HITBOX, offset: 0x603E620, symbol: D_CO_603E620 }
-
-aCoCarrierLeftHitbox:
-  { type: SF64:HITBOX, offset: 0x603E714, symbol: aCoCarrierLeftHitbox }
-
-aCoCarrierUpperHitbox:
-  { type: SF64:HITBOX, offset: 0x603E748, symbol: aCoCarrierUpperHitbox }
-
-aCoCarrierBottomHitbox:
-  { type: SF64:HITBOX, offset: 0x603E7C4, symbol: aCoCarrierBottomHitbox }
-
-D_CO_603E840:
-  { type: SF64:HITBOX, offset: 0x603E840, symbol: D_CO_603E840 }
-
-aCoRockwallHitbox:
-  { type: SF64:HITBOX, offset: 0x603E88C, symbol: aCoRockwallHitbox }
-
-aCoDoorsHitbox:
-  { type: SF64:HITBOX, offset: 0x603E8A8, symbol: aCoDoorsHitbox }
-
-D_CO_603E924:
-  { type: SF64:HITBOX, offset: 0x603E924, symbol: D_CO_603E924 }
-
-aCoBuildingOnFireHitbox:
-  { type: SF64:HITBOX, offset: 0x603E98C, symbol: aCoBuildingOnFireHitbox }
-
-aCoHighway5Hitbox:
-  { type: SF64:HITBOX, offset: 0x603E9EC, symbol: aCoHighway5Hitbox }
-
-aCoHighway6Hitbox:
-  { type: SF64:HITBOX, offset: 0x603EA08, symbol: aCoHighway6Hitbox }
-
-aCoHighway7Hitbox:
-  { type: SF64:HITBOX, offset: 0x603EA74, symbol: aCoHighway7Hitbox }
-
-aCoHighway8Hitbox:
-  { type: SF64:HITBOX, offset: 0x603EAE0, symbol: aCoHighway8Hitbox }
-
-aCoHighway9Hitbox:
-  { type: SF64:HITBOX, offset: 0x603EB0C, symbol: aCoHighway9Hitbox }
-
-D_CO_603EB38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0603EB38, symbol: D_CO_603EB38 }
-
-D_CO_603F338:
-  { type: SF64:TRIANGLE, count: 13, offset: 0x603F338, symbol: D_CO_603F338, mesh_symbol: D_CO_OFFSET, mesh_offset: 0x603F388 }
-
-D_CO_603F40C:
-  { type: SF64:TRIANGLE, count: 36, offset: 0x603F40C, symbol: D_CO_603F40C, mesh_symbol: D_CO_OFFSET }
diff --git a/assets/yaml/jp/rev0/ast_ending.yaml b/assets/yaml/jp/rev0/ast_ending.yaml
deleted file mode 100644
index a7b2657ef..000000000
--- a/assets/yaml/jp/rev0/ast_ending.yaml
+++ /dev/null
@@ -1,125 +0,0 @@
-:config:
-  segments:
-    - [0x07, 0xCEB3C0]
-  header:
-    code:
-      - '#include "assets/ast_ending.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_END_7000000: { type: GFX, offset: 0x7000000, symbol: D_END_7000000}
-
-D_END_7000118: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7000118, symbol: D_END_7000118}
-
-D_END_7001118: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7001118, symbol: D_END_7001118}
-
-D_END_7002120: { type: GFX, offset: 0x7002120, symbol: D_END_7002120}
-
-D_END_7002238: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7002238, symbol: D_END_7002238}
-
-D_END_7003238: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7003238, symbol: D_END_7003238}
-
-D_END_7004240: { type: GFX, offset: 0x7004240, symbol: D_END_7004240}
-
-D_END_7004620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7004620, symbol: D_END_7004620}
-
-D_END_7005620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7005620, symbol: D_END_7005620}
-
-D_END_7006620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7006620, symbol: D_END_7006620}
-
-D_END_7007620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7007620, symbol: D_END_7007620}
-
-D_END_7008620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7008620, symbol: D_END_7008620}
-
-D_END_7009620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x7009620, symbol: D_END_7009620}
-
-D_END_700A620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x700A620, symbol: D_END_700A620}
-
-D_END_700B620: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x700B620, symbol: D_END_700B620}
-
-D_END_700C620: { type: GFX, offset: 0x700C620, symbol: D_END_700C620}
-
-D_END_700C6A8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x700C6A8, symbol: D_END_700C6A8}
-
-D_END_700C8B0: { type: GFX, offset: 0x700C8B0, symbol: D_END_700C8B0}
-
-D_END_700C940: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x700C940, symbol: D_END_700C940}
-
-D_END_700D940: { type: GFX, offset: 0x700D940, symbol: D_END_700D940}
-
-D_END_700D9D8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x700D9D8, symbol: D_END_700D9D8}
-
-D_END_700E9E0: { type: GFX, offset: 0x700E9E0, symbol: D_END_700E9E0}
-
-D_END_700EA38: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x700EA38, symbol: D_END_700EA38}
-
-D_END_700F240: { type: GFX, offset: 0x700F240, symbol: D_END_700F240}
-
-D_END_700F320: { type: GFX, offset: 0x700F320, symbol: D_END_700F320}
-
-D_END_7010070: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7010070, symbol: D_END_7010070}
-
-D_END_70100F0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x70100F0, symbol: D_END_70100F0}
-
-D_END_7010170: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x7010170, symbol: D_END_7010170}
-
-D_END_7010970: { type: GFX, offset: 0x7010970, symbol: D_END_7010970}
-
-D_END_7010A08: {type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 32, offset: 0x7010A08, symbol: D_END_7010A08}
-
-D_END_7010E10: {type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 26, offset: 0x7010E10, symbol: D_END_7010E10, tlut: 0x7010EE0}
-
-D_END_7010EE0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x7010EE0, symbol: D_END_7010EE0}
-
-D_END_7010F00: {type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 26, offset: 0x7010F00, symbol: D_END_7010F00, tlut: 0x7010FD0}
-
-D_END_7010FD0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x7010FD0, symbol: D_END_7010FD0}
-
-D_END_7010FF0: {type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 26, offset: 0x7010FF0, symbol: D_END_7010FF0, tlut: 0x70110C0}
-
-D_END_70110C0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x70110C0, symbol: D_END_70110C0}
-
-D_END_70110E0: {type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 26, offset: 0x70110E0, symbol: D_END_70110E0, tlut: 0x70111B0}
-
-D_END_70111B0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x70111B0, symbol: D_END_70111B0}
-
-D_END_70111D0: { type: GFX, offset: 0x70111D0, symbol: D_END_70111D0}
-
-D_END_70113B8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x70113B8, symbol: D_END_70113B8}
-
-D_END_70123B8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x70123B8, symbol: D_END_70123B8}
-
-D_END_70133B8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x70133B8, symbol: D_END_70133B8}
-
-D_END_70143C0: { type: GFX, offset: 0x70143C0, symbol: D_END_70143C0}
-
-D_END_7014540: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7014540, symbol: D_END_7014540}
-
-D_END_7015540: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7015540, symbol: D_END_7015540}
-
-D_END_7016540: { type: GFX, offset: 0x7016540, symbol: D_END_7016540}
-
-D_END_7016658: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7016658, symbol: D_END_7016658}
-
-D_END_7017658: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x7017658, symbol: D_END_7017658}
-
-D_END_7018708: { type: SF64:ANIM, offset: 0x7018708, symbol: D_END_7018708}
-
-D_END_70187B4: { type: SF64:SKELETON, offset: 0x70187B4, symbol: D_END_70187B4}
-
-D_END_7019C90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019C90, symbol: D_END_7019C90}
-
-D_END_7019D10: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019D10, symbol: D_END_7019D10}
-
-D_END_7019D90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019D90, symbol: D_END_7019D90}
-
-D_END_7019E10: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019E10, symbol: D_END_7019E10}
-
-D_END_7019E90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019E90, symbol: D_END_7019E90}
-
-D_END_7019F10: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019F10, symbol: D_END_7019F10}
-
-D_END_7019F90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x7019F90, symbol: D_END_7019F90}
-
-D_END_701A010: {type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x701A010, symbol: D_END_701A010}
diff --git a/assets/yaml/jp/rev0/ast_ending_award_back.yaml b/assets/yaml/jp/rev0/ast_ending_award_back.yaml
deleted file mode 100644
index ceb8fe300..000000000
--- a/assets/yaml/jp/rev0/ast_ending_award_back.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-:config:
-  segments:
-    - [0x08, 0xD2C240]
-  header:
-    code:
-      - '#include "assets/ast_ending_award_back.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-ending_award_back:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 316, height: 270, offset: 0x8000000, symbol: gEndingAwardBack }
diff --git a/assets/yaml/jp/rev0/ast_ending_award_front.yaml b/assets/yaml/jp/rev0/ast_ending_award_front.yaml
deleted file mode 100644
index 1a2829c0d..000000000
--- a/assets/yaml/jp/rev0/ast_ending_award_front.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-:config:
-  segments:
-    - [0x08, 0xD071C0]
-  header:
-    code:
-      - '#include "assets/ast_ending_award_front.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-ending_award_front:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 316, height: 240, offset: 0x8000000, symbol: gEndingAwardFront }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_ending_expert.yaml b/assets/yaml/jp/rev0/ast_ending_expert.yaml
deleted file mode 100644
index 78ae54766..000000000
--- a/assets/yaml/jp/rev0/ast_ending_expert.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-:config:
-  segments:
-    - [0x08, 0xD55CD0]
-  header:
-    code:
-      - '#include "assets/ast_ending_expert.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-ending_expert_reward:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 316, height: 240, offset: 0x8000000, symbol: gEndingExpertReward }
-
-ending_normal_reward:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 316, height: 240, offset: 0x8025080, symbol: gEndingNormalReward }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_enmy_planet.yaml b/assets/yaml/jp/rev0/ast_enmy_planet.yaml
deleted file mode 100644
index 9b595a754..000000000
--- a/assets/yaml/jp/rev0/ast_enmy_planet.yaml
+++ /dev/null
@@ -1,112 +0,0 @@
-:config:
-  segments:
-    - [0x04, 0x8E8AE0]
-  header:
-    code:
-      - '#include "assets/ast_enmy_planet.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-# Seems unused
-D_ENMY_PLANET_4000290:
-  { type: GFX, offset: 0x4000290, symbol: D_ENMY_PLANET_4000290 }
-
-ast_enmy_planet_seg4_vtx_8F8:
-  { type: VTX, count: 90, offset: 0x40008F8, symbol: ast_enmy_planet_seg4_vtx_8F8 }
-
-aTripodAnim:
-  { type: SF64:ANIM, offset: 0x40001A4, symbol: aTripodAnim }
-
-aTripodSkel:
-  { type: SF64:SKELETON, offset: 0x4000270, symbol: aTripodSkel }
-
-aVenomTankDL:
-  { type: GFX, offset: 0x4000710, symbol: aVenomTankDL }
-
-D_ENMY_PLANET_4001298:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04001298, symbol: D_ENMY_PLANET_4001298 }
-
-D_ENMY_PLANET_4001698:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04001698, symbol: D_ENMY_PLANET_4001698 }
-
-D_ENMY_PLANET_4000E98:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04000E98, symbol: D_ENMY_PLANET_4000E98 }
-
-D_ENMY_PLANET_4001098:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04001098, symbol: D_ENMY_PLANET_4001098 }
-
-D_ENMY_PLANET_4001498:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04001498, symbol: D_ENMY_PLANET_4001498 }
-
-D_ENMY_PLANET_40018A0:
-  { type: GFX, offset: 0x40018A0, symbol: D_ENMY_PLANET_40018A0 }
-
-D_ENMY_PLANET_40024B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x040024B8, symbol: D_ENMY_PLANET_40024B8 }
-
-D_ENMY_PLANET_4002538:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x04002538, symbol: D_ENMY_PLANET_4002538 }
-
-D_ENMY_PLANET_4002D38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x04002D38, symbol: D_ENMY_PLANET_4002D38 }
-
-D_ENMY_PLANET_4003D38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x04003D38, symbol: D_ENMY_PLANET_4003D38 }
-
-D_ENMY_PLANET_4004538:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x04004538, symbol: D_ENMY_PLANET_4004538 }
-
-D_ENMY_PLANET_4004D38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x04004D38, symbol: D_ENMY_PLANET_4004D38 }
-
-aFirebirdAnim:
-  { type: SF64:ANIM, offset: 0x40057AC, symbol: aFirebirdAnim }
-
-aFirebirdSkel:
-  { type: SF64:SKELETON, offset: 0x40058B8, symbol: aFirebirdSkel }
-
-D_ENMY_PLANET_4005E78:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04005E78, symbol: D_ENMY_PLANET_4005E78 }
-
-D_ENMY_PLANET_4006078:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04006078, symbol: D_ENMY_PLANET_4006078 }
-
-D_ENMY_PLANET_4006280:
-  { type: GFX, offset: 0x4006280, symbol: D_ENMY_PLANET_4006280 }
-
-D_ENMY_PLANET_40064E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x040064E8, symbol: D_ENMY_PLANET_40064E8 }
-
-D_ENMY_PLANET_40066E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x040066E8, symbol: D_ENMY_PLANET_40066E8 }
-
-aVenomFighter1DL:
-  { type: GFX, offset: 0x40068F0, symbol: aVenomFighter1DL }
-
-aVenomFighter2DL:
-  { type: GFX, offset: 0x4006E90, symbol: aVenomFighter2DL }
-
-aGrangaFighter1DL:
-  { type: GFX, offset: 0x40073C0, symbol: aGrangaFighter1DL }
-
-aGrangaFighter2DL:
-  { type: GFX, offset: 0x4007AF0, symbol: aGrangaFighter2DL }
-
-D_ENMY_PLANET_4008100:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04008100, symbol: D_ENMY_PLANET_4008100 }
-
-D_ENMY_PLANET_4008CE0:
-  { type: GFX, offset: 0x4008CE0, symbol: D_ENMY_PLANET_4008CE0 }
-
-D_ENMY_PLANET_4008D68:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x04008D68, symbol: D_ENMY_PLANET_4008D68 }
-
-D_ENMY_PLANET_4008FF8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x04008FF8, symbol: D_ENMY_PLANET_4008FF8 }
-
-D_ENMY_PLANET_4008F70:
-  { type: GFX, offset: 0x4008F70, symbol: D_ENMY_PLANET_4008F70 }
-
-aSpyEyeDL:
-  { type: GFX, offset: 0x4009800, symbol: aSpyEyeDL }
diff --git a/assets/yaml/jp/rev0/ast_enmy_space.yaml b/assets/yaml/jp/rev0/ast_enmy_space.yaml
deleted file mode 100644
index e718d6104..000000000
--- a/assets/yaml/jp/rev0/ast_enmy_space.yaml
+++ /dev/null
@@ -1,134 +0,0 @@
-:config:
-  segments:
-    - [0x04, 0x8F2DE0]
-  header:
-    code:
-      - '#include "assets/ast_enmy_space.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aKillerBeeAnim:
-  { type: SF64:ANIM, offset: 0x4000080, symbol: aKillerBeeAnim }
-
-aKillerBeeSkel:
-  { type: SF64:SKELETON, offset: 0x400014C, symbol: aKillerBeeSkel }
-
-aEnmySpMeMora1DL:
-  { type: GFX, offset: 0x4000170, symbol: aEnmySpMeMora1DL }
-
-aSpiderDL:
-  { type: GFX, offset: 0x4000650, symbol: aSpiderDL }
-
-aGammaOnDL:
-  { type: GFX, offset: 0x4000EC0, symbol: aGammaOnDL }
-
-D_ENMY_SPACE_4001108:
-  { type: TEXTURE, format: RGBA16, offset: 0x4001108, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_4001108 }
-
-aAttacker2DL:
-  { type: GFX, offset: 0x4001310, symbol: aAttacker2DL }
-
-aCommanderTex1:
-  { type: TEXTURE, format: RGBA16, offset: 0x4001A30, width: 16, height: 16, ctype: u16, symbol: aCommanderTex1 }
-
-aCommanderTex2:
-  { type: TEXTURE, format: RGBA16, offset: 0x04001C30, width: 16, height: 16, ctype: u16, symbol: aCommanderTex2 }
-
-aCommanderTex3:
-  { type: TEXTURE, format: RGBA16, offset: 0x04001E30, width: 16, height: 16, ctype: u16, symbol: aCommanderTex3 }
-
-aCommanderTex4:
-  { type: TEXTURE, format: RGBA16, offset: 0x04002030, width: 16, height: 16, ctype: u16, symbol: aCommanderTex4 }
-
-D_ENMY_SPACE_4002230:
-  { type: GFX, offset: 0x4002230, symbol: D_ENMY_SPACE_4002230 }
-
-D_ENMY_SPACE_4002C50:
-  { type: TEXTURE, format: RGBA16, offset: 0x04002C50, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_4002C50 }
-
-D_ENMY_SPACE_4002E50:
-  { type: TEXTURE, format: RGBA16, offset: 0x04002E50, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_4002E50 }
-
-aCommanderTex6:
-  { type: TEXTURE, format: RGBA16, offset: 0x04003050, width: 16, height: 16, ctype: u16, symbol: aCommanderTex6 }
-
-D_ENMY_SPACE_4003250:
-  { type: TEXTURE, format: RGBA16, offset: 0x04003250, width: 4, height: 4, ctype: u16, symbol: D_ENMY_SPACE_4003250 }
-
-D_ENMY_SPACE_4003270:
-  { type: TEXTURE, format: RGBA16, offset: 0x04003270, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_4003270 }
-
-aCommanderTex5:
-  { type: TEXTURE, format: RGBA16, offset: 0x04003470, width: 16, height: 16, ctype: u16, symbol: aCommanderTex5 }
-
-D_ENMY_SPACE_4003670:
-  { type: TEXTURE, format: RGBA16, offset: 0x04003670, width: 8, height: 8, ctype: u16, symbol: D_ENMY_SPACE_4003670 }
-
-D_ENMY_SPACE_4003BD0:
-  { type: GFX, offset: 0x4003BD0, symbol: D_ENMY_SPACE_4003BD0 }
-
-D_ENMY_SPACE_40047E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x40047E8, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_40047E8 }
-
-D_ENMY_SPACE_4004FE8:
-  { type: TEXTURE, format: RGBA16, offset: 0x4004FE8, width: 64, height: 32, ctype: u16, symbol: D_ENMY_SPACE_4004FE8 }
-
-D_ENMY_SPACE_4005FE8:
-  { type: TEXTURE, format: RGBA16, offset: 0x4005FE8, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_4005FE8 }
-
-D_ENMY_SPACE_40067E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x40067E8, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_40067E8 }
-
-D_ENMY_SPACE_40077E8:
-  { type: TEXTURE, format: RGBA16, offset: 0x40077E8, width: 8, height: 8, ctype: u16, symbol: D_ENMY_SPACE_40077E8 }
-
-D_ENMY_SPACE_4007870:
-  { type: GFX, offset: 0x4007870, symbol: D_ENMY_SPACE_4007870 }
-
-D_ENMY_SPACE_4006FE8:
-  { type: TEXTURE, format: RGBA16, offset: 0x4006FE8, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_4006FE8 }
-
-aEnmySpMeMora2DL:
-  { type: GFX, offset: 0x40084D0, symbol: aEnmySpMeMora2DL }
-
-D_ENMY_SPACE_4008550:
-  { type: TEXTURE, format: RGBA16, offset: 0x04008550, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_4008550 }
-
-aGammaOffDL:
-  { type: GFX, offset: 0x4008D50, symbol: aGammaOffDL }
-
-aVenomFighter3DL:
-  { type: GFX, offset: 0x4008FA0, symbol: aVenomFighter3DL }
-
-D_ENMY_SPACE_40096B8:
-  { type: TEXTURE, format: RGBA16, offset: 0x040096B8, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_40096B8 }
-
-D_ENMY_SPACE_40098B8:
-  { type: TEXTURE, format: RGBA16, offset: 0x040098B8, width: 16, height: 16, ctype: u16, symbol: D_ENMY_SPACE_40098B8 }
-
-D_ENMY_SPACE_4009AB8:
-  { type: TEXTURE, format: RGBA16, offset: 0x04009AB8, width: 32, height: 32, ctype: u16, symbol: D_ENMY_SPACE_4009AB8 }
-
-aCruiserGunAnim:
-  { type: SF64:ANIM, offset: 0x400A30C, symbol: aCruiserGunAnim }
-
-aCruiserGunSkel:
-  { type: SF64:SKELETON, offset: 0x400A398, symbol: aCruiserGunSkel }
-
-aEnmySpMeMora3DL:
-  { type: GFX, offset: 0x400A630, symbol: aEnmySpMeMora3DL }
-
-
-aCommanderDL:
-  { type: GFX, offset: 0x400AAE0, symbol: aCommanderDL }
-
-
-aAttacker3DL:
-  { type: GFX, offset: 0x400B390, symbol: aAttacker3DL }
-
-
-aAttacker1DL:
-  { type: GFX, offset: 0x400BD20, symbol: aAttacker1DL }
-
-# size = 0xC510
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_font_3d.yaml b/assets/yaml/jp/rev0/ast_font_3d.yaml
deleted file mode 100644
index b2a5ff4c7..000000000
--- a/assets/yaml/jp/rev0/ast_font_3d.yaml
+++ /dev/null
@@ -1,128 +0,0 @@
-:config:
-  segments:
-    - [0x09, 0xCA2860]
-  header:
-    code:
-      - '#include "assets/ast_font_3d.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aFont3D_DOT:
-  { type: GFX, offset: 0x9000000, symbol: aFont3D_DOT }
-
-aFont3D_1:
-  { type: GFX, offset: 0x90001F0, symbol: aFont3D_1 }
-
-D_FONT3D_9000528:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 8, height: 8, offset: 0x09000528, symbol: D_FONT3D_9000528, tlut: 0x09000548 }
-
-D_FONT3D_9000548:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x09000548, symbol: D_FONT3D_9000548 }
-
-aFont3D_O:
-  { type: GFX, offset: 0x9000570, symbol: aFont3D_O }
-
-aFont3D_D:
-  { type: GFX, offset: 0x9000980, symbol: aFont3D_D }
-
-aFont3D_J:
-  { type: GFX, offset: 0x9001120, symbol: aFont3D_J }
-
-aFont3D_P:
-  { type: GFX, offset: 0x90014E0, symbol: aFont3D_P }
-
-aFont3D_Z:
-  { type: GFX, offset: 0x9001A10, symbol: aFont3D_Z }
-
-aFont3D_Y:
-  { type: GFX, offset: 0x9001E90, symbol: aFont3D_Y }
-
-aFont3D_X:
-  { type: GFX, offset: 0x90022A0, symbol: aFont3D_X }
-
-aFont3D_W:
-  { type: GFX, offset: 0x9002890, symbol: aFont3D_W }
-
-aFont3D_V:
-  { type: GFX, offset: 0x9002EA0, symbol: aFont3D_V }
-
-aFont3D_U:
-  { type: GFX, offset: 0x9003230, symbol: aFont3D_U }
-
-aFont3D_T:
-  { type: GFX, offset: 0x9003620, symbol: aFont3D_T }
-
-aFont3D_S:
-  { type: GFX, offset: 0x9003A30, symbol: aFont3D_S }
-
-aFont3D_R:
-  { type: GFX, offset: 0x9004230, symbol: aFont3D_R }
-
-aFont3D_Q:
-  { type: GFX, offset: 0x9004920, symbol: aFont3D_Q }
-
-aFont3D_N:
-  { type: GFX, offset: 0x9004E10, symbol: aFont3D_N }
-
-aFont3D_M:
-  { type: GFX, offset: 0x9005380, symbol: aFont3D_M }
-
-aFont3D_L:
-  { type: GFX, offset: 0x9005980, symbol: aFont3D_L }
-
-aFont3D_K:
-  { type: GFX, offset: 0x9005CA0, symbol: aFont3D_K }
-
-aFont3D_I:
-  { type: GFX, offset: 0x90062D0, symbol: aFont3D_I }
-
-aFont3D_H:
-  { type: GFX, offset: 0x9006500, symbol: aFont3D_H }
-
-aFont3D_G:
-  { type: GFX, offset: 0x9006AE0, symbol: aFont3D_G }
-
-aFont3D_F:
-  { type: GFX, offset: 0x90070C0, symbol: aFont3D_F }
-
-aFont3D_E:
-  { type: GFX, offset: 0x90075A0, symbol: aFont3D_E }
-
-aFont3D_C:
-  { type: GFX, offset: 0x9007BB0, symbol: aFont3D_C }
-
-aFont3D_B:
-  { type: GFX, offset: 0x9007FD0, symbol: aFont3D_B }
-
-aFont3D_A:
-  { type: GFX, offset: 0x90086F0, symbol: aFont3D_A }
-
-aFont3D_9:
-  { type: GFX, offset: 0x9008C60, symbol: aFont3D_9 }
-
-aFont3D_8:
-  { type: GFX, offset: 0x9009280, symbol: aFont3D_8 }
-
-aFont3D_7:
-  { type: GFX, offset: 0x9009990, symbol: aFont3D_7 }
-
-aFont3D_6:
-  { type: GFX, offset: 0x9009CB0, symbol: aFont3D_6 }
-
-aFont3D_5:
-  { type: GFX, offset: 0x900A290, symbol: aFont3D_5 }
-
-aFont3D_4:
-  { type: GFX, offset: 0x900A870, symbol: aFont3D_4 }
-
-aFont3D_3:
-  { type: GFX, offset: 0x900AF60, symbol: aFont3D_3 }
-
-aFont3D_2:
-  { type: GFX, offset: 0x900B580, symbol: aFont3D_2 }
-
-aFont3D_0:
-  { type: GFX, offset: 0x900BB90, symbol: aFont3D_0 }
-
-# size = 0xC1D0
diff --git a/assets/yaml/jp/rev0/ast_fortuna.yaml b/assets/yaml/jp/rev0/ast_fortuna.yaml
deleted file mode 100644
index 06b71044f..000000000
--- a/assets/yaml/jp/rev0/ast_fortuna.yaml
+++ /dev/null
@@ -1,183 +0,0 @@
-:config:
-  segments:
-    - [0x6, 0xAE9DC0]
-  header:
-    code:
-      - '#include "assets/ast_fortuna.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-
-# Fortuna
-# Former Defense Post
-aFoTitleCardTex:
-  { type: TEXTURE, format: IA8, width: 168, height: 28, offset: 0x6000000, ctype: u8, symbol: aFoTitleCardTex }
-
-D_FO_6001260:
-  { type: TEXTURE, format: IA8, width: 16, height: 16, offset: 0x6001260, ctype: u8, symbol: D_FO_6001260 }
-
-D_FO_6001360:
-  { type: GFX, offset: 0x6001360, symbol: D_FO_6001360 }
-
-D_FO_6001890:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6001890, ctype: u16, symbol: D_FO_6001890 }
-
-D_FO_6002090:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6002090, ctype: u16, symbol: D_FO_6002090 }
-
-D_FO_6002890:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6002890, ctype: u16, symbol: D_FO_6002890 }
-
-aFoBaseDL2:
-  { type: GFX, offset: 0x6003090, symbol: aFoBaseDL2 }
-
-D_FO_6003EC0:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003EC0, ctype: u16, symbol: D_FO_6003EC0 }
-
-D_FO_60046C0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x60046C0, ctype: u16, symbol: D_FO_60046C0 }
-
-D_FO_60048C0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x60048C0, ctype: u16, symbol: D_FO_60048C0 }
-
-D_FO_6004AC0:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, offset: 0x6004AC0, ctype: u16, symbol: D_FO_6004AC0 }
-
-D_FO_6005AC0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6005AC0, ctype: u16, symbol: D_FO_6005AC0 }
-
-D_FO_6005CC0:
-  { type: GFX, offset: 0x6005CC0, symbol: D_FO_6005CC0 }
-
-D_FO_6005F20:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6005F20, ctype: u16, symbol: D_FO_6005F20 }
-
-D_FO_6006120:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, offset: 0x6006120, ctype: u8, symbol: D_FO_6006120 }
-
-D_FO_6006220:
-  { type: TEXTURE, format: TLUT, colors: 120, offset: 0x6006220, ctype: u16, symbol: D_FO_6006220 }
-
-aFoMountain3DL:
-  { type: GFX, offset: 0x6006310, symbol: aFoMountain3DL }
-
-aFoTowerDL:
-  { type: GFX, offset: 0x60066E0, symbol: aFoTowerDL }
-
-ast_fortuna_seg6_vtx_6898:
-  { type: VTX, count: 52, offset: 0x6006898, symbol: ast_fortuna_seg6_vtx_6898 }
-
-D_FO_6006BE0:
-  { type: GFX, offset: 0x6006BE0, symbol: D_FO_6006BE0 }
-
-ast_fortuna_seg6_vtx_6D00:
-  { type: VTX, count: 62, offset: 0x6006D00, symbol: ast_fortuna_seg6_vtx_6D00 }
-
-D_FO_60070E0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x60070E0, ctype: u16, symbol: D_FO_60070E0 }
-
-D_FO_60072E0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x60072E0, ctype: u16, symbol: D_FO_60072E0 }
-
-D_FO_60074E0:
-  { type: GFX, offset: 0x60074E0, symbol: D_FO_60074E0 }
-
-D_FO_6007590:
-  { type: GFX, offset: 0x6007590, symbol: D_FO_6007590 }
-
-D_FO_6007730:
-  { type: GFX, offset: 0x6007730, symbol: D_FO_6007730 }
-
-aFoRadarAnim:
-  { type: SF64:ANIM, offset: 0x6007854, symbol: aFoRadarAnim }
-
-aFoRadarSkel:
-  { type: SF64:SKELETON, offset: 0x6007980, symbol: aFoRadarSkel }
-
-aFoMountain1DL:
-  { type: GFX, offset: 0x60079B0, symbol: aFoMountain1DL }
-
-aFoMountain2DL:
-  { type: GFX, offset: 0x6007D80, symbol: aFoMountain2DL }
-
-D_FO_6008150:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x6008150, ctype: u16, symbol: D_FO_6008150 }
-
-D_FO_6009070:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x6009070, ctype: u16, symbol: D_FO_6009070 }
-
-aFoEnemyShadowDL:
-  { type: GFX, offset: 0x6009F90, symbol: aFoEnemyShadowDL }
-
-D_FO_600A018:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, offset: 0x600A018, ctype: u8, symbol: D_FO_600A018 }
-
-aFoPoleDL:
-  { type: GFX, offset: 0x600A420, symbol: aFoPoleDL }
-
-D_FO_600A4A8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 64, offset: 0x600A4A8, ctype: u16, symbol: D_FO_600A4A8 }
-
-D_FO_600B4B0:
-  { type: GFX, offset: 0x600B4B0, symbol: D_FO_600B4B0 }
-
-D_FO_600B5C0:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x600B5C0, ctype: u16, symbol: D_FO_600B5C0 }
-
-D_FO_600C5C0:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x600C5C0, ctype: u16, symbol: D_FO_600C5C0 }
-
-aFoBaseDL1:
-  { type: GFX, offset: 0x600D5C0, symbol: aFoBaseDL1 }
-
-D_FO_600D7E8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600D7E8, ctype: u16, symbol: D_FO_600D7E8 }
-
-D_FO_600D9F0:
-  { type: GFX, offset: 0x600D9F0, symbol: D_FO_600D9F0 }
-
-D_FO_600DA88:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x600DA88, ctype: u16, symbol: D_FO_600DA88 }
-
-D_FO_600EA90:
-  { type: SF64:ENVIRONMENT, offset: 0x600EA90, symbol: D_FO_600EA90 }
-
-D_FO_600EAD4:
-  { type: SF64:OBJECT_INIT, offset: 0x600EAD4, symbol: D_FO_600EAD4 }
-
-D_FO_600F1DC:
-  { type: SF64:COLPOLY, offset: 0x600F1DC, count: 22, symbol: D_FO_600F1DC, mesh_symbol: D_FO_OFFSET }
-
-D_FO_600F3F4:
-  { type: SF64:COLPOLY, offset: 0x600F3F4, count: 22, symbol: D_FO_600F3F4, mesh_symbol: D_FO_OFFSET }
-
-D_FO_600F60C:
-  { type: SF64:COLPOLY, offset: 0x600F60C, count: 93, symbol: D_FO_600F60C, mesh_symbol: D_FO_OFFSET }
-
-aFoPoleHitbox:
-  { type: SF64:HITBOX, offset: 0x600FE9C, symbol: aFoPoleHitbox }
-
-aFoTowerHitbox:
-  { type: SF64:HITBOX, offset: 0x600FEB8, symbol: aFoTowerHitbox }
-
-aFoRadarHitbox:
-  { type: SF64:HITBOX, offset: 0x600FF30, symbol: aFoRadarHitbox }
-
-D_FO_600FF64:
-  { type: SF64:HITBOX, offset: 0x600FF64, symbol: D_FO_600FF64 }
-
-aFoMountain1Hitbox:
-  { type: SF64:HITBOX, offset: 0x600FF80, symbol: aFoMountain1Hitbox }
-
-aFoMountain2Hitbox:
-  { type: SF64:HITBOX, offset: 0x600FFA0, symbol: aFoMountain2Hitbox }
-
-aFoMountain3Hitbox:
-  { type: SF64:HITBOX, offset: 0x600FFC0, symbol: aFoMountain3Hitbox }
-
-aFoBaseHitbox:
-  { type: SF64:HITBOX, offset: 0x600FFE0, symbol: aFoBaseHitbox }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_great_fox.yaml b/assets/yaml/jp/rev0/ast_great_fox.yaml
deleted file mode 100644
index 6a0a0ff13..000000000
--- a/assets/yaml/jp/rev0/ast_great_fox.yaml
+++ /dev/null
@@ -1,93 +0,0 @@
-:config:
-  segments:
-    - [0xE, 0x8FF2F0]
-  header:
-    code:
-      - '#include "assets/ast_great_fox.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-# Great Fox Model
-aGreatFoxIntactDL:
-  { type: GFX, offset: 0xE000000, symbol: aGreatFoxIntactDL }
-
-D_GREAT_FOX_E0094B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E0094B0, symbol: D_GREAT_FOX_E0094B0 }
-
-D_GREAT_FOX_E009CB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0E009CB0, symbol: D_GREAT_FOX_E009CB0 }
-
-# Great Fox Logo
-D_GREAT_FOX_E00ACB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E00ACB0, symbol: D_GREAT_FOX_E00ACB0 }
-
-D_GREAT_FOX_E00B4B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0E00B4B0, symbol: D_GREAT_FOX_E00B4B0 }
-
-# Yellow Square
-D_GREAT_FOX_E00B530:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0E00B530, symbol: D_GREAT_FOX_E00B530 }
-
-D_GREAT_FOX_E00B5B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E00B5B0, symbol: D_GREAT_FOX_E00B5B0 }
-
-# Great Fox Starfox Logo
-D_GREAT_FOX_E00BDB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0E00BDB0, symbol: D_GREAT_FOX_E00BDB0 }
-
-D_GREAT_FOX_E00CDB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0E00CDB0, symbol: D_GREAT_FOX_E00CDB0 }
-
-D_GREAT_FOX_E00CFB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E00CFB0, symbol: D_GREAT_FOX_E00CFB0 }
-
-D_GREAT_FOX_E00D7B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E00D7B0, symbol: D_GREAT_FOX_E00D7B0 }
-
-# Black Square
-D_GREAT_FOX_E007430:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0E007430, symbol: D_GREAT_FOX_E007430 }
-
-# Great Fox Model (damaged)
-aGreatFoxDamagedDL:
-  { type: GFX, offset: 0xE003AB0, symbol: aGreatFoxDamagedDL }
-
-D_GREAT_FOX_E0074B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0E0074B0, symbol: D_GREAT_FOX_E0074B0 }
-
-D_GREAT_FOX_E0084B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E0084B0, symbol: D_GREAT_FOX_E0084B0 }
-
-D_GREAT_FOX_E008CB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0E008CB0, symbol: D_GREAT_FOX_E008CB0 }
-
-D_GREAT_FOX_E00DFB0:
-  { type: GFX, offset: 0xE00DFB0, symbol: D_GREAT_FOX_E00DFB0 }
-
-D_GREAT_FOX_E00E078:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0E00E078, symbol: D_GREAT_FOX_E00E078 }
-
-# Radio Face of ROB64
-D_GREAT_FOX_E00E100:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0E00E100, symbol: D_GREAT_FOX_E00E100 }
-
-# Radio Face of ROB64 (talking)
-D_GREAT_FOX_E00F020:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0E00F020, symbol: D_GREAT_FOX_E00F020 }
-
-# Radio Face of General Pepper
-D_GREAT_FOX_E00FF40:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0E00FF40, symbol: D_GREAT_FOX_E00FF40 }
-
-# Radio Face of General Pepper (talking)
-D_GREAT_FOX_E010E60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0E010E60, symbol: D_GREAT_FOX_E010E60 }
-
-D_GREAT_FOX_E011D80:
-  { type: GFX, offset: 0xE011D80, symbol: D_GREAT_FOX_E011D80 }
-
-D_GREAT_FOX_E011E08:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0E011E08, symbol: D_GREAT_FOX_E011E08 }
-
-# size = 0x11E90
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_katina.yaml b/assets/yaml/jp/rev0/ast_katina.yaml
deleted file mode 100644
index 404f5fd0b..000000000
--- a/assets/yaml/jp/rev0/ast_katina.yaml
+++ /dev/null
@@ -1,179 +0,0 @@
-:config:
-  segments:
-    - [0x6, 0xB7E0B0]
-  header:
-    code:
-      - '#include "assets/ast_katina.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-
-# Katina
-# Frontline Base
-aKaTitleCardTex:
-  { type: TEXTURE, format: IA8, width: 168, height: 28, offset: 0x6000000, ctype: u8, symbol: aKaTitleCardTex }
-
-D_KA_6001260:
-  { type: TEXTURE, format: IA8, width: 8, height: 8, offset: 0x6001260, ctype: u8, symbol: D_KA_6001260 }
-
-aKaDestroyedHatchDL:
-  { type: GFX, offset: 0x60012A0, symbol: aKaDestroyedHatchDL }
-
-aKaEnemyDL:
-  { type: GFX, offset: 0x6001530, symbol: aKaEnemyDL }
-
-D_KA_6001968:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6001968, ctype: u16, symbol: D_KA_6001968 }
-
-# Mothership model
-D_KA_6002170:
-  { type: GFX, offset: 0x6002170, symbol: D_KA_6002170 }
-
-D_KA_6004078:
-  { type: TEXTURE, format: RGBA16, width: 8, height: 8, offset: 0x6004078, ctype: u16, symbol: D_KA_6004078 }
-
-D_KA_60040F8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60040F8, ctype: u16, symbol: D_KA_60040F8 }
-
-D_KA_60048F8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60048F8, ctype: u16, symbol: D_KA_60048F8 }
-
-D_KA_60050F8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x60050F8, ctype: u16, symbol: D_KA_60050F8 }
-
-D_KA_60052F8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60052F8, ctype: u16, symbol: D_KA_60052F8 }
-
-D_KA_6005AF8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6005AF8, ctype: u16, symbol: D_KA_6005AF8 }
-
-D_KA_60062F8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60062F8, ctype: u16, symbol: D_KA_60062F8 }
-
-D_KA_6006AF8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006AF8, ctype: u16, symbol: D_KA_6006AF8 }
-
-aKaDestroyedKaSaucererDL:
-  { type: GFX, offset: 0x6007300, symbol: aKaDestroyedKaSaucererDL }
-
-D_KA_6009250:
-  { type: GFX, offset: 0x6009250, symbol: D_KA_6009250 }
-
-D_KA_60094A8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60094A8, ctype: u16, symbol: D_KA_60094A8 }
-
-D_KA_6009CB0:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x6009CB0, ctype: u16, symbol: D_KA_6009CB0 }
-
-D_KA_600ABD0:
-  { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x600ABD0, ctype: u16, symbol: D_KA_600ABD0 }
-
-aKaFLBaseDL:
-  { type: GFX, offset: 0x600BAF0, symbol: aKaFLBaseDL }
-
-D_KA_600BDB0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600BDB0, ctype: u16, symbol: D_KA_600BDB0 }
-
-D_KA_600C2D8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600C2D8, ctype: u16, symbol: D_KA_600C2D8 }
-
-aKaFLBaseDestroyedDL:
-  { type: GFX, offset: 0x600C4E0, symbol: aKaFLBaseDestroyedDL }
-
-D_KA_600C760:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600C760, ctype: u16, symbol: D_KA_600C760 }
-
-D_KA_600C960:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600C960, ctype: u16, symbol: D_KA_600C960 }
-
-# Mothership Core
-D_KA_600CB60:
-  { type: GFX, offset: 0x600CB60, symbol: D_KA_600CB60 }
-
-D_KA_600BFB0:
-  { type: GFX, offset: 0x600BFB0, symbol: D_KA_600BFB0 }
-
-aDestroyedHatch2DL:
-  { type: GFX, offset: 0x600CDC0, symbol: aDestroyedHatch2DL }
-
-aDestroyedCoreDL:
-  { type: GFX, offset: 0x600D090, symbol: aDestroyedCoreDL }
-
-aDestroyedHatch4DL:
-  { type: GFX, offset: 0x600D290, symbol: aDestroyedHatch4DL }
-
-aDestroyedHatch3DL:
-  { type: GFX, offset: 0x600D4E0, symbol: aDestroyedHatch3DL }
-
-aKaCornerianFighterShadowDL:
-  { type: GFX, offset: 0x600D730, symbol: aKaCornerianFighterShadowDL }
-
-D_KA_600D7B8:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, offset: 0x600D7B8, ctype: u8, symbol: D_KA_600D7B8 }
-
-aKaEnemyShadowDL:
-  { type: GFX, offset: 0x600DBC0, symbol: aKaEnemyShadowDL }
-
-D_KA_600DC48:
-  { type: TEXTURE, format: IA8, width: 32, height: 32, offset: 0x600DC48, ctype: u8, symbol: D_KA_600DC48 }
-
-aKaCornerianFighterDL:
-  { type: GFX, offset: 0x600E050, symbol: aKaCornerianFighterDL }
-
-D_KA_600E7E8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600E7E8, ctype: u16, symbol: D_KA_600E7E8 }
-
-D_KA_600E9E8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600E9E8, ctype: u16, symbol: D_KA_600E9E8 }
-
-D_KA_600EBE8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600EBE8, ctype: u16, symbol: D_KA_600EBE8 }
-
-D_KA_600EDE8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600EDE8, ctype: u16, symbol: D_KA_600EDE8 }
-
-aKaEnemyLowPolyDL:
-  { type: GFX, offset: 0x600EFF0, symbol: aKaEnemyLowPolyDL }
-
-D_KA_600F1D0:
-  { type: GFX, offset: 0x600F1D0, symbol: D_KA_600F1D0 }
-
-D_KA_600F260:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x600F260, ctype: u16, symbol: D_KA_600F260 }
-
-D_KA_6010260:
-  { type: GFX, offset: 0x6010260, symbol: D_KA_6010260 }
-
-D_KA_60105D8:
-  { type: SF64:ANIM, offset: 0x60105D8, symbol: D_KA_60105D8 }
-
-D_KA_6010A60:
-  { type: GFX, offset: 0x6010A60, symbol: D_KA_6010A60 }
-
-D_KA_6010D20:
-  { type: GFX, offset: 0x6010D20, symbol: D_KA_6010D20 }
-
-D_KA_6010744:
-  { type: SF64:SKELETON, offset: 0x6010744, symbol: D_KA_6010744 }
-
-D_KA_6010780:
-  { type: GFX, offset: 0x6010780, symbol: D_KA_6010780 }
-
-D_KA_6011000:
-  { type: SF64:ENVIRONMENT, offset: 0x6011000, symbol: D_KA_6011000 }
-
-D_KA_6011044:
-  { type: SF64:OBJECT_INIT, offset: 0x6011044, symbol: D_KA_6011044 }
-
-aKaSaucererHitbox:
-  { type: SF64:HITBOX, offset: 0x6011058, symbol: aKaSaucererHitbox }
-
-aKaFrontlineBaseHitbox:
-  { type: SF64:HITBOX, offset: 0x601115C, symbol: aKaFrontlineBaseHitbox }
-
-D_KA_60111D8:
-  { type: SF64:HITBOX, offset: 0x60111D8, symbol: D_KA_60111D8 }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_landmaster.yaml b/assets/yaml/jp/rev0/ast_landmaster.yaml
deleted file mode 100644
index 082bac8b7..000000000
--- a/assets/yaml/jp/rev0/ast_landmaster.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-:config:
-  segments:
-    - [0x3, 0x8A9520]
-  header:
-    code:
-      - '#include "assets/ast_landmaster.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aLandmasterLifeIconTex:
-  { type: TEXTURE, format: CI4, offset: 0x3000000, width: 16, height: 16, ctype: u8, tlut: 0x3000080, symbol: aLandmasterLifeIconTex }
-
-aLandmasterLifeIconTLUT:
-  { type: TEXTURE, format: TLUT, offset: 0x3000080, colors: 8, ctype: u16, symbol: aLandmasterLifeIconTLUT }
-
-aLandmasterModelDL:
-  { type: GFX, offset: 0x3000090, symbol: aLandmasterModelDL }
-
-D_landmaster_3004CA8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3004CA8, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3004CA8 }
-
-D_landmaster_30054A8:
-  { type: TEXTURE, format: RGBA16, offset: 0x30054A8, width: 32, height: 32, ctype: u16, symbol: D_landmaster_30054A8 }
-
-D_landmaster_3005CA8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3005CA8, width: 16, height: 16, ctype: u16, symbol: D_landmaster_3005CA8 }
-
-D_landmaster_3005EA8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3005EA8, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3005EA8 }
-
-D_landmaster_3002680:
-  { type: TEXTURE, format: RGBA16, offset: 0x3002680, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3002680 }
-
-D_landmaster_3002E80:
-  { type: TEXTURE, format: RGBA16, offset: 0x3002E80, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3002E80 }
-
-D_landmaster_3003680:
-  { type: TEXTURE, format: RGBA16, offset: 0x3003680, width: 64, height: 32, ctype: u16, symbol: D_landmaster_3003680 }
-
-D_landmaster_3001680:
-  { type: TEXTURE, format: RGBA16, offset: 0x3001680, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3001680 }
-
-D_landmaster_3001E80:
-  { type: TEXTURE, format: RGBA16, offset: 0x3001E80, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3001E80 }
-
-aLandmasterCanonDL:
-  { type: GFX, offset: 0x3004680, symbol: aLandmasterCanonDL }
-
-D_landmaster_30066B0:
-  { type: GFX, offset: 0x30066B0, symbol: D_landmaster_30066B0 }
-
-D_landmaster_3006738:
-  { type: TEXTURE, format: IA8, offset: 0x3006738, width: 16, height: 32, ctype: u8, symbol: D_landmaster_3006738 }
-
-D_landmaster_3006940:
-  { type: GFX, offset: 0x3006940, symbol: D_landmaster_3006940 }
-
-D_landmaster_30069D8:
-  { type: TEXTURE, format: IA8, offset: 0x030069D8, width: 32, height: 32, ctype: u8, symbol: D_landmaster_30069D8 }
-
-D_landmaster_3006DE0:
-  { type: GFX, offset: 0x3006DE0, symbol: D_landmaster_3006DE0 }
-
-D_landmaster_3006E68:
-  { type: TEXTURE, format: RGBA32, offset: 0x3006E68, width: 32, height: 32, ctype: u32, symbol: D_landmaster_3006E68 }
-
-D_landmaster_3007E70:
-  { type: GFX, offset: 0x3007E70, symbol: D_landmaster_3007E70 }
-
-D_landmaster_3007EF8:
-  { type: TEXTURE, format: RGBA16, offset: 0x3007EF8, width: 16, height: 16, ctype: u16, symbol: D_landmaster_3007EF8 }
-
-D_landmaster_3008100:
-  { type: GFX, offset: 0x3008100, symbol: D_landmaster_3008100 }
-
-D_landmaster_3008188:
-  { type: TEXTURE, format: IA8, offset: 0x03008188, width: 32, height: 32, ctype: u8, symbol: D_landmaster_3008188 }
diff --git a/assets/yaml/jp/rev0/ast_logo.yml b/assets/yaml/jp/rev0/ast_logo.yml
deleted file mode 100644
index 67da0dc18..000000000
--- a/assets/yaml/jp/rev0/ast_logo.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-:config:
-  segments:
-    - [0x0F, 0xCE8EC0]
-  header:
-    code:
-      - '#include "assets/ast_logo.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-nintendo_logo:
-  type: TEXTURE
-  offset: 0xF000000
-  format: IA8
-  width: 128
-  height: 74
-  ctype: u8
-  symbol: gNintendoLogo
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_macbeth.yaml b/assets/yaml/jp/rev0/ast_macbeth.yaml
deleted file mode 100644
index 7f559a580..000000000
--- a/assets/yaml/jp/rev0/ast_macbeth.yaml
+++ /dev/null
@@ -1,938 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xB8F2B0]
-  header:
-    code:
-      - '#include "assets/ast_macbeth.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-aMaTitleCardTex:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 160, height: 28, offset: 0x6000000, symbol: aMaTitleCardTex}
-
-D_MA_6001180:
-  {type: GFX, offset: 0x6001180, symbol: D_MA_6001180}
-
-D_MA_60012A0:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x60012A0, symbol: D_MA_60012A0, tlut: 0x60013A0}
-
-D_MA_60013A0:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 128, offset: 0x60013A0, symbol: D_MA_60013A0}
-
-D_MA_60014A0:
-  {type: GFX, offset: 0x60014A0, symbol: D_MA_60014A0}
-
-D_MA_6001578:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6001578, symbol: D_MA_6001578, tlut: 0x6001978}
-
-D_MA_6001978:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 112, offset: 0x6001978, symbol: D_MA_6001978}
-
-D_MA_6001A60:
-  {type: GFX, offset: 0x6001A60, symbol: D_MA_6001A60}
-
-D_MA_6001B38:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6001B38, symbol: D_MA_6001B38, tlut: 0x6001C38}
-
-D_MA_6001C38:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 32, offset: 0x6001C38, symbol: D_MA_6001C38}
-
-D_MA_6001C78:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6001C78, symbol: D_MA_6001C78, tlut: 0x6002078}
-
-D_MA_6002078:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 80, offset: 0x6002078, symbol: D_MA_6002078}
-
-D_MA_6002118:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6002118, symbol: D_MA_6002118, tlut: 0x6002518}
-
-D_MA_6002518:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 240, offset: 0x6002518, symbol: D_MA_6002518}
-
-D_MA_60026F8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x60026F8, symbol: D_MA_60026F8, tlut: 0x60027F8}
-
-D_MA_60027F8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 72, offset: 0x60027F8, symbol: D_MA_60027F8}
-
-aMaGuillotine2DL:
-  {type: GFX, offset: 0x6002890, symbol: aMaGuillotine2DL}
-
-D_MA_6002C20:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 16, offset: 0x6002C20, symbol: D_MA_6002C20, tlut: 0x6002E20}
-
-D_MA_6002E20:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 32, offset: 0x6002E20, symbol: D_MA_6002E20}
-
-D_MA_6002E60:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6002E60, symbol: D_MA_6002E60, tlut: 0x6002F60}
-
-D_MA_6002F60:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 72, offset: 0x6002F60, symbol: D_MA_6002F60}
-
-D_MA_6002FF0:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 8, height: 8, offset: 0x6002FF0, symbol: D_MA_6002FF0, tlut: 0x6003030}
-
-D_MA_6003030:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 32, offset: 0x6003030, symbol: D_MA_6003030}
-
-aMaRailroadSwitch3DL:
-  {type: GFX, offset: 0x6003070, symbol: aMaRailroadSwitch3DL}
-
-D_MA_6003138:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6003138, symbol: D_MA_6003138, tlut: 0x6003238}
-
-D_MA_6003238:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 152, offset: 0x6003238, symbol: D_MA_6003238}
-
-D_MA_6003370:
-  {type: GFX, offset: 0x6003370, symbol: D_MA_6003370}
-
-D_MA_6003B58:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6003B58, symbol: D_MA_6003B58, tlut: 0x6003F58}
-
-D_MA_6003F58:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 56, offset: 0x6003F58, symbol: D_MA_6003F58}
-
-D_MA_6003FC8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6003FC8, symbol: D_MA_6003FC8, tlut: 0x60043C8}
-
-D_MA_60043C8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 56, offset: 0x60043C8, symbol: D_MA_60043C8}
-
-D_MA_6004440:
-  {type: GFX, offset: 0x6004440, symbol: D_MA_6004440}
-
-D_MA_6004640:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6004640, symbol: D_MA_6004640, tlut: 0x6004A40}
-
-D_MA_6004A40:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 256, offset: 0x6004A40, symbol: D_MA_6004A40}
-
-D_MA_60050F8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x60050F8, symbol: D_MA_60050F8, tlut: 0x60051F8}
-
-D_MA_60051F8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 32, offset: 0x60051F8, symbol: D_MA_60051F8}
-
-D_MA_6005238:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6005238, symbol: D_MA_6005238, tlut: 0x6005638}
-
-D_MA_6005638:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 248, offset: 0x6005638, symbol: D_MA_6005638}
-
-D_MA_6005828:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x6005828, symbol: D_MA_6005828}
-
-D_MA_6006030:
-  {type: GFX, offset: 0x6006030, symbol: D_MA_6006030}
-
-aMaIndicatorSignDL:
-  {type: GFX, offset: 0x60066A0, symbol: aMaIndicatorSignDL}
-
-D_MA_60069A8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x60069A8, symbol: D_MA_60069A8, tlut: 0x6006AA8}
-
-D_MA_6006AA8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 160, offset: 0x6006AA8, symbol: D_MA_6006AA8}
-
-D_MA_6006BE8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6006BE8, symbol: D_MA_6006BE8, tlut: 0x6006FE8}
-
-D_MA_6006FE8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 232, offset: 0x6006FE8, symbol: D_MA_6006FE8}
-
-aMaDistanceSign4DL:
-  {type: GFX, offset: 0x60071C0, symbol: aMaDistanceSign4DL}
-
-aMaDistanceSign3DL:
-  {type: GFX, offset: 0x6007290, symbol: aMaDistanceSign3DL}
-
-aMaDistanceSign2DL:
-  {type: GFX, offset: 0x6007360, symbol: aMaDistanceSign2DL}
-
-aMaDistanceSign1DL:
-  {type: GFX, offset: 0x6007430, symbol: aMaDistanceSign1DL}
-
-aMaDistanceSign5DL:
-  {type: GFX, offset: 0x6007500, symbol: aMaDistanceSign5DL}
-
-aMaWeaponsFactoryDL:
-  {type: GFX, offset: 0x60075D0, symbol: aMaWeaponsFactoryDL}
-
-D_MA_60092E0:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x60092E0, symbol: D_MA_60092E0}
-
-D_MA_6009AE0:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6009AE0, symbol: D_MA_6009AE0, tlut: 0x6009BE0}
-
-D_MA_6009BE0:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 56, offset: 0x6009BE0, symbol: D_MA_6009BE0}
-
-aMaRailroadSwitch8DL:
-  {type: GFX, offset: 0x6009C50, symbol: aMaRailroadSwitch8DL}
-
-D_MA_6009D18:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6009D18, symbol: D_MA_6009D18, tlut: 0x6009E18}
-
-D_MA_6009E18:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 120, offset: 0x6009E18, symbol: D_MA_6009E18}
-
-aMaRailroadSwitch7DL:
-  {type: GFX, offset: 0x6009F10, symbol: aMaRailroadSwitch7DL}
-
-D_MA_6009FD8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6009FD8, symbol: D_MA_6009FD8, tlut: 0x600A0D8}
-
-D_MA_600A0D8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 136, offset: 0x600A0D8, symbol: D_MA_600A0D8}
-
-aMaRailroadSwitch6DL:
-  {type: GFX, offset: 0x600A1F0, symbol: aMaRailroadSwitch6DL}
-
-D_MA_600A2B8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600A2B8, symbol: D_MA_600A2B8, tlut: 0x600A3B8}
-
-D_MA_600A3B8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 136, offset: 0x600A3B8, symbol: D_MA_600A3B8}
-
-aMaRailroadSwitch5DL:
-  {type: GFX, offset: 0x600A4D0, symbol: aMaRailroadSwitch5DL}
-
-D_MA_600A598:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600A598, symbol: D_MA_600A598, tlut: 0x600A698}
-
-D_MA_600A698:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 152, offset: 0x600A698, symbol: D_MA_600A698}
-
-aMaRailroadSwitch4DL:
-  {type: GFX, offset: 0x600A7D0, symbol: aMaRailroadSwitch4DL}
-
-D_MA_600A898:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600A898, symbol: D_MA_600A898, tlut: 0x600A998}
-
-D_MA_600A998:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 104, offset: 0x600A998, symbol: D_MA_600A998}
-
-aMaRailroadSwitch2DL:
-  {type: GFX, offset: 0x600AA70, symbol: aMaRailroadSwitch2DL}
-
-D_MA_600AB38:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600AB38, symbol: D_MA_600AB38, tlut: 0x600AC38}
-
-D_MA_600AC38:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 136, offset: 0x600AC38, symbol: D_MA_600AC38}
-
-aMaRailroadSwitch1DL:
-  {type: GFX, offset: 0x600AD50, symbol: aMaRailroadSwitch1DL}
-
-D_MA_600AE18:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 8, height: 16, offset: 0x600AE18, symbol: D_MA_600AE18, tlut: 0x600AE98}
-
-D_MA_600AE98:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 80, offset: 0x600AE98, symbol: D_MA_600AE98}
-
-aMaGuillotine1DL:
-  {type: GFX, offset: 0x600AF40, symbol: aMaGuillotine1DL}
-
-D_MA_600B2E0:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 64, offset: 0x600B2E0, symbol: D_MA_600B2E0}
-
-D_MA_600C2E0:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600C2E0, symbol: D_MA_600C2E0, tlut: 0x600C3E0}
-
-D_MA_600C3E0:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 40, offset: 0x600C3E0, symbol: D_MA_600C3E0}
-
-D_MA_600C4D0:
-  {type: SF64:ANIM, offset: 0x600C4D0, symbol: D_MA_600C4D0}
-
-D_MA_600C65C:
-  {type: SF64:SKELETON, offset: 0x600C65C, symbol: D_MA_600C65C}
-
-D_MA_600CD18:
-  {type: SF64:ANIM, offset: 0x600CD18, symbol: D_MA_600CD18}
-
-D_MA_600D1E4:
-  {type: SF64:SKELETON, offset: 0x600D1E4, symbol: D_MA_600D1E4}
-
-D_MA_600D280:
-  { type: TEXTURE, format: IA16, ctype: u16, width: 16, height: 16, offset: 0x600D280, symbol: D_MA_600D280}
-
-aMaSpearDL:
-  {type: GFX, offset: 0x600D480, symbol: aMaSpearDL}
-
-D_MA_600D878:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600D878, symbol: D_MA_600D878, tlut: 0x600D978}
-
-D_MA_600D978:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 72, offset: 0x600D978, symbol: D_MA_600D978}
-
-aMaLaserTurretDL:
-  {type: GFX, offset: 0x600DA10, symbol: aMaLaserTurretDL}
-
-D_MA_600DF60:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x600DF60, symbol: D_MA_600DF60, tlut: 0x600E360}
-
-D_MA_600E360:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 128, offset: 0x600E360, symbol: D_MA_600E360}
-
-D_MA_600E460:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 4, height: 4, offset: 0x600E460, symbol: D_MA_600E460}
-
-D_MA_600E480:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x600E480, symbol: D_MA_600E480, tlut: 0x600E880}
-
-D_MA_600E880:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 232, offset: 0x600E880, symbol: D_MA_600E880}
-
-D_MA_600EE38:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600EE38, symbol: D_MA_600EE38, tlut: 0x600EF38}
-
-D_MA_600EF38:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 48, offset: 0x600EF38, symbol: D_MA_600EF38}
-
-D_MA_600EF98:
-  { type: TEXTURE, format: CI4, ctype: u8, width: 16, height: 16, offset: 0x600EF98, symbol: D_MA_600EF98, tlut: 0x600F018}
-
-D_MA_600F018:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 8, offset: 0x600F018, symbol: D_MA_600F018}
-
-D_MA_600F028:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600F028, symbol: D_MA_600F028, tlut: 0x600F128}
-
-D_MA_600F128:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 24, offset: 0x600F128, symbol: D_MA_600F128}
-
-D_MA_600F160:
-  {type: GFX, offset: 0x600F160, symbol: D_MA_600F160}
-
-D_MA_600F2F0:
-  {type: GFX, offset: 0x600F2F0, symbol: D_MA_600F2F0}
-
-D_MA_600F3D0:
-  {type: GFX, offset: 0x600F3D0, symbol: D_MA_600F3D0}
-
-D_MA_600F6C0:
-  {type: GFX, offset: 0x600F6C0, symbol: D_MA_600F6C0}
-
-D_MA_600F9B0:
-  {type: GFX, offset: 0x600F9B0, symbol: D_MA_600F9B0}
-
-D_MA_600FEC4:
-  {type: SF64:ANIM, offset: 0x600FEC4, symbol: D_MA_600FEC4}
-
-D_MA_6010144:
-  {type: SF64:ANIM, offset: 0x6010144, symbol: D_MA_6010144}
-
-D_MA_6010220:
-  {type: SF64:ANIM, offset: 0x6010220, symbol: D_MA_6010220}
-
-D_MA_601042C:
-  {type: SF64:SKELETON, offset: 0x601042C, symbol: D_MA_601042C}
-
-D_MA_6010470:
-  {type: GFX, offset: 0x6010470, symbol: D_MA_6010470}
-
-aMaProximityLightSidesDL:
-  {type: GFX, offset: 0x6010700, symbol: aMaProximityLightSidesDL}
-
-D_MA_6010C20:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 44, height: 44, offset: 0x6010C20, symbol: D_MA_6010C20}
-
-D_MA_6011B40:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 44, height: 44, offset: 0x6011B40, symbol: D_MA_6011B40}
-
-D_MA_6012A60:
-  {type: GFX, offset: 0x6012A60, symbol: D_MA_6012A60}
-
-D_MA_6012BC0:
-  { type: TEXTURE, format: IA8, ctype: u8, width: 8, height: 8, offset: 0x6012BC0, symbol: D_MA_6012BC0}
-
-D_MA_6012C00:
-  {type: GFX, offset: 0x6012C00, symbol: D_MA_6012C00}
-
-D_MA_6012C98:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 4, height: 8, offset: 0x6012C98, symbol: D_MA_6012C98}
-
-aMaShockBoxLightDL:
-  {type: GFX, offset: 0x6012F50, symbol: aMaShockBoxLightDL}
-
-D_MA_6012FE0:
-  { type: TEXTURE, format: IA8, ctype: u8, width: 16, height: 8, offset: 0x6012FE0, symbol: D_MA_6012FE0}
-
-D_MA_6013060:
-  {type: GFX, offset: 0x6013060, symbol: D_MA_6013060}
-
-D_MA_6013158:
-  { type: TEXTURE, format: IA16, ctype: u16, width: 32, height: 32, offset: 0x6013158, symbol: D_MA_6013158}
-
-aMaGuillotineHousingDL:
-  {type: GFX, offset: 0x6013960, symbol: aMaGuillotineHousingDL}
-
-D_MA_6013F58:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6013F58, symbol: D_MA_6013F58, tlut: 0x6014058}
-
-D_MA_6014058:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 88, offset: 0x6014058, symbol: D_MA_6014058}
-
-D_MA_6014458:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 64, height: 32, offset: 0x6014458, symbol: D_MA_6014458}
-
-D_MA_6015494:
-  {type: SF64:ANIM, offset: 0x6015494, symbol: D_MA_6015494}
-
-D_MA_6015500:
-  {type: SF64:SKELETON, offset: 0x6015500, symbol: D_MA_6015500}
-
-aMaShockBoxDL:
-  {type: GFX, offset: 0x6015510, symbol: aMaShockBoxDL}
-
-D_MA_6015C24:
-  {type: SF64:ANIM, offset: 0x6015C24, symbol: D_MA_6015C24}
-
-D_MA_6016040:
-  {type: SF64:ANIM, offset: 0x6016040, symbol: D_MA_6016040}
-
-D_MA_60163F0:
-  {type: SF64:ANIM, offset: 0x60163F0, symbol: D_MA_60163F0}
-
-D_MA_6016B2C:
-  {type: SF64:ANIM, offset: 0x6016B2C, symbol: D_MA_6016B2C}
-
-D_MA_6017714:
-  {type: SF64:ANIM, offset: 0x6017714, symbol: D_MA_6017714}
-
-D_MA_6017720:
-  {type: GFX, offset: 0x6017720, symbol: D_MA_6017720}
-
-D_MA_6017EB8:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x6017EB8, symbol: D_MA_6017EB8}
-
-D_MA_60186B8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x60186B8, symbol: D_MA_60186B8, tlut: 0x6018AB8}
-
-D_MA_6018AB8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 232, offset: 0x6018AB8, symbol: D_MA_6018AB8}
-
-D_MA_6019028:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6019028, symbol: D_MA_6019028, tlut: 0x6019128}
-
-D_MA_6019128:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 120, offset: 0x6019128, symbol: D_MA_6019128}
-
-D_MA_6019220:
-  {type: GFX, offset: 0x6019220, symbol: D_MA_6019220}
-
-D_MA_60192B0:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 64, height: 32, offset: 0x60192B0, symbol: D_MA_60192B0}
-
-aMaBoulderDL:
-  {type: GFX, offset: 0x601A2B0, symbol: aMaBoulderDL}
-
-D_MA_601A5E8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x601A5E8, symbol: D_MA_601A5E8, tlut: 0x601A6E8}
-
-D_MA_601A6E8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 88, offset: 0x601A6E8, symbol: D_MA_601A6E8}
-
-D_MA_601A7A0:
-  {type: GFX, offset: 0x601A7A0, symbol: D_MA_601A7A0}
-
-D_MA_601A840:
-  {type: GFX, offset: 0x601A840, symbol: D_MA_601A840}
-
-D_MA_601A8C8:
-  { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x601A8C8, symbol: D_MA_601A8C8}
-
-aMaFloor6DL:
-  {type: GFX, offset: 0x601B0D0, symbol: aMaFloor6DL}
-
-aMaWall4DL:
-  {type: GFX, offset: 0x601B7C0, symbol: aMaWall4DL}
-
-D_MA_601BB78:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x601BB78, symbol: D_MA_601BB78, tlut: 0x601BC78}
-
-D_MA_601BC78:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 72, offset: 0x601BC78, symbol: D_MA_601BC78}
-
-D_MA_601BD08:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x601BD08, symbol: D_MA_601BD08, tlut: 0x601BE08}
-
-D_MA_601BE08:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 64, offset: 0x601BE08, symbol: D_MA_601BE08}
-
-D_MA_601BE90:
-  {type: GFX, offset: 0x601BE90, symbol: D_MA_601BE90}
-
-aMaTowerTopDL:
-  {type: GFX, offset: 0x601C000, symbol: aMaTowerTopDL}
-
-D_MA_601C170:
-  {type: GFX, offset: 0x601C170, symbol: D_MA_601C170}
-
-aMaRailroadCartDL:
-  {type: GFX, offset: 0x601C520, symbol: aMaRailroadCartDL}
-
-D_MA_601D188:
-  {type: SF64:ANIM, offset: 0x601D188, symbol: D_MA_601D188}
-
-D_MA_601EA28:
-  {type: SF64:ANIM, offset: 0x601EA28, symbol: D_MA_601EA28}
-
-D_MA_601EAB0:
-  {type: SF64:ANIM, offset: 0x601EAB0, symbol: D_MA_601EAB0}
-
-D_MA_601EBBC:
-  {type: SF64:SKELETON, offset: 0x601EBBC, symbol: D_MA_601EBBC}
-
-aMaWall2DL:
-  {type: GFX, offset: 0x601F1D0, symbol: aMaWall2DL}
-
-aMaProximityLightTopDL:
-  {type: GFX, offset: 0x601F270, symbol: aMaProximityLightTopDL}
-
-D_MA_6020A30:
-  {type: GFX, offset: 0x6020A30, symbol: D_MA_6020A30}
-
-D_MA_60200E0:
-  {type: GFX, offset: 0x60200E0, symbol: D_MA_60200E0}
-
-D_MA_6020E600:
-  {type: GFX, offset: 0x6020E60, symbol: D_MA_6020E60}
-
-D_MA_6022200:
-  {type: GFX, offset: 0x6022200, symbol: D_MA_6022200}
-
-D_MA_60223C0:
-  {type: GFX, offset: 0x60223C0, symbol: D_MA_60223C0}
-
-D_MA_6022450:
-  { type: GFX, offset: 0x6022450, symbol: D_MA_6022450}
-
-D_MA_6022530:
-  {type: GFX, offset: 0x6022530, symbol: D_MA_6022530}
-
-D_MA_6022610:
-  {type: GFX, offset: 0x6022610, symbol: D_MA_6022610}
-
-D_MA_60227F0:
-  {type: GFX, offset: 0x60227F0, symbol: D_MA_60227F0}
-
-D_MA_6022B68:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6022B68, symbol: D_MA_6022B68, tlut: 0x6022F68}
-
-D_MA_6022F68:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 176, offset: 0x6022F68, symbol: D_MA_6022F68}
-
-D_MA_60230C8:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x60230C8, symbol: D_MA_60230C8, tlut: 0x60231C8}
-
-D_MA_60231C8:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 48, offset: 0x60231C8, symbol: D_MA_60231C8}
-
-D_MA_6023228:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x6023228, symbol: D_MA_6023228, tlut: 0x6023328}
-
-D_MA_6023328:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 48, offset: 0x6023328, symbol: D_MA_6023328}
-
-D_MA_6023388:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6023388, symbol: D_MA_6023388, tlut: 0x6023788}
-
-D_MA_6023788:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 176, offset: 0x6023788, symbol: D_MA_6023788}
-
-aMaWall3DL:
-  {type: GFX, offset: 0x60238F0, symbol: aMaWall3DL}
-
-D_MA_60239D0:
-  {type: GFX, offset: 0x60239D0, symbol: D_MA_60239D0}
-
-aMaBuilding1DL:
-  {type: GFX, offset: 0x6024010, symbol: aMaBuilding1DL}
-
-D_MA_6024230:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6024230, symbol: D_MA_6024230, tlut: 0x6024630}
-
-D_MA_6024630:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 32, offset: 0x6024630, symbol: D_MA_6024630}
-
-D_MA_6024670:
-  {type: GFX, offset: 0x6024670, symbol: D_MA_6024670}
-
-aMaHorizontalLockBarDL:
-  {type: GFX, offset: 0x60251A0, symbol: aMaHorizontalLockBarDL}
-
-aMaTowerBottomDL:
-  {type: GFX, offset: 0x60253E0, symbol: aMaTowerBottomDL}
-
-aMaBarrierDL:
-  {type: GFX, offset: 0x60257B0, symbol: aMaBarrierDL}
-
-aMaVerticalLockBarDL:
-  {type: GFX, offset: 0x6025850, symbol: aMaVerticalLockBarDL}
-
-D_MA_6025A70:
-  {type: GFX, offset: 0x6025A70, symbol: D_MA_6025A70}
-
-D_MA_6025B50:
-  { type: GFX, offset: 0x6025B50, symbol: D_MA_6025B50}
-
-D_MA_6025CA0:
-  {type: SF64:ANIM, offset: 0x6025CA0, symbol: D_MA_6025CA0}
-
-D_MA_6025DAC:
-  {type: SF64:SKELETON, offset: 0x6025DAC, symbol: D_MA_6025DAC}
-
-D_MA_6026860:
-  {type: GFX, offset: 0x6026860, symbol: D_MA_6026860}
-
-D_MA_60269E0:
-  {type: GFX, offset: 0x60269E0, symbol: D_MA_60269E0}
-
-D_MA_6026C00:
-  { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6026C00, symbol: D_MA_6026C00, tlut: 0x6027000}
-
-D_MA_6027000:
-  { type: TEXTURE, format: TLUT, ctype: u16, colors: 112, offset: 0x6027000, symbol: D_MA_6027000}
-
-aMaWall1DL:
-  {type: GFX, offset: 0x60270E0, symbol: aMaWall1DL}
-
-aMaBuilding2DL:
-  { type: GFX, offset: 0x6027180, symbol: aMaBuilding2DL}
-
-D_MA_6027320:
-  {type: SF64:ANIM, offset: 0x6027320, symbol: D_MA_6027320}
-
-D_MA_602742C:
-  {type: SF64:SKELETON, offset: 0x602742C, symbol: D_MA_602742C}
-
-aMaFloor2DL:
-  {type: GFX, offset: 0x6027900, symbol: aMaFloor2DL}
-
-D_MA_6027A04:
-  {type: SF64:ANIM, offset: 0x6027A04, symbol: D_MA_6027A04}
-
-D_MA_6027AF0:
-  {type: SF64:SKELETON, offset: 0x6027AF0, symbol: D_MA_6027AF0}
-
-D_MA_6027BF0:
-  {type: GFX, offset: 0x6027BF0, symbol: D_MA_6027BF0}
-
-D_MA_6027D40:
-  {type: GFX, offset: 0x6027D40, symbol: D_MA_6027D40}
-
-D_MA_6027EB0:
-  {type: GFX, offset: 0x6027EB0, symbol: D_MA_6027EB0}
-
-D_MA_60288A0:
-  {type: GFX, offset: 0x60288A0, symbol: D_MA_60288A0}
-
-D_MA_6029890:
-  {type: GFX, offset: 0x6029890, symbol: D_MA_6029890}
-
-D_MA_VTX_602A0D0:
-  {type: VTX, count: 395, offset: 0x602A0D0, symbol: D_MA_VTX_602A0D0}
-
-D_MA_602B980:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 16, height: 16, offset: 0x602B980, symbol: D_MA_602B980}
-
-D_MA_602BB80:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 32, height: 32, offset: 0x602BB80, symbol: D_MA_602BB80}
-
-D_MA_602C380:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 32, height: 32, offset: 0x602C380, symbol: D_MA_602C380}
-
-D_MA_602CB80:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 32, height: 32, offset: 0x602CB80, symbol: D_MA_602CB80}
-
-D_MA_602D380:
-  {type: GFX, offset: 0x602D380, symbol: D_MA_602D380}
-
-aMaFloor1DL:
-  {type: GFX, offset: 0x602DAE0, symbol: aMaFloor1DL}
-
-aMaFloor3DL:
-  {type: GFX, offset: 0x602DB80, symbol: aMaFloor3DL}
-
-aMaFloor5DL:
-  {type: GFX, offset: 0x602DC20, symbol: aMaFloor5DL}
-
-D_MA_602DCB8:
-  {type: TEXTURE, format: RGBA16, ctype: u16,  width: 32, height: 32, offset: 0x602DCB8, symbol: D_MA_602DCB8}
-
-D_MA_602EA0C:
-  {type: SF64:ANIM, offset: 0x602EA0C, symbol: D_MA_602EA0C}
-
-D_MA_602EBB8:
-  {type: SF64:SKELETON, offset: 0x602EBB8, symbol: D_MA_602EBB8}
-
-D_MA_602F098:
-  {type: SF64:ANIM, offset: 0x602F098, symbol: D_MA_602F098}
-
-D_MA_602F264:
-  {type: SF64:SKELETON, offset: 0x602F264, symbol: D_MA_602F264}
-
-D_MA_602F2E0:
-  {type: SF64:ANIM, offset: 0x602F2E0, symbol: D_MA_602F2E0}
-
-D_MA_602F36C:
-  {type: SF64:SKELETON, offset: 0x602F36C, symbol: D_MA_602F36C}
-
-D_MA_602F380:
-  {type: GFX, offset: 0x602F380, symbol: D_MA_602F380}
-
-D_MA_602FBF0:
-  {type: GFX, offset: 0x602FBF0, symbol: D_MA_602FBF0}
-
-D_MA_602FEB4:
-  {type: SF64:ANIM, offset: 0x602FEB4, symbol: D_MA_602FEB4}
-
-D_MA_602FFA0:
-  {type: SF64:SKELETON, offset: 0x602FFA0, symbol: D_MA_602FFA0}
-
-D_MA_602FFC0:
-  {type: GFX, offset: 0x602FFC0, symbol: D_MA_602FFC0}
-
-aMaTerrainBumpDL:
-  {type: GFX, offset: 0x6030500, symbol: aMaTerrainBumpDL}
-
-aMaFloor4DL:
-  {type: GFX, offset: 0x6030630, symbol: aMaFloor4DL}
-
-D_MA_60306D0:
-  {type: GFX, offset: 0x60306D0, symbol: D_MA_60306D0}
-
-D_MA_6030750:
-  {type: GFX, offset: 0x6030750, symbol: D_MA_6030750}
-
-D_MA_60309D0:
-  {type: GFX, offset: 0x60309D0, symbol: D_MA_60309D0}
-
-D_MA_6030C50:
-  {type: GFX, offset: 0x6030C50, symbol: D_MA_6030C50}
-
-D_MA_6030E30:
-  {type: SF64:ENVIRONMENT, offset: 0x6030E30, symbol: D_MA_6030E30}
-
-D_MA_6030E74:
-  {type: SF64:TRIANGLE, count: 2, offset: 0x6030E74, symbol: D_MA_6030E74, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6030EB0:
-  {type: SF64:TRIANGLE, count: 2, offset: 0x6030EB0, symbol: D_MA_6030EB0, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6030EEC:
-  {type: SF64:TRIANGLE, count: 2, offset: 0x6030EEC, symbol: D_MA_6030EEC, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6030F28:
-  {type: SF64:TRIANGLE, count: 2, offset: 0x6030F28, symbol: D_MA_6030F28, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6030F64:
-  {type: SF64:TRIANGLE, count: 4, offset: 0x6030F64, symbol: D_MA_6030F64, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6030FC4:
-  {type: SF64:TRIANGLE, count: 2, offset: 0x6030FC4, symbol: D_MA_6030FC4, mesh_symbol: D_MA_OFFSET}
-
-D_MA_6031000:
-  {type: SF64:OBJECT_INIT, offset: 0x6031000, symbol: D_MA_6031000}
-
-D_MA_6035678:
-  {type: SF64:OBJECT_INIT, offset: 0x6035678, symbol: D_MA_6035678}
-
-D_MA_60357CC:
-  {type: SF64:OBJECT_INIT, offset: 0x60357CC, symbol: D_MA_60357CC}
-
-D_MA_6035920:
-  {type: SF64:OBJECT_INIT, offset: 0x6035920, symbol: D_MA_6035920}
-
-D_MA_60359AC:
-  {type: SF64:HITBOX, offset: 0x60359AC, symbol: D_MA_60359AC}
-
-aMaLocomotiveHitbox:
-  {type: SF64:HITBOX, offset: 0x60359C8, symbol: aMaLocomotiveHitbox}
-
-aMaTrainCar2Hitbox:
-  {type: SF64:HITBOX, offset: 0x6035A14, symbol: aMaTrainCar2Hitbox}
-
-aMaTrainCar1Hitbox:
-  {type: SF64:HITBOX, offset: 0x6035A48, symbol: aMaTrainCar1Hitbox}
-
-D_MA_6035A94:
-  {type: SF64:HITBOX, offset: 0x6035A94, symbol: D_MA_6035A94}
-
-aMaTrainCar3Hitbox:
-  {type: SF64:HITBOX, offset: 0x6035AE0, symbol: aMaTrainCar3Hitbox}
-
-D_MA_6035B44:
-  {type: SF64:HITBOX, offset: 0x6035B44, symbol: D_MA_6035B44}
-
-D_MA_6035BA8:
-  {type: SF64:HITBOX, offset: 0x6035BA8, symbol: D_MA_6035BA8}
-
-D_MA_6035C0C:
-  {type: SF64:HITBOX, offset: 0x6035C0C, symbol: D_MA_6035C0C}
-
-D_MA_6035C70:
-  {type: SF64:HITBOX, offset: 0x6035C70, symbol: D_MA_6035C70}
-
-D_MA_6035CD4:
-  {type: SF64:HITBOX, offset: 0x6035CD4, symbol: D_MA_6035CD4}
-
-D_MA_6035D38:
-  {type: SF64:HITBOX, offset: 0x6035D38, symbol: D_MA_6035D38}
-
-aMaTrainCar4Hitbox:
-  {type: SF64:HITBOX, offset: 0x6035D9C, symbol: aMaTrainCar4Hitbox}
-
-D_MA_6035DD0:
-  {type: SF64:HITBOX, offset: 0x6035DD0, symbol: D_MA_6035DD0}
-
-aMaTrainCar5Hitbox:
-  {type: SF64:HITBOX, offset: 0x6035E04, symbol: aMaTrainCar5Hitbox}
-
-D_MA_6035E68:
-  {type: SF64:HITBOX, offset: 0x6035E68, symbol: D_MA_6035E68}
-
-D_MA_6035ECC:
-  {type: SF64:HITBOX, offset: 0x6035ECC, symbol: D_MA_6035ECC}
-
-D_MA_6035F30:
-  {type: SF64:HITBOX, offset: 0x6035F30, symbol: D_MA_6035F30}
-
-D_MA_6035F94:
-  {type: SF64:HITBOX, offset: 0x6035F94, symbol: D_MA_6035F94}
-
-D_MA_6035FF8:
-  {type: SF64:HITBOX, offset: 0x6035FF8, symbol: D_MA_6035FF8}
-
-D_MA_603605C:
-  {type: SF64:HITBOX, offset: 0x603605C, symbol: D_MA_603605C}
-
-aMaTrainCar6Hitbox:
-  {type: SF64:HITBOX, offset: 0x60360C0, symbol: aMaTrainCar6Hitbox}
-
-aMaTrainCar7Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036154, symbol: aMaTrainCar7Hitbox}
-
-D_MA_6036188:
-  {type: SF64:HITBOX, offset: 0x6036188, symbol: D_MA_6036188}
-
-aMaTrainTrack13Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036204, symbol: aMaTrainTrack13Hitbox}
-
-D_MA_6036250:
-  {type: SF64:HITBOX, offset: 0x6036250, symbol: D_MA_6036250}
-
-aMaBuilding1Hitbox:
-  {type: SF64:HITBOX, offset: 0x603626C, symbol: aMaBuilding1Hitbox}
-
-aMaBuilding2Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036288, symbol: aMaBuilding2Hitbox}
-
-aMaTowerHitbox:
-  {type: SF64:HITBOX, offset: 0x60362A4, symbol: aMaTowerHitbox}
-
-aMaWall2Hitbox:
-  {type: SF64:HITBOX, offset: 0x60362D8, symbol: aMaWall2Hitbox}
-
-aMaWall4Hitbox:
-  {type: SF64:HITBOX, offset: 0x60362F4, symbol: aMaWall4Hitbox}
-
-aMaWall3Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036328, symbol: aMaWall3Hitbox}
-
-aMaIndicatorSignHitbox:
-  {type: SF64:HITBOX, offset: 0x6036344, symbol: aMaIndicatorSignHitbox}
-
-aMaTerrainBumpHitbox:
-  {type: SF64:HITBOX, offset: 0x6036370, symbol: aMaTerrainBumpHitbox}
-
-aMaFloor1Hitbox:
-  {type: SF64:HITBOX, offset: 0x603638C, symbol: aMaFloor1Hitbox}
-
-aMaFloor2Hitbox:
-  {type: SF64:HITBOX, offset: 0x60363B8, symbol: aMaFloor2Hitbox}
-
-aMaFloor3Hitbox:
-  {type: SF64:HITBOX, offset: 0x60363E4, symbol: aMaFloor3Hitbox}
-
-aMaFloor4Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036410, symbol: aMaFloor4Hitbox}
-
-aMaFloor5Hitbox:
-  {type: SF64:HITBOX, offset: 0x603643C, symbol: aMaFloor5Hitbox}
-
-aMaMaRailroadSwitchHitbox:
-  {type: SF64:HITBOX, offset: 0x6036458, symbol: aMaMaRailroadSwitchHitbox}
-
-D_MA_603648C:
-  {type: SF64:HITBOX, offset: 0x603648C, symbol: D_MA_603648C}
-
-aMaBoulderHitbox:
-  {type: SF64:HITBOX, offset: 0x60364C0, symbol: aMaBoulderHitbox}
-
-aMaRailwaySignalHitbox:
-  {type: SF64:HITBOX, offset: 0x60364DC, symbol: aMaRailwaySignalHitbox}
-
-D_MA_6036520:
-  {type: SF64:HITBOX, offset: 0x6036520, symbol: D_MA_6036520}
-
-aMaSwitchTrackHitbox:
-  {type: SF64:HITBOX, offset: 0x6036594, symbol: aMaSwitchTrackHitbox}
-
-D_MA_6036668:
-  {type: SF64:HITBOX, offset: 0x6036668, symbol: D_MA_6036668}
-
-aMaHorizontalLockBarHitbox:
-  {type: SF64:HITBOX, offset: 0x60366EC, symbol: aMaHorizontalLockBarHitbox}
-
-aMaVerticalLockBarHitbox:
-  {type: SF64:HITBOX, offset: 0x6036708, symbol: aMaVerticalLockBarHitbox}
-
-aMaProximityLightHitbox:
-  {type: SF64:HITBOX, offset: 0x6036724, symbol: aMaProximityLightHitbox}
-
-aMaBarrierHitbox:
-  {type: SF64:HITBOX, offset: 0x6036728, symbol: aMaBarrierHitbox}
-
-aMaFallingBoulderHitbox:
-  {type: SF64:HITBOX, offset: 0x6036744, symbol: aMaFallingBoulderHitbox}
-
-aMaFloor6Hitbox:
-  {type: SF64:HITBOX, offset: 0x6036760, symbol: aMaFloor6Hitbox}
-
-aMaActor207Hitbox:
-  {type: SF64:HITBOX, offset: 0x603677C, symbol: aMaActor207Hitbox}
-
-D_MA_6036818:
-  {type: SF64:HITBOX, offset: 0x6036818, symbol: D_MA_6036818}
-
-aMaGuillotineHousingHitbox:
-  {type: SF64:HITBOX, offset: 0x6036894, symbol: aMaGuillotineHousingHitbox}
-
-aMaGuillotineHitbox:
-  {type: SF64:HITBOX, offset: 0x60368E0, symbol: aMaGuillotineHitbox}
-
-aMaRailroadCartHitbox:
-  {type: SF64:HITBOX, offset: 0x60368FC, symbol: aMaRailroadCartHitbox}
-
-aMaBombDropHitbox:
-  {type: SF64:HITBOX, offset: 0x6036930, symbol: aMaBombDropHitbox}
-
-aMaSpearHitbox:
-  {type: SF64:HITBOX, offset: 0x603694C, symbol: aMaSpearHitbox}
-
-aMaShockBoxHitbox:
-  {type: SF64:HITBOX, offset: 0x6036968, symbol: aMaShockBoxHitbox}
-
-D_MA_60381D8:
-  {type: SF64:SCRIPT, offset: 0x60381D8, symbol: D_MA_60381D8}
diff --git a/assets/yaml/jp/rev0/ast_map.yaml b/assets/yaml/jp/rev0/ast_map.yaml
deleted file mode 100644
index c470e617b..000000000
--- a/assets/yaml/jp/rev0/ast_map.yaml
+++ /dev/null
@@ -1,577 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xC12690]
-  header:
-    code:
-      - '#include "assets/ast_map.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-# Restart Game (Game Over)
-aMapRetryCourseGameOverTex:
-  { type: TEXTURE, format: IA8, offset: 0x6000000, width: 96, height: 22, ctype: u8, symbol: aMapRetryCourseGameOverTex }
-
-# Proceed to Next Course
-aMapProceedNextCourseTex:
-  { type: TEXTURE, format: IA8, offset: 0x6000840, width: 96, height: 22, ctype: u8, symbol: aMapProceedNextCourseTex }
-
-# Retry Course (Lose 1 Arwing)
-aMapRetryCourseLose1UPTex:
-  { type: TEXTURE, format: IA8, offset: 0x6001080, width: 96, height: 22, ctype: u8, symbol: aMapRetryCourseLose1UPTex }
-
-# Change Course
-aMapChangeCourseTex:
-  { type: TEXTURE, format: IA8, offset: 0x60018C0, width: 96, height: 10, ctype: u8, symbol: aMapChangeCourseTex }
-
-# Aquas Ocean
-D_MAP_6001C80:
-  { type: TEXTURE, format: IA8, offset: 0x6001C80, width: 96, height: 13, ctype: u8, symbol: D_MAP_6001C80 }
-
-# Terror of the Deep
-D_MAP_6002160:
-  { type: TEXTURE, format: IA8, offset: 0x6002160, width: 208, height: 19, ctype: u8, symbol: D_MAP_6002160 }
-
-# Meteo
-# Asteroid Field
-D_MAP_60030D0:
-  { type: TEXTURE, format: IA8, offset: 0x60030D0, width: 96, height: 28, ctype: u8, symbol: D_MAP_60030D0 }
-
-# Into the Asteroid Field
-D_MAP_6003B50:
-  { type: TEXTURE, format: IA8, offset: 0x6003B50, width: 208, height: 19, ctype: u8, symbol: D_MAP_6003B50 }
-
-# Bolse Defense Outpost
-D_MAP_6004AC0:
-  { type: TEXTURE, format: IA8, offset: 0x6004AC0, width: 168, height: 19, ctype: u8, symbol: D_MAP_6004AC0 }
-
-# The Last Hurrah
-D_MAP_6005740:
-  { type: TEXTURE, format: IA8, offset: 0x6005740, width: 160, height: 19, ctype: u8, symbol: D_MAP_6005740 }
-
-# Area 6
-# Defense Station
-D_MAP_6006320:
-  { type: TEXTURE, format: IA8, offset: 0x6006320, width: 104, height: 28, ctype: u8, symbol: D_MAP_6006320 }
-
-# Through the Middle
-D_MAP_6006E80:
-  { type: TEXTURE, format: IA8, offset: 0x6006E80, width: 176, height: 19, ctype: u8, symbol: D_MAP_6006E80 }
-
-# Corneria
-# Former Army Base
-D_MAP_6007B90:
-  { type: TEXTURE, format: IA8, offset: 0x6007B90, width: 128, height: 28, ctype: u8, symbol: D_MAP_6007B90 }
-
-# Enter Star Fox
-D_MAP_6008990:
-  { type: TEXTURE, format: IA8, offset: 0x6008990, width: 232, height: 19, ctype: u8, symbol: D_MAP_6008990 }
-
-# Fortuna
-# Former Defense Post
-D_MAP_6009AD0:
-  { type: TEXTURE, format: IA8, offset: 0x6009AD0, width: 168, height: 28, ctype: u8, symbol: D_MAP_6009AD0 }
-
-# Enter Star Wolf
-D_MAP_600AD30:
-  { type: TEXTURE, format: IA8, offset: 0x600AD30, width: 168, height: 19, ctype: u8, symbol: D_MAP_600AD30 }
-
-# Katina
-# Frontline Base
-D_MAP_600B9B0:
-  { type: TEXTURE, format: IA8, offset: 0x600B9B0, width: 168, height: 28, ctype: u8, symbol: D_MAP_600B9B0 }
-
-# Reunion
-D_MAP_600CC10:
-  { type: TEXTURE, format: IA8, offset: 0x600CC10, width: 128, height: 19, ctype: u8, symbol: D_MAP_600CC10 }
-
-# The Lylat System
-D_MAP_600D590:
-  { type: TEXTURE, format: IA8, offset: 0x600D590, width: 168, height: 19, ctype: u8, symbol: D_MAP_600D590 }
-
-# Macbeth
-# Venom Army Supply Base
-D_MAP_600E210:
-  { type: TEXTURE, format: IA8, offset: 0x600E210, width: 160, height: 28, ctype: u8, symbol: D_MAP_600E210 }
-
-# The Forever Train
-D_MAP_600F390:
-  { type: TEXTURE, format: IA8, offset: 0x600F390, width: 168, height: 19, ctype: u8, symbol: D_MAP_600F390 }
-
-# Solar
-D_MAP_6010010:
-  { type: TEXTURE, format: IA8, offset: 0x6010010, width: 112, height: 13, ctype: u8, symbol: D_MAP_6010010 }
-
-# Out of the Frying Pan.
-D_MAP_60105C0:
-  { type: TEXTURE, format: IA8, offset: 0x60105C0, width: 224, height: 19, ctype: u8, symbol: D_MAP_60105C0 }
-
-# Sector X Combat Zone
-D_MAP_6011660:
-  { type: TEXTURE, format: IA8, offset: 0x6011660, width: 176, height: 12, ctype: u8, symbol: D_MAP_6011660 }
-
-# Mystery of the Space Base
-D_MAP_6011EA0:
-  { type: TEXTURE, format: IA8, offset: 0x6011EA0, width: 256, height: 19, ctype: u8, symbol: D_MAP_6011EA0 }
-
-# Sector Y Combat Zone
-D_MAP_60131A0:
-  { type: TEXTURE, format: IA8, offset: 0x60131A0, width: 176, height: 12, ctype: u8, symbol: D_MAP_60131A0 }
-
-# Fierce Melee
-D_MAP_60139E0:
-  { type: TEXTURE, format: IA8, offset: 0x60139E0, width: 128, height: 19, ctype: u8, symbol: D_MAP_60139E0 }
-
-# Sector Z Combat Zone
-D_MAP_6014360:
-  { type: TEXTURE, format: IA8, offset: 0x6014360, width: 176, height: 12, ctype: u8, symbol: D_MAP_6014360 }
-
-# The Ambush of Great Fox
-D_MAP_6014BA0:
-  { type: TEXTURE, format: IA8, offset: 0x6014BA0, width: 232, height: 19, ctype: u8, symbol: D_MAP_6014BA0 }
-
-# Titania
-# Arid Desert
-D_MAP_6015CE0:
-  { type: TEXTURE, format: IA8, offset: 0x6015CE0, width: 96, height: 28, ctype: u8, symbol: D_MAP_6015CE0 }
-
-# The Search for Slippy
-D_MAP_6016760:
-  { type: TEXTURE, format: IA8, offset: 0x6016760, width: 200, height: 19, ctype: u8, symbol: D_MAP_6016760 }
-
-# Zones
-# Toxic Waste Area
-D_MAP_6017640: 
-  { type: TEXTURE, format: IA8, offset: 0x6017640, width: 112, height: 28, ctype: u8, symbol: D_MAP_6017640 }
-
-# Invasion Aftermath
-D_MAP_6018280: 
-  { type: TEXTURE, format: IA8, offset: 0x6018280, width: 184, height: 19, ctype: u8, symbol: D_MAP_6018280 }
-
-aMapPrologueTextFadeTex: 
-  { type: TEXTURE, format: IA8, offset: 0x6019030, width: 8, height: 16, ctype: u8, symbol: aMapPrologueTextFadeTex }
-
-# Clouds ?
-aMapVenomCloudTex: 
-  { type: TEXTURE, format: IA8, offset: 0x60190B0, width: 96, height: 96, ctype: u8, symbol: aMapVenomCloudTex }
-
-aMapOptionBgTex: 
-  { type: TEXTURE, format: IA8, offset: 0x601B4B0, width: 32, height: 32, ctype: u8, symbol: aMapOptionBgTex }
-
-# Some text in japanese
-D_MAP_601B8B0: 
-  { type: TEXTURE, format: IA8, offset: 0x601B8B0, width: 80, height: 26, ctype: u8, symbol: D_MAP_1B8B0 }
-
-aMapSectorXDL:
-  { type: GFX, offset: 0x601C0D0, symbol: aMapSectorXDL }
-
-D_MAP_601C160:
-  { type: TEXTURE, format: RGBA16, offset: 0x0601C160, width: 32, height: 32, ctype: u16, symbol: D_MAP_601C160 }
-
-aMapSectorYDL:
-  { type: GFX, offset: 0x601C960, symbol: aMapSectorYDL }
-
-D_MAP_601C9F0:
-  { type: TEXTURE, format: RGBA16, offset: 0x0601C9F0, width: 32, height: 32, ctype: u16, symbol: D_MAP_601C9F0 }
-
-aMapMedalDL:
-  { type: GFX, offset: 0x601D1F0, symbol: aMapMedalDL }
-
-aMapMedalTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x0601D2F0, symbol: aMapMedalTex, tlut: 0x0601DAF0 }
-
-D_MAP_601DAF0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 144, offset: 0x0601DAF0, symbol: D_MAP_601DAF0 }
-
-aMapArwingIconTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601DC10, symbol: aMapArwingIconTex, tlut: 0x0601DC90 }
-
-aMapArwingIconTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x0601DC90, symbol: aMapArwingIconTLUT }
-
-aMapXTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 7, offset: 0x0601DCA0, symbol: aMapXTex, tlut: 0x0601DCD8 }
-
-aMapXTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 5, offset: 0x0601DCD8, symbol: aMapXTLUT }
-
-aMapCursorDL:
-  { type: GFX, offset: 0x601DCF0, symbol: aMapCursorDL }
-
-D_MAP_601DDE8:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601DDE8, symbol: D_MAP_601DDE8, tlut: 0x0601DE68 }
-
-D_MAP_601DE68:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 12, offset: 0x0601DE68, symbol: D_MAP_601DE68 }
-
-aMapArea6DL:
-  { type: GFX, offset: 0x601DE80, symbol: aMapArea6DL }
-
-D_MAP_601F2B0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 32, offset: 0x0601F2B0, symbol: D_MAP_601F2B0, tlut: 0x0601F4B0 }
-
-D_MAP_601F4B0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0601F4B0, symbol: D_MAP_601F4B0 }
-
-D_MAP_601E8F8:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601E8F8, symbol: D_MAP_601E8F8, tlut: 0x0601E978 }
-
-D_MAP_601E978:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0601E978, symbol: D_MAP_601E978 }
-
-aMapArea6ShipDL:
-  { type: GFX, offset: 0x601E9A0, symbol: aMapArea6ShipDL }
-
-D_MAP_601F4D0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601F4D0, symbol: D_MAP_601F4D0, tlut: 0x0601F550 }
-
-D_MAP_601F550:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0601F550, symbol: D_MAP_601F550 }
-
-D_MAP_601F570:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601F570, symbol: D_MAP_601F570, tlut: 0x0601F5F0 }
-
-D_MAP_601F5F0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0601F5F0, symbol: D_MAP_601F5F0 }
-
-D_MAP_601F610:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0601F610, symbol: D_MAP_601F610, tlut: 0x0601F690 }
-
-D_MAP_601F690:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0601F690, symbol: D_MAP_601F690 }
-
-aMapSectorZDL:
-  { type: GFX, offset: 0x601F6B0, symbol: aMapSectorZDL }
-
-D_MAP_601F740:
-  { type: TEXTURE, format: RGBA16, offset: 0x0601F740, width: 32, height: 32, ctype: u16, symbol: D_MAP_601F740 }
-
-# Looks like Aquas
-aMapAquasTex:
-  { type: TEXTURE, format: CI8, offset: 0x601FF40, width: 96, height: 96, ctype: u8, symbol: aMapAquasTex, tlut: 0x06022340 }
-
-gMapAquasTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 80, offset: 0x06022340, symbol: gMapAquasTLUT }
-
-# Looks like Venom
-aMapVenomTex:
-  { type: TEXTURE, format: CI8, offset: 0x60223E0, width: 96, height: 96, ctype: u8, symbol: aMapVenomTex, tlut: 0x060247E0 }
-
-gMapVenomTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 88, offset: 0x060247E0, symbol: gMapVenomTLUT }
-
-# Looks like Corneria
-aMapCorneriaTex:
-  { type: TEXTURE, format: CI8, offset: 0x6024890, width: 96, height: 96, ctype: u8, symbol: aMapCorneriaTex, tlut: 0x06026C90 }
-
-gMapCorneriaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 112, offset: 0x06026C90, symbol: gMapCorneriaTLUT }
-
-# Looks like Zones
-aMapFortunaTex:
-  { type: TEXTURE, format: CI8, offset: 0x6026D70, width: 96, height: 96, ctype: u8, symbol: aMapFortunaTex, tlut: 0x06029170 }
-
-gMapFortunaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 88, offset: 0x06029170, symbol: gMapFortunaTLUT }
-
-# Looks like Solar
-aMapKatinaTex:
-  { type: TEXTURE, format: CI8, offset: 0x6029220, width: 96, height: 96, ctype: u8, symbol: aMapKatinaTex, tlut: 0x0602B620 }
-
-gMapKatinaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 88, offset: 0x0602B620, symbol: gMapKatinaTLUT }
-
-# Looks like Macbeth
-aMapMacbethTex:
-  { type: TEXTURE, format: CI8, offset: 0x602B6D0, width: 96, height: 96, ctype: u8, symbol: aMapMacbethTex, tlut: 0x0602DAD0 }
-
-gMapMacbethTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 72, offset: 0x0602DAD0, symbol: gMapMacbethTLUT }
-
-# Looks like Sector Z
-aMapTitaniaTex:
-  { type: TEXTURE, format: CI8, offset: 0x602DB60, width: 96, height: 96, ctype: u8, symbol: aMapTitaniaTex, tlut: 0x0602FF60 }
-
-gMapTitaniaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 56, offset: 0x0602FF60, symbol: gMapTitaniaTLUT }
-
-aMapZonessTex:
-  { type: TEXTURE, format: CI8, offset: 0x602FFD0, width: 96, height: 96, ctype: u8, symbol: aMapZonessTex, tlut: 0x060323D0 }
-
-gMapZonessTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 56, offset: 0x060323D0, symbol: gMapZonessTLUT }
-
-# Portrait of Falco
-aMapRadioCharFalcoTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06032440, width: 28, height: 28, ctype: u16, symbol: aMapRadioCharFalcoTex }
-
-# Portrait of Peppy
-aMapRadioCharPeppyTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06032A60, width: 28, height: 28, ctype: u16, symbol: aMapRadioCharPeppyTex }
-
-# Picture of Peppy, James and Pigma used in the narrated intro.
-aMapPrologue3Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06033080, width: 96, height: 52, ctype: u16, symbol: aMapPrologue3Tex }
-
-# Picture of Andross, General Pepper and Venom in the background, used in the narrated intro.
-aMapPrologue2Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06035780, width: 96, height: 52, ctype: u16, symbol: aMapPrologue2Tex }
-
-# Picture of Andross, hands open, Corneria in the middle, used in the narrated intro.
-aMapPrologue6Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06037E80, width: 96, height: 52, ctype: u16, symbol: aMapPrologue6Tex }
-
-# Picture of an Arwing dodging attacks from enemies, used in the narrated intro.
-aMapPrologue4Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x0603A580, width: 96, height: 52, ctype: u16, symbol: aMapPrologue4Tex }
-
-# Picture of Slippy, Peppy, Fox and Falco, used in the narrated intro.
-aMapPrologue7Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x0603CC80, width: 96, height: 52, ctype: u16, symbol: aMapPrologue7Tex }
-
-# Picture of Peppy returning from Vemon, used in the narrated intro.
-aMapPrologue5Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x0603F380, width: 96, height: 52, ctype: u16, symbol: aMapPrologue5Tex }
-
-# Picture of Corneria, used in the narrated intro.
-aMapPrologue1Tex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06041A80, width: 96, height: 52, ctype: u16, symbol: aMapPrologue1Tex }
-
-# Portrait of Slippy
-aMapRadioCharSlippyTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06044180, width: 28, height: 28, ctype: u16, symbol: aMapRadioCharSlippyTex }
-
-# White Square ?
-aMapWhiteSquareTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x060447A0, width: 8, height: 8, ctype: u16, symbol: aMapWhiteSquareTex }
-
-# Picture of Fox receiving orders from General Pepper, used in the map (briefing)
-D_MAP_6044820:
-  { type: TEXTURE, format: RGBA16, offset: 0x06044820, width: 92, height: 51, ctype: u16, symbol: D_MAP_6044820 }
-
-# Fox face talking during briefing.
-D_MAP_6046CD0:
-  { type: TEXTURE, format: RGBA16, offset: 0x06046CD0, width: 32, height: 34, ctype: u16, symbol: D_MAP_6046CD0 }
-
-# Black Square with borders.
-aMapPathBoxTex:
-  { type: TEXTURE, format: RGBA16, offset: 0x06047550, width: 24, height: 24, ctype: u16, symbol: aMapPathBoxTex }
-
-aMapPlanetExplosionDL:
-  { type: GFX, offset: 0x60479D0, symbol: aMapPlanetExplosionDL }
-
-D_MAP_6047A68:
-  { type: TEXTURE, format: IA8, offset: 0x06047A68, width: 32, height: 32, ctype: u8, symbol: D_MAP_6047A68 }
-
-aMapVenomCloudDL:
-  { type: GFX, offset: 0x6047E70, symbol: aMapVenomCloudDL }
-
-aMapVenomCloud1Tex:
-  { type: TEXTURE, format: IA8, offset: 0x06047F80, width: 64, height: 32, ctype: u8, symbol: aMapVenomCloud1Tex }
-
-aMapVenomCloud2Tex:
-  { type: TEXTURE, format: IA8, offset: 0x06048780, width: 64, height: 32, ctype: u8, symbol: aMapVenomCloud2Tex }
-
-D_MAP_6048F80:
-  { type: TEXTURE, format: IA8, offset: 0x06048F80, width: 64, height: 64, ctype: u8, symbol: D_MAP_6048F80 }
-  
-aMapExplosion4DL:
-  { type: GFX, offset: 0x6049F80, symbol: aMapExplosion4DL }
-
-D_MAP_604A048:
-  { type: TEXTURE, format: CI8, offset: 0x0604A048, width: 16, height: 16, ctype: u8, symbol: D_MAP_604A048, tlut: 0x0602FF60 }
-
-D_MAP_604A148:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 32, offset: 0x0604A148, symbol: D_MAP_604A148 }
-
-aMapExplosion3DL:
-  { type: GFX, offset: 0x604A190, symbol: aMapExplosion3DL }
-
-D_MAP_604A258:
-  { type: TEXTURE, format: CI8, offset: 0x0604A258, width: 16, height: 16, ctype: u8, symbol: D_MAP_604A258, tlut: 0x0604A358 }
-
-D_MAP_604A358:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 80, offset: 0x0604A358, symbol: D_MAP_604A358 }
-
-aMapExplosion2DL:
-  { type: GFX, offset: 0x604A400, symbol: aMapExplosion2DL }
-
-D_MAP_604A4C8:
-  { type: TEXTURE, format: CI8, offset: 0x0604A4C8, width: 16, height: 16, ctype: u8, symbol: D_MAP_604A4C8, tlut: 0x0604A5C8 }
-
-D_MAP_604A5C8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 160, offset: 0x0604A5C8, symbol: D_MAP_604A5C8 }
-
-aMapExplosion1DL:
-  { type: GFX, offset: 0x604A710, symbol: aMapExplosion1DL }
-
-D_MAP_604A7D8:
-  { type: TEXTURE, format: CI8, offset: 0x0604A7D8, width: 16, height: 16, ctype: u8, symbol: D_MAP_604A7D8, tlut: 0x0604A8D8 }
-
-D_MAP_604A8D8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 136, offset: 0x0604A8D8, symbol: D_MAP_604A8D8 }
-
-# Arwing Model, used in the map.
-aMapArwingDL:
-  { type: GFX, offset: 0x604A9F0, symbol: aMapArwingDL }
-
-ast_map_seg6_vtx_4AD50:
-  { type: VTX, offset: 0x604AD50, count: 124, symbol: ast_map_seg6_vtx_4AD50 }
-
-D_MAP_604B510:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0604B510, symbol: D_MAP_604B510, tlut: 0x0604B590 }
-
-D_MAP_604B590: 
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604B590, symbol: D_MAP_604B590 }
-
-D_MAP_604B5B0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0604B5B0, symbol: D_MAP_604B5B0, tlut: 0x0604B630 }
-
-D_MAP_604B630:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604B630, symbol: D_MAP_604B630 }
-
-D_MAP_604B650:
-  { type: TEXTURE, format: RGBA16, offset: 0x0604B650, width: 8, height: 16, ctype: u16, symbol: D_MAP_604B650 }
-
-# Model of Bolse
-aMapBolseDL:
-  { type: GFX, offset: 0x604B750, symbol: aMapBolseDL }
-
-D_MAP_604BC48:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 32, offset: 0x0604BC48, symbol: D_MAP_604BC48, tlut: 0x0604BC48 }
-
-D_MAP_604BE48: 
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604BE48, symbol: D_MAP_604BE48 }
-
-D_MAP_604BE68:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 32, offset: 0x0604BE68, symbol: D_MAP_604BE68, tlut: 0x0604C068 }
-
-D_MAP_604C068: 
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604C068, symbol: D_MAP_604C068 }
-
-D_MAP_604C088:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 32, offset: 0x0604C088, symbol: D_MAP_604C088, tlut: 0x0604C288 }
-
-D_MAP_604C288: 
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604C288, symbol: D_MAP_604C288 }
-
-D_MAP_604C2A8:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0604C2A8, symbol: D_MAP_604C2A8, tlut: 0x0604C328 }
-
-D_MAP_604C328: 
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0604C328, symbol: D_MAP_604C328 }
-
-# Television outcoming light Model, used during briefing.
-aMapTvScreenGlowDL:
-  { type: GFX, offset: 0x604C350, symbol: aMapTvScreenGlowDL }
-
-aMapTvScreenGlowTex:
-  { type: TEXTURE, format: IA8, offset: 0x0604C4C0, width: 8, height: 16, ctype: u8, symbol: aMapTvScreenGlowTex }
-
-aMapTitaniaRings1DL:
-  { type: GFX, offset: 0x604C540, symbol: aMapTitaniaRings1DL }
-
-D_MAP_604C5D8:
-  { type: TEXTURE, format: IA8, offset: 0x0604C5D8, width: 32, height: 64, ctype: u8, symbol: D_MAP_604C5D8 }
-
-aMapTitaniaRings2DL:
-  { type: GFX, offset: 0x604CDE0, symbol: aMapTitaniaRings2DL }
-
-D_MAP_604CE78:
-  { type: TEXTURE, format: IA8, offset: 0x0604CE78, width: 32, height: 64, ctype: u8, symbol: D_MAP_604CE78 }
-
-D_MAP_604D680:
-  { type: GFX, offset: 0x604D680, symbol: D_MAP_604D680 }
-
-D_MAP_604D708:
-  { type: TEXTURE, format: IA8, offset: 0x0604D708, width: 32, height: 32, ctype: u8, symbol: D_MAP_604D708 }
-
-# Solar Rays
-aMapSolarDL:
-  { type: GFX, offset: 0x604DB10, symbol: aMapSolarDL }
-
-D_MAP_604DD20:
-  { type: TEXTURE, format: IA8, offset: 0x0604DD20, width: 128, height: 32, ctype: u8, symbol: D_MAP_604DD20 }
-
-D_MAP_604ED20:
-  { type: TEXTURE, format: IA8, offset: 0x0604ED20, width: 128, height: 32, ctype: u8, symbol: D_MAP_604ED20 }
-
-D_MAP_604FD20:
-  { type: TEXTURE, format: IA8, offset: 0x0604FD20, width: 128, height: 32, ctype: u8, symbol: D_MAP_604FD20 }
-
-D_MAP_6050D20:
-  { type: TEXTURE, format: IA8, offset: 0x06050D20, width: 128, height: 32, ctype: u8, symbol: D_MAP_6050D20 }
-
-aMapGralPepperFace2DL:
-  { type: GFX, offset: 0x6051D20, symbol: aMapGralPepperFace2DL }
-
-D_MAP_6051F20:
-  { type: TEXTURE, format: RGBA16, offset: 0x06051F20, width: 64, height: 32, ctype: u16, symbol: D_MAP_6051F20 }
-
-D_MAP_6052F20:
-  { type: TEXTURE, format: RGBA16, offset: 0x06052F20, width: 64, height: 32, ctype: u16, symbol: D_MAP_6052F20 }
-
-D_MAP_6053F20:
-  { type: TEXTURE, format: RGBA16, offset: 0x06053F20, width: 64, height: 32, ctype: u16, symbol: D_MAP_6053F20 }
-
-D_MAP_6054F20:
-  { type: TEXTURE, format: RGBA16, offset: 0x06054F20, width: 64, height: 32, ctype: u16, symbol: D_MAP_6054F20 }
-
-aMapGralPepperFace1DL:
-  { type: GFX, offset: 0x6055F20, symbol: aMapGralPepperFace1DL }
-
-D_MAP_6056120:
-  { type: TEXTURE, format: RGBA16, offset: 0x06056120, width: 64, height: 32, ctype: u16, symbol: D_MAP_6056120 }
-
-D_MAP_6057120:
-  { type: TEXTURE, format: RGBA16, offset: 0x06057120, width: 64, height: 32, ctype: u16, symbol: D_MAP_6057120 }
-
-D_MAP_6058120:
-  { type: TEXTURE, format: RGBA16, offset: 0x06058120, width: 64, height: 32, ctype: u16, symbol: D_MAP_6058120 }
-
-D_MAP_6059120:
-  { type: TEXTURE, format: RGBA16, offset: 0x06059120, width: 64, height: 32, ctype: u16, symbol: D_MAP_6059120 }
-
-D_MAP_605A120:
-  { type: GFX, offset: 0x605A120, symbol: D_MAP_605A120 }
-
-D_MAP_605A230:
-  { type: TEXTURE, format: RGBA16, offset: 0x0605A230, width: 64, height: 32, ctype: u16, symbol: D_MAP_605A230 }
-
-D_MAP_605B230:
-  { type: TEXTURE, format: RGBA16, offset: 0x0605B230, width: 64, height: 32, ctype: u16, symbol: D_MAP_605B230 }
-
-D_MAP_605C230:
-  { type: GFX, offset: 0x605C230, symbol: D_MAP_605C230 }
-
-D_MAP_605C610:
-  { type: TEXTURE, format: IA8, offset: 0x0605C610, width: 64, height: 32, ctype: u8, symbol: D_MAP_605C610 }
-
-D_MAP_605CE10:
-  { type: TEXTURE, format: IA8, offset: 0x0605CE10, width: 64, height: 32, ctype: u8, symbol: D_MAP_605CE10 }
-
-D_MAP_605D610:
-  { type: TEXTURE, format: IA8, offset: 0x0605D610, width: 64, height: 32, ctype: u8, symbol: D_MAP_605D610 }
-
-D_MAP_605DE10:
-  { type: TEXTURE, format: IA8, offset: 0x0605DE10, width: 64, height: 32, ctype: u8, symbol: D_MAP_605DE10 }
-
-D_MAP_605E610:
-  { type: TEXTURE, format: IA8, offset: 0x0605E610, width: 64, height: 32, ctype: u8, symbol: D_MAP_605E610 }
-
-D_MAP_605EE10:
-  { type: TEXTURE, format: IA8, offset: 0x0605EE10, width: 64, height: 32, ctype: u8, symbol: D_MAP_605EE10 }
-
-D_MAP_605F610:
-  { type: TEXTURE, format: IA8, offset: 0x0605F610, width: 64, height: 32, ctype: u8, symbol: D_MAP_605F610 }
-
-D_MAP_605FE10:
-  { type: TEXTURE, format: IA8, offset: 0x0605FE10, width: 64, height: 32, ctype: u8, symbol: D_MAP_605FE10 }
-
-aMapMeteorDL:
-  { type: GFX, offset: 0x6060610, symbol: aMapMeteorDL }
-
-D_MAP_6060698:
-  { type: TEXTURE, format: RGBA16, offset: 0x06060698, width: 32, height: 32, ctype: u16, symbol: D_MAP_6060698 }
-
-# size = 0x60EA0
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_meteo.yaml b/assets/yaml/jp/rev0/ast_meteo.yaml
deleted file mode 100644
index 3a6dd3821..000000000
--- a/assets/yaml/jp/rev0/ast_meteo.yaml
+++ /dev/null
@@ -1,320 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0x971980]
-  header:
-    code:
-      - '#include "assets/ast_meteo.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-# Meteo
-# Asteroid Field
-aMeTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 28, offset: 0x6000000, symbol: aMeTitleCardTex }
-
-D_ME_6000A80:
-  { type: GFX, offset: 0x6000A80, symbol: D_ME_6000A80 }
-
-D_ME_6000B10:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06000B10, symbol: D_ME_6000B10 }
-
-aMeCrusherDL:
-  { type: GFX, offset: 0x6001310, symbol: aMeCrusherDL }
-
-D_ME_6004738:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06004738, symbol: D_ME_6004738 }
-
-D_ME_6004F38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06004F38, symbol: D_ME_6004F38 }
-
-D_ME_6005738:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06005738, symbol: D_ME_6005738 }
-
-D_ME_6005F38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06005F38, symbol: D_ME_6005F38 }
-
-D_ME_6006738:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06006738, symbol: D_ME_6006738 }
-
-D_ME_6006F38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06006F38, symbol: D_ME_6006F38 }
-
-D_ME_6006FB8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06006FB8, symbol: D_ME_6006FB8 }
-
-D_ME_6007038:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06007038, symbol: D_ME_6007038 }
-
-D_ME_6007838:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06007838, symbol: D_ME_6007838 }
-
-D_ME_60078B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060078B8, symbol: D_ME_60078B8 }
-
-D_ME_60080C0:
-  { type: GFX, offset: 0x60080C0, symbol: D_ME_60080C0 }
-
-D_ME_6008A18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06008A18, symbol: D_ME_6008A18 }
-
-aMeFlipBot1DL:
-  { type: GFX, offset: 0x6008AA0, symbol: aMeFlipBot1DL }
-
-D_ME_6009228:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06009228, symbol: D_ME_6009228 }
-
-D_ME_6009A28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06009A28, symbol: D_ME_6009A28 }
-
-D_ME_6009C28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06009C28, symbol: D_ME_6009C28 }
-
-aMeFlipBot2DL:
-  { type: GFX, offset: 0x6009E30, symbol: aMeFlipBot2DL }
-
-aMeBigMeteorDL:
-  { type: GFX, offset: 0x6009F50, symbol: aMeBigMeteorDL }
-
-aMeMeteor7DL:
-  { type: GFX, offset: 0x600AC70, symbol: aMeMeteor7DL }
-
-D_ME_600B540:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600B540, symbol: D_ME_600B540 }
-
-aMeSecretMarker2DL:
-  { type: GFX, offset: 0x600BD40, symbol: aMeSecretMarker2DL }
-
-D_ME_600BF30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0600BF30, symbol: D_ME_600BF30 }
-
-aMeRockGull2DL:
-  { type: GFX, offset: 0x600C130, symbol: aMeRockGull2DL }
-
-aMeMeteor6DL:
-  { type: GFX, offset: 0x600C2A0, symbol: aMeMeteor6DL }
-
-aMeRockGull3DL:
-  { type: GFX, offset: 0x600C740, symbol: aMeRockGull3DL }
-
-aMeRockGull1DL:
-  { type: GFX, offset: 0x600CAA0, symbol: aMeRockGull1DL }
-
-aMeMeteorShower3DL:
-  { type: GFX, offset: 0x600CD60, symbol: aMeMeteorShower3DL }
-
-D_ME_600CDE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0600CDE8, symbol: D_ME_600CDE8 }
-
-D_ME_600DDF0:
-  { type: GFX, offset: 0x600DDF0, symbol: D_ME_600DDF0 }
-
-D_ME_600E238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600E238, symbol: D_ME_600E238 }
-
-D_ME_600F238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600F238, symbol: D_ME_600F238 }
-
-D_ME_6010238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06010238, symbol: D_ME_6010238 }
-
-D_ME_6011238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06011238, symbol: D_ME_6011238 }
-
-D_ME_6012238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06012238, symbol: D_ME_6012238 }
-
-D_ME_6013238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06013238, symbol: D_ME_6013238 }
-
-D_ME_6014238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06014238, symbol: D_ME_6014238 }
-
-D_ME_6015238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06015238, symbol: D_ME_6015238 }
-
-aMeMeteorShower2DL:
-  { type: GFX, offset: 0x6016240, symbol: aMeMeteorShower2DL }
-
-D_ME_60162C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x060162C8, symbol: D_ME_60162C8 }
-
-D_ME_60172C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060172C8, symbol: D_ME_60172C8 }
-
-aMeMeteorShower1DL:
-  { type: GFX, offset: 0x06017AD0, symbol: aMeMeteorShower1DL }
-
-aMeMeteor3DL:
-  { type: GFX, offset: 0x06017B60, symbol: aMeMeteor3DL }
-
-aMeLaserCannon2DL:
-  { type: GFX, offset: 0x06018450, symbol: aMeLaserCannon2DL }
-
-aMeMeteor5DL:
-  { type: GFX, offset: 0x06018960, symbol: aMeMeteor5DL }
-
-aMeMeteor1DL:
-  { type: GFX, offset: 0x06018C00, symbol: aMeMeteor1DL }
-
-aMeMeteor4DL:
-  { type: GFX, offset: 0x06019430, symbol: aMeMeteor4DL }
-
-D_ME_6019880:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06019880, symbol: D_ME_6019880 }
-
-D_ME_601A080:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601A080, symbol: D_ME_601A080 }
-
-aMeSecretMarker1DL:
-  { type: GFX, offset: 0x0601A880, symbol: aMeSecretMarker1DL }
-
-aMeMeteoTunnelDL:
-  { type: GFX, offset: 0x0601AE40, symbol: aMeMeteoTunnelDL }
-
-D_ME_601C8E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0601C8E0, symbol: D_ME_601C8E0 }
-
-D_ME_601D800:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0601D800, symbol: D_ME_601D800 }
-
-aMeHopBotAnim:
-  { type: SF64:ANIM, offset: 0x601E8C4, symbol: aMeHopBotAnim }
-
-aMeHopBotSkel:
-  { type: SF64:SKELETON, offset: 0x601E9D0, symbol: aMeHopBotSkel }
-
-# Beta Meteo background, unused
-D_ME_601EA00:
-  { type: GFX, offset: 0x0601EA00, symbol: D_ME_601EA00 }
-
-D_ME_601EA98:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601EA98, symbol: D_ME_601EA98 }
-
-aMeMeteor2DL:
-  { type: GFX, offset: 0x0601F2A0, symbol: aMeMeteor2DL }
-
-D_ME_601F778:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601F778, symbol: D_ME_601F778 }
-
-D_ME_601FF80:
-  { type: GFX, offset: 0x0601FF80, symbol: D_ME_601FF80 }
-
-D_ME_6020008:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06020008, symbol: D_ME_6020008 }
-
-aMeCorneriaBgDL:
-  { type: GFX, offset: 0x06020810, symbol: aMeCorneriaBgDL }
-
-aMeCorneriaBg1Tex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06020920, symbol: aMeCorneriaBg1Tex }
-
-aMeCorneriaBg2Tex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06021920, symbol: aMeCorneriaBg2Tex }
-
-aMeLaserCannon1DL:
-  { type: GFX, offset: 0x06022920, symbol: aMeLaserCannon1DL }
-
-D_ME_6022E50:
-  { type: GFX, offset: 0x06022E50, symbol: D_ME_6022E50 }
-
-D_ME_60236F0:
-  { type: GFX, offset: 0x060236F0, symbol: D_ME_60236F0 }
-
-D_ME_6023788:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06023788, symbol: D_ME_6023788 }
-
-D_ME_60231C0:
-  { type: GFX, offset: 0x060231C0, symbol: D_ME_60231C0 }
-
-D_ME_6023290:
-  { type: GFX, offset: 0x06023290, symbol: D_ME_6023290 }
-
-D_ME_6023360:
-  { type: GFX, offset: 0x06023360, symbol: D_ME_6023360 }
-
-D_ME_6023810:
-  { type: GFX, offset: 0x06023810, symbol: D_ME_6023810 }
-
-D_ME_60238A8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060238A8, symbol: D_ME_60238A8 }
-
-D_ME_60240B0:
-  { type: GFX, offset: 0x060240B0, symbol: D_ME_60240B0 }
-
-D_ME_6024AD0:
-  { type: GFX, offset: 0x06024AD0, symbol: D_ME_6024AD0 }
-
-aMeMolarRockDL:
-  { type: GFX, offset: 0x06024B60, symbol: aMeMolarRockDL }
-
-# Unused Meteo Ball
-aMeMeteoBallDL:
-  { type: GFX, offset: 0x06025B50, symbol: aMeMeteoBallDL }
-
-D_ME_6025350:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6025350, symbol: D_ME_6025350 }
-
-D_ME_6025BE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06025BE8, symbol: D_ME_6025BE8 }
-
-D_ME_60263F0:
-  { type: GFX, offset: 0x060263F0, symbol: D_ME_60263F0 }
-
-D_ME_6026478:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06026478, symbol: D_ME_6026478 }
-
-D_ME_6026CC4:
-  { type: SF64:OBJECT_INIT, offset: 0x6026CC4, symbol: D_ME_6026CC4 }
-
-D_ME_6026C80:
-  { type: SF64:ENVIRONMENT, offset: 0x6026C80, symbol: D_ME_6026C80 }
-
-D_ME_602B148:
-  { type: SF64:OBJECT_INIT, offset: 0x602B148, symbol: D_ME_602B148 }
-
-D_ME_602F3AC:
-  { type: SF64:SCRIPT, offset: 0x602F3AC, symbol: D_ME_602F3AC }
-
-aMeFlipBotHitbox:
-  { type: SF64:HITBOX, offset: 0x602F604, symbol: aMeFlipBotHitbox }
-
-D_ME_602F638:
-  { type: SF64:HITBOX, offset: 0x602F638, symbol: D_ME_602F638 }
-
-aMeMeteoBallHitbox:
-  { type: SF64:HITBOX, offset: 0x602F684, symbol: aMeMeteoBallHitbox }
-
-aMeHopBotHitbox:
-  { type: SF64:HITBOX, offset: 0x602F6A0, symbol: aMeHopBotHitbox }
-
-aMeMeteor1Hitbox:
-  { type: SF64:HITBOX, offset: 0x602F6EC, symbol: aMeMeteor1Hitbox }
-
-aMeMeteor2Hitbox:
-  { type: SF64:HITBOX, offset: 0x602F708, symbol: aMeMeteor2Hitbox }
-
-aMeLaserCannon1Hitbox:
-  { type: SF64:HITBOX, offset: 0x602F724, symbol: aMeLaserCannon1Hitbox }
-
-aMeLaserCannon2Hitbox:
-  { type: SF64:HITBOX, offset: 0x602F740, symbol: aMeLaserCannon2Hitbox }
-
-aMeCrusherHitbox:
-  { type: SF64:HITBOX, offset: 0x602F75C, symbol: aMeCrusherHitbox }
-
-aMeCrusherShieldHitbox:
-  { type: SF64:HITBOX, offset: 0x602FA50, symbol: aMeCrusherShieldHitbox }
-
-D_ME_602FA9C:
-  {type: SF64:COLPOLY, count: 79, offset: 0x602FA9C, symbol: D_ME_602FA9C, mesh_symbol: D_ME_OFFSET }
-
-D_ME_6030208:
-  {type: SF64:COLPOLY, count: 42, offset: 0x6030208, symbol: D_ME_6030208, mesh_symbol: D_ME_OFFSET }
-
-D_ME_60305DC:
-  {type: SF64:COLPOLY, count: 236, offset: 0x60305DC, symbol: D_ME_60305DC, mesh_symbol: D_ME_OFFSET }
diff --git a/assets/yaml/jp/rev0/ast_option.yaml b/assets/yaml/jp/rev0/ast_option.yaml
deleted file mode 100644
index 4b2583262..000000000
--- a/assets/yaml/jp/rev0/ast_option.yaml
+++ /dev/null
@@ -1,249 +0,0 @@
-:config:
-  segments:
-    - [0x08, 0xC6FA00]
-  header:
-    code:
-      - '#include "assets/ast_option.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-# Invoice
-D_OPT_8000000:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 128, height: 26, offset: 0x8000000, symbol: D_OPT_8000000, tlut: 0x8000680 }
-
-D_OPT_8000680:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8000680, symbol: D_OPT_8000680 }
-
-# Cornerian army attn:
-D_OPT_80006A0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 256, height: 34, offset: 0x80006A0, symbol: D_OPT_80006A0, tlut: 0x80017A0 }
-
-D_OPT_80017A0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x80017A0, symbol: D_OPT_80017A0 }
-
-# Venomian units destroyed
-D_OPT_80017C0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 256, height: 66, offset: 0x80017C0, symbol: D_OPT_80017C0, tlut: 0x80038C0 }
-
-D_OPT_80038C0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x80038C0, symbol: D_OPT_80038C0 }
-
-# nd
-aNdTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 10, offset: 0x80038E0, symbol: aNdTex, tlut: 0x8003930 }
-
-aNdTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8003930, symbol: aNdTLUT }
-
-# rd
-aRdTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 11, offset: 0x8003950, symbol: aRdTex, tlut: 0x80039A8 }
-
-aRdTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x80039A8, symbol: aRdTLUT }
-
-#
-aSpeakerCenterTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x80039D0 , symbol: aSpeakerCenterTex, tlut: 0x8003A50 }
-
-aSpeakerCenterTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8003A50, symbol: aSpeakerCenterTLUT }
-
-# st
-aStTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 9, offset: 0x8003A70, symbol: aStTex, tlut: 0x8003AB8 }
-
-aStTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8003AB8, symbol: aStTLUT }
-
-# th
-aThTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 9, offset: 0x8003AE0, symbol: aThTex, tlut: 0x8003B28 }
-
-aThTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8003B28, symbol: aThTLUT }
-
-# Option Title Cards
-
-# Main Game
-aMainGameCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 72, height: 12, offset: 0x8003B50, symbol: aMainGameCardTex }
-
-# Training
-aTrainingCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 12, offset: 0x8003EB0, symbol: aTrainingCardTex }
-
-# Vs.
-aVsCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 10, offset: 0x8004270, symbol: aVsCardTex }
-
-# Ranking
-aRankingCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 12, offset: 0x80043B0, symbol: aRankingCardTex }
-
-# Sound
-aSoundCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 10, offset: 0x80046B0, symbol: aSoundCardTex }
-
-# Data
-aDataCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 10, offset: 0x8004930, symbol: aDataCardTex }
-
-aExpertCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 12, offset: 0x8004C50, symbol: aExpertCardTex }
-
-# Option VS Cards
-
-# Point Match
-aVsPointMatchCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 13, offset: 0x8005010, symbol: aVsPointMatchCardTex }
-
-# Battle Royal
-aVsBattleRoyalCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 11, offset: 0x80054F0, symbol: aVsBattleRoyalCardTex }
-
-# Time Trial
-aVsTimeTrialCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 10, offset: 0x8005910, symbol: aVsTimeTrialCardTex }
-
-# Sound Options
-
-# Press R to test
-D_OPT_8005CD0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 13, offset: 0x8005CD0, symbol: D_OPT_8005CD0 }
-
-# Mode
-D_OPT_8006280:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 48, height: 13, offset: 0x8006280, symbol: D_OPT_8006280 }
-
-# Music
-D_OPT_80064F0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 88, height: 14, offset: 0x80064F0, symbol: D_OPT_80064F0 }
-
-# Voice
-D_OPT_80069C0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 15, offset: 0x80069C0, symbol: D_OPT_80069C0 }
-
-# SE
-D_OPT_8006D10:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 24, height: 13, offset: 0x8006D10, symbol: D_OPT_8006D10 }
-
-# B to cancel
-aBtoCancelTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 10, offset: 0x8006E50, symbol: aBtoCancelTex }
-
-# Headphone
-D_OPT_8007210:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 88, height: 14, offset: 0x8007210, symbol: D_OPT_8007210 }
-
-# Mono
-D_OPT_80076E0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 14, offset: 0x80076E0, symbol: D_OPT_80076E0 }
-
-# Soundtrack
-D_OPT_80079F0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 128, height: 14, offset: 0x80079F0, symbol: D_OPT_80079F0 }
-
-# A to confirm
-aAtoConfirmTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 10, offset: 0x80080F0, symbol: aAtoConfirmTex }
-
-# Clear Saved Data
-D_OPT_80084B0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 13, offset: 0x80084B0, symbol: D_OPT_80084B0 }
-
-# Are you sure?
-D_OPT_8008DA0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 160, height: 19, offset: 0x8008DA0, symbol: D_OPT_8008DA0 }
-
-# Yes
-D_OPT_8009980:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 12, offset: 0x8009980, symbol: D_OPT_8009980 }
-
-# No
-D_OPT_8009B00:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 12, offset: 0x8009B00, symbol: D_OPT_8009B00 }
-
-# Are you REALLY sure?
-D_OPT_8009CE0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 160, height: 41, offset: 0x8009CE0, symbol: D_OPT_8009CE0 }
-
-# Data erased
-D_OPT_800B680:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 144, height: 41, offset: 0x800B680, symbol: D_OPT_800B680 }
-
-# Stereo
-D_OPT_800CD90:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 13, offset: 0x800CD90, symbol: D_OPT_800CD90 }
-
-# UNK: Triangle shape, it's mirrored to form a diamond shape
-D_OPT_800D070:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x800D070, symbol: D_OPT_800D070 }
-
-# UNK:
-D_OPT_800D170:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 16, offset: 0x800D170, symbol: D_OPT_800D170 }
-
-# Seal
-D_OPT_800D1F0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 48, offset: 0x800D1F0, symbol: D_OPT_800D1F0 }
-
-# UNK:
-D_OPT_800E0F0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x800E0F0, symbol: D_OPT_800E0F0 }
-
-aArrowTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x800E130, symbol: aArrowTex }
-
-# Mercenary Unit STARFOX Fox Mccloud
-D_OPT_800E170:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 188, height: 60, offset: 0x800E170, symbol: D_OPT_800E170 }
-
-# ScrollBar
-aSliderFrameTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 104, height: 10, offset: 0x8013990, symbol: aSliderFrameTex }
-
-# ScrollBar Indicator
-aSliderTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x80141B0, symbol: aSliderTex }
-
-# Speaker
-aSpeakerTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x80143B0, symbol: aSpeakerTex, tlut: 0x80147B0 }
-
-aSpeakerTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 32, offset: 0x80147B0, symbol: aSpeakerTLUT }
-
-D_OPT_80147F0:
-  { type: GFX, offset: 0x80147F0, symbol: D_OPT_80147F0 }
-
-ast_option_seg8_vtx_00014B50:
-  { type: VTX, count: 124, offset: 0x8014B50, symbol: ast_option_seg8_vtx_00014B50 }
-
-D_OPT_8015310:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x8015310, symbol: D_OPT_8015310, tlut: 0x08015390 }
-
-D_OPT_8015390:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8015390, symbol: D_OPT_8015390 }
-
-D_OPT_80153B0:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x80153B0, symbol: D_OPT_80153B0, tlut: 0x08015430 }
-
-D_OPT_8015430:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x8015430, symbol: D_OPT_8015430 }
-
-D_OPT_8015450:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 16, offset: 0x08015450, symbol: D_OPT_8015450 }
-
-D_OPT_8015550:
-  { type: GFX, offset: 0x8015550, symbol: D_OPT_8015550 }
-
-D_OPT_80155E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x080155E8, symbol: D_OPT_80155E8 }
-
-aLightningDL:
-  { type: GFX, offset: 0x8015DF0, symbol: aLightningDL }
-
-aLightningTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x08015E88, symbol: aLightningTex }
diff --git a/assets/yaml/jp/rev0/ast_sector_x.yaml b/assets/yaml/jp/rev0/ast_sector_x.yaml
deleted file mode 100644
index 6d305b163..000000000
--- a/assets/yaml/jp/rev0/ast_sector_x.yaml
+++ /dev/null
@@ -1,298 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0x9ED490]
-  header:
-    code:
-      - '#include "assets/ast_sector_x.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-aSxTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 12, offset: 0x6000000, symbol: aSxTitleCardTex }
-
-aSxSpaceMineDL:
-  { type: GFX, offset: 0x6000840, symbol: aSxSpaceMineDL }
-
-# Flying mine
-D_SX_60008C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60008C0, symbol: D_SX_60008C0 }
-
-D_SX_60010C0:
-  { type: GFX, offset: 0x60010C0, symbol: D_SX_60010C0 }
-
-# Texture of Planet Titania, seen when Slippy gets thrown by Spyborg
-D_SX_6001150:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6001150, symbol: D_SX_6001150 }
-
-aSxLaserDestroyedDL:
-  { type: GFX, offset: 0x6001950, symbol: aSxLaserDestroyedDL }
-
-D_SX_6001AD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6001AD8, symbol: D_SX_6001AD8 }
-
-aSxWatchPostDL:
-  { type: GFX, offset: 0x6001CE0, symbol: aSxWatchPostDL }
-
-D_SX_60020C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60020C0, symbol: D_SX_60020C0 }
-
-D_SX_60022C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60022C0, symbol: D_SX_60022C0 }
-
-D_SX_60024C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60024C0, symbol: D_SX_60024C0 }
-
-D_SX_60026C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60026C0, symbol: D_SX_60026C0 }
-
-D_SX_60028C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60028C0, symbol: D_SX_60028C0 }
-
-D_SX_6002AC0:
-  { type: GFX, offset: 0x6002AC0, symbol: D_SX_6002AC0 }
-
-ast_sector_x_seg6_vtx_2E88:
-  { type: VTX, count: 134, offset: 0x6002E88, symbol: ast_sector_x_seg6_vtx_2E88 }
-
-D_SX_60036E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60036E8, symbol: D_SX_60036E8 }
-
-D_SX_6003EE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6003EE8, symbol: D_SX_6003EE8 }
-
-D_SX_60046E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60046E8, symbol: D_SX_60046E8 }
-
-D_SX_6004EE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6004EE8, symbol: D_SX_6004EE8 }
-
-D_SX_6005EE8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6005EE8, symbol: D_SX_6005EE8 }
-
-aSxLaserDL:
-  { type: GFX, offset: 0x60066F0, symbol: aSxLaserDL }
-
-D_SX_6006810:
-  { type: GFX, offset: 0x6006810, symbol: D_SX_6006810 }
-
-D_SX_6007128:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6007128, symbol: D_SX_6007128 }
-
-D_SX_6007928:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6007928, symbol: D_SX_6007928 }
-
-D_SX_6008128:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6008128, symbol: D_SX_6008128 }
-
-D_SX_6008928:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6008928, symbol: D_SX_6008928 }
-
-D_SX_6008B30:
-  { type: GFX, offset: 0x6008B30, symbol: D_SX_6008B30 }
-
-D_SX_6009548:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6009548, symbol: D_SX_6009548 }
-
-D_SX_6009748:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6009748, symbol: D_SX_6009748 }
-
-aSxBaseFloor1DL:
-  { type: GFX, offset: 0x6009950, symbol: aSxBaseFloor1DL }
-
-D_SX_6009C30:
-  { type: GFX, offset: 0x6009C30, symbol: D_SX_6009C30 }
-
-D_SX_6009CC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x6009CC0, symbol: D_SX_6009CC0 }
-
-D_SX_6009FF8:
-  { type: SF64:ANIM, offset: 0x6009FF8, symbol: D_SX_6009FF8 }
-
-D_SX_600A2D4:
-  { type: SF64:ANIM, offset: 0x600A2D4, symbol: D_SX_600A2D4 }
-
-aSxBaseWall3DL:
-  { type: GFX, offset: 0x600A2E0, symbol: aSxBaseWall3DL }
-
-D_SX_600A570:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600A570, symbol: D_SX_600A570 }
-
-D_SX_600AD70:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x600AD70, symbol: D_SX_600AD70 }
-
-aSxBaseWall1DL:
-  { type: GFX, offset: 0x600AF70, symbol: aSxBaseWall1DL }
-
-aSxBaseWall2DL:
-  { type: GFX, offset: 0x600B2B0, symbol: aSxBaseWall2DL }
-
-aSxBaseWall4DL:
-  { type: GFX, offset: 0x600B540, symbol: aSxBaseWall4DL }
-
-aSxBorzoiFighterDL:
-  { type: GFX, offset: 0x600B830, symbol: aSxBorzoiFighterDL }
-
-D_SX_600C000:
-  { type: GFX, offset: 0x600C000, symbol: D_SX_600C000 }
-
-D_SX_600C5A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x600C5A0, symbol: D_SX_600C5A0 }
-
-D_SX_600F890:
-  { type: SF64:ANIM, offset: 0x600F890, symbol: D_SX_600F890 }
-
-D_SX_600F8A0:
-  { type: GFX, offset: 0x600F8A0, symbol: D_SX_600F8A0 }
-
-D_SX_600F938:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600F938, symbol: D_SX_600F938 }
-
-D_SX_6010140:
-  { type: GFX, offset: 0x6010140, symbol: D_SX_6010140 }
-
-D_SX_60105A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60105A0, symbol: D_SX_60105A0 }
-
-D_SX_60123BC:
-  { type: SF64:ANIM, offset: 0x60123BC, symbol: D_SX_60123BC }
-
-D_SX_6013798:
-  { type: SF64:ANIM, offset: 0x6013798, symbol: D_SX_6013798 }
-
-D_SX_6013820:
-  { type: SF64:ANIM, offset: 0x6013820, symbol: D_SX_6013820 }
-
-D_SX_601390C:
-  { type: SF64:SKELETON, offset: 0x601390C, symbol: D_SX_601390C }
-
-D_SX_60158C4:
-  { type: SF64:ANIM, offset: 0x60158C4, symbol: D_SX_60158C4 }
-
-D_SX_6016E28:
-  { type: SF64:ANIM, offset: 0x6016E28, symbol: D_SX_6016E28 }
-
-D_SX_601AA28:
-  { type: SF64:ANIM, offset: 0x601AA28, symbol: D_SX_601AA28 }
-
-D_SX_601C690:
-  { type: SF64:ANIM, offset: 0x601C690, symbol: D_SX_601C690 }
-
-D_SX_60206DC:
-  { type: SF64:ANIM, offset: 0x60206DC, symbol: D_SX_60206DC }
-
-aSxSpyborgSkel:
-  { type: SF64:SKELETON, offset: 0x6020C68, symbol: aSxSpyborgSkel }
-
-aSxBaseWallTile1DL:
-  { type: GFX, offset: 0x6020D20, symbol: aSxBaseWallTile1DL }
-
-# Spyborg Radio
-D_SX_6020FB0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06020FB0, symbol: D_SX_6020FB0 }
-
-D_SX_6021ED0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06021ED0, symbol: D_SX_6021ED0 }
-
-aSxCanineDL:
-  { type: GFX, offset: 0x6022DF0, symbol: aSxCanineDL }
-
-aSxSpyEyeDL:
-  { type: GFX, offset: 0x6023500, symbol: aSxSpyEyeDL }
-
-D_SX_6023C30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06023C30, symbol: D_SX_6023C30 }
-
-aSxBaseDebris2DL:
-  { type: GFX, offset: 0x6023E30, symbol: aSxBaseDebris2DL }
-
-aSxBaseDebris1DL:
-  { type: GFX, offset: 0x60285F0, symbol: aSxBaseDebris1DL }
-
-D_SX_6029098:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06029098, symbol: D_SX_6029098 }
-
-D_SX_60292A0:
-  { type: GFX, offset: 0x60292A0, symbol: D_SX_60292A0 }
-
-D_SX_6029890:
-  { type: GFX, offset: 0x6029890, symbol: D_SX_6029890 }
-
-D_SX_6029918:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x029918, symbol: D_SX_6029918 }
-
-D_SX_602A120:
-  { type: SF64:ENVIRONMENT, offset: 0x602A120, symbol: D_SX_602A120 }
-
-D_SX_602A164:
-  { type: SF64:OBJECT_INIT, count: 1026, offset: 0x602A164, symbol: D_SX_602A164 }
-
-D_SX_602F18C:
-  { type: SF64:OBJECT_INIT, count: 167, offset: 0x602F18C, symbol: D_SX_602F18C }
-
-D_SX_60320D0:
-  { type: SF64:SCRIPT, offset: 0x60320D0, symbol: D_SX_60320D0 }
-
-D_SX_6032328:
-  { type: SF64:HITBOX, offset: 0x6032328, symbol: D_SX_6032328 }
-
-aSxWarpGateHitbox:
-  { type: SF64:HITBOX, offset: 0x603238C, symbol: aSxWarpGateHitbox }
-
-D_SX_6032408:
-  { type: SF64:HITBOX, offset: 0x6032408, symbol: D_SX_6032408 }
-
-aSxSpyborgLeftArmHitbox:
-  { type: SF64:HITBOX, offset: 0x6032488, symbol: aSxSpyborgLeftArmHitbox }
-
-aSxSpyborgRightArmHitbox:
-  { type: SF64:HITBOX, offset: 0x60324EC, symbol: aSxSpyborgRightArmHitbox }
-
-aSxSpyborgHitbox:
-  { type: SF64:HITBOX, offset: 0x6032550, symbol: aSxSpyborgHitbox }
-
-aSxLaserHitbox:
-  { type: SF64:HITBOX, offset: 0x603285C, symbol: aSxLaserHitbox }
-
-aSxBaseFloor1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6032878, symbol: aSxBaseFloor1Hitbox }
-
-aSxBaseWall2Hitbox:
-  { type: SF64:HITBOX, offset: 0x6032894, symbol: aSxBaseWall2Hitbox }
-
-aSxBaseWall3Hitbox:
-  { type: SF64:HITBOX, offset: 0x60328B0, symbol: aSxBaseWall3Hitbox }
-
-aSxBaseWallTile1Hitbox:
-  { type: SF64:HITBOX, offset: 0x60328CC, symbol: aSxBaseWallTile1Hitbox }
-
-D_SX_603265C:
-  { type: SF64:HITBOX, offset: 0x603265C, symbol: D_SX_603265C }
-
-D_SX_6032768:
-  { type: SF64:HITBOX, offset: 0x6032768, symbol: D_SX_6032768 }
-
-aSxBaseWall4Hitbox:
-  { type: SF64:HITBOX, offset: 0x60328E8, symbol: aSxBaseWall4Hitbox }
-
-aSxBaseWall1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6032904, symbol: aSxBaseWall1Hitbox }
-
-aSxWatchPostHitbox:
-  { type: SF64:HITBOX, offset: 0x6032938, symbol: aSxWatchPostHitbox }
-
-aSxSpaceMineHitbox:
-  { type: SF64:HITBOX, offset: 0x6032954, symbol: aSxSpaceMineHitbox }
-
-aSxBaseDebris2Hitbox:
-  { type: SF64:HITBOX, offset: 0x6032970, symbol: aSxBaseDebris2Hitbox }
-
-aSxBaseDebris1Hitbox:
-  { type: SF64:HITBOX, offset: 0x603298C, symbol: aSxBaseDebris1Hitbox }
-
-# size = 0x32AC0
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_sector_y.yaml b/assets/yaml/jp/rev0/ast_sector_y.yaml
deleted file mode 100644
index 87240ab02..000000000
--- a/assets/yaml/jp/rev0/ast_sector_y.yaml
+++ /dev/null
@@ -1,362 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xAF9DC0]
-  header:
-    code:
-      - '#include "assets/ast_sector_y.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-      - '#include "sf64mesg.h"'
-
-# Sector Y: Combat Zone
-aSyTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 12, offset: 0x6000000, symbol: aSyTitleCardTex }
-
-# Saruzin flagship icon in radar
-D_SY_6000840:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 64, offset: 0x6000840, symbol: D_SY_6000840 }
-
-D_SY_6001840:
-  { type: GFX, offset: 0x6001840, symbol: D_SY_6001840 }
-
-# Sector Y Background
-D_SY_60018D0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x060018D0, symbol: D_SY_60018D0 }
-
-D_SY_6003348:
-  { type: SF64:ANIM, offset: 0x6003348, symbol: D_SY_6003348 }
-
-D_SY_60034C4:
-  { type: SF64:ANIM, offset: 0x60034C4, symbol: D_SY_60034C4 }
-
-aSyShipWindowsDL:
-  { type: GFX, offset: 0x60034D0, symbol: aSyShipWindowsDL }
-
-aSyShip3DestroyedDL:
-  { type: GFX, offset: 0x60036A0, symbol: aSyShip3DestroyedDL }
-
-D_SY_6004958:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06004958, symbol: D_SY_6004958 }
-
-D_SY_6005158:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06005158, symbol: D_SY_6005158 }
-
-aSyShip4DL:
-  { type: GFX, offset: 0x6005360, symbol: aSyShip4DL }
-
-D_SY_6005BE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06005BE0, symbol: D_SY_6005BE0 }
-
-D_SY_60063E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060063E0, symbol: D_SY_60063E0 }
-
-D_SY_6006BE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06006BE0, symbol: D_SY_6006BE0 }
-
-D_SY_6006DE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 24, offset: 0x06006DE0, symbol: D_SY_6006DE0 }
-
-D_SY_60073E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x060073E0, symbol: D_SY_60073E0 }
-
-D_SY_60083E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060083E0, symbol: D_SY_60083E0 }
-
-D_SY_6008BE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x06008BE0, symbol: D_SY_6008BE0 }
-
-D_SY_6008FE0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06008FE0, symbol: D_SY_6008FE0 }
-
-aSyShip1DL:
-  { type: GFX, offset: 0x060097E0, symbol: aSyShip1DL }
-
-D_SY_600AAC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600AAC0, symbol: D_SY_600AAC0 }
-
-D_SY_600BAC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600BAC0, symbol: D_SY_600BAC0 }
-
-D_SY_600CAC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0600CAC0, symbol: D_SY_600CAC0 }
-
-D_SY_600DAC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600DAC0, symbol: D_SY_600DAC0 }
-
-D_SY_600E2C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600E2C0, symbol: D_SY_600E2C0 }
-
-D_SY_600EAC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0600EAC0, symbol: D_SY_600EAC0 }
-
-D_SY_600F2C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x0600F2C0, symbol: D_SY_600F2C0 }
-
-aSyShip4DestroyedDL:
-  { type: GFX, offset: 0x600F6C0, symbol: aSyShip4DestroyedDL }
-
-aSyShip3DL:
-  { type: GFX, offset: 0x60102C0, symbol: aSyShip3DL }
-
-D_SY_6011758:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06011758, symbol: D_SY_6011758 }
-
-D_SY_60117D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x060117D8, symbol: D_SY_60117D8 }
-
-D_SY_60119D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060119D8, symbol: D_SY_60119D8 }
-
-D_SY_60132A0:
-  { type: GFX, offset: 0x60132A0, symbol: D_SY_60132A0 }
-
-aSyRobot4DL:
-  { type: GFX, offset: 0x6015D60, symbol: aSyRobot4DL }
-
-aSySaruzinDL:
-  { type: GFX, offset: 0x601F3D0, symbol: aSySaruzinDL }
-
-D_SY_60121E0:
-  { type: GFX, offset: 0x60121E0, symbol: D_SY_60121E0 }
-
-D_SY_60128A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060128A0, symbol: D_SY_60128A0 }
-
-D_SY_60130A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x060130A0, symbol: D_SY_60130A0 }
-
-D_SY_6013600:
-  { type: GFX, offset: 0x6013600, symbol: D_SY_6013600 }
-
-D_SY_6013840:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06013840, symbol: D_SY_6013840 }
-
-D_SY_6014040:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06014040, symbol: D_SY_6014040 }
-
-D_SY_6014240:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06014240, symbol: D_SY_6014240 }
-
-D_SY_6014A40:
-  { type: GFX, offset: 0x6014A40, symbol: D_SY_6014A40 }
-
-D_SY_6014B48:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06014B48, symbol: D_SY_6014B48 }
-
-D_SY_6014BD0:
-  { type: GFX, offset: 0x6014BD0, symbol: D_SY_6014BD0 }
-
-D_SY_6015960:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06015960, symbol: D_SY_6015960 }
-
-D_SY_6015B60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06015B60, symbol: D_SY_6015B60 }
-
-aSyShipMissileDL:
-  { type: GFX, offset: 0x60188D0, symbol: aSyShipMissileDL }
-
-D_SY_60183B0:
-  { type: GFX, offset: 0x60183B0, symbol: D_SY_60183B0 }
-
-D_SY_6018F30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06018F30, symbol: D_SY_6018F30 }
-
-D_SY_6019E50:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x06019E50, symbol: D_SY_6019E50 }
-
-aSyDebrisDL:
-  { type: GFX, offset: 0x601AD70, symbol: aSyDebrisDL }
-
-D_SY_601AE08:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601AE08, symbol: D_SY_601AE08 }
-
-aSyShip2SpriteDL:
-  { type: GFX, offset: 0x601B610, symbol: aSyShip2SpriteDL }
-
-D_SY_601B6A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601B6A0, symbol: D_SY_601B6A0 }
-
-aSyShip3SpriteDL:
-  { type: GFX, offset: 0x601C6A0, symbol: aSyShip3SpriteDL }
-
-D_SY_601C730:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601C730, symbol: D_SY_601C730 }
-
-aSyShip2DL:
-  { type: GFX, offset: 0x601D730, symbol: aSyShip2DL }
-
-D_SY_601F3B8:
-  { type: SF64:ANIM, offset: 0x601F3B8, symbol: D_SY_601F3B8 }
-
-aSyLaserTurretDL:
-  { type: GFX, offset: 0x60205D0, symbol: aSyLaserTurretDL }
-
-aSyRobotSpriteFrontDL:
-  { type: GFX, offset: 0x60209F0, symbol: aSyRobotSpriteFrontDL }
-
-D_SY_6020B08:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06020B08, symbol: D_SY_6020B08 }
-
-D_SY_6021B08:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06021B08, symbol: D_SY_6021B08 }
-
-aSyRobotSpriteSideDL:
-  { type: GFX, offset: 0x6022B10, symbol: aSyRobotSpriteSideDL }
-
-D_SY_6022C28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06022C28, symbol: D_SY_6022C28 }
-
-D_SY_6023C28:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06023C28, symbol: D_SY_6023C28 }
-
-D_SY_60258A0:
-  { type: SF64:ANIM, offset: 0x60258A0, symbol: D_SY_60258A0 }
-
-D_SY_602645C:
-  { type: SF64:ANIM, offset: 0x602645C, symbol: D_SY_602645C }
-
-D_SY_60265B4:
-  { type: SF64:ANIM, offset: 0x60265B4, symbol: D_SY_60265B4 }
-
-D_SY_602738C:
-  { type: SF64:ANIM, offset: 0x602738C, symbol: D_SY_602738C }
-
-D_SY_60273A0:
-  { type: GFX, offset: 0x60273A0, symbol: D_SY_60273A0 }
-
-D_SY_6027960:
-  { type: GFX, offset: 0x6027960, symbol: D_SY_6027960 }
-
-D_SY_6028668:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06028668, symbol: D_SY_6028668 }
-
-D_SY_6028E70:
-  { type: GFX, offset: 0x6028E70, symbol: D_SY_6028E70 }
-
-D_SY_6029B48:
-  { type: SF64:ANIM, offset: 0x6029B48, symbol: D_SY_6029B48 }
-
-D_SY_602A2CC:
-  { type: SF64:ANIM, offset: 0x602A2CC, symbol: D_SY_602A2CC }
-
-D_SY_602A2E0:
-  { type: GFX, offset: 0x602A2E0, symbol: D_SY_602A2E0 }
-
-D_SY_602A720:
-  { type: GFX, offset: 0x602A720, symbol: D_SY_602A720 }
-
-D_SY_602A8C0:
-  { type: GFX, offset: 0x602A8C0, symbol: D_SY_602A8C0 }
-
-D_SY_602AFF8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0602AFF8, symbol: D_SY_602AFF8 }
-
-D_SY_602B778:
-  { type: SF64:ANIM, offset: 0x602B778, symbol: D_SY_602B778 }
-
-D_SY_602B8DC:
-  { type: SF64:ANIM, offset: 0x602B8DC, symbol: D_SY_602B8DC }
-
-D_SY_602B8F0:
-  { type: GFX, offset: 0x602B8F0, symbol: D_SY_602B8F0 }
-
-D_SY_602CEB4:
-  { type: SF64:ANIM, offset: 0x602CEB4, symbol: D_SY_602CEB4 }
-
-D_SY_602D340:
-  { type: GFX, offset: 0x602D340, symbol: D_SY_602D340 }
-
-D_SY_602D830:
-  { type: GFX, offset: 0x602D830, symbol: D_SY_602D830 }
-
-D_SY_602DC40:
-  { type: GFX, offset: 0x602DC40, symbol: D_SY_602DC40 }
-
-D_SY_602DE70:
-  { type: GFX, offset: 0x602DE70, symbol: D_SY_602DE70 }
-
-D_SY_602E0A0:
-  { type: GFX, offset: 0x602E0A0, symbol: D_SY_602E0A0 }
-
-D_SY_602D140:
-  { type: SF64:SKELETON, offset: 0x602D140, symbol: D_SY_602D140 }
-
-D_SY_602D194:
-  { type: GFX, offset: 0x602D1A0, symbol: D_SY_602D194 }
-
-D_SY_602D238:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 16, offset: 0x0602D238, symbol: D_SY_602D238 }
-
-D_SY_602E4B0:
-  { type: SF64:ENVIRONMENT, offset: 0x602E4B0, symbol: D_SY_602E4B0 }
-
-D_SY_602E4F4:
-  { type: SF64:OBJECT_INIT, offset: 0x602E4F4, symbol: D_SY_602E4F4 }
-
-D_SY_6030B14:
-  { type: SF64:OBJECT_INIT, offset: 0x6030B14, symbol: D_SY_6030B14 }
-
-D_SY_6032E18:
-  { type: SF64:SCRIPT, offset: 0x6032E18, symbol: D_SY_6032E18 }
-
-D_SY_6033070:
-  {type: SF64:COLPOLY, count: 174, offset: 0x6033070, symbol: D_SY_6033070, mesh_symbol: D_SY_6033E08 }
-
-aSyRobotHitbox:
-  { type: SF64:HITBOX, offset: 0x603405C, symbol: aSyRobotHitbox }
-
-D_SY_60340C0:
-  { type: SF64:HITBOX, offset: 0x60340C0, symbol: D_SY_60340C0 }
-
-aSyRobot4Hitbox:
-  { type: SF64:HITBOX, offset: 0x6034124, symbol: aSyRobot4Hitbox }
-
-D_SY_60341A8:
-  { type: SF64:HITBOX, offset: 0x60341A8, symbol: D_SY_60341A8 }
-
-D_SY_603421C:
-  { type: SF64:HITBOX, offset: 0x603421C, symbol: D_SY_603421C }
-
-D_SY_60342A0:
-  { type: SF64:HITBOX, offset: 0x60342A0, symbol: D_SY_60342A0 }
-
-D_SY_6034304:
-  { type: SF64:HITBOX, offset: 0x6034304, symbol: D_SY_6034304 }
-
-aSyScenery156Hitbox:
-  { type: SF64:HITBOX, offset: 0x6034368, symbol: aSyScenery156Hitbox }
-
-aSyLaserTurretHitbox:
-  { type: SF64:HITBOX, offset: 0x603445C, symbol: aSyLaserTurretHitbox }
-
-aSyShip1Hitbox:
-  { type: SF64:HITBOX, offset: 0x6034478, symbol: aSyShip1Hitbox }
-
-aSyShip2Hitbox:
-  { type: SF64:HITBOX, offset: 0x603450C, symbol: aSyShip2Hitbox }
-
-aSyShip3Hitbox:
-  { type: SF64:HITBOX, offset: 0x6034588, symbol: aSyShip3Hitbox }
-
-aSyShip3DestroyedHitbox:
-  { type: SF64:HITBOX, offset: 0x6034664, symbol: aSyShip3DestroyedHitbox }
-
-aSyShip4Hitbox:
-  { type: SF64:HITBOX, offset: 0x6034770, symbol: aSyShip4Hitbox }
-
-aSyShipWindowsHitbox:
-  { type: SF64:HITBOX, offset: 0x60347D4, symbol: aSyShipWindowsHitbox }
-
-aSyShip4DestroyedHitbox:
-  { type: SF64:HITBOX, offset: 0x60347F0, symbol: aSyShip4DestroyedHitbox }
-
-aSyShipMissileHitbox:
-  { type: SF64:HITBOX, offset: 0x603486C, symbol: aSyShipMissileHitbox }
-
-# size = 0x34890
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_sector_z.yaml b/assets/yaml/jp/rev0/ast_sector_z.yaml
deleted file mode 100644
index 3cb0f2db1..000000000
--- a/assets/yaml/jp/rev0/ast_sector_z.yaml
+++ /dev/null
@@ -1,172 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xA1FCD0]
-  header:
-    code:
-      - '#include "assets/ast_sector_z.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-# Sector Z: Combat Zone
-aSzTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 12, offset: 0x6000000, symbol: aSzTitleCardTex }
-
-# One of the so called "Boss titles", unused in the game. A version of the same thing
-# seems to have been implemented in the 3DS version.
-# The text in japanese translates to:
-
-# Interspace anti-ship missile
-# Macbeth B
-D_SZ_6000840:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 104, height: 26, offset: 0x6000840, symbol: D_SZ_6000840 }
-
-# Great Fox icon showed in the Radar
-D_SZ_60012D0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 9, offset: 0x60012D0, symbol: D_SZ_60012D0 }
-
-aSzSpaceJunk1DL:
-  { type: GFX, offset: 0x6001360, symbol: aSzSpaceJunk1DL }
-
-aSzSpaceJunk2DL:
-  { type: GFX, offset: 0x6001A10, symbol: aSzSpaceJunk2DL }
-
-D_SZ_6001C80:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x06001C80, symbol: D_SZ_6001C80, tlut: 0x06001D80 }
-
-D_SZ_6001D80:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x06001D80, symbol: D_SZ_6001D80 }
-
-aSzSpaceJunk3DL:
-  { type: GFX, offset: 0x6001DA0, symbol: aSzSpaceJunk3DL }
-
-D_SZ_60025F0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x60025F0, symbol: D_SZ_60025F0, tlut: 0x060029F0 }
-
-D_SZ_60029F0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x060029F0, symbol: D_SZ_60029F0 }
-
-D_SZ_6002BD0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 8, height: 8, offset: 0x06002BD0, symbol: D_SZ_6002BD0, tlut: 0x06002C10 }
-
-D_SZ_6002C10:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x06002C10, symbol: D_SZ_6002C10 }
-
-D_SZ_6002C30:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x06002C30, symbol: D_SZ_6002C30, tlut: 0x06002D30 }
-
-D_SZ_6002D30:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 88, offset: 0x06002D30, symbol: D_SZ_6002D30 }
-
-D_SZ_6002DE0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x06002DE0, symbol: D_SZ_6002DE0, tlut: 0x06002EE0 }
-
-D_SZ_6002EE0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 80, offset: 0x06002EE0, symbol: D_SZ_6002EE0 }
-
-aSzBackgroundDL:
-  { type: GFX, offset: 0x6002F80, symbol: aSzBackgroundDL }
-
-# Sector Z Background
-aSzBackgroundTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x06003010, symbol: aSzBackgroundTex }
-
-D_SZ_6004010:
-  { type: GFX, offset: 0x6004010, symbol: D_SZ_6004010 }
-
-D_SZ_60041F8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x060041F8, symbol: D_SZ_60041F8, tlut: 0x060042F8 }
-
-D_SZ_60042F8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x060042F8, symbol: D_SZ_60042F8 }
-
-aSzMissileMark:
-  { type: GFX, offset: 0x6004330, symbol: aSzMissileMark }
-
-D_SZ_6004458:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 8, offset: 0x06004458, symbol: D_SZ_6004458, tlut: 0x06004558 }
-
-D_SZ_6004558:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x06004558, symbol: D_SZ_6004558 }
-
-aSzMissileRadarMarkDL:
-  { type: GFX, offset: 0x6004570, symbol: aSzMissileRadarMarkDL }
-
-aSzSpaceJunk4DL:
-  { type: GFX, offset: 0x60045E0, symbol: aSzSpaceJunk4DL }
-
-D_SZ_60047E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60047E0, symbol: D_SZ_60047E0 }
-
-aSzInvaderIIIDL:
-  { type: GFX, offset: 0x6004FE0, symbol: aSzInvaderIIIDL }
-
-aSzInvaderIIITex2:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x060054E0, symbol: aSzInvaderIIITex2, tlut: 0x060058E0 }
-
-aSzInvaderIIITex2TLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x060058E0, symbol: aSzInvaderIIITex2TLUT }
-
-aSzInvaderIIITex1:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x06005AC0, symbol: aSzInvaderIIITex1, tlut: 0x06005BC0 }
-
-aSzInvaderIIITex1TLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x06005BC0, symbol: aSzInvaderIIITex1TLUT }
-
-D_SZ_6005BF0:
-  { type: GFX, offset: 0x6005BF0, symbol: D_SZ_6005BF0 }
-
-D_SZ_6006090:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x06006090, symbol: D_SZ_6006090, tlut: 0x06006490 }
-
-D_SZ_6006490:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x06006490, symbol: D_SZ_6006490 }
-
-D_SZ_6006660:
-  { type: GFX, offset: 0x6006660, symbol: D_SZ_6006660 }
-
-D_SZ_6006780:
-  { type: GFX, offset: 0x6006780, symbol: D_SZ_6006780 }
-
-D_SZ_6006A30:
-  { type: GFX, offset: 0x6006A30, symbol: D_SZ_6006A30 }
-
-D_SZ_6006BD8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x06006BD8, symbol: D_SZ_6006BD8, tlut: 0x06006CD8 }
-
-D_SZ_6006CD8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x06006CD8, symbol: D_SZ_6006CD8 }
-
-aSzMissileAnim:
-  { type: SF64:ANIM, offset: 0x6006D64, symbol: aSzMissileAnim }
-
-aSzMissileSkel:
-  { type: SF64:SKELETON, offset: 0x6006E50, symbol: aSzMissileSkel }
-
-D_SZ_6006E70:
-  { type: SF64:ENVIRONMENT, offset: 0x6006E70, symbol: D_SZ_6006E70 }
-
-D_SZ_6006EB4:
-  { type: SF64:OBJECT_INIT, offset: 0x6006EB4, symbol: D_SZ_6006EB4 }
-
-D_SZ_6007558:
-  {type: SF64:COLPOLY, count: 316, offset: 0x6007558, symbol: D_SZ_6007558, mesh_symbol: D_SZ_OFFSET }
-
-D_SZ_6009230:
-  { type: SF64:HITBOX, offset: 0x6009230, symbol: D_SZ_6009230 }
-
-aSzSpaceJunk3Hitbox:
-  { type: SF64:HITBOX, offset: 0x600924C, symbol: aSzSpaceJunk3Hitbox }
-
-aSzSpaceJunk1Hitbox:
-  { type: SF64:HITBOX, offset: 0x60092E8, symbol: aSzSpaceJunk1Hitbox }
-
-aSzGreatFoxHitbox:
-  { type: SF64:HITBOX, offset: 0x6009388, symbol: aSzGreatFoxHitbox }
-
-# size = 0x93B0
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_solar.yaml b/assets/yaml/jp/rev0/ast_solar.yaml
deleted file mode 100644
index 6af8cf4e8..000000000
--- a/assets/yaml/jp/rev0/ast_solar.yaml
+++ /dev/null
@@ -1,227 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xB2E3F0]
-  header:
-    code:
-      - '#include "assets/ast_solar.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-aSoTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 13, offset: 0x6000000, symbol: aSoTitleCardTex}
-
-D_SO_60005B0:
-  { type: GFX, offset: 0x60005B0, symbol: D_SO_60005B0}
-
-D_SO_6001C50:
-  { type: VTX, count: 289, offset: 0x6001C50, symbol: D_SO_6001C50}
-
-D_SO_6002E60:
-  { type: GFX, offset: 0x6002E60, symbol: D_SO_6002E60}
-
-D_SO_6004500:
-  { type: VTX, count: 289, offset: 0x6004500, symbol: D_SO_6004500}
-
-D_SO_6005710:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6005710, symbol: D_SO_6005710}
-
-aSoGoreAnim:
-  { type: SF64:ANIM, offset: 0x600636C, symbol: aSoGoreAnim}
-
-aSoGoreSkel:
-  { type: SF64:SKELETON, offset: 0x6006558, symbol: aSoGoreSkel}
-
-D_SO_6006DD8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6006DD8, symbol: D_SO_6006DD8}
-
-D_SO_6007C40:
-  { type: GFX, offset: 0x6007C40, symbol: D_SO_6007C40}
-
-D_SO_6007CC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6007CC0, symbol: D_SO_6007CC0}
-
-D_SO_60084C0:
-  { type: GFX, offset: 0x60084C0, symbol: D_SO_60084C0}
-
-D_SO_6008540:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6008540, symbol: D_SO_6008540}
-
-D_SO_6008D40:
-  { type: GFX, offset: 0x6008D40, symbol: D_SO_6008D40}
-
-D_SO_6008DC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6008DC0, symbol: D_SO_6008DC0}
-
-D_SO_6009D30:
-  { type: SF64:ANIM, offset: 0x6009D30, symbol: D_SO_6009D30}
-
-D_SO_600B1B4:
-  { type: SF64:ANIM, offset: 0x600B1B4, symbol: D_SO_600B1B4}
-
-D_SO_600C15C:
-  { type: SF64:ANIM, offset: 0x600C15C, symbol: D_SO_600C15C}
-
-D_SO_600D3DC:
-  { type: SF64:ANIM, offset: 0x600D3DC, symbol: D_SO_600D3DC}
-
-D_SO_600E2C4:
-  { type: SF64:ANIM, offset: 0x600E2C4, symbol: D_SO_600E2C4}
-
-D_SO_600E470:
-  { type: SF64:SKELETON, offset: 0x600E470, symbol: D_SO_600E470}
-
-D_SO_600F744:
-  { type: SF64:ANIM, offset: 0x600F744, symbol: D_SO_600F744}
-
-D_SO_600F750:
-  { type: GFX, offset: 0x600F750, symbol: D_SO_600F750}
-
-D_SO_6010198:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6010198, symbol: D_SO_6010198}
-
-D_SO_6010998:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6010998, symbol: D_SO_6010998}
-
-D_SO_6011198:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6011198, symbol: D_SO_6011198}
-
-D_SO_6011398:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6011398, symbol: D_SO_6011398}
-
-D_SO_6012C00:
-  { type: SF64:ANIM, offset: 0x6012C00, symbol: D_SO_6012C00}
-
-D_SO_601388C:
-  { type: SF64:ANIM, offset: 0x601388C, symbol: D_SO_601388C}
-
-D_SO_60138A0:
-  { type: GFX, offset: 0x60138A0, symbol: D_SO_60138A0}
-
-D_SO_6013C70:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6013C70, symbol: D_SO_6013C70}
-
-D_SO_6014470:
-  { type: GFX, offset: 0x6014470, symbol: D_SO_6014470}
-
-D_SO_60146D0:
-  { type: GFX, offset: 0x60146D0, symbol: D_SO_60146D0}
-
-D_SO_6014930:
-  { type: GFX, offset: 0x6014930, symbol: D_SO_6014930}
-
-D_SO_6014B80:
-  { type: GFX, offset: 0x6014B80, symbol: D_SO_6014B80}
-
-D_SO_6014DB0:
-  { type: GFX, offset: 0x6014DB0, symbol: D_SO_6014DB0}
-
-D_SO_60151A0:
-  { type: GFX, offset: 0x60151A0, symbol: D_SO_60151A0}
-
-D_SO_6015810:
-  { type: GFX, offset: 0x6015810, symbol: D_SO_6015810}
-
-aSoRock3DL:
-  { type: GFX, offset: 0x6016CF0, symbol: aSoRock3DL}
-
-D_SO_6016F08:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6016F08, symbol: D_SO_6016F08}
-
-D_SO_6017008:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x6017008, symbol: D_SO_6017008}
-
-aSoRock2DL:
-  { type: GFX, offset: 0x6017090, symbol: aSoRock2DL}
-
-D_SO_6017200:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6017200, symbol: D_SO_6017200}
-
-D_SO_6017300:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 56, offset: 0x6017300, symbol: D_SO_6017300}
-
-aSoRock1DL:
-  { type: GFX, offset: 0x6017370, symbol: aSoRock1DL}
-
-D_SO_60174E0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 8, height: 8, offset: 0x60174E0, symbol: D_SO_60174E0}
-
-D_SO_6017520:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x6017520, symbol: D_SO_6017520}
-
-D_SO_6017550:
-  { type: GFX, offset: 0x6017550, symbol: D_SO_6017550}
-
-D_SO_60175D8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x60175D8, symbol: D_SO_60175D8}
-
-D_SO_60185E0:
-  { type: GFX, offset: 0x60185E0, symbol: D_SO_60185E0}
-
-D_SO_6018668:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x6018668, symbol: D_SO_6018668}
-
-D_SO_6019670:
-  { type: GFX, offset: 0x6019670, symbol: D_SO_6019670}
-
-D_SO_60196F8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x60196F8, symbol: D_SO_60196F8}
-
-D_SO_601A700:
-  { type: GFX, offset: 0x601A700, symbol: D_SO_601A700}
-
-D_SO_601A788:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x601A788, symbol: D_SO_601A788}
-
-D_SO_601B790:
-  { type: GFX, offset: 0x601B790, symbol: D_SO_601B790}
-
-D_SO_601B818:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x601B818, symbol: D_SO_601B818}
-
-D_SO_601C820:
-  { type: GFX, offset: 0x601C820, symbol: D_SO_601C820}
-
-D_SO_601C8A8:
-  { type: TEXTURE, ctype: u32, format: RGBA32, width: 32, height: 32, offset: 0x601C8A8, symbol: D_SO_601C8A8}
-
-D_SO_601D8B0:
-  { type: GFX, offset: 0x601D8B0, symbol: D_SO_601D8B0}
-
-D_SO_601D948:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x601D948, symbol: D_SO_601D948}
-
-D_SO_601E150:
-  { type: GFX, offset: 0x601E150, symbol: D_SO_601E150}
-
-D_SO_601E1E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x601E1E8, symbol: D_SO_601E1E8}
-
-D_SO_601F1F0:
-  { type: SF64:ENVIRONMENT, offset: 0x601F1F0, symbol: D_SO_601F1F0}
-
-D_SO_601F234:
-  { type: SF64:OBJECT_INIT, offset: 0x601F234, symbol: D_SO_601F234}
-
-D_SO_6020DD0:
-  { type: SF64:SCRIPT, offset: 0x6020DD0, symbol: D_SO_6020DD0}
-
-D_SO_6020F60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6020F60, symbol: D_SO_6020F60}
-
-D_SO_6021F60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6021F60, symbol: D_SO_6021F60}
-
-D_SO_6022760:
-  { type: ARRAY, count: 289, array_type: u16, offset: 0x6022760, symbol: D_SO_6022760}
-
-D_SO_60229A4:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60229A4, symbol: D_SO_60229A4}
-
-D_SO_60231A4:
-  { type: SF64:HITBOX, offset: 0x60231A4, symbol: D_SO_60231A4}
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_star_wolf.yaml b/assets/yaml/jp/rev0/ast_star_wolf.yaml
deleted file mode 100644
index e6e12660f..000000000
--- a/assets/yaml/jp/rev0/ast_star_wolf.yaml
+++ /dev/null
@@ -1,102 +0,0 @@
-:config:
-  segments:
-    - [0x0F, 0x911000]
-  header:
-    code:
-      - '#include "assets/ast_star_wolf.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_STAR_WOLF_F000000:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F000000, symbol: D_STAR_WOLF_F000000 }
-
-D_STAR_WOLF_F000F20:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F000F20, symbol: D_STAR_WOLF_F000F20 }
-
-D_STAR_WOLF_F001E40:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F001E40, symbol: D_STAR_WOLF_F001E40 }
-
-D_STAR_WOLF_F002D60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F002D60, symbol: D_STAR_WOLF_F002D60 }
-
-D_STAR_WOLF_F003C80:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F003C80, symbol: D_STAR_WOLF_F003C80 }
-
-D_STAR_WOLF_F004BA0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F004BA0, symbol: D_STAR_WOLF_F004BA0 }
-
-D_STAR_WOLF_F005AC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F005AC0, symbol: D_STAR_WOLF_F005AC0 }
-
-D_STAR_WOLF_F0069E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F0069E0, symbol: D_STAR_WOLF_F0069E0 }
-
-D_STAR_WOLF_F007900:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F007900, symbol: D_STAR_WOLF_F007900 }
-
-D_STAR_WOLF_F008820:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F008820, symbol: D_STAR_WOLF_F008820 }
-
-D_STAR_WOLF_F009740:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F009740, symbol: D_STAR_WOLF_F009740 }
-
-D_STAR_WOLF_F00A660:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F00A660, symbol: D_STAR_WOLF_F00A660 }
-
-D_STAR_WOLF_F00B580:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F00B580, symbol: D_STAR_WOLF_F00B580 }
-
-D_STAR_WOLF_F00C4A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F00C4A0, symbol: D_STAR_WOLF_F00C4A0 }
-
-D_STAR_WOLF_F00D3C0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F00D3C0, symbol: D_STAR_WOLF_F00D3C0 }
-
-D_STAR_WOLF_F00E2E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x0F00E2E0, symbol: D_STAR_WOLF_F00E2E0 }
-
-aStarWolfStandardShipDL:
-  { type: GFX, offset: 0xF00F200, symbol: aStarWolfStandardShipDL }
-
-D_STAR_WOLF_F0101D0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0F0101D0, symbol: D_STAR_WOLF_F0101D0 }
-
-D_STAR_WOLF_F011E80:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0F011E80, symbol: D_STAR_WOLF_F011E80 }
-
-D_STAR_WOLF_F011680:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0F011680, symbol: D_STAR_WOLF_F011680 }
-
-aStarWolfUpgradedShipDL:
-  { type: GFX, offset: 0xF0103D0, symbol: aStarWolfUpgradedShipDL }
-
-D_STAR_WOLF_F011F00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0F011F00, symbol: D_STAR_WOLF_F011F00 }
-
-D_STAR_WOLF_F012700:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0F012700, symbol: D_STAR_WOLF_F012700 }
-
-D_STAR_WOLF_F012F00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0F012F00, symbol: D_STAR_WOLF_F012F00 }
-
-D_STAR_WOLF_F013100:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0F013100, symbol: D_STAR_WOLF_F013100 }
-
-D_STAR_WOLF_F013180:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0F013180, symbol: D_STAR_WOLF_F013180 }
-
-D_STAR_WOLF_F013980:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0F013980, symbol: D_STAR_WOLF_F013980 }
-
-aStarWolfRadarMarkDL:
-  { type: GFX, offset: 0xF014180, symbol: aStarWolfRadarMarkDL }
-
-D_STAR_WOLF_F014208:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x0F014208, symbol: D_STAR_WOLF_F014208 }
-
-aStarWolfShadowDL:
-  { type: GFX, offset: 0xF014310, symbol: aStarWolfShadowDL }
-
-aStarWolfShadowTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 32, offset: 0x0F014398, symbol: aStarWolfShadowTex }
diff --git a/assets/yaml/jp/rev0/ast_text.yaml b/assets/yaml/jp/rev0/ast_text.yaml
deleted file mode 100644
index 68af92c80..000000000
--- a/assets/yaml/jp/rev0/ast_text.yaml
+++ /dev/null
@@ -1,421 +0,0 @@
-:config:
-  segments:
-    - [0x05, 0xC98590]
-  header:
-    code:
-      - '#include "assets/ast_text.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-# 0 (small)
-aSmallText_0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000000, symbol: aSmallText_0 }
-
-# 1 (small)
-aSmallText_1:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000080, symbol: aSmallText_1 }
-
-# 2 (small)
-aSmallText_2:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000100, symbol: aSmallText_2 }
-
-# 3 (small)
-aSmallText_3:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000180, symbol: aSmallText_3 }
-
-# 4 (small)
-aSmallText_4:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000200, symbol: aSmallText_4 }
-
-# 5 (small)
-aSmallText_5:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000280, symbol: aSmallText_5 }
-
-# 6 (small)
-aSmallText_6:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000300, symbol: aSmallText_6 }
-
-# 7 (small)
-aSmallText_7:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000380, symbol: aSmallText_7 }
-
-# 8 (small)
-aSmallText_8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000400, symbol: aSmallText_8 }
-
-# 9 (small)
-aSmallText_9:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 8, offset: 0x5000480, symbol: aSmallText_9 }
-
-# Mission No.
-aTextMissionNo:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 19, offset: 0x5000500, symbol: aTextMissionNo }
-
-# Training
-aTrTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 12, offset: 0x5000D50, symbol: aTrTitleCardTex }
-
-# Enemies Down
-aTextEnemiesDown:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 25, offset: 0x5001110, symbol: aTextEnemiesDown }
-
-# Accumulated Total
-aTextAccumTotal:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 128, height: 10, offset: 0x5001750, symbol: aTextAccumTotal }
-
-# Status of Team
-aTextStatusOfTeam:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 120, height: 12, offset: 0x5001C50, symbol: aTextStatusOfTeam }
-
-# End
-aTextEnd:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 8, offset: 0x50021F0, symbol: aTextEnd }
-
-# ACCOM
-aTextACCOM:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 120, height: 23, offset: 0x50022F0, symbol: aTextACCOM }
-
-# PLISHED
-aTextPLISHED:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 136, height: 23, offset: 0x5002DC0, symbol: aTextPLISHED }
-
-# MISSION
-aTextMISSION:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 128, height: 23, offset: 0x5003A00, symbol: aTextMISSION }
-
-# COMP
-aTextCOMP:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 96, height: 23, offset: 0x5004580, symbol: aTextCOMP }
-
-# LETE
-aTextLETE:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 21, offset: 0x5004E20, symbol: aTextLETE }
-
-# THE END
-aText_THE_END:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 192, height: 30, offset: 0x50054B0, symbol: aText_THE_END }
-
-# Falco
-aTextFalco:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 48, height: 8, offset: 0x5006B30, symbol: aTextFalco }
-
-# Peppy
-aTextPeppy:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 48, height: 10, offset: 0x5006CB0, symbol: aTextPeppy }
-
-# Slippy
-aTextSlippy:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 10, offset: 0x5006E90, symbol: aTextSlippy }
-
-# A (small)
-aSmallText_A:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x50070C0, symbol: aSmallText_A }
-
-# B (small)
-aSmallText_B:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007100, symbol: aSmallText_B }
-
-# ! (small)
-aSmallTextExclamMark:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007140, symbol: aSmallTextExclamMark }
-
-# C (small)
-aSmallText_C:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007180, symbol: aSmallText_C }
-
-# D (small)
-aSmallText_D:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x50071C0, symbol: aSmallText_D }
-
-# E (small)
-aSmallText_E:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007200, symbol: aSmallText_E }
-
-# 1 (large) Used in the ending: 1997
-sLargeText_1997_1:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5007240, symbol: sLargeText_1997_1 }
-
-# 7 (large) Used in the ending: 1997
-sLargeText_1997_7:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5007330, symbol: sLargeText_1997_7 }
-
-# 9 (large) Used in the ending: 1997
-sLargeText_1997_9:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5007420, symbol: sLargeText_1997_9 }
-
-# F (small)
-aSmallText_F:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007510, symbol: aSmallText_F }
-
-# G (small)
-aSmallText_G:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007550, symbol: aSmallText_G }
-
-# H (small)
-aSmallText_H:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007590, symbol: aSmallText_H }
-
-# I (small)
-aSmallText_I:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x50075D0, symbol: aSmallText_I }
-
-# J (small)
-aSmallText_J:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007610, symbol: aSmallText_J }
-
-# K (small)
-aSmallText_K:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007650, symbol: aSmallText_K }
-
-# 完 (Japanese kanji meaning COMPLETE)
-aTextKanjiCOMPLETE:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 48, height: 47, offset: 0x5007690, symbol: aTextKanjiCOMPLETE }
-
-# L (small)
-aSmallText_L:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007F60, symbol: aSmallText_L }
-
-# M (small)
-aSmallText_M:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007FA0, symbol: aSmallText_M }
-
-# N (small)
-aSmallText_N:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5007FE0, symbol: aSmallText_N }
-
-# A (large)
-aLargeText_A:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008020, symbol: aLargeText_A }
-
-# B (large)
-aLargeText_B:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008110, symbol: aLargeText_B }
-
-# C (large)
-aLargeText_C:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008200, symbol: aLargeText_C }
-
-# D (large)
-aLargeText_D:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50082F0, symbol: aLargeText_D }
-
-# E (large)
-aLargeText_E:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50083E0, symbol: aLargeText_E }
-
-# F (large)
-aLargeText_F:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50084D0, symbol: aLargeText_F }
-
-# G (large)
-aLargeText_G:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50085C0, symbol: aLargeText_G }
-
-# H (large)
-aLargeText_H:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50086B0, symbol: aLargeText_H }
-
-# I (large)
-aLargeText_I:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50087A0, symbol: aLargeText_I }
-
-# J (large)
-aLargeText_J:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008890, symbol: aLargeText_J }
-
-# K (large)
-aLargeText_K:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008980, symbol: aLargeText_K }
-
-# L (large)
-aLargeText_L:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008A70, symbol: aLargeText_L }
-
-# M (large)
-aLargeText_M:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008B60, symbol: aLargeText_M }
-
-# N (large)
-aLargeText_N:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008C50, symbol: aLargeText_N }
-
-# O (large)
-aSmallText_O:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008D40, symbol: aSmallText_O }
-
-# P (large)
-aLargeText_P:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008E30, symbol: aLargeText_P }
-
-# Q (large)
-aLargeText_Q:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5008F20, symbol: aLargeText_Q }
-
-# R (large)
-aLargeText_R:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009010, symbol: aLargeText_R }
-
-# S (large)
-aLargeText_S:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009100, symbol: aLargeText_S }
-
-# T (large)
-aLargeText_T:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50091F0, symbol: aLargeText_T }
-
-# U (large)
-aLargeText_U:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50092E0, symbol: aLargeText_U }
-
-# V (large)
-aLargeText_V:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x50093D0, symbol: aLargeText_V }
-
-# W (large)
-aLargeText_W:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 15, offset: 0x50094C0, symbol: aLargeText_W }
-
-# X (large)
-aLargeText_X:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 15, offset: 0x50096A0, symbol: aLargeText_X }
-
-# Y (large)
-aLargeText_Y:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009880, symbol: aLargeText_Y }
-
-# - (large)
-aLargeText_HYPHEN:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009970, symbol: aLargeText_HYPHEN }
-
-# Z (large)
-aLargeText_Z:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009A60, symbol: aLargeText_Z }
-
-# s (large)
-aLargeText_s_:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009B50, symbol: aLargeText_s_ }
-
-# t (large)
-aLargeText_t_:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009C40, symbol: aLargeText_t_ }
-
-# o (small)
-aSmallText_o_:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5009D30, symbol: aSmallText_o_ }
-
-# p (small)
-aSmallText_p:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5009D70, symbol: aSmallText_p }
-
-# . (large)
-aLargeText_DOT:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009DB0, symbol: aLargeText_DOT }
-
-# q (small)
-aSmallText_q:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5009EA0, symbol: aSmallText_q }
-
-# r (small)
-aSmallText_r:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5009EE0, symbol: aSmallText_r }
-
-# s (small)
-aSmallText_s:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x5009F20, symbol: aSmallText_s }
-
-# 0 (large)
-aLargeText_0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x5009F60, symbol: aLargeText_0 }
-
-# 1 (large)
-aLargeText_1:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A050, symbol: aLargeText_1 }
-
-# 2 (large)
-aLargeText_2:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A140, symbol: aLargeText_2 }
-
-# 3 (large)
-aLargeText_3:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A230, symbol: aLargeText_3 }
-
-# 4 (large)
-aLargeText_4:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A320, symbol: aLargeText_4 }
-
-# 5 (large)
-aLargeText_5:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A410, symbol: aLargeText_5 }
-
-# 6 (large)
-aLargeText_6:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A500, symbol: aLargeText_6 }
-
-# 7 (large)
-aLargeText_7:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A5F0, symbol: aLargeText_7 }
-
-# 8 (large)
-aLargeText_8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A6E0, symbol: aLargeText_8 }
-
-# 9 (large)
-aLargeText_9:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 15, offset: 0x500A7D0, symbol: aLargeText_9 }
-
-# 終 (Japanese kanji meaning END)
-aTextKanji_END:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 49, offset: 0x500A8C0, symbol: aTextKanji_END }
-
-# T (small)
-aSmallText_T:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B380, symbol: aSmallText_T }
-
-# . (small)
-aSmallText_DOT:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B3C0, symbol: aSmallText_DOT }
-
-# : (small)
-aSmallText_COLON:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B400, symbol: aSmallText_COLON }
-
-# U (small)
-aSmallText_U:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B440, symbol: aSmallText_U }
-
-# V (small)
-aSmallText_V:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B480, symbol: aSmallText_V }
-
-# W (small)
-aSmallText_W:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B4C0, symbol: aSmallText_W }
-
-# X (small)
-aSmallText_X:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B500, symbol: aSmallText_X }
-
-# Y (small)
-aSmallText_Y:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B540, symbol: aSmallText_Y }
-
-# - (small)
-aSmallText_HYPHEN:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B580, symbol: aSmallText_HYPHEN }
-
-# Z (small)
-aSmallText_Z:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x500B5C0, symbol: aSmallText_Z }
-
-# Wrench DisplayList (Teammate in maintenance state)
-aDownWrenchDL:
-  { type: GFX, offset: 0x500B600, symbol: aDownWrenchDL }
-
-# Wrench Texture
-aDownWrenchTexture:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 32, offset: 0x0500B768,  tlut: 0x0500B868, symbol: aDownWrenchTexture }
-
-# Wrench TLUT
-aDownWrenchTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x0500B868, symbol: aDownWrenchTLUT }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_titania.yaml b/assets/yaml/jp/rev0/ast_titania.yaml
deleted file mode 100644
index 418495514..000000000
--- a/assets/yaml/jp/rev0/ast_titania.yaml
+++ /dev/null
@@ -1,188 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0x9A3370]
-  header:
-    code:
-      - '#include "assets/ast_titania.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-aTiTitleCardTex:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 96, height: 28, offset: 0x6000000, symbol: aTiTitleCardTex}
-
-D_TI_6000A80:
-  {type: GFX, offset: 0x6000A80, symbol: D_TI_6000A80}
-
-D_TI_6000B10:
-  {type: TEXTURE, format: RGBA16, ctype: u16, width: 64, height: 32, offset: 0x6000B10, symbol: D_TI_6000B10}
-
-D_TI_6001B10:
-  {type: GFX, offset: 0x6001B10, symbol: D_TI_6001B10}
-
-D_TI_6001BA8:
-  {type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x6001BA8, symbol: D_TI_6001BA8}
-
-aTiCactusDL:
-  {type: GFX, offset: 0x60023B0, symbol: aTiCactusDL}
-
-D_TI_6002438:
-  {type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 64, offset: 0x6002438, symbol: D_TI_6002438}
-
-D_TI_6003440:
-  {type: GFX, offset: 0x6003440, symbol: D_TI_6003440}
-
-D_TI_60034E0:
-  {type: GFX, offset: 0x60034E0, symbol: D_TI_60034E0}
-
-D_TI_6003580:
-  {type: GFX, offset: 0x6003580, symbol: D_TI_6003580}
-
-D_TI_6003620:
-  {type: GFX, offset: 0x6003620, symbol: D_TI_6003620}
-
-D_TI_60036C0:
-  {type: GFX, offset: 0x60036C0, symbol: D_TI_60036C0}
-
-D_TI_6003760:
-  {type: GFX, offset: 0x6003760, symbol: D_TI_6003760}
-
-D_TI_6003800:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6003800, symbol: D_TI_6003800}
-
-D_TI_6003C00:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6003C00, symbol: D_TI_6003C00}
-
-D_TI_6004000:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6004000, symbol: D_TI_6004000}
-
-D_TI_6004400:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6004400, symbol: D_TI_6004400}
-
-D_TI_6004800:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6004800, symbol: D_TI_6004800}
-
-D_TI_6004C00:
-  {type: TEXTURE, format: IA8, ctype: u8, width: 32, height: 32, offset: 0x6004C00, symbol: D_TI_6004C00}
-
-D_TI_6005000:
-  {type: SF64:ENVIRONMENT, offset: 0x6005000, symbol: D_TI_6005000}
-
-D_TI_600631C:
-  {type: SF64:SCRIPT, offset: 0x600631C, symbol: D_TI_600631C}
-
-aTi1LandmineHitbox:
-  {type: SF64:HITBOX, offset: 0x60064AC, symbol: aTi1LandmineHitbox}
-
-aTiDesertRoverHitbox:
-  {type: SF64:HITBOX, offset: 0x60064C8, symbol: aTiDesertRoverHitbox}
-
-aTiSkullHitbox:
-  {type: SF64:HITBOX, offset: 0x60064FC, symbol: aTiSkullHitbox}
-
-aTiRib0Hitbox:
-  {type: SF64:HITBOX, offset: 0x6006518, symbol: aTiRib0Hitbox}
-
-aTiRib1Hitbox:
-  {type: SF64:HITBOX, offset: 0x6006564, symbol: aTiRib1Hitbox}
-
-aTiRib2Hitbox:
-  {type: SF64:HITBOX, offset: 0x60065B0, symbol: aTiRib2Hitbox}
-
-aTiRib3Hitbox:
-  {type: SF64:HITBOX, offset: 0x60065FC, symbol: aTiRib3Hitbox}
-
-aTiRib4Hitbox:
-  {type: SF64:HITBOX, offset: 0x6006648, symbol: aTiRib4Hitbox}
-
-aTiRib5Hitbox:
-  {type: SF64:HITBOX, offset: 0x6006694, symbol: aTiRib5Hitbox}
-
-aTiRib6Hitbox:
-  {type: SF64:HITBOX, offset: 0x60066E0, symbol: aTiRib6Hitbox}
-
-aTiRib7Hitbox:
-  {type: SF64:HITBOX, offset: 0x600672C, symbol: aTiRib7Hitbox}
-
-aTiRib8Hitbox:
-  {type: SF64:HITBOX, offset: 0x6006778, symbol: aTiRib8Hitbox}
-
-aTiDelphorHitbox:
-  {type: SF64:HITBOX, offset: 0x60067C4, symbol: aTiDelphorHitbox}
-
-aTiDelphorHeadHitbox:
-  {type: SF64:HITBOX, offset: 0x6006808, symbol: aTiDelphorHeadHitbox}
-
-aTiDesertCrawlerHitbox:
-  {type: SF64:HITBOX, offset: 0x6006A3C, symbol: aTiDesertCrawlerHitbox}
-
-aTiBoulderHitbox:
-  {type: SF64:HITBOX, offset: 0x600683C, symbol: aTiBoulderHitbox}
-
-aTiBombHitbox:
-  {type: SF64:HITBOX, offset: 0x6006858, symbol: aTiBombHitbox}
-
-D_TI_6006874:
-  {type: SF64:HITBOX, offset: 0x6006874, symbol: D_TI_6006874}
-
-aTiRascoHitbox:
-  {type: SF64:HITBOX, offset: 0x6006890, symbol: aTiRascoHitbox}
-
-aTiCactusHitbox:
-  {type: SF64:HITBOX, offset: 0x60068BC, symbol: aTiCactusHitbox}
-
-aTiFekudaHitbox:
-  {type: SF64:HITBOX, offset: 0x60068F0, symbol: aTiFekudaHitbox}
-
-D_TI_6006940:
-  {type: SF64:HITBOX, offset: 0x6006940, symbol: D_TI_6006940}
-
-D_TI_600695C:
-  {type: SF64:HITBOX, offset: 0x600695C, symbol: D_TI_600695C}
-
-D_TI_6006978:
-  {type: SF64:HITBOX, offset: 0x6006978, symbol: D_TI_6006978}
-
-D_TI_6006994:
-  {type: SF64:HITBOX, offset: 0x6006994, symbol: D_TI_6006994}
-
-D_TI_60069B0:
-  {type: SF64:HITBOX, offset: 0x60069B0, symbol: D_TI_60069B0}
-
-D_TI_60069CC:
-  {type: SF64:HITBOX, offset: 0x60069CC, symbol: D_TI_60069CC}
-
-D_TI_60069E8:
-  {type: SF64:HITBOX, offset: 0x60069E8, symbol: D_TI_60069E8}
-
-D_TI_6006A04:
-  {type: SF64:HITBOX, offset: 0x6006A04, symbol: D_TI_6006A04}
-
-D_TI_6006A20:
-  {type: SF64:HITBOX, offset: 0x6006A20, symbol: D_TI_6006A20}
-
-aTiPillarHitbox:
-  {type: SF64:HITBOX, offset: 0x6006BF0, symbol: aTiPillarHitbox}
-
-D_TI_6006924:
-  {type: SF64:HITBOX, offset: 0x6006924, symbol: D_TI_6006924}
-
-D_TI_6006C0C:
-  {type: SF64:HITBOX, offset: 0x6006C0C, symbol: D_TI_6006C0C}
-
-D_TI_6006C28:
-  {type: SF64:HITBOX, offset: 0x6006C28, symbol: D_TI_6006C28}
-
-aTiBridgeHitbox:
-  {type: SF64:HITBOX, offset: 0x6006C44, symbol: aTiBridgeHitbox}
-
-D_TI_6006C60:
-  {type: SF64:OBJECT_INIT, offset: 0x6006C60, symbol: D_TI_6006C60}
-
-D_TI_6009BB8:
-  {type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x6009BB8, symbol: D_TI_6009BB8}
diff --git a/assets/yaml/jp/rev0/ast_title.yaml b/assets/yaml/jp/rev0/ast_title.yaml
deleted file mode 100644
index 772a8c772..000000000
--- a/assets/yaml/jp/rev0/ast_title.yaml
+++ /dev/null
@@ -1,263 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xBC9230]
-  header:
-    code:
-      - '#include "assets/ast_title.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aTitleStarfoxLogoTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 236, height: 60, offset: 0x6000000, symbol: aTitleStarfoxLogoTex }
-
-aTitleN64LogoTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 128, height: 88, offset: 0x6006EA0, symbol: aTitleN64LogoTex }
-
-gTitleRadioStatic: { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x600C6A0, symbol: gTitleRadioStatic }
-
-aTitleSunGlareTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600D5C0, symbol: aTitleSunGlareTex }
-
-a1997NintendoTex: { type: TEXTURE, ctype: u8, format: IA8, width: 120, height: 12, offset: 0x600DDC0, symbol: a1997NintendoTex }
-
-aTitlePressStartTex: { type: TEXTURE, ctype: u8, format: IA8, width: 120, height: 13, offset: 0x600E360, symbol: aTitlePressStartTex }
-
-aTitleGreatFoxCardTex: { type: TEXTURE, ctype: u8, format: IA8, width: 144, height: 28, offset: 0x600E980, symbol: aTitleGreatFoxCardTex }
-
-gTitleSlippyCard: { type: TEXTURE, ctype: u8, format: IA8, width: 144, height: 13, offset: 0x600F940, symbol: gTitleSlippyCard }
-
-gTitlePeppyCard: { type: TEXTURE, ctype: u8, format: IA8, width: 120, height: 13, offset: 0x6010090, symbol: gTitlePeppyCard }
-
-gTitleFalcoCard: { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 13, offset: 0x60106B0, symbol: gTitleFalcoCard }
-
-gTitleFoxCard: { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 13, offset: 0x6010FA0, symbol: gTitleFoxCard }
-
-aTitleArwingCardTex: { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 26, offset: 0x6011890, symbol: aTitleArwingCardTex }
-
-aTitleNoControllerTex: { type: TEXTURE, ctype: u8, format: IA8, width: 176, height: 24, offset: 0x60123F0, symbol: aTitleNoControllerTex }
-
-aTitleCopyrightTex: { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x6013470, symbol: aTitleCopyrightTex }
-
-gTitleUnusedNintendoCopyright: { type: TEXTURE, ctype: u8, format: IA8, width: 168, height: 18, offset: 0x6013570, symbol: gTitleUnusedNintendoCopyright }
-
-aIntroStarfoxLogoTex: { type: TEXTURE, ctype: u8, format: CI4, width: 256, height: 13, offset: 0x6014140, tlut: 0x60147C0, symbol: aIntroStarfoxLogoTex }
-
-aIntroStarfoxLogoTLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x60147C0, symbol: aIntroStarfoxLogoTLUT }
-
-aIntroInTex: { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 13, offset: 0x60147E0, tlut: 0x60147C0, symbol: aIntroInTex }
-
-aIntroInTLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x60148B0, symbol: aIntroInTLUT }
-
-a64LogoDL: { type: GFX, offset: 0x60148D0, symbol: a64LogoDL }
-
-a64Logo1Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x6014DE8, tlut: 0x60155E8, symbol: a64Logo1Tex }
-
-a64Logo1TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 152, offset: 0x60155E8, symbol: a64Logo1TLUT }
-
-a64Logo2Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 63, offset: 0x6015718, tlut: 0x6015EF8, symbol: a64Logo2Tex }
-
-a64Logo2TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 64, offset: 0x6015EF8, symbol: a64Logo2TLUT }
-
-a64Logo3Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x6015F78, tlut: 0x6016778, symbol: a64Logo3Tex }
-
-a64Logo3TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 200, offset: 0x6016778, symbol: a64Logo3TLUT }
-
-a64Logo4Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 63, offset: 0x6016908, tlut: 0x60170E8, symbol: a64Logo4Tex }
-
-a64Logo4TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 144, offset: 0x60170E8, symbol: a64Logo4TLUT }
-
-a64Logo5Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x6017208, tlut: 0x6017A08, symbol: a64Logo5Tex }
-
-a64Logo5TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 136, offset: 0x6017A08, symbol: a64Logo5TLUT }
-
-a64Logo6Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x6017B18, tlut: 0x6018318, symbol: a64Logo6Tex }
-
-a64Logo6TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 200, offset: 0x6018318, symbol: a64Logo6TLUT }
-
-a64Logo7Tex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x60184A8, tlut: 0x6018CA8, symbol: a64Logo7Tex }
-
-a64Logo7TLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 76, offset: 0x6018CA8, symbol: a64Logo7TLUT }
-
-aTitleGreatFoxDeckDL: { type: GFX, offset: 0x6018D40, symbol: aTitleGreatFoxDeckDL }
-
-D_TITLE_60195C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60195C0, symbol: D_TITLE_60195C0 }
-
-D_TITLE_6019DC0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6019DC0, symbol: D_TITLE_6019DC0 }
-
-D_TITLE_601A5C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x601A5C0, symbol: D_TITLE_601A5C0 }
-
-D_TITLE_601B5C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601B5C0, symbol: D_TITLE_601B5C0 }
-
-D_TITLE_601B7C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601B7C0, symbol: D_TITLE_601B7C0 }
-
-aTitleCsPassageWayWallTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601BFC0, symbol: aTitleCsPassageWayWallTex }
-
-aTitleGreatFoxDeckLauncherDL: { type: GFX, offset: 0x601C7C0, symbol: aTitleGreatFoxDeckLauncherDL }
-
-D_TITLE_601CCD0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601CCD0, symbol: D_TITLE_601CCD0 }
-
-D_TITLE_601CED0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x601CED0, symbol: D_TITLE_601CED0 }
-
-D_TITLE_601CF50: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601CF50, symbol: D_TITLE_601CF50 }
-
-aNoControllerBgTex: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x601D750, tlut: 0x601DB50, symbol: aNoControllerBgTex }
-
-aNoControllerBgTLUT: { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x601DB50, symbol: aNoControllerBgTLUT }
-
-D_TITLE_601E424: { type: SF64:ANIM, offset: 0x601E424, symbol: D_TITLE_601E424 }
-
-D_TITLE_601E430: { type: GFX, offset: 0x601E430, symbol: D_TITLE_601E430 }
-
-D_TITLE_601E720: { type: GFX, offset: 0x601E720, symbol: D_TITLE_601E720 }
-
-D_TITLE_601EA00: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601EA00, symbol: D_TITLE_601EA00 }
-
-D_TITLE_601F200: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601F200, symbol: D_TITLE_601F200 }
-
-D_TITLE_601F400: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601F400, symbol: D_TITLE_601F400 }
-
-D_TITLE_601F8E0: { type: SF64:ANIM, offset: 0x601F8E0, symbol: D_TITLE_601F8E0 }
-
-D_TITLE_6020058: { type: SF64:ANIM, offset: 0x6020058, symbol: D_TITLE_6020058 }
-
-D_TITLE_60214F8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60214F8, symbol: D_TITLE_60214F8 }
-
-D_TITLE_6021D10: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6021D10, symbol: D_TITLE_6021D10 }
-
-D_TITLE_6021F10: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6021F10, symbol: D_TITLE_6021F10 }
-
-D_TITLE_6022B40: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6022B40, symbol: D_TITLE_6022B40 }
-
-D_TITLE_6023340: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6023340, symbol: D_TITLE_6023340 }
-
-D_TITLE_6023B40: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6023B40, symbol: D_TITLE_6023B40 }
-
-D_TITLE_6024340: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6024340, symbol: D_TITLE_6024340 }
-
-D_TITLE_60246F8: { type: SF64:ANIM, offset: 0x60246F8, symbol: D_TITLE_60246F8 }
-
-D_TITLE_60257A8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60257A8, symbol: D_TITLE_60257A8 }
-
-D_TITLE_60259A8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60259A8, symbol: D_TITLE_60259A8 }
-
-D_TITLE_6025BA8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6025BA8, symbol: D_TITLE_6025BA8 }
-
-D_TITLE_6025DA8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6025DA8, symbol: D_TITLE_6025DA8 }
-
-D_TITLE_6025FA8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6025FA8, symbol: D_TITLE_6025FA8 }
-
-D_TITLE_6026D28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6026D28, symbol: D_TITLE_6026D28 }
-
-D_TITLE_6026F28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6026F28, symbol: D_TITLE_6026F28 }
-
-D_TITLE_6028508: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6028508, symbol: D_TITLE_6028508 }
-
-D_TITLE_6028708: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x6028708, symbol: D_TITLE_6028708 }
-
-D_TITLE_6028788: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6028788, symbol: D_TITLE_6028788 }
-
-D_TITLE_6028988: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x6028988, symbol: D_TITLE_6028988 }
-
-D_TITLE_6028A08: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6028A08, symbol: D_TITLE_6028A08 }
-
-D_TITLE_6028C08: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6028C08, symbol: D_TITLE_6028C08 }
-
-D_TITLE_6029BE4: { type: SF64:ANIM, offset: 0x6029BE4, symbol: D_TITLE_6029BE4 }
-
-D_TITLE_602A710: { type: SF64:ANIM, offset: 0x602A710, symbol: D_TITLE_602A710 }
-
-aTitleGreatFoxDeckPlatformDL: { type: GFX, offset: 0x602A720, symbol: aTitleGreatFoxDeckPlatformDL }
-
-aTitleCsPassageWayCeilingTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602A8C0, symbol: aTitleCsPassageWayCeilingTex }
-
-D_TITLE_602B8C0: { type: GFX, offset: 0x602B8C0, symbol: D_TITLE_602B8C0 }
-
-D_TITLE_602D930: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602D930, symbol: D_TITLE_602D930 }
-
-D_TITLE_602DB30: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DB30, symbol: D_TITLE_602DB30 }
-
-D_TITLE_602DD30: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DD30, symbol: D_TITLE_602DD30 }
-
-D_TITLE_602DF30: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x602DF30, symbol: D_TITLE_602DF30 }
-
-aTitleCsPassageWayDL: { type: GFX, offset: 0x602E380, symbol: aTitleCsPassageWayDL }
-
-aTitleCsPassageWayFloorTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602E550, symbol: aTitleCsPassageWayFloorTex }
-
-aFoxRunningAnim: { type: SF64:ANIM, offset: 0x602F8E0, symbol: aFoxRunningAnim }
-
-aFoxSkel: {type: SF64:SKELETON, offset: 0x602FBAC, symbol: aFoxSkel}
-
-aFalcoRunningAnim: { type: SF64:ANIM, offset: 0x60305C0, symbol: aFalcoRunningAnim }
-
-aFalcoSkel: {type: SF64:SKELETON, offset: 0x603088C, symbol: aFalcoSkel}
-
-aSlippyRunningAnim: { type: SF64:ANIM, offset: 0x6031120, symbol: aSlippyRunningAnim }
-
-aSlippySkel: {type: SF64:SKELETON, offset: 0x60313AC, symbol: aSlippySkel}
-
-aPeppyRunningAnim: { type: SF64:ANIM, offset: 0x6031DB8, symbol: aPeppyRunningAnim }
-
-aPeppySkel: {type: SF64:SKELETON, offset: 0x6032084, symbol: aPeppySkel}
-
-aTitleArwingEngineGlowDL: { type: GFX, offset: 0x60320E0, symbol: aTitleArwingEngineGlowDL }
-
-aTitleArwingEngineGlowTex: {type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 32, offset: 0x6032178, symbol: aTitleArwingEngineGlowTex}
-
-aTitleArwingShadowDL: { type: GFX, offset: 0x6032580, symbol: aTitleArwingShadowDL }
-
-aTitleArwingShadowTex: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6032608, symbol: aTitleArwingShadowTex }
-
-aFalcoAnim: { type: SF64:ANIM, offset: 0x60338DC, symbol: aFalcoAnim }
-
-aFoxAnim: { type: SF64:ANIM, offset: 0x6035024, symbol: aFoxAnim }
-
-aPeppyAnim: { type: SF64:ANIM, offset: 0x603531C, symbol: aPeppyAnim }
-
-aSlippyAnim: { type: SF64:ANIM, offset: 0x6036278, symbol: aSlippyAnim }
-
-D_TITLE_6036290: { type: GFX, offset: 0x6036290, symbol: D_TITLE_6036290 }
-
-D_TITLE_6036328: { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x6036328, symbol: D_TITLE_6036328 }
-
-D_TITLE_6036B30: { type: GFX, offset: 0x6036B30, symbol: D_TITLE_6036B30 }
-
-D_TITLE_6036BC8: { type: TEXTURE, ctype: u16, format: IA16, width: 32, height: 32, offset: 0x6036BC8, symbol: D_TITLE_6036BC8 }
-
-aPlanetCorneriaDL: { type: GFX, offset: 0x6037CF0, symbol: aPlanetCorneriaDL }
-
-D_TITLE_60380D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x60380D0, symbol: D_TITLE_60380D0}
-
-D_TITLE_60390D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x60390D0, symbol: D_TITLE_60390D0}
-
-D_TITLE_603A0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603A0D0, symbol: D_TITLE_603A0D0}
-
-D_TITLE_603B0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603B0D0, symbol: D_TITLE_603B0D0}
-
-D_TITLE_603C0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603C0D0, symbol: D_TITLE_603C0D0}
-
-D_TITLE_603D0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603D0D0, symbol: D_TITLE_603D0D0}
-
-D_TITLE_603E0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603E0D0, symbol: D_TITLE_603E0D0}
-
-D_TITLE_603F0D0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x603F0D0, symbol: D_TITLE_603F0D0}
-
-D_TITLE_60408C0: { type: GFX, offset: 0x60408C0, symbol: D_TITLE_60408C0 }
-
-aTeamShadowDL: { type: GFX, offset: 0x6041070, symbol: aTeamShadowDL }
-
-D_TITLE_60410F8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60410F8, symbol: D_TITLE_60410F8}
-
-D_TITLE_6041CF0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6041CF0, symbol: D_TITLE_6041CF0 }
-
-D_TITLE_60426E0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60426E0, symbol: D_TITLE_60426E0 }
-
-D_TITLE_6043F68: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6043F68, symbol: D_TITLE_6043F68 }
-
-D_TITLE_60456C0: { type: GFX, offset: 0x60456C0, symbol: D_TITLE_60456C0 }
-
-D_TITLE_6045A28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6045A28, symbol: D_TITLE_6045A28}
-D_TITLE_6046A28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6046A28, symbol: D_TITLE_6046A28}
-D_TITLE_6047A28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6047A28, symbol: D_TITLE_6047A28}
-D_TITLE_6048A28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6048A28, symbol: D_TITLE_6048A28}
-D_TITLE_6049A28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x6049A28, symbol: D_TITLE_6049A28}
-D_TITLE_604AA28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x604AA28, symbol: D_TITLE_604AA28}
-D_TITLE_604BA28: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x604BA28, symbol: D_TITLE_604BA28}
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_training.yaml b/assets/yaml/jp/rev0/ast_training.yaml
deleted file mode 100644
index 4fda0b1c5..000000000
--- a/assets/yaml/jp/rev0/ast_training.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-:config:
-  segments:
-    - [0x6, 0xD9FDD0]
-  header:
-    code:
-      - '#include "assets/ast_training.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-D_TR_6000000:
-  { type: TEXTURE, format: IA8, offset: 0x6000000, width: 96, height: 12, ctype: u8, symbol: D_TR_6000000 }
-
-D_TR_6000480:
-  { type: TEXTURE, format: IA8, offset: 0x6000480, width: 96, height: 12, ctype: u8, symbol: D_TR_6000480 }
-
-D_TR_6000900:
-  { type: TEXTURE, format: RGBA16, offset: 0x6000900, width: 44, height: 44, ctype: u16, symbol: D_TR_6000900 }
-
-D_TR_6001820:
-  { type: TEXTURE, format: RGBA16, offset: 0x6001820, width: 44, height: 44, ctype: u16, symbol: D_TR_6001820 }
-
-aTrBarrierDL:
-  { type: GFX, offset: 0x6002740, symbol: aTrBarrierDL }
-
-D_TR_60028F0:
-  { type: TEXTURE, format: RGBA16, offset: 0x060028F0, width: 32, height: 32, ctype: u16, symbol: D_TR_60028F0 }
-
-aTrBuildingDL:
-  { type: GFX, offset: 0x60030F0, symbol: aTrBuildingDL }
-
-D_TR_6003360:
-  { type: TEXTURE, format: RGBA16, offset: 0x06003360, width: 16, height: 16, ctype: u16, symbol: D_TR_6003360 }
-
-D_TR_6003560:
-  { type: TEXTURE, format: RGBA16, offset: 0x06003560, width: 16, height: 16, ctype: u16, symbol: D_TR_6003560 }
-
-D_TR_6003760:
-  { type: GFX, offset: 0x6003760, symbol: D_TR_6003760 }
-
-D_TR_6003878:
-  { type: TEXTURE, format: RGBA16, offset: 0x06003878, width: 64, height: 32, ctype: u16, symbol: D_TR_6003878 }
-
-D_TR_6004878:
-  { type: TEXTURE, format: RGBA16, offset: 0x06004878, width: 64, height: 32, ctype: u16, symbol: D_TR_6004878 }
-
-D_TR_6005880:
-  { type: GFX, offset: 0x6005880, symbol: D_TR_6005880 }
-
-D_TR_6005938:
-  { type: TEXTURE, format: RGBA16, offset: 0x06005938, width: 32, height: 32, ctype: u16, symbol: D_TR_6005938 }
-
-aItemTrainingRingDL:
-  { type: GFX, offset: 0x6006140, symbol: aItemTrainingRingDL }
-
-D_TR_6006958:
-  { type: TEXTURE, format: RGBA16, offset: 0x06006958, width: 8, height: 8, ctype: u16, symbol: D_TR_6006958 }
-
-D_TR_60069D8:
-  { type: TEXTURE, format: RGBA16, offset: 0x060069D8, width: 8, height: 8, ctype: u16, symbol: D_TR_60069D8 }
-
-D_TR_6006A60:
-  { type: SF64:ENVIRONMENT, offset: 0x6006A60, symbol: D_TR_6006A60 }
-
-D_TR_6006AA4:
-  { type: SF64:OBJECT_INIT, offset: 0x6006AA4, symbol: D_TR_6006AA4 }
-
-D_TR_6008EF8:
-  { type: SF64:OBJECT_INIT, offset: 0x6008EF8, symbol: D_TR_6008EF8 }
-
-D_TR_6009B34:
-  { type: SF64:SCRIPT, offset: 0x6009B34, symbol: D_TR_6009B34 }
-
-aTrBuildingHitbox:
-  { type: SF64:HITBOX, offset: 0x6009CC4, symbol: aTrBuildingHitbox }
-
-aItemTrainingRingHitbox:
-  { type: SF64:HITBOX, offset: 0x6009CFC, symbol: aItemTrainingRingHitbox }
-
-aTrBarrierHitbox:
-  { type: SF64:HITBOX, offset: 0x6009D18, symbol: aTrBarrierHitbox }
-
-# size = 0x9D40
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_ve1_boss.yaml b/assets/yaml/jp/rev0/ast_ve1_boss.yaml
deleted file mode 100644
index ff0546302..000000000
--- a/assets/yaml/jp/rev0/ast_ve1_boss.yaml
+++ /dev/null
@@ -1,243 +0,0 @@
-:config:
-  segments:
-    - [0x09, 0xAB36F0]
-  header:
-    code:
-      - '#include "assets/ast_ve1_boss.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-D_VE1_9000000:
-  {type: GFX, offset: 0x9000000, symbol: D_VE1_9000000}
-
-D_VE1_90003E8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x90003E8, symbol: D_VE1_90003E8}
-
-D_VE1_90005E8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x90005E8, symbol: D_VE1_90005E8}
-
-D_VE1_90007F0:
-  {type: GFX, offset: 0x90007F0, symbol: D_VE1_90007F0}
-
-D_VE1_9000AF0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9000AF0, symbol: D_VE1_9000AF0}
-
-D_VE1_90012F0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x90012F0, symbol: D_VE1_90012F0}
-
-D_VE1_9002CD8:
-  {type: SF64:ANIM, offset: 0x9002CD8, symbol: D_VE1_9002CD8}
-
-aVe1BlockerDL:
-  {type: GFX, offset: 0x9002CF0, symbol: aVe1BlockerDL}
-
-D_VE1_9002F30:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x9002F30, symbol: D_VE1_9002F30, tlut: 0x9003330}
-
-D_VE1_9003330:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x9003330, symbol: D_VE1_9003330}
-
-D_VE1_9003490:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x9003490, symbol: D_VE1_9003490, tlut: 0x9003890}
-
-D_VE1_9003890:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x9003890, symbol: D_VE1_9003890}
-
-D_VE1_90039F0:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x90039F0, symbol: D_VE1_90039F0, tlut: 0x9003DF0}
-
-D_VE1_9003DF0:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x9003DF0, symbol: D_VE1_9003DF0}
-
-aVe1TempleInterior1DL:
-  {type: GFX, offset: 0x9003F50, symbol: aVe1TempleInterior1DL}
-
-D_VE1_9004478:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x9004478, symbol: D_VE1_9004478}
-
-D_VE1_9004878:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9004878, symbol: D_VE1_9004878}
-
-D_VE1_9005078:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x9005078, symbol: D_VE1_9005078}
-
-D_VE1_9005478:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9005478, symbol: D_VE1_9005478}
-
-aVe1TempleEntranceDL:
-  {type: GFX, offset: 0x9005C80, symbol: aVe1TempleEntranceDL}
-
-D_VE1_9009700:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9009700, symbol: D_VE1_9009700}
-
-D_VE1_9009F00:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x9009F00, symbol: D_VE1_9009F00}
-
-D_VE1_900A300:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900A300, symbol: D_VE1_900A300}
-
-D_VE1_900AB00:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x900AB00, symbol: D_VE1_900AB00}
-
-D_VE1_900AF00:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900AF00, symbol: D_VE1_900AF00}
-
-D_VE1_900B700:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900B700, symbol: D_VE1_900B700}
-
-D_VE1_900BF00:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900BF00, symbol: D_VE1_900BF00}
-
-D_VE1_900C700:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900C700, symbol: D_VE1_900C700}
-
-aVe1MonkeyStatueAnim:
-  {type: SF64:ANIM, offset: 0x900D098, symbol: aVe1MonkeyStatueAnim}
-
-aVe1MonkeyStatueSkel:
-  {type: SF64:SKELETON, offset: 0x900D164, symbol: aVe1MonkeyStatueSkel}
-
-D_VE1_900D180:
-  {type: GFX, offset: 0x900D180, symbol: D_VE1_900D180}
-
-D_VE1_900D520:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900D520, symbol: D_VE1_900D520}
-
-aVe1Pillar1DL:
-  {type: GFX, offset: 0x900DD20, symbol: aVe1Pillar1DL}
-
-D_VE1_900DF20:
-  {type: GFX, offset: 0x900DF20, symbol: D_VE1_900DF20}
-
-D_VE1_900DFB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x900DFB8, symbol: D_VE1_900DFB8}
-
-aVe1TempleBgDL:
-  {type: GFX, offset: 0x900EFC0, symbol: aVe1TempleBgDL}
-
-aVe1TempleInterior2DL:
-  {type: GFX, offset: 0x900F060, symbol: aVe1TempleInterior2DL}
-
-aVe1TempleInterior3DL:
-  {type: GFX, offset: 0x900F1D0, symbol: aVe1TempleInterior3DL}
-
-D_VE1_9010FC4:
-  {type: SF64:ANIM, offset: 0x9010FC4, symbol: D_VE1_9010FC4}
-
-D_VE1_9010FD0:
-  {type: GFX, offset: 0x9010FD0, symbol: D_VE1_9010FD0}
-
-aVe1PillarDL:
-  {type: GFX, offset: 0x9011200, symbol: aVe1PillarDL}
-
-D_VE1_9011980:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9011980, symbol: D_VE1_9011980}
-
-aVe1Pillar5DL:
-  {type: GFX, offset: 0x9012180, symbol: aVe1Pillar5DL}
-
-D_VE1_90123C0:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 16, offset: 0x90123C0, symbol: D_VE1_90123C0, tlut: 0x90125C0}
-
-D_VE1_90125C0:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 160, offset: 0x90125C0, symbol: D_VE1_90125C0}
-
-D_VE1_9013880:
-  {type: GFX, offset: 0x9013880, symbol: D_VE1_9013880}
-
-D_VE1_9013C20:
-  {type: GFX, offset: 0x9013C20, symbol: D_VE1_9013C20}
-
-D_VE1_9014DF0:
-  {type: GFX, offset: 0x9014DF0, symbol: D_VE1_9014DF0}
-
-D_VE1_90150A0:
-  {type: GFX, offset: 0x90150A0, symbol: D_VE1_90150A0}
-
-D_VE1_9015480:
-  {type: GFX, offset: 0x9015480, symbol: D_VE1_9015480}
-
-D_VE1_9015900:
-  {type: GFX, offset: 0x9015900, symbol: D_VE1_9015900}
-
-D_VE1_9015BB0:
-  {type: GFX, offset: 0x9015BB0, symbol: D_VE1_9015BB0}
-
-D_VE1_9018BD0:
-  {type: SF64:ANIM, offset: 0x9018BD0, symbol: D_VE1_9018BD0}
-
-D_VE1_901A4B8:
-  {type: SF64:ANIM, offset: 0x901A4B8, symbol: D_VE1_901A4B8}
-
-D_VE1_901BDA8:
-  {type: SF64:ANIM, offset: 0x901BDA8, symbol: D_VE1_901BDA8}
-
-D_VE1_901C0F4:
-  {type: SF64:SKELETON, offset: 0x901C0F4, symbol: D_VE1_901C0F4}
-
-D_VE1_901DA38:
-  {type: SF64:ANIM, offset: 0x901DA38, symbol: D_VE1_901DA38}
-
-aVe1Pillar3DL:
-  {type: GFX, offset: 0x901DA50, symbol: aVe1Pillar3DL}
-
-D_VE1_901DC90:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x901DC90, symbol: D_VE1_901DC90}
-
-D_VE1_901E350:
-  {type: GFX, offset: 0x901E350, symbol: D_VE1_901E350}
-
-D_VE1_901F6D0:
-  {type: GFX, offset: 0x901F6D0, symbol: D_VE1_901F6D0}
-
-D_VE1_901F990:
-  {type: GFX, offset: 0x901F990, symbol: D_VE1_901F990}
-
-D_VE1_901FC40:
-  {type: GFX, offset: 0x901FC40, symbol: D_VE1_901FC40}
-
-D_VE1_901FFB0:
-  {type: GFX, offset: 0x901FFB0, symbol: D_VE1_901FFB0}
-
-D_VE1_9020E30:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9020E30, symbol: D_VE1_9020E30}
-
-D_VE1_9021630:
-  {type: GFX, offset: 0x9021630, symbol: D_VE1_9021630}
-
-D_VE1_9021900:
-  {type: GFX, offset: 0x9021900, symbol: D_VE1_9021900}
-
-D_VE1_9021B80:
-  {type: GFX, offset: 0x9021B80, symbol: D_VE1_9021B80}
-
-D_VE1_9022820:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x9022820, symbol: D_VE1_9022820}
-
-D_VE1_9022A20:
-  {type: GFX, offset: 0x9022A20, symbol: D_VE1_9022A20}
-
-D_VE1_9022D80:
-  {type: GFX, offset: 0x9022D80, symbol: D_VE1_9022D80}
-
-D_VE1_9023290:
-  {type: GFX, offset: 0x9023290, symbol: D_VE1_9023290}
-
-D_VE1_90234D0:
-  {type: GFX, offset: 0x90234D0, symbol: D_VE1_90234D0}
-
-D_VE1_9023880:
-  {type: GFX, offset: 0x9023880, symbol: D_VE1_9023880}
-
-aVe1Pillar4DL:
-  {type: GFX, offset: 0x9023AD0, symbol: aVe1Pillar4DL}
-
-D_VE1_9024738:
-  {type: SF64:ANIM, offset: 0x9024738, symbol: D_VE1_9024738}
-
-D_VE1_9024750:
-  {type: GFX, offset: 0x9024750, symbol: D_VE1_9024750}
-
-D_VE1_9024940:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 4, height: 4, offset: 0x9024940, symbol: D_VE1_9024940}
diff --git a/assets/yaml/jp/rev0/ast_venom_1.yaml b/assets/yaml/jp/rev0/ast_venom_1.yaml
deleted file mode 100644
index 80b6e931a..000000000
--- a/assets/yaml/jp/rev0/ast_venom_1.yaml
+++ /dev/null
@@ -1,182 +0,0 @@
-:config:
-  segments:
-    - [0x6, 0xA84390]
-  header:
-    code:
-      - '#include "assets/ast_venom_1.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-D_VE1_6000000:
-  { type: TEXTURE, format: IA8, width: 96, height: 28, offset: 0x6000000, ctype: u8, symbol: D_VE1_6000000 }
-
-D_VE1_6000A80:
-  { type: TEXTURE, format: IA8, width: 40, height: 19, offset: 0x6000A80, ctype: u8, symbol: D_VE1_6000A80 }
-
-aVe1TitleCardTex:
-  { type: TEXTURE, format: IA8, width: 128, height: 28, offset: 0x6000D80, ctype: u8, symbol: aVe1TitleCardTex }
-
-D_VE1_6001B80:
-  { type: TEXTURE, format: IA8, width: 128, height: 19, offset: 0x6001B80, ctype: u8, symbol: D_VE1_6001B80 }
-
-aVe1EnemyGateDL:
-  { type: GFX, offset: 0x6002500, symbol: aVe1EnemyGateDL }
-
-D_VE1_60029F8:
-  { type: TEXTURE, format: CI8, width: 8, height: 16, offset: 0x60029F8, tlut: 0x6002A78, ctype: u8, symbol: D_VE1_60029F8 }
-
-D_VE1_6002A78:
-  { type: TEXTURE, format: TLUT, colors: 24, offset: 0x6002A78, ctype: u16, symbol: D_VE1_6002A78 }
-
-D_VE1_6002AA8:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, offset: 0x6002AA8, tlut: 0x6002EA8, ctype: u8, symbol: D_VE1_6002AA8 }
-
-D_VE1_6002EA8:
-  { type: TEXTURE, format: TLUT, colors: 232, offset: 0x6002EA8, ctype: u16, symbol: D_VE1_6002EA8 }
-
-D_VE1_6003078:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, offset: 0x6003078, tlut: 0x6003478, ctype: u8, symbol: D_VE1_6003078 }
-
-D_VE1_6003478:
-  { type: TEXTURE, format: TLUT, colors: 204, offset: 0x6003478, ctype: u16, symbol: D_VE1_6003478 }
-
-aVe1WatchPostDL:
-  { type: GFX, offset: 0x6003610, symbol: aVe1WatchPostDL }
-
-D_VE1_6003B10:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003B10, ctype: u16, symbol: D_VE1_6003B10 }
-
-aVe1EnemyGateDoorLeftDL:
-  { type: GFX, offset: 0x6004310, symbol: aVe1EnemyGateDoorLeftDL }
-
-aVe1EnemyGateDoorRightDL:
-  { type: GFX, offset: 0x60043F0, symbol: aVe1EnemyGateDoorRightDL }
-
-D_VE1_60044D0:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, offset: 0x60044D0, tlut: 0x60045D0, ctype: u8, symbol: D_VE1_60044D0 }
-
-D_VE1_60045D0:
-  { type: TEXTURE, format: TLUT, colors: 144, offset: 0x60045D0, ctype: u16, symbol: D_VE1_60045D0 }
-
-D_VE1_60046F0:
-  { type: GFX, offset: 0x60046F0, symbol: D_VE1_60046F0 }
-
-D_VE1_6004780:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x6004780, ctype: u16, symbol: D_VE1_6004780 }
-
-aVe1GeneratorDL:
-  { type: GFX, offset: 0x6005780, symbol: aVe1GeneratorDL }
-
-D_VE1_6005E50:
-  { type: TEXTURE, format: TLUT, colors: 160, offset: 0x6005E50, ctype: u16, symbol: D_VE1_6005E50 }
-
-D_VE1_6005D50:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, offset: 0x6005D50, tlut: 0x6005E50, ctype: u8, symbol: D_VE1_6005D50 }
-
-D_VE1_6005F90:
-  { type: TEXTURE, format: CI8, width: 32, height: 32, offset: 0x6005F90, tlut: 0x6006390, ctype: u8, symbol: D_VE1_6005F90 }
-
-D_VE1_6006390:
-  { type: TEXTURE, format: TLUT, colors: 208, offset: 0x6006390, ctype: u16, symbol: D_VE1_6006390 }
-
-D_VE1_6006530:
-  { type: TEXTURE, format: CI8, width: 16, height: 16, offset: 0x6006530, ctype: u8, symbol: D_VE1_6006530 }
-
-D_VE1_6006630:
-  { type: TEXTURE, format: TLUT, colors: 80, offset: 0x6006630, ctype: u16, symbol: D_VE1_6006630 }
-
-D_VE1_60066D0:
-  { type: GFX, offset: 0x60066D0, symbol: D_VE1_60066D0 }
-
-D_VE1_6006750:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006750, ctype: u16, symbol: D_VE1_6006750 }
-
-aVe1HallwayObstacleDL:
-  { type: GFX, offset: 0x6006F50, symbol: aVe1HallwayObstacleDL }
-
-aVe1SceneryWall3DL:
-  { type: GFX, offset: 0x6007410, symbol: aVe1SceneryWall3DL }
-
-D_VE1_60074E8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60074E8, ctype: u16, symbol: D_VE1_60074E8 }
-
-aVe1Wall2DL:
-  { type: GFX, offset: 0x6007CF0, symbol: aVe1Wall2DL }
-
-aVe1Wall1DL:
-  { type: GFX, offset: 0x6007D90, symbol: aVe1Wall1DL }
-
-D_VE1_6007E30:
-  { type: SF64:ENVIRONMENT, offset: 0x6007E30, symbol: D_VE1_6007E30 }
-
-D_VE1_6007E74:
-  { type: SF64:OBJECT_INIT, offset: 0x6007E74, symbol: D_VE1_6007E74 }
-
-D_VE1_601B1E4:
-  { type: SF64:SCRIPT, offset: 0x601B1E4, symbol: D_VE1_601B1E4 }
-
-D_VE1_6010088:
-  { type: SF64:OBJECT_INIT, offset: 0x6010088, symbol: D_VE1_6010088 }
-
-aVe1Pillar5Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B43C, symbol: aVe1Pillar5Hitbox }
-
-D_VE1_601B474:
-  { type: SF64:HITBOX, offset: 0x601B474, symbol: D_VE1_601B474 }
-
-D_VE1_601B4C4:
-  { type: SF64:HITBOX, offset: 0x601B4C4, symbol: D_VE1_601B4C4 }
-
-Ve1Wall1Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B4E0, symbol: Ve1Wall1Hitbox }
-
-aVe1Wall2Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B4FC, symbol: aVe1Wall2Hitbox }
-
-aVe1SceneryWall3Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B518, symbol: aVe1SceneryWall3Hitbox }
-
-aVe1HallwayObstacleHitbox:
-  { type: SF64:HITBOX, offset: 0x601B584, symbol: aVe1HallwayObstacleHitbox }
-
-aVe1GeneratorHitbox:
-  { type: SF64:HITBOX, offset: 0x601B5F4, symbol: aVe1GeneratorHitbox }
-
-aVe1WatchPostHitbox:
-  { type: SF64:HITBOX, offset: 0x601B644, symbol: aVe1WatchPostHitbox }
-
-aVe1TempleEntranceHitbox:
-  { type: SF64:HITBOX, offset: 0x601B678, symbol: aVe1TempleEntranceHitbox }
-
-aVe1TempleInterior1Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B6C4, symbol: aVe1TempleInterior1Hitbox }
-
-aVe1TempleInterior2Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B710, symbol: aVe1TempleInterior2Hitbox }
-
-aVe1TempleInterior3Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B75C, symbol: aVe1TempleInterior3Hitbox }
-
-aVe1Pillar1Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B7F8, symbol: aVe1Pillar1Hitbox }
-
-aVe1Pillar2Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B830, symbol: aVe1Pillar2Hitbox }
-
-aVe1Pillar3Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B868, symbol: aVe1Pillar3Hitbox }
-
-aVe1Pillar4Hitbox:
-  { type: SF64:HITBOX, offset: 0x601B8A0, symbol: aVe1Pillar4Hitbox }
-
-aVe1MonkeyStatueHitbox:
-  { type: SF64:HITBOX, offset: 0x601B8D8, symbol: aVe1MonkeyStatueHitbox }
-
-aVe1EnemyGateHitbox:
-  { type: SF64:HITBOX, offset: 0x601B944, symbol: aVe1EnemyGateHitbox }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_venom_2.yaml b/assets/yaml/jp/rev0/ast_venom_2.yaml
deleted file mode 100644
index 418711527..000000000
--- a/assets/yaml/jp/rev0/ast_venom_2.yaml
+++ /dev/null
@@ -1,205 +0,0 @@
-:config:
-  segments:
-    - [0x6, 0xA9E570]
-  header:
-    code:
-      - '#include "assets/ast_venom_2.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-
-D_VE2_6000000:
-  { type: TEXTURE, format: IA8, width: 96, height: 28, offset: 0x6000000, ctype: u8, symbol: D_VE2_6000000 }
-
-D_VE2_6000A80:
-  { type: TEXTURE, format: IA8, width: 112, height: 19, offset: 0x6000A80, ctype: u8, symbol: D_VE2_6000A80 }
-
-aVe2TitleCardTex:
-  { type: TEXTURE, format: IA8, width: 128, height: 28, offset: 0x60012D0, ctype: u8, symbol: aVe2TitleCardTex }
-
-D_VE2_60020D0:
-  { type: TEXTURE, format: IA8, width: 104, height: 19, offset: 0x60020D0, ctype: u8, symbol: D_VE2_60020D0 }
-
-D_VE2_6002890:
-  { type: TEXTURE, format: IA8, width: 16, height: 16, offset: 0x6002890, ctype: u8, symbol: D_VE2_6002890 }
-
-aAndPathExitDL:
-  { type: GFX, offset: 0x6002990, symbol: aAndPathExitDL }
-
-aAndPathIntersectionDL:
-  { type: GFX, offset: 0x6003000, symbol: aAndPathIntersectionDL }
-
-D_VE2_60038E0:
-  { type: GFX, offset: 0x60038E0, symbol: D_VE2_60038E0 }
-
-D_VE2_6003970:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003970, ctype: u16, symbol: D_VE2_6003970 }
-
-aAndPathEntranceDL:
-  { type: GFX, offset: 0x6004170, symbol: aAndPathEntranceDL }
-
-D_VE2_6004888:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6004888, ctype: u16, symbol: D_VE2_6004888 }
-
-D_VE2_6005088:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6005088, ctype: u16, symbol: D_VE2_6005088 }
-
-D_VE2_6005888:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6005888, ctype: u16, symbol: D_VE2_6005888 }
-
-D_VE2_6006088:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006088, ctype: u16, symbol: D_VE2_6006088 }
-
-D_VE2_60030D8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60030D8, ctype: u16, symbol: D_VE2_60030D8 }
-
-aAndPathWallsDL:
-  { type: GFX, offset: 0x6006890, symbol: aAndPathWallsDL }
-
-D_VE2_6006E20:
-  { type: GFX, offset: 0x6006E20, symbol: D_VE2_6006E20 }
-
-D_VE2_6007650:
-  { type: GFX, offset: 0x6007650, symbol: D_VE2_6007650 }
-
-aAndLaserEmitterDL:
-  { type: GFX, offset: 0x6007E20, symbol: aAndLaserEmitterDL }
-
-D_VE2_6008170:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6008170, ctype: u16, symbol: D_VE2_6008170 }
-
-aVe2TowerDL:
-  { type: GFX, offset: 0x6008370, symbol: aVe2TowerDL }
-
-D_VE2_6008AF8:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6008AF8, ctype: u16, symbol: D_VE2_6008AF8 }
-
-aAndBrainWasteDL:
-  { type: GFX, offset: 0x6009300, symbol: aAndBrainWasteDL }
-
-D_VE2_6009390:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6009390, ctype: u16, symbol: D_VE2_6009390 }
-
-D_VE2_6009B90:
-  { type: GFX, offset: 0x6009B90, symbol: D_VE2_6009B90 }
-
-D_VE2_6009E80:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6009E80, ctype: u16, symbol: D_VE2_6009E80 }
-
-D_VE2_600A680:
-  { type: GFX, offset: 0x600A680, symbol: D_VE2_600A680 }
-
-D_VE2_600B708:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x600B708, ctype: u16, symbol: D_VE2_600B708 }
-
-D_VE2_600C038:
-  { type: SF64:ANIM, offset: 0x600C038, symbol: D_VE2_600C038 }
-
-D_VE2_600C0A4:
-  { type: SF64:SKELETON, offset: 0x600C0A4, symbol: D_VE2_600C0A4 }
-
-D_VE2_600C200:
-  { type: SF64:ANIM, offset: 0x600C200, symbol: D_VE2_600C200 }
-
-D_VE2_600C2AC:
-  { type: SF64:SKELETON, offset: 0x600C2AC, symbol: D_VE2_600C2AC }
-
-D_VE2_600C2D0:
-  { type: GFX, offset: 0x600C2D0, symbol: D_VE2_600C2D0 }
-
-D_VE2_600C360:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600C360, ctype: u16, symbol: D_VE2_600C360 }
-
-D_VE2_600C560:
-  { type: GFX, offset: 0x600C560, symbol: D_VE2_600C560 }
-
-D_VE2_600C5F0:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x600C5F0, ctype: u16, symbol: D_VE2_600C5F0 }
-
-D_VE2_600C7F0:
-  { type: GFX, offset: 0x600C7F0, symbol: D_VE2_600C7F0 }
-
-D_VE2_600C8F0:
-  { type: GFX, offset: 0x600C8F0, symbol: D_VE2_600C8F0 }
-
-D_VE2_600CA50:
-  { type: GFX, offset: 0x600CA50, symbol: D_VE2_600CA50 }
-
-D_VE2_600CBB0:
-  { type: GFX, offset: 0x600CBB0, symbol: D_VE2_600CBB0 }
-
-D_VE2_600D7F0:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x600D7F0, ctype: u16, symbol: D_VE2_600D7F0 }
-
-D_VE2_600DFF0:
-  { type: GFX, offset: 0x600DFF0, symbol: D_VE2_600DFF0 }
-
-D_VE2_600E3E0:
-  { type: GFX, offset: 0x600E3E0, symbol: D_VE2_600E3E0 }
-
-D_VE2_600E780:
-  { type: GFX, offset: 0x600E780, symbol: D_VE2_600E780 }
-
-D_VE2_600EB40:
-  { type: GFX, offset: 0x600EB40, symbol: D_VE2_600EB40 }
-
-D_VE2_600EEF0:
-  { type: GFX, offset: 0x600EEF0, symbol: D_VE2_600EEF0 }
-
-D_VE2_600F290:
-  { type: GFX, offset: 0x600F290, symbol: D_VE2_600F290 }
-
-D_VE2_600F670:
-  { type: GFX, offset: 0x600F670, symbol: D_VE2_600F670 }
-
-D_VE2_600F700:
-  { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x600F700, ctype: u16, symbol: D_VE2_600F700 }
-
-D_VE2_6010700:
-  { type: GFX, offset: 0x6010700, symbol: D_VE2_6010700 }
-
-aVe2MountainDL:
-  { type: GFX, offset: 0x6010960, symbol: aVe2MountainDL }
-
-D_VE2_6010CA0:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6010CA0, ctype: u16, symbol: D_VE2_6010CA0 }
-
-D_VE2_60114A0:
-  { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60114A0, ctype: u16, symbol: D_VE2_60114A0 }
-
-D_VE2_6013AF8:
-  { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6013AF8, ctype: u16, symbol: D_VE2_6013AF8 }
-
-aVe2AndrossGateAnim:
-  { type: SF64:ANIM, offset: 0x6014658, symbol: aVe2AndrossGateAnim }
-
-aVe2AndrossGateSkel:
-  { type: SF64:SKELETON, offset: 0x6014844, symbol: aVe2AndrossGateSkel }
-
-aVe2BaseAnim:
-  { type: SF64:ANIM, offset: 0x6014904, symbol: aVe2BaseAnim }
-
-aVe2BaseSkel:
-  { type: SF64:SKELETON, offset: 0x60149D0, symbol: aVe2BaseSkel }
-
-D_VE2_6014D50:
-  { type: SF64:ENVIRONMENT, offset: 0x6014D50, symbol: D_VE2_6014D50 }
-
-D_VE2_6014D94:
-  { type: SF64:OBJECT_INIT, offset: 0x6014D94, symbol: D_VE2_6014D94 }
-
-D_VE2_6014FEC:
-  { type: SF64:COLPOLY, count: 250, offset: 0x6014FEC, symbol: D_VE2_6014FEC, mesh_symbol: D_VE2_OFFSET }
-
-aVe2TowerHitbox:
-  { type: SF64:HITBOX, offset: 0x601668C, symbol: aVe2TowerHitbox }
-
-aVe2BaseHitbox:
-  { type: SF64:HITBOX, offset: 0x60166F4, symbol: aVe2BaseHitbox }
-
-aVe2MountainHitbox:
-  { type: SF64:HITBOX, offset: 0x6016714, symbol: aVe2MountainHitbox }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_versus.yaml b/assets/yaml/jp/rev0/ast_versus.yaml
deleted file mode 100644
index fc8a060e0..000000000
--- a/assets/yaml/jp/rev0/ast_versus.yaml
+++ /dev/null
@@ -1,762 +0,0 @@
-:config:
-  segments:
-    - [0x03, 0x8B8E00]
-  header:
-    code:
-      - '#include "assets/ast_versus.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-
-D_versus_3000000:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  16, height: 16, offset: 0x3000000, symbol: D_versus_3000000, tlut: 0x3000080 }
-D_versus_3000080:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000080, symbol: D_versus_3000080 }
-
-D_versus_30000A0:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  16, height: 16, offset: 0x30000A0, symbol: D_versus_30000A0, tlut: 0x30000A0 }
-D_versus_3000120:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000120, symbol: D_versus_3000120 }
-
-D_versus_3000140:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  16, height: 16, offset: 0x3000140, symbol: D_versus_3000140, tlut: 0x30001C0 }
-D_versus_30001C0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x30001C0, symbol: D_versus_30001C0 }
-
-D_versus_30001E0:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  64, height: 13, offset: 0x30001E0, symbol: D_versus_30001E0, tlut: 0x3000380 }
-D_versus_3000380:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000380, symbol: D_versus_3000380 }
-
-D_versus_30003A0:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  64, height: 10, offset: 0x30003A0, symbol: D_versus_30003A0, tlut: 0x30004E0 }
-D_versus_30004E0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x30004E0, symbol: D_versus_30004E0 }
-
-BLOB_3000500:
-  { type: BLOB, size: 0x10, offset: 0x3000500, symbol: BLOB_3000500} # 17th color for D_versus_30004E0?
-
-D_versus_3000510:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  80, height: 10, offset: 0x3000510, symbol: D_versus_3000510, tlut: 0x30006A0 }
-D_versus_30006A0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x30006A0, symbol: D_versus_30006A0 }
-
-BLOB_30006C0:
-  { type: BLOB, size: 0x10, offset: 0x30006C0, symbol: BLOB_30006C0} # 17th color for D_versus_30006A0?
-
-D_versus_30006D0:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  64, height: 10, offset: 0x30006D0, symbol: D_versus_30006D0, tlut: 0x3000810 }
-D_versus_3000810:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000810, symbol: D_versus_3000810 }
-
-BLOB_3000830:
-  { type: BLOB, size: 0x10, offset: 0x3000830, symbol: BLOB_3000830} # 17th color for D_versus_3000810?
-
-D_versus_3000840:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  32, height: 10, offset: 0x3000840, symbol: D_versus_3000840, tlut: 0x30008E0 }
-D_versus_30008E0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x30008E0, symbol: D_versus_30008E0 }
-
-D_versus_3000900:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  32, height: 15, offset: 0x3000900, symbol: D_versus_3000900, tlut: 0x30009F0 }
-D_versus_30009F0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x30009F0, symbol: D_versus_30009F0 }
-
-D_versus_3000A10:
-  { type: TEXTURE, ctype: u8, format: CI4, width:  32, height: 15, offset: 0x3000A10, symbol: D_versus_3000A10, tlut: 0x3000B00 }
-D_versus_3000B00:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3000B00, symbol: D_versus_3000B00 }
-
-aVsBoostGaugeFrameTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width:  32, height:  5, offset: 0x3000B20, symbol: aVsBoostGaugeFrameTex }
-
-aVsShieldGaugeFrameTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width:  80, height: 26, offset: 0x3000BC0, symbol: aVsShieldGaugeFrameTex }
-
-aVsStarTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width:   8, height:  8, offset: 0x30013E0, symbol: aVsStarTex }
-
-D_versus_3001420:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 256, height: 42, offset: 0x3001420, symbol: D_versus_3001420, tlut: 0x3003E20 }
-D_versus_3003E20:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x3003E20, symbol: D_versus_3003E20 }
-
-D_versus_3004010:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 136, height: 25, offset: 0x3004010, symbol: D_versus_3004010, tlut: 0x3004D58 }
-D_versus_3004D58:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x3004D58, symbol: D_versus_3004D58 }
-
-D_versus_3004F60:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 152, height: 25, offset: 0x3004F60, symbol: D_versus_3004F60, tlut: 0x3005E38 }
-D_versus_3005E38:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x3005E38, symbol: D_versus_3005E38 }
-
-D_versus_3006040:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 104, height: 25, offset: 0x3006040, symbol: D_versus_3006040, tlut: 0x3006A68 }
-D_versus_3006A68:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x3006A68, symbol: D_versus_3006A68 }
-
-D_versus_3006C60:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  96, height: 23, offset: 0x3006C60, symbol: D_versus_3006C60, tlut: 0x3007500 }
-D_versus_3007500:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 224, offset: 0x3007500, symbol: D_versus_3007500 }
-
-D_versus_30076C0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 152, height: 25, offset: 0x30076C0, symbol: D_versus_30076C0, tlut: 0x3008598 }
-D_versus_3008598:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x3008598, symbol: D_versus_3008598 }
-
-D_versus_30087A0:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  40, height: 40, offset: 0x30087A0, symbol: D_versus_30087A0, tlut: 0x3008DE0 }
-D_versus_3008DE0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 112, offset: 0x3008DE0, symbol: D_versus_3008DE0 }
-
-D_versus_3008EC0:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  64, height: 40, offset: 0x3008EC0, symbol: D_versus_3008EC0, tlut: 0x30098C0 }
-D_versus_30098C0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 104, offset: 0x30098C0, symbol: D_versus_30098C0 }
-
-D_versus_3009990:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  64, height: 40, offset: 0x3009990, symbol: D_versus_3009990, tlut: 0x300A390 }
-D_versus_300A390:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 112, offset: 0x300A390, symbol: D_versus_300A390 }
-
-D_versus_300A470:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 152, height: 23, offset: 0x300A470, symbol: D_versus_300A470, tlut: 0x300B218 }
-D_versus_300B218:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x300B218, symbol: D_versus_300B218 }
-
-D_versus_300B3F0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 168, height: 25, offset: 0x300B3F0, symbol: D_versus_300B3F0, tlut: 0x300C458 }
-D_versus_300C458:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x300C458, symbol: D_versus_300C458 }
-
-D_versus_300C660:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 112, height: 25, offset: 0x300C660, symbol: D_versus_300C660, tlut: 0x300D150 }
-D_versus_300D150:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 251, offset: 0x300D150, symbol: D_versus_300D150 }
-
-aVsBoostGaugeCoolTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  24, height:  3, offset: 0x300D350, symbol: aVsBoostGaugeCoolTex, tlut: 0x300D398 }
-aVsBoostGaugeCoolTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x300D398, symbol: aVsBoostGaugeCoolTLUT }
-
-aVsBoostGaugeOverheatTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  24, height:  3, offset: 0x300D3C0, symbol: aVsBoostGaugeOverheatTex, tlut: 0x300D408 }
-aVsBoostGaugeOverheatTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x300D408, symbol: aVsBoostGaugeOverheatTLUT }
-
-aVsShieldGaugeTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  48, height:  4, offset: 0x300D440, symbol: aVsShieldGaugeTex, tlut: 0x300D500 }
-aVsShieldGaugeTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 40, offset: 0x300D500, symbol: aVsShieldGaugeTLUT }
-
-D_versus_300D550:
-  { type: GFX, offset: 0x300D550, symbol: D_versus_300D550}
-D_versus_300DE80:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300DE80, symbol: D_versus_300DE80 }
-
-D_versus_300E080:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300E080, symbol: D_versus_300E080 }
-
-D_versus_300E280:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x300E280, symbol: D_versus_300E280 }
-
-D_versus_300E680:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300E680, symbol: D_versus_300E680 }
-
-D_versus_300E880:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300E880, symbol: D_versus_300E880 }
-
-D_versus_300EA80:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300EA80, symbol: D_versus_300EA80 }
-
-D_versus_300EC80:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x300EC80, symbol: D_versus_300EC80 }
-
-D_versus_300EE80:
-  { type: GFX, offset: 0x300EE80, symbol: D_versus_300EE80}
-
-aVsLandmasterModelDL:
-  { type: GFX, offset: 0x300FB80, symbol: aVsLandmasterModelDL}
-
-D_versus_3010690:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3010690, symbol: D_versus_3010690 }
-
-D_versus_3010890:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3010890, symbol: D_versus_3010890 }
-
-D_versus_3010A90:
-  { type: GFX, offset: 0x3010A90, symbol: D_versus_3010A90}
-
-D_versus_3011470:
-  { type: GFX, offset: 0x3011470, symbol: D_versus_3011470}
-
-D_versus_3011E40:
-  { type: GFX, offset: 0x3011E40, symbol: D_versus_3011E40}
-
-D_versus_3011ED0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x3011ED0, symbol: D_versus_3011ED0 }
-
-aVsSpaceJunk3DL:
-  { type: GFX, offset: 0x3012ED0, symbol: aVsSpaceJunk3DL}
-
-aVsSpaceJunk2DL:
-  { type: GFX, offset: 0x3013580, symbol: aVsSpaceJunk2DL}
-
-aVsSpaceJunk1DL:
-  { type: GFX, offset: 0x3013780, symbol: aVsSpaceJunk1DL}
-
-D_versus_3013F50:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x3013F50, symbol: D_versus_3013F50, tlut: 0x3014350 }
-D_versus_3014350:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 224, offset: 0x3014350, symbol: D_versus_3014350}
-
-D_versus_3014510:
-  {type: TEXTURE, ctype: u8, format: CI8, width:  8, height:  8, offset: 0x3014510, symbol: D_versus_3014510, tlut: 0x3014550 }
-D_versus_3014550:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 32, offset: 0x3014550, symbol: D_versus_3014550}
-
-D_versus_3014590:
-  {type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x3014590, symbol: D_versus_3014590, tlut: 0x3014690 }
-D_versus_3014690:
-  {type: TEXTURE, ctype: u16, format: TLUT, colors: 16, offset: 0x3014690, symbol: D_versus_3014690}
-
-D_versus_30146B0:
-  { type: GFX, offset: 0x30146B0, symbol: D_versus_30146B0}
-
-D_versus_3014740:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x3014740, symbol: D_versus_3014740 }
-
-D_versus_3015740:
-  { type: GFX, offset: 0x3015740, symbol: D_versus_3015740}
-
-D_versus_3015898:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3015898, symbol: D_versus_3015898 }
-
-D_versus_30160A0:
-  { type: GFX, offset: 0x30160A0, symbol: D_versus_30160A0}
-
-D_versus_30162F8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x30162F8, symbol: D_versus_30162F8 }
-
-aVsKaFlBaseDL:
-  { type: GFX, offset: 0x3016B00, symbol: aVsKaFlBaseDL}
-
-D_versus_3016DC0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3016DC0, symbol: D_versus_3016DC0 }
-
-D_versus_3016FC0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3016FC0, symbol: D_versus_3016FC0 }
-
-D_versus_30171C0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30171C0, symbol: D_versus_30171C0 }
-
-aVsPyramid1DL:
-  { type: GFX, offset: 0x30173C0, symbol: aVsPyramid1DL}
-
-aVsPyramid2DL:
-  { type: GFX, offset: 0x30174E0, symbol: aVsPyramid2DL}
-
-aVsBuildingDL:
-  { type: GFX, offset: 0x3017600, symbol: aVsBuildingDL}
-
-D_versus_3017800:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3017800, symbol: D_versus_3017800 }
-
-D_versus_3018000:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3018000, symbol: D_versus_3018000 }
-
-D_versus_3018800:
-  { type: GFX, offset: 0x3018800, symbol: D_versus_3018800}
-
-D_versus_3018D60:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3018D60, symbol: D_versus_3018D60 }
-
-D_versus_3019560:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3019560, symbol: D_versus_3019560 }
-
-D_versus_3019D60:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3019D60, symbol: D_versus_3019D60 }
-
-D_versus_301A560:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x301A560, symbol: D_versus_301A560 }
-
-D_versus_301AD60:
-  { type: GFX, offset: 0x301AD60, symbol: D_versus_301AD60}
-
-D_versus_301ADE8:
-  {type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x301ADE8, symbol: D_versus_301ADE8 }
-
-D_versus_301AEF0:
-  { type: GFX, offset: 0x301AEF0, symbol: D_versus_301AEF0}
-
-D_versus_301AF78:
-  {type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x301AF78, symbol: D_versus_301AF78 }
-
-aVsArchDL:
-  { type: GFX, offset: 0x301B080, symbol: aVsArchDL}
-
-D_versus_301B438:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301B438, symbol: D_versus_301B438 }
-
-D_versus_301B640:
-  { type: GFX, offset: 0x301B640, symbol: D_versus_301B640}
-
-D_versus_301B6E0:
-  { type: GFX, offset: 0x301B6E0, symbol: D_versus_301B6E0}
-
-D_versus_301B768:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x301B768, symbol: D_versus_301B768 }
-
-D_versus_301C0A4:
-  { type: SF64:ANIM, offset: 0x301C0A4, symbol: D_versus_301C0A4}
-
-D_versus_301C3A8:
-  { type: SF64:ANIM, offset: 0x301C3A8, symbol: D_versus_301C3A8}
-
-aVsOnFootFalcoSkel:
-  { type: SF64:SKELETON, offset: 0x301C614, symbol: aVsOnFootFalcoSkel }
-
-D_versus_301C79C:
-  { type: SF64:ANIM, offset: 0x301C79C, symbol: D_versus_301C79C }
-
-D_versus_301C9B0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301C9B0, symbol: D_versus_301C9B0 }
-
-D_versus_301CCE4:
-  { type: SF64:ANIM, offset: 0x301CCE4, symbol: D_versus_301CCE4}
-
-D_versus_301CFEC:
-  { type: SF64:ANIM, offset: 0x301CFEC, symbol: D_versus_301CFEC}
-
-aVsOnFootFoxSkel:
-  { type: SF64:SKELETON, offset: 0x301D258, symbol: aVsOnFootFoxSkel }
-
-D_versus_301D3DC:
-  { type: SF64:ANIM, offset: 0x301D3DC, symbol: D_versus_301D3DC }
-
-D_versus_301D568:
-  { type: SF64:ANIM, offset: 0x301D568, symbol: D_versus_301D568 }
-
-D_versus_301D888:
-  { type: SF64:ANIM, offset: 0x301D888, symbol: D_versus_301D888}
-
-aVsOnFootPeppySkel:
-  { type: SF64:SKELETON, offset: 0x301DB94, symbol: aVsOnFootPeppySkel }
-
-D_versus_301DD6C:
-  { type: SF64:ANIM, offset: 0x301DD6C, symbol: D_versus_301DD6C }
-
-D_versus_301DEA4:
-  { type: SF64:ANIM, offset: 0x301DEA4, symbol: D_versus_301DEA4}
-
-D_versus_301E19C:
-  { type: SF64:ANIM, offset: 0x301E19C, symbol: D_versus_301E19C}
-
-aVsOnFootSlippySkel:
-  { type: SF64:SKELETON, offset: 0x301E3E8, symbol: aVsOnFootSlippySkel }
-
-D_versus_301E560:
-  { type: SF64:ANIM, offset: 0x301E560, symbol: D_versus_301E560}
-
-D_versus_301E570:
-  { type: GFX, offset: 0x301E570, symbol: D_versus_301E570}
-
-D_versus_301E5F8:
-  {type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x301E5F8, symbol: D_versus_301E5F8 }
-
-D_versus_301E700:
-  { type: GFX, offset: 0x301E700, symbol: D_versus_301E700}
-
-D_versus_301E788:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301E788, symbol: D_versus_301E788 }
-
-D_versus_301E990:
-  { type: GFX, offset: 0x301E990, symbol: D_versus_301E990}
-
-D_versus_301EA18:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301EA18, symbol: D_versus_301EA18 }
-
-D_versus_301EC20:
-  { type: GFX, offset: 0x301EC20, symbol: D_versus_301EC20}
-
-D_versus_301ECA8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301ECA8, symbol: D_versus_301ECA8 }
-
-D_versus_301EEB0:
-  { type: GFX, offset: 0x301EEB0, symbol: D_versus_301EEB0}
-
-D_versus_301EF38:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301EF38, symbol: D_versus_301EF38 }
-
-aVsLandmasterCanonDL:
-  { type: GFX, offset: 0x301F140, symbol: aVsLandmasterCanonDL}
-
-D_versus_301F2E0:
-  { type: GFX, offset: 0x301F2E0, symbol: D_versus_301F2E0}
-
-D_versus_301F368:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301F368, symbol: D_versus_301F368 }
-
-D_versus_301F570:
-  { type: GFX, offset: 0x301F570, symbol: D_versus_301F570}
-
-D_versus_301F5F8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301F5F8, symbol: D_versus_301F5F8 }
-
-D_versus_301F800:
-  { type: GFX, offset: 0x301F800, symbol: D_versus_301F800}
-
-D_versus_301F888:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301F888, symbol: D_versus_301F888 }
-
-D_versus_301FA90:
-  { type: GFX, offset: 0x301FA90, symbol: D_versus_301FA90}
-
-D_versus_301FB18:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301FB18, symbol: D_versus_301FB18 }
-
-D_versus_301FD20:
-  { type: GFX, offset: 0x301FD20, symbol: D_versus_301FD20}
-
-D_versus_301FDA8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301FDA8, symbol: D_versus_301FDA8 }
-
-D_versus_301FFB0:
-  { type: GFX, offset: 0x301FFB0, symbol: D_versus_301FFB0}
-
-D_versus_3020048:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3020048, symbol: D_versus_3020048 }
-
-D_versus_3020850:
-  { type: GFX, offset: 0x3020850, symbol: D_versus_3020850}
-
-D_versus_30208D8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30208D8, symbol: D_versus_30208D8 }
-
-D_versus_3020AE0:
-  { type: GFX, offset: 0x3020AE0, symbol: D_versus_3020AE0}
-
-D_versus_3020B78:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3020B78, symbol: D_versus_3020B78 }
-
-D_versus_3020D80:
-  { type: GFX, offset: 0x3020D80, symbol: D_versus_3020D80}
-
-D_versus_3020E18:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3020E18, symbol: D_versus_3020E18 }
-
-D_versus_3021620:
-  { type: GFX, offset: 0x3021620, symbol: D_versus_3021620}
-
-D_versus_30216B8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30216B8, symbol: D_versus_30216B8 }
-
-D_versus_30218C0:
-  { type: GFX, offset: 0x30218C0, symbol: D_versus_30218C0}
-
-D_versus_3021958:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3021958, symbol: D_versus_3021958 }
-
-D_versus_3022160:
-  { type: GFX, offset: 0x3022160, symbol: D_versus_3022160}
-
-D_versus_30221E8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30221E8, symbol: D_versus_30221E8 }
-
-D_versus_30223F0:
-  { type: GFX, offset: 0x30223F0, symbol: D_versus_30223F0}
-
-D_versus_30226D0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x30226D0, symbol: D_versus_30226D0 }
-
-D_versus_3022DE0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3022DE0, symbol: D_versus_3022DE0 }
-
-D_versus_3022E60:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3022E60, symbol: D_versus_3022E60 }
-
-D_versus_3023238:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3023238, symbol: D_versus_3023238 }
-
-D_versus_3023F68:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3023F68, symbol: D_versus_3023F68 }
-
-D_versus_30242D0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x30242D0, symbol: D_versus_30242D0 }
-
-D_versus_30246E8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x30246E8, symbol: D_versus_30246E8 }
-
-D_versus_3024C30:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3024C30, symbol: D_versus_3024C30 }
-
-D_versus_3025138:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3025138, symbol: D_versus_3025138 }
-
-D_versus_3025938:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3025938, symbol: D_versus_3025938 }
-
-D_versus_3025C68:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3025C68, symbol: D_versus_3025C68 }
-
-D_versus_30261A0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x30261A0, symbol: D_versus_30261A0 }
-
-D_versus_3026A38:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3026A38, symbol: D_versus_3026A38 }
-
-D_versus_3026AB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3026AB8, symbol: D_versus_3026AB8 }
-
-D_versus_3026B38:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3026B38, symbol: D_versus_3026B38 }
-
-D_versus_3026BB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3026BB8, symbol: D_versus_3026BB8 }
-
-D_versus_3026C38:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3026C38, symbol: D_versus_3026C38 }
-
-D_versus_3026CB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height:  8, offset: 0x3026CB8, symbol: D_versus_3026CB8 }
-
-D_versus_3026DB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height:  8, offset: 0x3026DB8, symbol: D_versus_3026DB8 }
-
-D_versus_3026EB8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3026EB8, symbol: D_versus_3026EB8 }
-
-D_versus_3027268:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3027268, symbol: D_versus_3027268 }
-
-D_versus_3028130:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height: 16, offset: 0x3028130, symbol: D_versus_3028130 }
-
-D_versus_3028230:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x3028230, symbol: D_versus_3028230 }
-
-D_versus_3028C60:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3028C60, symbol: D_versus_3028C60 }
-
-D_versus_3028CE0:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3028CE0, symbol: D_versus_3028CE0 }
-
-D_versus_3029160:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x3029160, symbol: D_versus_3029160 }
-
-D_versus_3029388:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3029388, symbol: D_versus_3029388 }
-
-D_versus_302A0A0:
-  { type: GFX, offset: 0x302A0A0, symbol: D_versus_302A0A0}
-
-D_versus_302A138:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x302A138, symbol: D_versus_302A138 }
-
-D_versus_302A940:
-  { type: GFX, offset: 0x302A940, symbol: D_versus_302A940}
-
-D_versus_302A9C8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x302A9C8, symbol: D_versus_302A9C8 }
-
-D_versus_302ABD0:
-  { type: GFX, offset: 0x302ABD0, symbol: D_versus_302ABD0}
-
-D_versus_302AC68:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x302AC68, symbol: D_versus_302AC68 }
-
-D_versus_302B470:
-  { type: GFX, offset: 0x302B470, symbol: D_versus_302B470}
-
-D_versus_302B4F8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x302B4F8, symbol: D_versus_302B4F8 }
-
-D_versus_302B700:
-  { type: GFX, offset: 0x302B700, symbol: D_versus_302B700}
-
-D_versus_302B788:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x302B788, symbol: D_versus_302B788 }
-
-D_versus_302B890:
-  { type: GFX, offset: 0x302B890, symbol: D_versus_302B890}
-
-D_versus_302B918:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x302B918, symbol: D_versus_302B918 }
-
-D_versus_302BA20:
-  { type: GFX, offset: 0x302BA20, symbol: D_versus_302BA20}
-
-D_versus_302BAA8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x302BAA8, symbol: D_versus_302BAA8 }
-
-D_versus_302BBB0:
-  { type: GFX, offset: 0x302BBB0, symbol: D_versus_302BBB0}
-
-D_versus_302BC38:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x302BC38, symbol: D_versus_302BC38 }
-
-D_versus_302BD40:
-  { type: GFX, offset: 0x302BD40, symbol: D_versus_302BD40}
-
-D_versus_302BDC8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x302BDC8, symbol: D_versus_302BDC8 }
-
-D_versus_302BED0:
-  { type: GFX, offset: 0x302BED0, symbol: D_versus_302BED0}
-
-D_versus_302BF88:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302BF88, symbol: D_versus_302BF88, tlut: 0x302C088 }
-
-D_versus_302C088:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 34, offset: 0x302C088, symbol: D_versus_302C088 }
-
-D_versus_302C0D0:
-  { type: GFX, offset: 0x302C0D0, symbol: D_versus_302C0D0}
-
-D_versus_302C188:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302C188, symbol: D_versus_302C188, tlut: 0x302C288 }
-D_versus_302C288:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 94, offset: 0x302C288, symbol: D_versus_302C288 }
-
-D_versus_302C350:
-  { type: GFX, offset: 0x302C350, symbol: D_versus_302C350}
-
-D_versus_302C408:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302C408, symbol: D_versus_302C408, tlut: 0x302C508 }
-D_versus_302C508:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 76, offset: 0x302C508, symbol: D_versus_302C508 }
-
-D_versus_302C5A0:
-  { type: GFX, offset: 0x302C5A0, symbol: D_versus_302C5A0}
-
-D_versus_302C658:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302C658, symbol: D_versus_302C658, tlut: 0x302C758 }
-D_versus_302C758:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 101, offset: 0x302C758, symbol: D_versus_302C758 }
-
-D_versus_302C830:
-  { type: GFX, offset: 0x302C830, symbol: D_versus_302C830}
-
-D_versus_302C8E8:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302C8E8, symbol: D_versus_302C8E8, tlut: 0x302C9E8 }
-D_versus_302C9E8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 165, offset: 0x302C9E8, symbol: D_versus_302C9E8 }
-
-D_versus_302CB40:
-  { type: GFX, offset: 0x302CB40, symbol: D_versus_302CB40}
-
-D_versus_302CBF8:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302CBF8, symbol: D_versus_302CBF8, tlut: 0x302CCF8 }
-D_versus_302CCF8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 158, offset: 0x302CCF8, symbol: D_versus_302CCF8 }
-
-D_versus_302CE40:
-  { type: GFX, offset: 0x302CE40, symbol: D_versus_302CE40}
-
-D_versus_302CEF8:
-  { type: TEXTURE, ctype: u8, format: CI8, width:  16, height: 16, offset: 0x302CEF8, symbol: D_versus_302CEF8, tlut: 0x302CFF8 }
-D_versus_302CFF8:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 146, offset: 0x302CFF8, symbol: D_versus_302CFF8}
-
-D_versus_302D120:
-  { type: GFX, offset: 0x302D120, symbol: D_versus_302D120}
-
-D_versus_302D1B8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width:  8, height:  8, offset: 0x302D1B8, symbol: D_versus_302D1B8 }
-
-D_versus_302D240:
-  { type: GFX, offset: 0x302D240, symbol: D_versus_302D240}
-
-D_versus_302D2C8:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x302D2C8, symbol: D_versus_302D2C8 }
-
-D_versus_302D4D0:
-  { type: GFX, offset: 0x302D4D0, symbol: D_versus_302D4D0}
-
-D_versus_302D568:
-  {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x302D568, symbol: D_versus_302D568 }
-
-D_versus_302DD70:
-  { type: SF64:ENVIRONMENT, offset: 0x302DD70, symbol: D_versus_302DD70}
-
-D_versus_302DDB4:
-  { type: SF64:ENVIRONMENT, offset: 0x302DDB4, symbol: D_versus_302DDB4}
-
-D_versus_302DDF8:
-  { type: SF64:ENVIRONMENT, offset: 0x302DDF8, symbol: D_versus_302DDF8}
-
-D_versus_302DE3C:
-  { type: SF64:OBJECT_INIT, offset: 0x302DE3C, symbol: D_versus_302DE3C}
-
-D_versus_302E0E4:
-  { type: SF64:OBJECT_INIT, offset: 0x302E0E4, symbol: D_versus_302E0E4}
-
-D_versus_302E170:
-  { type: SF64:OBJECT_INIT, offset: 0x302E170, symbol: D_versus_302E170}
-
-D_versus_302E378:
-  { type: SF64:OBJECT_INIT, offset: 0x302E378, symbol: D_versus_302E378}
-
-aVsSpaceJunk1Hitbox:
-  { type: SF64:HITBOX, offset: 0x302ED4C, symbol: aVsSpaceJunk1Hitbox}
-
-aVsSpaceJunk2Hitbox:
-  { type: SF64:HITBOX, offset: 0x302ED98, symbol: aVsSpaceJunk2Hitbox}
-
-aVsSpaceJunk3Hitbox:
-  { type: SF64:HITBOX, offset: 0x302EDB4, symbol: aVsSpaceJunk3Hitbox}
-
-aVsKaFlBaseHitbox:
-  { type: SF64:HITBOX, offset: 0x302EE00, symbol: aVsKaFlBaseHitbox}
-
-aVsBuilding1Hibox:
-  { type: SF64:HITBOX, offset: 0x302EE64, symbol: aVsBuilding1Hibox}
-
-aVsBuilding2Hibox:
-  { type: SF64:HITBOX, offset: 0x302EE80, symbol: aVsBuilding2Hibox}
-
-aVsArchHitbox:
-  { type: SF64:HITBOX, offset: 0x302EE9C, symbol: aVsArchHitbox}
-
-D_versus_302EEE8:
-  { type: SF64:TRIANGLE, count: 4, offset: 0x302EEE8, symbol: D_versus_302EEE8, mesh_symbol: D_versus_OFFSET}
-
-D_versus_302EF6C:
-  { type: SF64:TRIANGLE, count: 4, offset: 0x302EF6C, symbol: D_versus_302EF6C, mesh_symbol: D_versus_OFFSET}
-
-D_versus_302EFF0:
-  { type: SF64:TRIANGLE, count: 4, offset: 0x302EFF0, symbol: D_versus_302EFF0, mesh_symbol: D_versus_OFFSET}
-
-D_versus_302F044:
-  { type: SF64:TRIANGLE, count: 14, offset: 0x302F044, symbol: D_versus_302F044, mesh_symbol: D_versus_OFFSET}
-
-D_versus_302E56C:
-  {type: VEC3F, count: 20, offset: 0x302E56C, symbol: D_versus_302E56C}
-
-D_versus_302E65C:
-  {type: VEC3F, count: 20, offset: 0x302E65C, symbol: D_versus_302E65C}
-
-D_versus_302E74C:
-  {type: VEC3F, count: 19, offset: 0x302E74C, symbol: D_versus_302E74C}
-
-D_versus_302E830:
-  {type: VEC3F, count: 25, offset: 0x302E830, symbol: D_versus_302E830}
-
-D_versus_302E95C:
-  {type: VEC3F, count: 20, offset: 0x302E95C, symbol: D_versus_302E95C}
-
-D_versus_302EA4C:
-  {type: VEC3F, count: 20, offset: 0x302EA4C, symbol: D_versus_302EA4C}
-
-D_versus_302EB3C:
-  {type: VEC3F, count: 19, offset: 0x302EB3C, symbol: D_versus_302EB3C}
-
-D_versus_302EC20:
-  {type: VEC3F, count: 25, offset: 0x302EC20, symbol: D_versus_302EC20}
diff --git a/assets/yaml/jp/rev0/ast_vs_menu.yaml b/assets/yaml/jp/rev0/ast_vs_menu.yaml
deleted file mode 100644
index 0fdc3d20c..000000000
--- a/assets/yaml/jp/rev0/ast_vs_menu.yaml
+++ /dev/null
@@ -1,207 +0,0 @@
-:config:
-  segments:
-    - [0x07, 0xC83960]
-  header:
-    code:
-      - '#include "assets/ast_vs_menu.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aVsPlayerNum1Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 13, offset: 0x7000000, symbol: aVsPlayerNum1Tex}
-
-aVsPlayerNum2Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 24, height: 13, offset: 0x70000D0, symbol: aVsPlayerNum2Tex}
-
-aVsPlayerNum3Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 24, height: 13, offset: 0x7000210, symbol: aVsPlayerNum3Tex}
-
-aVsPlayerNum4Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 24, height: 13, offset: 0x7000350, symbol: aVsPlayerNum4Tex}
-
-D_VS_MENU_7000490:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 42, offset: 0x7000490, symbol: D_VS_MENU_7000490}
-
-aVsTextContTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 7, offset: 0x7000F10, symbol: aVsTextContTex}
-
-D_VS_MENU_7001030:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 9, offset: 0x7001030, symbol: D_VS_MENU_7001030}
-
-D_VS_MENU_7001270:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 12, offset: 0x7001270, symbol: D_VS_MENU_7001270}
-
-aVsTextCorneriaTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 10, offset: 0x70017B0, symbol: aVsTextCorneriaTex}
-
-aVsTextSectorZTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 56, height: 10, offset: 0x70019E0, symbol: aVsTextSectorZTex}
-
-aVsTextKatinaTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 48, height: 10, offset: 0x7001C10, symbol: aVsTextKatinaTex}
-
-D_VS_MENU_7001DF0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 10, offset: 0x7001DF0, symbol: D_VS_MENU_7001DF0}
-
-D_VS_MENU_7002110:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 80, height: 12, offset: 0x7002110, symbol: D_VS_MENU_7002110}
-
-D_VS_MENU_70024D0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 15, offset: 0x70024D0, symbol: D_VS_MENU_70024D0}
-
-D_VS_MENU_7002730:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 15, offset: 0x7002730, symbol: D_VS_MENU_7002730}
-
-D_VS_MENU_7002990:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 15, offset: 0x7002990, symbol: D_VS_MENU_7002990}
-
-D_VS_MENU_7002BF0:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 15, offset: 0x7002BF0, symbol: D_VS_MENU_7002BF0}
-
-D_VS_MENU_7002E50:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 15, offset: 0x7002E50, symbol: D_VS_MENU_7002E50}
-
-aVsHandicapLvl1Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 12, offset: 0x70030B0, symbol: aVsHandicapLvl1Tex}
-
-aVsHandicapLvl2Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 12, offset: 0x7003290, symbol: aVsHandicapLvl2Tex}
-
-aVsHandicapLvl3Tex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 12, offset: 0x7003470, symbol: aVsHandicapLvl3Tex}
-
-D_VS_MENU_7003650:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 40, height: 12, offset: 0x7003650, symbol: D_VS_MENU_7003650}
-
-D_VS_MENU_7003830:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 64, height: 17, offset: 0x7003830, symbol: D_VS_MENU_7003830}
-
-D_VS_MENU_7003C70:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x7003C70, symbol: D_VS_MENU_7003C70}
-
-D_VS_MENU_7003D70:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 32, height: 5, offset: 0x7003D70, symbol: D_VS_MENU_7003D70}
-
-D_VS_MENU_7003E10:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x7003E10, symbol: D_VS_MENU_7003E10}
-
-D_VS_MENU_7003F10:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x7003F10, symbol: D_VS_MENU_7003F10}
-
-D_VS_MENU_7004010:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 8, height: 8, offset: 0x7004010, symbol: D_VS_MENU_7004010}
-
-D_VS_MENU_7004050:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x7004050, symbol: D_VS_MENU_7004050, tlut: 0x7004150}
-
-D_VS_MENU_7004150:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 76, offset: 0x7004150, symbol: D_VS_MENU_7004150}
-
-D_VS_MENU_70041F0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x70041F0, symbol: D_VS_MENU_70041F0, tlut: 0x70042F0}
-
-D_VS_MENU_70042F0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 53, offset: 0x70042F0, symbol: D_VS_MENU_70042F0}
-
-D_VS_MENU_7004360:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x7004360, symbol: D_VS_MENU_7004360, tlut: 0x7004460}
-
-D_VS_MENU_7004460:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 50, offset: 0x7004460, symbol: D_VS_MENU_7004460}
-
-D_VS_MENU_70044D0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 64, height: 19, offset: 0x70044D0, symbol: D_VS_MENU_70044D0, tlut: 0x7004990}
-
-D_VS_MENU_7004990:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 17, offset: 0x7004990, symbol: D_VS_MENU_7004990}
-
-aVsFoxNameTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 56, height: 8, offset: 0x70049C0, symbol: aVsFoxNameTex, tlut: 0x7004B80}
-
-aVsFoxNameTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 18, offset: 0x7004B80, symbol: aVsFoxNameTLUT}
-
-aVsPeppyNameTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 48, height: 10, offset: 0x7004BB0, symbol: aVsPeppyNameTex, tlut: 0x7004D90}
-
-aVsPeppyNameTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 18, offset: 0x7004D90, symbol: aVsPeppyNameTLUT}
-
-aVsSlippyNameTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 56, height: 10, offset: 0x7004DC0, symbol: aVsSlippyNameTex, tlut: 0x7004FF0}
-
-aVsSlippyNameTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 18, offset: 0x7004FF0, symbol: aVsSlippyNameTLUT}
-
-aVsFalcoNameTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 48, height: 8, offset: 0x7005020, symbol: aVsFalcoNameTex, tlut: 0x70051A0}
-
-aVsFalcoNameTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 18, offset: 0x70051A0, symbol: aVsFalcoNameTLUT}
-
-D_VS_MENU_70051D0:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x70051D0, symbol: D_VS_MENU_70051D0, tlut: 0x70055D0}
-
-D_VS_MENU_70055D0:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 20, offset: 0x70055D0, symbol: D_VS_MENU_70055D0}
-
-aVsCorneriaTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 48, height: 38, offset: 0x7005600, symbol: aVsCorneriaTex, tlut: 0x7005D20}
-
-aVsCorneriaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 248, offset: 0x7005D20, symbol: aVsCorneriaTLUT}
-
-aVsSectorZTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 48, height: 38, offset: 0x7005F10, symbol: aVsSectorZTex, tlut: 0x7006630}
-
-aVsSectorZTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 168, offset: 0x7006630, symbol: aVsSectorZTLUT}
-
-aVsKatinaTex:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 48, height: 38, offset: 0x7006780, symbol: aVsKatinaTex, tlut: 0x7006EA0}
-
-aVsKatinaTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 256, offset: 0x7006EA0, symbol: aVsKatinaTLUT}
-
-aVsFalcoFaceTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x70070A0, symbol: aVsFalcoFaceTex}
-
-D_VS_MENU_7007FC0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x7007FC0, symbol: D_VS_MENU_7007FC0}
-
-aVsFoxFaceTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x7008EE0, symbol: aVsFoxFaceTex}
-
-D_VS_MENU_7009E00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x7009E00, symbol: D_VS_MENU_7009E00}
-
-aVsPeppyFaceTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x700AD20, symbol: aVsPeppyFaceTex}
-
-D_VS_MENU_700BC40:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x700BC40, symbol: D_VS_MENU_700BC40}
-
-aVsSlippyFaceTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x700CB60, symbol: aVsSlippyFaceTex}
-
-D_VS_MENU_700DA80:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x700DA80, symbol: D_VS_MENU_700DA80}
-
-aVsN64ConsoleTex:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 144, height: 42, offset: 0x700E9A0, symbol: aVsN64ConsoleTex}
-
-aVsHandicapFrameTex:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 80, height: 71, offset: 0x70118E0, symbol: aVsHandicapFrameTex, tlut: 0x70123F8}
-
-aVsHandicapFrameTLUT:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 5, offset: 0x70123F8, symbol: aVsHandicapFrameTLUT}
-
-D_VS_MENU_7012410:
-  { type: GFX, offset: 0x7012410, symbol: D_VS_MENU_7012410}
-
-D_VS_MENU_70124E8:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 8, height: 16, offset: 0x70124E8, symbol: D_VS_MENU_70124E8, tlut: 0x7012568}
-
-D_VS_MENU_7012568:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x7012568, symbol: D_VS_MENU_7012568}
diff --git a/assets/yaml/jp/rev0/ast_warp_zone.yaml b/assets/yaml/jp/rev0/ast_warp_zone.yaml
deleted file mode 100644
index d7ce93c73..000000000
--- a/assets/yaml/jp/rev0/ast_warp_zone.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-:config:
-  segments:
-    - [0x07, 0xBC7460]
-  header:
-    code:
-      - '#include "assets/ast_warp_zone.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-
-aWzSxEnemy1DL:
-  { type: GFX, offset: 0x7000000, symbol: aWzSxEnemy1DL }
-
-aWzGateDL:
-  { type: GFX, offset: 0x7000280, symbol: aWzGateDL }
-
-aWzMeteor2DL:
-  { type: GFX, offset: 0x70008F0, symbol: aWzMeteor2DL }
-
-D_WZ_7000260:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 4, height: 4, offset: 0x7000260, symbol: D_WZ_7000260 }
-
-D_WZ_7000A30:
-  { type: TEXTURE, ctype: u8, format: CI4, width: 32, height: 32, offset: 0x7000A30, symbol: D_WZ_7000A30, tlut: 0x7000C30 }
-
-D_WZ_7000C30:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x7000C30, symbol: D_WZ_7000C30 }
-
-aWzPillar1DL:
-  { type: GFX, offset: 0x7000C40, symbol: aWzPillar1DL }
-
-aWzMeteor1DL:
-  { type: GFX, offset: 0x7000E80, symbol: aWzMeteor1DL }
-
-aWzPillar2DL:
-  { type: GFX, offset: 0x70010E0, symbol: aWzPillar2DL }
-
-D_WZ_7001540:
-  { type: GFX, offset: 0x7001540, symbol: D_WZ_7001540 }
-
-D_WZ_70015D0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x70015D0, symbol: D_WZ_70015D0 }
\ No newline at end of file
diff --git a/assets/yaml/jp/rev0/ast_zoness.yaml b/assets/yaml/jp/rev0/ast_zoness.yaml
deleted file mode 100644
index 917fab23e..000000000
--- a/assets/yaml/jp/rev0/ast_zoness.yaml
+++ /dev/null
@@ -1,563 +0,0 @@
-:config:
-  segments:
-    - [0x06, 0xB51670]
-  header:
-    code:
-      - '#include "assets/ast_zoness.h"'
-    header:
-      - '#include "gfx.h"'
-      - '#include "sf64object.h"'
-      - '#include "sf64level.h"'
-      - '#include "sf64event.h"'
-      - '#include "sf64player.h"'
-      - '#include "sf64audio_external.h"'
-      - '#include "sf64mesg.h"'
-aZoTitleCardTex:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 112, height: 28, offset: 0x6000000, symbol: aZoTitleCardTex}
-
-D_ZO_6000C40:
-  { type: GFX, offset: 0x6000C40, symbol: D_ZO_6000C40}
-
-D_ZO_6000E98:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6000E98, symbol: D_ZO_6000E98}
-
-D_ZO_6001098:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6001098, symbol: D_ZO_6001098}
-
-aZoDodoraHeadDL:
-  { type: GFX, offset: 0x60012A0, symbol: aZoDodoraHeadDL}
-
-D_ZO_6001810:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6001810, symbol: D_ZO_6001810}
-
-D_ZO_6002010:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6002010, symbol: D_ZO_6002010}
-
-D_ZO_6002210:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6002210, symbol: D_ZO_6002210}
-
-D_ZO_6002410:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6002410, symbol: D_ZO_6002410}
-
-D_ZO_6002610:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6002610, symbol: D_ZO_6002610}
-
-D_ZO_6002810:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6002810, symbol: D_ZO_6002810}
-
-D_ZO_6002A10:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 16, offset: 0x6002A10, symbol: D_ZO_6002A10}
-
-aZoRadarBuoyDL:
-  { type: GFX, offset: 0x6002E10, symbol: aZoRadarBuoyDL}
-
-D_ZO_6003288:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6003288, symbol: D_ZO_6003288}
-
-D_ZO_6003488:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6003488, symbol: D_ZO_6003488}
-
-D_ZO_6003690:
-  { type: GFX, offset: 0x6003690, symbol: D_ZO_6003690}
-
-D_ZO_6003930:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6003930, symbol: D_ZO_6003930}
-
-D_ZO_6003B30:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 64, offset: 0x6003B30, symbol: D_ZO_6003B30}
-
-D_ZO_6004330:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 40, offset: 0x6004330, symbol: D_ZO_6004330}
-
-D_ZO_6004380:
-  { type: GFX, offset: 0x6004380, symbol: D_ZO_6004380}
-
-D_ZO_6004450:
-  { type: GFX, offset: 0x6004450, symbol: D_ZO_6004450}
-
-D_ZO_6004970:
-  { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 16, offset: 0x6004970, symbol: D_ZO_6004970}
-
-D_ZO_6004A70:
-  { type: TEXTURE, ctype: u16, format: TLUT, colors: 72, offset: 0x6004A70, symbol: D_ZO_6004A70}
-
-D_ZO_6004B00:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6004B00, symbol: D_ZO_6004B00}
-
-aZoPatrolBoatDL:
-  { type: GFX, offset: 0x6004D00, symbol: aZoPatrolBoatDL}
-
-D_ZO_6005958:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6005958, symbol: D_ZO_6005958}
-
-D_ZO_6005B58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6005B58, symbol: D_ZO_6005B58}
-
-D_ZO_6006360:
-  { type: GFX, offset: 0x6006360, symbol: D_ZO_6006360}
-
-D_ZO_6007230:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6007230, symbol: D_ZO_6007230}
-
-D_ZO_6007430:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6007430, symbol: D_ZO_6007430}
-
-D_ZO_6007C30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6007C30, symbol: D_ZO_6007C30}
-
-D_ZO_6007E30:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6007E30, symbol: D_ZO_6007E30}
-
-D_ZO_6008030:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6008030, symbol: D_ZO_6008030}
-
-D_ZO_6008230:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6008230, symbol: D_ZO_6008230}
-
-D_ZO_6008430:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6008430, symbol: D_ZO_6008430}
-
-D_ZO_6008630:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6008630, symbol: D_ZO_6008630}
-
-D_ZO_6008830:
-  { type: GFX, offset: 0x6008830, symbol: D_ZO_6008830}
-
-D_ZO_6009ED0:
-  { type: VTX, count: 289, offset: 0x6009ED0, symbol: D_ZO_6009ED0}
-
-D_ZO_600B0E0:
-  { type: GFX, offset: 0x600B0E0, symbol: D_ZO_600B0E0}
-
-D_ZO_600C780:
-  { type: VTX, count: 289, offset: 0x600C780, symbol: D_ZO_600C780}
-
-D_ZO_600D990:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600D990, symbol: D_ZO_600D990}
-
-aZoBirdAnim:
-  { type: SF64:ANIM, offset: 0x600E5EC, symbol: aZoBirdAnim}
-
-aZoBirdSkel:
-  { type: SF64:SKELETON, offset: 0x600E7D8, symbol: aZoBirdSkel}
-
-aZoOilRig3DL:
-  { type: GFX, offset: 0x600E820, symbol: aZoOilRig3DL}
-
-aZoOilRig2DL:
-  { type: GFX, offset: 0x600EC90, symbol: aZoOilRig2DL}
-
-aZoOilRig1DL:
-  { type: GFX, offset: 0x600F560, symbol: aZoOilRig1DL}
-
-D_ZO_600FE58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600FE58, symbol: D_ZO_600FE58}
-
-D_ZO_6010658:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6010658, symbol: D_ZO_6010658}
-
-D_ZO_6010E58:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6010E58, symbol: D_ZO_6010E58}
-
-D_ZO_6011660:
-  { type: GFX, offset: 0x6011660, symbol: D_ZO_6011660}
-
-D_ZO_6011928:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6011928, symbol: D_ZO_6011928}
-
-D_ZO_6012128:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6012128, symbol: D_ZO_6012128}
-
-D_ZO_6012930:
-  { type: GFX, offset: 0x6012930, symbol: D_ZO_6012930}
-
-D_ZO_6013010:
-  { type: GFX, offset: 0x6013010, symbol: D_ZO_6013010}
-
-D_ZO_6013330:
-  { type: GFX, offset: 0x6013330, symbol: D_ZO_6013330}
-
-D_ZO_6013480:
-  { type: GFX, offset: 0x6013480, symbol: D_ZO_6013480}
-
-D_ZO_6013510:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x6013510, symbol: D_ZO_6013510}
-
-D_ZO_6014510:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x6014510, symbol: D_ZO_6014510}
-
-D_ZO_6015430:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0x6015430, symbol: D_ZO_6015430}
-
-D_ZO_6016350:
-  { type: GFX, offset: 0x6016350, symbol: D_ZO_6016350}
-
-D_ZO_60163E0:
-  { type: GFX, offset: 0x60163E0, symbol: D_ZO_60163E0}
-
-D_ZO_60165D0:
-  { type: GFX, offset: 0x60165D0, symbol: D_ZO_60165D0}
-
-D_ZO_6016880:
-  { type: GFX, offset: 0x6016880, symbol: D_ZO_6016880}
-
-D_ZO_6016B50:
-  { type: GFX, offset: 0x6016B50, symbol: D_ZO_6016B50}
-
-D_ZO_6016D90:
-  { type: GFX, offset: 0x6016D90, symbol: D_ZO_6016D90}
-
-D_ZO_6016E30:
-  { type: GFX, offset: 0x6016E30, symbol: D_ZO_6016E30}
-
-D_ZO_6016EC8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6016EC8, symbol: D_ZO_6016EC8}
-
-D_ZO_60176D0:
-  { type: GFX, offset: 0x60176D0, symbol: D_ZO_60176D0}
-
-D_ZO_6017770:
-  { type: GFX, offset: 0x6017770, symbol: D_ZO_6017770}
-
-D_ZO_6017810:
-  { type: GFX, offset: 0x6017810, symbol: D_ZO_6017810}
-
-D_ZO_60178B0:
-  { type: GFX, offset: 0x60178B0, symbol: D_ZO_60178B0}
-
-aZoBallDL:
-  { type: GFX, offset: 0x6017950, symbol: aZoBallDL}
-
-D_ZO_60179D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60179D8, symbol: D_ZO_60179D8}
-
-D_ZO_60181E0:
-  { type: GFX, offset: 0x60181E0, symbol: D_ZO_60181E0}
-
-D_ZO_60182E0:
-  { type: TEXTURE, ctype: u16, format: IA16, width: 16, height: 16, offset: 0x60182E0, symbol: D_ZO_60182E0}
-
-D_ZO_6018550:
-  { type: SF64:ANIM, offset: 0x6018550, symbol: D_ZO_6018550}
-
-D_ZO_601863C:
-  { type: SF64:SKELETON, offset: 0x601863C, symbol: D_ZO_601863C}
-
-D_ZO_6018660:
-  { type: GFX, offset: 0x6018660, symbol: D_ZO_6018660}
-
-D_ZO_60186E8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x60186E8, symbol: D_ZO_60186E8}
-
-D_ZO_6018AF0:
-  { type: GFX, offset: 0x6018AF0, symbol: D_ZO_6018AF0}
-
-D_ZO_6018B78:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x6018B78, symbol: D_ZO_6018B78}
-
-D_ZO_6018C80:
-  { type: GFX, offset: 0x6018C80, symbol: D_ZO_6018C80}
-
-D_ZO_6018E80:
-  { type: GFX, offset: 0x6018E80, symbol: D_ZO_6018E80}
-
-D_ZO_6019040:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6019040, symbol: D_ZO_6019040}
-
-D_ZO_60195EC:
-  { type: SF64:ANIM, offset: 0x60195EC, symbol: D_ZO_60195EC}
-
-D_ZO_6019738:
-  { type: SF64:SKELETON, offset: 0x6019738, symbol: D_ZO_6019738}
-
-D_ZO_601996C:
-  { type: SF64:ANIM, offset: 0x601996C, symbol: D_ZO_601996C}
-
-aZoSarumarineSkel:
-  { type: SF64:SKELETON, offset: 0x6019E18, symbol: aZoSarumarineSkel}
-
-D_ZO_6019EB0:
-  { type: GFX, offset: 0x6019EB0, symbol: D_ZO_6019EB0}
-
-D_ZO_601A340:
-  { type: GFX, offset: 0x601A340, symbol: D_ZO_601A340}
-
-D_ZO_601AA48:
-  { type: SF64:ANIM, offset: 0x601AA48, symbol: D_ZO_601AA48}
-
-D_ZO_601AB14:
-  { type: SF64:SKELETON, offset: 0x601AB14, symbol: D_ZO_601AB14}
-
-D_ZO_601AFB8:
-  { type: SF64:ANIM, offset: 0x601AFB8, symbol: D_ZO_601AFB8}
-
-D_ZO_601B184:
-  { type: SF64:SKELETON, offset: 0x601B184, symbol: D_ZO_601B184}
-
-D_ZO_601B1C0:
-  { type: GFX, offset: 0x601B1C0, symbol: D_ZO_601B1C0}
-
-D_ZO_601B3B0:
-  { type: GFX, offset: 0x601B3B0, symbol: D_ZO_601B3B0}
-
-D_ZO_601B570:
-  { type: GFX, offset: 0x601B570, symbol: D_ZO_601B570}
-
-D_ZO_601B710:
-  { type: GFX, offset: 0x601B710, symbol: D_ZO_601B710}
-
-D_ZO_601B8F0:
-  { type: GFX, offset: 0x601B8F0, symbol: D_ZO_601B8F0}
-
-D_ZO_601BAD0:
-  { type: GFX, offset: 0x601BAD0, symbol: D_ZO_601BAD0}
-
-D_ZO_601BBB8:
-  { type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x601BBB8, symbol: D_ZO_601BBB8}
-
-D_ZO_601BCC0:
-  { type: GFX, offset: 0x601BCC0, symbol: D_ZO_601BCC0}
-
-D_ZO_601C390:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601C390, symbol: D_ZO_601C390}
-
-D_ZO_601C590:
-  { type: GFX, offset: 0x601C590, symbol: D_ZO_601C590}
-
-D_ZO_601C8E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601C8E0, symbol: D_ZO_601C8E0}
-
-D_ZO_601D0E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601D0E0, symbol: D_ZO_601D0E0}
-
-D_ZO_601D2E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601D2E0, symbol: D_ZO_601D2E0}
-
-D_ZO_601D5B0:
-  { type: GFX, offset: 0x601D5B0, symbol: D_ZO_601D5B0}
-
-D_ZO_601D680:
-  { type: GFX, offset: 0x601D680, symbol: D_ZO_601D680}
-
-D_ZO_601E618:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x601E618, symbol: D_ZO_601E618}
-
-D_ZO_601F260:
-  { type: GFX, offset: 0x601F260, symbol: D_ZO_601F260}
-
-D_ZO_601F420:
-  { type: GFX, offset: 0x601F420, symbol: D_ZO_601F420}
-
-D_ZO_601F620:
-  { type: GFX, offset: 0x601F620, symbol: D_ZO_601F620}
-
-aZoSarumarinePeriscopeAnim:
-  { type: SF64:ANIM, offset: 0x601F874, symbol: aZoSarumarinePeriscopeAnim}
-
-aZoSarumarinePeriscopeSkel:
-  { type: SF64:SKELETON, offset: 0x601F920, symbol: aZoSarumarinePeriscopeSkel}
-
-D_ZO_601F940:
-  { type: GFX, offset: 0x601F940, symbol: D_ZO_601F940}
-
-D_ZO_601FBC4:
-  { type: SF64:ANIM, offset: 0x601FBC4, symbol: D_ZO_601FBC4}
-
-aZoBarrierSkel:
-  { type: SF64:SKELETON, offset: 0x601FC90, symbol: aZoBarrierSkel}
-
-aZoIslandDL:
-  { type: GFX, offset: 0x601FCB0, symbol: aZoIslandDL}
-
-D_ZO_60201B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60201B0, symbol: D_ZO_60201B0}
-
-D_ZO_60209B0:
-  { type: GFX, offset: 0x60209B0, symbol: D_ZO_60209B0}
-
-D_ZO_6020B70:
-  { type: GFX, offset: 0x6020B70, symbol: D_ZO_6020B70}
-
-D_ZO_6020D50:
-  { type: GFX, offset: 0x6020D50, symbol: D_ZO_6020D50}
-
-D_ZO_6020F10:
-  { type: GFX, offset: 0x6020F10, symbol: D_ZO_6020F10}
-
-D_ZO_6021100:
-  { type: GFX, offset: 0x6021100, symbol: D_ZO_6021100}
-
-D_ZO_60214B0:
-  { type: GFX, offset: 0x60214B0, symbol: D_ZO_60214B0}
-
-D_ZO_60212B0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60212B0, symbol: D_ZO_60212B0}
-
-D_ZO_60216A8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60216A8, symbol: D_ZO_60216A8}
-
-D_ZO_6021ABC:
-  { type: SF64:ANIM, offset: 0x6021ABC, symbol: D_ZO_6021ABC}
-
-D_ZO_6021B88:
-  { type: SF64:SKELETON, offset: 0x6021B88, symbol: D_ZO_6021B88}
-
-D_ZO_6021BB0:
-  { type: GFX, offset: 0x6021BB0, symbol: D_ZO_6021BB0}
-
-D_ZO_6021C50:
-  { type: GFX, offset: 0x6021C50, symbol: D_ZO_6021C50}
-
-D_ZO_6021CE0:
-  { type: GFX, offset: 0x6021CE0, symbol: D_ZO_6021CE0}
-
-D_ZO_6021D80:
-  { type: GFX, offset: 0x6021D80, symbol: D_ZO_6021D80}
-
-D_ZO_6021E20:
-  { type: GFX, offset: 0x6021E20, symbol: D_ZO_6021E20}
-
-D_ZO_60220A0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60220A0, symbol: D_ZO_60220A0}
-
-D_ZO_60222A0:
-  { type: GFX, offset: 0x60222A0, symbol: D_ZO_60222A0}
-
-D_ZO_60227D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60227D8, symbol: D_ZO_60227D8}
-
-D_ZO_60229D8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60229D8, symbol: D_ZO_60229D8}
-
-D_ZO_6022BE0:
-  { type: GFX, offset: 0x6022BE0, symbol: D_ZO_6022BE0}
-
-D_ZO_6022D70:
-  { type: GFX, offset: 0x6022D70, symbol: D_ZO_6022D70}
-
-D_ZO_6022F00:
-  { type: GFX, offset: 0x6022F00, symbol: D_ZO_6022F00}
-
-D_ZO_6023088:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6023088, symbol: D_ZO_6023088}
-
-D_ZO_6023288:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6023288, symbol: D_ZO_6023288}
-
-D_ZO_6023488:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6023488, symbol: D_ZO_6023488}
-
-D_ZO_6023690:
-  { type: GFX, offset: 0x6023690, symbol: D_ZO_6023690}
-
-aZoDodoraTailDL:
-  { type: GFX, offset: 0x6023730, symbol: aZoDodoraTailDL}
-
-D_ZO_60237E0:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x60237E0, symbol: D_ZO_60237E0}
-
-aZoDodoraBodyDL:
-  { type: GFX, offset: 0x60239E0, symbol: aZoDodoraBodyDL}
-
-D_ZO_6023D50:
-  { type: GFX, offset: 0x6023D50, symbol: D_ZO_6023D50}
-
-D_ZO_6024018:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6024018, symbol: D_ZO_6024018}
-
-D_ZO_6024220:
-  { type: GFX, offset: 0x6024220, symbol: D_ZO_6024220}
-
-D_ZO_60242B8:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60242B8, symbol: D_ZO_60242B8}
-
-aZoRockDL:
-  { type: GFX, offset: 0x6024AC0, symbol: aZoRockDL}
-
-D_ZO_6024D60:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6024D60, symbol: D_ZO_6024D60}
-
-D_ZO_6025658:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6025658, symbol: D_ZO_6025658}
-
-D_ZO_6025E60:
-  { type: GFX, offset: 0x6025E60, symbol: D_ZO_6025E60}
-
-D_ZO_6025F98:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6025F98, symbol: D_ZO_6025F98}
-
-D_ZO_60266D0:
-  { type: SF64:ENVIRONMENT, offset: 0x60266D0, symbol: D_ZO_60266D0}
-
-D_ZO_6026714:
-  { type: SF64:OBJECT_INIT, offset: 0x6026714, symbol: D_ZO_6026714}
-
-D_ZO_602AAC0:
-  { type: SF64:SCRIPT, offset: 0x602AAC0, symbol: D_ZO_602AAC0}
-
-D_ZO_602AC50:
-  { type: ARRAY, count: 289, array_type: u16, offset: 0x602AC50, symbol: D_ZO_602AC50}
-
-# Unused
-D_ZO_602AE94:
-  { type: ARRAY, count: 242, array_type: Vec3f, offset: 0x602AE94, symbol: D_ZO_602AE94}
-
-aZoRockHitbox:
-  { type: SF64:HITBOX, offset: 0x602B9EC, symbol: aZoRockHitbox}
-
-aZoOilRig1Hitbox:
-  { type: SF64:HITBOX, offset: 0x602BA20, symbol: aZoOilRig1Hitbox}
-
-aZoOilRig2Hitbox:
-  { type: SF64:HITBOX, offset: 0x602BAE4, symbol: aZoOilRig2Hitbox}
-
-aZoOilRig3Hitbox:
-  { type: SF64:HITBOX, offset: 0x602BBD8, symbol: aZoOilRig3Hitbox}
-
-aZoIslandHitbox:
-  { type: SF64:HITBOX, offset: 0x602BC54, symbol: aZoIslandHitbox}
-
-aZoDodoraHitbox:
-  { type: SF64:HITBOX, offset: 0x602BC58, symbol: aZoDodoraHitbox}
-
-aZoTroikaHitbox:
-  { type: SF64:HITBOX, offset: 0x602BE3C, symbol: aZoTroikaHitbox}
-
-aZoObnemaHitbox:
-  { type: SF64:HITBOX, offset: 0x602BE58, symbol: aZoObnemaHitbox}
-
-aZoBarrierHitbox:
-  { type: SF64:HITBOX, offset: 0x602BFC4, symbol: aZoBarrierHitbox}
-
-aZoBarrierHitbox2:
-  { type: SF64:HITBOX, offset: 0x602C028, symbol: aZoBarrierHitbox2}
-
-aZoSarumarineHitbox:
-  { type: SF64:HITBOX, offset: 0x602C044, symbol: aZoSarumarineHitbox}
-
-aZoSarumarinePeriscopeHitbox:
-  { type: SF64:HITBOX, offset: 0x602C1A0, symbol: aZoSarumarinePeriscopeHitbox}
-
-aZoTankerHitbox:
-  { type: SF64:HITBOX, offset: 0x602C1D4, symbol: aZoTankerHitbox}
-
-aZoContainerHitbox:
-  { type: SF64:HITBOX, offset: 0x602C218, symbol: aZoContainerHitbox}
-
-aZoRadarBuoyHitbox:
-  { type: SF64:HITBOX, offset: 0x602C234, symbol: aZoRadarBuoyHitbox}
-
-aZoSupplyCraneHitbox:
-  { type: SF64:HITBOX, offset: 0x602C250, symbol: aZoSupplyCraneHitbox}
-
-aZoBirdHitbox:
-  { type: SF64:HITBOX, offset: 0x602C294, symbol: aZoBirdHitbox}
-
-aZoSearchLightHitbox:
-  { type: SF64:HITBOX, offset: 0x602C2B0, symbol: aZoSearchLightHitbox}
-
-D_ZO_602C2CC:
-  { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602C2CC, symbol: D_ZO_602C2CC}
-
-D_ZO_602CACC:
-  {type: SF64:TRIANGLE, count: 30, offset: 0x602CACC, symbol: D_ZO_602CACC, mesh_symbol: D_ZO_OFFSET}
diff --git a/include/bgm.h b/include/bgm.h
index 3f5c6376c..62f92d741 100644
--- a/include/bgm.h
+++ b/include/bgm.h
@@ -81,7 +81,12 @@ typedef enum BgmSeqIds {
     /* 63 */ SEQ_ID_TRAINING,
     /* 64 */ SEQ_ID_VE_CLEAR,
     /* 65 */ SEQ_ID_BOSS_RESUME,
+#ifdef VERSION_EU
+    /* 66 */ SEQ_ID_VOICE_LYLAT,
+    /* 67 */ SEQ_ID_MAX,
+#else
     /* 66 */ SEQ_ID_MAX,
+#endif
     /* -1 */ SEQ_ID_NONE = 0xFFFF,
 } BgmSeqIds;
 
@@ -89,6 +94,7 @@ typedef enum BgmSeqIds {
 
 #define NA_BGM_SE               (SEQ_ID_SFX)
 #define NA_BGM_VO               (SEQ_ID_VOICE)
+#define NA_BGM_VO_LYLAT         (SEQ_ID_VOICE_LYLAT)
 #define NA_BGM_STAGE_CO         (SEQ_ID_CORNERIA | SEQ_FLAG)
 #define NA_BGM_STAGE_ME         (SEQ_ID_METEO | SEQ_FLAG)
 #define NA_BGM_STAGE_TI         (SEQ_ID_TITANIA | SEQ_FLAG)
diff --git a/include/fox_option.h b/include/fox_option.h
index e6b65f005..018a3cfb4 100644
--- a/include/fox_option.h
+++ b/include/fox_option.h
@@ -57,26 +57,32 @@ typedef enum OptionId {
     /* 1000 */ OPTION_MAIN_MENU = 1000,
     /* 2000 */ OPTION_VERSUS_STAGE = 2000,
     /*    0 */ OPTION_MAP = 0,
-    /*    1 */ OPTION_TRAINING = 1,
-    /*    2 */ OPTION_VERSUS = 2,
-    /*    3 */ OPTION_RANKING = 3,
-    /*    4 */ OPTION_SOUND = 4,
-    /*    5 */ OPTION_DATA = 5,
-    /*    6 */ OPTION_EXPERT_SOUND = 6,
+    /*    1 */ OPTION_TRAINING,
+    /*    2 */ OPTION_VERSUS,
+    /*    3 */ OPTION_RANKING,
+    /*    4 */ OPTION_SOUND,
+#ifdef VERSION_EU
+    /*    5 */ OPTION_LANGUAGE,
+    /*    6 */ OPTION_DATA,
+    /*    7 */ OPTION_EXPERT_SOUND,
+#else
+    /*    5 */ OPTION_DATA,
+    /*    6 */ OPTION_EXPERT_SOUND,
+#endif
     /*   10 */ OPTION_POINT_MATCH = 10, // Point Match
     /*   20 */ OPTION_BR_MATCH = 20,    // Battle Royal Match
     /*   30 */ OPTION_TT_MATCH = 30,    // Time Trial Match
     /*  200 */ OPTION_NAME_ENTRY = 200,
     /*  300 */ OPTION_SCORE = 300,
     /*  400 */ OPTION_INVOICE = 400,
-    /*  401 */ OPTION_MAX,
+    /*  401 */ OPTION_MAX
 } OptionId;
 
 extern u8* gBSSMapPlanetTextures[9];
 extern u8* gAssetMapPlanetTextures[9];
 
 extern s32 gTotalHitsRanking[];
-extern bool gGoToTitle;   // engine
+extern bool gGoToTitle; // engine
 extern bool sLevelStartState;
 extern s32 sWipeHeight;
 extern s32 sTitleRankMaxRecords;
@@ -196,8 +202,8 @@ void Option_SetMenuLightPos(f32, f32, f32, f32*, f32*, f32*);
 void Option_CardLightning_Update(void);
 void Option_CardLightning_Draw(void);
 void Option_DrawCardLabel(OptionCardTexture tex);
-bool Option_Input_MoveCursor_Y(s32* arg0, s32 arg1, bool arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 controllerNum,
-                     StickInput* stickY);
+bool Option_Input_MoveCursor_Y(s32* arg0, s32 arg1, bool arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6,
+                               s32 controllerNum, StickInput* stickY);
 s32 Option_Input_DataSelect_X(s32*);
 bool Option_Input_Sound_X(f32* arg0, f32 arg1, f32 arg2, StickInput* arg3);
 void Option_Color_FlashRed(f32*);
diff --git a/include/sf64player.h b/include/sf64player.h
index 71f28f91f..00651a0cd 100644
--- a/include/sf64player.h
+++ b/include/sf64player.h
@@ -65,23 +65,23 @@ typedef enum LevelMode {
     /* 3 */ LEVELMODE_MAX,
 } LevelMode;
 
-typedef enum PlayerState1C8 {
-    /*  0 */ PLAYERSTATE_1C8_STANDBY,
-    /*  1 */ PLAYERSTATE_1C8_INIT,
-    /*  2 */ PLAYERSTATE_1C8_LEVEL_INTRO,
-    /*  3 */ PLAYERSTATE_1C8_ACTIVE,
-    /*  4 */ PLAYERSTATE_1C8_DOWN,
-    /*  5 */ PLAYERSTATE_1C8_U_TURN,
-    /*  6 */ PLAYERSTATE_1C8_NEXT,
-    /*  7 */ PLAYERSTATE_1C8_LEVEL_COMPLETE,
-    /*  8 */ PLAYERSTATE_1C8_ENTER_WARP_ZONE,
-    /*  9 */ PLAYERSTATE_1C8_START_360,
-    /* 10 */ PLAYERSTATE_1C8_GFOX_REPAIR,
-    /* 11 */ PLAYERSTATE_1C8_ANDROSS_MOUTH,
-    /* 12 */ PLAYERSTATE_1C8_12,
-    /* 13 */ PLAYERSTATE_1C8_VS_STANDBY,
-    /* 14 */ PLAYERSTATE_1C8_MAX,
-} PlayerState1C8;
+typedef enum PlayerState {
+    /*  0 */ PLAYERSTATE_STANDBY,
+    /*  1 */ PLAYERSTATE_INIT,
+    /*  2 */ PLAYERSTATE_LEVEL_INTRO,
+    /*  3 */ PLAYERSTATE_ACTIVE,
+    /*  4 */ PLAYERSTATE_DOWN,
+    /*  5 */ PLAYERSTATE_U_TURN,
+    /*  6 */ PLAYERSTATE_NEXT,
+    /*  7 */ PLAYERSTATE_LEVEL_COMPLETE,
+    /*  8 */ PLAYERSTATE_ENTER_WARP_ZONE,
+    /*  9 */ PLAYERSTATE_START_360,
+    /* 10 */ PLAYERSTATE_GFOX_REPAIR,
+    /* 11 */ PLAYERSTATE_ANDROSS_MOUTH,
+    /* 12 */ PLAYERSTATE_UNK_12,
+    /* 13 */ PLAYERSTATE_VS_STANDBY,
+    /* 14 */ PLAYERSTATE_MAX,
+} PlayerState;
 
 typedef enum PlayerShotStatus {
     /* 0 */ SHOT_FREE,
@@ -259,7 +259,7 @@ typedef struct Player {
     /* 0x1BC */ s32 turretRecoil;
     /* 0x1C0 */ s32 turretLockOnCount;
     /* 0x1C4 */ s32 num;
-    /* 0x1C8 */ PlayerState1C8 state_1C8;
+    /* 0x1C8 */ PlayerState state;
     /* 0x1CC */ PlayerForm form;
     /* 0x1D0 */ s32 csState;
     /* 0x1D4 */ bool grounded;
diff --git a/include/sf64save.h b/include/sf64save.h
index ee5ef0451..0ed060b34 100644
--- a/include/sf64save.h
+++ b/include/sf64save.h
@@ -43,8 +43,9 @@ typedef struct SaveData {
     /* 0x4A */ u16 rankingMedal[RANKING_MAX]; // Medals obtained in the current record
     /* 0x5E */ PlanetStats stats[RANKING_MAX][ROUTE_MAX];
     /* 0xEA */ u8 unk_EA;
-    /* 0xEB */ char padEB[0x3];
-    /* 0xEE */ char padEE[0x10];
+    /* 0xEB */ u8 textLanguage;  // EU Only text language selection
+    /* 0xEC */ u8 voiceLanguage; // EU Only voice language selection
+    /* 0xED */ char padEE[0x11];
 } SaveData; // size = 0xFE
 
 typedef struct {
diff --git a/include/variables.h b/include/variables.h
index ea946e71d..eb224f688 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -155,7 +155,7 @@ extern s32 gCallTimer;
 extern s32 D_hud_80161704;
 extern s32 D_hud_80161708;
 extern s32 D_hud_8016170C;
-extern s32 D_hud_80161710;
+extern s32 gRadarMissileAlarmTimer;
 extern s32 gTotalHits; // 0x80161714 gTotalGameScore
 extern f32 D_hud_80161720[3];
 extern s32 gDisplayedHitCount;
diff --git a/linker_scripts/eu/rev0/symbol_addrs.txt b/linker_scripts/eu/rev0/symbol_addrs.txt
index 219477cef..a0c0a46c0 100644
--- a/linker_scripts/eu/rev0/symbol_addrs.txt
+++ b/linker_scripts/eu/rev0/symbol_addrs.txt
@@ -9,10 +9,10 @@ func_80002F00 = 0x80002F00;
 func_80002F20 = 0x80002F20;
 func_80002F64 = 0x80002F64;
 func_80003008 = 0x80003008;
-func_800031EC = 0x800031EC;
+Lib_InitPerspective = 0x800031EC;
 func_80003334 = 0x80003334;
-func_80003460 = 0x80003460;
-func_800035A0 = 0x800035A0;
+Lib_DmaRead = 0x80003460;
+Lib_FillScreen = 0x800035A0;
 func_800036A0 = 0x800036A0;
 func_800037FC = 0x800037FC;
 func_8000397C = 0x8000397C;
@@ -50,23 +50,23 @@ func_800057B0 = 0x800057B0;
 func_800057C4 = 0x800057C4;
 func_80005B70 = 0x80005B70;
 func_80005CA4 = 0x80005CA4;
-func_80005DB4 = 0x80005DB4;
-func_80005F00 = 0x80005F00;
+Matrix_RotateX = 0x80005DB4;
+Matrix_RotateY = 0x80005F00;
 func_80006050 = 0x80006050;
 func_8000619C = 0x8000619C;
 func_80006570 = 0x80006570;
 func_8000678C = 0x8000678C;
 func_800069E0 = 0x800069E0;
-func_80006A90 = 0x80006A90;
+Matrix_MultVec3fNoTranslate = 0x80006A90;
 func_80006B28 = 0x80006B28;
 func_80006CEC = 0x80006CEC;
 func_80006EAC = 0x80006EAC;
 func_80006F28 = 0x80006F28;
-func_80006F90 = 0x80006F90;
-func_80006FA8 = 0x80006FA8;
+Memory_FreeAll = 0x80006F90;
+Memory_Allocate = 0x80006FA8;
 func_80006FD0 = 0x80006FD0;
-func_80007048 = 0x80007048;
-func_800070D8 = 0x800070D8;
+Timer_CreateTask = 0x80007048;
+Timer_Increment = 0x800070D8;
 func_800070EC = 0x800070EC;
 func_800070F8 = 0x800070F8;
 func_80007138 = 0x80007138;
@@ -106,92 +106,92 @@ func_8000B460 = 0x8000B460;
 func_8000B4F0 = 0x8000B4F0;
 func_8000B58C = 0x8000B58C;
 func_8000B9FC = 0x8000B9FC;
-func_8000BCE0 = 0x8000BCE0;
-func_8000BDA8 = 0x8000BDA8;
-func_8000BE94 = 0x8000BE94;
-func_8000BF04 = 0x8000BF04;
-func_8000BF84 = 0x8000BF84;
-func_8000BFDC = 0x8000BFDC;
-func_8000C004 = 0x8000C004;
-func_8000C018 = 0x8000C018;
-func_8000C048 = 0x8000C048;
-func_8000C058 = 0x8000C058;
-func_8000C0B4 = 0x8000C0B4;
-func_8000C130 = 0x8000C130;
-func_8000C1AC = 0x8000C1AC;
-func_8000C268 = 0x8000C268;
-func_8000C324 = 0x8000C324;
-func_8000CA00 = 0x8000CA00;
-func_8000CA58 = 0x8000CA58;
+AudioHeap_ResetLoadStatus = 0x8000BCE0;
+AudioHeap_DiscardFont = 0x8000BDA8;
+AudioHeap_DiscardSequence = 0x8000BE94;
+AudioHeap_AllocZeroed = 0x8000BF04;
+AudioHeap_Alloc = 0x8000BF84;
+AudioHeap_InitPool = 0x8000BFDC;
+AudioHeap_InitPersistentCache = 0x8000C004;
+AudioHeap_InitTemporaryCache = 0x8000C018;
+AudioHeap_ResetPool = 0x8000C048;
+AudioHeap_InitMainPools = 0x8000C058;
+AudioHeap_InitSessionPools = 0x8000C0B4;
+AudioHeap_InitCachePools = 0x8000C130;
+AudioHeap_InitPersistentPoolsAndCaches = 0x8000C1AC;
+AudioHeap_InitTemporaryPoolsAndCaches = 0x8000C268;
+AudioHeap_AllocCached = 0x8000C324;
+AudioHeap_SearchCaches = 0x8000CA00;
+AudioHeap_SearchRegularCaches = 0x8000CA58;
 func_8000CB64 = 0x8000CB64;
-func_8000CF38 = 0x8000CF38;
-func_8000D0FC = 0x8000D0FC;
-func_8000D174 = 0x8000D174;
-func_8000D518 = 0x8000D518;
-func_8000DB64 = 0x8000DB64;
-func_8000DBBC = 0x8000DBBC;
-func_8000DC3C = 0x8000DC3C;
-func_8000DC8C = 0x8000DC8C;
-func_8000DCDC = 0x8000DCDC;
-func_8000DD2C = 0x8000DD2C;
-func_8000DDC0 = 0x8000DDC0;
-func_8000E054 = 0x8000E054;
-func_8000E21C = 0x8000E21C;
-func_8000E260 = 0x8000E260;
-func_8000E2E8 = 0x8000E2E8;
-func_8000E4F0 = 0x8000E4F0;
-func_8000E5F8 = 0x8000E5F8;
-func_8000E930 = 0x8000E930;
-func_8000EC04 = 0x8000EC04;
-func_8000EC64 = 0x8000EC64;
-func_8000ED10 = 0x8000ED10;
-func_8000ED78 = 0x8000ED78;
-func_8000EE64 = 0x8000EE64;
-func_8000EF34 = 0x8000EF34;
-func_8000EF98 = 0x8000EF98;
-func_8000F060 = 0x8000F060;
-func_8000F0C8 = 0x8000F0C8;
-func_8000F1A8 = 0x8000F1A8;
-func_8000F250 = 0x8000F250;
-func_8000F270 = 0x8000F270;
-func_8000F3A4 = 0x8000F3A4;
-func_8000F3D8 = 0x8000F3D8;
-func_8000F4C8 = 0x8000F4C8;
-func_8000F5A4 = 0x8000F5A4;
-func_8000F7E0 = 0x8000F7E0;
-func_8000F81C = 0x8000F81C;
-func_8000F870 = 0x8000F870;
-func_8000F8B4 = 0x8000F8B4;
-func_8000FA78 = 0x8000FA78;
-func_8000FBA0 = 0x8000FBA0;
-func_8000FBF8 = 0x8000FBF8;
+AudioHeap_UpdateReverbs = 0x8000CF38;
+AudioHeap_ClearCurrentAiBuffer = 0x8000D0FC;
+AudioHeap_ResetStep = 0x8000D174;
+AudioHeap_Init = 0x8000D518;
+AudioHeap_SearchPermanentCache = 0x8000DB64;
+AudioHeap_AllocPermanent = 0x8000DBBC;
+AudioHeap_AllocTemporarySampleCache = 0x8000DC3C;
+AudioHeap_AllocPersistentSampleCache = 0x8000DC8C;
+AudioHeap_AllocPersistentSampleCache_2 = 0x8000DCDC;
+AudioHeap_InitSampleCaches = 0x8000DD2C;
+AudioHeap_AllocTemporarySampleCacheEntry = 0x8000DDC0;
+AudioHeap_DiscardSampleCacheEntry = 0x8000E054;
+AudioHeap_UnapplySampleCache = 0x8000E21C;
+AudioHeap_AllocPersistentSampleCacheEntry = 0x8000E260;
+AudioHeap_DiscardSampleCaches = 0x8000E2E8;
+AudioLoad_DecreaseSampleDmaTtls = 0x8000E4F0;
+AudioLoad_DmaSampleData = 0x8000E5F8;
+AudioLoad_InitSampleDmaBuffers = 0x8000E930;
+AudioLoad_InitTable = 0x8000EC04;
+AudioLoad_SyncLoadSeqFonts = 0x8000EC64;
+AudioLoad_SyncLoadSeqParts = 0x8000ED10;
+AudioLoad_SyncLoadSample = 0x8000ED78;
+AudioLoad_SyncLoadInstrument = 0x8000EE64;
+AudioLoad_AsyncLoadSampleBank = 0x8000EF34;
+AudioLoad_AsyncLoadSeq = 0x8000EF98;
+AudioLoad_GetFontsForSequence = 0x8000F060;
+AudioLoad_DiscardSeqFonts = 0x8000F0C8;
+AudioLoad_DiscardFont = 0x8000F1A8;
+AudioLoad_SyncInitSeqPlayer = 0x8000F250;
+AudioLoad_SyncInitSeqPlayerInternal = 0x8000F270;
+AudioLoad_SyncLoadSeq = 0x8000F3A4;
+AudioLoad_SyncLoadSampleBank = 0x8000F3D8;
+AudioLoad_SyncLoadFont = 0x8000F4C8;
+AudioLoad_SyncLoad = 0x8000F5A4;
+AudioLoad_GetLoadTableIndex = 0x8000F7E0;
+AudioLoad_SearchCaches = 0x8000F81C;
+AudioLoad_GetLoadTable = 0x8000F870;
+AudioLoad_RelocateFont = 0x8000F8B4;
+AudioLoad_SyncDma = 0x8000FA78;
+AudioLoad_SyncDmaUnkMedium = 0x8000FBA0;
+AudioLoad_Dma = 0x8000FBF8;
 func_8000FCCC = 0x8000FCCC;
 func_8000FCDC = 0x8000FCDC;
-func_8000FCF0 = 0x8000FCF0;
-func_8000FD10 = 0x8000FD10;
-func_8000FFEC = 0x8000FFEC;
-func_8001001C = 0x8001001C;
-func_800105D0 = 0x800105D0;
-func_80010780 = 0x80010780;
-func_800107EC = 0x800107EC;
-func_80010854 = 0x80010854;
-func_800109E0 = 0x800109E0;
-func_80010A64 = 0x80010A64;
-func_80010ABC = 0x80010ABC;
-func_80010BD4 = 0x80010BD4;
-func_80010C44 = 0x80010C44;
-func_80010EE0 = 0x80010EE0;
-func_80010F70 = 0x80010F70;
-func_80010FC8 = 0x80010FC8;
-func_80011104 = 0x80011104;
-func_80011530 = 0x80011530;
-func_800116F4 = 0x800116F4;
-func_8001173C = 0x8001173C;
+AudioLoad_SyncLoadSimple = 0x8000FCF0;
+AudioLoad_AsyncLoadInner = 0x8000FD10;
+AudioLoad_ProcessLoads = 0x8000FFEC;
+AudioLoad_Init = 0x8001001C;
+AudioLoad_SlowLoadSample = 0x800105D0;
+AudioLoad_GetFontSample = 0x80010780;
+AudioLoad_FinishSlowLoad = 0x800107EC;
+AudioLoad_ProcessSlowLoads = 0x80010854;
+AudioLoad_DmaSlowCopy = 0x800109E0;
+AudioLoad_DmaSlowCopyUnkMedium = 0x80010A64;
+AudioLoad_StartAsyncLoad = 0x80010ABC;
+AudioLoad_ProcessAsyncLoads = 0x80010BD4;
+AudioLoad_ProcessAsyncLoad = 0x80010C44;
+AudioLoad_AsyncDma = 0x80010EE0;
+AudioLoad_AsyncDmaUnkMedium = 0x80010F70;
+AudioLoad_RelocateSample = 0x80010FC8;
+AudioLoad_RelocateFontAndPreloadSamples = 0x80011104;
+AudioLoad_ProcessSamplePreloads = 0x80011530;
+AudioLoad_AddToSampleSet = 0x800116F4;
+AudioLoad_GetSamplesForFont = 0x8001173C;
 func_80011870 = 0x80011870;
 func_80011C38 = 0x80011C38;
 func_80011CF0 = 0x80011CF0;
-func_80011D2C = 0x80011D2C;
-func_80011DDC = 0x80011DDC;
+Audio_GetInstrument = 0x80011D2C;
+Audio_GetDrum = 0x80011DDC;
 func_80011E98 = 0x80011E98;
 func_80011F2C = 0x80011F2C;
 func_80011F88 = 0x80011F88;
@@ -250,128 +250,128 @@ func_80015FB4 = 0x80015FB4;
 func_8001676C = 0x8001676C;
 func_800167E4 = 0x800167E4;
 func_8001689C = 0x8001689C;
-func_80016A30 = 0x80016A30;
-func_80016A38 = 0x80016A38;
-func_80016BA0 = 0x80016BA0;
-func_80016CBC = 0x80016CBC;
-func_80016EC4 = 0x80016EC4;
-func_80016FD0 = 0x80016FD0;
-func_8001737C = 0x8001737C;
-func_800174B0 = 0x800174B0;
-func_8001756C = 0x8001756C;
-func_800175A4 = 0x800175A4;
-func_8001761C = 0x8001761C;
-func_8001777C = 0x8001777C;
-func_800177E4 = 0x800177E4;
-func_80018310 = 0x80018310;
-func_80018338 = 0x80018338;
-func_800183B8 = 0x800183B8;
-func_8001842C = 0x8001842C;
-func_8001848C = 0x8001848C;
-func_800184F0 = 0x800184F0;
-func_80018508 = 0x80018508;
-func_800185BC = 0x800185BC;
-func_80018614 = 0x80018614;
-func_80018EB8 = 0x80018EB8;
-func_80018EFC = 0x80018EFC;
-func_80018FC0 = 0x80018FC0;
-func_80019084 = 0x80019084;
-func_80019100 = 0x80019100;
-func_80019174 = 0x80019174;
-func_800191D8 = 0x800191D8;
-func_80019234 = 0x80019234;
-func_800192AC = 0x800192AC;
-func_80019450 = 0x80019450;
-func_800197C8 = 0x800197C8;
-func_800198DC = 0x800198DC;
-func_8001A038 = 0x8001A038;
-func_8001A2AC = 0x8001A2AC;
-func_8001A3A8 = 0x8001A3A8;
-func_8001A4D4 = 0x8001A4D4;
-func_8001A51C = 0x8001A51C;
-func_8001A578 = 0x8001A578;
-func_8001A6E0 = 0x8001A6E0;
-func_8001A854 = 0x8001A854;
-func_8001A9A4 = 0x8001A9A4;
-func_8001AA08 = 0x8001AA08;
-func_8001AAAC = 0x8001AAAC;
-func_8001AB00 = 0x8001AB00;
-func_8001AB6C = 0x8001AB6C;
-func_8001ACF8 = 0x8001ACF8;
-func_8001AD1C = 0x8001AD1C;
-func_8001AD60 = 0x8001AD60;
-func_8001AE74 = 0x8001AE74;
-func_8001AE94 = 0x8001AE94;
-func_8001AEF0 = 0x8001AEF0;
-func_8001AF5C = 0x8001AF5C;
-func_8001AF6C = 0x8001AF6C;
-func_8001AFB8 = 0x8001AFB8;
-func_8001B030 = 0x8001B030;
-func_8001B470 = 0x8001B470;
-func_8001B790 = 0x8001B790;
-func_8001BA5C = 0x8001BA5C;
-func_8001BB90 = 0x8001BB90;
-func_8001BC3C = 0x8001BC3C;
-func_8001BC64 = 0x8001BC64;
-func_8001BD28 = 0x8001BD28;
-func_8001BFDC = 0x8001BFDC;
-func_8001C408 = 0x8001C408;
-func_8001C8D4 = 0x8001C8D4;
-func_8001CA40 = 0x8001CA40;
-func_8001CBB8 = 0x8001CBB8;
-func_8001CD14 = 0x8001CD14;
-func_8001CE60 = 0x8001CE60;
-func_8001CF34 = 0x8001CF34;
-func_8001CF98 = 0x8001CF98;
-func_8001CFE0 = 0x8001CFE0;
-func_8001D06C = 0x8001D06C;
-func_8001D0EC = 0x8001D0EC;
-func_8001D144 = 0x8001D144;
-func_8001D194 = 0x8001D194;
-func_8001D200 = 0x8001D200;
-func_8001D334 = 0x8001D334;
-func_8001D3D8 = 0x8001D3D8;
-func_8001D438 = 0x8001D438;
-func_8001D448 = 0x8001D448;
-func_8001D47C = 0x8001D47C;
-func_8001D4E4 = 0x8001D4E4;
-func_8001D558 = 0x8001D558;
-func_8001D670 = 0x8001D670;
-func_8001D714 = 0x8001D714;
-func_8001D7B8 = 0x8001D7B8;
-func_8001D8E0 = 0x8001D8E0;
-func_8001D92C = 0x8001D92C;
-func_8001DA18 = 0x8001DA18;
-func_8001DAC8 = 0x8001DAC8;
-func_8001DC08 = 0x8001DC08;
-func_8001DC64 = 0x8001DC64;
-func_8001DCA4 = 0x8001DCA4;
-func_8001DD04 = 0x8001DD04;
-func_8001DD4C = 0x8001DD4C;
-func_8001DD78 = 0x8001DD78;
-func_8001DDE8 = 0x8001DDE8;
-func_8001DEEC = 0x8001DEEC;
-func_8001DF9C = 0x8001DF9C;
-func_8001E020 = 0x8001E020;
-func_8001E514 = 0x8001E514;
-func_8001E7F0 = 0x8001E7F0;
-func_8001E848 = 0x8001E848;
-func_8001E898 = 0x8001E898;
-func_8001E920 = 0x8001E920;
-func_8001E978 = 0x8001E978;
-func_8001E99C = 0x8001E99C;
-func_8001E9C0 = 0x8001E9C0;
-func_8001E9F0 = 0x8001E9F0;
-func_8001EA68 = 0x8001EA68;
-func_8001EA7C = 0x8001EA7C;
-func_8001ED7C = 0x8001ED7C;
-func_8001EDE4 = 0x8001EDE4;
-func_8001EE04 = 0x8001EE04;
-func_8001EE5C = 0x8001EE5C;
-func_8001EED0 = 0x8001EED0;
-func_8001EF0C = 0x8001EF0C;
-func_8001EF30 = 0x8001EF30;
-func_8001EF40 = 0x8001EF40;
+Audio_dummy_80016A30 = 0x80016A30;
+Audio_GetSfxFalloff = 0x80016A38;
+Audio_GetSfxReverb = 0x80016BA0;
+Audio_GetSfxPan = 0x80016CBC;
+Audio_GetSfxFreqMod = 0x80016EC4;
+Audio_SetSfxProperties = 0x80016FD0;
+Audio_UpdateDopplerShift = 0x8001737C;
+Audio_LoadInstruments = 0x800174B0;
+Audio_LoadAquasSequence = 0x8001756C;
+Audio_ResetSfxChannelState = 0x800175A4;
+Audio_StartSequence = 0x8001761C;
+Audio_StopSequence = 0x8001777C;
+Audio_ProcessSeqCmd = 0x800177E4;
+Audio_QueueSeqCmd = 0x80018310;
+Audio_ProcessSeqCmds = 0x80018338;
+Audio_GetActiveSeqId = 0x800183B8;
+Audio_SeqCmdNotQueued = 0x8001842C;
+Audio_SeqCmdValueNotQueued = 0x8001848C;
+Audio_ResetSequenceRequests = 0x800184F0;
+Audio_DisableSetupOp = 0x80018508;
+Audio_SetSequenceFade = 0x800185BC;
+Audio_UpdateActiveSequences = 0x80018614;
+Audio_SetDelayedSeqCmd = 0x80018EB8;
+Audio_UpdateDelayedSeqCmds = 0x80018EFC;
+Audio_HandleReset = 0x80018FC0;
+Audio_ResetActiveSequences = 0x80019084;
+Audio_ResetActiveSequencesAndVolume = 0x80019100;
+Audio_SetSfxBanksMute = 0x80019174;
+Audio_ClearBGMMute = 0x800191D8;
+Audio_PlaySfx = 0x80019234;
+Audio_RemoveMatchingSfxRequests = 0x800192AC;
+Audio_ProcessSfxRequest = 0x80019450;
+Audio_RemoveSfxBankEntry = 0x800197C8;
+Audio_ChooseActiveSfx = 0x800198DC;
+Audio_PlayActiveSfx = 0x8001A038;
+Audio_KillSfxByBank = 0x8001A2AC;
+Audio_StopSfxByBankAndSource = 0x8001A3A8;
+Audio_KillSfxByBankAndSource = 0x8001A4D4;
+Audio_KillSfxBySource = 0x8001A51C;
+Audio_KillSfxBySourceAndId = 0x8001A578;
+Audio_KillSfxByTokenAndId = 0x8001A6E0;
+Audio_KillSfxById = 0x8001A854;
+Audio_ProcessSfxRequests = 0x8001A9A4;
+Audio_SetSfxVolumeMod = 0x8001AA08;
+Audio_UpdateSfxVolumeMod = 0x8001AAAC;
+Audio_PlayAllSfx = 0x8001AB00;
+Audio_ResetSfx = 0x8001AB6C;
+Audio_PlayVoice = 0x8001ACF8;
+Audio_PlayVoiceWithoutBGM = 0x8001AD1C;
+Audio_UpdateVoice = 0x8001AD60;
+Audio_ClearVoice = 0x8001AE74;
+Audio_GetCurrentVoice = 0x8001AE94;
+Audio_GetCurrentVoiceStatus = 0x8001AEF0;
+Audio_SetUnkVoiceParam = 0x8001AF5C;
+Audio_UpdateUnkVoiceParam = 0x8001AF6C;
+Audio_ResetPlayerFreqMods = 0x8001AFB8;
+Audio_UpdateArwingNoise = 0x8001B030;
+Audio_UpdateLandmasterNoise = 0x8001B470;
+Audio_UpdateBlueMarineNoise = 0x8001B790;
+Audio_UpdatePlayerFreqMod = 0x8001BA5C;
+Audio_UpdatePlayerReverb = 0x8001BB90;
+Audio_UpdatePlayerNoise = 0x8001BC3C;
+Audio_ResetVoicesAndPlayers = 0x8001BC64;
+Audio_ProcessPlaylist = 0x8001BD28;
+Audio_AnalyzeFrequencies = 0x8001BFDC;
+Audio_UpdateFrequencyAnalysis = 0x8001C408;
+Audio_StartPlayerNoise = 0x8001C8D4;
+Audio_StopPlayerNoise = 0x8001CA40;
+Audio_InitBombSfx = 0x8001CBB8;
+Audio_PlayBombFlightSfx = 0x8001CD14;
+Audio_PlayBombExplodeSfx = 0x8001CE60;
+Audio_StartEngineNoise = 0x8001CF34;
+Audio_StopEngineNoise = 0x8001CF98;
+Audio_SetSfxSpeedModulation = 0x8001CFE0;
+Audio_SetTransposeAndPlaySfx = 0x8001D06C;
+Audio_SetModulationAndPlaySfx = 0x8001D0EC;
+Audio_PlaySfxModulated = 0x8001D144;
+Audio_SetSfxMapModulation = 0x8001D194;
+Audio_SetHeatAlarmParams = 0x8001D200;
+Audio_PlayEventSfx = 0x8001D334;
+Audio_StopEventSfx = 0x8001D3D8;
+Audio_SetEnvSfxReverb = 0x8001D438;
+Audio_SetBgmParam = 0x8001D448;
+Audio_PlaySequence = 0x8001D47C;
+Audio_PlayFanfare = 0x8001D4E4;
+Audio_PlayDeathSequence = 0x8001D558;
+Audio_PlayPauseSfx = 0x8001D670;
+Audio_PlayMapMenuSfx = 0x8001D714;
+Audio_RestoreVolumeSettings = 0x8001D7B8;
+Audio_SetVolume = 0x8001D8E0;
+Audio_PlaySoundTest = 0x8001D92C;
+Audio_PlaySequenceDistorted = 0x8001DA18;
+Audio_PlaySoundTestTrack = 0x8001DAC8;
+Audio_FadeOutAll = 0x8001DC08;
+Audio_KillAllSfx = 0x8001DC64;
+Audio_SetVoiceLanguage = 0x8001DCA4;
+Audio_SetAudioSpec = 0x8001DD04;
+Audio_PlayBgm = 0x8001DD4C;
+Audio_InitSounds = 0x8001DD78;
+Audio_RestartSeqPlayers = 0x8001DDE8;
+Audio_StartReset = 0x8001DEEC;
+Audio_Update = 0x8001DF9C;
+AudioThread_CreateTask = 0x8001E020;
+AudioThread_ProcessGlobalCmd = 0x8001E514;
+AudioThread_SetFadeOutTimer = 0x8001E7F0;
+AudioThread_SetFadeInTimer = 0x8001E848;
+AudioThread_InitQueues = 0x8001E898;
+AudioThread_QueueCmd = 0x8001E920;
+AudioThread_QueueCmdF32 = 0x8001E978;
+AudioThread_QueueCmdS32 = 0x8001E99C;
+AudioThread_QueueCmdS8 = 0x8001E9C0;
+AudioThread_ScheduleProcessCmds = 0x8001E9F0;
+AudioThread_ResetCmdQueue = 0x8001EA68;
+AudioThread_ProcessCmds = 0x8001EA7C;
+AudioThread_GetAsyncLoadStatus = 0x8001ED7C;
+AudioThread_GetFontsForSequence = 0x8001EDE4;
+AudioThread_ResetComplete = 0x8001EE04;
+AudioThread_ResetAudioHeap = 0x8001EE5C;
+AudioThread_PreNMIReset = 0x8001EED0;
+AudioThread_Init = 0x8001EF0C;
+osDriveRomInit = 0x8001EF30;
+Mio0_Decompress = 0x8001EF40;
 func_8001EFE0 = 0x8001EFE0;
 func_8001FAB0 = 0x8001FAB0;
 func_8001FAD4 = 0x8001FAD4;
@@ -414,8 +414,8 @@ func_80020358 = 0x80020358;
 func_80020450 = 0x80020450;
 func_80020514 = 0x80020514;
 func_800205BC = 0x800205BC;
-func_800206B0 = 0x800206B0;
-func_800207F0 = 0x800207F0;
+osRecvMesg = 0x800206B0;
+osSendMesg = 0x800207F0;
 func_80020940 = 0x80020940;
 func_800209C4 = 0x800209C4;
 func_800209F0 = 0x800209F0;
@@ -429,16 +429,16 @@ func_80021558 = 0x80021558;
 func_800215D0 = 0x800215D0;
 func_80021724 = 0x80021724;
 func_80021790 = 0x80021790;
-func_80021810 = 0x80021810;
+osInvalDCache = 0x80021810;
 func_800218C0 = 0x800218C0;
 func_800219D0 = 0x800219D0;
-func_80021A40 = 0x80021A40;
+osWritebackDCacheAll = 0x80021A40;
 func_80021A70 = 0x80021A70;
 func_80021AC0 = 0x80021AC0;
 func_80021B30 = 0x80021B30;
 func_80021BF0 = 0x80021BF0;
 func_80021C60 = 0x80021C60;
-func_80021E20 = 0x80021E20;
+osCreateMesgQueue = 0x80021E20;
 func_80021E50 = 0x80021E50;
 func_80021EC0 = 0x80021EC0;
 func_80021F30 = 0x80021F30;
@@ -456,8 +456,8 @@ func_80022A9C = 0x80022A9C;
 func_80022BB0 = 0x80022BB0;
 func_80022C90 = 0x80022C90;
 func_80023130 = 0x80023130;
-func_800231C0 = 0x800231C0;
-func_80023380 = 0x80023380;
+__sinf = 0x800231C0;
+__cosf = 0x80023380;
 func_800234F0 = 0x800234F0;
 func_80023500 = 0x80023500;
 func_800235E0 = 0x800235E0;
@@ -483,12 +483,12 @@ func_80024190 = 0x80024190;
 func_80024800 = 0x80024800;
 func_80024E50 = 0x80024E50;
 func_80024E80 = 0x80024E80;
-func_80024E90 = 0x80024E90;
-func_80024FF0 = 0x80024FF0;
-func_800250E0 = 0x800250E0;
-func_800251C0 = 0x800251C0;
-func_800251D0 = 0x800251D0;
-func_80025280 = 0x80025280;
+osAiSetFrequency = 0x80024E90;
+osCartRomInit = 0x80024FF0;
+osEPiStartDma = 0x800250E0;
+osAiGetLength = 0x800251C0;
+osAiSetNextBuffer = 0x800251D0;
+osGetCount = 0x80025280;
 func_80025290 = 0x80025290;
 func_80025340 = 0x80025340;
 func_80025390 = 0x80025390;
@@ -663,7 +663,7 @@ func_8002E83C = 0x8002E83C;
 func_8002EE9C = 0x8002EE9C;
 func_8002EF70 = 0x8002EF70;
 func_8002EFA0 = 0x8002EFA0;
-func_8002F2BC = 0x8002F2BC;
+ActorAllRange_SpawnTeam = 0x8002F2BC;
 func_8002F51C = 0x8002F51C;
 func_8002F730 = 0x8002F730;
 func_8002F794 = 0x8002F794;
@@ -838,11 +838,11 @@ func_80057484 = 0x80057484;
 func_80057794 = 0x80057794;
 func_80057844 = 0x80057844;
 func_80057C80 = 0x80057C80;
-func_80058B10 = 0x80058B10;
-func_80058BD8 = 0x80058BD8;
-func_80058EA4 = 0x80058EA4;
+Load_RomFile = 0x80058B10;
+Load_SceneFiles = 0x80058BD8;
+Load_SceneSetup = 0x80058EA4;
 func_80059428 = 0x80059428;
-func_80059470 = 0x80059470;
+Load_SetTextLanguage = 0x80059470;
 func_80059530 = 0x80059530;
 func_80059610 = 0x80059610;
 func_800596F0 = 0x800596F0;
@@ -1398,8 +1398,8 @@ func_8009B6AC = 0x8009B6AC;
 func_8009B6E8 = 0x8009B6E8;
 func_8009C11C = 0x8009C11C;
 func_8009C154 = 0x8009C154;
-func_8009C5FC = 0x8009C5FC;
-func_8009C708 = 0x8009C708;
+Math_SmoothStepToF = 0x8009C5FC;
+Math_SmoothStepToAngle = 0x8009C708;
 func_8009C8BC = 0x8009C8BC;
 func_8009CAF4 = 0x8009CAF4;
 func_8009CCF0 = 0x8009CCF0;
@@ -1409,7 +1409,7 @@ func_8009D70C = 0x8009D70C;
 func_8009DA8C = 0x8009DA8C;
 func_8009DDE8 = 0x8009DDE8;
 func_8009E09C = 0x8009E09C;
-func_8009E364 = 0x8009E364;
+Lib_TextureRect_IA8 = 0x8009E364;
 func_8009E61C = 0x8009E61C;
 func_8009E8E4 = 0x8009E8E4;
 func_8009EBB8 = 0x8009EBB8;
@@ -1419,7 +1419,7 @@ func_8009F408 = 0x8009F408;
 func_8009F6D4 = 0x8009F6D4;
 func_8009F9AC = 0x8009F9AC;
 func_8009FC90 = 0x8009FC90;
-func_8009FF44 = 0x8009FF44;
+Graphics_FillRectangle = 0x8009FF44;
 func_800A009C = 0x800A009C;
 func_800A0138 = 0x800A0138;
 func_800A0184 = 0x800A0184;
@@ -1432,15 +1432,15 @@ func_800A1A04 = 0x800A1A04;
 func_800A1B58 = 0x800A1B58;
 func_800A1B70 = 0x800A1B70;
 func_800A1EC0 = 0x800A1EC0;
-func_800A1F90 = 0x800A1F90;
-func_800A217C = 0x800A217C;
-func_800A2224 = 0x800A2224;
-func_800A2478 = 0x800A2478;
+Game_SetGameState = 0x800A1F90;
+Game_ChangeScene = 0x800A217C;
+Game_InitMasterDL = 0x800A2224;
+Game_InitStandbyDL = 0x800A2478;
 func_800A2554 = 0x800A2554;
-func_800A25C0 = 0x800A25C0;
-func_800A2AEC = 0x800A2AEC;
-func_800A2BEC = 0x800A2BEC;
-func_800A2CE0 = 0x800A2CE0;
+Game_InitViewport = 0x800A25C0;
+Game_Draw = 0x800A2AEC;
+Game_SetScene = 0x800A2BEC;
+Game_Update = 0x800A2CE0;
 func_800A3CC4 = 0x800A3CC4;
 func_800A3D50 = 0x800A3D50;
 func_800A3DBC = 0x800A3DBC;
@@ -1451,8 +1451,8 @@ func_800A4610 = 0x800A4610;
 func_800A4670 = 0x800A4670;
 func_800A4684 = 0x800A4684;
 func_800A46AC = 0x800A46AC;
-func_800A4B20 = 0x800A4B20;
-func_800A4D60 = 0x800A4D60;
+Player_WingEffects = 0x800A4B20;
+Player_DamageEffects = 0x800A4D60;
 func_800A5300 = 0x800A5300;
 func_800A560C = 0x800A560C;
 func_800A563C = 0x800A563C;
@@ -1460,18 +1460,18 @@ func_800A59F0 = 0x800A59F0;
 func_800A59F8 = 0x800A59F8;
 func_800A5C70 = 0x800A5C70;
 func_800A5EA0 = 0x800A5EA0;
-func_800A5F04 = 0x800A5F04;
-func_800A600C = 0x800A600C;
+Play_Setup = 0x800A5F04;
+Play_InitEnvironment = 0x800A600C;
 func_800A642C = 0x800A642C;
-func_800A657C = 0x800A657C;
+Play_SetupStarfield = 0x800A657C;
 func_800A6660 = 0x800A6660;
 func_800A66E8 = 0x800A66E8;
 func_800A6730 = 0x800A6730;
 func_800A6778 = 0x800A6778;
 func_800A67A8 = 0x800A67A8;
 func_800A67D8 = 0x800A67D8;
-func_800A6808 = 0x800A6808;
-func_800A6C50 = 0x800A6C50;
+Play_ClearObjectData = 0x800A6808;
+Play_UpdateFillScreen = 0x800A6C50;
 func_800A6D4C = 0x800A6D4C;
 func_800A6DCC = 0x800A6DCC;
 func_800A70B8 = 0x800A70B8;
@@ -1489,12 +1489,12 @@ func_800A8EC4 = 0x800A8EC4;
 func_800A8F3C = 0x800A8F3C;
 func_800A9264 = 0x800A9264;
 func_800AAEBC = 0x800AAEBC;
-func_800AB968 = 0x800AB968;
+Player_InitializeAll = 0x800AB968;
 func_800AB9C0 = 0x800AB9C0;
-func_800AB9F0 = 0x800AB9F0;
-func_800AC020 = 0x800AC020;
+Play_InitLevel = 0x800AB9F0;
+Player_ResetVsData = 0x800AC020;
 func_800AC0C4 = 0x800AC0C4;
-func_800AC170 = 0x800AC170;
+Play_Init = 0x800AC170;
 func_800AC95C = 0x800AC95C;
 func_800ACD1C = 0x800ACD1C;
 func_800AD10C = 0x800AD10C;
@@ -1508,8 +1508,8 @@ func_800ADEBC = 0x800ADEBC;
 func_800AE0F4 = 0x800AE0F4;
 func_800AE464 = 0x800AE464;
 func_800AE624 = 0x800AE624;
-func_800AE944 = 0x800AE944;
-func_800AEB70 = 0x800AEB70;
+Player_CheckBounds360 = 0x800AE944;
+Player_MoveArwing360 = 0x800AEB70;
 func_800AF3AC = 0x800AF3AC;
 func_800AF77C = 0x800AF77C;
 func_800B005C = 0x800B005C;
@@ -1531,7 +1531,7 @@ func_800B4920 = 0x800B4920;
 func_800B49E4 = 0x800B49E4;
 func_800B4BF8 = 0x800B4BF8;
 func_800B4E2C = 0x800B4E2C;
-func_800B4FE4 = 0x800B4FE4;
+Player_Update = 0x800B4FE4;
 func_800B5DE4 = 0x800B5DE4;
 func_800B6458 = 0x800B6458;
 func_800B66E4 = 0x800B66E4;
@@ -1542,12 +1542,12 @@ func_800B7678 = 0x800B7678;
 func_800B78AC = 0x800B78AC;
 func_800B790C = 0x800B790C;
 func_800B7B08 = 0x800B7B08;
-func_800B80D8 = 0x800B80D8;
-func_800B8A54 = 0x800B8A54;
+Play_UpdateLevel = 0x800B80D8;
+Play_Update = 0x800B8A54;
 func_800B8C54 = 0x800B8C54;
 func_800B8DCC = 0x800B8DCC;
-func_800B8DF4 = 0x800B8DF4;
-func_800B9500 = 0x800B9500;
+Play_Main = 0x800B8DF4;
+RCP_SetupDL = 0x800B9500;
 func_800B9544 = 0x800B9544;
 func_800B9648 = 0x800B9648;
 func_800B9678 = 0x800B9678;
@@ -1562,7 +1562,7 @@ func_800B99C8 = 0x800B99C8;
 func_800B99F8 = 0x800B99F8;
 func_800B9A28 = 0x800B9A28;
 func_800B9A58 = 0x800B9A58;
-func_800B9A88 = 0x800B9A88;
+RCP_SetupDL_36 = 0x800B9A88;
 func_800B9AB8 = 0x800B9AB8;
 func_800B9BD0 = 0x800B9BD0;
 func_800B9C00 = 0x800B9C00;
@@ -1687,14 +1687,14 @@ func_800C34B4 = 0x800C34B4;
 func_800C34E8 = 0x800C34E8;
 func_800C367C = 0x800C367C;
 func_800C38C8 = 0x800C38C8;
-func_800C3ABC = 0x800C3ABC;
+Message_IsPrintingChar = 0x800C3ABC;
 func_800C3B40 = 0x800C3B40;
-func_800C3C14 = 0x800C3C14;
-func_800C3D24 = 0x800C3D24;
-D_800C41A0 = 0x800C41A0;
-D_800C41F0 = 0x800C41F0;
-D_800C4630 = 0x800C4630;
-D_800C4860 = 0x800C4860;
+Save_Write = 0x800C3C14;
+Save_Read = 0x800C3D24;
+gSampleBankTableInit = 0x800C41A0;
+gSeqTableInit = 0x800C41F0;
+gSoundFontTableInit = 0x800C4630;
+gSeqFontTableInit = 0x800C4860;
 D_800C5180 = 0x800C5180;
 D_800C51D0 = 0x800C51D0;
 D_800C51E0 = 0x800C51E0;
@@ -1722,44 +1722,44 @@ D_800C6120 = 0x800C6120;
 D_800C63EC = 0x800C63EC;
 D_800C6500 = 0x800C6500;
 D_800C6520 = 0x800C6520;
-D_800C68E0 = 0x800C68E0;
-D_800C68FC = 0x800C68FC;
-D_800C6918 = 0x800C6918;
-D_800C691C = 0x800C691C;
-D_800C6920 = 0x800C6920;
-D_800C6924 = 0x800C6924;
-D_800C6928 = 0x800C6928;
-D_800C6934 = 0x800C6934;
-D_800C693C = 0x800C693C;
-D_800C6940 = 0x800C6940;
-D_800C6944 = 0x800C6944;
-D_800C6948 = 0x800C6948;
-D_800C694C = 0x800C694C;
-D_800C6950 = 0x800C6950;
-D_800C6954 = 0x800C6954;
-D_800C6958 = 0x800C6958;
-D_800C6960 = 0x800C6960;
-D_800C6964 = 0x800C6964;
-D_800C6968 = 0x800C6968;
-D_800C696C = 0x800C696C;
-D_800C6A38 = 0x800C6A38;
-D_800C6A58 = 0x800C6A58;
+sChannelsPerBank = 0x800C68E0;
+sUsedChannelsPerBank = 0x800C68FC;
+sSfxRequestWriteIndex = 0x800C6918;
+sSfxRequestReadIndex = 0x800C691C;
+sSfxChannelLayout = 0x800C6920;
+sChannelMuteFlags = 0x800C6924;
+gDefaultSfxSource = 0x800C6928;
+gDefaultMod = 0x800C6934;
+gDefaultReverb = 0x800C693C;
+sAudioFrameCounter = 0x800C6940;
+sSeqCmdWritePos = 0x800C6944;
+sSeqCmdReadPos = 0x800C6948;
+sStartSeqDisabled = 0x800C694C;
+sSoundModeList = 0x800C6950;
+sAudioSpecId = 0x800C6954;
+sAudioResetStatus = 0x800C6958;
+sEnvReverb = 0x800C6960;
+sAudioSpecReverb = 0x800C6964;
+sVolumeSettings = 0x800C6968;
+sAudioSpecInstrumentSets = 0x800C696C;
+sAudioSpecReverbAdd = 0x800C6A38;
+sPlayerNoiseTimes = 0x800C6A58;
 D_800C6A70 = 0x800C6A70;
-D_800C6A74 = 0x800C6A74;
-D_800C6A78 = 0x800C6A78;
-D_800C6A7C = 0x800C6A7C;
-D_800C6A80 = 0x800C6A80;
-D_800C6A84 = 0x800C6A84;
-D_800C6A88 = 0x800C6A88;
-D_800C6A8C = 0x800C6A8C;
-D_800C6AE8 = 0x800C6AE8;
-D_800C6BF8 = 0x800C6BF8;
+sSfxFreqMod = 0x800C6A74;
+sSfxVolMod = 0x800C6A78;
+sPlaylistIndex = 0x800C6A7C;
+sPlaylistTimer = 0x800C6A80;
+sPlaylistCmdIndex = 0x800C6A84;
+gVoiceLanguage = 0x800C6A88;
+sEventSfx = 0x800C6A8C;
+sSoundTestTracks = 0x800C6AE8;
+sPlaylists = 0x800C6BF8;
 D_800C6C00 = 0x800C6C00;
-D_800C7F88 = 0x800C7F88;
-D_800C7F8C = 0x800C7F8C;
-D_800C7F90 = 0x800C7F90;
-D_800C7F94 = 0x800C7F94;
-D_800C7F98 = 0x800C7F98;
+sNextVoiceId = 0x800C7F88;
+sCurrentVoiceId = 0x800C7F8C;
+sSetNextVoiceId = 0x800C7F90;
+sUnkVoiceParam = 0x800C7F94;
+sMuteBgmForVoice = 0x800C7F98;
 D_800C7F9C = 0x800C7F9C;
 D_800C801C = 0x800C801C;
 D_800C8020 = 0x800C8020;
@@ -1792,25 +1792,25 @@ D_800C8268 = 0x800C8268;
 D_800C8278 = 0x800C8278;
 D_800C8288 = 0x800C8288;
 D_800C8298 = 0x800C8298;
-D_800C82C8 = 0x800C82C8;
-D_800C883C = 0x800C883C;
-D_800C8840 = 0x800C8840;
-D_800C8844 = 0x800C8844;
-D_800C8848 = 0x800C8848;
-D_800C884C = 0x800C884C;
-D_800C8850 = 0x800C8850;
-D_800C8854 = 0x800C8854;
-D_800C8860 = 0x800C8860;
-D_800C8864 = 0x800C8864;
-D_800C8868 = 0x800C8868;
-D_800C886C = 0x800C886C;
-D_800C8870 = 0x800C8870;
-D_800C8874 = 0x800C8874;
+gAudioSpecs = 0x800C82C8;
+gSeqTicksPerBeat = 0x800C883C;
+gAudioHeapSize = 0x800C8840;
+gInitPoolSize = 0x800C8844;
+gPermanentPoolSize = 0x800C8848;
+gSequenceMedium = 0x800C884C;
+gSoundFontMedium = 0x800C8850;
+gSampleBankMedium = 0x800C8854;
+gThreadCmdWritePos = 0x800C8860;
+gThreadCmdReadPos = 0x800C8864;
+gAudioTaskStartQueue = 0x800C8868;
+gThreadCmdProcQueue = 0x800C886C;
+gAudioSpecQueue = 0x800C8870;
+gAudioResetQueue = 0x800C8874;
 D_800C8878 = 0x800C8878;
 D_800C887C = 0x800C887C;
 D_800C8884 = 0x800C8884;
-D_800C8888 = 0x800C8888;
-D_800C888C = 0x800C888C;
+gCurCmdReadPos = 0x800C8888;
+gThreadCmdQueueFinished = 0x800C888C;
 D_800C8890 = 0x800C8890;
 D_800C88D0 = 0x800C88D0;
 D_800C88E0 = 0x800C88E0;
@@ -1992,34 +1992,34 @@ D_800CAF94 = 0x800CAF94;
 D_800CAF98 = 0x800CAF98;
 D_800CAF9C = 0x800CAF9C;
 D_800CAFAC = 0x800CAFAC;
-D_800CAFC0 = 0x800CAFC0;
-D_800CAFC4 = 0x800CAFC4;
-D_800CB05C = 0x800CB05C;
-D_800CB3EC = 0x800CB3EC;
-D_800CB484 = 0x800CB484;
-D_800CB64C = 0x800CB64C;
-D_800CB814 = 0x800CB814;
-D_800CB8AC = 0x800CB8AC;
-D_800CB944 = 0x800CB944;
-D_800CBA74 = 0x800CBA74;
-D_800CBE04 = 0x800CBE04;
-D_800CBF34 = 0x800CBF34;
-D_800CBFCC = 0x800CBFCC;
-D_800CC064 = 0x800CC064;
-D_800CC0FC = 0x800CC0FC;
-D_800CC22C = 0x800CC22C;
-D_800CC2C4 = 0x800CC2C4;
-D_800CC35C = 0x800CC35C;
-D_800CC3F4 = 0x800CC3F4;
-D_800CC48C = 0x800CC48C;
-D_800CC524 = 0x800CC524;
-D_800CC5BC = 0x800CC5BC;
-D_800CC6EC = 0x800CC6EC;
-D_800CC784 = 0x800CC784;
-D_800CC81C = 0x800CC81C;
-D_800CC8B4 = 0x800CC8B4;
-D_800CC9E4 = 0x800CC9E4;
-D_800CCA7C = 0x800CCA7C;
+sFillTimer = 0x800CAFC0;
+sNoOvl_Logo = 0x800CAFC4;
+sOvlending_Ending = 0x800CB05C;
+sOvlmenu_Title = 0x800CB3EC;
+sOvlmenu_Option = 0x800CB484;
+sOvlmenu_Map = 0x800CB64C;
+sOvlmenu_GameOver = 0x800CB814;
+sOvli1_Corneria = 0x800CB8AC;
+sOvli2_Meteo = 0x800CB944;
+sOvli5_Titania = 0x800CBA74;
+sOvli2_SectorX = 0x800CBE04;
+sOvli4_SectorZ = 0x800CBF34;
+sOvli3_Aquas = 0x800CBFCC;
+sOvli3_Area6 = 0x800CC064;
+sOvli4_Fortuna = 0x800CC0FC;
+sOvli3_Unk4 = 0x800CC22C;
+sOvli6_SectorY = 0x800CC2C4;
+sOvli3_Solar = 0x800CC35C;
+sOvli3_Zoness = 0x800CC3F4;
+sOvli1_Venom1 = 0x800CC48C;
+sOvli6_Andross = 0x800CC524;
+sOvli6_Venom2 = 0x800CC5BC;
+sOvli2_Setup20 = 0x800CC6EC;
+sOvli4_Bolse = 0x800CC784;
+sOvli4_Katina = 0x800CC81C;
+sOvli5_Macbeth = 0x800CC8B4;
+sOvli1_Training = 0x800CC9E4;
+sOvli2_Versus = 0x800CCA7C;
 D_800CCC44 = 0x800CCC44; //size:0x98
 D_800CCCDC = 0x800CCCDC;
 D_800CCCE0 = 0x800CCCE0;
@@ -2253,7 +2253,7 @@ D_800D4250 = 0x800D4250;
 D_800D4254 = 0x800D4254;
 D_800D4258 = 0x800D4258;
 D_800D425C = 0x800D425C;
-D_800D4260 = 0x800D4260;
+sVoiceVolume = 0x800D4260;
 D_800D4264 = 0x800D4264;
 D_800D4268 = 0x800D4268;
 D_800D426C = 0x800D426C;
@@ -2340,7 +2340,7 @@ D_800D5980 = 0x800D5980;
 D_800D5A10 = 0x800D5A10;
 D_800D5AA0 = 0x800D5AA0;
 D_800D5B78 = 0x800D5B78;
-D_800D5D70 = 0x800D5D70;
+gRadioMsgPri = 0x800D5D70;
 D_800D5D74 = 0x800D5D74;
 D_800D5D78 = 0x800D5D78;
 D_800D5D80 = 0x800D5D80;
@@ -2397,7 +2397,7 @@ D_800D608C = 0x800D608C;
 D_800D609C = 0x800D609C;
 D_800D60AC = 0x800D60AC;
 D_800D60BC = 0x800D60BC;
-D_800D60D0 = 0x800D60D0;
+gDefaultSave = 0x800D60D0;
 D_800DA910 = 0x800DA910;
 D_Gfx_800D94D0 = 0x800DA940;
 D_800DA958 = 0x800DA958;
@@ -2451,7 +2451,7 @@ D_800DFA20 = 0x800DFA20;
 D_800DFA21 = 0x800DFA21;
 D_800DFA22 = 0x800DFA22;
 D_800DFA23 = 0x800DFA23;
-D_800DFA24 = 0x800DFA24;
+gControllerLock = 0x800DFA24;
 D_800DFA28 = 0x800DFA28;
 D_800DFA29 = 0x800DFA29;
 D_800DFA2A = 0x800DFA2A;
@@ -2519,14 +2519,14 @@ D_80138E14 = 0x80138E14;
 D_80138E18 = 0x80138E18;
 D_80138E1C = 0x80138E1C;
 D_80138E20 = 0x80138E20;
-D_80138E24 = 0x80138E24;
+gMasterDisp = 0x80138E24;
 D_80138E28 = 0x80138E28;
 D_80138E2C = 0x80138E2C;
 D_80138E30 = 0x80138E30;
-D_80138E34 = 0x80138E34;
+gVIsPerFrame = 0x80138E34;
 D_80138E38 = 0x80138E38;
 D_80138E3C = 0x80138E3C;
-D_80138E3D = 0x80138E3D;
+gStopTasks = 0x80138E3D;
 D_80138E40 = 0x80138E40;
 D_80138E41 = 0x80138E41;
 D_80138E42 = 0x80138E42;
@@ -2545,7 +2545,7 @@ D_8013D520 = 0x8013D520;
 D_8013D524 = 0x8013D524;
 D_8013D530 = 0x8013D530;
 D_8013D538 = 0x8013D538;
-D_8013DD38 = 0x8013DD38;
+gCalcMatrix = 0x8013DD38;
 D_8013DD40 = 0x8013DD40;
 D_8013E540 = 0x8013E540;
 D_80146D40 = 0x80146D40;
@@ -2571,171 +2571,171 @@ D_80148ED8 = 0x80148ED8;
 D_80148EDC = 0x80148EDC;
 D_80148EE0 = 0x80148EE0;
 D_80148EF0 = 0x80148EF0;
-D_80148F00 = 0x80148F00;
+gSlowLoads = 0x80148F00;
 D_80148FC0 = 0x80148FC0;
-D_80148FD0 = 0x80148FD0;
-D_8014A7D0 = 0x8014A7D0;
-D_8014BA90 = 0x8014BA90;
-D_8014BA98 = 0x8014BA98;
-D_8014BAA0 = 0x8014BAA0;
-D_8014BAA8 = 0x8014BAA8;
-D_8014BBE8 = 0x8014BBE8;
-D_8014BBEC = 0x8014BBEC;
-D_8014BBF8 = 0x8014BBF8;
-D_8014BC48 = 0x8014BC48;
-D_8014C048 = 0x8014C048;
-D_8014C448 = 0x8014C448;
-D_8014CA48 = 0x8014CA48;
-D_8014CAC8 = 0x8014CAC8;
-D_8014CAF0 = 0x8014CAF0;
-D_8014CB10 = 0x8014CB10;
-D_8014CB18 = 0x8014CB18;
-D_8014CF18 = 0x8014CF18;
+sSfxRequests = 0x80148FD0;
+sSfxBanks = 0x8014A7D0;
+sSfxBankListEnd = 0x8014BA90;
+sSfxBankFreeListStart = 0x8014BA98;
+sSfxBankUnused = 0x8014BAA0;
+sActiveSfx = 0x8014BAA8;
+sCurSfxPlayerChannelIndex = 0x8014BBE8;
+sSfxBankMuted = 0x8014BBEC;
+sSfxVolumeMods = 0x8014BBF8;
+sAudioAnalyzerData = 0x8014BC48;
+sAnalyzerBuffer1 = 0x8014C048;
+sAnalyzerBuffer2 = 0x8014C448;
+sNewFreqAmplitudes = 0x8014CA48;
+sSeqRequests = 0x8014CAC8;
+sFreqAnalyzerBars = 0x8014CAF0;
+sNumSeqRequests = 0x8014CB10;
+sAudioSeqCmds = 0x8014CB18;
+sActiveSequences = 0x8014CF18;
 D_8014D160 = 0x8014D160;
-D_8014D878 = 0x8014D878;
-D_8014D880 = 0x8014D880;
-D_8014D900 = 0x8014D900;
-D_8014D9C0 = 0x8014D9C0;
-D_8014DB80 = 0x8014DB80;
-D_8014DB90 = 0x8014DB90;
-D_8014DB94 = 0x8014DB94;
-D_8014DB98 = 0x8014DB98;
-D_8014DBB0 = 0x8014DBB0;
-D_8014DBC0 = 0x8014DBC0;
+sDelayedSeqCmdFlags = 0x8014D878;
+sDelayedSeqCmds = 0x8014D880;
+sSfxChannelState = 0x8014D900;
+sPlayerNoise = 0x8014D9C0;
+sBombFreqMod = 0x8014DB80;
+sBombType = 0x8014DB90;
+sBombState = 0x8014DB94;
+sBombStartFrame = 0x8014DB98;
+gAudioContextStart = 0x8014DBB0;
+gSynthReverbs = 0x8014DBC0;
 D_8014E310 = 0x8014E310;
 D_8014E320 = 0x8014E320;
 D_8014E322 = 0x8014E322;
-D_8014E323 = 0x8014E323;
+gNumSynthReverbs = 0x8014E323;
 D_8014E324 = 0x8014E324;
-D_8014E328 = 0x8014E328;
-D_8014E330 = 0x8014E330;
+gNoteSubsEu = 0x8014E328;
+gSessionPool = 0x8014E330;
 D_8014E338 = 0x8014E338;
-D_8014E340 = 0x8014E340;
-D_8014E350 = 0x8014E350;
-D_8014E380 = 0x8014E380;
-D_8014E390 = 0x8014E390;
-D_8014E3A0 = 0x8014E3A0;
-D_8014E3B0 = 0x8014E3B0;
+gInitPool = 0x8014E340;
+gMiscPool = 0x8014E350;
+gCachePool = 0x8014E380;
+gPersistentCommonPool = 0x8014E390;
+gTemporaryCommonPool = 0x8014E3A0;
+gSeqCache = 0x8014E3B0;
 D_8014E3B4 = 0x8014E3B4;
 D_8014E544 = 0x8014E544;
 D_8014E548 = 0x8014E548;
-D_8014E580 = 0x8014E580;
+gFontCache = 0x8014E580;
 D_8014E584 = 0x8014E584;
 D_8014E714 = 0x8014E714;
 D_8014E718 = 0x8014E718;
 D_8014E732 = 0x8014E732;
 D_8014E73E = 0x8014E73E;
-D_8014E750 = 0x8014E750;
+gSampleBankCache = 0x8014E750;
 D_8014E754 = 0x8014E754;
 D_8014E8E4 = 0x8014E8E4;
 D_8014E8E8 = 0x8014E8E8;
-D_8014E920 = 0x8014E920;
+gPermanentPool = 0x8014E920;
 D_8014E92C = 0x8014E92C;
-D_8014EAB0 = 0x8014EAB0;
+gPersistentSampleCache = 0x8014EAB0;
 D_8014EAB8 = 0x8014EAB8;
 D_8014EAC0 = 0x8014EAC0;
 D_8014EFC0 = 0x8014EFC0;
-D_8014EFC8 = 0x8014EFC8;
+gTemporarySampleCache = 0x8014EFC8;
 D_8014EFCC = 0x8014EFCC;
 D_8014EFD0 = 0x8014EFD0;
 D_8014F4D8 = 0x8014F4D8;
-D_8014F4E0 = 0x8014F4E0;
-D_8014F4F0 = 0x8014F4F0;
-D_8014F4F8 = 0x8014F4F8;
-D_8014F508 = 0x8014F508;
-D_8014F518 = 0x8014F518;
-D_8014F558 = 0x8014F558;
-D_8014F598 = 0x8014F598;
-D_8014F698 = 0x8014F698;
-D_8014F699 = 0x8014F699;
-D_8014F69C = 0x8014F69C;
-D_801506A0 = 0x801506A0;
-D_801506A8 = 0x801506A8;
+gSessionPoolSplit = 0x8014F4E0;
+gCachePoolSplit = 0x8014F4F0;
+gPersistentCommonPoolSplit = 0x8014F4F8;
+gTemporaryCommonPoolSplit = 0x8014F508;
+gSampleFontLoadStatus = 0x8014F518;
+gFontLoadStatus = 0x8014F558;
+gSeqLoadStatus = 0x8014F598;
+gAudioResetStep = 0x8014F698;
+gAudioSpecId = 0x8014F699;
+gResetFadeoutFramesLeft = 0x8014F69C;
+gNotes = 0x801506A0;
+gSeqPlayers = 0x801506A8;
 D_80150740 = 0x80150740;
 D_801507F4 = 0x801507F4;
 D_80150940 = 0x80150940;
 D_80150974 = 0x80150974;
 D_80150A8C = 0x80150A8C;
 D_80150AFC = 0x80150AFC;
-D_80150BD8 = 0x80150BD8;
-D_80153158 = 0x80153158;
+gSeqChannels = 0x80150BD8;
+gSeqLayers = 0x80153158;
 D_801531C4 = 0x801531C4;
 D_80153758 = 0x80153758;
 D_801537B8 = 0x801537B8;
 D_80153AAE = 0x80153AAE;
-D_80155158 = 0x80155158;
+gSeqChannelNone = 0x80155158;
 D_801551C4 = 0x801551C4;
-D_80155220 = 0x80155220;
-D_80155230 = 0x80155230;
+gLayerFreeList = 0x80155220;
+gNoteFreeLists = 0x80155230;
 D_80155240 = 0x80155240;
 D_80155250 = 0x80155250;
 D_80155260 = 0x80155260;
-D_80155270 = 0x80155270;
-D_80155470 = 0x80155470;
-D_80155E70 = 0x80155E70;
-D_80155E74 = 0x80155E74;
-D_80155E78 = 0x80155E78;
-D_801563B8 = 0x801563B8;
-D_801563D0 = 0x801563D0;
-D_80156410 = 0x80156410;
-D_80156428 = 0x80156428;
-D_80156468 = 0x80156468;
-D_80156480 = 0x80156480;
-D_80156580 = 0x80156580;
-D_80156B80 = 0x80156B80;
-D_80156B98 = 0x80156B98;
-D_80156BA0 = 0x80156BA0;
-D_80156BB8 = 0x80156BB8;
-D_80157BB8 = 0x80157BB8;
-D_80157BBC = 0x80157BBC;
+gUsedSamples = 0x80155270;
+gPreloadSampleStack = 0x80155470;
+gNumUsedSamples = 0x80155E70;
+gPreloadSampleStackTop = 0x80155E74;
+gAsyncLoads = 0x80155E78;
+gExternalLoadQueue = 0x801563B8;
+gExternalLoadMsg = 0x801563D0;
+gPreloadSampleQueue = 0x80156410;
+gPreloadSampleMsg = 0x80156428;
+gCurAudioFrameDmaQueue = 0x80156468;
+gCurAudioFrameDmaMsg = 0x80156480;
+gCurAudioFrameDmaIoMsgBuf = 0x80156580;
+gSyncDmaQueue = 0x80156B80;
+gSyncDmaMsg = 0x80156B98;
+gSyncDmaIoMsg = 0x80156BA0;
+gSampleDmas = 0x80156BB8;
+gSampleDmaCount = 0x80157BB8;
+gSampleDmaListSize1 = 0x80157BBC;
 D_80157BC0 = 0x80157BC0;
-D_80157BC8 = 0x80157BC8;
-D_80157CC8 = 0x80157CC8;
-D_80157DC8 = 0x80157DC8;
-D_80157DC9 = 0x80157DC9;
-D_80157DCA = 0x80157DCA;
-D_80157DCB = 0x80157DCB;
-D_80157DCC = 0x80157DCC;
-D_80157DD0 = 0x80157DD0;
-D_80157DD4 = 0x80157DD4;
-D_80157DD8 = 0x80157DD8;
-D_80157DDC = 0x80157DDC;
-D_80157DE0 = 0x80157DE0;
-D_80157DE8 = 0x80157DE8;
+gSampleDmaReuseQueue1 = 0x80157BC8;
+gSampleDmaReuseQueue2 = 0x80157CC8;
+gSampleDmaReuseQueue1RdPos = 0x80157DC8;
+gSampleDmaReuseQueue2RdPos = 0x80157DC9;
+gSampleDmaReuseQueue1WrPos = 0x80157DCA;
+gSampleDmaReuseQueue2WrPos = 0x80157DCB;
+gSequenceTable = 0x80157DCC;
+gSoundFontTable = 0x80157DD0;
+gSampleBankTable = 0x80157DD4;
+gSeqFontTable = 0x80157DD8;
+gNumSequences = 0x80157DDC;
+gSoundFontList = 0x80157DE0;
+gAudioBufferParams = 0x80157DE8;
 D_80157DF2 = 0x80157DF2;
 D_80157E00 = 0x80157E00;
 D_80157E04 = 0x80157E04;
-D_80157E08 = 0x80157E08;
-D_80157E0C = 0x80157E0C;
-D_80157E10 = 0x80157E10;
-D_80157E14 = 0x80157E14;
-D_80157E16 = 0x80157E16;
-D_80157E18 = 0x80157E18;
-D_80157E1C = 0x80157E1C;
-D_80157E20 = 0x80157E20;
-D_80157E24 = 0x80157E24;
-D_80157E28 = 0x80157E28;
-D_80157E30 = 0x80157E30;
-D_80157E34 = 0x80157E34;
-D_80157E38 = 0x80157E38;
-D_80157ED8 = 0x80157ED8;
-D_80157EDC = 0x80157EDC;
-D_80157EE0 = 0x80157EE0;
-D_80157EEC = 0x80157EEC;
+gSampleDmaBuffSize = 0x80157E08;
+gMaxAudioCmds = 0x80157E0C;
+gNumNotes = 0x80157E10;
+gMaxTempo = 0x80157E14;
+gAudioSoundMode = 0x80157E16;
+gAudioTaskCountQ = 0x80157E18;
+gCurAudioFrameDmaCount = 0x80157E1C;
+gAudioTaskIndexQ = 0x80157E20;
+gCurAiBuffIndex = 0x80157E24;
+gAbiCmdBuffs = 0x80157E28;
+gCurAbiCmdBuffer = 0x80157E30;
+gAudioCurTask = 0x80157E34;
+gAudioRspTasks = 0x80157E38;
+gMaxTempoTvTypeFactors = 0x80157ED8;
+gRefreshRate = 0x80157EDC;
+gAiBuffers = 0x80157EE0;
+gAiBuffLengths = 0x80157EEC;
 D_80157EF2 = 0x80157EF2;
-D_80157EF4 = 0x80157EF4;
+gAudioRandom = 0x80157EF4;
 D_80157EF8 = 0x80157EF8;
-D_80157EFC = 0x80157EFC;
-D_80157F00 = 0x80157F00;
+gAudioResetTimer = 0x80157EFC;
+gAudioContextEnd = 0x80157F00;
 D_80157F10 = 0x80157F10;
 D_80157F28 = 0x80157F28;
 D_80157F40 = 0x80157F40;
 D_80157F58 = 0x80157F58;
-D_80157F70 = 0x80157F70;
-D_80158770 = 0x80158770;
-D_80158778 = 0x80158778;
-D_80158788 = 0x80158788;
-D_8015878C = 0x8015878C;
+gThreadCmdBuffer = 0x80157F70;
+sAudioTaskStartMsg = 0x80158770;
+sThreadCmdProcMsg = 0x80158778;
+sAudioSpecMsg = 0x80158788;
+sAudioResetMsg = 0x8015878C;
 D_80158790 = 0x80158790;
 D_801587CC = 0x801587CC;
 D_801587D0 = 0x801587D0;
@@ -3002,13 +3002,13 @@ D_80163B8C = 0x80163B8C;
 D_80163B90 = 0x80163B90;
 D_80163B94 = 0x80163B94;
 D_80163B9C = 0x80163B9C;
-D_80163B9E = 0x80163B9E;
+gNextLevelPhase = 0x80163B9E;
 D_80163BA0 = 0x80163BA0;
 D_80163BA2 = 0x80163BA2;
-D_80163BA4 = 0x80163BA4;
+gLastGameState = 0x80163BA4;
 D_80163BA6 = 0x80163BA6;
 D_80163BA8 = 0x80163BA8;
-D_80163BA9 = 0x80163BA9;
+gGameStandby = 0x80163BA9;
 D_80163BAC = 0x80163BAC;
 D_80163BB0 = 0x80163BB0;
 D_80163BB4 = 0x80163BB4;
@@ -3030,8 +3030,8 @@ D_80163BF8 = 0x80163BF8;
 D_80163BF9 = 0x80163BF9;
 D_80163BFC = 0x80163BFC;
 D_80163C00 = 0x80163C00;
-D_80163C04 = 0x80163C04;
-D_80163C08 = 0x80163C08;
+gSavedHitCount = 0x80163C04;
+gLifeCount = 0x80163C08;
 D_80163C10 = 0x80163C10;
 D_80163C13 = 0x80163C13;
 D_80163C20 = 0x80163C20;
@@ -3140,19 +3140,19 @@ D_80179340 = 0x80179340;
 D_80179660 = 0x80179660;
 D_80179668 = 0x80179668;
 D_80179988 = 0x80179988;
-D_8017998C = 0x8017998C;
+gClearPlayerInfo = 0x8017998C;
 D_80179990 = 0x80179990;
 D_80179994 = 0x80179994;
 D_80179998 = 0x80179998;
-D_8017999C = 0x8017999C;
+gGameState = 0x8017999C;
 D_801799A0 = 0x801799A0;
-D_801799A4 = 0x801799A4;
+gNextGameStateTimer = 0x801799A4;
 D_801799A8 = 0x801799A8;
 D_801799AC = 0x801799AC;
 D_801799B0 = 0x801799B0;
-D_801799B4 = 0x801799B4;
+gOptionMenuStatus = 0x801799B4;
 D_801799B8 = 0x801799B8;
-D_801799BC = 0x801799BC;
+gPlayState = 0x801799BC;
 D_801799C0 = 0x801799C0;
 D_801799D0 = 0x801799D0;
 D_801799D8 = 0x801799D8;
@@ -3161,12 +3161,12 @@ D_801799E0 = 0x801799E0;
 D_801799E4 = 0x801799E4;
 D_801799E8 = 0x801799E8;
 D_801799F0 = 0x801799F0;
-D_80179A00 = 0x80179A00;
+gDrawMode = 0x80179A00;
 D_80179A04 = 0x80179A04;
 D_80179A08 = 0x80179A08;
 D_80179A0B = 0x80179A0B;
 D_80179A0C = 0x80179A0C;
-D_80179A10 = 0x80179A10;
+gCamCount = 0x80179A10;
 D_80179A13 = 0x80179A13;
 D_80179A14 = 0x80179A14;
 D_80179A18 = 0x80179A18;
@@ -3176,7 +3176,7 @@ D_80179A24 = 0x80179A24;
 D_80179A28 = 0x80179A28;
 D_80179A30 = 0x80179A30;
 D_80179A38 = 0x80179A38;
-D_80179A3C = 0x80179A3C;
+gSavedTeamShields = 0x80179A3C;
 D_80179A48 = 0x80179A48;
 D_80179A50 = 0x80179A50;
 D_80179A5C = 0x80179A5C;
@@ -3187,16 +3187,16 @@ D_80179A88 = 0x80179A88;
 D_80179A90 = 0x80179A90;
 D_80179A98 = 0x80179A98;
 D_80179AA0 = 0x80179AA0;
-D_80179AA8 = 0x80179AA8;
+gGroundHeight = 0x80179AA8;
 D_80179AB0 = 0x80179AB0;
 D_80179AB8 = 0x80179AB8;
 D_80179AC0 = 0x80179AC0;
-D_80179AD0 = 0x80179AD0;
+gPlayerTurnRate = 0x80179AD0;
 D_80179AD4 = 0x80179AD4;
-D_80179AD8 = 0x80179AD8;
+gPlayerTurnStickMod = 0x80179AD8;
 D_80179ADC = 0x80179ADC;
 D_80179AE0 = 0x80179AE0;
-D_80179AE4 = 0x80179AE4;
+gInputPress = 0x80179AE4;
 D_80179AE8 = 0x80179AE8;
 D_80179AEC = 0x80179AEC;
 D_80179AF0 = 0x80179AF0;
@@ -3211,7 +3211,7 @@ D_80179B40 = 0x80179B40;
 D_80179B4C = 0x80179B4C;
 D_80179B50 = 0x80179B50;
 D_80179B5C = 0x80179B5C;
-D_80179B60 = 0x80179B60;
+gExpertMode = 0x80179B60;
 D_80179B68 = 0x80179B68;
 D_80179B78 = 0x80179B78;
 D_80179B7C = 0x80179B7C;
@@ -3239,11 +3239,11 @@ D_80179C18 = 0x80179C18;
 D_80179C20 = 0x80179C20;
 D_80179C30 = 0x80179C30;
 D_80179C38 = 0x80179C38;
-D_80179C48 = 0x80179C48;
+gTitleState = 0x80179C48;
 D_80179C50 = 0x80179C50;
-D_80179C60 = 0x80179C60;
+gMainController = 0x80179C60;
 D_80179C68 = 0x80179C68;
-D_80179CA8 = 0x80179CA8;
+gMapState = 0x80179CA8;
 D_80179CAC = 0x80179CAC;
 D_80179CB0 = 0x80179CB0;
 D_80179CB4 = 0x80179CB4;
@@ -3265,12 +3265,12 @@ D_80179DE8 = 0x80179DE8;
 D_80179DF4 = 0x80179DF4;
 D_80179DF8 = 0x80179DF8;
 D_80179DFC = 0x80179DFC;
-D_80179E00 = 0x80179E00;
+gLevelType = 0x80179E00;
 D_80179E04 = 0x80179E04;
-D_80179E08 = 0x80179E08;
+gSavedObjectLoadIndex = 0x80179E08;
 D_80179E0C = 0x80179E0C;
 D_80179E14 = 0x80179E14;
-D_80179E18 = 0x80179E18;
+gSavedPathProgress = 0x80179E18;
 D_80179E1C = 0x80179E1C;
 D_80179E24 = 0x80179E24;
 D_80179E28 = 0x80179E28;
@@ -3285,18 +3285,18 @@ D_80179E58 = 0x80179E58;
 D_80179E5C = 0x80179E5C;
 D_80179E70 = 0x80179E70;
 D_80179E78 = 0x80179E78;
-D_80179E88 = 0x80179E88;
+gPathProgress = 0x80179E88;
 D_80179E90 = 0x80179E90;
 D_80179EA0 = 0x80179EA0;
 D_80179EA8 = 0x80179EA8;
-D_80179EB8 = 0x80179EB8;
+gRadioTextBoxScaleY = 0x80179EB8;
 D_80179EC0 = 0x80179EC0;
-D_80179ED0 = 0x80179ED0;
+gRadioMsgRadioId = 0x80179ED0;
 D_80179ED8 = 0x80179ED8;
 D_80179EF0 = 0x80179EF0;
 D_80179F08 = 0x80179F08;
 D_80179F10 = 0x80179F10;
-D_80179F18 = 0x80179F18;
+gGameFrameCount = 0x80179F18;
 D_80179F20 = 0x80179F20;
 D_80179F30 = 0x80179F30;
 D_80179F38 = 0x80179F38;
@@ -3315,17 +3315,17 @@ D_8017A08C = 0x8017A08C;
 D_8017A194 = 0x8017A194;
 D_8017A294 = 0x8017A294;
 D_8017A29C = 0x8017A29C;
-D_8017A39C = 0x8017A39C;
+gCurrentLevel = 0x8017A39C;
 D_8017A3A1 = 0x8017A3A1;
 D_8017A3E4 = 0x8017A3E4;
-D_8017A3E8 = 0x8017A3E8;
+gPlayer = 0x8017A3E8;
 D_8017A3EC = 0x8017A3EC;
 D_8017A3F0 = 0x8017A3F0;
 D_8017A3F4 = 0x8017A3F4;
 D_8017A3F8 = 0x8017A3F8;
 D_8017A3FC = 0x8017A3FC;
 D_8017A400 = 0x8017A400;
-D_8017A404 = 0x8017A404;
+gRadioState = 0x8017A404;
 D_8017A40C = 0x8017A40C;
 D_8017A410 = 0x8017A410;
 D_8017A414 = 0x8017A414;
@@ -3338,7 +3338,7 @@ D_8017A430 = 0x8017A430;
 D_8017A434 = 0x8017A434;
 D_8017A438 = 0x8017A438;
 D_8017A43C = 0x8017A43C;
-D_8017A440 = 0x8017A440;
+gRadioMsgCharIndex = 0x8017A440;
 D_8017A444 = 0x8017A444;
 D_8017A44C = 0x8017A44C;
 D_8017A450 = 0x8017A450;
@@ -3346,13 +3346,13 @@ D_8017A454 = 0x8017A454;
 D_8017A460 = 0x8017A460;
 D_8017A464 = 0x8017A464;
 D_8017A468 = 0x8017A468;
-D_8017A470 = 0x8017A470;
+gRadioMsg = 0x8017A470;
 D_8017A478 = 0x8017A478;
 D_8017A488 = 0x8017A488;
 D_8017A490 = 0x8017A490;
 D_8017A498 = 0x8017A498;
 D_8017A4A0 = 0x8017A4A0;
-D_8017A4A8 = 0x8017A4A8;
+gFillScreenAlpha = 0x8017A4A8;
 D_8017A4B0 = 0x8017A4B0;
 D_8017A4B8 = 0x8017A4B8;
 D_8017A4BC = 0x8017A4BC;
@@ -3375,7 +3375,7 @@ D_8017A538 = 0x8017A538;
 D_8017A53C = 0x8017A53C;
 D_8017A540 = 0x8017A540;
 D_8017A544 = 0x8017A544;
-D_8017A578 = 0x8017A578;
+gStarCount = 0x8017A578;
 D_8017A57C = 0x8017A57C;
 D_8017A580 = 0x8017A580;
 D_8017A588 = 0x8017A588;
@@ -3507,7 +3507,7 @@ D_8017A9D0 = 0x8017A9D0;
 D_8017A9D4 = 0x8017A9D4;
 D_8017A9D8 = 0x8017A9D8;
 D_8017A9DC = 0x8017A9DC;
-D_8017A9E0 = 0x8017A9E0;
+gSaveFile = 0x8017A9E0;
 D_8017A9E1 = 0x8017A9E1;
 D_8017A9E2 = 0x8017A9E2;
 D_8017A9E3 = 0x8017A9E3;
@@ -5382,46 +5382,46 @@ func_menu_801954DC = 0x801954DC; //segment:ovl_menu
 func_menu_80195588 = 0x80195588; //segment:ovl_menu
 func_menu_80195640 = 0x80195640; //segment:ovl_menu
 func_menu_80195708 = 0x80195708; //segment:ovl_menu
-func_menu_80195880 = 0x80195880; //segment:ovl_menu
-func_menu_80195E4C = 0x80195E4C; //segment:ovl_menu
-func_menu_80195F18 = 0x80195F18; //segment:ovl_menu
-func_menu_801960D8 = 0x801960D8; //segment:ovl_menu
+Option_Setup = 0x80195880; //segment:ovl_menu
+Option_Main = 0x80195E4C; //segment:ovl_menu
+Option_Entry_Update = 0x80195F18; //segment:ovl_menu
+Option_Entry_Draw = 0x801960D8; //segment:ovl_menu
 func_menu_8019626C = 0x8019626C; //segment:ovl_menu
-func_menu_80196408 = 0x80196408; //segment:ovl_menu
+Option_Entry_Setup = 0x80196408; //segment:ovl_menu
 func_menu_801964EC = 0x801964EC; //segment:ovl_menu
 func_menu_8019668C = 0x8019668C; //segment:ovl_menu
-func_menu_80196810 = 0x80196810; //segment:ovl_menu
-func_menu_8019688C = 0x8019688C; //segment:ovl_menu
+Option_Map_Update = 0x80196810; //segment:ovl_menu
+Option_Training_Update = 0x8019688C; //segment:ovl_menu
 func_menu_80196944 = 0x80196944; //segment:ovl_menu
-func_menu_80196D60 = 0x80196D60; //segment:ovl_menu
-func_menu_801979D8 = 0x801979D8; //segment:ovl_menu
+Option_MainMenu_Update = 0x80196D60; //segment:ovl_menu
+Option_MainMenu_Draw = 0x801979D8; //segment:ovl_menu
 func_menu_80197C78 = 0x80197C78; //segment:ovl_menu
-func_menu_80197DE0 = 0x80197DE0; //segment:ovl_menu
+Option_Versus_Update = 0x80197DE0; //segment:ovl_menu
 func_menu_80198700 = 0x80198700; //segment:ovl_menu
 func_menu_80198888 = 0x80198888; //segment:ovl_menu
-func_menu_80198AB8 = 0x80198AB8; //segment:ovl_menu
-func_menu_80198CFC = 0x80198CFC; //segment:ovl_menu
-func_menu_80198DE0 = 0x80198DE0; //segment:ovl_menu
+Option_Sound_Update = 0x80198AB8; //segment:ovl_menu
+Option_Sound_SetSoundMode = 0x80198CFC; //segment:ovl_menu
+Option_Sound_SetVolumeLevels = 0x80198DE0; //segment:ovl_menu
 func_menu_80198F04 = 0x80198F04; //segment:ovl_menu
 func_menu_801996C0 = 0x801996C0; //segment:ovl_menu
 func_menu_80199CFC = 0x80199CFC; //segment:ovl_menu
-func_menu_80199D64 = 0x80199D64; //segment:ovl_menu
+Option_ExpertSound_Update = 0x80199D64; //segment:ovl_menu
 func_menu_80199F94 = 0x80199F94; //segment:ovl_menu
 func_menu_8019A69C = 0x8019A69C; //segment:ovl_menu
-func_menu_8019A724 = 0x8019A724; //segment:ovl_menu
+Option_Language_Update = 0x8019A724; //segment:ovl_menu
 func_menu_8019A790 = 0x8019A790; //segment:ovl_menu
 func_menu_8019A930 = 0x8019A930; //segment:ovl_menu
 func_menu_8019AAC8 = 0x8019AAC8; //segment:ovl_menu
 func_menu_8019AC74 = 0x8019AC74; //segment:ovl_menu
 func_menu_8019B274 = 0x8019B274; //segment:ovl_menu
 func_menu_8019B490 = 0x8019B490; //segment:ovl_menu
-func_menu_8019B4D4 = 0x8019B4D4; //segment:ovl_menu
-func_menu_8019B754 = 0x8019B754; //segment:ovl_menu
+Option_Data_Update = 0x8019B4D4; //segment:ovl_menu
+Option_Data_Select = 0x8019B754; //segment:ovl_menu
 func_menu_8019B970 = 0x8019B970; //segment:ovl_menu
 func_menu_8019BFF0 = 0x8019BFF0; //segment:ovl_menu
-func_menu_8019C098 = 0x8019C098; //segment:ovl_menu
+Option_Ranking_Update = 0x8019C098; //segment:ovl_menu
 func_menu_8019C138 = 0x8019C138; //segment:ovl_menu
-func_menu_8019C160 = 0x8019C160; //segment:ovl_menu
+Option_Ranking_Select = 0x8019C160; //segment:ovl_menu
 func_menu_8019C210 = 0x8019C210; //segment:ovl_menu
 func_menu_8019C2F8 = 0x8019C2F8; //segment:ovl_menu
 func_menu_8019C55C = 0x8019C55C; //segment:ovl_menu
@@ -5440,17 +5440,17 @@ func_menu_8019DCD8 = 0x8019DCD8; //segment:ovl_menu
 func_menu_8019E504 = 0x8019E504; //segment:ovl_menu
 func_menu_8019E5F0 = 0x8019E5F0; //segment:ovl_menu
 func_menu_8019E630 = 0x8019E630; //segment:ovl_menu
-func_menu_8019E790 = 0x8019E790; //segment:ovl_menu
+Option_VersusMenu_Update = 0x8019E790; //segment:ovl_menu
 func_menu_8019E808 = 0x8019E808; //segment:ovl_menu
 func_menu_8019EAF8 = 0x8019EAF8; //segment:ovl_menu
 func_menu_8019EB8C = 0x8019EB8C; //segment:ovl_menu
 func_menu_8019F278 = 0x8019F278; //segment:ovl_menu
 func_menu_8019F378 = 0x8019F378; //segment:ovl_menu
 func_menu_8019F450 = 0x8019F450; //segment:ovl_menu
-func_menu_8019F47C = 0x8019F47C; //segment:ovl_menu
-func_menu_8019F4E8 = 0x8019F4E8; //segment:ovl_menu
-func_menu_8019F56C = 0x8019F56C; //segment:ovl_menu
-func_menu_8019F5D8 = 0x8019F5D8; //segment:ovl_menu
+Option_VersusStage_Update = 0x8019F47C; //segment:ovl_menu
+Option_Vs_PointMatch_Update = 0x8019F4E8; //segment:ovl_menu
+Option_Vs_BattleRoyal_Update = 0x8019F56C; //segment:ovl_menu
+Option_Vs_TimeTrial_Update = 0x8019F5D8; //segment:ovl_menu
 func_menu_8019F65C = 0x8019F65C; //segment:ovl_menu
 func_menu_8019F6A4 = 0x8019F6A4; //segment:ovl_menu
 func_menu_8019F8A0 = 0x8019F8A0; //segment:ovl_menu
@@ -5476,22 +5476,22 @@ func_menu_801A14A8 = 0x801A14A8; //segment:ovl_menu
 func_menu_801A1560 = 0x801A1560; //segment:ovl_menu
 func_menu_801A1678 = 0x801A1678; //segment:ovl_menu
 func_menu_801A174C = 0x801A174C; //segment:ovl_menu
-func_menu_801A1A44 = 0x801A1A44; //segment:ovl_menu
+Option_Input_MoveCursor_Y = 0x801A1A44; //segment:ovl_menu
 func_menu_801A1BCC = 0x801A1BCC; //segment:ovl_menu
 func_menu_801A1C98 = 0x801A1C98; //segment:ovl_menu
 func_menu_801A1E54 = 0x801A1E54; //segment:ovl_menu
 func_menu_801A1EF4 = 0x801A1EF4; //segment:ovl_menu
-func_menu_801A2110 = 0x801A2110; //segment:ovl_menu
+Option_NameEntry_Update = 0x801A2110; //segment:ovl_menu
 func_menu_801A21F0 = 0x801A21F0; //segment:ovl_menu
 func_menu_801A2388 = 0x801A2388; //segment:ovl_menu
 func_menu_801A275C = 0x801A275C; //segment:ovl_menu
 func_menu_801A2C80 = 0x801A2C80; //segment:ovl_menu
 func_menu_801A317C = 0x801A317C; //segment:ovl_menu
 func_menu_801A3344 = 0x801A3344; //segment:ovl_menu
-func_menu_801A33A0 = 0x801A33A0; //segment:ovl_menu
+Option_Score_Update = 0x801A33A0; //segment:ovl_menu
 func_menu_801A34E8 = 0x801A34E8; //segment:ovl_menu
 func_menu_801A35D8 = 0x801A35D8; //segment:ovl_menu
-func_menu_801A369C = 0x801A369C; //segment:ovl_menu
+Option_Invoice_Update = 0x801A369C; //segment:ovl_menu
 func_menu_801A38F0 = 0x801A38F0; //segment:ovl_menu
 func_menu_801A3E00 = 0x801A3E00; //segment:ovl_menu
 func_menu_801A3E5C = 0x801A3E5C; //segment:ovl_menu
@@ -6223,8 +6223,8 @@ D_menu_801BBC70 = 0x801BBC70; //segment:ovl_menu
 D_menu_801BBC80 = 0x801BBC80; //segment:ovl_menu
 D_menu_801BBC84 = 0x801BBC84; //segment:ovl_menu
 D_menu_801BBC88 = 0x801BBC88; //segment:ovl_menu
-D_menu_801BBC8C = 0x801BBC8C; //segment:ovl_menu
-D_menu_801BBC90 = 0x801BBC90; //segment:ovl_menu
+sMenuEntryState = 0x801BBC8C; //segment:ovl_menu
+sMainMenuState = 0x801BBC90; //segment:ovl_menu
 D_menu_801BBC94 = 0x801BBC94; //segment:ovl_menu
 D_menu_801BBC98 = 0x801BBC98; //segment:ovl_menu
 D_menu_801BBC9C = 0x801BBC9C; //segment:ovl_menu
@@ -6237,7 +6237,7 @@ D_menu_801BBCB0 = 0x801BBCB0; //segment:ovl_menu
 D_menu_801BBCB4 = 0x801BBCB4; //segment:ovl_menu
 D_menu_801BBCB8 = 0x801BBCB8; //segment:ovl_menu
 D_menu_801BBCBC = 0x801BBCBC; //segment:ovl_menu
-D_menu_801BBCC0 = 0x801BBCC0; //segment:ovl_menu
+sMainMenuCursor = 0x801BBCC0; //segment:ovl_menu
 D_menu_801BBCC4 = 0x801BBCC4; //segment:ovl_menu
 D_menu_801BBCC8 = 0x801BBCC8; //segment:ovl_menu
 D_menu_801BBCCC = 0x801BBCCC; //segment:ovl_menu
@@ -6249,7 +6249,7 @@ D_menu_801BBCE8 = 0x801BBCE8; //segment:ovl_menu
 D_menu_801BBCEE = 0x801BBCEE; //segment:ovl_menu
 D_menu_801BBCF0 = 0x801BBCF0; //segment:ovl_menu
 D_menu_801BBCF8 = 0x801BBCF8; //segment:ovl_menu
-D_menu_801BBD04 = 0x801BBD04; //segment:ovl_menu
+sDrawCursor = 0x801BBD04; //segment:ovl_menu
 D_menu_801BBD08 = 0x801BBD08; //segment:ovl_menu
 D_menu_801BBD14 = 0x801BBD14; //segment:ovl_menu
 D_menu_801BBD18 = 0x801BBD18; //segment:ovl_menu
@@ -6279,8 +6279,8 @@ D_menu_801BBD98 = 0x801BBD98; //segment:ovl_menu
 D_menu_801BBDA0 = 0x801BBDA0; //segment:ovl_menu
 D_menu_801BBDA4 = 0x801BBDA4; //segment:ovl_menu
 D_menu_801BBDA8 = 0x801BBDA8; //segment:ovl_menu
-D_menu_801BBDAC = 0x801BBDAC; //segment:ovl_menu
-D_menu_801BBDB0 = 0x801BBDB0; //segment:ovl_menu
+sRightArwingCursorYrot = 0x801BBDAC; //segment:ovl_menu
+sLeftArwingCursorYrot = 0x801BBDB0; //segment:ovl_menu
 D_menu_801BBDB4 = 0x801BBDB4; //segment:ovl_menu
 D_menu_801BBDB8 = 0x801BBDB8; //segment:ovl_menu
 D_menu_801BBDBC = 0x801BBDBC; //segment:ovl_menu
@@ -6297,8 +6297,8 @@ D_menu_801BBDE4 = 0x801BBDE4; //segment:ovl_menu
 D_menu_801BBDE8 = 0x801BBDE8; //segment:ovl_menu
 D_menu_801BBDEC = 0x801BBDEC; //segment:ovl_menu
 D_menu_801BBDF0 = 0x801BBDF0; //segment:ovl_menu
-D_menu_801BBDF4 = 0x801BBDF4; //segment:ovl_menu
-D_menu_801BBDF8 = 0x801BBDF8; //segment:ovl_menu
+sMainMenuFromCancel = 0x801BBDF4; //segment:ovl_menu
+sVsSubMenuFromCancel = 0x801BBDF8; //segment:ovl_menu
 D_menu_801BBDFC = 0x801BBDFC; //segment:ovl_menu
 D_menu_801BBDFE = 0x801BBDFE; //segment:ovl_menu
 D_menu_801BBE00 = 0x801BBE00; //segment:ovl_menu
@@ -6340,7 +6340,7 @@ D_menu_801BBEF6 = 0x801BBEF6; //segment:ovl_menu
 D_menu_801BBEF7 = 0x801BBEF7; //segment:ovl_menu
 D_menu_801BBEF8 = 0x801BBEF8; //segment:ovl_menu
 D_menu_801BBF00 = 0x801BBF00; //segment:ovl_menu
-D_menu_801BBF04 = 0x801BBF04; //segment:ovl_menu
+sVsMenuSelection = 0x801BBF04; //segment:ovl_menu
 D_menu_801BBF08 = 0x801BBF08; //segment:ovl_menu
 D_menu_801BBF0C = 0x801BBF0C; //segment:ovl_menu
 D_menu_801BBF10 = 0x801BBF10; //segment:ovl_menu
@@ -6684,7 +6684,7 @@ func_ending_8018DDB4 = 0x8018DDB4; //segment:ovl_ending
 func_ending_8018E07C = 0x8018E07C; //segment:ovl_ending
 func_ending_8018E314 = 0x8018E314; //segment:ovl_ending
 func_ending_8018E3E8 = 0x8018E3E8; //segment:ovl_ending
-func_ending_8018E458 = 0x8018E458; //segment:ovl_ending
+Ending_Main = 0x8018E458; //segment:ovl_ending
 func_ending_8018E5D8 = 0x8018E5D8; //segment:ovl_ending
 func_ending_8018E7A4 = 0x8018E7A4; //segment:ovl_ending
 func_ending_8018E8E8 = 0x8018E8E8; //segment:ovl_ending
diff --git a/linker_scripts/jp/rev0/symbol_addrs.txt b/linker_scripts/jp/rev0/symbol_addrs.txt
index 6d14e3965..36576d4f4 100644
--- a/linker_scripts/jp/rev0/symbol_addrs.txt
+++ b/linker_scripts/jp/rev0/symbol_addrs.txt
@@ -4119,7 +4119,6 @@ D_8017E111 = 0x8017E111;
 D_8017E112 = 0x8017E112;
 gDmaTable = 0x8017E210; //size:0x590
 
-func_i1_8017E7A0 = 0x8017E7A0; //segment:ovl_i1
 func_i1_8017E7B0 = 0x8017E7B0; //segment:ovl_i1
 func_i1_8017E7BC = 0x8017E7BC; //segment:ovl_i1
 func_i1_8017E824 = 0x8017E824; //segment:ovl_i1
@@ -7271,4 +7270,3 @@ gTextureRenderBuffer = 0x80387800; //size:0x7880 segment:buffers defined:true
 gFillBuffer = 0x8038F080; //size:0x780 segment:buffers defined:true
 gFrameBuffers = 0x8038F800; //size:0x70800 segment:buffers defined:true
 D_8038F300 = 0x8038F300; //ignore:true
-
diff --git a/linker_scripts/jp/rev0/symbol_addrs_overlays.txt b/linker_scripts/jp/rev0/symbol_addrs_overlays.txt
new file mode 100644
index 000000000..8a7a4c47a
--- /dev/null
+++ b/linker_scripts/jp/rev0/symbol_addrs_overlays.txt
@@ -0,0 +1 @@
+OvlI1_CallFunction = 0x8017E7A0;//segment:ovl_i1
\ No newline at end of file
diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c
index c860a2eae..1c1bf5002 100644
--- a/src/audio/audio_general.c
+++ b/src/audio/audio_general.c
@@ -2651,8 +2651,8 @@ void Audio_PlaySequenceDistorted(u8 seqPlayId, u16 seqId, u16 distortion, u8 fad
 }
 
 void Audio_PlaySoundTestTrack(u8 trackNumber) {
-    u16 sp26;
-    u8 sp25;
+    u16 seqId;
+    u8 bgmParam;
 
     if ((trackNumber >= 45) && (trackNumber < 50)) {
         SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1);
@@ -2664,10 +2664,10 @@ void Audio_PlaySoundTestTrack(u8 trackNumber) {
         AUDIO_PLAY_SFX(NA_SE_ERROR, gDefaultSfxSource, 4);
     } else {
         sPlaylistIndex = 0xFF;
-        sp26 = sSoundTestTracks[trackNumber].seqId & 0xFF;
-        sp25 = sSoundTestTracks[trackNumber].bgmParam;
+        seqId = sSoundTestTracks[trackNumber].seqId & 0xFF;
+        bgmParam = sSoundTestTracks[trackNumber].bgmParam;
         SEQCMD_STOP_SEQUENCE(D_800C5E70 ^ 1, 5);
-        Audio_PlaySequence(D_800C5E70, sp26, 0, sp25);
+        Audio_PlaySequence(D_800C5E70, seqId, 0, bgmParam);
         D_800C5E70 ^= 1;
     }
 }
diff --git a/src/audio/audio_load.c b/src/audio/audio_load.c
index b8d5d6b1e..af1d06cf9 100644
--- a/src/audio/audio_load.c
+++ b/src/audio/audio_load.c
@@ -128,8 +128,8 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, u32 arg2, u8* dmaIndexRef,
     dma->ttl = 2;
     dma->devAddr = dmaDevAddr;
     dma->sizeUnused = dma->size;
-    AudioLoad_Dma(&gCurAudioFrameDmaIoMsgBuf[gCurAudioFrameDmaCount++], 0, 0, dmaDevAddr, dma->ramAddr, dma->size,
-                  &gCurAudioFrameDmaQueue, medium, "SUPERDMA");
+    AudioLoad_Dma(&gCurAudioFrameDmaIoMsgBuf[gCurAudioFrameDmaCount++], OS_MESG_PRI_NORMAL, OS_READ, dmaDevAddr,
+                  dma->ramAddr, dma->size, &gCurAudioFrameDmaQueue, medium, "SUPERDMA");
     *dmaIndexRef = sp38;
     return devAddr - dmaDevAddr + dma->ramAddr;
 }
@@ -214,7 +214,7 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
     gSampleDmaReuseQueue2WrPos = gSampleDmaCount - gSampleDmaListSize1;
 }
 
-// Updates the audiotable entries with their absolute ROM addresses
+// Updates the audiotable entries with their relative ROM addresses
 void AudioLoad_InitTable(AudioTable* table, u8* romAddr, u16 unkMediumParam) {
     s32 i;
 
@@ -694,7 +694,8 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
     }
 
     if (size != 0) {
-        AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, size, &gSyncDmaQueue, medium, "FastCopy");
+        AudioLoad_Dma(&gSyncDmaIoMsg, OS_MESG_PRI_HIGH, OS_READ, devAddr, ramAddr, size, &gSyncDmaQueue, medium,
+                      "FastCopy");
         MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
     }
 }
diff --git a/src/audio/audio_seqplayer.c b/src/audio/audio_seqplayer.c
index 2c4851dfa..8f0bd7784 100644
--- a/src/audio/audio_seqplayer.c
+++ b/src/audio/audio_seqplayer.c
@@ -268,7 +268,7 @@ void* func_800145FC(AudioListItem* list) {
     list->prev = item->prev;
     item->prev = NULL;
     list->u.count--;
-    return item->u.count;
+    return item->u.value;
 }
 
 void func_8001463C(void) {
diff --git a/src/engine/fox_360.c b/src/engine/fox_360.c
index 8f86dd969..791179e20 100644
--- a/src/engine/fox_360.c
+++ b/src/engine/fox_360.c
@@ -87,7 +87,7 @@ void AllRange_GetStarWolfHits(Actor* this) {
 }
 
 bool AllRange_PlayMessage(u16* msg, RadioCharacterId rcid) {
-    if ((gRadioState == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) {
+    if ((gRadioState == 0) && (gPlayer[0].state != PLAYERSTATE_STANDBY)) {
         Radio_PlayMessage(msg, rcid);
         return true;
     } else {
@@ -229,7 +229,7 @@ void AllRange_GreatFoxRepair(Player* player) {
             gCsCamEyeX -= 1.0f;
             player->rot.x += 0.4f;
             if (gCsFrameCount >= 130) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->arwing.drawFace = false;
                 player->unk_014 = 0;
                 player->unk_018 = 0;
@@ -480,7 +480,7 @@ void ActorAllRange_SpawnStarWolf(void) {
 }
 
 void ActorAllRange_PlayMessage(u16* msg, RadioCharacterId character) {
-    if (!gHideRadio && (gActors[0].state == STATE360_2) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) {
+    if (!gHideRadio && (gActors[0].state == STATE360_2) && (gPlayer[0].state != PLAYERSTATE_STANDBY)) {
         Radio_PlayMessage(msg, character);
     }
 }
@@ -511,7 +511,7 @@ void ActorAllRange_UpdateStarWolfEvents(ActorAllRange* this) {
     if (gAllRangeEventTimer == gAllRangeSpawnEvent) {
         ActorAllRange_SpawnStarWolf();
         this->state = STATE360_3;
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+        gPlayer[0].state = PLAYERSTATE_STANDBY;
         if ((gCurrentLevel == LEVEL_VENOM_2) || (gCurrentLevel == LEVEL_BOLSE)) {
             gPlayer[0].camRoll = 20.0f;
         }
@@ -708,7 +708,7 @@ void ActorAllRange_SpawnSupplies(Actor* this) {
         }
     }
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && !gAllRangeSuppliesSent) {
+    if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && !gAllRangeSuppliesSent) {
         if (gAllRangeWingRepairTimer != 0) {
             gAllRangeWingRepairTimer--;
         }
@@ -720,7 +720,7 @@ void ActorAllRange_SpawnSupplies(Actor* this) {
 }
 
 void ActorAllRange_UpdateEvents(Actor* this) {
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_DOWN) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT)) {
+    if ((gPlayer[0].state == PLAYERSTATE_DOWN) || (gPlayer[0].state == PLAYERSTATE_NEXT)) {
         Object_Kill(&this->obj, this->sfxSource);
         return;
     }
@@ -820,7 +820,7 @@ s32 ActorAllRange_CheckObjectNearby(ActorAllRange* this) {
     Boss* boss = &gBosses[0];
     s32 pad[4];
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
         return 0;
     }
 
@@ -1246,7 +1246,7 @@ void ActorAllRange_ApplyDamage(ActorAllRange* this) {
 }
 
 void ActorAllRange_CheckPlayerNearby(ActorAllRange* this) {
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (this->iwork[24] != 0) &&
+    if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && (this->iwork[24] != 0) &&
         (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) &&
         (fabsf(this->obj.pos.y - gPlayer[0].pos.y) < 1000.0f) &&
         (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) {
@@ -1524,7 +1524,7 @@ void ActorAllRange_Update(ActorAllRange* this) {
             break;
 
         case STATE360_0:
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) {
+            if (gPlayer[0].state != PLAYERSTATE_START_360) {
                 this->fwork[0] = this->fwork[1] = 40.0f;
 
                 if (gActors[0].state == STATE360_5) {
@@ -1598,7 +1598,7 @@ void ActorAllRange_Update(ActorAllRange* this) {
                 if (this->aiIndex == AI360_FOX) {
                     if (gCurrentLevel != LEVEL_VENOM_2) {
                         if ((gPlayer[0].somersault && (this->iwork[4] > 10)) ||
-                            ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY))) {
+                            ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state == PLAYERSTATE_STANDBY))) {
                             this->state = STATE360_3;
                             this->counter_04E = 300;
                             this->timer_0BC = 160;
@@ -1684,8 +1684,7 @@ void ActorAllRange_Update(ActorAllRange* this) {
                                 this->fwork[1] = gActors[this->aiIndex].fwork[0] - 5.0f;
                             } else {
                                 this->fwork[1] = gPlayer[0].baseSpeed - 5.0f;
-                                if ((gCurrentLevel == LEVEL_VENOM_2) &&
-                                    (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN) &&
+                                if ((gCurrentLevel == LEVEL_VENOM_2) && (gPlayer[0].state == PLAYERSTATE_U_TURN) &&
                                     (gPlayer[0].aerobaticPitch > 100.0f)) {
                                     this->iwork[16] = STATE360_8;
                                 }
@@ -1956,7 +1955,7 @@ void ActorAllRange_Update(ActorAllRange* this) {
                         spE0 = 0.0f;
                     }
                     spDC = RAND_FLOAT_CENTERED(10000.0f);
-                    if ((gCurrentLevel == LEVEL_KATINA) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY)) {
+                    if ((gCurrentLevel == LEVEL_KATINA) && (gPlayer[0].state == PLAYERSTATE_STANDBY)) {
                         spE4 = RAND_FLOAT_CENTERED(5000.0f);
                         spDC = RAND_FLOAT_CENTERED(5000.0f);
                     }
diff --git a/src/engine/fox_beam.c b/src/engine/fox_beam.c
index 1e9b1bb57..13d743aaa 100644
--- a/src/engine/fox_beam.c
+++ b/src/engine/fox_beam.c
@@ -850,7 +850,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) {
                 }
                 test.z = test.x;
                 if ((i != shot->sourceId) &&
-                    ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (player->state_1C8 == PLAYERSTATE_1C8_DOWN)) &&
+                    ((player->state == PLAYERSTATE_ACTIVE) || (player->state == PLAYERSTATE_DOWN)) &&
                     (fabsf(player->trueZpos - shot->obj.pos.z) < test.z) &&
                     (fabsf(player->pos.x - shot->obj.pos.x) < test.x) &&
                     (fabsf(player->pos.y - shot->obj.pos.y) < test.y)) {
@@ -1099,8 +1099,7 @@ void PlayerShot_DrawLaser(PlayerShot* shot) {
     if (gCamCount < 4) {
         RCP_SetupDL_21();
         twinLaserSeparation = 9.0f;
-        if ((shot->unk_58 == 0) ||
-            ((gCurrentLevel == LEVEL_METEO) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO))) {
+        if ((shot->unk_58 == 0) || ((gCurrentLevel == LEVEL_METEO) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO))) {
             width = 4.0f;
             length = 20.0f;
         } else {
@@ -1136,7 +1135,7 @@ void PlayerShot_DrawLaser(PlayerShot* shot) {
                     var_a1 = 2;
                 }
             } else if (gCurrentLevel == LEVEL_KATINA) {
-                if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO) {
+                if (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO) {
                     if (shot->sourceId > NPC_SHOT_ID + AI360_PEPPY) {
                         if (gActors[shot->sourceId - NPC_SHOT_ID].animFrame == 0) {
                             var_a1 = 1;
@@ -1735,8 +1734,8 @@ bool PlayerShot_FindLockTarget(PlayerShot* shot) {
     }
     if (gVersusMode) {
         for (i = 0, player = gPlayer; i < gCamCount; i++, player++) {
-            if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && !player->somersault &&
-                (player->form != FORM_ON_FOOT) && (i != shot->sourceId) && (gVsLockOnTimers[i][shot->sourceId] == 0) &&
+            if ((player->state == PLAYERSTATE_ACTIVE) && !player->somersault && (player->form != FORM_ON_FOOT) &&
+                (i != shot->sourceId) && (gVsLockOnTimers[i][shot->sourceId] == 0) &&
                 (fabsf(shot->obj.pos.x - player->pos.x) <= lockRange) &&
                 (fabsf(shot->obj.pos.y - player->pos.y) <= lockRange) &&
                 (fabsf(shot->obj.pos.z - player->trueZpos) <= lockRange)) {
@@ -1991,7 +1990,7 @@ void PlayerShot_ApplyExplosionDamage(PlayerShot* shot, s32 damage) {
     if (gVersusMode) {
         player = gPlayer;
         for (i = 0; i < gCamCount; i++, player++) {
-            if ((i != shot->sourceId) && (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (player->hitTimer == 0)) {
+            if ((i != shot->sourceId) && (player->state == PLAYERSTATE_ACTIVE) && (player->hitTimer == 0)) {
                 dx = player->pos.x - shot->obj.pos.x;
                 dy = player->pos.y - shot->obj.pos.y;
                 dz = player->trueZpos - shot->obj.pos.z;
@@ -2056,8 +2055,8 @@ void PlayerShot_UpdateBomb(PlayerShot* shot) {
             shot->obj.rot.y += 1.0f;
             Math_SmoothStepToF(&shot->scale, shot->unk_48, 0.05f, 1.5f, 0.001f);
             if ((shot->timer > 0) && (shot->timer < 30)) {
-                if (!gVersusMode && ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                                     (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
+                if (!gVersusMode &&
+                    ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
                     test.x = gPlayer[0].pos.x - shot->obj.pos.x;
                     test.y = gPlayer[0].pos.y - shot->obj.pos.y;
                     test.z = gPlayer[0].trueZpos - shot->obj.pos.z;
@@ -2122,7 +2121,7 @@ void PlayerShot_UpdateLockOnShot(PlayerShot* shot) {
                 }
             }
             for (i = 0, player = gPlayer; i < gCamCount; i++, player++) {
-                if (((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (player->state_1C8 == PLAYERSTATE_1C8_U_TURN)) &&
+                if (((player->state == PLAYERSTATE_ACTIVE) || (player->state == PLAYERSTATE_U_TURN)) &&
                     (gVsLockOnTimers[i][shot->sourceId] != 0)) {
                     var_a3 = 1;
                     gVsLockOnTimers[i][shot->sourceId] = 2;
@@ -2286,7 +2285,7 @@ void PlayerShot_Update(PlayerShot* shot) {
 
                 case PLAYERSHOT_SINGLE_LASER:
                 case PLAYERSHOT_TWIN_LASER:
-                    if ((shot->unk_58 == 0) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO)) {
+                    if ((shot->unk_58 == 0) || (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO)) {
                         ticks = 4;
                     } else {
                         ticks = 3;
diff --git a/src/engine/fox_bg.c b/src/engine/fox_bg.c
index a37abd1c8..d6703cef1 100644
--- a/src/engine/fox_bg.c
+++ b/src/engine/fox_bg.c
@@ -429,7 +429,7 @@ void Background_DrawBackdrop(void) {
                     break;
 
                 case LEVEL_AQUAS:
-                    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+                    if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                         sp13C = Math_RadToDeg(gPlayer[gPlayerNum].camYaw) - gPlayer[gPlayerNum].yRot_114;
                         bgYpos = (gPlayer[gPlayerNum].camPitch * -7000.0f) - (gPlayer[gPlayerNum].cam.eye.y * 0.6f);
                         sp13C = Math_ModF(sp13C * -40.44444f * 2.0f, 7280.0f); // close to 7280.0f / 180.0f
@@ -440,7 +440,7 @@ void Background_DrawBackdrop(void) {
                         Matrix_Translate(gGfxMatrix, sp13C, bgYpos, -7000.0f, MTXF_APPLY);
                         Matrix_SetGfxMtx(&gMasterDisp);
 
-                        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+                        if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                             gSPDisplayList(gMasterDisp++, D_AQ_601AFF0);
                         } else {
                             gSPDisplayList(gMasterDisp++, D_AQ_601C080);
@@ -453,7 +453,7 @@ void Background_DrawBackdrop(void) {
                         }
                         Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, MTXF_APPLY);
                         Matrix_SetGfxMtx(&gMasterDisp);
-                        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+                        if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                             gSPDisplayList(gMasterDisp++, D_AQ_601AFF0);
 
                         } else {
@@ -471,12 +471,12 @@ void Background_DrawBackdrop(void) {
                     bgYpos = (gPlayer[gPlayerNum].camPitch * -7000.0f) - (gPlayer[gPlayerNum].cam.eye.y * 0.6f);
                     sp13C = sp12C * -40.44444f * 2.0f; // close to 7280.0f / 180.0f
 
-                    if ((gCurrentLevel == LEVEL_TITANIA) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
+                    if ((gCurrentLevel == LEVEL_TITANIA) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
                         (gPlayer[0].csState < 3)) {
                         D_bg_8015F968 += __sinf(gPlayer[0].camYaw) * 20.0f;
                         sp13C += D_bg_8015F968;
                     }
-                    if ((gCurrentLevel == LEVEL_SOLAR) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
+                    if ((gCurrentLevel == LEVEL_SOLAR) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
                         (gPlayer[0].csState >= 2) && (gPlayer[0].cam.eye.z <= -1900.0f)) {
                         D_bg_8015F968 = __sinf(gPlayer[0].camPitch) * 7000.0f;
                         bgYpos -= fabsf(D_bg_8015F968);
@@ -527,7 +527,7 @@ void Background_DrawBackdrop(void) {
             break;
 
         case LEVELTYPE_SPACE:
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ENTER_WARP_ZONE) {
+            if (gPlayer[0].state != PLAYERSTATE_ENTER_WARP_ZONE) {
                 Matrix_Push(&gGfxMatrix);
                 sp12C = Math_RadToDeg(gPlayer[0].camYaw);
                 sp130 = Math_RadToDeg(gPlayer[0].camPitch);
@@ -555,7 +555,7 @@ void Background_DrawBackdrop(void) {
                         bgXpos = Math_ModF(bgXpos - 34.5f, SCREEN_WIDTH + (80.0f * 2));
                         bgYpos = Math_ModF(bgYpos + 19.0f, 360.0f);
                     } else if (levelId == LEVEL_BOLSE) {
-                        if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) || (gPlayer[0].csState < 10)) {
+                        if ((gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) || (gPlayer[0].csState < 10)) {
                             bgYpos = Math_ModF(bgYpos + 360.0f - 100.0f, 360.0f);
                         }
                     } else {
@@ -591,7 +591,7 @@ void Background_DrawBackdrop(void) {
                             break;
 
                         case LEVEL_METEO:
-                            if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gCsFrameCount > 260)) {
+                            if ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (gCsFrameCount > 260)) {
                                 Matrix_Translate(gGfxMatrix, bgXpos - 120.0f, -(bgYpos - 120.0f) - 30.0f, -290.0f,
                                                  MTXF_APPLY);
                                 Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 1.0f, MTXF_APPLY);
@@ -632,7 +632,7 @@ void Background_DrawBackdrop(void) {
                             if (sp128 > 3.5f) {
                                 sp128 = 3.5f;
                             }
-                            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+                            if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
                                 sp128 = D_bg_8015F984;
                                 if (sp128 > 3.5f) {
                                     sp128 = 3.5f;
@@ -658,7 +658,7 @@ void Background_DrawBackdrop(void) {
 
                         case LEVEL_BOLSE:
                             sp128 = 1.0f;
-                            if ((gCsFrameCount > 500) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+                            if ((gCsFrameCount > 500) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
                                 sp128 = 1.3f;
                             }
                             Matrix_Translate(gGfxMatrix, bgXpos - 120.0f, -(bgYpos - 120.0f), -290.0f, MTXF_APPLY);
@@ -736,9 +736,9 @@ void Background_DrawSun(void) {
         gPlayerGlareAlphas[gPlayerNum] = 0;
     }
 
-    if (((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO)) ||
-        (((gPlayer[gPlayerNum].state_1C8 == PLAYERSTATE_1C8_U_TURN) || (gLevelMode == LEVELMODE_ALL_RANGE) ||
-          (gPlayer[gPlayerNum].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) &&
+    if (((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO)) ||
+        (((gPlayer[gPlayerNum].state == PLAYERSTATE_U_TURN) || (gLevelMode == LEVELMODE_ALL_RANGE) ||
+          (gPlayer[gPlayerNum].state == PLAYERSTATE_LEVEL_COMPLETE)) &&
          (gLevelType == LEVELTYPE_PLANET) && (gCurrentLevel != LEVEL_TITANIA) && (gCurrentLevel != LEVEL_AQUAS))) {
         gPlayerGlareReds[gPlayerNum] = 128;
         gPlayerGlareGreens[gPlayerNum] = 128;
@@ -1112,9 +1112,9 @@ void Background_DrawGround(void) {
                     RCP_SetupDL(&gMasterDisp, SETUPDL_37);
                 }
 
-                if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gPlayer[0].csState < 2)) {
+                if ((gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) && (gPlayer[0].csState < 2)) {
                     gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
-                } else if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+                } else if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
                     gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, D_bg_8015F974, D_bg_8015F978, D_bg_8015F97C,
                                     D_bg_8015F980);
                 } else {
diff --git a/src/engine/fox_boss.c b/src/engine/fox_boss.c
index 8243257dd..53e2879ce 100644
--- a/src/engine/fox_boss.c
+++ b/src/engine/fox_boss.c
@@ -114,7 +114,7 @@ void Boss_CompleteLevel(Player* player, f32 xPos, f32 yPos, f32 zPos) {
     gBossDeathCamAtX = xPos;
     gBossDeathCamAtY = yPos;
 
-    player->state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+    player->state = PLAYERSTATE_LEVEL_COMPLETE;
     player->csState = 10;
     player->csTimer = 50;
     player->csEventTimer = 50;
diff --git a/src/engine/fox_demo.c b/src/engine/fox_demo.c
index 288f9433d..50ebc57e2 100644
--- a/src/engine/fox_demo.c
+++ b/src/engine/fox_demo.c
@@ -210,7 +210,7 @@ void Cutscene_WarpZoneComplete(Player* player) {
                     gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                     gFillScreenAlphaStep = 8;
                     if (gFillScreenAlpha == 255) {
-                        player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                        player->state = PLAYERSTATE_NEXT;
                         player->csTimer = 0;
                         gFadeoutType = 4;
                         if (gCurrentLevel == LEVEL_METEO) {
@@ -564,7 +564,7 @@ void Cutscene_EnterWarpZone(Player* player) {
             if (player->csTimer == 0) {
                 gWarpZoneBgAlpha = 0.0f;
                 gStarWarpDistortion = 0.0f;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.0f;
                 player->unk_018 = 0.0f;
                 gDrawSmallRocks = 0;
@@ -827,7 +827,7 @@ void Cutscene_AllRangeMode(Player* player) {
             }
 
             if (D_ctx_80177A48[1] > 350.0f) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.0f;
                 player->unk_018 = 0.1f;
                 player->unk_194 = 10.0f;
@@ -1240,7 +1240,7 @@ void Cutscene_CoComplete2(Player* player) {
             gCsCamAtZ += D_ctx_80177A48[9];
             player->draw = false;
             if (player->csTimer == 0) {
-                player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                player->state = PLAYERSTATE_NEXT;
                 player->csTimer = 0;
                 gFadeoutType = 4;
                 Audio_FadeOutAll(10);
@@ -1510,7 +1510,7 @@ void Cutscene_UTurn(Player* player) {
             }
 
             if (player->csTimer == 0) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.0f;
                 player->unk_018 = 0.0f;
             }
@@ -1567,7 +1567,7 @@ void Cutscene_KillPlayer(Player* player) {
     Audio_StopPlayerNoise(player->num);
     Audio_KillSfxBySourceAndId(player->sfxSource, NA_SE_ARWING_DOWN);
     Player_PlaySfx(player->sfxSource, NA_SE_ARWING_EXPLOSION, player->num);
-    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+    player->state = PLAYERSTATE_NEXT;
     player->csTimer = 70;
     player->dmgEffectTimer = 20;
     gFadeoutType = 7;
@@ -2126,7 +2126,7 @@ void func_demo_8004F05C(ActorCutscene* this) {
         case LEVEL_BOLSE:
             switch (this->animFrame) {
                 case ACTOR_CS_TEAM_ARWING:
-                    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+                    if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                         this->rot_0F4.z += this->rot_0F4.y;
                         this->vel.x = SIN_DEG(this->rot_0F4.z) * 10.0f;
                         this->obj.rot.z = SIN_DEG(this->rot_0F4.z) * 40.0f;
@@ -2305,8 +2305,8 @@ void ActorCutscene_Update(ActorCutscene* this) {
         return;
     }
 
-    switch (gPlayer[0].state_1C8) {
-        case PLAYERSTATE_1C8_LEVEL_COMPLETE:
+    switch (gPlayer[0].state) {
+        case PLAYERSTATE_LEVEL_COMPLETE:
             switch (gCurrentLevel) {
                 case LEVEL_SECTOR_Y:
                     if (gPlayer[0].csState >= 3) {
@@ -2424,15 +2424,15 @@ void ActorCutscene_Update(ActorCutscene* this) {
             }
             break;
 
-        case PLAYERSTATE_1C8_LEVEL_INTRO:
+        case PLAYERSTATE_LEVEL_INTRO:
             func_demo_8004F05C(this);
             break;
 
-        case PLAYERSTATE_1C8_ENTER_WARP_ZONE:
+        case PLAYERSTATE_ENTER_WARP_ZONE:
             func_demo_8004F798(this);
             break;
 
-        case PLAYERSTATE_1C8_STANDBY:
+        case PLAYERSTATE_STANDBY:
             if (gCurrentLevel == LEVEL_SECTOR_Y) {
                 SectorY_8019FF00(this);
             }
@@ -2642,7 +2642,7 @@ void ActorCutscene_Draw(ActorCutscene* this) {
                 break;
             }
 
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+            if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                 Matrix_Push(&gGfxMatrix);
                 Matrix_RotateX(gGfxMatrix, 20.0f * M_DTOR, MTXF_APPLY);
                 Matrix_RotateY(gGfxMatrix, (gGameFrameCount * 0.5f) * M_DTOR, MTXF_APPLY);
@@ -2696,7 +2696,7 @@ void ActorCutscene_Draw(ActorCutscene* this) {
 
             gDPSetPrimColor(gMasterDisp++, 0, 0, (s32) D_800CA210, (s32) D_800CA214, (s32) D_800CA218, 128);
 
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+            if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
                 Matrix_Scale(gGfxMatrix, 1.02f, 1.02f, 1.02f, MTXF_APPLY);
             } else {
                 Matrix_Scale(gGfxMatrix, 0.97f, 0.97f, 0.97f, MTXF_APPLY);
@@ -2711,7 +2711,7 @@ void ActorCutscene_Draw(ActorCutscene* this) {
             Matrix_Pop(&gGfxMatrix);
             Matrix_Pop(&gGfxMatrix);
 
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
                 Matrix_Scale(gGfxMatrix, 0.075f, 0.075f, 0.075f, MTXF_APPLY);
                 break;
             }
@@ -2729,7 +2729,7 @@ void ActorCutscene_Draw(ActorCutscene* this) {
             break;
 
         case ACTOR_CS_CORNERIAN_FIGHTER:
-            if ((this->index == 3) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+            if ((this->index == 3) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
                 gSPDisplayList(gMasterDisp++, aBillShipDL);
             } else {
                 gSPDisplayList(gMasterDisp++, aKaCornerianFighterDL);
@@ -2917,7 +2917,7 @@ void Cutscene_DrawGreatFox(void) {
     }
 
     if ((gCurrentLevel != LEVEL_AQUAS) &&
-        ((gCurrentLevel != LEVEL_SECTOR_Z) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE))) {
+        ((gCurrentLevel != LEVEL_SECTOR_Z) || (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE))) {
         RCP_SetupDL_49();
         gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
 
diff --git a/src/engine/fox_display.c b/src/engine/fox_display.c
index d400e6cae..0355ef2ea 100644
--- a/src/engine/fox_display.c
+++ b/src/engine/fox_display.c
@@ -36,7 +36,7 @@ void Display_DrawHelpAlert(void) {
         return;
     }
 
-    if ((gTeamHelpActor->obj.status != OBJ_ACTIVE) || (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ACTIVE)) {
+    if ((gTeamHelpActor->obj.status != OBJ_ACTIVE) || (gPlayer[0].state != PLAYERSTATE_ACTIVE)) {
         gTeamHelpActor = NULL;
         gTeamHelpTimer = 0;
         return;
@@ -245,7 +245,7 @@ void Display_OnFootFalco_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) {
 void Display_OnFootMuzzleFlash(Player* player) {
     Matrix_Push(&gGfxMatrix);
     Matrix_Copy(gGfxMatrix, &gIdentityMatrix);
-    if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (player->csTimer != 0)) {
+    if ((player->state == PLAYERSTATE_ACTIVE) && (player->csTimer != 0)) {
         Matrix_Translate(gGfxMatrix, D_display_801613B0[player->num].x, D_display_801613B0[player->num].y,
                          D_display_801613B0[player->num].z, MTXF_APPLY);
         Matrix_Scale(gGfxMatrix, D_display_800CA23C[player->csTimer - 1], D_display_800CA23C[player->csTimer - 1],
@@ -344,7 +344,7 @@ f32 sPlayerShadowing = 0.0f;
 void Display_LandmasterMuzzleFlash(Player* player) {
     Matrix_Push(&gGfxMatrix);
 
-    if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (player->unk_1A0 != 0)) {
+    if ((player->state == PLAYERSTATE_ACTIVE) && (player->unk_1A0 != 0)) {
         Matrix_Translate(gGfxMatrix, D_display_80161548[player->num].x, D_display_80161548[player->num].y,
                          D_display_80161548[player->num].z, MTXF_APPLY);
         Matrix_Scale(gGfxMatrix, D_display_800CA248[player->unk_1A0 - 1], D_display_800CA248[player->unk_1A0 - 1],
@@ -615,7 +615,7 @@ void Display_ArwingWings(ArwingInfo* arwing) {
     Matrix_SetGfxMtx(&gMasterDisp);
     RCP_SetupDL_64_2();
 
-    if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
+    if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
         (gCurrentLevel == LEVEL_CORNERIA)) {
         gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 120);
         gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK);
@@ -713,8 +713,7 @@ void Display_Reticle(Player* player) {
 
     if ((gPlayerNum == player->num) && ((player->form == FORM_ARWING) || (player->form == FORM_LANDMASTER)) &&
         player->draw &&
-        (((gGameState == GSTATE_PLAY) && (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) ||
-         (gGameState == GSTATE_MENU))) {
+        (((gGameState == GSTATE_PLAY) && (player->state == PLAYERSTATE_ACTIVE)) || (gGameState == GSTATE_MENU))) {
         for (i = 0; i < 2; i++) {
             translate = &D_display_801613E0[i];
             Matrix_Push(&gGfxMatrix);
@@ -1149,7 +1148,7 @@ void Display_PlayerFeatures(Player* player) {
     f32 var_fv0;
     s32 pad[3];
 
-    if (player->draw && (player->state_1C8 != PLAYERSTATE_1C8_DOWN)) {
+    if (player->draw && (player->state != PLAYERSTATE_DOWN)) {
         switch (player->form) {
             case FORM_ARWING:
                 Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + player->damageShake + 180.0f) * M_DTOR,
@@ -1229,7 +1228,7 @@ void Display_ArwingWingTrail_Draw(Player* player) {
         yRot *= 0.25f;
         sp50 = player->rot.x * 0.25f;
 
-        if (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+        if (player->state == PLAYERSTATE_LEVEL_COMPLETE) {
             yRot = 0.0f;
             sp50 = 0.0f;
         }
@@ -1694,7 +1693,7 @@ void Display_Update(void) {
 
     Matrix_Push(&gGfxMatrix);
 
-    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         Math_SmoothStepToF(&gCamDistortion, 0.01f, 0.2f, 0.002f, 0.0f);
     } else {
         Math_SmoothStepToF(&gCamDistortion, 0.0f, 0.2f, 0.002f, 0.0f);
@@ -1736,7 +1735,7 @@ void Display_Update(void) {
         if (camPlayer->alternateView && (camPlayer->boostSpeed > 5.0f)) {
             gPlayCamAt.x += SIN_DEG(gGameFrameCount * 150.0f) * camPlayer->boostSpeed * 0.2f;
         }
-    } else if (camPlayer->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    } else if (camPlayer->state == PLAYERSTATE_LEVEL_COMPLETE) {
         Display_CsLevelCompleteHandleCamera(camPlayer);
     } else {
         gPlayCamEye.x = camPlayer->cam.eye.x;
@@ -1772,7 +1771,7 @@ void Display_Update(void) {
 
     if ((gLevelType == LEVELTYPE_PLANET) || (gCurrentLevel == LEVEL_BOLSE)) {
         if ((gCurrentLevel == LEVEL_TITANIA) &&
-            ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO) || (gPlayer[0].unk_19C != 0))) {
+            ((gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO) || (gPlayer[0].unk_19C != 0))) {
             Matrix_Push(&gGfxMatrix);
             Matrix_Translate(gGfxMatrix, 0.0f, gCameraShakeY, 0.0f, MTXF_APPLY);
             Matrix_SetGfxMtx(&gMasterDisp);
@@ -1797,7 +1796,7 @@ void Display_Update(void) {
         Display_SetupPlayerSfxPos(player);
     }
 
-    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         Lights_SetOneLight(&gMasterDisp, gLight2x, -1 * gLight2y, gLight2z, gLight2R, gLight2G, gLight2B, gAmbientR,
                            gAmbientG, gAmbientB);
         Matrix_Push(&gGfxMatrix);
@@ -1818,7 +1817,7 @@ void Display_Update(void) {
     gReflectY = 1;
     PlayerShot_DrawAll();
 
-    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         Matrix_Push(&gGfxMatrix);
         Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, MTXF_APPLY);
         gReflectY = -1;
@@ -1828,7 +1827,7 @@ void Display_Update(void) {
 
     gReflectY = -1;
 
-    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         Matrix_Push(&gGfxMatrix);
         Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, MTXF_APPLY);
         for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) {
@@ -1852,8 +1851,7 @@ void Display_Update(void) {
 
     if ((gCurrentLevel != LEVEL_AQUAS) &&
         (((gCurrentLevel != LEVEL_CORNERIA) && (gCurrentLevel != LEVEL_VENOM_ANDROSS)) ||
-         ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
-          (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)))) {
+         ((gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)))) {
         Effect_Draw(0);
     }
 
@@ -1867,13 +1865,12 @@ void Display_Update(void) {
         }
     }
 
-    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         Aquas_801AA20C();
     }
 
     if (((gCurrentLevel == LEVEL_CORNERIA) || (gCurrentLevel == LEVEL_VENOM_ANDROSS)) &&
-        ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) ||
-         (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO))) {
+        ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) || (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO))) {
         Effect_Draw(0);
     }
 
@@ -1899,14 +1896,13 @@ void Display_Update(void) {
         }
     }
 
-    if ((gLevelMode == LEVELMODE_TURRET) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if ((gLevelMode == LEVELMODE_TURRET) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         Turret_Draw(gPlayer);
     }
 
     Background_DrawLensFlare();
 
-    if ((gCamCount != 1) &&
-        ((camPlayer->state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (camPlayer->state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
+    if ((gCamCount != 1) && ((camPlayer->state == PLAYERSTATE_ACTIVE) || (camPlayer->state == PLAYERSTATE_U_TURN))) {
         HUD_Draw();
         HUD_EdgeArrows_Update();
     }
diff --git a/src/engine/fox_edisplay.c b/src/engine/fox_edisplay.c
index 79c433231..ee6a7c960 100644
--- a/src/engine/fox_edisplay.c
+++ b/src/engine/fox_edisplay.c
@@ -562,15 +562,15 @@ void ActorTeamArwing_Draw(ActorTeamArwing* this) {
     Matrix_MultVec3f(gGfxMatrix, &src, &dest);
 
     if ((((fabsf(dest.z) < 3000.0f) && (fabsf(dest.x) < 3000.0f) && !gBossActive) ||
-         (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) || (gCurrentLevel == LEVEL_VENOM_ANDROSS) ||
-         (gCurrentLevel == LEVEL_VENOM_2) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) &&
+         (gPlayer[0].state == PLAYERSTATE_STANDBY) || (gCurrentLevel == LEVEL_VENOM_ANDROSS) ||
+         (gCurrentLevel == LEVEL_VENOM_2) || (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) &&
         (gCurrentLevel != LEVEL_MACBETH) && (gCurrentLevel != LEVEL_TITANIA)) {
         if (this->obj.id == OBJ_ACTOR_CUTSCENE) {
-            if (((gCurrentLevel == LEVEL_VENOM_2) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
+            if (((gCurrentLevel == LEVEL_VENOM_2) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) &&
                  (this->index == 10)) ||
-                ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gPlayer[0].csState >= 100) &&
+                ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (gPlayer[0].csState >= 100) &&
                  (gCurrentLevel == LEVEL_KATINA) && (this->index == 1)) ||
-                ((gCurrentLevel == LEVEL_SECTOR_Y) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) &&
+                ((gCurrentLevel == LEVEL_SECTOR_Y) && (gPlayer[0].state == PLAYERSTATE_STANDBY) &&
                  (this->state == 5))) {
                 gActorTeamArwing.rightWingState = gPlayer[0].arwing.rightWingState;
                 gActorTeamArwing.leftWingState = gPlayer[0].arwing.leftWingState;
@@ -730,7 +730,7 @@ void Object_SetShadowDL(ObjectId objId, s32 index) {
             break;
 
         case OBJ_BOSS_KA_SAUCERER:
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) {
+            if (gPlayer[0].state == PLAYERSTATE_STANDBY) {
                 RCP_SetupDL(&gMasterDisp, SETUPDL_64);
                 gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 200);
             }
@@ -1154,7 +1154,7 @@ void Actor_DrawAllRange(Actor* this) {
                     Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY);
                     this->info.draw(&this->obj);
                     sDrewActor = true;
-                    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (this->obj.id == OBJ_ACTOR_ALLRANGE) &&
+                    if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && (this->obj.id == OBJ_ACTOR_ALLRANGE) &&
                         (this->aiType == AI360_MISSILE)) {
                         gTeamArrowsViewPos[0] = sViewPos;
                     }
@@ -1165,8 +1165,7 @@ void Actor_DrawAllRange(Actor* this) {
         Matrix_Translate(gGfxMatrix, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, MTXF_APPLY);
         Matrix_MultVec3f(gGfxMatrix, &srcViewPos, &sViewPos);
 
-        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) ||
-            (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) ||
+        if ((gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) || (gPlayer[0].state == PLAYERSTATE_STANDBY) ||
             ((this->obj.id == OBJ_ACTOR_ALLRANGE) && (this->aiType >= AI360_GREAT_FOX)) ||
             ((this->obj.id == OBJ_ACTOR_CUTSCENE) && (this->info.bonus != 0))) {
             var_ft5 = var_fv0 = 3000.0f;
@@ -1189,7 +1188,7 @@ void Actor_DrawAllRange(Actor* this) {
                         Matrix_SetGfxMtx(&gMasterDisp);
                         this->info.draw(&this->obj);
                         sDrewActor = true;
-                        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) &&
+                        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) &&
                             (((this->obj.id == OBJ_ACTOR_ALLRANGE) &&
                               ((this->aiType <= AI360_PEPPY) || (this->aiType == AI360_KATT) ||
                                (this->aiType == AI360_BILL))) ||
@@ -1606,7 +1605,7 @@ void Display_SetSecondLight(Vec3f* pos) {
         sp9C.z = pos->z - gLight3z;
 
         lightDist = VEC3F_MAG(&sp9C);
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+        if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
             lightFade = 700.0f / lightDist;
         } else {
             lightFade = 200.0f / lightDist;
@@ -1780,8 +1779,8 @@ void Object_DrawAll(s32 cullDirection) {
                 case LEVELMODE_TURRET:
                     Matrix_Push(&gGfxMatrix);
 
-                    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) ||
-                        (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) || (gCurrentLevel == LEVEL_AQUAS)) {
+                    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) ||
+                        (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) || (gCurrentLevel == LEVEL_AQUAS)) {
                         Display_SetSecondLight(&actor->obj.pos);
                     }
 
@@ -1881,7 +1880,7 @@ void Object_Draw(s32 arg0) {
     gReflectY = 1;
     Object_DrawAll(1);
 
-    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         gReflectY = -1;
         Lights_SetOneLight(&gMasterDisp, gLight1x, -1 * gLight1y, gLight1z, gLight1R, gLight1G, gLight1B, gAmbientR,
                            gAmbientG, gAmbientB);
@@ -1898,7 +1897,7 @@ void Effect_Draw(u8 arg0) {
     if (arg0 == 0) {
         gReflectY = 1;
         Effect_DrawAll(1);
-    } else if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    } else if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         gReflectY = -1;
         Matrix_Push(&gGfxMatrix);
         Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, MTXF_APPLY);
diff --git a/src/engine/fox_effect.c b/src/engine/fox_effect.c
index 512d82361..9c18c3c13 100644
--- a/src/engine/fox_effect.c
+++ b/src/engine/fox_effect.c
@@ -59,7 +59,7 @@ void BonusText_Update(void) {
 
             if (gLevelMode == LEVELMODE_ON_RAILS) {
                 bonus->pos.z -= gPathVelZ;
-            } else if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+            } else if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
                 bonus->pos.x += gPlayer[0].vel.x;
                 bonus->pos.z += gPlayer[0].vel.z;
             }
@@ -229,7 +229,7 @@ void Effect_Effect384_Draw(Effect384* this) {
     Graphics_SetScaleMtx(this->scale2);
 
     if ((this->scale1 == 71.0f) ||
-        ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gCurrentLevel == LEVEL_CORNERIA))) {
+        ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (gCurrentLevel == LEVEL_CORNERIA))) {
         RCP_SetupDL(&gMasterDisp, SETUPDL_38);
     } else {
         RCP_SetupDL(&gMasterDisp, SETUPDL_67);
@@ -696,8 +696,7 @@ void Effect_Effect357_Update(Effect357* this) {
         this->vel.y -= 0.5f;
     }
 
-    if ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
-        (gCsFrameCount > 175)) {
+    if ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (gCsFrameCount > 175)) {
         this->vel.x *= 0.95f;
         this->vel.y *= 0.95f;
         this->vel.z *= 0.95f;
@@ -724,7 +723,7 @@ bool func_effect_800798C4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, vo
 void Effect_Effect357_Draw(Effect357* this) {
     Vec3f frameJointTable[50];
 
-    if ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+    if ((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
         Display_SetSecondLight(&this->obj.pos);
     }
 
@@ -1486,11 +1485,11 @@ void Effect_Effect362_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) {
 }
 
 void Effect_Effect362_Update(Effect362* this) {
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
         this->obj.rot.x = RAD_TO_DEG(gPlayer[0].camPitch);
         this->obj.rot.y = RAD_TO_DEG(-gPlayer[0].camYaw);
     }
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT) {
+    if (gPlayer[0].state == PLAYERSTATE_NEXT) {
         this->unk_46 = 2;
         this->vel.y -= 0.13f;
     }
@@ -1723,7 +1722,7 @@ void Effect_Effect343_Setup(Effect343* this, f32 xPos, f32 yPos, f32 zPos, f32 s
         this->unk_48 = -this->unk_48;
     }
 
-    if ((gCurrentLevel == LEVEL_FORTUNA) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_NEXT)) {
+    if ((gCurrentLevel == LEVEL_FORTUNA) && (gPlayer[0].state != PLAYERSTATE_NEXT)) {
         this->unk_4A = 180;
     } else {
         this->unk_4A = 255;
@@ -1761,7 +1760,7 @@ void Effect_Effect387_Update(Effect387* this) {
     s32 var_v0;
 
     var_v0 = 1 - 1;
-    if ((gCurrentLevel == LEVEL_FORTUNA) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_NEXT)) {
+    if ((gCurrentLevel == LEVEL_FORTUNA) && (gPlayer[0].state != PLAYERSTATE_NEXT)) {
         var_v0 = 4 - 1;
     }
 
@@ -1997,7 +1996,7 @@ void func_effect_8007D2C8(f32 xPos, f32 yPos, f32 zPos, f32 scale2) {
 
 void Effect_Effect339_Update(EffectFireSmoke* this) {
     if (gLevelType == LEVELTYPE_PLANET) {
-        if ((gCurrentLevel == LEVEL_KATINA) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+        if ((gCurrentLevel == LEVEL_KATINA) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
             this->vel.y += 0.1f;
             if (this->timer_50 == 0) {
                 this->unk_4C++;
@@ -2010,7 +2009,7 @@ void Effect_Effect339_Update(EffectFireSmoke* this) {
                 }
             }
         } else {
-            if ((gCurrentLevel == LEVEL_MACBETH) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
+            if ((gCurrentLevel == LEVEL_MACBETH) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) &&
                 (this->vel.x != 0)) {
                 Math_SmoothStepToF(&this->vel.x, -1.0f, 1.0f, 1.0f, 0.0f);
                 Math_SmoothStepToF(&this->vel.z, 4.0f, 1.0f, 1.0f, 0.0f);
diff --git a/src/engine/fox_enmy.c b/src/engine/fox_enmy.c
index 12c3def1a..21e5e2414 100644
--- a/src/engine/fox_enmy.c
+++ b/src/engine/fox_enmy.c
@@ -98,7 +98,7 @@ bool func_enmy_80060FE4(Vec3f* arg0, f32 arg1) {
     Vec3f src;
     Vec3f dest;
 
-    if ((gLevelMode != LEVELMODE_ALL_RANGE) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gLevelMode != LEVELMODE_ALL_RANGE) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         return true;
     }
 
@@ -125,7 +125,7 @@ bool func_enmy_80061148(Vec3f* arg0, f32 arg1) {
         return true;
     }
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
         return func_enmy_80060FE4(arg0, arg1);
     }
 
@@ -1650,7 +1650,7 @@ void ActorMissileSeek_Update(Actor* this) {
     sp8C.z = this->vel.z;
 
     if ((Object_CheckCollision(this->index, &this->obj.pos, &sp8C, 1) != 0) || (this->dmgType != DMG_NONE) ||
-        (this->obj.pos.y < (gGroundHeight + 10.0f)) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+        (this->obj.pos.y < (gGroundHeight + 10.0f)) || (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
         func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f);
         Object_Kill(&this->obj, this->sfxSource);
         if (this->dmgType != DMG_NONE) {
@@ -1982,7 +1982,7 @@ void func_enmy_80066EE4(Sprite* this) {
 void Item_CheckBounds(Item* this) {
     f32 var_fa1;
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY)) {
+    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) || (gPlayer[0].state == PLAYERSTATE_STANDBY)) {
         Object_Kill(&this->obj, this->sfxSource);
     }
 
@@ -2417,7 +2417,7 @@ void ItemMeteoWarp_Update(ItemMeteoWarp* this) {
 
             gRingPassCount++;
             if (gRingPassCount >= 7) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ENTER_WARP_ZONE;
+                gPlayer[0].state = PLAYERSTATE_ENTER_WARP_ZONE;
                 gPlayer[0].csState = 0;
                 AUDIO_PLAY_SFX(NA_SE_WARP_HOLE, gDefaultSfxSource, 0);
                 gMissionStatus = MISSION_WARP;
@@ -2487,14 +2487,14 @@ void ItemRingCheck_Update(Item* this) {
 void ItemPathChange_Update(Item* this) {
     gLastPathChange = this->obj.id;
 
-    if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ACTIVE) {
+    if (gPlayer[0].state != PLAYERSTATE_ACTIVE) {
         Object_Kill(&this->obj, this->sfxSource);
     } else if (((gCurrentLevel == LEVEL_METEO) || (gCurrentLevel == LEVEL_SECTOR_X)) && (gLevelPhase == 1)) {
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
         gPlayer[0].csState = 0;
         Object_Kill(&this->obj, this->sfxSource);
     } else if (gCurrentLevel == LEVEL_TRAINING) {
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_START_360;
+        gPlayer[0].state = PLAYERSTATE_START_360;
         gPlayer[0].csState = 0;
         Object_Kill(&this->obj, this->sfxSource);
     } else if (this->state == 0) {
@@ -2659,7 +2659,7 @@ void Actor_Move(Actor* this) {
     if ((this->obj.id == OBJ_ACTOR_ZO_DODORA) || (gCurrentLevel == LEVEL_MACBETH) ||
         ((this->obj.id == OBJ_ACTOR_EVENT) && (this->eventType == EVID_TI_GREAT_FOX))) {
         var_fv0 = 8000.0f;
-    } else if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ENTER_WARP_ZONE) {
+    } else if (gPlayer[0].state == PLAYERSTATE_ENTER_WARP_ZONE) {
         var_fv0 = 100000.0f;
     }
 
@@ -2710,7 +2710,7 @@ void Boss_Move(Boss* this) {
 }
 
 void Scenery_Move(Scenery* this) {
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) {
         this->obj.pos.z += this->effectVel.z;
         if (this->info.cullDistance < this->obj.pos.z) {
             Object_Kill(&this->obj, this->sfxSource);
@@ -3001,7 +3001,7 @@ void TexturedLine_Update(TexturedLine* this) {
 
     if (gGameState == GSTATE_PLAY) {
         if (((this->mode == 1) || (this->mode == 101) || (this->mode == 50)) &&
-            (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (gPlayer[0].hitTimer == 0)) {
+            (gPlayer[0].state == PLAYERSTATE_ACTIVE) && (gPlayer[0].hitTimer == 0)) {
             Matrix_RotateX(gCalcMatrix, -this->xRot, MTXF_NEW);
             Matrix_RotateY(gCalcMatrix, -this->yRot, MTXF_APPLY);
 
@@ -3062,13 +3062,13 @@ void Object_Update(void) {
 
     gCullObjects = false;
     if ((gLevelMode == LEVELMODE_ON_RAILS) &&
-        ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_INIT) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-         (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_DOWN) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ENTER_WARP_ZONE) ||
-         (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_START_360) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT))) {
+        ((gPlayer[0].state == PLAYERSTATE_INIT) || (gPlayer[0].state == PLAYERSTATE_ACTIVE) ||
+         (gPlayer[0].state == PLAYERSTATE_DOWN) || (gPlayer[0].state == PLAYERSTATE_ENTER_WARP_ZONE) ||
+         (gPlayer[0].state == PLAYERSTATE_START_360) || (gPlayer[0].state == PLAYERSTATE_NEXT))) {
         gCullObjects = true;
     }
     if (gLevelMode != LEVELMODE_ALL_RANGE) {
-        if ((gLoadLevelObjects != 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+        if ((gLoadLevelObjects != 0) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
             Object_LoadLevelObjects();
         }
         for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) {
diff --git a/src/engine/fox_enmy2.c b/src/engine/fox_enmy2.c
index ae47c3c2d..317ceccf8 100644
--- a/src/engine/fox_enmy2.c
+++ b/src/engine/fox_enmy2.c
@@ -1186,7 +1186,7 @@ void ActorEvent_ProcessScript(ActorEvent* this) {
                 this->drawShadow = true;
             }
 
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+            if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
                 if (this->eventType == EVID_KATT) {
                     Audio_PlayFanfare(NA_BGM_KATT, 20, 10, 10);
                 }
@@ -1333,7 +1333,7 @@ void ActorEvent_ProcessScript(ActorEvent* this) {
 
         case EV_OPC(EVOP_PLAY_MSG):
             msg = Message_PtrFromId(actorScript[this->aiIndex + 1]);
-            if ((msg != NULL) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+            if ((msg != NULL) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
                 Radio_PlayMessage(msg, actorScript[this->aiIndex] & 0x1FF);
             }
             this->aiIndex += 2;
@@ -1842,7 +1842,7 @@ void ActorEvent_ProcessActions(ActorEvent* this) {
     Vec3f sp6C;
     Sprite* sprite;
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (this->eventType != EVID_SARUMARINE_PERISCOPE) &&
+    if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && (this->eventType != EVID_SARUMARINE_PERISCOPE) &&
         (this->eventType != EVID_ANDROSS_GATE) && (this->eventType != EVID_ANDROSS_GATE_2) &&
         (this->eventType != EVID_SY_ROBOT_1) && (this->eventType != EVID_SY_ROBOT_2) &&
         (this->eventType != EVID_SY_ROBOT_3)) {
@@ -3044,7 +3044,7 @@ void ActorEvent_Update(ActorEvent* this) {
     Vec3f spAC;
     Vec3f spA0;
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) || gKillEventActors) {
+    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) || gKillEventActors) {
         Object_Kill(&this->obj, this->sfxSource);
         return;
     }
@@ -3461,7 +3461,7 @@ void ActorEvent_Update(ActorEvent* this) {
         this->vel.z -= gPathVelZ;
     }
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ENTER_WARP_ZONE) {
+    if (gPlayer[0].state == PLAYERSTATE_ENTER_WARP_ZONE) {
         this->vel.z = 100.0f;
     }
 
diff --git a/src/engine/fox_hud.c b/src/engine/fox_hud.c
index 727e43d2e..31907b257 100644
--- a/src/engine/fox_hud.c
+++ b/src/engine/fox_hud.c
@@ -12,7 +12,7 @@ s32 D_801616D0[13];
 s32 D_hud_80161704;
 s32 D_hud_80161708;
 s32 D_hud_8016170C;
-s32 D_hud_80161710;
+s32 gRadarMissileAlarmTimer;
 s32 gTotalHits;
 s32 D_80161718;
 s32 D_8016171C;
@@ -187,7 +187,7 @@ void HUD_TeamDownWrench_Draw(s32 arg0) {
 
     if (arg0 == 0) {
         for (i = 1; i < 4; i++) {
-            if (((gTeamShields[i] != 0) || (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) &&
+            if (((gTeamShields[i] != 0) || (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) &&
                 (gTeamShields[i] <= 0) && (gTeamShields[i] != -2)) {
                 Matrix_Push(&gGfxMatrix);
                 Matrix_Translate(gGfxMatrix, sTeamDownWrenchPos[i - 1].x, sTeamDownWrenchPos[i - 1].y,
@@ -470,7 +470,7 @@ void HUD_TeamShields_Draw(f32 xPos, f32 yPos, s32 arg2) {
         ((gPlayState == PLAY_PAUSE) || (gShowLevelClearStatusScreen == 1) || (gLevelStartStatusScreenTimer != 0))) {
         RCP_SetupDL(&gMasterDisp, SETUPDL_76);
         gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
-        if ((arg2 == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+        if ((arg2 == 0) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
             Graphics_DisplaySmallText(xPos + (8.0f * xScale) + 4.0f, yPos + 2.0f, 1.0f, 1.0f, " OK ");
         } else {
             Graphics_DisplaySmallText(xPos + (8.0f * xScale) + 4.0f, yPos + 2.0f, 1.0f, 1.0f, "DOWN");
@@ -1451,7 +1451,7 @@ void HUD_PauseScreen_Update(void) {
                 break;
 
             case 2:
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                gPlayer[0].state = PLAYERSTATE_STANDBY;
                 gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                 gFillScreenAlphaTarget = 255;
                 gFillScreenAlphaStep = 32;
@@ -1570,7 +1570,7 @@ void HUD_PauseScreen_Update(void) {
                 gSavedHitCount = gSavedObjectLoadIndex = 0;
 
                 Audio_StopPlayerNoise(0);
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_NEXT;
+                gPlayer[0].state = PLAYERSTATE_NEXT;
                 gScreenFlashTimer = 0;
                 gPlayer[0].csTimer = 0;
                 gFillScreenAlpha = gFillScreenAlphaTarget = 255;
@@ -1858,7 +1858,7 @@ void HUD_RadarMark_Draw(s32 type) {
                     arwingMarkColor = 1;
                 }
 
-                if (gPlayer[type].state_1C8 == PLAYERSTATE_1C8_VS_STANDBY) {
+                if (gPlayer[type].state == PLAYERSTATE_VS_STANDBY) {
                     break;
                 }
             }
@@ -1955,7 +1955,7 @@ void HUD_RadarMarks_Setup(void) {
     Item* item;
 
     for (i = 0; i < gCamCount; i++) {
-        if (gPlayer[i].state_1C8 == PLAYERSTATE_1C8_NEXT) {
+        if (gPlayer[i].state == PLAYERSTATE_NEXT) {
             continue;
         }
         gRadarMarks[i].enabled = true;
@@ -1972,7 +1972,7 @@ void HUD_RadarMarks_Setup(void) {
             continue;
         }
 
-        if (gPlayer[i].state_1C8 != PLAYERSTATE_1C8_ACTIVE) {
+        if (gPlayer[i].state != PLAYERSTATE_ACTIVE) {
             continue;
         }
 
@@ -2132,11 +2132,11 @@ s32 HUD_RadarMarks_Update(void) {
     Matrix_Push(&gGfxMatrix);
     Matrix_Translate(gGfxMatrix, x1, y1, z1, MTXF_APPLY);
 
-    if ((gCurrentLevel == LEVEL_SECTOR_Z) && (D_hud_80161710 != 0)) {
+    if ((gCurrentLevel == LEVEL_SECTOR_Z) && (gRadarMissileAlarmTimer != 0)) {
         Matrix_Push(&gGfxMatrix);
         HUD_RadarMissileAlarm_Draw();
         Matrix_Pop(&gGfxMatrix);
-        D_hud_80161710--;
+        gRadarMissileAlarmTimer--;
     }
 
     for (i = ARRAY_COUNT(gRadarMarks) - 1; i >= 0; i--) {
@@ -4170,7 +4170,7 @@ void ActorTeamBoss_SetAction(ActorTeamBoss* this) {
         this->state = 3;
     }
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
         if ((this->state != 2) && (this->state != 3)) {
             this->iwork[4] = 1;
             this->state = 2;
@@ -4457,7 +4457,7 @@ void ActorTeamBoss_Radarmarks_Init(ActorTeamBoss* this) {
 void ActorTeamBoss_DmgEffect(ActorTeamBoss* this) {
     s32 mask;
 
-    if ((gTeamShields[this->aiType] < 64) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+    if ((gTeamShields[this->aiType] < 64) && (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
         mask = 8 - 1;
         if (gTeamShields[this->aiType] > 16) {
             mask = 16 - 1;
@@ -4753,14 +4753,14 @@ void ActorTeamBoss_Update(ActorTeamBoss* this) {
             }
 
             if ((this->iwork[10] != 0) && (gLevelMode == LEVELMODE_ALL_RANGE) && (this->iwork[9] == 0) &&
-                (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+                (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 this->work_048 = 2;
                 this->work_04A = 0;
             }
 
             if ((gLevelMode == LEVELMODE_ALL_RANGE) &&
                 (fabsf(this->obj.pos.x > range) || fabsf(this->obj.pos.z > range)) &&
-                (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+                (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 this->work_048 = 2;
                 this->work_04A = 1;
             }
@@ -4800,7 +4800,7 @@ void Aquas_CsIntroActors_Update(ActorCutscene* this) {
     if (this->state == 0) {
         switch (this->animFrame) {
             case 1:
-                if ((player->state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO) || (this->animFrame != 1)) {
+                if ((player->state != PLAYERSTATE_LEVEL_INTRO) || (this->animFrame != 1)) {
                     if (gCsFrameCount > 1588) {
                         this->fwork[0] = 5.0f;
                     } else {
@@ -4865,8 +4865,7 @@ void Aquas_Effect363_Spawn(f32 x, f32 y, f32 z, f32 arg3) {
             effect->obj.pos.y = y;
             effect->obj.pos.z = z;
 
-            if ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) &&
-                (player->csState < 2)) {
+            if ((player->state == PLAYERSTATE_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (player->csState < 2)) {
                 effect->scale1 = 0.4f;
                 effect->unk_44 = 0;
                 effect->unk_46 = 24;
@@ -5285,7 +5284,7 @@ void Aquas_CsLevelStart(Player* player) {
             if (player->csTimer <= 900) {
                 gLevelStartStatusScreenTimer = 50;
 
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->csTimer = 0;
 
@@ -5341,7 +5340,7 @@ f32 D_800D24CC = 0.02f;
 void Aquas_Effect363_Update(Effect363* this) {
     Player* player = &gPlayer[0];
 
-    if ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (player->csState < 2)) {
+    if ((player->state == PLAYERSTATE_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (player->csState < 2)) {
         switch (this->state) {
             case 0:
                 this->unk_44 += this->unk_46;
@@ -5372,12 +5371,12 @@ void Aquas_Effect363_Update(Effect363* this) {
         }
         this->obj.rot.z += this->unk_48;
     } else {
-        if (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+        if (player->state == PLAYERSTATE_LEVEL_COMPLETE) {
             this->obj.rot.x = RAD_TO_DEG(player->camPitch);
             this->obj.rot.y = RAD_TO_DEG(-player->camYaw);
         }
 
-        if (player->state_1C8 == PLAYERSTATE_1C8_NEXT) {
+        if (player->state == PLAYERSTATE_NEXT) {
             this->unk_46 = 2;
             if (player->csState >= 4) {
                 this->vel.y -= 0.13f;
@@ -5387,8 +5386,8 @@ void Aquas_Effect363_Update(Effect363* this) {
         this->scale2 += 0.8f;
         this->unk_4A -= this->unk_46;
 
-        if ((this->unk_4A < 0) || ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
-                                   (gCurrentLevel == LEVEL_AQUAS) && (player->csState == 5))) {
+        if ((this->unk_4A < 0) ||
+            ((player->state == PLAYERSTATE_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (player->csState == 5))) {
             Object_Kill(&this->obj, this->sfxSource);
         }
         this->obj.rot.z += this->unk_48;
@@ -5396,8 +5395,7 @@ void Aquas_Effect363_Update(Effect363* this) {
 }
 
 void Aquas_Effect363_Draw(Effect363* this) {
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) &&
-        (gPlayer[0].csState < 2)) {
+    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].csState < 2)) {
         RCP_SetupDL(&gMasterDisp, SETUPDL_68);
         gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 21, 34, this->unk_4A);
         gDPSetEnvColor(gMasterDisp++, 255, 255, 251, 0);
@@ -5887,7 +5885,7 @@ void Aquas_CsLevelComplete(Player* player) {
 
                 if (gFillScreenAlpha == 255) {
                     gLeveLClearStatus[LEVEL_AQUAS] = Play_CheckMedalStatus(150) + 1;
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     Audio_FadeOutAll(10);
                     gFadeoutType = 4;
@@ -6110,7 +6108,7 @@ void Venom1_LevelStart2(Player* player) {
             if (gCsFrameCount == 300) {
                 gPathTexScroll = 0;
                 gLevelStartStatusScreenTimer = 50;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->baseSpeed = gArwingSpeed;
                 player->csState = 0;
                 player->csTimer = 0;
diff --git a/src/engine/fox_play.c b/src/engine/fox_play.c
index 139408887..95900a194 100644
--- a/src/engine/fox_play.c
+++ b/src/engine/fox_play.c
@@ -1549,8 +1549,7 @@ void Player_CheckItemCollect(Player* player) {
 
     for (i = 0, item = gItems; i < ARRAY_COUNT(gItems); i++, item++) {
         if ((item->obj.status == OBJ_ACTIVE) &&
-            ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (player->state_1C8 == PLAYERSTATE_1C8_U_TURN)) &&
-            (item->timer_4A == 0) &&
+            ((player->state == PLAYERSTATE_ACTIVE) || (player->state == PLAYERSTATE_U_TURN)) && (item->timer_4A == 0) &&
             Player_CheckHitboxCollision(player, item->info.hitbox, &sp6C, item->obj.pos.x, item->obj.pos.y,
                                         item->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f)) {
             item->collected = true;
@@ -1694,7 +1693,7 @@ void Player_CollisionCheck(Player* player) {
                 break;
         }
     } else if (player->form == FORM_ARWING) {
-        if ((player->hit1.y < (gGroundHeight + 13.0f)) && (player->state_1C8 != PLAYERSTATE_1C8_DOWN)) {
+        if ((player->hit1.y < (gGroundHeight + 13.0f)) && (player->state != PLAYERSTATE_DOWN)) {
             if (gGroundSurface == SURFACE_WATER) {
                 player->hitTimer = 7;
                 player->rot.x = (player->baseSpeed + player->boostSpeed) * 0.5f;
@@ -1707,7 +1706,7 @@ void Player_CollisionCheck(Player* player) {
                 Effect_Effect362_Spawn(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f);
             }
         }
-        if ((player->hit2.y < (gGroundHeight + 13.0f)) && (player->state_1C8 != PLAYERSTATE_1C8_DOWN)) {
+        if ((player->hit2.y < (gGroundHeight + 13.0f)) && (player->state != PLAYERSTATE_DOWN)) {
             if (gGroundSurface == SURFACE_WATER) {
                 player->hitTimer = 7;
                 player->rot.x = (player->baseSpeed + player->boostSpeed) * 0.5f;
@@ -2152,7 +2151,7 @@ void Player_CollisionCheck(Player* player) {
 
     if (gCamCount == 4) {
         for (opponent = &gPlayer[3], i = 3; i >= 0; i--, opponent--) {
-            if ((i != gPlayerNum) && (opponent->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+            if ((i != gPlayerNum) && (opponent->state == PLAYERSTATE_ACTIVE)) {
                 spC8.x = 25.0f;
                 if (player->form == FORM_ON_FOOT) {
                     spC8.x = 4.0f;
@@ -2212,7 +2211,7 @@ void Player_CollisionCheck(Player* player) {
                 player->knockback.y = 30.0f;
                 player->rot.x = (player->baseSpeed + player->boostSpeed) * 0.8f;
             }
-            if (player->state_1C8 == PLAYERSTATE_1C8_DOWN) {
+            if (player->state == PLAYERSTATE_DOWN) {
                 player->radioDamageTimer = 2;
                 Effect_Effect382_Spawn(player->pos.x, player->trueZpos, 30.0f, 0.0f, 5.0f);
                 Effect_Effect382_Spawn(player->pos.x, player->trueZpos, -30.0f, 0.0f, 5.0f);
@@ -2814,7 +2813,7 @@ void Play_Init(void) {
     Player_InitializeAll();
 
     for (i = 0; i < gCamCount; i++) {
-        gPlayer[i].state_1C8 = PLAYERSTATE_1C8_INIT;
+        gPlayer[i].state = PLAYERSTATE_INIT;
         gPlayerGlareAlphas[i] = D_ctx_801783C0[i] = 0;
         gControllerRumbleTimers[i] = 0;
         gPlayerScores[i] = 0;
@@ -3174,8 +3173,8 @@ bool Player_CanLockOn(s32 playerNum) {
 
     if (gVersusMode) {
         for (i = 0; i < gCamCount; i++) {
-            if (((gPlayer[playerNum].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                 (gPlayer[playerNum].state_1C8 == PLAYERSTATE_1C8_U_TURN)) &&
+            if (((gPlayer[playerNum].state == PLAYERSTATE_ACTIVE) ||
+                 (gPlayer[playerNum].state == PLAYERSTATE_U_TURN)) &&
                 (gVsLockOnTimers[i][playerNum] != 0)) {
                 return false;
             }
@@ -3198,7 +3197,7 @@ bool Player_UpdateLockOn(Player* player) {
         }
 
         if (!((gInputHold->button & R_TRIG) && (gInputHold->button & Z_TRIG) && (player->form == FORM_ARWING) &&
-              (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) &&
+              (player->state == PLAYERSTATE_ACTIVE)) &&
             ((gGameFrameCount % 4) == 0) && Player_CanLockOn(player->num)) {
             if (gChargeTimers[player->num] > 20) {
                 for (i = 0; i < 13; i++) { // bug? should be 11
@@ -3555,7 +3554,7 @@ void Player_CheckBounds360(Player* player) {
             var_fv1 = 100000.0f;
         }
         if ((var_fv1 < fabsf(player->pos.x)) || (var_fv1 < fabsf(player->pos.z))) {
-            player->state_1C8 = PLAYERSTATE_1C8_U_TURN;
+            player->state = PLAYERSTATE_U_TURN;
             player->unk_19C = 0;
             player->csState = 0;
             player->unk_000 = 0.0f;
@@ -4616,7 +4615,7 @@ void Player_Setup(Player* playerx) {
         Camera_Update360(player, true);
     }
 
-    player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+    player->state = PLAYERSTATE_ACTIVE;
     player->wingPosition = gLevelType;
 
     if ((gLevelMode == LEVELMODE_ALL_RANGE) && !gVersusMode) {
@@ -4650,7 +4649,7 @@ void Player_Setup(Player* playerx) {
 
         switch (gCurrentLevel) {
             case LEVEL_CORNERIA:
-                player->state_1C8 = PLAYERSTATE_1C8_LEVEL_INTRO;
+                player->state = PLAYERSTATE_LEVEL_INTRO;
                 player->wingPosition = 1;
                 gGroundSurface = gSavedGroundSurface = SURFACE_WATER;
                 Play_dummy_MuteSfx();
@@ -4672,10 +4671,10 @@ void Player_Setup(Player* playerx) {
             case LEVEL_KATINA:
             case LEVEL_SECTOR_Z:
             case LEVEL_VENOM_2:
-                player->state_1C8 = PLAYERSTATE_1C8_LEVEL_INTRO;
+                player->state = PLAYERSTATE_LEVEL_INTRO;
                 break;
             case LEVEL_METEO:
-                player->state_1C8 = PLAYERSTATE_1C8_LEVEL_INTRO;
+                player->state = PLAYERSTATE_LEVEL_INTRO;
                 break;
         }
     } else {
@@ -4700,7 +4699,7 @@ void Player_Setup(Player* playerx) {
         }
     }
 
-    if (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) {
+    if (player->state == PLAYERSTATE_LEVEL_INTRO) {
         player->draw = true;
         switch (gCurrentLevel) {
             case LEVEL_CORNERIA:
@@ -4780,7 +4779,7 @@ void Player_Setup(Player* playerx) {
     Display_SetupPlayerSfxPos(player);
 
     if (!gVersusMode && (((gCurrentLevel != LEVEL_TITANIA) && (gCurrentLevel != LEVEL_SOLAR)) || gVersusMode ||
-                         (player->state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO))) {
+                         (player->state != PLAYERSTATE_LEVEL_INTRO))) {
         Audio_StartPlayerNoise(gPlayerNum);
     }
 
@@ -5029,7 +5028,7 @@ void Player_ArwingBoost(Player* player) {
             }
         }
         if ((gInputHold->button & gBoostButton[player->num]) && !(gInputHold->button & gBrakeButton[player->num]) &&
-            (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && !player->boostCooldown) {
+            (player->state != PLAYERSTATE_U_TURN) && !player->boostCooldown) {
             if (player->boostMeter == 0.0f) {
                 Player_PlaySfx(player->sfxSource, NA_SE_ARWING_BOOST, player->num);
                 player->unk_194 = 5.0f;
@@ -5116,7 +5115,7 @@ void Player_ArwingBrake(Player* player) {
         (gUturnBrakeTimers[gPlayerNum] != 0)) {
         gUturnDownTimers[gPlayerNum] = 0;
         gUturnBrakeTimers[gPlayerNum] = 0;
-        player->state_1C8 = PLAYERSTATE_1C8_U_TURN;
+        player->state = PLAYERSTATE_U_TURN;
         player->csState = 0;
         player->unk_19C = 1;
         player->unk_000 = 0.0f;
@@ -5129,7 +5128,7 @@ void Player_ArwingBrake(Player* player) {
     }
 
     if ((gInputHold->button & gBrakeButton[player->num]) && !(gInputHold->button & gBoostButton[player->num]) &&
-        (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && !player->boostCooldown) {
+        (player->state != PLAYERSTATE_U_TURN) && !player->boostCooldown) {
         if (player->boostMeter == 0.0f) {
             Player_PlaySfx(player->sfxSource, NA_SE_ARWING_BRAKE, player->num);
             if ((gLevelMode == LEVELMODE_ALL_RANGE) && (gInputPress->button & gBrakeButton[player->num])) {
@@ -5420,7 +5419,7 @@ void Player_UpdateEffects(Player* player) {
         if (player->form == FORM_ARWING) {
             player->damageShake =
                 SIN_DEG(player->hitTimer * 400.0f) * player->hitTimer * D_800D3164[player->hitDirection];
-            if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+            if (player->state == PLAYERSTATE_ACTIVE) {
                 player->xShake =
                     SIN_DEG(player->hitTimer * 400.0f) * player->hitTimer * D_800D3164[player->hitDirection] * 0.8f;
             }
@@ -5512,7 +5511,7 @@ void Play_dummy_800B41E0(Player* player) {
 }
 
 void Player_Down(Player* player) {
-    player->state_1C8 = PLAYERSTATE_1C8_DOWN;
+    player->state = PLAYERSTATE_DOWN;
 
     if (!gVersusMode) {
         SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1);
@@ -5676,7 +5675,7 @@ void Player_Update360(Player* player) {
 void Player_LowHealthMsg(Player* player) {
     s32 teamId;
 
-    if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (gTeamLowHealthMsgTimer >= 0)) {
+    if ((player->state == PLAYERSTATE_ACTIVE) && (gTeamLowHealthMsgTimer >= 0)) {
         gTeamLowHealthMsgTimer++;
         if (gTeamLowHealthMsgTimer > 32 * 30) {
             gTeamLowHealthMsgTimer = 0;
@@ -5748,13 +5747,13 @@ void Player_Update(Player* player) {
             *gControllerRumble = 1;
         }
     }
-    if (player->state_1C8 > PLAYERSTATE_1C8_INIT) {
+    if (player->state > PLAYERSTATE_INIT) {
         Player_UpdateEffects(player);
     }
 
     player->flags_228 = 0;
 
-    if ((player->state_1C8 > PLAYERSTATE_1C8_INIT) && (player->form == FORM_ARWING) && !gVersusMode) {
+    if ((player->state > PLAYERSTATE_INIT) && (player->form == FORM_ARWING) && !gVersusMode) {
         switch (player->wingPosition) {
             case 0:
                 sp1C4 = Animation_GetFrameData(&D_arwing_3015AF4, 0, sp58);
@@ -5774,27 +5773,27 @@ void Player_Update(Player* player) {
         player->whooshTimer--;
     }
 
-    switch (player->state_1C8) {
-        case PLAYERSTATE_1C8_STANDBY:
+    switch (player->state) {
+        case PLAYERSTATE_STANDBY:
             player->draw = false;
             gShowHud = false;
             gPauseEnabled = false;
             break;
 
-        case PLAYERSTATE_1C8_INIT:
+        case PLAYERSTATE_INIT:
             Player_Setup(player);
             gFillScreenAlphaTarget = 0;
             gPauseEnabled = false;
             break;
 
-        case PLAYERSTATE_1C8_LEVEL_INTRO:
+        case PLAYERSTATE_LEVEL_INTRO:
             gShowHud = false;
             gPauseEnabled = false;
             player->arwing.drawFace = true;
             Cutscene_LevelStart(player);
             break;
 
-        case PLAYERSTATE_1C8_ACTIVE:
+        case PLAYERSTATE_ACTIVE:
             gShowHud = true;
             Player_LowHealthMsg(player);
             player->arwing.drawFace = false;
@@ -5830,7 +5829,7 @@ void Player_Update(Player* player) {
                                 sp1C4 = RAND_INT(3.9f);
                             } while (gPlayerInactive[sp1C4]);
                             player->attacker = sp1C4 + 1;
-                            player->state_1C8 = PLAYERSTATE_1C8_VS_STANDBY;
+                            player->state = PLAYERSTATE_VS_STANDBY;
                             player->csState = 0;
                             Camera_FollowPlayer(player, player->attacker - 1, 1);
                         } else {
@@ -5859,11 +5858,11 @@ void Player_Update(Player* player) {
             }
             break;
 
-        case PLAYERSTATE_1C8_DOWN:
+        case PLAYERSTATE_DOWN:
             Cutscene_PlayerDown(player);
             break;
 
-        case PLAYERSTATE_1C8_U_TURN:
+        case PLAYERSTATE_U_TURN:
             if (gVersusMode) {
                 gVsLockOnTimers[player->num][0] = gVsLockOnTimers[player->num][1] = gVsLockOnTimers[player->num][2] =
                     gVsLockOnTimers[player->num][3] = 0;
@@ -5886,7 +5885,7 @@ void Player_Update(Player* player) {
             }
             break;
 
-        case PLAYERSTATE_1C8_LEVEL_COMPLETE:
+        case PLAYERSTATE_LEVEL_COMPLETE:
             player->alternateView = false;
             gPauseEnabled = false;
             Player_UpdateShields(player);
@@ -5895,14 +5894,14 @@ void Player_Update(Player* player) {
             gShowHud = gChargeTimers[player->num] = 0;
             break;
 
-        case PLAYERSTATE_1C8_ENTER_WARP_ZONE:
+        case PLAYERSTATE_ENTER_WARP_ZONE:
             gPauseEnabled = false;
             Player_UpdateShields(player);
             Cutscene_EnterWarpZone(player);
             gShowHud = false;
             break;
 
-        case PLAYERSTATE_1C8_START_360:
+        case PLAYERSTATE_START_360:
             gPauseEnabled = false;
             Player_UpdateShields(player);
             Cutscene_AllRangeMode(player);
@@ -5910,21 +5909,21 @@ void Player_Update(Player* player) {
             gChargeTimers[player->num] = player->alternateView = gShowHud = 0;
             break;
 
-        case PLAYERSTATE_1C8_GFOX_REPAIR:
+        case PLAYERSTATE_GFOX_REPAIR:
             gPauseEnabled = false;
             AllRange_GreatFoxRepair(player);
             gShowHud = false;
             break;
 
-        case PLAYERSTATE_1C8_ANDROSS_MOUTH:
+        case PLAYERSTATE_ANDROSS_MOUTH:
             Andross_8018C390(player);
             Player_UpdateShields(player);
             break;
 
-        case PLAYERSTATE_1C8_12:
+        case PLAYERSTATE_UNK_12:
             break;
 
-        case PLAYERSTATE_1C8_VS_STANDBY:
+        case PLAYERSTATE_VS_STANDBY:
             player->draw = false;
             if (gPlayerInactive[player->num] == true) {
                 Camera_FollowPlayer(player, player->attacker - 1, 0);
@@ -5944,7 +5943,7 @@ void Player_Update(Player* player) {
             }
             break;
 
-        case PLAYERSTATE_1C8_NEXT:
+        case PLAYERSTATE_NEXT:
             gShowHud = false;
 
             if (!gVersusMode) {
@@ -5966,7 +5965,7 @@ void Player_Update(Player* player) {
 
             if (player->csTimer == 0) {
                 if (gCamCount == 4) {
-                    player->state_1C8 = PLAYERSTATE_1C8_VS_STANDBY;
+                    player->state = PLAYERSTATE_VS_STANDBY;
                     player->csTimer = 200;
                 } else {
                     gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
@@ -6047,7 +6046,7 @@ void Player_Update(Player* player) {
 
     if (player->form == FORM_ARWING) {
         Math_SmoothStepToF(&player->unk_194, player->unk_190, 0.5f, 5.0f, 0.0f);
-        if (player->boostCooldown && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+        if (player->boostCooldown && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
             player->unk_190 = 0.5f;
         } else {
             player->unk_190 = 1.0f;
@@ -6066,14 +6065,14 @@ void Camera_UpdateArwingOnRails(Player* player) {
 
     gCsCamEyeX = (player->pos.x - player->xPath) * player->unk_148;
 
-    if (((player->form == FORM_ARWING) && (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) ||
-        (player->state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+    if (((player->form == FORM_ARWING) && (player->state == PLAYERSTATE_ACTIVE)) ||
+        (player->state == PLAYERSTATE_U_TURN)) {
         gCsCamEyeY = (player->pos.y - player->yPath) * player->unk_148;
     }
     var_fv1 = gInputPress->stick_x;
     var_fv0 = -gInputPress->stick_y;
 
-    if ((player->state_1C8 != PLAYERSTATE_1C8_ACTIVE) || player->somersault) {
+    if ((player->state != PLAYERSTATE_ACTIVE) || player->somersault) {
         var_fv0 = 0.0f;
         var_fv1 = 0;
     }
@@ -6195,7 +6194,7 @@ void Camera_FollowPlayer(Player* player, s32 playerNum, bool arg2) {
     if (((gGameFrameCount & mask) == (gPlayerNum * 32)) || arg2) {
         for (i = 0; i < 100; i++) {
             playerNum = RAND_INT(3.9f);
-            if ((gPlayer[playerNum].state_1C8 != PLAYERSTATE_1C8_VS_STANDBY) && !gPlayerInactive[playerNum]) {
+            if ((gPlayer[playerNum].state != PLAYERSTATE_VS_STANDBY) && !gPlayerInactive[playerNum]) {
                 break;
             }
         }
@@ -6305,7 +6304,7 @@ void Camera_UpdateArwing360(Player* player, bool arg1) {
 
     atY = (player->pos.y * (var_fv0)) + player->damageShake + (player->xRock * 5.0f);
     atY += (player->unk_02C * 0.5f);
-    if (player->state_1C8 == PLAYERSTATE_1C8_U_TURN) {
+    if (player->state == PLAYERSTATE_U_TURN) {
         atY = player->pos.y;
     }
     atZ = player->pos.z;
@@ -6323,7 +6322,7 @@ void Camera_UpdateArwing360(Player* player, bool arg1) {
     atX += sp68.x;
     atZ += sp68.z;
 
-    if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+    if (player->state == PLAYERSTATE_ACTIVE) {
         Math_SmoothStepToF(&player->cam.eye.x, eyeX, player->unk_014, 30000.0f, 0);
         Math_SmoothStepToF(&player->cam.eye.y, eyeY, player->unk_014, 30000.0f, 0);
         Math_SmoothStepToF(&player->cam.eye.z, eyeZ, player->unk_014, 30000.0f, 0);
@@ -6492,7 +6491,7 @@ void Camera_SetStarfieldPos(f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32
     gStarfieldX = Math_ModF(sp34, SCREEN_WIDTH * 1.5f);
     gStarfieldY = Math_ModF(sp30, SCREEN_HEIGHT * 1.5f);
 
-    if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
+    if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
         (gCurrentLevel == LEVEL_METEO)) {
         if (fabsf(gStarfieldX - sp20) < 50.0f) {
             D_bg_8015F96C = 0.0f;
@@ -6518,8 +6517,8 @@ void Camera_Update360(Player* player, bool arg1) {
 }
 
 void Camera_Update(Player* player) {
-    switch (player->state_1C8) {
-        case PLAYERSTATE_1C8_ACTIVE:
+    switch (player->state) {
+        case PLAYERSTATE_ACTIVE:
             switch (gLevelMode) {
                 case LEVELMODE_ON_RAILS:
                     if (player->form == FORM_ARWING) {
@@ -6545,12 +6544,12 @@ void Camera_Update(Player* player) {
             }
             break;
 
-        case PLAYERSTATE_1C8_U_TURN:
+        case PLAYERSTATE_U_TURN:
             player->camRoll -= player->camRoll * 0.1f;
             Camera_Update360(player, false);
             break;
 
-        case PLAYERSTATE_1C8_DOWN:
+        case PLAYERSTATE_DOWN:
             if ((gLevelMode == LEVELMODE_ON_RAILS) && (player->form == FORM_ARWING)) {
                 player->cam.eye.x += (player->pos.x - player->cam.eye.x) * 0.1f;
                 player->cam.eye.y += (player->pos.y - player->cam.eye.y) * 0.1f;
@@ -6564,8 +6563,8 @@ void Camera_Update(Player* player) {
             }
             break;
 
-        case PLAYERSTATE_1C8_NEXT:
-        case PLAYERSTATE_1C8_LEVEL_COMPLETE:
+        case PLAYERSTATE_NEXT:
+        case PLAYERSTATE_LEVEL_COMPLETE:
             break;
     }
 }
@@ -6575,7 +6574,7 @@ void Camera_SetupLights(Player* player) {
     Vec3f dest;
     f32 pad;
 
-    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) {
+    if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state != PLAYERSTATE_LEVEL_INTRO)) {
         gEnvLightyRot = gLight1yRotTarget = gLight1yRotTarget = gLight2yRotTarget = gLight1yRotTarget = 110.0f;
         if ((gGameFrameCount & 0x20) != 0) {
             gEnvLightyRot = gLight1yRotTarget = gLight1yRotTarget = gLight2yRotTarget = gLight1yRotTarget = 90.0f;
@@ -6705,8 +6704,8 @@ void Play_UpdateLevel(void) {
             break;
 
         case LEVEL_VENOM_2:
-            if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gLevelPhase == 2)) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+            if ((gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) && (gLevelPhase == 2)) {
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csState = 0;
                 gPlayer[0].draw = true;
                 gPlayer[0].pos.z = 15000.0f;
@@ -6738,7 +6737,7 @@ void Play_UpdateLevel(void) {
         case LEVEL_SECTOR_X:
             if (gLevelPhase == 1) {
                 gBlurAlpha = 128;
-                if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+                if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
                     Math_SmoothStepToF(&gWarpZoneBgAlpha, 0.0f, 1.0f, 1.0f, 0.0f);
                 } else {
                     Math_SmoothStepToF(&gWarpZoneBgAlpha, 128.0f, 1.0f, 1.0f, 0.0f);
@@ -6747,7 +6746,7 @@ void Play_UpdateLevel(void) {
 
             if ((gCurrentLevel == LEVEL_SECTOR_X) && (gLevelPhase == 0) && (gRingPassCount == 4)) {
                 gRingPassCount++;
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ENTER_WARP_ZONE;
+                gPlayer[0].state = PLAYERSTATE_ENTER_WARP_ZONE;
                 gPlayer[0].csState = 0;
                 gSceneSetup = 1;
                 AUDIO_PLAY_SFX(NA_SE_WARP_HOLE, gDefaultSfxSource, 0);
@@ -6773,7 +6772,7 @@ void Play_UpdateLevel(void) {
             for (gPathTexScroll; gPathTexScroll >= 10.0f; gPathTexScroll -= 10.0f) {
                 Lib_Texture_Scroll(D_SO_6005710, 32, 32, 1);
             }
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT) {
+            if (gPlayer[0].state == PLAYERSTATE_NEXT) {
                 Lib_Texture_Scroll(D_SO_6005710, 32, 32, 1);
             }
             Lib_Texture_Mottle(D_SO_601E1E8, D_SO_6020F60, 3);
@@ -6803,7 +6802,7 @@ void Play_UpdateLevel(void) {
 #endif
             }
 
-            if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && ((gGameFrameCount & cycleMask) == 0)) {
+            if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && ((gGameFrameCount & cycleMask) == 0)) {
                 gPlayer[0].shields--;
                 if (gPlayer[0].shields <= 0) {
                     gPlayer[0].shields = 0;
@@ -6821,7 +6820,7 @@ void Play_UpdateLevel(void) {
 
             Audio_SetHeatAlarmParams(shields, heightParam);
 
-            if (((gGameFrameCount % 8) == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+            if (((gGameFrameCount % 8) == 0) && (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 Solar_8019E8B8(RAND_FLOAT_CENTERED(6000.0f), -80.0f,
                                gPlayer[0].trueZpos + (RAND_FLOAT(2000.0f) + -6000.0f),
                                RAND_FLOAT(10.0f) + 20.0f); // check
@@ -6839,7 +6838,7 @@ void Play_UpdateLevel(void) {
             for (gPathTexScroll; gPathTexScroll >= 20.0f; gPathTexScroll -= 20.0f) {
                 Lib_Texture_Scroll(D_ZO_602C2CC, 32, 32, 1);
             }
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT) {
+            if (gPlayer[0].state == PLAYERSTATE_NEXT) {
                 Lib_Texture_Scroll(D_ZO_602C2CC, 32, 32, 1);
             }
 
@@ -7022,7 +7021,7 @@ void Play_Main(void) {
             Play_Update();
 
             if ((gControllerPress[gMainController].button & START_BUTTON) &&
-                (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
+                (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
                 gSaveFile.save.data.planet[sSaveSlotFromLevel[gCurrentLevel]].normalClear) {
                 Audio_ClearVoice();
                 Audio_SetEnvSfxReverb(0);
@@ -7056,7 +7055,7 @@ void Play_Main(void) {
         case PLAY_PAUSE:
             if (!gVersusMode) {
                 if ((gControllerPress[gMainController].button & R_TRIG) && (gPlayer[0].form != FORM_BLUE_MARINE) &&
-                    (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) {
+                    (gPlayer[0].state != PLAYERSTATE_STANDBY)) {
                     if (gShowReticles[0] = 1 - gShowReticles[0]) {
                         AUDIO_PLAY_SFX(NA_SE_MAP_WINDOW_OPEN, gDefaultSfxSource, 4);
                     } else {
diff --git a/src/engine/fox_radio.c b/src/engine/fox_radio.c
index c3faae27f..3714b4c92 100644
--- a/src/engine/fox_radio.c
+++ b/src/engine/fox_radio.c
@@ -756,7 +756,7 @@ void Radio_Draw(void) {
             }
 
             if ((gActors[idx].obj.status != OBJ_ACTIVE) && (gGameFrameCount & 4) &&
-                (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (gCurrentRadioPortrait != RCID_STATIC) &&
+                (gPlayer[0].state == PLAYERSTATE_ACTIVE) && (gCurrentRadioPortrait != RCID_STATIC) &&
                 (gCurrentRadioPortrait != RCID_STATIC + 1) && (gCurrentRadioPortrait != RCID_1000)) {
                 RCP_SetupDL(&gMasterDisp, SETUPDL_76);
                 gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
@@ -778,6 +778,7 @@ void Radio_Draw(void) {
     }
 }
 
+// Unused in VERSION_US and absent in VERSION_EU, probably a leftover from VERSION_JP ?
 void func_radio_800BC040(void) {
     if (gPlayState != PLAY_PAUSE) {
         if (gRadioStateTimer > 0) {
diff --git a/src/engine/fox_tank.c b/src/engine/fox_tank.c
index 4822421c9..86150893b 100644
--- a/src/engine/fox_tank.c
+++ b/src/engine/fox_tank.c
@@ -490,7 +490,7 @@ void func_tank_80044868(Player* player) {
         if ((gCurrentLevel == LEVEL_TITANIA) && !gBossActive) {
             func_tank_80043280(D_landmaster_3005EA8, D_TI_6009BB8, gGameFrameCount * -55.0f);
         }
-        if ((gCurrentLevel == LEVEL_MACBETH) && (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+        if ((gCurrentLevel == LEVEL_MACBETH) && (player->state == PLAYERSTATE_LEVEL_COMPLETE)) {
             func_tank_80043280(D_landmaster_3005EA8, D_Tex_800DACB8, gGameFrameCount * -55.0f);
         }
     }
@@ -1305,7 +1305,7 @@ void func_tank_80047FBC(Player* player) {
     if (!(D_800C9F08 & 1)) {
         Math_SmoothStepToF(&player->rot.z, -((player->vel.z / 5.0f) * 4.0f), 0.4f, 8.0f, 0.01f);
         if (player->rot.z >= 3.0f) {
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
                 AUDIO_PLAY_SFX(NA_SE_RAILWAY_BOUND, player->sfxSource, 0);
             }
             D_800C9F08 |= 1;
diff --git a/src/engine/fox_versus.c b/src/engine/fox_versus.c
index 9b39e5ead..4e194e51b 100644
--- a/src/engine/fox_versus.c
+++ b/src/engine/fox_versus.c
@@ -315,7 +315,7 @@ void func_versus_800BDE44(void) {
     gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
 
     for (i = 0; i < 4; i++) {
-        if ((gPlayer[i].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[i].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+        if ((gPlayer[i].state == PLAYERSTATE_ACTIVE) || (gPlayer[i].state == PLAYERSTATE_U_TURN)) {
             if ((gPlayerScores[i] != sVsDisplayedScores[i]) || (D_80178810[i] != 0)) {
                 D_80178810[i] += 4;
                 if (D_80178810[i] > 15) {
@@ -638,7 +638,7 @@ s32 Versus_UpdatePlayerStatus(void) {
     for (i = 0, ret = 0; i < 4; i++) {
         D_80178850[i] = true;
 
-        if (gPlayer[i].state_1C8 != PLAYERSTATE_1C8_VS_STANDBY) {
+        if (gPlayer[i].state != PLAYERSTATE_VS_STANDBY) {
             D_80178850[i] = false;
             sPlayerRespawnTimer[i] = 150;
             continue;
@@ -762,7 +762,7 @@ void func_versus_800BF750(void) {
     RCP_SetupDL(&gMasterDisp, SETUPDL_76);
 
     for (i = 0; i < 4; i++) {
-        if (gPlayer[i].state_1C8 != PLAYERSTATE_1C8_ACTIVE) {
+        if (gPlayer[i].state != PLAYERSTATE_ACTIVE) {
             continue;
         }
         for (j = 0, temp = 0; j < 4; j++) {
@@ -785,10 +785,10 @@ bool Versus_CheckForWinner(void) {
     switch (gVsMatchType) {
         case VS_MATCH_POINTS:
             for (i = 0, numDown = 0; i < 4; i++) {
-                if (gPlayer[i].state_1C8 != PLAYERSTATE_1C8_VS_STANDBY) {
+                if (gPlayer[i].state != PLAYERSTATE_VS_STANDBY) {
                     sVsWinner = i;
                 }
-                if (gPlayer[i].state_1C8 == PLAYERSTATE_1C8_VS_STANDBY) {
+                if (gPlayer[i].state == PLAYERSTATE_VS_STANDBY) {
                     numDown++;
                 }
             }
@@ -820,7 +820,7 @@ bool Versus_CheckForWinner(void) {
                     if (gPlayer[j].attacker >= 0) {
                         gPlayer[j].attacker = i + 1;
                     }
-                    gPlayer[j].state_1C8 = PLAYERSTATE_1C8_VS_STANDBY;
+                    gPlayer[j].state = PLAYERSTATE_VS_STANDBY;
                 }
                 gVsMatchWon = true;
                 sVsWinner = i;
@@ -829,10 +829,10 @@ bool Versus_CheckForWinner(void) {
 
         case VS_MATCH_BATTLE:
             for (i = 0, numDown = 0; i < 4; i++) {
-                if (gPlayer[i].state_1C8 != PLAYERSTATE_1C8_VS_STANDBY) {
+                if (gPlayer[i].state != PLAYERSTATE_VS_STANDBY) {
                     sVsWinner = i;
                 }
-                if (gPlayer[i].state_1C8 == PLAYERSTATE_1C8_VS_STANDBY) {
+                if (gPlayer[i].state == PLAYERSTATE_VS_STANDBY) {
                     numDown++;
                 }
             }
@@ -859,7 +859,7 @@ bool Versus_CheckForWinner(void) {
                     if (gPlayer[j].attacker >= 0) {
                         gPlayer[j].attacker = i + 1;
                     }
-                    gPlayer[j].state_1C8 = PLAYERSTATE_1C8_VS_STANDBY;
+                    gPlayer[j].state = PLAYERSTATE_VS_STANDBY;
                 }
                 gVsMatchWon = true;
             }
@@ -872,8 +872,7 @@ bool Versus_CheckForWinner(void) {
 
             if (gVsMatchType == VS_MATCH_TIME) {
                 for (i = 0; i < 4; i++) {
-                    if ((gPlayer[i].state_1C8 == PLAYERSTATE_1C8_DOWN) ||
-                        (gPlayer[i].state_1C8 == PLAYERSTATE_1C8_VS_STANDBY)) {
+                    if ((gPlayer[i].state == PLAYERSTATE_DOWN) || (gPlayer[i].state == PLAYERSTATE_VS_STANDBY)) {
                         gPlayerScores[i] = D_80178838[i] = sVsDisplayedScores[i] = D_80178810[i] = 0;
                         sPlayerDownFrames[i]++;
                     }
@@ -960,7 +959,7 @@ bool Versus_CheckForWinner(void) {
                     gPlayer[j].attacker = i + 1;
                 }
 
-                gPlayer[j].state_1C8 = PLAYERSTATE_1C8_VS_STANDBY;
+                gPlayer[j].state = PLAYERSTATE_VS_STANDBY;
             }
             gVsMatchWon = true;
             break;
diff --git a/src/mods/object_ram.c b/src/mods/object_ram.c
index 6cf283c39..fe5fa558d 100644
--- a/src/mods/object_ram.c
+++ b/src/mods/object_ram.c
@@ -412,7 +412,7 @@ void CheatRam_SpawnCheckpoint(void) {
     static ItemCheckpoint* checkpoint = NULL;
     s32 i;
 
-    if ((gLevelMode != LEVELMODE_ON_RAILS) || (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ACTIVE)) {
+    if ((gLevelMode != LEVELMODE_ON_RAILS) || (gPlayer[0].state != PLAYERSTATE_ACTIVE)) {
         return;
     }
 
@@ -563,7 +563,7 @@ void CheatRam_UpdateEntry(CheatEntry* cheat) {
             }
             break;
         case CHEAT_COMPLETE:
-            if ((gCurrentLevel == LEVEL_CORNERIA) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+            if ((gCurrentLevel == LEVEL_CORNERIA) && (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 if ((gLevelMode == LEVELMODE_ON_RAILS) && (cheat->option == MISSION_COMPLETE)) {
                     gScenery360 = Memory_Allocate(200 * sizeof(Scenery360));
                     gLevelMode = LEVELMODE_ALL_RANGE;
@@ -571,7 +571,7 @@ void CheatRam_UpdateEntry(CheatEntry* cheat) {
                     gLevelMode = LEVELMODE_ON_RAILS;
                 }
             }
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+            gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
         default:
             cheat->ram[0].data.i = cheat->option;
             break;
@@ -669,8 +669,8 @@ void RamMod_Update(void) {
         return;
     }
 
-    if ((contPress->button & START_BUTTON) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_NEXT;
+    if ((contPress->button & START_BUTTON) && (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE)) {
+        gPlayer[0].state = PLAYERSTATE_NEXT;
         Audio_FadeOutAll(10);
         gFadeoutType = 4;
         gLeveLClearStatus[gCurrentLevel] = Play_CheckMedalStatus(medalCount[gCurrentLevel]) + 1;
diff --git a/src/overlays/ovl_ending/fox_end2.c b/src/overlays/ovl_ending/fox_end2.c
index 95f7d8e50..762fea3db 100644
--- a/src/overlays/ovl_ending/fox_end2.c
+++ b/src/overlays/ovl_ending/fox_end2.c
@@ -807,7 +807,7 @@ void Ending_80190CF0(u32 arg0, AssetInfo* asset) {
     gSPDisplayList(gMasterDisp++, D_END_7000000);
 }
 
-void Ending_80191234(s32 arg0, s32 arg1) {
+void Ending_80191234(u32 arg0, AssetInfo* asset) {
     gLastGameState = GSTATE_ENDING;
     gGameState = GSTATE_MENU;
     gNextGameStateTimer = 2;
diff --git a/src/overlays/ovl_ending/fox_end2_data.c b/src/overlays/ovl_ending/fox_end2_data.c
index cea5159b0..cb6215f22 100644
--- a/src/overlays/ovl_ending/fox_end2_data.c
+++ b/src/overlays/ovl_ending/fox_end2_data.c
@@ -72,7 +72,7 @@ void Ending_80190274(u32 arg0, AssetInfo* asset);
 void Ending_80190648(s32 arg0, AssetInfo* asset);
 void Ending_80190778(u32 arg0, AssetInfo* asset);
 void Ending_80190CF0(u32 arg0, AssetInfo* asset);
-void Ending_80191234(s32 arg0, s32 arg1);
+void Ending_80191234(u32 arg0, AssetInfo* asset);
 void Ending_80191294(u32 arg0, AssetInfo* asset);
 
 // clang-format off
diff --git a/src/overlays/ovl_i1/fox_co.c b/src/overlays/ovl_i1/fox_co.c
index ea9c974c5..5fa54e1fa 100644
--- a/src/overlays/ovl_i1/fox_co.c
+++ b/src/overlays/ovl_i1/fox_co.c
@@ -101,8 +101,8 @@ void Corneria_Granga_Init(CoGranga* this) {
     gBossFrameCount = 0;
 
     if (gLevelMode == LEVELMODE_ON_RAILS) {
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_START_360;
+        if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
+            gPlayer[0].state = PLAYERSTATE_START_360;
             gPlayer[0].csState = 0;
             SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 50);
             SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 50);
@@ -185,9 +185,8 @@ void Corneria_CoGranga_HandleDamage(CoGranga* this) {
 
                 gCsFrameCount = 0;
 
-                if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                    (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = gPlayer[0].csTimer = 0;
                     gPlayer[0].rot.y += gPlayer[0].yRot_114;
 
@@ -620,7 +619,7 @@ void Corneria_CoGranga_Update(CoGranga* this) {
     Vec3f sp6C = { 0.0f, 0.0f, -30.0f };
     f32 sp5C;
 
-    if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) {
+    if (gPlayer[0].state != PLAYERSTATE_START_360) {
         if (!this->swork[GRANGA_INIT]) {
             this->swork[GRANGA_INIT]++;
 
@@ -2193,8 +2192,7 @@ void Corneria_CoCarrier_Update(CoCarrier* this) {
                         this->vel.y *= 1.5f;
                         gMissionStatus = MISSION_ACCOMPLISHED;
 
-                        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                            (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+                        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
                             Boss_CompleteLevel(gPlayer, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z);
                         }
 
@@ -3331,7 +3329,7 @@ void Corneria_LevelStart(Player* player) {
                 player->cam.eye.x = player->pos.x;
                 player->cam.eye.y = (player->pos.y * player->unk_148) + 50.0f;
                 player->cam.eye.z = 30.0f;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->cam.at.x = player->pos.x;
                 player->cam.at.y = (player->pos.y * player->unk_148) + 20.0f;
@@ -3614,7 +3612,7 @@ void Corneria_LevelComplete1(Player* player) {
                 gFillScreenAlphaStep = 8;
 
                 if (gFillScreenAlpha == 255) {
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[gCurrentLevel] = Play_CheckMedalStatus(150) + 1;
diff --git a/src/overlays/ovl_i1/fox_tr360.c b/src/overlays/ovl_i1/fox_tr360.c
index 55f03cdb9..702b48d1d 100644
--- a/src/overlays/ovl_i1/fox_tr360.c
+++ b/src/overlays/ovl_i1/fox_tr360.c
@@ -195,7 +195,7 @@ void Training_SpawnEnemies(void) {
         aiTypeIndex = 0;
     }
 
-    if (((gGameFrameCount % 4) == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if (((gGameFrameCount % 4) == 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         src.x = 0.0f;
         src.y = 0.0f;
         src.z = -15000.0f;
diff --git a/src/overlays/ovl_i1/fox_ve1.c b/src/overlays/ovl_i1/fox_ve1.c
index c863e1db7..44a3529c3 100644
--- a/src/overlays/ovl_i1/fox_ve1.c
+++ b/src/overlays/ovl_i1/fox_ve1.c
@@ -2386,7 +2386,7 @@ void Venom1_80198414(void) {
 
 void Venom1_Ve1Golemech_Dying(Ve1Golemech* this) {
     this->obj.pos.z = gPlayer[0].pos.z;
-    if ((this->timer_052 <= 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if ((this->timer_052 <= 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         Venom1_80198414();
     }
 }
diff --git a/src/overlays/ovl_i2/fox_me.c b/src/overlays/ovl_i2/fox_me.c
index dc811d2e9..a8147d1cd 100644
--- a/src/overlays/ovl_i2/fox_me.c
+++ b/src/overlays/ovl_i2/fox_me.c
@@ -680,7 +680,7 @@ void Meteo_Effect370_Update(Effect370* this) {
 }
 
 void Meteo_Effect371_Update(Effect371* this) {
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
         Object_Kill(&this->obj, this->sfxSource);
     }
 
@@ -933,9 +933,8 @@ void Meteo_MeCrusher_Update(MeCrusher* this) {
                         this->vel.x = 0.0f;
                         this->vel.y = 0.0f;
 
-                        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                            (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
-                            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
+                            gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                             gPlayer[0].csState = 0;
                             gCsFrameCount = 0;
                         }
@@ -1263,7 +1262,7 @@ void Meteo_MeCrusher_Update(MeCrusher* this) {
             this->obj.rot.z = this->obj.rot.z + ((0.0f - this->obj.rot.z) * 0.02f);
             Math_SmoothStepToF(&this->fwork[0x15], 4.0f, 1.0f, 0.1f, 0.0f);
 
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_NEXT) {
+            if (gPlayer[0].state != PLAYERSTATE_NEXT) {
                 gFillScreenRed = gFillScreenAlpha = gFillScreenGreen = gFillScreenBlue = 0;
 
                 if ((this->timer_050 == 10) || (this->timer_050 == 30) || (this->timer_050 == 50) ||
@@ -2077,7 +2076,7 @@ void Meteo_LevelStart(Player* player) {
             if (player->csTimer == 0) {
                 AUDIO_PLAY_BGM(gBgmSeqId);
                 gLevelStartStatusScreenTimer = 80;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->csTimer = 0;
                 player->csEventTimer = 0;
@@ -2337,7 +2336,7 @@ void Meteo_LevelComplete(Player* player) {
                     gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                     gFillScreenAlphaStep = 8;
                     if (gFillScreenAlpha == 255) {
-                        player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                        player->state = PLAYERSTATE_NEXT;
                         player->csTimer = 0;
                         gFadeoutType = 4;
                         gLeveLClearStatus[LEVEL_METEO] = Play_CheckMedalStatus(200) + 1;
diff --git a/src/overlays/ovl_i2/fox_sx.c b/src/overlays/ovl_i2/fox_sx.c
index 4f8399d31..029902ea8 100644
--- a/src/overlays/ovl_i2/fox_sx.c
+++ b/src/overlays/ovl_i2/fox_sx.c
@@ -111,7 +111,7 @@ void SectorX_SxSlippy_Update(SxSlippy* this) {
 
                 gBosses[0].swork[6] = 0;
                 gTeamShields[TEAM_ID_SLIPPY] = -2;
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                gPlayer[0].state = PLAYERSTATE_STANDBY;
 
                 this->timer_0BC = 200;
                 this->iwork[14] = 3;
@@ -146,7 +146,7 @@ void SectorX_SxSlippy_Update(SxSlippy* this) {
             Math_SmoothStepToF(&gPlayer[0].cam.eye.y, this->obj.pos.y, this->fwork[1], 20.0f, 0.0f);
 
             if (this->timer_0BC == 0) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                gPlayer[0].state = PLAYERSTATE_ACTIVE;
                 if (gPlayer[0].alternateView) {
                     Camera_UpdateCockpitOnRails(&gPlayer[0], 1);
                 }
@@ -503,7 +503,7 @@ void SectorX_SxSpyborg_Update(SxSpyborg* this) {
         }
     }
 
-    if (((this->state != 8) && (this->state != 20)) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_ACTIVE)) {
+    if (((this->state != 8) && (this->state != 20)) && (gPlayer[0].state != PLAYERSTATE_ACTIVE)) {
         this->state = 8;
         this->fwork[0] = 0.0f;
         Audio_KillSfxBySourceAndId(D_i2_80195D88, NA_SE_EN_SZMIS_ENGINE);
@@ -902,7 +902,7 @@ void SectorX_SxSpyborg_Update(SxSpyborg* this) {
                 this->animFrame++;
                 if (this->animFrame >= Animation_GetFrameCount(&D_SX_60123BC)) {
                     this->animFrame = Animation_GetFrameCount(&D_SX_60123BC) - 1;
-                    if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) {
+                    if (gPlayer[0].state != PLAYERSTATE_STANDBY) {
                         this->animFrame = 0;
                         this->state = 10;
                         this->fwork[0] = 0.0f;
@@ -1087,8 +1087,8 @@ void SectorX_SxSpyborg_Update(SxSpyborg* this) {
             }
 
             if (this->timer_050 == 120) {
-                if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_NEXT) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_DOWN)) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                if ((gPlayer[0].state != PLAYERSTATE_NEXT) && (gPlayer[0].state != PLAYERSTATE_DOWN)) {
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = 0;
                     gPlayer[0].draw = true;
                 }
@@ -1629,7 +1629,7 @@ void SectorX_LevelStart(Player* player) {
                 player->baseSpeed = gArwingSpeed;
                 AUDIO_PLAY_BGM(gBgmSeqId);
                 gLevelStartStatusScreenTimer = 80;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = player->csTimer = player->csEventTimer = 0;
                 player->cam.eye.y = player->pos.y * player->unk_148 + 50.0f;
                 player->cam.eye.z = 400.0f;
@@ -1794,7 +1794,7 @@ void SectorX_LevelComplete(Player* player) {
                 gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                 gFillScreenAlphaTarget = 255;
                 if (gFillScreenAlpha == 255) {
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     gFadeoutType = 4;
                     player->csTimer = 0;
                     Play_ClearObjectData();
diff --git a/src/overlays/ovl_i3/fox_a6.c b/src/overlays/ovl_i3/fox_a6.c
index 7ecd461ff..e406b9710 100644
--- a/src/overlays/ovl_i3/fox_a6.c
+++ b/src/overlays/ovl_i3/fox_a6.c
@@ -1185,9 +1185,9 @@ void Area6_A6Gorgon_Update(A6Gorgon* this) {
             break;
 
         case 11:
-            if ((this->timer_052 == 160) && ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                                             (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+            if ((this->timer_052 == 160) &&
+                ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csState = 0;
             }
 
@@ -2456,7 +2456,7 @@ void Area6_LevelStart(Player* player) {
                 player->csTimer = 0;
 
                 AUDIO_PLAY_BGM(NA_BGM_STAGE_A6);
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
             }
             break;
     }
@@ -2543,7 +2543,7 @@ void Area6_LevelStart(Player* player) {
     Matrix_RotateY(gCalcMatrix, (player->rot.y + player->yRot_114 + 180.0f) * M_DTOR, MTXF_NEW);
     Matrix_RotateX(gCalcMatrix, -(player->rot.x * M_DTOR), MTXF_APPLY);
 
-    if (player->state_1C8 != PLAYERSTATE_1C8_ACTIVE) {
+    if (player->state != PLAYERSTATE_ACTIVE) {
         sp74.x = 0.0f;
         sp74.y = 0.0f;
         sp74.z = player->baseSpeed;
diff --git a/src/overlays/ovl_i3/fox_aq.c b/src/overlays/ovl_i3/fox_aq.c
index f3aab0f8c..ba4d54cc0 100644
--- a/src/overlays/ovl_i3/fox_aq.c
+++ b/src/overlays/ovl_i3/fox_aq.c
@@ -806,7 +806,7 @@ void Aquas_UpdateCamera(Player* player) {
     f32 stickY = -gInputPress->stick_y;
     f32 zRot;
 
-    if (player->state_1C8 != PLAYERSTATE_1C8_ACTIVE) {
+    if (player->state != PLAYERSTATE_ACTIVE) {
         stickX = stickY = 0.0f;
     }
 
@@ -1510,7 +1510,7 @@ void Aquas_BlueMarineBoost(Player* player) {
         }
 
         if ((gBoostButton[player->num] & gInputHold->button) && (player->unk_230 == 0) &&
-            (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && (player->boostCooldown == 0)) {
+            (player->state != PLAYERSTATE_U_TURN) && (player->boostCooldown == 0)) {
             if (player->boostMeter == 0) {
                 AUDIO_PLAY_SFX(NA_SE_MARINE_BOOST, player->sfxSource, 4);
             }
@@ -1558,7 +1558,7 @@ void Aquas_BlueMarineBrake(Player* player) {
     player->sfx.brake = false;
 
     if ((gInputHold->button & gBrakeButton[player->num]) && (player->unk_230 == 0) &&
-        (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && (player->boostCooldown == 0)) {
+        (player->state != PLAYERSTATE_U_TURN) && (player->boostCooldown == 0)) {
         if (player->boostMeter == 0) {
             AUDIO_PLAY_SFX(NA_SE_MARINE_BRAKE, player->sfxSource, 4);
         }
@@ -3083,9 +3083,9 @@ void Aquas_AqBacoon_Update(AqBacoon* this) {
                                 Boss_AwardBonus(this);
                                 Radio_PlayMessage(gMsg_ID_15252, RCID_SLIPPY);
                                 gTeamLowHealthMsgTimer = -1;
-                                if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                                    (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
-                                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                                if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) ||
+                                    (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
+                                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                                     gPlayer[0].csState = 0;
                                 }
                                 D_i3_801C4190[1] = 0;
diff --git a/src/overlays/ovl_i3/fox_so.c b/src/overlays/ovl_i3/fox_so.c
index 06f4ed24b..dbad6d209 100644
--- a/src/overlays/ovl_i3/fox_so.c
+++ b/src/overlays/ovl_i3/fox_so.c
@@ -743,7 +743,7 @@ void Solar_Effect392_Update(Effect392* this) {
                 }
             }
 
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
                 func_effect_8007A774(&gPlayer[0], this, this->scale2 * 12.0f);
             }
 
@@ -822,7 +822,7 @@ void Solar_Effect392_Update(Effect392* this) {
                 Math_SmoothStepToF(&this->vel.y, -65.0f, 2.0f, 1.0f, 0.5f);
             }
 
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
                 func_effect_8007A774(&gPlayer[0], this, this->scale2 * 12.0f);
             }
 
@@ -872,7 +872,7 @@ void Solar_Effect392_Update(Effect392* this) {
             this->vel.y = COS_DEG(this->unk_60.z) * (this->unk_60.x * 10.0f);
             this->vel.z = gPlayer[0].vel.z + 15.0f;
 
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
                 func_effect_8007A774(&gPlayer[0], this, this->scale2 * 18.0f);
                 if ((this->unk_4C == 0) && ((this->scale2 >= 9.8f) || (this->scale2 <= 4.4f))) {
                     AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_BREATH, this->sfxSource, 4);
@@ -900,7 +900,7 @@ void Solar_Effect392_Update(Effect392* this) {
             this->vel.y = COS_DEG(this->unk_60.z) * sp50 * 50.0f;
             this->vel.z = gPlayer[0].vel.z + 80.0f;
 
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
                 func_effect_8007A774(&gPlayer[0], this, this->scale2 * 18.0f);
                 if ((this->unk_4C == 0) && ((this->scale2 >= 9.8f) || (this->scale2 <= 4.4f))) {
                     AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_BREATH, this->sfxSource, 4);
@@ -1228,7 +1228,7 @@ void Solar_LevelStart(Player* player) {
                 player->baseSpeed = gArwingSpeed;
                 Play_ClearObjectData();
                 gLevelStartStatusScreenTimer = 50;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->pos.y = 350.0f;
 
@@ -2040,8 +2040,8 @@ void Solar_801A3C4C(SoVulkain* this) {
 
         AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4);
 
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
+            gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
             gPlayer[0].csTimer = 0;
             gPlayer[0].csState = gPlayer[0].csTimer;
 
@@ -3399,7 +3399,7 @@ void Solar_LevelComplete(Player* player) {
                 if (gFillScreenAlpha == 255) {
                     Audio_StopPlayerNoise(0);
                     Audio_FadeOutAll(10);
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[LEVEL_SOLAR] = Play_CheckMedalStatus(100) + 1;
diff --git a/src/overlays/ovl_i3/fox_zo.c b/src/overlays/ovl_i3/fox_zo.c
index 45384dcc8..9612fbd72 100644
--- a/src/overlays/ovl_i3/fox_zo.c
+++ b/src/overlays/ovl_i3/fox_zo.c
@@ -2584,10 +2584,9 @@ void Zoness_ZoSarumarine_Update(ZoSarumarine* this) {
                 sZoFwork[ZO_BSF_23] = 10.0f;
                 gShowBossHealth = false;
                 Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 80.0f);
-                if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                    (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+                if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
                     gCsFrameCount = 0;
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = gPlayer[0].csTimer = 0;
                     gPlayer[0].rot.y += gPlayer[0].yRot_114;
                     if (gPlayer[0].rot.y > 360.0f) {
@@ -4746,7 +4745,7 @@ void Zoness_LevelStart(Player* player) {
             if (gCsFrameCount >= 270) {
                 AUDIO_PLAY_BGM(NA_BGM_STAGE_ZO);
                 gLevelStartStatusScreenTimer = 80;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->csTimer = 0;
                 player->csEventTimer = 0;
@@ -4934,7 +4933,7 @@ void Zoness_LevelComplete(Player* player) {
                 if (gFillScreenAlpha == 255) {
                     Audio_StopPlayerNoise(0);
                     Audio_FadeOutAll(10);
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[LEVEL_ZONESS] = Play_CheckMedalStatus(250) + 1;
diff --git a/src/overlays/ovl_i4/fox_bo.c b/src/overlays/ovl_i4/fox_bo.c
index 69051b105..3a83d45b8 100644
--- a/src/overlays/ovl_i4/fox_bo.c
+++ b/src/overlays/ovl_i4/fox_bo.c
@@ -267,9 +267,8 @@ void Bolse_UpdateEventHandler(ActorEvent* this) {
             if (gBosses[2].state == 10) {
                 SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1);
                 SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1);
-                if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                    (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csTimer = 30;
                     gPlayer[0].csState = 0;
                     gPlayer[0].unk_000 = 0.0f;
@@ -292,7 +291,7 @@ void Bolse_UpdateEventHandler(ActorEvent* this) {
                 this->iwork[1] = gHitCount;
                 this->state = 10;
                 this->timer_0BC = 150;
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                gPlayer[0].state = PLAYERSTATE_STANDBY;
                 AUDIO_PLAY_BGM(NA_BGM_BOSS_BO);
                 AllRange_ClearRadio();
                 gPlayer[0].cam.eye.x = 400.0f;
@@ -325,7 +324,7 @@ void Bolse_UpdateEventHandler(ActorEvent* this) {
                 }
                 if (i == 3) {
                     this->state = 2;
-                    player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                    player->state = PLAYERSTATE_ACTIVE;
                     return;
                 }
             }
@@ -341,7 +340,7 @@ void Bolse_UpdateEventHandler(ActorEvent* this) {
 
             if ((gControllerPress->button & START_BUTTON) || ((gAllRangeSpawnEvent + 300) == gAllRangeEventTimer)) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
                 D_hud_80161708 = 0;
@@ -390,7 +389,7 @@ void Bolse_UpdateEventHandler(ActorEvent* this) {
             if (!this->timer_0BC) {
                 gAllRangeEventTimer = 3000;
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
                 Audio_KillSfxBySource(gBosses[1].sfxSource);
@@ -643,7 +642,7 @@ bool Bolse_8018D278(BoLaserCannon* this) {
 
 void Bolse_BoLaserCannon_Update(BoLaserCannon* this) {
     Bolse_8018CC60(this);
-    if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+    if ((gPlayer[0].state != PLAYERSTATE_STANDBY) && (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
         Bolse_8018CCE8(this);
         Bolse_8018CE5C(this);
         if (Bolse_8018D008(this)) {
@@ -1305,7 +1304,7 @@ void Bolse_LevelStart(Player* player) {
             }
 
             if (gCsFrameCount == 270) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->baseSpeed = gArwingSpeed;
                 player->unk_014 = 0.0001f;
 
diff --git a/src/overlays/ovl_i4/fox_fo.c b/src/overlays/ovl_i4/fox_fo.c
index c548facc4..28a27131a 100644
--- a/src/overlays/ovl_i4/fox_fo.c
+++ b/src/overlays/ovl_i4/fox_fo.c
@@ -113,7 +113,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
     PRINTF("Enm->work[0]=%d\n", this->iwork[0]);
     PRINTF("tim %d\n", gAllRangeEventTimer);
 
-    if ((player->state_1C8 == PLAYERSTATE_1C8_DOWN) || (player->state_1C8 == PLAYERSTATE_1C8_NEXT)) {
+    if ((player->state == PLAYERSTATE_DOWN) || (player->state == PLAYERSTATE_NEXT)) {
         gAllRangeEventTimer = 20000;
         return;
     }
@@ -179,7 +179,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
     if (gAllRangeEventTimer == 9206) {
         gShowAllRangeCountdown = false;
         this->state = 5;
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+        gPlayer[0].state = PLAYERSTATE_STANDBY;
         this->iwork[0] = 0;
         this->fwork[0] = 0.0f;
         AllRange_ClearRadio();
@@ -197,7 +197,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
         gShowAllRangeCountdown = 0;
         this->iwork[0] = 0;
         this->state = 6;
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
         gPlayer[0].csState = 0;
         gPlayer[0].unk_000 = 0.0f;
 
@@ -235,7 +235,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
             gAllRangeEventTimer = 0;
             gStarWolfMsgTimer = 0;
 
-            if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+            if (player->state == PLAYERSTATE_ACTIVE) {
                 this->state = 2;
                 player->pos.x = 0.0f;
                 player->pos.z = 8000.0f;
@@ -273,7 +273,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
                 if (gCsFrameCount == 264) {
                     team->state = 2;
                     this->state = 2;
-                    player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                    player->state = PLAYERSTATE_ACTIVE;
                     player->unk_014 = 0.0001f;
                     AUDIO_PLAY_BGM(gBgmSeqId);
                     gLevelStartStatusScreenTimer = 80;
@@ -308,7 +308,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
 
             if ((gControllerPress->button & START_BUTTON) || (gAllRangeEventTimer == (gAllRangeSpawnEvent + 440))) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
                 D_hud_80161708 = 0;
@@ -362,7 +362,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) {
 
             if (this->iwork[0] == 250) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
 
                 Camera_Update360(player, true);
 
@@ -1113,7 +1113,7 @@ void Fortuna_LevelComplete(Player* player) {
             }
 
             if (gCsFrameCount == 1382) {
-                player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                player->state = PLAYERSTATE_NEXT;
                 player->csTimer = 0;
                 gFadeoutType = 4;
                 Audio_FadeOutAll(10);
@@ -1336,7 +1336,7 @@ void Fortuna_LevelComplete(Player* player) {
                 gFillScreenAlphaTarget = 255;
                 gFillScreenAlphaStep = 16;
                 if (gFillScreenAlpha == 255) {
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     Audio_FadeOutAll(10);
diff --git a/src/overlays/ovl_i4/fox_ka.c b/src/overlays/ovl_i4/fox_ka.c
index 4eb24a604..e90e39818 100644
--- a/src/overlays/ovl_i4/fox_ka.c
+++ b/src/overlays/ovl_i4/fox_ka.c
@@ -439,7 +439,7 @@ void Katina_LevelStart(Player* player) {
             if (gCsFrameCount == 240) {
                 Object_Kill(&gActors[4].obj, gActors[4].sfxSource);
                 Object_Kill(&gActors[6].obj, gActors[6].sfxSource);
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.0001f;
 
                 AUDIO_PLAY_BGM(gBgmSeqId);
@@ -659,7 +659,7 @@ void Katina_BossHandleDamage(KaSaucerer* this) {
     if (this->dmgType != DMG_NONE) {
         this->dmgType = DMG_NONE;
 
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) {
+        if (gPlayer[0].state == PLAYERSTATE_STANDBY) {
             return;
         }
 
@@ -743,7 +743,7 @@ void Katina_BossHandleDamage(KaSaucerer* this) {
         }
     }
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+    if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
         if ((gGameFrameCount % 16) == 0) {
             for (i = 0; i < 4; i++) {
                 if ((this->swork[10 + i] <= 0) && (Rand_ZeroOne() < 0.2f)) {
@@ -916,11 +916,11 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
          * Set checkpoint.
          */
         case SAUCERER_CS_APPROACH_BASE:
-            if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+            if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
                 if (this->obj.pos.z < 4500.0f) {
                     this->state++;
 
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                    gPlayer[0].state = PLAYERSTATE_STANDBY;
 
                     gPlayer[0].cam.eye.x = -900.0f;
                     gPlayer[0].cam.eye.y = 100.0f;
@@ -1044,8 +1044,8 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
 
                 this->state++;
 
-                if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                if (gPlayer[0].state == PLAYERSTATE_STANDBY) {
+                    gPlayer[0].state = PLAYERSTATE_ACTIVE;
                     Camera_Update360(&gPlayer[0], true);
                 }
 
@@ -1175,8 +1175,8 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
 
             Math_SmoothStepToF(&this->fwork[BOSS_MOVEMENT_SPEED], 5.0f, 0.1f, 0.5f, 0.0f);
 
-            if ((this->timer_050 == 0) && ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                                           (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
+            if ((this->timer_050 == 0) &&
+                ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
                 gShowAllRangeCountdown = false;
                 this->timer_050 = 1000;
                 this->state = 15;
@@ -1192,7 +1192,7 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
                 SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 50);
                 SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 50);
 
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                gPlayer[0].state = PLAYERSTATE_STANDBY;
 
                 gPlayer[0].camRoll = 0.0f;
 
@@ -1217,7 +1217,7 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
             }
 
             if (this->timer_050 == 500) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csState = 100;
                 gPlayer[0].draw = false;
                 gCsFrameCount = 5000;
@@ -1239,7 +1239,7 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
                 this->obj.rot.x = 180.0f;
                 this->fwork[BOSS_FWORK_13] = 15.0f;
 
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                gPlayer[0].state = PLAYERSTATE_STANDBY;
                 gPlayer[0].cam.eye.x = this->obj.pos.x;
                 gPlayer[0].cam.eye.y = 600.0f;
                 gPlayer[0].cam.eye.z = this->obj.pos.z - 1500.0f;
@@ -1371,7 +1371,7 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
                 gFillScreenBlue = 255;
 
                 if (gFillScreenAlpha == 255) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = 2;
                     gPlayer[0].draw = true;
 
@@ -1403,9 +1403,9 @@ void Katina_KaSaucerer_Update(KaSaucerer* this) {
 
             Math_SmoothStepToF(&this->fwork[BOSS_MOVEMENT_SPEED], 0.0f, 0.1f, 3.0f, 0.0f);
 
-            if ((this->timer_050 == 0) && ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
-                                           (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+            if ((this->timer_050 == 0) &&
+                ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csState = 0;
                 gMissionStatus = MISSION_ACCOMPLISHED;
                 this->obj.pos.z = 0.0f;
@@ -1969,7 +1969,7 @@ void Katina_LevelComplete(Player* player) {
                 gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                 gFillScreenAlphaStep = 8;
                 if (gFillScreenAlpha == 255) {
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[LEVEL_KATINA] = Play_CheckMedalStatus(150) + 1;
@@ -2160,7 +2160,7 @@ void Katina_801981F8(Actor* this) {
     Vec3f dest;
     s32 pad;
 
-    if ((this->timer_0C0 == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) {
+    if ((this->timer_0C0 == 0) && (gPlayer[0].state != PLAYERSTATE_STANDBY)) {
         this->timer_0C0 = 2;
         src.x = 0.0f;
         src.y = 0.0f;
@@ -2320,7 +2320,7 @@ void Katina_UpdateEvents(ActorAllRange* this) {
             if (((gAllRangeEventTimer % 256) == 0) && (Rand_ZeroOne() < 0.5f)) {
                 AllRange_PlayMessage(gMsg_ID_18060, RCID_BILL);
             }
-        } else if ((gAllRangeEventTimer > 500) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) &&
+        } else if ((gAllRangeEventTimer > 500) && (gPlayer[0].state == PLAYERSTATE_ACTIVE) &&
                    ((gAllRangeEventTimer % 512) == 0)) {
             switch (RAND_INT(3.99f)) {
                 case 0:
@@ -2482,7 +2482,7 @@ void Katina_EnemyUpdate(ActorAllRange* this) {
                 this->fwork[KA_ACTOR_FWORK_1] = 40.0f;
                 yRand = RAND_FLOAT(1000.0f);
 
-                if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) {
+                if (gPlayer[0].state == PLAYERSTATE_STANDBY) {
                     xRand = RAND_FLOAT_CENTERED(5000.0f);
                     zRand = RAND_FLOAT_CENTERED(5000.0f);
                 } else {
diff --git a/src/overlays/ovl_i4/fox_sz.c b/src/overlays/ovl_i4/fox_sz.c
index dbadf9d5c..c535422b6 100644
--- a/src/overlays/ovl_i4/fox_sz.c
+++ b/src/overlays/ovl_i4/fox_sz.c
@@ -58,9 +58,9 @@ void SectorZ_MissileExplode(ActorAllRange* this, bool shotDown) {
     if (shotDown) {
         sMissileDestroyCount++;
         if ((sMissileDestroyCount >= 6) &&
-            ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
+            ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
             gCsFrameCount = 0;
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+            gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
             gPlayer[0].csState = 1000;
             gActors[SZ_GREAT_FOX].state = 6;
             gPlayer[0].csTimer = 30;
@@ -174,8 +174,8 @@ void SectorZ_Missile_Update(ActorAllRange* this) {
         SectorZ_MissileExplode(this, false);
         gCameraShake = 25;
         gBosses[SZ_GREAT_FOX].dmgType = DMG_MISSILE;
-        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
+            gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
             gPlayer[0].csState = 0;
             gActors[SZ_GREAT_FOX].state = -31072;
             return;
@@ -185,10 +185,10 @@ void SectorZ_Missile_Update(ActorAllRange* this) {
     // Level complete trigger check
     if (((fabsf(this->fwork[MISSILE_TARGET_Z] - this->obj.pos.z) < 2000.0f) &&
          (((gPlayer[0].cam.eye.z < 0.0f) || (D_edisplay_801615D0.y < 0.0f)) ||
-          (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_GFOX_REPAIR))) &&
-        (((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_GFOX_REPAIR)) ||
-         (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+          (gPlayer[0].state == PLAYERSTATE_GFOX_REPAIR))) &&
+        (((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_GFOX_REPAIR)) ||
+         (gPlayer[0].state == PLAYERSTATE_U_TURN))) {
+        gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
         gPlayer[0].csState = 100;
         gActors[SZ_GREAT_FOX].state = -31072;
     }
@@ -275,7 +275,7 @@ void SectorZ_KattCutscene(ActorCutscene* this) {
         this->timer_0BC = 400;
         this->state = 3;
 
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+        gPlayer[0].state = PLAYERSTATE_STANDBY;
 
         Audio_PlayFanfare(NA_BGM_KATT, 20, 10, 10);
         AllRange_ClearRadio();
@@ -358,7 +358,7 @@ void SectorZ_EnemyUpdate(ActorAllRange* this) {
         Radio_PlayMessage(gMsg_ID_16030, RCID_FALCO);
     }
 
-    if (((this->timer_0C0 == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) &&
+    if (((this->timer_0C0 == 0) && (gPlayer[0].state != PLAYERSTATE_STANDBY)) &&
         ((gAllRangeEventTimer < 200) || ((gAllRangeEventTimer > 4000) && (gAllRangeEventTimer < 4200)))) {
         this->timer_0C0 = 5;
 
@@ -426,7 +426,7 @@ void SectorZ_EnemyUpdate(ActorAllRange* this) {
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_RIGHT], 2);
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_LEFT], 1);
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_CENTER], 0);
-            D_hud_80161710 = 580;
+            gRadarMissileAlarmTimer = 580;
             break;
 
         case 3850:
@@ -436,11 +436,11 @@ void SectorZ_EnemyUpdate(ActorAllRange* this) {
         case 4000:
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_LEFT], 1);
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_CENTER], 0);
-            D_hud_80161710 = 580;
+            gRadarMissileAlarmTimer = 580;
             break;
 
         case 2000:
-            D_hud_80161710 = 490;
+            gRadarMissileAlarmTimer = 490;
             SectorZ_SpawnMissile(&gActors[SZ_MISSILE_CENTER], 0);
 
             gActors[SZ_MISSILE_CENTER].fwork[1] = 10.0f;
@@ -451,7 +451,7 @@ void SectorZ_EnemyUpdate(ActorAllRange* this) {
             SectorZ_SpawnMissileEscort(&gActors[SZ_ESCORT_3], 2);
             SectorZ_SpawnMissileEscort(&gActors[SZ_ESCORT_4], 3);
 
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+            gPlayer[0].state = PLAYERSTATE_STANDBY;
 
             this->state = 10;
             this->fwork[10] = 0.0f;
@@ -479,13 +479,13 @@ void SectorZ_EnemyUpdate(ActorAllRange* this) {
 
 bool SectorZ_GFoxArwingRepair(Player* player) {
     // clang-format off
-    if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+    if (player->state == PLAYERSTATE_ACTIVE) {
         if ((player->yRot_114 > 30.0f) && 
             (player->yRot_114 < 150.0f) && 
             (fabsf(player->pos.x - 1270.0f) < 450.0f) &&
             (fabsf(player->pos.y - 265.0f) < 100.0f) && 
             (fabsf(player->trueZpos) < 172.0f)) {
-            player->state_1C8 = PLAYERSTATE_1C8_GFOX_REPAIR;
+            player->state = PLAYERSTATE_GFOX_REPAIR;
             player->csState = 0;
             gActors[SZ_GREAT_FOX].state = 20;
             gAllRangeEventTimer--;
@@ -589,7 +589,7 @@ void SectorZ_UpdateEvents(ActorAllRange* this) {
 
             if (this->timer_0BC == 70) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
             }
@@ -656,7 +656,7 @@ void SectorZ_UpdateEvents(ActorAllRange* this) {
 
             if (this->timer_0BC < 9680) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
                 gActors[SZ_MISSILE_CENTER].fwork[1] = 25.0f;
@@ -970,7 +970,7 @@ void SectorZ_LevelStart(Player* player) {
 
             if (gCsFrameCount == 820) {
                 Audio_KillSfxById(NA_SE_DEMO_SIREN);
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_01C = player->unk_018 = player->unk_014 = 0.f;
                 AUDIO_PLAY_BGM(gBgmSeqId);
                 gLevelStartStatusScreenTimer = 50;
@@ -1395,7 +1395,7 @@ void SectorZ_LevelComplete(Player* player) {
                 gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
                 gFillScreenAlphaStep = 8;
                 if (gFillScreenAlpha == 255) {
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[LEVEL_SECTOR_Z] = Play_CheckMedalStatus(100) + 1;
diff --git a/src/overlays/ovl_i5/fox_ma.c b/src/overlays/ovl_i5/fox_ma.c
index d519b3710..ff6b1f11d 100644
--- a/src/overlays/ovl_i5/fox_ma.c
+++ b/src/overlays/ovl_i5/fox_ma.c
@@ -648,7 +648,7 @@ void Macbeth_8019A2F4(MaLocomotive* this) {
         }
     }
 
-    if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) {
         if (var_fa1 < (gPlayer[0].trueZpos - this->obj.pos.z - (D_i5_801BA1E4 * 1416 - 1416))) {
             Math_SmoothStepToF(&sMaTrainSpeedTarget, -6.0f, 0.1f, 0.2f, 0.01f);
         }
@@ -945,7 +945,7 @@ void Macbeth_MaLocomotive_Update(MaLocomotive* this) {
         case 0:
             D_i5_801BE320[25] = 1;
             if ((D_i5_801BE320[9] <= 0) && (D_i5_801BE320[10] <= 0) && (D_i5_801BE320[17] != 0) &&
-                (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+                (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 D_i5_801BE320[30] = 0;
                 this->timer_0BC = 150;
                 this->timer_0BE = 200;
@@ -1040,8 +1040,8 @@ void Macbeth_MaLocomotive_Update(MaLocomotive* this) {
             }
             if (this->timer_0BC == 100) {
                 Object_Kill(&this->obj, this->sfxSource);
-                if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = 0;
                     gMissionStatus = MISSION_COMPLETE;
                 }
@@ -1087,7 +1087,7 @@ void Macbeth_MaLocomotive_Update(MaLocomotive* this) {
         this->state = 4;
     }
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gCsFrameCount > 630)) {
+    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (gCsFrameCount > 630)) {
         Object_Kill(&this->obj, this->sfxSource);
     }
 }
@@ -2333,7 +2333,7 @@ void Macbeth_Train_Draw(Actor* this) {
     Vec3f frameTable[50];
     s32 id;
 
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+    if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
         if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) ||
             ((gPlayer[0].trueZpos - this->obj.pos.z) < -1000.0f)) {
             return;
@@ -2502,7 +2502,7 @@ void Macbeth_Train_Draw(Actor* this) {
             Animation_DrawSkeleton(1, D_MA_601042C, frameTable, Macbeth_MaLocomotive_OverrideLimbDraw,
                                    Macbeth_MaLocomotive_PostLimbDraw, this, &gIdentityMatrix);
 
-            if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+            if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
                 RCP_SetupDL(&gMasterDisp, SETUPDL_29);
                 gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN);
                 gSPDisplayList(gMasterDisp++, D_MA_6003370);
@@ -2613,7 +2613,7 @@ void Macbeth_TrainTrack_Draw(Scenery* this) {
     switch (this->obj.id) {
         case OBJ_SCENERY_MA_TRAIN_TRACK_3:
         case OBJ_SCENERY_MA_TRAIN_TRACK_6:
-            if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
+            if ((gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) &&
                 ((gPlayer[0].trueZpos - this->obj.pos.z) < -2500.0f)) {
                 Object_Kill(&this->obj, this->sfxSource);
             }
@@ -2622,7 +2622,7 @@ void Macbeth_TrainTrack_Draw(Scenery* this) {
 
         case OBJ_SCENERY_MA_TRAIN_TRACK_4:
         case OBJ_SCENERY_MA_TRAIN_TRACK_7:
-            if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) &&
+            if ((gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE) &&
                 ((gPlayer[0].trueZpos - this->obj.pos.z) < -2500.0f)) {
                 Object_Kill(&this->obj, this->sfxSource);
             }
@@ -2730,7 +2730,7 @@ void Macbeth_MaTower_Draw(Scenery* this) {
 
 // Scenery 77 to 82, and 84 to 91
 void Macbeth_IndicatorSign_Draw(Scenery* this) {
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) {
+    if (gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) {
         Object_Kill(&this->obj, this->sfxSource);
     }
 
@@ -3399,7 +3399,7 @@ void Macbeth_MaRailwaySignal_Update(MaRailwaySignal* this) {
                 }
                 gObjectLoadIndex = i;
                 gTeamLowHealthMsgTimer = -1;
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csState = 0;
                 gMissionStatus = MISSION_ACCOMPLISHED;
                 this->timer_0BC = 5;
@@ -4321,7 +4321,7 @@ void Macbeth_Actor207_Update(Actor207* this) {
             Macbeth_801A6984(this);
             Macbeth_Actor207_FacePlayer(this);
 
-            if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+            if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
                 var_v1 = 0xFF;
                 if (D_i5_801BE320[18] == 2) {
                     var_v1 = 3;
@@ -5182,7 +5182,7 @@ void Macbeth_Actor207_Update(Actor207* this) {
         }
     }
 
-    if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+    if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state != PLAYERSTATE_LEVEL_COMPLETE)) {
         if (gBossFrameCount == 0) {
             Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY);
         } else if (gBossFrameCount > 155) {
@@ -5236,7 +5236,7 @@ void Macbeth_Actor207_Update(Actor207* this) {
         D_i5_801BE368[22] = 16.0f;
     }
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (this->state < 20)) {
+    if ((gPlayer[0].state == PLAYERSTATE_LEVEL_COMPLETE) && (this->state < 20)) {
         D_i5_801BE320[3] = 0;
         D_i5_801BE320[2] = 1;
         D_i5_801BE320[31] = 30;
@@ -5429,7 +5429,7 @@ void Macbeth_Actor207_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) {
 }
 
 void Macbeth_Actor207_Draw(Actor207* this) {
-    if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+    if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
         if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) ||
             ((gPlayer[0].trueZpos - this->obj.pos.z) < -1000.0f)) {
             return;
@@ -5613,7 +5613,7 @@ void Macbeth_LevelStart(Player* player) {
         case 3:
             AUDIO_PLAY_BGM(NA_BGM_STAGE_MA);
             gLevelStartStatusScreenTimer = 50;
-            player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+            player->state = PLAYERSTATE_ACTIVE;
             player->csState = player->csTimer = player->csEventTimer = player->hideShadow = 0;
             player->gravity = 3.0f;
             player->unk_014 = 0.0f;
@@ -7221,7 +7221,7 @@ void Macbeth_LevelComplete2(Player* player) {
         gFillScreenAlphaTarget = 255;
 
         if (gFillScreenAlpha == 255) {
-            player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+            player->state = PLAYERSTATE_NEXT;
             gFadeoutType = 4;
             Play_ClearObjectData();
             Audio_FadeOutAll(10);
@@ -7879,7 +7879,7 @@ void Macbeth_LevelComplete1(Player* player) {
         gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
         gFillScreenAlphaTarget = 255;
         if (gFillScreenAlpha == 255) {
-            player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+            player->state = PLAYERSTATE_NEXT;
             gFadeoutType = 4;
             Play_ClearObjectData();
             Audio_FadeOutAll(10);
diff --git a/src/overlays/ovl_i5/fox_ti.c b/src/overlays/ovl_i5/fox_ti.c
index d7f12adec..909f0cda3 100644
--- a/src/overlays/ovl_i5/fox_ti.c
+++ b/src/overlays/ovl_i5/fox_ti.c
@@ -5622,9 +5622,9 @@ void Titania_801990DC(TiGoras* this) {
             break;
     }
 
-    if ((this->timer_050 == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+    if ((this->timer_050 == 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
         Object_Kill(&this->obj, this->sfxSource);
-        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
         gPlayer[0].csState = 0;
     }
 }
diff --git a/src/overlays/ovl_i5/fox_ti_cs.c b/src/overlays/ovl_i5/fox_ti_cs.c
index 871d64255..99e2287e0 100644
--- a/src/overlays/ovl_i5/fox_ti_cs.c
+++ b/src/overlays/ovl_i5/fox_ti_cs.c
@@ -221,7 +221,7 @@ void Titania_LevelStart(Player* player) {
 
             if (gCsFrameCount == 580) {
                 gLevelStartStatusScreenTimer = 50;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = player->csTimer = player->csEventTimer = player->hideShadow = 0;
                 player->gravity = 3.0f;
                 player->unk_014 = 0.0f;
@@ -524,7 +524,7 @@ void Titania_LevelComplete(Player* player) {
         gFillScreenAlphaTarget = 255;
 
         if (gFillScreenAlpha == 255) {
-            player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+            player->state = PLAYERSTATE_NEXT;
             gFadeoutType = 4;
             Play_ClearObjectData();
             Audio_FadeOutAll(10);
diff --git a/src/overlays/ovl_i6/fox_andross.c b/src/overlays/ovl_i6/fox_andross.c
index 1f7f4ea50..3a870aeb8 100644
--- a/src/overlays/ovl_i6/fox_andross.c
+++ b/src/overlays/ovl_i6/fox_andross.c
@@ -450,7 +450,7 @@ void Andross_80188A4C(AndBrain* this) {
                             gScreenFlashTimer = 8;
                             AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4);
                             Boss_AwardBonus(this);
-                            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+                            gPlayer[0].state = PLAYERSTATE_STANDBY;
                             this->state = 20;
                             this->swork[1] = 1000;
                             this->swork[2] = 1000;
@@ -658,7 +658,7 @@ void Andross_AndJamesTrigger_Update(AndJamesTrigger* this) {
     s32 i;
     Player* player = &gPlayer[0];
 
-    if ((gDrawBackdrop != 7) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) &&
+    if ((gDrawBackdrop != 7) && (gPlayer[0].state == PLAYERSTATE_ACTIVE) &&
         (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 9000.0f) &&
         (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 9000.0f)) {
         gDrawBackdrop = 7;
@@ -667,14 +667,14 @@ void Andross_AndJamesTrigger_Update(AndJamesTrigger* this) {
         SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 20);
     }
 
-    if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 500.0f) &&
+    if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 500.0f) &&
         (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) {
         Audio_KillSfxById(NA_SE_OB_ROUTE_EXPLOSION1);
         Audio_SetEnvSfxReverb(0);
         gCurrentLevel = LEVEL_VENOM_2;
         gLevelPhase = 1;
         gVenomHardClear = 1;
-        player->state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+        player->state = PLAYERSTATE_LEVEL_COMPLETE;
         player->csState = 3;
         player->zPath = gPathProgress = 0.0f;
         gDrawBackdrop = gDrawGround = true;
@@ -734,7 +734,7 @@ void Andross_AndExplosion_Update(AndExplosion* this) {
 
     if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 500.0f) &&
         (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) {
-        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE || gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE || gPlayer[0].state == PLAYERSTATE_U_TURN)) {
             gPlayer[0].shields = 0;
             gRightWingHealth[0] = gLeftWingHealth[0] = 0;
             Player_ApplyDamage(&gPlayer[0], 1, 60);
@@ -843,7 +843,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
             this->swork[5] = 100;
 
             if (this->timer_050 == 0) {
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_START_360;
+                gPlayer[0].state = PLAYERSTATE_START_360;
                 gPlayer[0].csState = 0;
                 this->state = 1;
                 gPlayer[0].hideShadow = true;
@@ -851,7 +851,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
             break;
 
         case 1:
-            if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) && (this->timer_050 == 0)) {
+            if ((gPlayer[0].state != PLAYERSTATE_START_360) && (this->timer_050 == 0)) {
                 this->fwork[2] = 1.6f;
                 this->timer_050 = RAND_INT(1.0f) * 50.0f + 50;
                 this->fwork[3] = RAND_FLOAT_CENTERED(10000.0f);
@@ -885,7 +885,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
 
                 Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 40.0f, 1.0f, 3.0f, 0.0f);
 
-                if (((gGameFrameCount % 32) == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) {
+                if (((gGameFrameCount % 32) == 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE)) {
                     Player_ApplyDamage(&gPlayer[0], 3, 10);
                 }
             }
@@ -1082,7 +1082,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
                         gPlayer[0].rot.z = 0.0f;
                     gPlayer[0].zRotBank = 150.0f;
                     gPlayer[0].camRoll = -90.0f;
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                    gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                     gPlayer[0].csState = 100;
                     gPlayer[0].csTimer = 240;
                     gPlayer[0].draw = true;
@@ -1121,7 +1121,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
             }
             this->obj.pos.y = 10000.0f;
 
-            if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && ((gGameFrameCount % 4) == 0)) {
+            if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) && ((gGameFrameCount % 4) == 0)) {
                 Matrix_RotateY(gCalcMatrix, (gPlayer[0].yRot_114 + gPlayer[0].rot.y) * M_DTOR, 0U);
                 vec.x = RAND_FLOAT_CENTERED(800.0f);
                 vec.y = 600.0f;
@@ -1129,7 +1129,7 @@ void Andross_AndBrain_Update(AndBrain* this) {
                 Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp64);
                 Andross_Effect357_Spawn(gPlayer[0].pos.x + sp64.x, sp64.y, gPlayer[0].trueZpos + sp64.z, 1.2f);
             }
-            if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) {
+            if (gPlayer[0].state != PLAYERSTATE_STANDBY) {
                 Matrix_RotateY(gCalcMatrix, -gPlayer[0].camYaw, MTXF_NEW);
 
                 vec.x = 0.0f;
@@ -1430,7 +1430,7 @@ void Andross_8018C390(Player* player) {
                 }
             }
             if (player->csTimer == 0) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.0f;
                 player->unk_018 = 0.0f;
             }
@@ -1675,7 +1675,7 @@ void Andross_Effect396_Draw(Effect396* this) {
 }
 
 void Andross_8018D0D8(AndAndross* this) {
-    if ((gPlayer[0].mercyTimer == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) &&
+    if ((gPlayer[0].mercyTimer == 0) && (gPlayer[0].state == PLAYERSTATE_ACTIVE) &&
         (fabsf(this->vwork[10].x - gPlayer[0].pos.x) < 700.0f) &&
         (fabsf(this->vwork[10].y - gPlayer[0].pos.y) < 700.0f)) {
         Player_ApplyDamage(&gPlayer[0], 0, 40);
@@ -1730,7 +1730,7 @@ void Andross_8018D2B0(AndAndross* this) {
 
                         this->state = 31;
                         this->timer_050 = 200;
-                        gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                        gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                         gPlayer[0].csState = 0;
                     } else if (this->health < 50) {
                         AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, this->sfxSource, 4);
@@ -2516,11 +2516,11 @@ void Andross_AndAndross_Update(AndAndross* this) {
             }
             if ((this->animFrame > 35) && (this->animFrame < 150) && ((this->animFrame % 32) == 0)) {
                 AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BITE1, this->sfxSource, 4);
-                if (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH) {
+                if (player->state == PLAYERSTATE_ANDROSS_MOUTH) {
                     gControllerRumbleTimers[0] = 10;
                 }
             }
-            if ((this->animFrame == 20) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) {
+            if ((this->animFrame == 20) && (player->state == PLAYERSTATE_ANDROSS_MOUTH)) {
                 player->draw = false;
                 for (i = 0; i < ARRAY_COUNT(gEffects); i++) {
                     if (gEffects[i].obj.id == OBJ_EFFECT_396) {
@@ -2588,7 +2588,7 @@ void Andross_AndAndross_Update(AndAndross* this) {
                 AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_VOMIT, this->sfxSource, 4);
             }
 
-            if ((this->animFrame == 13) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) {
+            if ((this->animFrame == 13) && (player->state == PLAYERSTATE_ANDROSS_MOUTH)) {
                 player->draw = true;
                 player->csState = 1;
                 player->csTimer = 60;
@@ -2683,8 +2683,8 @@ void Andross_AndAndross_Update(AndAndross* this) {
                     this->swork[8] = 1;
                     this->fwork[9] = 0.2f;
                     this->animFrame = 0;
-                    if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
-                        player->state_1C8 = PLAYERSTATE_1C8_ANDROSS_MOUTH;
+                    if (player->state == PLAYERSTATE_ACTIVE) {
+                        player->state = PLAYERSTATE_ANDROSS_MOUTH;
                         player->csState = 0;
                     }
                     break;
@@ -4376,7 +4376,7 @@ void Andross_80193C4C(Player* player) {
             player->vel.y = sp68.y;
 
             if (player->csTimer == 0) {
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->unk_014 = 0.2f;
                 player->unk_018 = 0.0f;
                 player->unk_01C = 0.05f;
diff --git a/src/overlays/ovl_i6/fox_sy.c b/src/overlays/ovl_i6/fox_sy.c
index bd3bd9630..065f0457f 100644
--- a/src/overlays/ovl_i6/fox_sy.c
+++ b/src/overlays/ovl_i6/fox_sy.c
@@ -83,7 +83,7 @@ void SectorY_SyShogun_Init(SyShogun* this) {
         this->fwork[43] = 3.5f;
         this->fwork[45] = 40.0f;
 
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_START_360) {
+        if (gPlayer[0].state == PLAYERSTATE_START_360) {
             this->obj.pos.z = -28900.0f;
             gScenery360[SHOGUN_SHIP].obj.pos.z = -30000.0f;
         }
@@ -111,8 +111,8 @@ void SectorY_SyShogun_Init(SyShogun* this) {
     }
 
     if (gLevelMode == LEVELMODE_ON_RAILS) {
-        if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_START_360;
+        if (gPlayer[0].state == PLAYERSTATE_ACTIVE) {
+            gPlayer[0].state = PLAYERSTATE_START_360;
             gPlayer[0].csState = 0;
             SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 50);
             SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 50);
@@ -283,7 +283,7 @@ void SectorY_801983E4(SyShogun* this) {
                     } else {
                         SectorY_80199D64(this);
                     }
-                } else if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_U_TURN) {
+                } else if (gPlayer[0].state != PLAYERSTATE_U_TURN) {
                     Math_SmoothStepToAngle(&this->rot_078.x, 181.0f, 0.1f, 6.0f, 0.1f);
                     this->swork[21] = 3;
                     this->fwork[11] = SIN_DEG(this->rot_078.y) * (this->fwork[45] + 10.0f);
@@ -438,9 +438,9 @@ void SectorY_80198F5C(SyShogun* this) {
         if (this->index == 0) {
             this->timer_058 = 20000;
             this->vel.x = this->vel.y = this->vel.z = 0.0f;
-            if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+            if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
                 gCsFrameCount = 0;
-                gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                gPlayer[0].state = PLAYERSTATE_LEVEL_COMPLETE;
                 gPlayer[0].csTimer = 0;
                 gPlayer[0].csState = gPlayer[0].csTimer;
                 gPlayer[0].rot.y += gPlayer[0].yRot_114;
@@ -475,9 +475,9 @@ void SectorY_80198F5C(SyShogun* this) {
         this->vel.y = 0.0f;
         this->vel.x = 0.0f;
 
-        if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
+        if ((gPlayer[0].state == PLAYERSTATE_ACTIVE) || (gPlayer[0].state == PLAYERSTATE_U_TURN)) {
             this->timer_058 = 100;
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
+            gPlayer[0].state = PLAYERSTATE_STANDBY;
             gCsFrameCount = 0;
             xDisplacement = gPlayer[0].cam.eye.x - this->obj.pos.x;
             zDisplacement = gPlayer[0].cam.eye.z - this->obj.pos.z;
@@ -631,7 +631,7 @@ void SectorY_80199438(SyShogun* this) {
                     gScenery360[SHOGUN_SHIP].info.dList = aSySaruzinDL;
                     gScenery360[SHOGUN_SHIP].info.drawType = 0;
                 } else {
-                    gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                    gPlayer[0].state = PLAYERSTATE_ACTIVE;
                     Camera_UpdateArwing360(&gPlayer[0], true);
                     gPlayer[0].unk_014 = 0.0f;
                     if (gTeamShields[TEAM_ID_PEPPY] > 0) {
@@ -1096,7 +1096,7 @@ void SectorY_8019AEEC(SyShogun* this) {
             gScenery360[SHOGUN_SHIP].obj.pos.z = -20000.0f;
             this->fwork[43] = 0.0f;
             this->vel.y = 0.0f;
-            gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+            gPlayer[0].state = PLAYERSTATE_ACTIVE;
             Camera_UpdateArwing360(&gPlayer[0], true);
             gPlayer[0].unk_014 = 0.0f;
             this->swork[34]++;
@@ -1409,7 +1409,7 @@ void SectorY_SyShogun_Update(SyShogun* this) {
     Vec3f dest;
     s32 pad;
 
-    if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) {
+    if (gPlayer[0].state != PLAYERSTATE_START_360) {
         if (this->swork[34] == 1) {
             if (this->health > 0) {
                 gScenery360[SHOGUN_SHIP].obj.pos.z += 20.0f;
@@ -2263,7 +2263,7 @@ void SectorY_LevelComplete(Player* player) {
                 gFillScreenAlphaStep = 8;
                 if (gFillScreenAlpha == 255) {
                     Audio_FadeOutAll(10);
-                    player->state_1C8 = PLAYERSTATE_1C8_NEXT;
+                    player->state = PLAYERSTATE_NEXT;
                     player->csTimer = 0;
                     gFadeoutType = 4;
                     gLeveLClearStatus[LEVEL_SECTOR_Y] = Play_CheckMedalStatus(150) + 1;
@@ -3401,7 +3401,7 @@ void SectorY_801A0AC0(Player* player) {
 
                 gLevelStartStatusScreenTimer = 100;
 
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 player->csState = 0;
                 player->csTimer = 0;
                 player->csEventTimer = 0;
diff --git a/src/overlays/ovl_i6/fox_ve2.c b/src/overlays/ovl_i6/fox_ve2.c
index 716bd8d74..9f8f7cf07 100644
--- a/src/overlays/ovl_i6/fox_ve2.c
+++ b/src/overlays/ovl_i6/fox_ve2.c
@@ -53,7 +53,7 @@ void Venom2_UpdateEvents(ActorAllRange* this) {
                 gStarWolfTeamAlive[i] = 1;
             }
 
-            if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
+            if (player->state == PLAYERSTATE_ACTIVE) {
                 this->state = 2;
                 player->pos.x = 0.0f;
                 player->pos.z = 8000.0f;
@@ -93,7 +93,7 @@ void Venom2_UpdateEvents(ActorAllRange* this) {
                 if (this->timer_0BC == 0) {
                     team->state = 2;
                     this->state = 2;
-                    player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                    player->state = PLAYERSTATE_ACTIVE;
                     player->unk_014 = 0.0001f;
                     gLevelStartStatusScreenTimer = 80;
                 }
@@ -111,14 +111,14 @@ void Venom2_UpdateEvents(ActorAllRange* this) {
                 this->timer_0BE = 80;
             }
 
-            if ((this->timer_0BE == 1) && (player->state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
+            if ((this->timer_0BE == 1) && (player->state != PLAYERSTATE_LEVEL_COMPLETE)) {
                 for (i = 1; i < ARRAY_COUNT(gTeamShields); i++) {
                     gPrevPlanetTeamShields[i] = gSavedTeamShields[i];
                     gPrevPlanetSavedTeamShields[i] = gSavedTeamShields[i];
                     gSavedTeamShields[i] = gTeamShields[i];
                 }
 
-                player->state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
+                player->state = PLAYERSTATE_LEVEL_COMPLETE;
                 player->csState = 0;
                 gLeveLClearStatus[gCurrentLevel] = 2;
                 D_ctx_80177C94 = gGoldRingCount[0];
@@ -146,7 +146,7 @@ void Venom2_UpdateEvents(ActorAllRange* this) {
 
             if ((gControllerPress->button & START_BUTTON) || (gAllRangeEventTimer == (gAllRangeSpawnEvent + 300))) {
                 this->state = 2;
-                player->state_1C8 = PLAYERSTATE_1C8_ACTIVE;
+                player->state = PLAYERSTATE_ACTIVE;
                 Camera_Update360(player, true);
                 player->unk_014 = 0.0f;
                 D_hud_80161708 = 0;
diff --git a/srceu/audio/audio_effects.c b/srceu/audio/audio_effects.c
index 1463f7ee7..cb071aee6 100644
--- a/srceu/audio/audio_effects.c
+++ b/srceu/audio/audio_effects.c
@@ -1,19 +1,277 @@
-#include "common.h"
+#include "sys.h"
+#include "sf64audio_provisional.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_800133E0.s")
+void func_800144C4(SequencePlayer* seqPlayer);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_80013588.s")
+void func_800133E0(SequenceChannel* channel, s32 updateVolume) {
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_800136E8.s")
+    if (channel->changes.s.volume || updateVolume) {
+        f32 channelVolume = channel->volume * channel->volumeMod * channel->seqPlayer->appliedFadeVolume;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_800137BC.s")
+        if (channel->seqPlayer->muted && (channel->muteBehavior & 0x20)) {
+            channelVolume = channel->seqPlayer->muteVolumeMod * channelVolume;
+        }
+        channel->appliedVolume = SQ(channelVolume);
+    }
+    if (channel->changes.s.pan) {
+        channel->pan = channel->newPan * channel->panChannelWeight;
+    }
+    for (i = 0; i < ARRAY_COUNT(channel->layers); i++) {
+        SequenceLayer* layer = channel->layers[i];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_80013800.s")
+        if ((layer != NULL) && layer->enabled && (layer->note != NULL)) {
+            if (layer->ignoreDrumPan) {
+                layer->noteFreqMod = layer->freqMod * channel->freqMod;
+                layer->noteVelocity = layer->velocitySquare * channel->appliedVolume;
+                layer->notePan = (channel->pan + (layer->pan * (0x80 - channel->panChannelWeight))) >> 7;
+                layer->ignoreDrumPan = false;
+            } else {
+                if (channel->changes.s.freqMod) {
+                    layer->noteFreqMod = layer->freqMod * channel->freqMod;
+                }
+                if (channel->changes.s.volume || updateVolume) {
+                    layer->noteVelocity = layer->velocitySquare * channel->appliedVolume;
+                }
+                if (channel->changes.s.pan) {
+                    layer->notePan = (channel->pan + (layer->pan * (0x80 - channel->panChannelWeight))) >> 7;
+                }
+            }
+        }
+    }
+    channel->changes.asByte = 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_800139F8.s")
+void func_80013588(SequencePlayer* seqplayer) {
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_80013A64.s")
+    if (seqplayer->fadeTimer != 0) {
+        seqplayer->fadeVolume += seqplayer->fadeVelocity;
+        seqplayer->recalculateVolume = true;
+        if (seqplayer->fadeVolume > 1.0f) {
+            seqplayer->fadeVolume = 1.0f;
+        }
+        if (seqplayer->fadeVolume < 0.0f) {
+            seqplayer->fadeVolume = 0.0f;
+        }
+        seqplayer->fadeTimer--;
+        if ((seqplayer->fadeTimer == 0) && (seqplayer->state == 2)) {
+            func_800144C4(seqplayer);
+            return;
+        }
+    }
+    if (seqplayer->recalculateVolume) {
+        seqplayer->appliedFadeVolume = seqplayer->fadeVolume * seqplayer->fadeVolumeMod;
+    }
+    for (i = 0; i < 16; i++) {
+        if ((IS_SEQUENCE_CHANNEL_VALID(seqplayer->channels[i]) == 1) && (seqplayer->channels[i]->enabled == 1)) {
+            func_800133E0(seqplayer->channels[i], seqplayer->recalculateVolume);
+        }
+    }
+    seqplayer->recalculateVolume = false;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_80013B4C.s")
+f32 func_800136E8(Portamento* portamento) {
+    u32 temp;
+    f32 temp2;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_effects/func_80013B70.s")
+    portamento->cur += portamento->speed;
+    temp = portamento->cur;
+    if (temp > 127) {
+        temp = 127;
+    }
+    temp2 = 1.0f + ((gBendPitchOneOctaveFrequencies[0x80 + temp] - 1.0f) * portamento->extent);
+    return temp2;
+}
+
+s16 func_800137BC(VibratoState* vibrato) {
+    s32 index;
+
+    vibrato->time += (s32) vibrato->rate;
+    index = (vibrato->time >> 10) & 0x3F;
+    return vibrato->curve[index] >> 8;
+}
+
+f32 func_80013800(VibratoState* vibrato) {
+    s32 ret;
+    f32 temp;
+    f32 temp2;
+
+    if (vibrato->delay != 0) {
+        vibrato->delay--;
+        return 1.0f;
+    }
+    if (vibrato->depthChangeTimer) {
+        if (vibrato->depthChangeTimer == 1) {
+            vibrato->depth = (s32) vibrato->channel->vibratoDepthTarget;
+        } else {
+            vibrato->depth +=
+                ((s32) vibrato->channel->vibratoDepthTarget - vibrato->depth) / (s32) vibrato->depthChangeTimer;
+        }
+        vibrato->depthChangeTimer--;
+    } else if (vibrato->channel->vibratoDepthTarget != (s32) vibrato->depth) {
+        if ((vibrato->depthChangeTimer = vibrato->channel->vibratoDepthChangeDelay) == 0) {
+            vibrato->depth = (s32) vibrato->channel->vibratoDepthTarget;
+        }
+    }
+    if (vibrato->rateChangeTimer) {
+        if (vibrato->rateChangeTimer == 1) {
+            vibrato->rate = (s32) vibrato->channel->vibratoRateTarget;
+        } else {
+            vibrato->rate +=
+                ((s32) vibrato->channel->vibratoRateTarget - vibrato->rate) / (s32) vibrato->rateChangeTimer;
+        }
+        vibrato->rateChangeTimer--;
+    } else if (vibrato->channel->vibratoRateTarget != (s32) vibrato->rate) {
+        if ((vibrato->rateChangeTimer = vibrato->channel->vibratoRateChangeDelay) == 0) {
+            vibrato->rate = (s32) vibrato->channel->vibratoRateTarget;
+        }
+    }
+    if (vibrato->depth == 0.0f) {
+        return 1.0f;
+    }
+    ret = func_800137BC(vibrato);
+    temp = vibrato->depth / 4096.0f;
+    temp2 = 1.0f + temp * (gBendPitchOneOctaveFrequencies[0x80 + ret] - 1.0f);
+    return temp2;
+}
+
+void func_800139F8(Note* note) {
+    if (note->playbackState.portamento.mode != 0) {
+        note->playbackState.portamentoFreqMod = func_800136E8(&note->playbackState.portamento);
+    }
+    if ((note->playbackState.vibratoState.active != 0) && (note->playbackState.parentLayer != NO_LAYER)) {
+        note->playbackState.vibratoFreqMod = func_80013800(&note->playbackState.vibratoState);
+    }
+}
+
+void func_80013A64(Note* note) {
+    NotePlaybackState* noteState = &note->playbackState;
+    VibratoState* vibrato = &noteState->vibratoState;
+
+    vibrato->active = 1;
+    vibrato->time = 0;
+    noteState->vibratoFreqMod = 1.0f;
+    noteState->portamentoFreqMod = 1.0f;
+
+    vibrato->curve = gWaveSamples[2];
+
+    vibrato->channel = noteState->parentLayer->channel;
+
+    if ((vibrato->depthChangeTimer = vibrato->channel->vibratoDepthChangeDelay) == 0) {
+        vibrato->depth = (s32) vibrato->channel->vibratoDepthTarget;
+    } else {
+        vibrato->depth = (s32) vibrato->channel->vibratoDepthStart;
+    }
+    if ((vibrato->rateChangeTimer = vibrato->channel->vibratoRateChangeDelay) == 0) {
+        vibrato->rate = (s32) vibrato->channel->vibratoRateTarget;
+    } else {
+        vibrato->rate = (s32) vibrato->channel->vibratoRateStart;
+    }
+
+    vibrato->delay = vibrato->channel->vibratoDelay;
+    noteState->portamento = noteState->parentLayer->portamento;
+}
+
+void func_80013B4C(AdsrState* adsr, EnvelopePoint* envelope, s16* arg2) {
+    adsr->action.asByte = 0;
+    adsr->state = 0;
+    adsr->delay = 0;
+    adsr->envelope = envelope;
+    adsr->sustain = 0.0f;
+    adsr->current = 0.0f;
+}
+
+f32 func_80013B70(AdsrState* adsr) {
+    u8 action = adsr->action.asByte;
+    u8 state = adsr->state;
+
+    switch (state) {
+        case ADSR_STATE_DISABLED:
+            return 0.0f;
+        case ADSR_STATE_INITIAL:
+            if (action & 0x40) {
+                adsr->state = ADSR_STATE_HANG;
+                break;
+            }
+        case ADSR_STATE_START_LOOP:
+            adsr->envIndex = 0;
+            adsr->state = ADSR_STATE_LOOP;
+        case_ADSR_STATE_LOOP:
+        case ADSR_STATE_LOOP:
+            adsr->delay = adsr->envelope[adsr->envIndex].delay;
+            switch (adsr->delay) {
+                case ADSR_DISABLE:
+                    adsr->state = ADSR_STATE_DISABLED;
+                    break;
+                case ADSR_HANG:
+                    adsr->state = ADSR_STATE_HANG;
+                    break;
+                case ADSR_GOTO:
+                    adsr->envIndex = adsr->envelope[adsr->envIndex].arg;
+                    goto case_ADSR_STATE_LOOP;
+                case ADSR_RESTART:
+                    adsr->state = ADSR_STATE_INITIAL;
+                    break;
+                default:
+                    if (adsr->delay >= 4) {
+                        adsr->delay = (adsr->delay * gAudioBufferParams.ticksPerUpdate / gAudioBufferParams.count) / 4;
+                    }
+                    if (adsr->delay == 0) {
+                        adsr->delay = 1;
+                    }
+
+                    adsr->target = adsr->envelope[adsr->envIndex].arg / 32767.0f;
+                    adsr->target = SQ(adsr->target);
+                    adsr->velocity = (adsr->target - adsr->current) / adsr->delay;
+                    adsr->state = ADSR_STATE_FADE;
+                    adsr->envIndex++;
+                    break;
+            }
+            if (adsr->state != ADSR_STATE_FADE) {
+                break;
+            }
+        case ADSR_STATE_FADE:
+            adsr->delay--;
+            adsr->current += adsr->velocity;
+            if (adsr->delay <= 0) {
+                adsr->state = ADSR_STATE_LOOP;
+            }
+            break;
+        case ADSR_STATE_DECAY:
+        case ADSR_STATE_RELEASE:
+            adsr->current -= adsr->fadeOutVel;
+            if ((adsr->sustain != 0.0f) && (state == ADSR_STATE_DECAY)) {
+                if (adsr->current < adsr->sustain) {
+                    adsr->current = adsr->sustain;
+                    adsr->delay = 0x80;
+                    adsr->state = ADSR_STATE_SUSTAIN;
+                }
+            } else if (adsr->current < 0.00001f) {
+                adsr->current = 0.0f;
+                adsr->state = ADSR_STATE_DISABLED;
+            }
+            break;
+        case ADSR_STATE_SUSTAIN:
+            adsr->delay--;
+            if (adsr->delay == 0) {
+                adsr->state = ADSR_STATE_RELEASE;
+            }
+            break;
+    }
+    if (action & 0x20) {
+        adsr->state = ADSR_STATE_DECAY;
+        adsr->action.asByte = action & ~0x20;
+    }
+    if (action & 0x10) {
+        adsr->state = ADSR_STATE_RELEASE;
+        adsr->action.asByte = action & ~0x10;
+    }
+    if (adsr->current < 0.0f) {
+        return 0.0f;
+    }
+    if (adsr->current > 1.0f) {
+        return 1.0f;
+    }
+    return adsr->current;
+}
diff --git a/srceu/audio/audio_general.c b/srceu/audio/audio_general.c
index 8346c82d3..11ff6a468 100644
--- a/srceu/audio/audio_general.c
+++ b/srceu/audio/audio_general.c
@@ -1,208 +1,2548 @@
-#include "common.h"
+#include "sys.h"
+#include "sf64audio_provisional.h"
+#include "context.h"
+#include "audiothread_cmd.h"
+#include "audioseq_cmd.h"
+
+extern SfxRequest sSfxRequests[256];
+extern SfxBankEntry sSfxBanks[5][20];
+extern u8 sSfxBankListEnd[5];
+extern u8 sSfxBankFreeListStart[5];
+extern u8 sSfxBankUnused[5];
+extern ActiveSfx sActiveSfx[5][8];
+extern u8 sCurSfxPlayerChannelIndex;
+extern u8 sSfxBankMuted[5];
+extern Modulation sSfxVolumeMods[5];
+extern f32 sAudioAnalyzerData[256];
+extern f32 sAnalyzerBuffer1[256];
+extern f32 sAnalyzerBuffer2[384];
+extern f32 sNewFreqAmplitudes[32];
+extern u8 sFreqAnalyzerBars[32];
+extern SeqRequest sSeqRequests[SEQ_PLAYER_MAX][5];
+extern u8 sNumSeqRequests[SEQ_PLAYER_MAX];
+extern s32 sAudioSeqCmds[256];
+extern ActiveSequence sActiveSequences[SEQ_PLAYER_MAX];
+extern u16 sDelayedSeqCmdFlags;
+extern DelayedSeqCmd sDelayedSeqCmds[16];
+extern SfxChannelState sSfxChannelState[16];
+extern PlayerNoiseModulation sPlayerNoise[4];
+extern f32 sBombFreqMod[4];
+extern u8 sBombType[4];
+extern u8 sBombState[4];
+extern s32 sBombStartFrame[4];
+extern u8 gVoiceLanguage;
+extern u8 sAudioSpecId;
+extern u8 sStartSeqDisabled;
+extern u8 sAudioResetStatus;
+extern s32 sAudioFrameCounter;
+extern u8 sPlaylistIndex;
+extern u8 sPlaylistCmdIndex;
+extern s32 sPlaylistTimer;
+extern u8 D_800C6A70;
+extern SoundTestTrack sSoundTestTracks[];
+extern u8 sVolumeSettings[3];
+extern s8 sEnvReverb;
+extern u32 sEventSfx[23];
+extern f32 sSfxFreqMod;
+extern f32 sSfxVolMod;
+extern u8 sFreqAnalyzerBars[32];
+extern PlaylistCmd sPlaylists[5][100];
+extern u32 sNextVoiceId;
+extern u32 sCurrentVoiceId;
+extern u8 sSetNextVoiceId;
+extern u8 sMuteBgmForVoice;
+extern u32 sPlayerNoiseTimes[5];
+extern u8 sUnkVoiceParam;
+extern SequenceLayer gSeqLayers[64];
+extern SequenceChannel gSeqChannelNone;
+extern SequencePlayer gSeqPlayers[4];
+extern u8 sSfxRequestWriteIndex;
+extern u8 sSfxRequestReadIndex;
+extern u16 sChannelMuteFlags;
+extern u8 sChannelsPerBank[5][5];
+extern u8 sSfxChannelLayout;
+extern u8 sUsedChannelsPerBank[5][5];
+extern SfxRequest sSfxRequests[256];
+extern u8 sSeqCmdReadPos;
+extern u8 sSeqCmdWritePos;
+extern u8 sSoundModeList[4];
+extern s8 sAudioSpecReverb;
+extern s8 sAudioSpecReverbAdd[29];
+extern u8 sAudioSpecInstrumentSets[29][7];
+
+void Audio_StartReset(u8 oldSpecId);
+void Audio_ResetPlayerFreqMods(void);
+void Audio_StartSequence(u8 seqPlayId, u8 seqId, u8 seqArgs, u16 fadeInTime);
+void Audio_RestoreVolumeSettings(u8 audioType);
+void AudioThread_QueueCmdS32(u32 opArgs, u32 val);
+void AudioThread_ScheduleProcessCmds(void);
+void Audio_QueueSeqCmd(s32 seqCmd);
+void Audio_LoadAquasSequence(void);
+void Audio_LoadInstruments(void);
+void Audio_ResetSfx(void);
+void Audio_ResetActiveSequences(void);
+void Audio_ResetSfxChannelState(void);
+void Audio_ResetVoicesAndPlayers(void);
+u8 Audio_HandleReset(void);
+void Audio_ProcessSfxRequests(void);
+void Audio_ProcessSeqCmds(void);
+void Audio_PlayAllSfx(void);
+void Audio_UpdatePlayerNoise(void);
+void Audio_UpdateVoice(void);
+void Audio_UpdateUnkVoiceParam(void);
+void Audio_UpdateActiveSequences(void);
+void Audio_UpdateDelayedSeqCmds(void);
+void Audio_ResetActiveSequencesAndVolume(void);
+void Audio_SetSequenceFade(u8 seqPlayId, u8 fadeModId, u8 fadeMod, u8 fadeTime);
+u16 Audio_GetActiveSeqId(u8 seqPlayId);
+void func_800087F0(f32*, s32, f32*);
+void Audio_UpdatePlayerFreqMod(void);
+void Audio_UpdateBlueMarineNoise(u8 playerId);
+void Audio_UpdateLandmasterNoise(u8 playerId);
+void Audio_UpdateArwingNoise(u8 playerId);
+f32 Audio_UpdateDopplerShift(f32* srcPos, f32* srcVel, f32 soundSpeed, f32* curDopplerShift);
+void Audio_ChooseActiveSfx(u8 bankId);
+void Audio_PlayActiveSfx(u8 bankId);
+void Audio_UpdateSfxVolumeMod(u8 bankId);
+void Audio_RemoveSfxBankEntry(u8 bankId, u8 entryIndex);
+void Audio_RemoveMatchingSfxRequests(u8 aspect, SfxBankEntry* data);
+void Audio_ProcessSfxRequest(void);
+void Audio_SetSfxProperties(u8 bankId, u8 entryIndex, u8 channelId);
+void Audio_ClearBGMMute(u8 channelIndex);
+void Audio_RestartSeqPlayers(void);
+bool AudioThread_ResetComplete(void);
+s32 Audio_SeqCmdValueNotQueued(s32 cmdVal, s32 cmdMask);
+void Audio_ProcessSeqCmd(u32 seqCmd);
+s8 Audio_GetSfxPan(f32 xPos, f32 zPos, u8 mode);
+f32 Audio_GetSfxFreqMod(u8 bankId, u8 entryIndex);
+s8 Audio_GetSfxReverb(u8 bankId, u8 entryIndex, u8 channelId);
+
+void Audio_dummy_80016A30(void) {
+}
 
-void func_80016A30(void) {
+f32 Audio_GetSfxFalloff(u8 bankId, u8 entryIndex) {
+    f32 cutoff;
+    f32 midDist;
+    f32 distance;
+    f32 falloff;
+    f32 midrange;
+    f32 range;
+
+    if (sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_22) {
+        return 1.0f;
+    }
+    distance = sSfxBanks[bankId][entryIndex].distance;
+    if (distance > 33000.0f) {
+        falloff = 0.0f;
+    } else {
+        switch ((sSfxBanks[bankId][entryIndex].sfxId & SFX_RANGE_MASK)) {
+            default:
+                range = 33000.0f / 20.0f;
+                break;
+            case 1 << SFX_RANGE_SHIFT:
+                range = 33000.0f / 15.0f;
+                break;
+            case 2 << SFX_RANGE_SHIFT:
+                range = 33000.0f / 10.5f;
+                break;
+            case 3 << SFX_RANGE_SHIFT:
+                range = 33000.0f / 5.2f;
+                break;
+        }
+        cutoff = range / 5.0f;
+        if (distance < range / 5.0f) {
+            falloff = 1.0f;
+        } else if (distance < range) {
+            midDist = range - cutoff;
+            midrange = distance - cutoff;
+            falloff = (((midDist - midrange) / midDist) * 0.19f) + 0.81f;
+        } else {
+            falloff = (1.0f - ((distance - range) / (33000.0f - range))) * 0.81f;
+        }
+        falloff = SQ(falloff);
+    }
+    return falloff;
 }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80016A38.s")
+s8 Audio_GetSfxReverb(u8 bankId, u8 entryIndex, u8 channelId) {
+    s32 totalReverb;
+    s8 distReverb = 0;
+    s8 scriptReverb = 0;
+
+    if (!(sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_21)) {
+        if (sSfxBanks[bankId][entryIndex].distance < (33000.0f / 4.0f)) {
+            distReverb = (sSfxBanks[bankId][entryIndex].distance / (33000.0f / 4.0f)) * 40.0f;
+        } else {
+            distReverb = 40;
+        }
+    }
+    if (IS_SEQUENCE_CHANNEL_VALID(gSeqPlayers[SEQ_PLAYER_SFX].channels[channelId])) {
+        scriptReverb = gSeqPlayers[SEQ_PLAYER_SFX].channels[channelId]->seqScriptIO[6];
+    }
+    if (scriptReverb == -1) {
+        scriptReverb = 0;
+    }
+    totalReverb = *sSfxBanks[bankId][entryIndex].reverbAdd + distReverb + scriptReverb + sEnvReverb + sAudioSpecReverb;
+    totalReverb = MIN(127, totalReverb);
+    return totalReverb;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80016BA0.s")
+s8 Audio_GetSfxPan(f32 xPos, f32 zPos, u8 mode) {
+    if (sSfxChannelLayout != SFXCHAN_3) {
+        f32 absx = ABSF(xPos);
+        f32 absz = ABSF(zPos);
+        f32 pan;
+
+        if ((absx < 1.0f) && (absz < 1.0f)) {
+            return 64;
+        }
+        absx = MIN(1200.0f, absx);
+        absz = MIN(1200.0f, absz);
+
+        if ((xPos == 0) && (zPos == 0)) {
+            pan = 0.5f;
+        } else if ((xPos >= 0.f) && (absz <= absx)) {
+            pan = 1.0f - ((2400.0f - absx) / (10.0f * (2400.0f - absz)));
+        } else if ((xPos < 0.0f) && (absz <= absx)) {
+            pan = (2400.0f - absx) / (10.0f * (2400.0f - absz));
+        } else {
+            pan = (xPos / (2.5f * absz)) + 0.5f;
+        }
+        return ROUND(pan * 127.0f);
+    } else if (mode != 4) {
+        return ((mode & 1) * 127);
+    }
+    return 64;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80016CBC.s")
+f32 Audio_GetSfxFreqMod(u8 bankId, u8 entryIndex) {
+    f32 distance;
+    f32 freqMod = 1.0f;
+
+    if (sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_23) {
+        freqMod -= ((gAudioRandom % 16) / 192.0f);
+    }
+    distance = sSfxBanks[bankId][entryIndex].distance;
+    if (!(sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_22)) {
+        if (distance >= 33000.0f) {
+            freqMod += 0.2f;
+        } else {
+            freqMod += 0.2f * (distance / 33000.0f);
+        }
+    }
+    if ((sSfxChannelLayout != SFXCHAN_0) && (sSfxBanks[bankId][entryIndex].token & 2)) {
+        freqMod *= 1.1f;
+    }
+    return freqMod;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80016EC4.s")
+// function is different in EU
+void Audio_SetSfxProperties(u8 bankId, u8 entryIndex, u8 channelId) {
+    f32 volumeMod = 1.0f;
+    s8 reverb = 0;
+    f32 freqMod = 1.0f;
+    s8 pan = 64;
+    SfxBankEntry* entry = &sSfxBanks[bankId][entryIndex];
+
+    switch (bankId) {
+        case SFX_BANK_PLAYER:
+        case SFX_BANK_1:
+        case SFX_BANK_2:
+        case SFX_BANK_3:
+            if (entry->state == 2) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelId, 1, gLevelType);
+            }
+            if ((entry->sfxId & SFX_FLAG_18) && (*entry->zPos > 0.0f)) {
+                f32 yScaled = *entry->yPos / 2.5f;
+
+                entry->distance = SQ(*entry->xPos) + SQ(yScaled);
+            }
+            entry->distance = sqrtf(entry->distance);
+            volumeMod = Audio_GetSfxFalloff(bankId, entryIndex) * *entry->volMod * sSfxVolumeMods[bankId].value;
+            reverb = Audio_GetSfxReverb(bankId, entryIndex, channelId);
+            freqMod = Audio_GetSfxFreqMod(bankId, entryIndex) * *entry->freqMod;
+            if (!((bankId == SFX_BANK_PLAYER) && ((-200.0f < *entry->zPos) && (*entry->zPos < 200.0f)) &&
+                  (sSfxChannelLayout != SFXCHAN_3))) {
+                pan = Audio_GetSfxPan(*entry->xPos, *entry->zPos, entry->token);
+            }
+            break;
+        case SFX_BANK_SYSTEM:
+#ifdef VERSION_EU
+            if (entry->state == 2) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelId, 1, gVoiceLanguage);
+            }
+#endif
+            if (sSfxChannelLayout == SFXCHAN_3) {
+                if (entry->token != 4) {
+                    pan = (entry->token & 1) * 127;
+                }
+            }
+            break;
+    }
+    if (volumeMod != sSfxChannelState[channelId].volMod) {
+        AUDIOCMD_CHANNEL_SET_VOL_SCALE(SEQ_PLAYER_SFX, channelId, volumeMod);
+        sSfxChannelState[channelId].volMod = volumeMod;
+    }
+    if (reverb != sSfxChannelState[channelId].reverb) {
+        AUDIOCMD_CHANNEL_SET_REVERB_VOLUME(SEQ_PLAYER_SFX, channelId, reverb);
+        sSfxChannelState[channelId].reverb = reverb;
+    }
+    if (freqMod != sSfxChannelState[channelId].freqMod) {
+        AUDIOCMD_CHANNEL_SET_FREQ_SCALE(SEQ_PLAYER_SFX, channelId, freqMod);
+        sSfxChannelState[channelId].freqMod = freqMod;
+    }
+    if (pan != sSfxChannelState[channelId].pan) {
+        AUDIOCMD_CHANNEL_SET_PAN(SEQ_PLAYER_SFX, channelId, pan);
+        sSfxChannelState[channelId].pan = pan;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80016FD0.s")
+f32 Audio_UpdateDopplerShift(f32* srcPos, f32* srcVel, f32 soundSpeed, f32* curDopplerShift) {
+    f32 xVel;
+    f32 zVel;
+    f32 xPos;
+    f32 zPos;
+    f32 xzDist;
+    f32 xPosNext;
+    f32 zPosNext;
+    f32 xzDistNext;
+    f32 step;
+    f32 newShift;
+    f32 relativeSpeed;
+    f32 targetDopplerShift;
+    s32 pad;
+
+#ifdef AVOID_UB
+    if ((srcPos == NULL) || (srcVel == NULL) || (curDopplerShift == NULL)) {
+        return 0.0f;
+    }
+#endif
+
+    xPos = srcPos[0];
+    zPos = srcPos[2];
+    xVel = srcVel[0];
+    zVel = srcVel[2];
+    xzDist = sqrtf(SQ(xPos) + SQ(zPos));
+    xPosNext = xPos + xVel;
+    zPosNext = zPos + zVel;
+    xzDistNext = sqrtf(SQ(xPosNext) + SQ(zPosNext));
+    relativeSpeed = (xzDist - xzDistNext) / soundSpeed;
+    targetDopplerShift = 1.0f / (1.0f - relativeSpeed);
+
+    step = targetDopplerShift - *curDopplerShift;
+    newShift = *curDopplerShift;
+    if (step != 0.0f) {
+        if (step > 0.2f) {
+            newShift += 0.2f;
+        } else if (step < -0.2f) {
+            newShift -= 0.2f;
+        } else {
+            newShift += step;
+        }
+    }
+    *curDopplerShift = newShift;
+
+    if (newShift > 4.0f) {
+        newShift = 4.0f;
+    } else if (newShift < 0.1f) {
+        newShift = 0.1f;
+    }
+
+    return newShift;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001737C.s")
+void Audio_LoadInstruments(void) {
+    u8 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800174B0.s")
+    for (i = 0; sAudioSpecInstrumentSets[sAudioSpecId][i] != 0xFF; i++) {
+        AUDIOCMD_GLOBAL_SYNC_LOAD_INSTRUMENT(0, sAudioSpecInstrumentSets[sAudioSpecId][i], 0);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001756C.s")
+void Audio_LoadAquasSequence(void) {
+    if (sAudioSpecId == AUDIOSPEC_AQ) {
+        AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(NA_BGM_STAGE_AQ, 0);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800175A4.s")
+void Audio_ResetSfxChannelState(void) {
+    u8 i;
+
+    sEnvReverb = 0;
+    sAudioSpecReverb = sAudioSpecReverbAdd[sAudioSpecId];
+    for (i = 0; i < 16; i++) {
+        sSfxChannelState[i].volMod = 1.0f;
+        sSfxChannelState[i].freqMod = 1.0f;
+        sSfxChannelState[i].reverb = 0;
+        sSfxChannelState[i].pan = 64;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001761C.s")
+void Audio_StartSequence(u8 seqPlayId, u8 seqId, u8 seqArgs, u16 fadeInTime) {
+    u8 i;
+    s32 pad;
+
+    if (!sStartSeqDisabled || (seqPlayId == SEQ_PLAYER_SFX)) {
+        AUDIOCMD_GLOBAL_INIT_SEQPLAYER((u32) seqPlayId, (u32) seqId, 0, fadeInTime);
+        sActiveSequences[seqPlayId].prevSeqId = sActiveSequences[seqPlayId].seqId = seqId | ((seqArgs) << 8);
+        if (sActiveSequences[seqPlayId].mainVolume.mod != 1.0f) {
+            AUDIOCMD_SEQPLAYER_FADE_VOLUME_SCALE((u32) seqPlayId, sActiveSequences[seqPlayId].mainVolume.mod);
+        }
+        sActiveSequences[seqPlayId].tempo.timer = 0;
+        sActiveSequences[seqPlayId].tempoOriginal = 0;
+        sActiveSequences[seqPlayId].tempoCmd = 0;
+        for (i = 0; i < 16; i++) {
+            sActiveSequences[seqPlayId].channelMod[i].volume.value = 1.0f;
+            sActiveSequences[seqPlayId].channelMod[i].volume.timer = 0;
+            sActiveSequences[seqPlayId].channelMod[i].freq.value = 1.0f;
+            sActiveSequences[seqPlayId].channelMod[i].freq.timer = 0;
+        }
+        sActiveSequences[seqPlayId].volChannelFlags = sActiveSequences[seqPlayId].freqModChannelFlags = 0;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001777C.s")
+void Audio_StopSequence(u8 seqPlayId, u16 fadeOutTime) {
+    AUDIOCMD_GLOBAL_DISABLE_SEQPLAYER(seqPlayId, fadeOutTime);
+    sActiveSequences[seqPlayId].seqId = SEQ_ID_NONE;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800177E4.s")
+void Audio_ProcessSeqCmd(u32 seqCmd) {
+    u16 flag;
+    u16 channelDisableMask;
+    u16 fadeTimer;
+    u16 val;
+    s32 priority;
+    u8 i; // sp63
+    u8 specId;
+    u8 oldSpecId;
+    u8 ioPort;
+    u8 channel;
+    u8 found;
+    u8 muteFlag;
+    u8 duration;
+    u8 seqNumber;
+    u8 subOp;
+    u8 seqPlayId;
+    u8 seqArgs;
+    u8* tempptr; // sp54
+    u8* tempPtr2;
+    u32 sp4C;
+
+    seqPlayId = (seqCmd & 0x0F000000) >> 0x18;
+    switch ((seqCmd >> 0x1C) & 0xFF) {
+        case SEQCMD_OP_PLAY_SEQUENCE:
+            seqNumber = seqCmd & 0xFF;
+            seqArgs = (seqCmd & 0xFF00) >> 8;
+            fadeTimer = (seqCmd & 0xFF0000) >> 13;
+            if (!sActiveSequences[seqPlayId].isWaitingForFonts) {
+                if (seqArgs < 0x80) {
+                    Audio_StartSequence(seqPlayId, seqNumber, seqArgs, fadeTimer);
+                } else {
+                    sActiveSequences[seqPlayId].startSeqCmd = seqCmd & ~0x8000;
+                    sActiveSequences[seqPlayId].isWaitingForFonts = true;
+                    Audio_StopSequence(seqPlayId, 1);
+                    if (sActiveSequences[seqPlayId].prevSeqId != SEQ_ID_NONE) {
+                        tempptr = AudioThread_GetFontsForSequence(seqNumber, &sp4C);
+                        tempPtr2 = AudioThread_GetFontsForSequence(sActiveSequences[seqPlayId].prevSeqId & 0xFF, &sp4C);
+                        if (tempptr[0] != tempPtr2[0]) {
+                            AUDIOCMD_GLOBAL_DISCARD_SEQ_FONTS(seqNumber);
+                        }
+                    }
+                    AUDIOCMD_GLOBAL_ASYNC_LOAD_FONT(seqNumber, 20, (s8) (seqPlayId + 1));
+                }
+            }
+            break;
+        case SEQCMD_OP_STOP_SEQUENCE:
+            fadeTimer = (seqCmd & 0xFF0000) >> 13;
+            Audio_StopSequence(seqPlayId, fadeTimer);
+            return;
+        case SEQCMD_OP_QUEUE_SEQUENCE:
+            seqNumber = seqCmd & 0xFF;
+            seqArgs = (seqCmd & 0xFF00) >> 8;
+            fadeTimer = (seqCmd & 0xFF0000) >> 13;
+            priority = seqArgs;
+            for (i = 0; i < sNumSeqRequests[seqPlayId]; i++) {
+                if (seqNumber == sSeqRequests[seqPlayId][i].seqId) {
+                    if (i == 0) {
+                        Audio_StartSequence(seqPlayId, seqNumber, seqArgs, fadeTimer);
+                    }
+                    return;
+                }
+            }
+            found = sNumSeqRequests[seqPlayId];
+            for (i = 0; i < sNumSeqRequests[seqPlayId]; i++) {
+                if (seqArgs >= sSeqRequests[seqPlayId][i].priority) {
+                    found = i;
+                    i = sNumSeqRequests[seqPlayId];
+                }
+            }
+            if ((found != sNumSeqRequests[seqPlayId]) || (found == 0)) {
+                if (sNumSeqRequests[seqPlayId] < 5) {
+                    sNumSeqRequests[seqPlayId]++;
+                }
+                for (i = sNumSeqRequests[seqPlayId] - 1; i != found; i--) {
+                    sSeqRequests[seqPlayId][i].priority = sSeqRequests[seqPlayId][i - 1].priority;
+                    sSeqRequests[seqPlayId][i].seqId = sSeqRequests[seqPlayId][i - 1].seqId;
+                }
+                sSeqRequests[seqPlayId][found].priority = seqArgs;
+                sSeqRequests[seqPlayId][found].seqId = seqNumber;
+            }
+            if (found == 0) {
+                Audio_StartSequence(seqPlayId, seqNumber, seqArgs, fadeTimer);
+            }
+            break;
+        case SEQCMD_OP_UNQUEUE_SEQUENCE:
+            fadeTimer = (seqCmd & 0xFF0000) >> 0xD;
+            found = sNumSeqRequests[seqPlayId];
+            for (i = 0; i < sNumSeqRequests[seqPlayId]; i++) {
+                seqNumber = seqCmd & 0xFF;
+                if (sSeqRequests[seqPlayId][i].seqId == seqNumber) {
+                    found = i;
+                    i = sNumSeqRequests[seqPlayId];
+                }
+            }
+            if (found != sNumSeqRequests[seqPlayId]) {
+                for (i = found; i < sNumSeqRequests[seqPlayId] - 1; i++) {
+                    sSeqRequests[seqPlayId][i].priority = sSeqRequests[seqPlayId][i + 1].priority;
+                    sSeqRequests[seqPlayId][i].seqId = sSeqRequests[seqPlayId][i + 1].seqId;
+                }
+                sNumSeqRequests[seqPlayId]--;
+            }
+            if (found == 0) {
+                Audio_StopSequence(seqPlayId, fadeTimer);
+                if (sNumSeqRequests[seqPlayId] != 0) {
+
+                    Audio_StartSequence(seqPlayId, sSeqRequests[seqPlayId][0].seqId,
+                                        sSeqRequests[seqPlayId][0].priority, fadeTimer);
+                }
+            }
+            break;
+        case SEQCMD_OP_SET_SEQPLAYER_VOLUME:
+            val = seqCmd & 0xFF;
+            duration = (seqCmd & 0xFF0000) >> 0xF;
+
+            if (duration == 0) {
+                duration++;
+            }
+            sActiveSequences[seqPlayId].mainVolume.target = val / 127.0f;
+            if (sActiveSequences[seqPlayId].mainVolume.mod != sActiveSequences[seqPlayId].mainVolume.target) {
+                sActiveSequences[seqPlayId].mainVolume.step =
+                    (sActiveSequences[seqPlayId].mainVolume.mod - sActiveSequences[seqPlayId].mainVolume.target) /
+                    duration;
+                sActiveSequences[seqPlayId].mainVolume.timer = duration;
+            }
+            break;
+        case SEQCMD_OP_SET_SEQPLAYER_FREQ:
+            val = (seqCmd & 0xFFFF);
+            duration = (seqCmd & 0xFF0000) >> 0xF;
+
+            if (duration == 0) {
+                duration++;
+            }
+            for (i = 0; i < 16; i++) {
+                sActiveSequences[seqPlayId].channelMod[i].freq.target = val / 1000.0f;
+                sActiveSequences[seqPlayId].channelMod[i].freq.step =
+                    (sActiveSequences[seqPlayId].channelMod[i].freq.value -
+                     sActiveSequences[seqPlayId].channelMod[i].freq.target) /
+                    duration;
+                sActiveSequences[seqPlayId].channelMod[i].freq.timer = duration;
+            }
+            sActiveSequences[seqPlayId].freqModChannelFlags = 0xFFFF;
+            break;
+        case SEQCMD_OP_SET_CHANNEL_VOLUME:
+            val = (seqCmd & 0xFF);
+            channel = (seqCmd & 0xF00) >> 8;
+            duration = (seqCmd & 0xFF0000) >> 0xF;
+
+            if (duration == 0) {
+                duration++;
+            }
+
+            sActiveSequences[seqPlayId].channelMod[channel].volume.target = val / 127.0f;
+            if (sActiveSequences[seqPlayId].channelMod[channel].volume.value !=
+                sActiveSequences[seqPlayId].channelMod[channel].volume.target) {
+                sActiveSequences[seqPlayId].channelMod[channel].volume.step =
+                    (sActiveSequences[seqPlayId].channelMod[channel].volume.value -
+                     sActiveSequences[seqPlayId].channelMod[channel].volume.target) /
+                    duration;
+                sActiveSequences[seqPlayId].channelMod[channel].volume.timer = duration;
+                sActiveSequences[seqPlayId].freqModChannelFlags |= 1 << channel;
+            }
+            break;
+        case SEQCMD_OP_SET_SEQPLAYER_IO:
+            val = seqCmd & 0xFF;
+            ioPort = ((seqCmd & 0xFF0000) >> 0x10); // may be misnamed
+            AUDIOCMD_SEQPLAYER_SET_IO(seqPlayId, ioPort, val);
+            break;
+        case SEQCMD_OP_SET_CHANNEL_IO:
+            val = seqCmd & 0xFF;
+            channel = (seqCmd & 0xF00) >> 8;
+
+            ioPort = (seqCmd & 0xFF0000) >> 0x10;
+            if (!(sActiveSequences[seqPlayId].channelPortMask & (1 << channel))) {
+                AUDIOCMD_CHANNEL_SET_IO(seqPlayId, (u32) channel, ioPort, val);
+            }
+            break;
+        case SEQCMD_OP_SET_CHANNEL_IO_DISABLE_MASK:
+            channelDisableMask = seqCmd & 0xFFFF;
+            sActiveSequences[seqPlayId].channelPortMask = channelDisableMask;
+            break;
+        case SEQCMD_OP_SET_CHANNEL_DISABLE_MASK:
+            channelDisableMask = seqCmd & 0xFFFF;
+
+            flag = 1;
+            for (i = 0; i < 16; i++) {
+                AUDIOCMD_CHANNEL_SET_MUTE(seqPlayId, (u32) i, (channelDisableMask & flag) ? 1 : 0);
+                flag <<= 1;
+            }
+            break;
+        case SEQCMD_OP_TEMPO_CMD:
+            sActiveSequences[seqPlayId].tempoCmd = seqCmd;
+            break;
+        case SEQCMD_OP_SETUP_CMD:
+            subOp = (seqCmd & 0xF00000) >> 20;
+            if (subOp != SEQCMD_SUB_OP_SETUP_RESET_SETUP_CMDS) {
+                found = sActiveSequences[seqPlayId].setupCmdNum++;
+                if (found < 5) {
+                    sActiveSequences[seqPlayId].setupCmd[found] = seqCmd;
+                    sActiveSequences[seqPlayId].setupCmdTimer = 2;
+                }
+            } else {
+                sActiveSequences[seqPlayId].setupCmdNum = 0;
+            }
+            break;
+        case SEQCMD_OP_GLOBAL_CMD:
+            val = seqCmd & 0xFF;
+            subOp = (seqCmd & 0xF00) >> 8;
+
+            switch (subOp) {
+                case SEQCMD_SUB_OP_GLOBAL_SET_SOUND_MODE:
+                    AUDIOCMD_GLOBAL_SET_SOUND_MODE(sSoundModeList[val]);
+                    break;
+                case SEQCMD_SUB_OP_GLOBAL_DISABLE_NEW_SEQUENCES:
+                    sStartSeqDisabled = val & 1;
+                    break;
+            }
+            break;
+        case SEQCMD_OP_RESET_AUDIO_HEAP:
+            specId = seqCmd & 0xFF;
+            sSfxChannelLayout = (seqCmd & 0xFF00) >> 8;
+            oldSpecId = sAudioSpecId;
+            sAudioSpecId = specId;
+
+            if (oldSpecId != specId) {
+                AudioThread_ResetAudioHeap(specId);
+                Audio_StartReset(oldSpecId);
+                AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
+
+            } else {
+                Audio_StopSequence(SEQ_PLAYER_BGM, 1);
+                Audio_StopSequence(SEQ_PLAYER_FANFARE, 1);
+            }
+            break;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018310.s")
+void Audio_QueueSeqCmd(s32 seqCmd) {
+    sAudioSeqCmds[sSeqCmdWritePos] = seqCmd;
+    sSeqCmdWritePos++;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018338.s")
+void Audio_ProcessSeqCmds(void) {
+    while (sSeqCmdWritePos != sSeqCmdReadPos) {
+        Audio_ProcessSeqCmd(sAudioSeqCmds[sSeqCmdReadPos++]);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800183B8.s")
+u16 Audio_GetActiveSeqId(u8 seqPlayId) {
+    if (!gSeqPlayers[seqPlayId].enabled) {
+        return 0xFFFF;
+    }
+    return sActiveSequences[seqPlayId].seqId;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001842C.s")
+s32 Audio_SeqCmdNotQueued(s32 seqCmd) {
+    s32 notFound = true;
+    u8 i;
+
+    for (i = sSeqCmdReadPos; i < sSeqCmdWritePos; i++) {
+        if (seqCmd == sAudioSeqCmds[i]) {
+            notFound = false;
+            i = sSeqCmdWritePos;
+        }
+    }
+    return notFound;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001848C.s")
+s32 Audio_SeqCmdValueNotQueued(s32 cmdVal, s32 cmdMask) {
+    s32 notFound = true;
+    u8 i;
+
+    for (i = sSeqCmdReadPos; i < sSeqCmdWritePos; i++) {
+        if (cmdVal == (sAudioSeqCmds[i] & cmdMask)) {
+            notFound = false;
+            i = sSeqCmdWritePos;
+        }
+    }
+    return notFound;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800184F0.s")
+void Audio_ResetSequenceRequests(u8 seqPlayId) {
+    sNumSeqRequests[seqPlayId] = 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018508.s")
+// unused
+void Audio_DisableSetupOp(u8 seqPlayId, u8 opcode) {
+    u8 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800185BC.s")
+    for (i = 0; i < sActiveSequences[seqPlayId].setupCmdNum; i++) {
+        u8 setupOp = ((sActiveSequences[seqPlayId].setupCmd[i] & 0xF00000) >> 20);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018614.s")
+        if (setupOp == opcode) {
+            sActiveSequences[seqPlayId].setupCmd[i] = 0xFF000000; // 0 duration volume reset on SEQ_PLAYER_BGM
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018EB8.s")
+void Audio_SetSequenceFade(u8 seqPlayId, u8 fadeModId, u8 fadeMod, u8 fadeTime) {
+    sActiveSequences[seqPlayId].mainVolume.fadeMod[fadeModId] = fadeMod;
+    sActiveSequences[seqPlayId].mainVolume.fadeTimer = fadeTime;
+    sActiveSequences[seqPlayId].mainVolume.fadeActive = true;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018EFC.s")
+void Audio_UpdateActiveSequences(void) {
+    u8 seqPlayId;
+    u8 i;
+    u8 tempoTimer;
+    u8 channelId;
+    u16 tempoTarget;
+    u16 prevTempo;
+    u16 seqId;
+    u8 tempoOp;
+    u8 setupSeqPlayId;
+    u8 val1;
+    u8 setupOp;
+    u8 val2;
+    u8 temp2;
+    s32 temp;
+    u32 cmd;
+    f32 fadeMod;
+    u32 out;
+    s32 pad1;
+    s32 pad2;
+
+    for (seqPlayId = 0; seqPlayId < SEQ_PLAYER_MAX; seqPlayId++) {
+        if (sActiveSequences[seqPlayId].isWaitingForFonts) {
+            switch ((s32) AudioThread_GetAsyncLoadStatus(&out)) {
+                case SEQ_PLAYER_BGM + 1:
+                case SEQ_PLAYER_FANFARE + 1:
+                case SEQ_PLAYER_SFX + 1:
+                case SEQ_PLAYER_VOICE + 1:
+                    sActiveSequences[seqPlayId].isWaitingForFonts = false;
+                    Audio_ProcessSeqCmd(sActiveSequences[seqPlayId].startSeqCmd);
+                    break;
+            }
+        }
+        if (sActiveSequences[seqPlayId].mainVolume.fadeActive) {
+            fadeMod = 1.0f;
+            for (i = 0; i < 3; i++) {
+                fadeMod *= sActiveSequences[seqPlayId].mainVolume.fadeMod[i] / 127.0f;
+            }
+            SEQCMD_SET_SEQPLAYER_VOLUME(seqPlayId, sActiveSequences[seqPlayId].mainVolume.fadeTimer,
+                                        (u8) (fadeMod * 127.0f));
+            sActiveSequences[seqPlayId].mainVolume.fadeActive = false;
+        }
+        if (sActiveSequences[seqPlayId].mainVolume.timer != 0) {
+            sActiveSequences[seqPlayId].mainVolume.timer--;
+            if (sActiveSequences[seqPlayId].mainVolume.timer != 0) {
+                sActiveSequences[seqPlayId].mainVolume.mod -= sActiveSequences[seqPlayId].mainVolume.step;
+            } else {
+                sActiveSequences[seqPlayId].mainVolume.mod = sActiveSequences[seqPlayId].mainVolume.target;
+            }
+            AUDIOCMD_SEQPLAYER_FADE_VOLUME_SCALE((u32) seqPlayId, sActiveSequences[seqPlayId].mainVolume.mod);
+        }
+        if (sActiveSequences[seqPlayId].tempoCmd != 0) {
+            cmd = sActiveSequences[seqPlayId].tempoCmd;
+            temp = cmd & 0xFFF;
+            temp2 = (cmd & 0xFF0000) >> 0xF;
+            tempoTimer = temp2;
+            tempoTarget = temp;
+
+            if (temp2 == 0) {
+                tempoTimer = temp2 + 1;
+            }
+            if (gSeqPlayers[seqPlayId].enabled) {
+                prevTempo = gSeqPlayers[seqPlayId].tempo / 48;
+                tempoOp = ((cmd & 0xF000) >> 0xC);
+
+                switch (tempoOp) {
+                    case SEQCMD_SUB_OP_TEMPO_SPEED_UP:
+                        tempoTarget = tempoTarget + prevTempo;
+                        break;
+                    case SEQCMD_SUB_OP_TEMPO_SLOW_DOWN:
+                        if (tempoTarget < prevTempo) {
+                            tempoTarget = prevTempo - tempoTarget;
+                        }
+                        break;
+                    case SEQCMD_SUB_OP_TEMPO_SCALE:
+                        tempoTarget = prevTempo * (tempoTarget / 100.0f);
+                        break;
+                    case SEQCMD_SUB_OP_TEMPO_RESET:
+                        if (sActiveSequences[seqPlayId].tempoOriginal != 0) {
+                            tempoTarget = sActiveSequences[seqPlayId].tempoOriginal;
+                        } else {
+                            tempoTarget = prevTempo;
+                        }
+                        break;
+                }
+                if (tempoTarget > 300) {
+                    tempoTarget = 300;
+                }
+                if (!sActiveSequences[seqPlayId].tempoOriginal) {
+                    sActiveSequences[seqPlayId].tempoOriginal = prevTempo;
+                }
+                sActiveSequences[seqPlayId].tempo.target = tempoTarget;
+                sActiveSequences[seqPlayId].tempo.value = (s32) gSeqPlayers[seqPlayId].tempo / 48;
+
+                sActiveSequences[seqPlayId].tempo.step =
+                    (sActiveSequences[seqPlayId].tempo.value - sActiveSequences[seqPlayId].tempo.target) / tempoTimer;
+                sActiveSequences[seqPlayId].tempo.timer = tempoTimer;
+                sActiveSequences[seqPlayId].tempoCmd = 0;
+            }
+        }
+        if (sActiveSequences[seqPlayId].tempo.timer != 0) {
+            sActiveSequences[seqPlayId].tempo.timer--;
+            if (sActiveSequences[seqPlayId].tempo.timer != 0) {
+                sActiveSequences[seqPlayId].tempo.value -= sActiveSequences[seqPlayId].tempo.step;
+            } else {
+                sActiveSequences[seqPlayId].tempo.value = sActiveSequences[seqPlayId].tempo.target;
+            }
+            AUDIOCMD_SEQPLAYER_SET_TEMPO((u32) seqPlayId, (s32) sActiveSequences[seqPlayId].tempo.value);
+        }
+        if (sActiveSequences[seqPlayId].volChannelFlags != 0) {
+            for (channelId = 0; channelId < 16; channelId++) {
+                if (sActiveSequences[seqPlayId].channelMod[channelId].volume.timer != 0) {
+                    sActiveSequences[seqPlayId].channelMod[channelId].volume.timer--;
+                    if (sActiveSequences[seqPlayId].channelMod[channelId].volume.timer) {
+                        sActiveSequences[seqPlayId].channelMod[channelId].volume.value -=
+                            sActiveSequences[seqPlayId].channelMod[channelId].volume.step;
+                    } else {
+                        sActiveSequences[seqPlayId].channelMod[channelId].volume.value =
+                            sActiveSequences[seqPlayId].channelMod[channelId].volume.target;
+                        sActiveSequences[seqPlayId].volChannelFlags ^= 1 << channelId;
+                    }
+                    AUDIOCMD_CHANNEL_SET_VOL_SCALE((u32) seqPlayId, (u32) channelId,
+                                                   sActiveSequences[seqPlayId].channelMod[channelId].volume.value);
+                }
+            }
+        }
+        if (sActiveSequences[seqPlayId].freqModChannelFlags != 0) {
+            for (channelId = 0; channelId < 16; channelId++) {
+                if (sActiveSequences[seqPlayId].channelMod[channelId].freq.timer != 0) {
+                    sActiveSequences[seqPlayId].channelMod[channelId].freq.timer--;
+                    if (sActiveSequences[seqPlayId].channelMod[channelId].freq.timer != 0) {
+                        sActiveSequences[seqPlayId].channelMod[channelId].freq.value -=
+                            sActiveSequences[seqPlayId].channelMod[channelId].freq.step;
+                    } else {
+                        sActiveSequences[seqPlayId].channelMod[channelId].freq.value =
+                            sActiveSequences[seqPlayId].channelMod[channelId].freq.target;
+                        sActiveSequences[seqPlayId].freqModChannelFlags ^= 1 << channelId;
+                    }
+                    AUDIOCMD_CHANNEL_SET_FREQ_SCALE((u32) seqPlayId, (u32) channelId,
+                                                    sActiveSequences[seqPlayId].channelMod[channelId].freq.value);
+                }
+            }
+        }
+        if (sActiveSequences[seqPlayId].setupCmdNum == 0) {
+            continue;
+        }
+        if (!Audio_SeqCmdValueNotQueued(SEQCMD_OP_RESET_AUDIO_HEAP << 28, SEQCMD_OP_MASK)) {
+            sActiveSequences[seqPlayId].setupCmdNum = 0;
+            break;
+        }
+        if (sActiveSequences[seqPlayId].setupCmdTimer != 0) {
+            sActiveSequences[seqPlayId].setupCmdTimer--;
+        } else if (!gSeqPlayers[seqPlayId].enabled) {
+            for (i = 0; i < sActiveSequences[seqPlayId].setupCmdNum; i++) {
+                setupOp = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF00000) >> 20;
+
+                setupSeqPlayId = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF0000) >> 16;
+                val2 = (sActiveSequences[seqPlayId].setupCmd[i] & 0xFF00) >> 8;
+                val1 = sActiveSequences[seqPlayId].setupCmd[i] & 0xFF;
+                switch (setupOp) {
+                    case SEQCMD_SUB_OP_SETUP_RESTORE_SEQPLAYER_VOLUME:
+                        Audio_SetSequenceFade(setupSeqPlayId, 1, 127, val2);
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_SEQ_UNQUEUE:
+                        SEQCMD_UNQUEUE_SEQUENCE(seqPlayId, 0, sActiveSequences[seqPlayId].seqId);
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_RESTART_SEQ:
+                        SEQCMD_PLAY_SEQUENCE(setupSeqPlayId, 1, 0, sActiveSequences[setupSeqPlayId].seqId);
+                        sActiveSequences[setupSeqPlayId].mainVolume.fadeActive = true;
+                        sActiveSequences[setupSeqPlayId].mainVolume.fadeMod[1] = 127;
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_TEMPO_SCALE:
+                        SEQCMD_SCALE_TEMPO(setupSeqPlayId, val2, val1);
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_TEMPO_RESET:
+                        SEQCMD_RESET_TEMPO(setupSeqPlayId, val1);
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_PLAY_SEQ:
+                        seqId = sActiveSequences[seqPlayId].setupCmd[i] & 0xFFFF;
+                        SEQCMD_PLAY_SEQUENCE(setupSeqPlayId, sActiveSequences[setupSeqPlayId].setupFadeTimer, 0, seqId);
+                        Audio_SetSequenceFade(setupSeqPlayId, 1, 127, 0);
+                        sActiveSequences[setupSeqPlayId].setupFadeTimer = 0;
+                        break;
+                    case SEQCMD_SUB_OP_SETUP_SET_FADE_TIMER:
+                        sActiveSequences[seqPlayId].setupFadeTimer = val2;
+                        break;
+                }
+            }
+            sActiveSequences[seqPlayId].setupCmdNum = 0;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80018FC0.s")
+void Audio_SetDelayedSeqCmd(u32 seqCmd, u16 delay) {
+    u8 opcode = (seqCmd >> 0x1C);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80019084.s")
+    sDelayedSeqCmds[opcode].seqData = seqCmd;
+    sDelayedSeqCmds[opcode].timer = delay;
+    sDelayedSeqCmdFlags |= 1 << opcode;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80019100.s")
+void Audio_UpdateDelayedSeqCmds(void) {
+    u8 opcode = 0;
+    u16 flag = 1;
+    u16 delayedCmdFlags = sDelayedSeqCmdFlags;
+
+    while (delayedCmdFlags) {
+        if (delayedCmdFlags & flag) {
+            if (sDelayedSeqCmds[opcode].timer != 0) {
+                sDelayedSeqCmds[opcode].timer--;
+            } else {
+                Audio_QueueSeqCmd(sDelayedSeqCmds[opcode].seqData);
+                sDelayedSeqCmdFlags ^= flag;
+            }
+            delayedCmdFlags ^= flag;
+        }
+        opcode++;
+        flag <<= 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80019174.s")
+u8 Audio_HandleReset(void) {
+    if (sAudioResetStatus != AUDIORESET_READY) {
+        if (sAudioResetStatus == AUDIORESET_WAIT) {
+            if (AudioThread_ResetComplete() == true) {
+                sAudioResetStatus = AUDIORESET_READY;
+                AUDIOCMD_SEQPLAYER_SET_IO(SEQ_PLAYER_SFX, 0, sSfxChannelLayout);
+                Audio_RestartSeqPlayers();
+            }
+        } else if (sAudioResetStatus == AUDIORESET_BLOCK) {
+            while (AudioThread_ResetComplete() != true) {
+                ;
+            }
+            sAudioResetStatus = AUDIORESET_READY;
+            AUDIOCMD_SEQPLAYER_SET_IO(SEQ_PLAYER_SFX, 0, sSfxChannelLayout);
+            Audio_RestartSeqPlayers();
+        }
+    }
+    return sAudioResetStatus;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800191D8.s")
+void Audio_ResetActiveSequences(void) {
+    u8 i;
+
+    for (i = 0; i < 4; i++) {
+        sNumSeqRequests[i] = 0;
+        sActiveSequences[i].seqId = SEQ_ID_NONE;
+        sActiveSequences[i].prevSeqId = SEQ_ID_NONE;
+        sActiveSequences[i].tempo.timer = 0;
+        sActiveSequences[i].tempoOriginal = 0;
+        sActiveSequences[i].tempoCmd = 0;
+        sActiveSequences[i].channelPortMask = 0;
+        sActiveSequences[i].setupCmdNum = 0;
+        sActiveSequences[i].setupFadeTimer = 0;
+        sActiveSequences[i].freqModChannelFlags = 0;
+        sActiveSequences[i].volChannelFlags = 0;
+        sActiveSequences[i].mainVolume.fadeMod[2] = 127;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80019234.s")
+void Audio_ResetActiveSequencesAndVolume(void) {
+    u8 i;
+
+    for (i = 0; i < 4; i++) {
+        sActiveSequences[i].mainVolume.mod = 1.0f;
+        sActiveSequences[i].mainVolume.timer = 0;
+        sActiveSequences[i].mainVolume.fadeActive = false;
+        sActiveSequences[i].mainVolume.fadeMod[0] = 127;
+        sActiveSequences[i].mainVolume.fadeMod[1] = 127;
+        sActiveSequences[i].mainVolume.fadeMod[2] = 127;
+    }
+    Audio_ResetActiveSequences();
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800192AC.s")
+void Audio_SetSfxBanksMute(u16 muteFlags) {
+    u8 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_80019450.s")
+    for (i = 0; i < 5; i++) {
+        sSfxBankMuted[i] = (muteFlags & 1) ? true : false;
+        muteFlags = muteFlags >> 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800197C8.s")
+void Audio_ClearBGMMute(u8 channelIndex) {
+    sChannelMuteFlags &= (1 << channelIndex) ^ 0xFFFF;
+    if (sChannelMuteFlags == 0) {
+        Audio_SetSequenceFade(SEQ_PLAYER_BGM, 2, 127, 15);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_800198DC.s")
+void Audio_PlaySfx(u32 sfxId, f32* sfxSource, u8 token, f32* freqMod, f32* volMod, s8* reverbAdd) {
+    if (sSfxBankMuted[SFX_BANK_ALT(sfxId)] == 0) {
+        SfxRequest* request = &sSfxRequests[sSfxRequestWriteIndex];
+
+        request->sfxId = sfxId;
+        request->source = sfxSource;
+        request->token = token;
+        request->freqMod = freqMod;
+        request->volMod = volMod;
+        request->reverbAdd = reverbAdd;
+        sSfxRequestWriteIndex++;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A038.s")
+void Audio_RemoveMatchingSfxRequests(u8 aspect, SfxBankEntry* data) {
+    u8 i = sSfxRequestReadIndex;
+
+    for (i; i != sSfxRequestWriteIndex; i++) {
+        s32 found = false;
+        SfxRequest* request = &sSfxRequests[i];
+
+        switch (aspect) {
+            case 0:
+                if ((request->sfxId & SFX_BANK_MASK) == (data->sfxId & SFX_BANK_MASK)) {
+                    found = true;
+                }
+                break;
+            case 1:
+                if (((request->sfxId & SFX_BANK_MASK) == (data->sfxId & SFX_BANK_MASK)) &&
+                    (&request->source[0] == data->xPos)) {
+                    found = true;
+                }
+                break;
+            case 2:
+                if (&request->source[0] == data->xPos) {
+                    found = true;
+                }
+                break;
+            case 3:
+                if ((&request->source[0] == data->xPos) && (request->sfxId == data->sfxId)) {
+                    found = true;
+                }
+                break;
+            case 4:
+                if ((request->token == data->token) && (request->sfxId == data->sfxId)) {
+                    found = true;
+                }
+                break;
+            case 5:
+                if (request->sfxId == data->sfxId) {
+                    found = true;
+                }
+                break;
+        }
+        if (found) {
+            request->sfxId = NA_SE_NONE;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A2AC.s")
+void Audio_ProcessSfxRequest(void) {
+    SfxRequest* request = &sSfxRequests[sSfxRequestReadIndex];
+    u8 next;
+    s32 bankId;
+    u8 evict;
+    u32 sfxId;
+    u8 count;
+    SfxBankEntry* entry;
+
+    if (request->sfxId == NA_SE_NONE) {
+        return;
+    }
+    bankId = SFX_BANK(request->sfxId);
+    next = sSfxBanks[bankId][0].next;
+    count = 0;
+    while ((next != 0xFF) && (next != 0)) {
+        if (&request->source[0] == sSfxBanks[bankId][next].xPos) {
+            if (request->sfxId == sSfxBanks[bankId][next].sfxId) {
+                count = sUsedChannelsPerBank[sSfxChannelLayout][bankId];
+            } else {
+                if (count == 0) {
+                    evict = next;
+                    sfxId = sSfxBanks[bankId][next].sfxId;
+                } else if ((sSfxBanks[bankId][next].sfxId & SFX_IMPORT_MASK) < (sfxId & SFX_IMPORT_MASK)) {
+                    evict = next;
+                    sfxId = sSfxBanks[bankId][next].sfxId;
+                }
+                count++;
+                if (count == sUsedChannelsPerBank[sSfxChannelLayout][bankId]) {
+                    if ((request->sfxId & SFX_IMPORT_MASK) >= (sfxId & SFX_IMPORT_MASK)) {
+                        next = evict;
+                    } else {
+                        next = 0;
+                    }
+                }
+            }
+            if (count == sUsedChannelsPerBank[sSfxChannelLayout][bankId]) {
+                if ((request->sfxId & SFX_FLAG_27) || (request->sfxId & SFX_FLAG_18) || (next == evict)) {
+                    if ((sSfxBanks[bankId][next].sfxId & SFX_FLAG_19) && (sSfxBanks[bankId][next].state != 1)) {
+                        Audio_ClearBGMMute(sSfxBanks[bankId][next].channelIndex);
+                    }
+                    sSfxBanks[bankId][next].token = request->token;
+                    sSfxBanks[bankId][next].sfxId = request->sfxId;
+                    sSfxBanks[bankId][next].state = SFX_STATE(request->sfxId);
+                    sSfxBanks[bankId][next].freshness = 2;
+                    sSfxBanks[bankId][next].freqMod = request->freqMod;
+                    sSfxBanks[bankId][next].volMod = request->volMod;
+                    sSfxBanks[bankId][next].reverbAdd = request->reverbAdd;
+                }
+                next = 0;
+            }
+        }
+        if (next != 0) {
+            next = sSfxBanks[bankId][next].next;
+        }
+    }
+    if ((sSfxBanks[bankId][sSfxBankFreeListStart[bankId]].next != 0xFF) && (next != 0)) {
+        next = sSfxBankFreeListStart[bankId];
+        entry = &sSfxBanks[bankId][next];
+        entry->xPos = &request->source[0];
+        entry->yPos = &request->source[1];
+        entry->zPos = &request->source[2];
+        entry->token = request->token;
+        entry->freqMod = request->freqMod;
+        entry->volMod = request->volMod;
+        entry->reverbAdd = request->reverbAdd;
+        entry->sfxId = request->sfxId;
+        entry->state = SFX_STATE(request->sfxId);
+        entry->freshness = 2;
+
+        entry->prev = sSfxBankListEnd[bankId];
+
+        sSfxBanks[bankId][sSfxBankListEnd[bankId]].next = sSfxBankFreeListStart[bankId];
+        sSfxBankListEnd[bankId] = sSfxBankFreeListStart[bankId];
+        sSfxBankFreeListStart[bankId] = sSfxBanks[bankId][sSfxBankFreeListStart[bankId]].next;
+        sSfxBanks[bankId][sSfxBankFreeListStart[bankId]].prev = 0xFF;
+
+        entry->next = 0xFF;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A3A8.s")
+void Audio_RemoveSfxBankEntry(u8 bankId, u8 entryIndex) {
+    SfxBankEntry* sfxBank = sSfxBanks[bankId];
+    s32 pad;
+
+    if (sfxBank[entryIndex].sfxId & SFX_FLAG_19) {
+        Audio_ClearBGMMute(sfxBank[entryIndex].channelIndex);
+    }
+    if (entryIndex == sSfxBankListEnd[bankId]) {
+        sSfxBankListEnd[bankId] = sfxBank[entryIndex].prev;
+    } else {
+        sfxBank[sfxBank[entryIndex].next].prev = sfxBank[entryIndex].prev;
+    }
+    sfxBank[sfxBank[entryIndex].prev].next = sfxBank[entryIndex].next;
+    sfxBank[entryIndex].next = sSfxBankFreeListStart[bankId];
+    sfxBank[entryIndex].prev = 0xFF;
+
+    sfxBank[sSfxBankFreeListStart[bankId]].prev = entryIndex;
+    sSfxBankFreeListStart[bankId] = entryIndex;
+    sfxBank[entryIndex].state = 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A4D4.s")
+void Audio_ChooseActiveSfx(u8 bankId) {
+    u8 numChosenSfx = 0;
+    u8 numChannels;
+    u8 k;
+    u8 i;
+    SfxBankEntry* entry;
+    ActiveSfx* activeSfx;
+    f32 maxRangeSq;
+    f32 yScaled;
+    ActiveSfx chosenSfx[8];
+    u8 chosenEntryIndex;
+    u8 j;
+    u8 entryIndex;
+    u8 needNewSfx;
+    s32 importance;
+
+    for (i = 0; i < 8; i++) {
+        chosenSfx[i].priority = INT32_MAX;
+        chosenSfx[i].entryIndex = 0xFF;
+    }
+    entryIndex = sSfxBanks[bankId][0].next;
+    k = 0;
+    while (entryIndex != 0xFF) {
+        if ((sSfxBanks[bankId][entryIndex].state == 1) &&
+            ((sSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_27) == SFX_FLAG_27)) {
+            sSfxBanks[bankId][entryIndex].freshness--;
+        }
+        if (sSfxBanks[bankId][entryIndex].freshness == 0) {
+            Audio_RemoveSfxBankEntry(bankId, entryIndex);
+        } else if (sSfxBanks[bankId][entryIndex].state != 0) {
+            entry = &sSfxBanks[bankId][entryIndex];
+
+            if (&entry->xPos[0] == gDefaultSfxSource) {
+                entry->distance = 0.0f;
+            } else {
+                yScaled = *entry->yPos / 2.5f;
+                entry->distance = SQ(*entry->xPos) + SQ(yScaled) + SQ(*entry->zPos);
+            }
+            importance = SFX_IMPORT(entry->sfxId);
+            if (entry->sfxId & SFX_FLAG_20) {
+                entry->priority = SQ(0xFF - importance) * SQ(76);
+            } else {
+                entry->priority = (u32) entry->distance + SQ(0xFF - importance) * SQ(76);
+                if (*entry->zPos > 0.0f) {
+                    entry->priority += (s32) (*entry->zPos * 6.0f);
+                }
+            }
+            if (SFX_RANGE(entry->sfxId) != 0) {
+                maxRangeSq = SQ(33000.0f) / SQ((s32) SFX_RANGE(entry->sfxId));
+            } else {
+                maxRangeSq = SQ(100000.0f);
+            }
+            if (entry->distance > maxRangeSq) {
+                if (entry->state == 4) {
+                    AUDIOCMD_CHANNEL_SET_IO(2, entry->channelIndex, 0, 0);
+                    if (entry->sfxId & SFX_FLAG_27) {
+                        Audio_RemoveSfxBankEntry(bankId, entryIndex);
+                        entryIndex = k;
+                    }
+                }
+            } else {
+                numChannels = sChannelsPerBank[sSfxChannelLayout][bankId];
+                for (i = 0; i < numChannels; i++) {
+                    if (chosenSfx[i].priority >= entry->priority) {
+                        if (numChosenSfx < sChannelsPerBank[sSfxChannelLayout][bankId]) {
+                            numChosenSfx++;
+                        }
+                        for (j = numChannels - 1; j > i; j--) {
+                            chosenSfx[j].priority = chosenSfx[j - 1].priority;
+                            chosenSfx[j].entryIndex = chosenSfx[j - 1].entryIndex;
+                        }
+                        chosenSfx[i].priority = entry->priority;
+                        chosenSfx[i].entryIndex = entryIndex;
+                        i = numChannels;
+                    }
+                }
+            }
+            k = entryIndex;
+        }
+        entryIndex = sSfxBanks[bankId][k].next;
+    }
+
+    for (i = 0; i < numChosenSfx; i++) {
+        if (sSfxBanks[bankId][chosenSfx[i].entryIndex].state == 1) {
+            sSfxBanks[bankId][chosenSfx[i].entryIndex].state = 2;
+        } else if (sSfxBanks[bankId][chosenSfx[i].entryIndex].state == 4) {
+            sSfxBanks[bankId][chosenSfx[i].entryIndex].state = 3;
+        }
+    }
+    numChannels = sChannelsPerBank[sSfxChannelLayout][bankId];
+    for (i = 0; i < numChannels; i++) {
+        activeSfx = &sActiveSfx[bankId][i];
+        needNewSfx = 0;
+        if (activeSfx->entryIndex == 0xFF) {
+            needNewSfx = 1;
+        } else if (sSfxBanks[bankId][activeSfx->entryIndex].state == 4) {
+            if (sSfxBanks[bankId][activeSfx->entryIndex].sfxId & SFX_FLAG_27) {
+                Audio_RemoveSfxBankEntry(bankId, activeSfx->entryIndex);
+            } else {
+                sSfxBanks[bankId][activeSfx->entryIndex].state = 1;
+            }
+            needNewSfx = 1;
+        } else if (sSfxBanks[bankId][activeSfx->entryIndex].state == 0) {
+            activeSfx->entryIndex = 0xFF;
+            needNewSfx = 1;
+        } else {
+            for (j = 0; j < numChannels; j++) {
+                if (activeSfx->entryIndex == chosenSfx[j].entryIndex) {
+                    chosenSfx[j].entryIndex = 0xFF;
+                    j = numChannels;
+                }
+            }
+            numChosenSfx--;
+        }
+
+        if (needNewSfx == 1) {
+            for (j = 0; j < numChannels; j++) {
+                chosenEntryIndex = chosenSfx[j].entryIndex;
+                if ((chosenEntryIndex != 0xFF) && (sSfxBanks[bankId][chosenEntryIndex].state != 3)) {
+                    for (k = 0; k < numChannels; k++) {
+                        if (chosenEntryIndex == sActiveSfx[bankId][k].entryIndex) {
+                            needNewSfx = 0;
+                            k = numChannels;
+                        }
+                    }
+                    if (needNewSfx == 1) {
+                        activeSfx->entryIndex = chosenEntryIndex;
+                        chosenSfx[j].entryIndex = 0xFF;
+                        j = numChannels + 1;
+                        numChosenSfx--;
+                    }
+                }
+            }
+            if (j == numChannels) {
+                activeSfx->entryIndex = 0xFF;
+            }
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A51C.s")
+void Audio_PlayActiveSfx(u8 bankId) {
+    u8 i;
+
+    for (i = 0; i < sChannelsPerBank[sSfxChannelLayout][bankId]; i++) {
+        u8 entryIndex = sActiveSfx[bankId][i].entryIndex;
+
+        if (entryIndex != 0xFF) {
+            SfxBankEntry* entry = &sSfxBanks[bankId][entryIndex];
+            SequenceChannel* channel = gSeqPlayers[SEQ_PLAYER_SFX].channels[sCurSfxPlayerChannelIndex];
+            s32 pad;
+
+            if (entry->state == 2) {
+                entry->channelIndex = sCurSfxPlayerChannelIndex;
+                if (entry->sfxId & SFX_FLAG_19) {
+                    sChannelMuteFlags |= 1 << sCurSfxPlayerChannelIndex;
+                    Audio_SetSequenceFade(SEQ_PLAYER_BGM, 2, 64, 15);
+                }
+                Audio_SetSfxProperties(bankId, entryIndex, sCurSfxPlayerChannelIndex);
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 0, 1);
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 4, SFX_INDEX(entry->sfxId) & 0xFF);
+                entry->state = 4;
+            } else if ((u8) channel->seqScriptIO[7] == 0x80) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 7, 0);
+                Audio_RemoveSfxBankEntry(bankId, entryIndex);
+            } else if (entry->state == 3) {
+                Audio_SetSfxProperties(bankId, entryIndex, sCurSfxPlayerChannelIndex);
+                entry->state = 4;
+            }
+        }
+        sCurSfxPlayerChannelIndex++;
+    }
+}
+void Audio_KillSfxByBank(u8 bankId) {
+    SfxBankEntry* entry;
+    u8 next = sSfxBanks[bankId][0].next;
+
+    SfxBankEntry cmp;
+
+    while (next != 0xFF) {
+        entry = &sSfxBanks[bankId][next];
+        if (entry->state >= 3) {
+            AUDIOCMD_CHANNEL_SET_IO(2, entry->channelIndex, 0, 0);
+        }
+        if (entry->state != 0) {
+            Audio_RemoveSfxBankEntry(bankId, next);
+        }
+        next = sSfxBanks[bankId][0].next;
+    }
+    cmp.sfxId = bankId << SFX_BANK_SHIFT;
+    Audio_RemoveMatchingSfxRequests(0, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A578.s")
+void Audio_StopSfxByBankAndSource(u8 bankId, f32* sfxSource) {
+    SfxBankEntry* entry;
+    u8 curIndex = 0;
+    u8 nextIndex = sSfxBanks[bankId][0].next;
+
+    while (nextIndex != 0xFF) {
+        entry = &sSfxBanks[bankId][nextIndex];
+        if (entry->xPos == sfxSource) {
+            if (entry->state >= 3) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
+            }
+            if (entry->state != 0) {
+                Audio_RemoveSfxBankEntry(bankId, nextIndex);
+            }
+        } else {
+            curIndex = nextIndex;
+        }
+        nextIndex = sSfxBanks[bankId][curIndex].next;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A6E0.s")
+void Audio_KillSfxByBankAndSource(u8 bankId, f32* sfxSource) {
+    SfxBankEntry cmp;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A854.s")
+    Audio_StopSfxByBankAndSource(bankId, sfxSource);
+    cmp.sfxId = bankId << SFX_BANK_SHIFT;
+    cmp.xPos = sfxSource;
+    Audio_RemoveMatchingSfxRequests(1, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001A9A4.s")
+void Audio_KillSfxBySource(f32* sfxSource) {
+    u8 i;
+    SfxBankEntry cmp;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AA08.s")
+    for (i = 0; i < 5; i++) {
+        Audio_StopSfxByBankAndSource(i, sfxSource);
+    }
+    cmp.xPos = sfxSource;
+    Audio_RemoveMatchingSfxRequests(2, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AAAC.s")
+void Audio_KillSfxBySourceAndId(f32* sfxSource, u32 sfxId) {
+    u32 bankId = SFX_BANK(sfxId);
+    u8 next = sSfxBanks[bankId][0].next;
+    u8 current = 0;
+    SfxBankEntry cmp;
+
+    while (next != 0xFF) {
+        if ((sSfxBanks[bankId][next].xPos == sfxSource) && (sSfxBanks[bankId][next].sfxId == sfxId)) {
+            if (sSfxBanks[bankId][next].state >= 3) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sSfxBanks[bankId][next].channelIndex, 0, 0);
+            }
+            if (sSfxBanks[bankId][next].state != 0) {
+                Audio_RemoveSfxBankEntry(bankId, next);
+            }
+            next = 0xFF;
+        } else {
+            current = next;
+        }
+        if (next != 0xFF) {
+            next = sSfxBanks[bankId][current].next;
+        }
+    }
+    cmp.sfxId = sfxId;
+    cmp.xPos = sfxSource;
+    Audio_RemoveMatchingSfxRequests(3, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AB00.s")
+void Audio_KillSfxByTokenAndId(u8 token, u32 sfxId) {
+    u32 bankId = SFX_BANK(sfxId);
+    u8 next = sSfxBanks[bankId][0].next;
+    u8 current = 0;
+    SfxBankEntry cmp;
+
+    while (next != 0xFF) {
+        if ((sSfxBanks[bankId][next].token == token) && (sSfxBanks[bankId][next].sfxId == sfxId)) {
+            if (sSfxBanks[bankId][next].state >= 3) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sSfxBanks[bankId][next].channelIndex, 0, 0);
+            }
+            if (sSfxBanks[bankId][next].state != 0) {
+                Audio_RemoveSfxBankEntry(bankId, next);
+            }
+        } else {
+            current = next;
+        }
+        if (next != 0xFF) {
+            next = sSfxBanks[bankId][current].next;
+        }
+    }
+    cmp.token = token;
+    cmp.sfxId = sfxId;
+    Audio_RemoveMatchingSfxRequests(4, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AB6C.s")
+void Audio_KillSfxById(u32 sfxId) {
+    u32 bankId = SFX_BANK(sfxId);
+    u8 next = sSfxBanks[bankId][0].next;
+    u8 current = 0;
+    SfxBankEntry cmp;
+
+    while (next != 0xFF) {
+        if (sfxId == sSfxBanks[bankId][next].sfxId) {
+            if (sSfxBanks[bankId][next].state >= 3) {
+                AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sSfxBanks[bankId][next].channelIndex, 0, 0);
+            }
+            if (sSfxBanks[bankId][next].state != 0) {
+                Audio_RemoveSfxBankEntry(bankId, next);
+            }
+        } else {
+            current = next;
+        }
+        next = sSfxBanks[bankId][current].next;
+    }
+    cmp.sfxId = sfxId;
+    Audio_RemoveMatchingSfxRequests(5, &cmp);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001ACF8.s")
+void Audio_ProcessSfxRequests(void) {
+    while (sSfxRequestWriteIndex != sSfxRequestReadIndex) {
+        Audio_ProcessSfxRequest();
+        sSfxRequestReadIndex++;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AD1C.s")
+void Audio_SetSfxVolumeMod(u8 bankId, u8 target, u16 timer) {
+    Modulation* scale = &sSfxVolumeMods[bankId];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AD60.s")
+    if (timer == 0) {
+        timer++;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AE74.s")
+    scale->target = target / 127.0f;
+    scale->timer = timer;
+    scale->step = (scale->value - scale->target) / timer;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AE94.s")
+void Audio_UpdateSfxVolumeMod(u8 bankId) {
+    Modulation* scale = &sSfxVolumeMods[bankId];
+
+    if (scale->timer != 0) {
+        scale->timer--;
+        if (scale->timer != 0) {
+            scale->value -= scale->step;
+        } else {
+            scale->value = scale->target;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AEF0.s")
+void Audio_PlayAllSfx(void) {
+    u8 bankId;
+
+    if (IS_SEQUENCE_CHANNEL_VALID(gSeqPlayers[SEQ_PLAYER_SFX].channels[0])) {
+        sCurSfxPlayerChannelIndex = 0;
+        for (bankId = 0; bankId < ARRAY_COUNT(sSfxBanks); bankId++) {
+            Audio_ChooseActiveSfx(bankId);
+            Audio_PlayActiveSfx(bankId);
+            Audio_UpdateSfxVolumeMod(bankId);
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AF5C.s")
+void Audio_ResetSfx(void) {
+    u8 i;
+    u8 j;
+
+    sSfxRequestWriteIndex = 0;
+    sSfxRequestReadIndex = 0;
+    sChannelMuteFlags = 0;
+    for (i = 0; i < 5; i++) {
+        sSfxBankListEnd[i] = 0;
+        sSfxBankFreeListStart[i] = 1;
+        sSfxBankUnused[i] = 0;
+        sSfxBankMuted[i] = 0;
+        sSfxVolumeMods[i].value = 1.0f;
+        sSfxVolumeMods[i].timer = 0;
+    }
+    for (i = 0; i < 5; i++) {
+        for (j = 0; j < 8; j++) {
+            sActiveSfx[i][j].entryIndex = 0xFF;
+        }
+    }
+    for (i = 0; i < 5; i++) {
+        sSfxBanks[i][0].prev = 0xFF;
+        sSfxBanks[i][0].next = 0xFF;
+        for (j = 1; j < 19; j++) {
+            sSfxBanks[i][j].prev = j - 1;
+            sSfxBanks[i][j].next = j + 1;
+        }
+        sSfxBanks[i][j].prev = j - 1;
+        sSfxBanks[i][j].next = 0xFF;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AF6C.s")
+void Audio_PlayVoice(s32 msgId) {
+    sCurrentVoiceId = sNextVoiceId = msgId;
+    sSetNextVoiceId = true;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001AFB8.s")
+void Audio_PlayVoiceWithoutBGM(u32 msgId) {
+    sMuteBgmForVoice = true;
+    Audio_SetSequenceFade(SEQ_PLAYER_BGM, 2, 64, 15);
+    Audio_PlayVoice(msgId);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001B030.s")
+void Audio_UpdateVoice(void) {
+    s8 voiceBank;
+    u16 voiceId;
+    u8 voiceIdHi;
+    u8 voiceIdLo;
+
+    if (sSetNextVoiceId) {
+        voiceBank = sNextVoiceId / 1000;
+        voiceId = sNextVoiceId % 1000;
+        voiceIdHi = voiceId / 256;
+        voiceIdLo = voiceId % 256;
+        AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 15, 0, 1);
+        AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 15, 4, voiceBank);
+        AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 15, 5, voiceIdHi);
+        AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 15, 6, voiceIdLo);
+        sSetNextVoiceId = false;
+    } else if ((sMuteBgmForVoice) && (Audio_GetCurrentVoice() == 0)) {
+        Audio_SetSequenceFade(SEQ_PLAYER_BGM, 2, 127, 15);
+        sMuteBgmForVoice = false;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001B470.s")
+void Audio_ClearVoice(void) {
+    sCurrentVoiceId = 0;
+    sNextVoiceId = 1;
+    sSetNextVoiceId = true;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001B790.s")
+s32 Audio_GetCurrentVoice(void) {
+    if (!IS_SEQUENCE_CHANNEL_VALID(gSeqPlayers[SEQ_PLAYER_VOICE].channels[15])) {
+        return 0;
+    }
+    if (gSeqPlayers[SEQ_PLAYER_VOICE].channels[15]->seqScriptIO[1] == 1) {
+        if (sCurrentVoiceId < 4) {
+            return 0;
+        } else {
+            return sCurrentVoiceId;
+        }
+    }
+    return 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BA5C.s")
+s32 Audio_GetCurrentVoiceStatus(void) {
+    SequenceChannel* channel = gSeqPlayers[SEQ_PLAYER_VOICE].channels[15];
+    SequenceLayer* layer = channel->layers[0];
+
+    if (!IS_SEQUENCE_CHANNEL_VALID(channel) || (layer == NULL) || (channel->seqScriptIO[1] != 1)) {
+        return 0;
+    }
+    if (layer->note != NULL) {
+        if (layer != layer->note->playbackState.parentLayer) {
+            return 2;
+        } else {
+            return 1;
+        }
+    }
+    return 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BB90.s")
+void Audio_SetUnkVoiceParam(u8 unkVoiceParam) {
+    sUnkVoiceParam = unkVoiceParam;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BC3C.s")
+void Audio_UpdateUnkVoiceParam(void) {
+    if (sUnkVoiceParam != 0xFF) {
+        AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 14, 0, sUnkVoiceParam);
+        sUnkVoiceParam = 0xFF;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BC64.s")
+void Audio_ResetPlayerFreqMods(void) {
+    u8 i;
+    u8 j;
+
+    for (i = 0; i < 4; i++) {
+        for (j = 0; j < 5; j++) {
+            sPlayerNoise[i].freqMod[j].value = 1.0f;
+            sPlayerNoise[i].freqMod[j].timer = 0;
+            sPlayerNoise[i].freqMod[j].boost = 0;
+            sPlayerNoise[i].freqMod[j].brake = 0;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BD28.s")
+void Audio_UpdateArwingNoise(u8 playerId) {
+    f32 freqMod;
+    u8 i;
+
+    if (gPlayer[playerId].sfx.boost) {
+        sPlayerNoise[playerId].freqMod[0].target = 1.5f;
+        sPlayerNoise[playerId].freqMod[0].timer = 18;
+        sPlayerNoise[playerId].freqMod[0].step =
+            (sPlayerNoise[playerId].freqMod[0].target - sPlayerNoise[playerId].freqMod[0].value) / 18;
+        sPlayerNoise[playerId].freqMod[0].boost = true;
+    } else if (sPlayerNoise[playerId].freqMod[0].boost) {
+        sPlayerNoise[playerId].freqMod[0].boost = false;
+        sPlayerNoise[playerId].freqMod[0].timer = 1;
+    }
+    if (gPlayer[playerId].sfx.brake) {
+        sPlayerNoise[playerId].freqMod[0].target = 0.65f;
+        sPlayerNoise[playerId].freqMod[0].timer = 20;
+        sPlayerNoise[playerId].freqMod[0].step =
+            (sPlayerNoise[playerId].freqMod[0].target - sPlayerNoise[playerId].freqMod[0].value) / 20;
+        sPlayerNoise[playerId].freqMod[0].brake = true;
+    } else if (sPlayerNoise[playerId].freqMod[0].brake) {
+        sPlayerNoise[playerId].freqMod[0].brake = false;
+        sPlayerNoise[playerId].freqMod[0].timer = 1;
+    }
+    if ((gPlayer[playerId].sfx.bank != 0) && (gPlayer[playerId].sfx.zRot < 45.0f)) {
+        sPlayerNoise[playerId].freqMod[2].target = 1.25f;
+        sPlayerNoise[playerId].freqMod[2].timer = 10;
+        sPlayerNoise[playerId].freqMod[2].step =
+            (sPlayerNoise[playerId].freqMod[2].target - sPlayerNoise[playerId].freqMod[2].value) / 10;
+    }
+    if (gPlayer[playerId].sfx.roll != 0) {
+        AUDIO_PLAY_SFX(NA_SE_ROLLING_AIR, gPlayer[playerId].sfx.srcPos, playerId);
+        sPlayerNoise[playerId].freqMod[1].target = 1.65f;
+        sPlayerNoise[playerId].freqMod[1].timer = 8;
+        sPlayerNoise[playerId].freqMod[1].step =
+            (sPlayerNoise[playerId].freqMod[1].target - sPlayerNoise[playerId].freqMod[1].value) / 8;
+    }
+    if (ABS(gPlayer[playerId].sfx.yVel) > 2.0f) {
+        sPlayerNoise[playerId].freqMod[3].target = 1.25f;
+        sPlayerNoise[playerId].freqMod[3].timer = 15;
+        sPlayerNoise[playerId].freqMod[3].step =
+            (sPlayerNoise[playerId].freqMod[3].target - sPlayerNoise[playerId].freqMod[3].value) / 15;
+        sPlayerNoise[playerId].freqMod[3].boost = true;
+    } else if (sPlayerNoise[playerId].freqMod[3].boost) {
+        sPlayerNoise[playerId].freqMod[3].boost = false;
+        sPlayerNoise[playerId].freqMod[3].timer = 1;
+    }
+    if (sPlayerNoise[playerId].freqMod[4].timer == 0) {
+        sPlayerNoise[playerId].freqMod[4].target = (((f32) (gAudioRandom % 0x10000) / 32768.0) * 0.15f) + 1.0f - 0.15f;
+        sPlayerNoise[playerId].freqMod[4].timer = 16 + (gAudioRandom >> 27);
+        sPlayerNoise[playerId].freqMod[4].step =
+            (sPlayerNoise[playerId].freqMod[4].target - sPlayerNoise[playerId].freqMod[3].value) /
+            sPlayerNoise[playerId].freqMod[4].timer;
+    }
+    for (i = 0; i < 5; i++) {
+        if (sPlayerNoise[playerId].freqMod[i].timer != 0) {
+            sPlayerNoise[playerId].freqMod[i].timer--;
+            sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
+            if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
+                sPlayerNoise[playerId].freqMod[i].target = 1.0f;
+                sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
+                sPlayerNoise[playerId].freqMod[i].step =
+                    (1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
+            }
+        }
+    }
+    freqMod = 1.0f;
+    for (i = 0; i < 5; i++) {
+        freqMod *= sPlayerNoise[playerId].freqMod[i].value;
+    }
+    if (freqMod >= 4.0f) {
+        freqMod = 4.0f;
+    }
+    sPlayerNoise[playerId].totalMod = freqMod;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001BFDC.s")
+void Audio_UpdateLandmasterNoise(u8 playerId) {
+    f32 freqMod;
+    u8 i;
+
+    if ((gPlayer[playerId].sfx.bank != 0) && (gPlayer[playerId].sfx.zRot < 45.0f)) {
+        sPlayerNoise[playerId].freqMod[2].timer = 10;
+        sPlayerNoise[playerId].freqMod[2].target = 1.25f;
+        sPlayerNoise[playerId].freqMod[2].step = (1.25f - sPlayerNoise[playerId].freqMod[2].value) / 10;
+    }
+    if (gPlayer[playerId].sfx.roll != 0) {
+        sPlayerNoise[playerId].freqMod[1].timer = 8;
+        sPlayerNoise[playerId].freqMod[1].target = 1.65f;
+        sPlayerNoise[playerId].freqMod[1].step = (1.65f - sPlayerNoise[playerId].freqMod[1].value) / 8;
+    }
+    if (ABS(gPlayer[playerId].sfx.yVel) > 2.0f) {
+        sPlayerNoise[playerId].freqMod[3].target = 1.25f;
+        sPlayerNoise[playerId].freqMod[3].timer = 15;
+        sPlayerNoise[playerId].freqMod[3].boost = true;
+        sPlayerNoise[playerId].freqMod[3].step = (1.25f - sPlayerNoise[playerId].freqMod[3].value) / 15;
+    } else if (sPlayerNoise[playerId].freqMod[3].boost) {
+        sPlayerNoise[playerId].freqMod[3].boost = false;
+        sPlayerNoise[playerId].freqMod[3].timer = 1;
+    }
+    for (i = 0; i < 5; i++) {
+        if (sPlayerNoise[playerId].freqMod[i].timer != 0) {
+            sPlayerNoise[playerId].freqMod[i].timer--;
+            sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
+            if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
+                sPlayerNoise[playerId].freqMod[i].target = 1.0f;
+                sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
+                sPlayerNoise[playerId].freqMod[i].step =
+                    (1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
+            }
+        }
+    }
+    freqMod = 1.0f;
+    for (i = 0; i < 5; i++) {
+        freqMod *= sPlayerNoise[playerId].freqMod[i].value;
+    }
+    if (ABS(gPlayer[playerId].pos.y) < 600.0f) {
+        freqMod += (gPlayer[playerId].pos.y / 600.0f);
+    } else {
+        freqMod += 1.0f;
+    }
+    if (gPlayer[playerId].baseSpeed > 25.0f) {
+        freqMod += 0.5f;
+    } else if (gPlayer[playerId].baseSpeed < 5.0f) {
+        freqMod -= 0.5f;
+    } else {
+        freqMod += (gPlayer[playerId].baseSpeed - 15.0f) * 0.05f;
+    }
+    if (freqMod > 2.0f) {
+        freqMod = 2.0f;
+    }
+    sPlayerNoise[playerId].totalMod = freqMod;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001C408.s")
+void Audio_UpdateBlueMarineNoise(u8 playerId) {
+    u8 i;
+    f32 freqMod;
+
+    if ((gPlayer[playerId].sfx.bank != 0) && (gPlayer[playerId].sfx.zRot < 45.0f)) {
+        sPlayerNoise[playerId].freqMod[2].timer = 10;
+        sPlayerNoise[playerId].freqMod[2].target = 1.1f;
+        sPlayerNoise[playerId].freqMod[2].step = (1.1f - sPlayerNoise[playerId].freqMod[2].value) / 10;
+    }
+    if (gPlayer[playerId].sfx.roll != 0) {
+        AUDIO_PLAY_SFX(NA_SE_MAR_ROLLING_AIR, gPlayer[playerId].sfx.srcPos, playerId);
+        sPlayerNoise[playerId].freqMod[1].timer = 8;
+        sPlayerNoise[playerId].freqMod[1].target = 1.2f;
+        sPlayerNoise[playerId].freqMod[1].step = (1.2f - sPlayerNoise[playerId].freqMod[1].value) / 8;
+    }
+    if (ABS(gPlayer[playerId].sfx.yVel) > 2.0f) {
+        sPlayerNoise[playerId].freqMod[3].timer = 15;
+        sPlayerNoise[playerId].freqMod[3].boost = true;
+        sPlayerNoise[playerId].freqMod[3].target = 1.12f;
+        sPlayerNoise[playerId].freqMod[3].step = (1.12f - sPlayerNoise[playerId].freqMod[3].value) / 15;
+    } else if (sPlayerNoise[playerId].freqMod[3].boost) {
+        sPlayerNoise[playerId].freqMod[3].boost = false;
+        sPlayerNoise[playerId].freqMod[3].timer = 1;
+    }
+    for (i = 0; i < 5; i++) {
+        if (sPlayerNoise[playerId].freqMod[i].timer != 0) {
+            sPlayerNoise[playerId].freqMod[i].timer--;
+            sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
+            if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
+                sPlayerNoise[playerId].freqMod[i].target = 1.0f;
+                sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
+                sPlayerNoise[playerId].freqMod[i].step =
+                    (1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
+            }
+        }
+    }
+    freqMod = 1.0f;
+
+    for (i = 0; i < 5; i++) {
+        freqMod *= sPlayerNoise[playerId].freqMod[i].value;
+    }
+    if (freqMod > 2.0f) {
+        freqMod = 2.0f;
+    }
+    sPlayerNoise[playerId].totalMod = freqMod;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001C8D4.s")
+void Audio_UpdatePlayerFreqMod(void) {
+    u8 playerId;
+
+#ifdef AVOID_UB
+    for (playerId = 0; playerId < gCamCount; playerId++) {
+#else
+    for (playerId = 0; playerId < 4; playerId++) {
+#endif
+        switch (sPlayerNoise[playerId].form) {
+            case FORM_ARWING:
+                Audio_UpdateArwingNoise(playerId);
+                sPlayerNoise[playerId].totalMod *=
+                    Audio_UpdateDopplerShift(gPlayer[playerId].sfx.srcPos, gPlayer[playerId].sfx.srcVel, 150.0f,
+                                             &sPlayerNoise[playerId].dopplerShift);
+                break;
+            case FORM_LANDMASTER:
+                Audio_UpdateLandmasterNoise(playerId);
+                break;
+            case FORM_BLUE_MARINE:
+                Audio_UpdateBlueMarineNoise(playerId);
+                break;
+            case FORM_NONE:
+                break;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CA40.s")
+void Audio_UpdatePlayerReverb(void) {
+    u8 playerId;
+
+    for (playerId = 0; playerId < 4; playerId++) {
+        if ((sPlayerNoise[playerId].form == FORM_ARWING) && (gPlayer[playerId].sfx.levelType == LEVELTYPE_PLANET)) {
+            if (gPlayer[playerId].pos.y < 150.0f) {
+                sPlayerNoise[playerId].reverbAdd = (150.0f - gPlayer[playerId].pos.y) * 0.53f;
+            } else {
+                sPlayerNoise[playerId].reverbAdd = 0;
+            }
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CBB8.s")
+void Audio_UpdatePlayerNoise(void) {
+    Audio_UpdatePlayerFreqMod();
+    Audio_UpdatePlayerReverb();
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CD14.s")
+void Audio_ResetVoicesAndPlayers(void) {
+    u8 playerId;
+
+    Audio_ResetPlayerFreqMods();
+    for (playerId = 0; playerId < 4; playerId++) {
+        sPlayerNoise[playerId].form = FORM_NONE;
+        sPlayerNoise[playerId].reverbAdd = 0;
+        sPlayerNoise[playerId].totalMod = 1.0f;
+        sPlayerNoise[playerId].dopplerShift = 1.0f;
+        sBombState[playerId] = 0;
+        sBombStartFrame[playerId] = 0;
+    }
+    sSfxFreqMod = 1.0f;
+    sSfxVolMod = 1.0f;
+    sNextVoiceId = 0;
+    sCurrentVoiceId = 0;
+    sSetNextVoiceId = 0;
+    sMuteBgmForVoice = 0;
+    sPlaylistIndex = 0xFF;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CE60.s")
+void Audio_ProcessPlaylist(void) {
+    PlaylistCmd* cmd;
+    u32 temp;
+    u32 temp2;
+    u32 temp1;
+    u32 temp5;
+
+    if (sPlaylistIndex != 0xFF) {
+        if (sPlaylistTimer == 0) {
+            cmd = &sPlaylists[sPlaylistIndex][sPlaylistCmdIndex];
+            switch (cmd->opCode) {
+                case 0:
+                    Audio_PlaySequence(cmd->seqPlayId, cmd->seqId & 0xFF, 0, cmd->bgmParam);
+                    sPlaylistTimer = sPlaylists[sPlaylistIndex][sPlaylistCmdIndex].timer;
+                    sPlaylistCmdIndex++;
+                    break;
+                case 1:
+                    SEQCMD_STOP_SEQUENCE_ALT(cmd->seqPlayId, cmd->fadeoutTime);
+                    sPlaylistTimer = sPlaylists[sPlaylistIndex][sPlaylistCmdIndex].timer;
+                    sPlaylistCmdIndex++;
+                    break;
+                case 2:
+                    Audio_PlaySequenceDistorted(cmd->seqPlayId, cmd->seqId & 0xFF, 1121, 25, cmd->bgmParam);
+                    sPlaylistTimer = sPlaylists[sPlaylistIndex][sPlaylistCmdIndex].timer;
+                    sPlaylistCmdIndex++;
+                    break;
+                case 3:
+                    Audio_PlayFanfare(cmd->seqId & 0xFF, 20, 10, 10);
+                    sPlaylistTimer = sPlaylists[sPlaylistIndex][sPlaylistCmdIndex].timer;
+                    sPlaylistCmdIndex++;
+                    break;
+                case 0xFF:
+                    sPlaylistIndex = 0xFF;
+                    break;
+            }
+        } else {
+            sPlaylistTimer--;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CF34.s")
+void Audio_AnalyzeFrequencies(f32* buffer0, f32* buffer1, s32 length, f32* buffer2) {
+    f32 temp_ft0;
+    f32 var_fs0;
+    f32* buff0fromStart;
+    f32* buf2half2;
+    f32* buf2half3;
+    f32* buff1half1;
+    f32* buff0FromEnd;
+    f32* buff1half2;
+    s32 half;
+    s32 i;
+    s32 size;
+
+    size = 1 << length;
+    half = size >> 1;
+
+    // Initialize buffer 2 if it is the wrong size for this calculation
+    if (size != (s32) buffer2[0]) {
+        buf2half2 = &buffer2[half];
+        buf2half3 = &buf2half2[half];
+        var_fs0 = 0.0f;
+        temp_ft0 = D_PI / (2 * size);
+        for (i = 0; i < half; i++) {
+            *buf2half2++ = (__cosf(var_fs0) - __sinf(var_fs0)) * 0.707107f; // approx 1/sqrt(2)
+            *buf2half3++ = (__cosf(var_fs0) + __sinf(var_fs0)) * 0.707107f; // approx 1/sqrt(2)
+            var_fs0 += temp_ft0;
+        }
+    }
+
+    buff0fromStart = buffer0;
+    buff0FromEnd = &buffer0[size - 1];
+    buff1half1 = buffer1;
+    buff1half2 = &buffer1[half];
+
+    // Copy even entries of buffer 0 into the first half of buffer 1. Copy odd entries into the second half in reverse
+    // order
+    for (i = 0; i < half; i++) {
+        *buff1half1++ = *buff0fromStart;
+        *buff1half2++ = *buff0FromEnd;
+        buff0fromStart += 2;
+        buff0FromEnd -= 2;
+    }
+
+    // reset the buffer pointers
+    buff0FromEnd = &buffer0[size - 1];
+    buff0fromStart = buffer0;
+    buf2half2 = &buffer2[half];
+    buf2half3 = &buf2half2[half];
+    buff1half1 = buffer1;
+
+    // FFT buffer 1 using buffer 2
+    func_800087F0(buffer1, length, buffer2);
+
+    // handle i = 0 case
+    buff0fromStart[0] = buff1half1[0];
+    buff0fromStart[half] = buff1half1[half];
+
+    // advance buffer pointers
+    buf2half2++;
+    buf2half3++;
+    buff0fromStart++;
+    buff1half1++;
+
+    // second half of buffer 1 in reverse order this time
+    buff1half2 = &buffer1[size - 1];
+
+    // convert to real amplitudes
+    for (i = 1; i < half; i++) {
+        *buff0fromStart++ = (*buf2half2 * *buff1half1) + (*buf2half3 * *buff1half2);
+        *buff0FromEnd-- = (*buf2half3 * *buff1half1) - (*buf2half2 * *buff1half2);
+        buff1half1++;
+        buf2half3++;
+        buf2half2++;
+        buff1half2--;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CF98.s")
+#ifndef IMPORT_DATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/Audio_UpdateFrequencyAnalysis.s")
+#else
+u8* Audio_UpdateFrequencyAnalysis(void) {
+    s32 fmax;
+    s32 i1;
+    s32 fmin;
+    s32 i2;
+    s32 i3;
+    s32 fbin;
+    s16* aiData;
+    s32 pad;
+    static s32 sFreqBins[] = {
+        0,  1,  2,  3,  4,  6,  7,  8,   9,   10,  11,  12,  14,  16,  19,  22,
+        26, 31, 37, 44, 54, 68, 88, 108, 138, 163, 188, 208, 222, 234, 242, 246,
+    };
+    static f32 sFreqGain = 17.0f;
+    static f32 sFreqAmplitudes[32] = {
+        0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+    };
+
+    Audio_ProcessPlaylist();
+    // clang-format off
+    aiData = gAiBuffers[gCurAiBuffIndex];\
+    for(i3 = 0; i3 < 256; i3++) {\
+        sAudioAnalyzerData[i3] = *aiData++;
+    }
+    // clang-format on
+    Audio_AnalyzeFrequencies(sAudioAnalyzerData, sAnalyzerBuffer1, 8, sAnalyzerBuffer2);
+    fmin = 0;
+    for (i1 = 0; i1 < 32; i1++) {
+        fmax = sFreqBins[i1] + 1;
+        for (fbin = fmin; fbin < fmax; fbin++) {
+            if (sAudioAnalyzerData[fbin] > 0.0f) {
+                sNewFreqAmplitudes[i1] += sAudioAnalyzerData[fbin];
+            } else {
+                sNewFreqAmplitudes[i1] -= sAudioAnalyzerData[fbin];
+            }
+        }
+        fmin = fbin;
+    }
+    for (i2 = 0; i2 < 32; i2++) {
+        sNewFreqAmplitudes[i2] /= 8;
+    }
+    for (i3 = 0; i3 < 32; i3++) {
+        sNewFreqAmplitudes[i3] = (sNewFreqAmplitudes[i3] / 32768.0f) * sFreqGain;
+        if (sNewFreqAmplitudes[i3] > 1.0f) {
+            sNewFreqAmplitudes[i3] = 1.0f;
+        }
+        sFreqAmplitudes[i3] = sFreqAmplitudes[i3] * 0.75f + 0.25f * sNewFreqAmplitudes[i3];
+        sFreqAnalyzerBars[i3] = sFreqAmplitudes[i3] * 255.0f;
+    }
+    return sFreqAnalyzerBars;
+}
+#endif
+
+void Audio_StartPlayerNoise(u8 playerId) {
+    u32 sfxId = NA_SE_NONE;
+
+    sPlayerNoise[playerId].form = gPlayer[playerId].sfx.form;
+    Audio_ResetPlayerFreqMods();
+    switch (sPlayerNoise[playerId].form) {
+        case FORM_ARWING:
+            if (gPlayer[playerId].sfx.levelType == LEVELTYPE_SPACE) {
+                sfxId = NA_SE_ARWING_ENGIN_SPC;
+            } else {
+                sfxId = NA_SE_ARWING_ENGIN_GRD;
+            }
+            break;
+        case FORM_LANDMASTER:
+            sfxId = NA_SE_TANK_ENGIN;
+            break;
+        case FORM_BLUE_MARINE:
+            sfxId = NA_SE_MARINE_ENGINE00;
+            Audio_PlaySfx(NA_SE_SUBMARINE_ATM, gPlayer[playerId].sfx.srcPos, playerId, &gDefaultMod, &gDefaultMod,
+                          &sPlayerNoise[playerId].reverbAdd);
+            break;
+    }
+    if (sfxId != NA_SE_NONE) {
+        Audio_PlaySfx(sfxId, gPlayer[playerId].sfx.srcPos, playerId, &sPlayerNoise[playerId].totalMod, &gDefaultMod,
+                      &sPlayerNoise[playerId].reverbAdd);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001CFE0.s")
+void Audio_StopPlayerNoise(u8 playerId) {
+    u32 sfxId = NA_SE_NONE;
+
+    switch (sPlayerNoise[playerId].form) {
+        case FORM_ARWING:
+            if (gPlayer[playerId].sfx.levelType == LEVELTYPE_SPACE) {
+                sfxId = NA_SE_ARWING_ENGIN_SPC;
+            } else {
+                sfxId = NA_SE_ARWING_ENGIN_GRD;
+            }
+            Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, NA_SE_SPLASH_LEVEL_S);
+            break;
+        case FORM_LANDMASTER:
+            sfxId = NA_SE_TANK_ENGIN;
+#ifdef VERSION_EU
+            Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, NA_SE_TANK_GO_UP);
+#endif
+            break;
+        case FORM_BLUE_MARINE:
+            sfxId = NA_SE_MARINE_ENGINE00;
+            Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, NA_SE_SUBMARINE_ATM);
+            break;
+    }
+    sPlayerNoise[playerId].form = FORM_NONE;
+    if (sfxId != NA_SE_NONE) {
+        Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, sfxId);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D06C.s")
+void Audio_InitBombSfx(u8 playerId, u8 type) {
+    sBombStartFrame[playerId] = sAudioFrameCounter;
+    switch (type) {
+        case 1:
+            sBombFreqMod[playerId] = 1.0f;
+            sBombType[playerId] = 1;
+            break;
+        case 2:
+            sBombFreqMod[playerId] = 1.5f;
+            sBombType[playerId] = 2;
+            break;
+        default:
+        case 0:
+            sBombFreqMod[playerId] = 0.75f;
+            sBombType[playerId] = 0;
+            break;
+    }
+    if (sBombState[playerId] != 1) {
+        Audio_PlaySfx(NA_SE_BOMB_CHARGE, gPlayer[playerId].sfx.srcPos, playerId, &sBombFreqMod[playerId], &gDefaultMod,
+                      &sPlayerNoise[playerId].reverbAdd);
+        sBombState[playerId] = 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D0EC.s")
+void Audio_PlayBombFlightSfx(u8 playerId, f32* sfxSource) {
+    if (sBombState[playerId] != 0) {
+        switch (sBombType[playerId]) {
+            case 1:
+                sBombFreqMod[playerId] = 1.2f;
+                break;
+            case 2:
+                sBombFreqMod[playerId] = 1.5f;
+                break;
+            default:
+            case 0:
+                sBombFreqMod[playerId] = 1.0f;
+                break;
+        }
+        Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, NA_SE_BOMB_CHARGE);
+        Audio_PlaySfx(NA_SE_SMART_BOMB_SHOT, sfxSource, playerId, &sBombFreqMod[playerId], &gDefaultMod,
+                      &sPlayerNoise[playerId].reverbAdd);
+        sBombState[playerId] = 2;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D144.s")
+void Audio_PlayBombExplodeSfx(u8 playerId, f32* sfxSource) {
+    u32 sfxId;
+
+    if (sBombState[playerId] != 0) {
+        switch (sBombType[playerId]) {
+            case 1:
+                sfxId = NA_SE_BOMB_EXPLODE1;
+                break;
+            case 2:
+                sfxId = NA_SE_BOMB_EXPLODE2;
+                break;
+            default:
+            case 0:
+                sfxId = NA_SE_BOMB_EXPLODE0;
+                break;
+        }
+        Audio_KillSfxByTokenAndId(playerId, NA_SE_SMART_BOMB_SHOT);
+        AUDIO_PLAY_SFX(sfxId, sfxSource, playerId);
+        sBombState[playerId] = 0;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D194.s")
+void Audio_StartEngineNoise(f32* sfxSource) {
+    u32 sfxId = (gPlayer[0].sfx.levelType == LEVELTYPE_SPACE) ? NA_SE_ARWING_ENGINE_FS : NA_SE_ARWING_ENGINE_FG;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D200.s")
+    AUDIO_PLAY_SFX(sfxId, sfxSource, 0);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D334.s")
+void Audio_StopEngineNoise(f32* sfxSource) {
+    u32 sfxId = (gPlayer[0].sfx.levelType == LEVELTYPE_SPACE) ? NA_SE_ARWING_ENGINE_FS : NA_SE_ARWING_ENGINE_FG;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D3D8.s")
+    Audio_KillSfxBySourceAndId(sfxSource, sfxId);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D438.s")
+void Audio_SetSfxSpeedModulation(f32 vel) {
+    f32 speed = ABS(vel);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D448.s")
+    if (speed < 6.0f) {
+        speed = 6.0f;
+    } else if (speed > 30.0f) {
+        speed = 30.0f;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D47C.s")
+    sSfxFreqMod = ((speed - 18.0f) / 24.0f) + 1.0f;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D4E4.s")
+#ifdef IMPORT_DATA
+void Audio_SetTransposeAndPlaySfx(f32* sfxSource, u32 sfxId, u8 semitones) {
+    f32 semitoneMods[] = {
+        1.0f, 1.059f, 1.122f, 1.189f, 1.26f, 1.335f, 1.414f, 1.498f, 1.587f, 1.682f, 1.782f, 1.888f, 2.0f,
+    };
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D558.s")
+    if (semitones > 12) {
+        semitones = 12;
+    }
+    Audio_SetModulationAndPlaySfx(sfxSource, sfxId, semitoneMods[semitones]);
+}
+#else
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/Audio_SetTransposeAndPlaySfx.s")
+#endif
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D670.s")
+void Audio_SetModulationAndPlaySfx(f32* sfxSource, u32 sfxId, f32 freqMod) {
+    sSfxFreqMod = freqMod;
+    Audio_PlaySfx(sfxId, sfxSource, 0, &sSfxFreqMod, &gDefaultMod, &gDefaultReverb);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D714.s")
+void Audio_PlaySfxModulated(f32* sfxSource, u32 sfxId) {
+    Audio_PlaySfx(sfxId, sfxSource, 0, &sSfxFreqMod, &sSfxVolMod, &gDefaultReverb);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D7B8.s")
+void Audio_SetSfxMapModulation(u8 fMod) {
+    if (fMod < 12) {
+        sSfxFreqMod = (fMod / 11.0f) + 0.5f;
+    } else {
+        sSfxFreqMod = 1.5f;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D8E0.s")
+void Audio_SetHeatAlarmParams(u8 shields, u8 heightParam) {
+    // height param is (s32) height / 100 - 1, clamped to [0, 5]
+    u8 alarmVolume;
+    u8 heightVolume;
+
+    // modifies tempo
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 2, 8 + (shields >> 2));
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 2, 8 + (shields >> 2));
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 2, 8 + (shields >> 2));
+
+    // modifies frequency
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 1, 19 - (heightParam * 3));
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 1, 19 - (heightParam * 3));
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 1, 19 - (heightParam * 3));
+
+    alarmVolume = 68 - (shields >> 3);
+    heightVolume = 80 - (heightParam * 10);
+    if (heightVolume > alarmVolume) {
+        alarmVolume = heightVolume;
+    }
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 3, alarmVolume);
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 3, alarmVolume);
+    AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 3, alarmVolume);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001D92C.s")
+void Audio_PlayEventSfx(f32* sfxSource, u16 eventSfxId) {
+    if ((sEventSfx[eventSfxId] & SFX_BANK_MASK) != (SFX_BANK_SYSTEM << SFX_BANK_SHIFT)) {
+        AUDIO_PLAY_SFX(sEventSfx[eventSfxId], sfxSource, 0);
+    } else {
+        AUDIO_PLAY_SFX(sEventSfx[eventSfxId], gDefaultSfxSource, 0);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DA18.s")
+void Audio_StopEventSfx(f32* sfxSource, u16 eventSfxId) {
+    if ((sEventSfx[eventSfxId] & SFX_BANK_MASK) != (SFX_BANK_SYSTEM << SFX_BANK_SHIFT)) {
+        Audio_KillSfxBySourceAndId(sfxSource, sEventSfx[eventSfxId]);
+    } else {
+        Audio_KillSfxBySourceAndId(gDefaultSfxSource, sEventSfx[eventSfxId]);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DAC8.s")
+void Audio_SetEnvSfxReverb(s8 reverb) {
+    sEnvReverb = reverb;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DC08.s")
+void Audio_SetBgmParam(s8 bgmParam) {
+    SEQCMD_SET_SEQPLAYER_IO(SEQ_PLAYER_BGM, 0, bgmParam);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DC64.s")
+void Audio_PlaySequence(u8 seqPlayId, u16 seqId, u8 fadeinTime, u8 bgmParam) {
+    SEQCMD_SET_SEQPLAYER_IO(seqPlayId, 0, bgmParam);
+    SEQCMD_PLAY_SEQUENCE(seqPlayId, fadeinTime, 0, seqId);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DCA4.s")
+void Audio_PlayFanfare(u16 seqId, u8 bgmVolume, u8 bgmFadeoutTime, u8 bgmFadeinTime) {
+    if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM) != NA_BGM_PLAYER_DOWN) {
+        Audio_SetSequenceFade(SEQ_PLAYER_BGM, 1, bgmVolume, bgmFadeoutTime);
+        SEQCMD_SETUP_RESTORE_SEQPLAYER_VOLUME(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM, bgmFadeinTime);
+        SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, seqId);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DD04.s")
+void Audio_PlayDeathSequence(void) {
+    u8 i;
+
+    if (sAudioSpecId == AUDIOSPEC_24) {
+        Audio_ClearVoice();
+        Audio_PlayMapMenuSfx(0);
+        AUDIO_PLAY_SFX(NA_SE_ARWING_EXPLOSION, gDefaultSfxSource, 4);
+        SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_BGM, 5, 30);
+        SEQCMD_SETUP_RESTORE_SEQPLAYER_VOLUME(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM, 30);
+        SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, NA_BGM_PLAYER_DOWN);
+    } else {
+        for (i = 0; i < 5; i++) {
+            Audio_KillSfxByBank(i);
+        }
+        AUDIOCMD_GLOBAL_UNMUTE(true);
+        AUDIO_PLAY_SFX(NA_SE_ARWING_EXPLOSION, gDefaultSfxSource, 4);
+        SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 0);
+        SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
+        SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM, 0, 0, NA_BGM_PLAYER_DOWN);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DD4C.s")
+void Audio_PlayPauseSfx(u8 active) {
+    if (active) {
+        AUDIO_PLAY_SFX(NA_SE_PAUSE_ON, gDefaultSfxSource, 4);
+        AUDIOCMD_GLOBAL_MUTE();
+    } else {
+        AUDIO_PLAY_SFX(NA_SE_PAUSE_ON, gDefaultSfxSource, 4);
+        AUDIOCMD_GLOBAL_UNMUTE(false);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DD78.s")
+void Audio_PlayMapMenuSfx(u8 active) {
+    if (active) {
+        AUDIO_PLAY_SFX(NA_SE_MAP_WINDOW_OPEN, gDefaultSfxSource, 4);
+        AUDIOCMD_GLOBAL_MUTE();
+    } else {
+        AUDIO_PLAY_SFX(NA_SE_MAP_WINDOW_CLOSE, gDefaultSfxSource, 4);
+        AUDIOCMD_GLOBAL_UNMUTE(false);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DDE8.s")
+void Audio_RestoreVolumeSettings(u8 audioType) {
+    s8 volume = ((sVolumeSettings[audioType] * 127) / 99) % 128U;
+    u8 i;
+
+    switch (audioType) {
+        case AUDIO_TYPE_MUSIC:
+            Audio_SetSequenceFade(SEQ_PLAYER_BGM, 0, volume, 1);
+            Audio_SetSequenceFade(SEQ_PLAYER_FANFARE, 0, volume, 1);
+            break;
+        case AUDIO_TYPE_SFX:
+            for (i = 0; i < 15; i++) {
+                AUDIOCMD_CHANNEL_SET_VOL(SEQ_PLAYER_SFX, (u32) i, volume / 127.0f);
+            }
+            break;
+        case AUDIO_TYPE_VOICE:
+            AUDIOCMD_CHANNEL_SET_VOL(SEQ_PLAYER_VOICE, 15, volume / 127.0f);
+            break;
+    }
+}
+
+void Audio_SetVolume(u8 audioType, u8 volume) {
+    if (volume > 99) {
+        volume = 99;
+    }
+    sVolumeSettings[audioType] = volume;
+    Audio_RestoreVolumeSettings(audioType);
+}
+
+void Audio_PlaySoundTest(u8 enable) {
+    switch (enable) {
+        case false:
+            AUDIO_PLAY_BGM(NA_BGM_SELECT);
+            Audio_PlayVoice(1);
+            Audio_KillSfxById(NA_SE_VOLUME_TEST);
+            Audio_KillSfxById(NA_SE_ARWING_ENGIN_GRD);
+            break;
+        case true:
+            AUDIO_PLAY_BGM(NA_BGM_VOLUME_TEST);
+            Audio_PlayVoice(2);
+            AUDIO_PLAY_SFX(NA_SE_VOLUME_TEST, gDefaultSfxSource, 0);
+            AUDIO_PLAY_SFX(NA_SE_ARWING_ENGIN_GRD, gDefaultSfxSource, 0);
+            break;
+    }
+}
+
+void Audio_PlaySequenceDistorted(u8 seqPlayId, u16 seqId, u16 distortion, u8 fadeinTime, u8 unused) {
+    u8 tempoDistortion = (distortion / 10);
+
+    Audio_PlaySequence(seqPlayId, seqId & ~SEQ_FLAG, 0, -1);
+    SEQCMD_SET_SEQPLAYER_FREQ(seqPlayId, fadeinTime, distortion);
+    SEQCMD_SCALE_TEMPO(seqPlayId, fadeinTime, tempoDistortion);
+}
+
+void Audio_PlaySoundTestTrack(u8 trackNumber) {
+    u16 seqId;
+    u8 bgmParam;
+
+    if ((trackNumber >= 45) && (trackNumber < 50)) {
+        SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1);
+        SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1);
+        sPlaylistIndex = trackNumber - 45;
+        sPlaylistCmdIndex = 0;
+        sPlaylistTimer = 0;
+    } else if (trackNumber >= 50) {
+        AUDIO_PLAY_SFX(NA_SE_ERROR, gDefaultSfxSource, 4);
+    } else {
+        sPlaylistIndex = 0xFF;
+        seqId = sSoundTestTracks[trackNumber].seqId & 0xFF;
+        bgmParam = sSoundTestTracks[trackNumber].bgmParam;
+        SEQCMD_STOP_SEQUENCE(D_800C6A70 ^ 1, 5);
+        Audio_PlaySequence(D_800C6A70, seqId, 0, bgmParam);
+        D_800C6A70 ^= 1;
+    }
+}
+
+void Audio_FadeOutAll(u8 fadeoutTime) {
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_BGM, fadeoutTime, 0);
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_FANFARE, fadeoutTime, 0);
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_SFX, fadeoutTime, 0);
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_VOICE, fadeoutTime, 0);
+}
+
+void Audio_KillAllSfx(void) {
+    u8 i;
+
+    for (i = 0; i < 5; i++) {
+        Audio_KillSfxByBank(i);
+    }
+}
+
+// Function doesn't exist in JP/US
+#ifdef VERSION_EU
+void Audio_SetVoiceLanguage(u8 language) {
+    gVoiceLanguage = language;
+
+    if (gVoiceLanguage == 0) {
+        Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1);
+    } else {
+        // 0x42 sets voice language to Lylat ?
+        Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO_LYLAT, -1, 1);
+    }
+}
+#endif
+
+void Audio_SetAudioSpec(u8 unused, u16 specParam) {
+    u8 sfxChannelLayout = ((specParam & 0xFF00) >> 8);
+    u8 specId = specParam & 0xFF;
+
+    SEQCMD_RESET_AUDIO_HEAP(sfxChannelLayout, specId);
+}
+
+// unused
+void Audio_PlayBgm(u16 seqId) {
+    SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM, 1, 0, seqId);
+}
+
+// Function is different from JP/US
+void Audio_InitSounds(void) {
+    Audio_ResetVoicesAndPlayers();
+    Audio_ResetSfxChannelState();
+    Audio_ResetActiveSequencesAndVolume();
+    Audio_ResetSfx();
+#ifdef VERSION_EU
+    AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(NA_BGM_VO_LYLAT, 0);
+#endif
+    Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1);
+    Audio_StartSequence(SEQ_PLAYER_SFX, NA_BGM_SE, -1, 10);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DEEC.s")
+// Function is different from JP/US
+void Audio_RestartSeqPlayers(void) {
+    s32 pad1;
+    s32 pad2;
+    u16 fadeIn = 1;
+
+#ifdef VERSION_EU
+    if (gVoiceLanguage == 0) {
+        Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1);
+    } else {
+        Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO_LYLAT, -1, 1);
+    }
+#else
+    Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1);
+#endif
+
+    if (sAudioSpecId == AUDIOSPEC_AQ) {
+        fadeIn = 360;
+    } else if (sAudioSpecId < AUDIOSPEC_23) {
+        fadeIn = 90;
+    }
+    Audio_StartSequence(SEQ_PLAYER_SFX, NA_BGM_SE, -1, fadeIn);
+    Audio_LoadInstruments();
+    Audio_LoadAquasSequence();
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_SFX, 0, 127);
+    SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_VOICE, 0, 127);
+    AudioThread_ScheduleProcessCmds();
+    AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
+    AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
+    AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
+    Audio_RestoreVolumeSettings(AUDIO_TYPE_MUSIC);
+    Audio_RestoreVolumeSettings(AUDIO_TYPE_SFX);
+    Audio_RestoreVolumeSettings(AUDIO_TYPE_VOICE);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/func_8001DF9C.s")
+void Audio_StartReset(u8 oldSpecId) {
+    if (oldSpecId == AUDIOSPEC_16) {
+        if ((sAudioSpecId == AUDIOSPEC_22) || (sAudioSpecId == AUDIOSPEC_23)) {
+            sAudioResetStatus = AUDIORESET_BLOCK;
+        }
+    } else if ((oldSpecId == AUDIOSPEC_28) && (sAudioSpecId == AUDIOSPEC_23)) {
+        sAudioResetStatus = AUDIORESET_BLOCK;
+    } else {
+        sAudioResetStatus = AUDIORESET_WAIT;
+    }
+    AUDIOCMD_GLOBAL_UNMUTE(true);
+    Audio_ResetVoicesAndPlayers();
+    Audio_ResetSfxChannelState();
+    Audio_ResetActiveSequences();
+    Audio_ResetSfx();
+}
+
+void Audio_Update(void) {
+    if (Audio_HandleReset() == AUDIORESET_READY) {
+        Audio_ProcessSfxRequests();
+        Audio_ProcessSeqCmds();
+        Audio_PlayAllSfx();
+        Audio_UpdatePlayerNoise();
+        Audio_UpdateVoice();
+        Audio_UpdateUnkVoiceParam();
+        Audio_UpdateActiveSequences();
+        Audio_UpdateDelayedSeqCmds();
+        AudioThread_ScheduleProcessCmds();
+    }
+    sAudioFrameCounter++;
+}
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_general/D_800C99E0.s")
diff --git a/srceu/audio/audio_heap.c b/srceu/audio/audio_heap.c
index d80417b21..640bb6996 100644
--- a/srceu/audio/audio_heap.c
+++ b/srceu/audio/audio_heap.c
@@ -1,67 +1,979 @@
-#include "common.h"
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BCE0.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BDA8.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BE94.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BF04.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BF84.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000BFDC.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C004.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C018.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C048.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C058.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C0B4.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C130.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C1AC.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C268.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000C324.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000CA00.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000CA58.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000CB64.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000CF38.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000D0FC.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000D174.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000D518.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DB64.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DBBC.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DC3C.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DC8C.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DCDC.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DD2C.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000DDC0.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000E054.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000E21C.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000E260.s")
-
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_heap/func_8000E2E8.s")
+// Version differences: AudioHeap_Init
+
+#include "sys.h"
+#include "sf64audio_provisional.h"
+
+extern u16 D_8014E320;
+extern s16 D_8014E324;
+
+void AudioHeap_InitSampleCaches(u32 persistentSampleCacheSize, u32 temporarySampleCacheSize);
+void func_800132C8(void);
+void func_80012894(void);
+void func_80011F2C(Note* note);
+void func_80012C20(Note* note);
+void func_8001459C(AudioListItem* list, AudioListItem* item);
+void func_800144C4(SequencePlayer* seqPlayer);
+void* AudioHeap_SearchRegularCaches(s32 tableType, s32 cache, s32 id);
+void AudioHeap_DiscardSampleCaches(void);
+void AudioHeap_Init(void);
+SampleCacheEntry* AudioHeap_AllocPersistentSampleCacheEntry(u32 size);
+SampleCacheEntry* AudioHeap_AllocTemporarySampleCacheEntry(s32 size);
+void AudioHeap_DiscardSampleCacheEntry(SampleCacheEntry* entry);
+void AudioHeap_UnapplySampleCache(SampleCacheEntry* entry, Sample* sample);
+
+void AudioHeap_ResetLoadStatus(void) {
+    s32 i;
+
+    for (i = 0; i < 64; i++) {
+        if (gFontLoadStatus[i] != 5) {
+            gFontLoadStatus[i] = 0;
+        }
+    }
+    for (i = 0; i < 64; i++) {
+        if (gSampleFontLoadStatus[i] != 5) {
+            gSampleFontLoadStatus[i] = 0;
+        }
+    }
+    for (i = 0; i < 256; i++) {
+        if (gSeqLoadStatus[i] != 5) {
+            gSeqLoadStatus[i] = 0;
+        }
+    }
+}
+
+void AudioHeap_DiscardFont(s32 fontId) {
+    Note* note;
+    s32 i;
+
+    for (i = 0; i < gNumNotes; i++) {
+        note = &gNotes[i];
+        if (fontId == note->playbackState.fontId) {
+            if ((note->playbackState.unk_04 == 0) && (note->playbackState.priority != 0)) {
+                note->playbackState.parentLayer->enabled = false;
+                note->playbackState.parentLayer->finished = true;
+            }
+            func_80011F2C(note);
+            func_80012C20(note);
+            func_8001459C(&gNoteFreeLists.disabled, &note->listItem);
+        }
+    }
+}
+
+void AudioHeap_DiscardSequence(s32 seqId) {
+    s32 i;
+
+    for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+        if (gSeqPlayers[i].enabled && gSeqPlayers[i].seqId == seqId) {
+            func_800144C4(&gSeqPlayers[i]);
+        }
+    }
+}
+
+void* AudioHeap_AllocZeroed(AudioAllocPool* pool, u32 size) {
+    u32 aligned = ALIGN16(size);
+    u8* ramAddr = pool->curRamAddr;
+    u8* ptr;
+
+    if (pool->startRamAddr + pool->size >= pool->curRamAddr + aligned) {
+        pool->curRamAddr += aligned;
+        for (ptr = ramAddr; ptr < pool->curRamAddr; ptr++) {
+            *ptr = 0;
+        }
+    } else {
+        return NULL;
+    }
+    pool->numEntries++;
+    return ramAddr;
+}
+
+void* AudioHeap_Alloc(AudioAllocPool* pool, u32 size) {
+    u32 aligned = ALIGN16(size);
+    u8* ramAddr = pool->curRamAddr;
+
+    if ((pool->startRamAddr + pool->size) >= (pool->curRamAddr + aligned)) {
+        pool->curRamAddr += aligned;
+    } else {
+        return NULL;
+    }
+    pool->numEntries++;
+    return ramAddr;
+}
+
+void AudioHeap_InitPool(AudioAllocPool* pool, void* ramAddr, u32 size) {
+    pool->curRamAddr = pool->startRamAddr = (u8*) ALIGN16((u32) ramAddr);
+    pool->size = size - ((u32) ramAddr & 0xF);
+    pool->numEntries = 0;
+}
+
+void AudioHeap_InitPersistentCache(AudioPersistentCache* persistent) {
+    persistent->pool.numEntries = 0;
+    persistent->numEntries = 0;
+    persistent->pool.curRamAddr = persistent->pool.startRamAddr;
+}
+
+void AudioHeap_InitTemporaryCache(AudioTemporaryCache* temporary) {
+    temporary->pool.numEntries = 0;
+    temporary->pool.curRamAddr = temporary->pool.startRamAddr;
+    temporary->nextSide = 0;
+    temporary->entries[0].ramAddr = temporary->pool.startRamAddr;
+    temporary->entries[1].ramAddr = temporary->pool.startRamAddr + temporary->pool.size;
+    temporary->entries[0].id = -1;
+    temporary->entries[1].id = -1;
+}
+
+void AudioHeap_ResetPool(AudioAllocPool* pool) {
+    pool->numEntries = 0;
+    pool->curRamAddr = pool->startRamAddr;
+}
+
+void AudioHeap_InitMainPools(s32 initPoolSize) {
+    AudioHeap_InitPool(&gInitPool, gAudioHeap, initPoolSize);
+    AudioHeap_InitPool(&gSessionPool, gAudioHeap + initPoolSize, gAudioHeapSize - initPoolSize);
+}
+
+void AudioHeap_InitSessionPools(AudioSessionPoolSplit* split) {
+    gSessionPool.curRamAddr = gSessionPool.startRamAddr;
+    AudioHeap_InitPool(&gMiscPool, AudioHeap_Alloc(&gSessionPool, split->miscPoolSize), split->miscPoolSize);
+    AudioHeap_InitPool(&gCachePool, AudioHeap_Alloc(&gSessionPool, split->cachePoolSize), split->cachePoolSize);
+}
+
+void AudioHeap_InitCachePools(AudioCachePoolSplit* split) {
+    gCachePool.curRamAddr = gCachePool.startRamAddr;
+    AudioHeap_InitPool(&gPersistentCommonPool, AudioHeap_Alloc(&gCachePool, split->persistentCommonPoolSize),
+                       split->persistentCommonPoolSize);
+    AudioHeap_InitPool(&gTemporaryCommonPool, AudioHeap_Alloc(&gCachePool, split->temporaryCommonPoolSize),
+                       split->temporaryCommonPoolSize);
+}
+
+void AudioHeap_InitPersistentPoolsAndCaches(AudioCommonPoolSplit* split) {
+    gPersistentCommonPool.curRamAddr = gPersistentCommonPool.startRamAddr;
+    AudioHeap_InitPool(&gSeqCache.persistent.pool, AudioHeap_Alloc(&gPersistentCommonPool, split->seqCacheSize),
+                       split->seqCacheSize);
+    AudioHeap_InitPool(&gFontCache.persistent.pool, AudioHeap_Alloc(&gPersistentCommonPool, split->fontCacheSize),
+                       split->fontCacheSize);
+    AudioHeap_InitPool(&gSampleBankCache.persistent.pool,
+                       AudioHeap_Alloc(&gPersistentCommonPool, split->sampleBankCacheSize), split->sampleBankCacheSize);
+    AudioHeap_InitPersistentCache(&gSeqCache.persistent);
+    AudioHeap_InitPersistentCache(&gFontCache.persistent);
+    AudioHeap_InitPersistentCache(&gSampleBankCache.persistent);
+}
+
+void AudioHeap_InitTemporaryPoolsAndCaches(AudioCommonPoolSplit* split) {
+    gTemporaryCommonPool.curRamAddr = gTemporaryCommonPool.startRamAddr;
+    AudioHeap_InitPool(&gSeqCache.temporary.pool, AudioHeap_Alloc(&gTemporaryCommonPool, split->seqCacheSize),
+                       split->seqCacheSize);
+    AudioHeap_InitPool(&gFontCache.temporary.pool, AudioHeap_Alloc(&gTemporaryCommonPool, split->fontCacheSize),
+                       split->fontCacheSize);
+    AudioHeap_InitPool(&gSampleBankCache.temporary.pool,
+                       AudioHeap_Alloc(&gTemporaryCommonPool, split->sampleBankCacheSize), split->sampleBankCacheSize);
+    AudioHeap_InitTemporaryCache(&gSeqCache.temporary);
+    AudioHeap_InitTemporaryCache(&gFontCache.temporary);
+    AudioHeap_InitTemporaryCache(&gSampleBankCache.temporary);
+}
+
+void* AudioHeap_AllocCached(s32 tableType, s32 size, s32 cache, s32 id) {
+    AudioCache* loadedCache;
+    AudioTemporaryCache* temporaryCache;
+    AudioAllocPool* temporaryPool;
+    void* persistentRamAddr;
+    void* temporaryRamAddr;
+    u8 loadStatusEntry0;
+    u8 loadStatusEntry1;
+    s32 i;
+    u8* loadStatus;
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            loadedCache = &gSeqCache;
+            loadStatus = gSeqLoadStatus;
+            break;
+        case FONT_TABLE:
+            loadedCache = &gFontCache;
+            loadStatus = gFontLoadStatus;
+            break;
+        case SAMPLE_TABLE:
+            loadedCache = &gSampleBankCache;
+            loadStatus = gSampleFontLoadStatus;
+            break;
+    }
+    if (cache == CACHE_TEMPORARY) {
+        temporaryCache = &loadedCache->temporary;
+        temporaryPool = &temporaryCache->pool;
+        if (loadedCache->temporary.entries[0].id == -1) {
+            loadStatusEntry0 = 0;
+        } else {
+            loadStatusEntry0 = loadStatus[temporaryCache->entries[0].id];
+        }
+        if (temporaryCache->entries[1].id == -1) {
+            loadStatusEntry1 = 0;
+        } else {
+            loadStatusEntry1 = loadStatus[temporaryCache->entries[1].id];
+        }
+        if (tableType == FONT_TABLE) {
+            if (loadStatusEntry0 == 4) {
+                for (i = 0; i < gNumNotes; i++) {
+                    if ((gNotes[i].playbackState.fontId == temporaryCache->entries[0].id) &&
+                        gNotes[i].noteSubEu.bitField0.enabled) {
+                        break;
+                    }
+                }
+                if (i == gNumNotes) {
+                    if (gFontLoadStatus[temporaryCache->entries[0].id] != 5) {
+                        gFontLoadStatus[temporaryCache->entries[0].id] = 3;
+                    }
+                    loadStatusEntry0 = 3;
+                }
+            }
+            if (loadStatusEntry1 == 4) {
+                for (i = 0; i < gNumNotes; i++) {
+                    if ((gNotes[i].playbackState.fontId == temporaryCache->entries[1].id) &&
+                        gNotes[i].noteSubEu.bitField0.enabled) {
+                        break;
+                    }
+                }
+                if (i == gNumNotes) {
+                    if (gFontLoadStatus[temporaryCache->entries[1].id] != 5) {
+                        gFontLoadStatus[temporaryCache->entries[1].id] = 3;
+                    }
+                    loadStatusEntry1 = 3;
+                }
+            }
+        }
+        if (loadStatusEntry0 == 0) {
+            temporaryCache->nextSide = 0;
+        } else if (loadStatusEntry1 == 0) {
+            temporaryCache->nextSide = 1;
+        } else if ((loadStatusEntry0 == 3) && (loadStatusEntry1 == 3)) {
+            // Use the opposite side from last time.
+        } else if (loadStatusEntry0 == 3) {
+            temporaryCache->nextSide = 0;
+        } else if (loadStatusEntry1 == 3) {
+            temporaryCache->nextSide = 1;
+        } else {
+            // Check if there is a side which isn't in active use, if so, evict that one.
+            if (tableType == SEQUENCE_TABLE) {
+                if (loadStatusEntry0 == 2) {
+                    for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+                        if (gSeqPlayers[i].enabled && (gSeqPlayers[i].seqId == temporaryCache->entries[0].id)) {
+                            break;
+                        }
+                    }
+                    if (i == 4) {
+                        temporaryCache->nextSide = 0;
+                        goto block_85;
+                    }
+                }
+                if (loadStatusEntry1 == 2) {
+                    for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+                        if (gSeqPlayers[i].enabled && (gSeqPlayers[i].seqId == temporaryCache->entries[1].id)) {
+                            break;
+                        }
+                    }
+                    if (i == 4) {
+                        temporaryCache->nextSide = 1;
+                        goto block_85;
+                    }
+                }
+            } else if (tableType == FONT_TABLE) {
+                if (loadStatusEntry0 == 2) {
+                    for (i = 0; i < gNumNotes; i++) {
+                        if ((gNotes[i].playbackState.fontId == temporaryCache->entries[0].id) &&
+                            gNotes[i].noteSubEu.bitField0.enabled) {
+                            break;
+                        }
+                    }
+
+                    if (i == gNumNotes) {
+                        temporaryCache->nextSide = 0;
+                        goto block_85;
+                    }
+                }
+                if (loadStatusEntry1 == 2) {
+                    for (i = 0; i < gNumNotes; i++) {
+                        if ((gNotes[i].playbackState.fontId == temporaryCache->entries[1].id) &&
+                            gNotes[i].noteSubEu.bitField0.enabled) {
+                            break;
+                        }
+                    }
+                    if (i == gNumNotes) {
+                        temporaryCache->nextSide = 1;
+                        goto block_85;
+                    }
+                }
+            }
+            // No such luck. Evict the side that wasn't chosen last time, except
+            // if it is being loaded into.
+            if (temporaryCache->nextSide == 0) {
+                if (loadStatusEntry0 == 1) {
+                    if (loadStatusEntry1 == 1) {
+                        goto block_84;
+                    }
+                    temporaryCache->nextSide = 1;
+                }
+                goto block_85;
+            }
+            if (loadStatusEntry1 == 1) {
+                if (loadStatusEntry0 == 1) {
+                    goto block_84;
+                }
+                temporaryCache->nextSide = 0;
+                goto block_85;
+            block_84:
+                return NULL;
+            }
+        }
+    block_85:
+
+        if (temporaryCache->entries[temporaryCache->nextSide].id != -1) {
+            loadStatus[temporaryCache->entries[temporaryCache->nextSide].id] = 0;
+            if (tableType == FONT_TABLE) {
+                AudioHeap_DiscardFont(temporaryCache->entries[temporaryCache->nextSide].id);
+            }
+        }
+        switch (temporaryCache->nextSide) {
+            case 0:
+                temporaryCache->entries[0].ramAddr = temporaryPool->startRamAddr;
+                temporaryCache->entries[0].id = id;
+                temporaryCache->entries[0].size = size;
+                temporaryPool->curRamAddr = &temporaryPool->startRamAddr[size];
+                if ((temporaryCache->entries[1].id != -1) &&
+                    (temporaryCache->entries[1].ramAddr < temporaryPool->curRamAddr)) {
+                    loadStatus[temporaryCache->entries[1].id] = 0;
+                    switch (tableType) {
+                        case SEQUENCE_TABLE:
+                            AudioHeap_DiscardSequence(temporaryCache->entries[1].id);
+                            break;
+                        case FONT_TABLE:
+                            AudioHeap_DiscardFont(temporaryCache->entries[1].id);
+                            break;
+                    }
+                    temporaryCache->entries[1].id = -1;
+                    temporaryCache->entries[1].ramAddr = &temporaryPool->startRamAddr[temporaryPool->size];
+                }
+                temporaryRamAddr = temporaryCache->entries[0].ramAddr;
+                break;
+            case 1:
+                temporaryCache->entries[1].ramAddr =
+                    (((u32) &temporaryPool->startRamAddr[temporaryPool->size] - size) & ~0xF);
+                temporaryCache->entries[1].id = id;
+                temporaryCache->entries[1].size = size;
+                if ((temporaryCache->entries[0].id != -1) &&
+                    (temporaryCache->entries[1].ramAddr < temporaryPool->curRamAddr)) {
+                    loadStatus[temporaryCache->entries[0].id] = 0;
+                    switch (tableType) {
+                        case SEQUENCE_TABLE:
+                            AudioHeap_DiscardSequence(temporaryCache->entries[0].id);
+                            break;
+                        case FONT_TABLE:
+                            AudioHeap_DiscardFont(temporaryCache->entries[0].id);
+                            break;
+                    }
+                    temporaryCache->entries[0].id = -1;
+                    temporaryPool->curRamAddr = temporaryPool->startRamAddr;
+                }
+                temporaryRamAddr = temporaryCache->entries[1].ramAddr;
+                break;
+            default:
+                return NULL;
+        }
+        temporaryCache->nextSide ^= 1;
+        return temporaryRamAddr;
+    }
+    persistentRamAddr = AudioHeap_Alloc(&loadedCache->persistent.pool, size);
+    loadedCache->persistent.entries[loadedCache->persistent.numEntries].ramAddr = persistentRamAddr;
+    if (persistentRamAddr == NULL) {
+        switch (cache) {
+            case CACHE_EITHER:
+                return AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id);
+            case CACHE_TEMPORARY:
+            case CACHE_PERSISTENT:
+                return NULL;
+        }
+    }
+    loadedCache->persistent.entries[loadedCache->persistent.numEntries].id = id;
+    loadedCache->persistent.entries[loadedCache->persistent.numEntries].size = size;
+    return loadedCache->persistent.entries[loadedCache->persistent.numEntries++].ramAddr;
+}
+
+void* AudioHeap_SearchCaches(s32 tableType, s32 cache, s32 id) {
+    void* ramAddr;
+
+    // Always search the permanent cache in addition to the regular ones.
+    ramAddr = AudioHeap_SearchPermanentCache(tableType, id);
+    if (ramAddr != NULL) {
+        return ramAddr;
+    }
+    if (cache == CACHE_PERMANENT) {
+        return NULL;
+    }
+    return AudioHeap_SearchRegularCaches(tableType, cache, id);
+}
+
+void* AudioHeap_SearchRegularCaches(s32 tableType, s32 cache, s32 id) {
+    u32 i;
+    AudioCache* loadedCache;
+    AudioTemporaryCache* temporary;
+    AudioPersistentCache* persistent;
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            loadedCache = &gSeqCache;
+            break;
+
+        case FONT_TABLE:
+            loadedCache = &gFontCache;
+            break;
+
+        case SAMPLE_TABLE:
+            loadedCache = &gSampleBankCache;
+            break;
+    }
+
+    temporary = &loadedCache->temporary;
+    if (cache == CACHE_TEMPORARY) {
+        if (temporary->entries[0].id == id) {
+            temporary->nextSide = 1;
+            return temporary->entries[0].ramAddr;
+        } else if (temporary->entries[1].id == id) {
+            temporary->nextSide = 0;
+            return temporary->entries[1].ramAddr;
+        } else {
+            return NULL;
+        }
+    }
+
+    persistent = &loadedCache->persistent;
+    for (i = 0; i < persistent->numEntries; i++) {
+        if (persistent->entries[i].id == id) {
+            return persistent->entries[i].ramAddr;
+        }
+    }
+
+    if (cache == CACHE_EITHER) {
+        return AudioHeap_SearchCaches(tableType, CACHE_TEMPORARY, id);
+    }
+    return NULL;
+}
+
+void func_8000CB64(f32 p, f32 q, u16* out) {
+    // With the bug below fixed, this mysterious unused function computes two recurrences
+    // out[0..7] = a_i, out[8..15] = b_i, where
+    // a_{-2} = b_{-1} = 262159 = 2^18 + 15
+    // a_{-1} = b_{-2} = 0
+    // a_i = q * a_{i-1} + p * a_{i-2}
+    // b_i = q * b_{i-1} + p * b_{i-2}
+    // These grow exponentially if p < -1 or p + |q| > 1.
+    s32 i;
+    f32 tmp[16];
+
+    tmp[0] = (f32) (q * 262159.0f);
+    tmp[8] = (f32) (p * 262159.0f);
+    tmp[1] = (f32) ((q * p) * 262159.0f);
+    tmp[9] = (f32) (((p * p) + q) * 262159.0f);
+
+    for (i = 2; i < 8; i++) {
+        //! @bug value should be stored to tmp[i] and tmp[8 + i], otherwise we read
+        //! garbage in later loop iterations.
+        out[i] = q * tmp[i - 2] + p * tmp[i - 1];
+        out[8 + i] = q * tmp[6 + i] + p * tmp[7 + i];
+    }
+
+    for (i = 0; i < 16; i++) {
+        out[i] = tmp[i];
+    }
+}
+
+void AudioHeap_UpdateReverbs(void) {
+    s32 i;
+    s32 count;
+    s32 reverbIndex;
+
+    if (gAudioBufferParams.count == 2) {
+        count = 2;
+    } else {
+        count = 1;
+    }
+    for (reverbIndex = 0; reverbIndex < gNumSynthReverbs; reverbIndex++) {
+        for (i = 0; i < count; i++) {
+            gSynthReverbs[reverbIndex].decayRatio -= gSynthReverbs[reverbIndex].decayRatio / 3;
+        }
+    }
+}
+
+void AudioHeap_ClearCurrentAiBuffer(void) {
+    s32 i;
+    s32 index = gCurAiBuffIndex;
+
+    gAiBuffLengths[index] = gAudioBufferParams.minAiBufferLength;
+
+    for (i = 0; i < AIBUF_LEN; i++) {
+        gAiBuffers[index][i] = 0;
+    }
+}
+
+s32 AudioHeap_ResetStep(void) {
+    s32 i;
+    s32 j;
+    s32 sp24;
+
+    if (gAudioBufferParams.count == 2) {
+        sp24 = 2;
+    } else {
+        sp24 = 1;
+    }
+    switch (gAudioResetStep) {
+        case 5:
+            for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+                func_800144C4(&gSeqPlayers[i]);
+            }
+            gResetFadeoutFramesLeft = 4 / sp24;
+            gAudioResetStep--;
+            break;
+        case 4:
+            if (gResetFadeoutFramesLeft != 0) {
+                gResetFadeoutFramesLeft--;
+                AudioHeap_UpdateReverbs();
+            } else {
+                for (i = 0; i < gNumNotes; i++) {
+                    if (gNotes[i].noteSubEu.bitField0.enabled && (gNotes[i].playbackState.adsr.state != 0)) {
+                        gNotes[i].playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
+                        gNotes[i].playbackState.adsr.action.asByte |= 0x10;
+                    }
+                }
+
+                gResetFadeoutFramesLeft = 16 / sp24;
+                gAudioResetStep--;
+            }
+            break;
+        case 3:
+            if (gResetFadeoutFramesLeft != 0) {
+                gResetFadeoutFramesLeft--;
+                AudioHeap_UpdateReverbs();
+            } else {
+                for (i = 0; i < 3; i++) {
+                    for (j = 0; j < AIBUF_LEN; j++) {
+                        gAiBuffers[i][j] = 0;
+                    }
+                }
+                gResetFadeoutFramesLeft = 4 / sp24;
+                gAudioResetStep--;
+                break; // needed to match
+            }
+            break;
+        case 2:
+            AudioHeap_ClearCurrentAiBuffer();
+            if (gResetFadeoutFramesLeft != 0) {
+                gResetFadeoutFramesLeft--;
+            } else {
+                gAudioResetStep--;
+                AudioHeap_DiscardSampleCaches();
+            }
+            break;
+        case 1:
+            AudioHeap_Init();
+            gAudioResetStep = 0;
+            for (i = 0; i < 3; i++) {
+                gAiBuffLengths[i] = gAudioBufferParams.maxAiBufferLength;
+                for (j = 0; j < AIBUF_LEN; j++) {
+                    gAiBuffers[i][j] = 0;
+                }
+            }
+            break;
+    }
+    if (gAudioResetStep < 3) {
+        return 0;
+    }
+    return 1;
+}
+
+// function is different in EU
+void AudioHeap_Init(void) {
+    s32 i;
+    s32 j;
+    AudioSpec* spec = &gAudioSpecs[gAudioSpecId];
+    ReverbSettings* settings;
+    SynthesisReverb* reverb;
+    s16* ramAddr;
+    u32 persistentSize;
+    u32 temporarySize;
+    u32 cachePoolSize;
+    u32 miscPoolSize;
+
+    gSampleDmaCount = 0;
+    gAudioBufferParams.samplingFrequency = spec->samplingFrequency;
+    gAudioBufferParams.aiSamplingFrequency = osAiSetFrequency(gAudioBufferParams.samplingFrequency);
+    gAudioBufferParams.samplesPerFrameTarget = ALIGN16(gAudioBufferParams.samplingFrequency / gRefreshRate);
+
+    gAudioBufferParams.minAiBufferLength = gAudioBufferParams.samplesPerFrameTarget - 0x10;
+    gAudioBufferParams.maxAiBufferLength = gAudioBufferParams.samplesPerFrameTarget + 0x10;
+
+    gAudioBufferParams.ticksPerUpdate = ((gAudioBufferParams.samplesPerFrameTarget + 0x10) / 192) + 1;
+    gAudioBufferParams.samplesPerTick =
+        (gAudioBufferParams.samplesPerFrameTarget / gAudioBufferParams.ticksPerUpdate) & ~7;
+    gAudioBufferParams.samplesPerTickMax = gAudioBufferParams.samplesPerTick + 8;
+    gAudioBufferParams.samplesPerTickMin = gAudioBufferParams.samplesPerTick - 8;
+    gAudioBufferParams.resampleRate = 32000.0f / (s32) gAudioBufferParams.samplingFrequency;
+    gAudioBufferParams.ticksPerUpdateInvScaled = (3.0f / 2560.0f) / gAudioBufferParams.ticksPerUpdate;
+    gAudioBufferParams.ticksPerUpdateInv = 1.0f / gAudioBufferParams.ticksPerUpdate;
+    gNumNotes = spec->numNotes;
+    D_8014E320 = spec->unk_14;
+    gMaxTempo = (u16) ((gAudioBufferParams.ticksPerUpdate * 2880000.0f / gSeqTicksPerBeat) / gMaxTempoTvTypeFactors);
+    gAudioBufferParams.count = spec->numBuffers;
+    gAudioBufferParams.samplesPerFrameTarget *= gAudioBufferParams.count;
+    gAudioBufferParams.maxAiBufferLength *= gAudioBufferParams.count;
+    gAudioBufferParams.minAiBufferLength *= gAudioBufferParams.count;
+    gAudioBufferParams.ticksPerUpdate *= gAudioBufferParams.count;
+#ifdef VERSION_US // probably JP too
+    if (gAudioBufferParams.count >= 2) {
+        gAudioBufferParams.maxAiBufferLength -= 0x10;
+    }
+#endif
+    gMaxAudioCmds = (gNumNotes * 20 * gAudioBufferParams.ticksPerUpdate) + (spec->numReverbs * 32) + 480;
+    persistentSize = spec->persistentSeqCacheSize + spec->persistentFontCacheSize +
+                     spec->persistentSampleBankCacheSize + spec->persistentSampleCacheSize + 0x10;
+    temporarySize = spec->temporarySeqCacheSize + spec->temporaryFontCacheSize + spec->temporarySampleBankCacheSize +
+                    spec->temporarySampleCacheSize + 0x10;
+    cachePoolSize = persistentSize + temporarySize;
+    miscPoolSize = gSessionPool.size - cachePoolSize - 0x100;
+    gSessionPoolSplit.miscPoolSize = miscPoolSize;
+    gSessionPoolSplit.cachePoolSize = cachePoolSize;
+    AudioHeap_InitSessionPools(&gSessionPoolSplit);
+    gCachePoolSplit.persistentCommonPoolSize = persistentSize;
+    gCachePoolSplit.temporaryCommonPoolSize = temporarySize;
+    AudioHeap_InitCachePools(&gCachePoolSplit);
+    gPersistentCommonPoolSplit.seqCacheSize = spec->persistentSeqCacheSize;
+    gPersistentCommonPoolSplit.fontCacheSize = spec->persistentFontCacheSize;
+    gPersistentCommonPoolSplit.sampleBankCacheSize = spec->persistentSampleBankCacheSize;
+    AudioHeap_InitPersistentPoolsAndCaches(&gPersistentCommonPoolSplit);
+    gTemporaryCommonPoolSplit.seqCacheSize = spec->temporarySeqCacheSize;
+    gTemporaryCommonPoolSplit.fontCacheSize = spec->temporaryFontCacheSize;
+    gTemporaryCommonPoolSplit.sampleBankCacheSize = spec->temporarySampleBankCacheSize;
+    AudioHeap_InitTemporaryPoolsAndCaches(&gTemporaryCommonPoolSplit);
+    AudioHeap_InitSampleCaches(spec->persistentSampleCacheSize, spec->temporarySampleCacheSize);
+    AudioHeap_ResetLoadStatus();
+    gNotes = AudioHeap_AllocZeroed(&gMiscPool, gNumNotes * sizeof(Note));
+    func_800132C8();
+    func_80012894();
+    gNoteSubsEu = AudioHeap_AllocZeroed(&gMiscPool, gAudioBufferParams.ticksPerUpdate * gNumNotes * sizeof(NoteSubEu));
+    for (i = 0; i != 2; i++) {
+        gAbiCmdBuffs[i] = AudioHeap_AllocZeroed(&gMiscPool, gMaxAudioCmds * 8);
+    }
+    for (i = 0; i < ARRAY_COUNT(gSynthReverbs); i++) {
+        gSynthReverbs[i].useReverb = 0;
+    }
+    gNumSynthReverbs = spec->numReverbs;
+    for (i = 0; i < gNumSynthReverbs; i++) {
+        settings = &spec->reverbSettings[i];
+        reverb = &gSynthReverbs[i];
+        reverb->downsampleRate = settings->downsampleRate;
+        reverb->windowSize = settings->windowSize * 64;
+        reverb->decayRatio = settings->decayRatio;
+        reverb->leakRtL = settings->leakRtL;
+        reverb->leakLtR = settings->leakLtR;
+        reverb->useReverb = 8;
+
+        reverb->leftRingBuf = AudioHeap_AllocZeroed(&gMiscPool, reverb->windowSize * 2);
+        reverb->rightRingBuf = AudioHeap_AllocZeroed(&gMiscPool, reverb->windowSize * 2);
+        reverb->nextRingBufPos = 0;
+        reverb->unk_20 = 0;
+        reverb->curFrame = 0;
+
+        reverb->bufSizePerChan = reverb->windowSize;
+        reverb->framesToIgnore = 2;
+        if (reverb->downsampleRate != 1) {
+            reverb->resampleFlags = 1;
+            reverb->unk_0A = (0x8000 / reverb->downsampleRate);
+            reverb->unk_30 = AudioHeap_AllocZeroed(&gMiscPool, 0x20);
+            reverb->unk_34 = AudioHeap_AllocZeroed(&gMiscPool, 0x20);
+            reverb->unk_38 = AudioHeap_AllocZeroed(&gMiscPool, 0x20);
+            reverb->unk_3C = AudioHeap_AllocZeroed(&gMiscPool, 0x20);
+            for (j = 0; j < gAudioBufferParams.ticksPerUpdate; j++) {
+                ramAddr = AudioHeap_AllocZeroed(&gMiscPool, 0x300);
+                reverb->items[0][j].toDownsampleLeft = ramAddr;
+                reverb->items[0][j].toDownsampleRight = ramAddr + 192;
+                ramAddr = AudioHeap_AllocZeroed(&gMiscPool, 0x300);
+                reverb->items[1][j].toDownsampleLeft = ramAddr;
+                reverb->items[1][j].toDownsampleRight = ramAddr + 192;
+            }
+        }
+    }
+    AudioLoad_InitSampleDmaBuffers(gNumNotes);
+    gPreloadSampleStackTop = 0;
+    D_8014E324 = 0x1000;
+    osWritebackDCacheAll();
+}
+
+void* AudioHeap_SearchPermanentCache(s32 tableType, s32 id) {
+    s32 i;
+
+    for (i = 0; i < gPermanentPool.pool.numEntries; i++) {
+        if ((tableType == gPermanentPool.entry[i].tableType) && (id == gPermanentPool.entry[i].id)) {
+            return gPermanentPool.entry[i].ramAddr;
+        }
+    }
+    return NULL;
+}
+
+u8* AudioHeap_AllocPermanent(s32 tableType, s32 id, u32 size) {
+    u8* ramAddr;
+    s32 index = gPermanentPool.pool.numEntries;
+
+    ramAddr = AudioHeap_Alloc(&gPermanentPool.pool, size);
+    gPermanentPool.entry[index].ramAddr = ramAddr;
+
+    if (ramAddr == NULL) {
+        return NULL;
+    }
+
+    gPermanentPool.entry[index].tableType = tableType;
+    gPermanentPool.entry[index].id = id;
+    gPermanentPool.entry[index].size = size;
+
+#ifdef AVOID_UB
+    return ramAddr;
+#endif
+}
+
+void* AudioHeap_AllocTemporarySampleCache(s32 size, s32 fontId, s32 sampleAddr, s8 medium) {
+    SampleCacheEntry* entry = AudioHeap_AllocTemporarySampleCacheEntry(size);
+
+    if (entry != NULL) {
+        entry->sampleBankId = fontId;
+        entry->sampleAddr = sampleAddr;
+        entry->origMedium = medium;
+        return entry->allocatedAddr;
+    } else {
+        return NULL;
+    }
+}
+
+void* AudioHeap_AllocPersistentSampleCache(s32 size, s32 fontId, s32 sampleAddr, s8 medium) {
+    SampleCacheEntry* entry = AudioHeap_AllocPersistentSampleCacheEntry(size);
+
+    if (entry != NULL) {
+        entry->sampleBankId = fontId;
+        entry->sampleAddr = sampleAddr;
+        entry->origMedium = medium;
+        return entry->allocatedAddr;
+    } else {
+        return NULL;
+    }
+}
+
+void* AudioHeap_AllocPersistentSampleCache_2(u32 size, s32 fontId, s32 sampleAddr, s8 medium) {
+    SampleCacheEntry* entry = AudioHeap_AllocPersistentSampleCacheEntry(size);
+
+    if (entry != NULL) {
+        entry->sampleBankId = fontId;
+        entry->sampleAddr = sampleAddr;
+        entry->origMedium = medium;
+        return entry->allocatedAddr;
+    } else {
+        return NULL;
+    }
+}
+
+void AudioHeap_InitSampleCaches(u32 persistentSampleCacheSize, u32 temporarySampleCacheSize) {
+    void* ramAddr;
+
+    ramAddr = AudioHeap_Alloc(&gPersistentCommonPool, persistentSampleCacheSize);
+    if (ramAddr == NULL) {
+        gPersistentSampleCache.pool.size = 0;
+    } else {
+        AudioHeap_InitPool(&gPersistentSampleCache.pool, ramAddr, persistentSampleCacheSize);
+    }
+    ramAddr = AudioHeap_Alloc(&gTemporaryCommonPool, temporarySampleCacheSize);
+    if (ramAddr == NULL) {
+        gTemporarySampleCache.pool.size = 0;
+    } else {
+        AudioHeap_InitPool(&gTemporarySampleCache.pool, ramAddr, temporarySampleCacheSize);
+    }
+    gPersistentSampleCache.numEntries = 0;
+    gTemporarySampleCache.numEntries = 0;
+}
+
+SampleCacheEntry* AudioHeap_AllocTemporarySampleCacheEntry(s32 size) {
+    u8* endRamAddr;
+    u8* old;
+    u8* ramAddr;
+    s32 i;
+    s32 entryIdx;
+    SampleCacheEntry* entry;
+    AudioPreloadReq* preload;
+    AudioSampleCache* cache;
+    u8* allocAfter;
+    u8* startRamAddr;
+    u8* allocBefore;
+
+    cache = &gTemporarySampleCache;
+    allocBefore = cache->pool.curRamAddr;
+    ramAddr = AudioHeap_Alloc(&cache->pool, size);
+    if (ramAddr == NULL) {
+        old = cache->pool.curRamAddr;
+        cache->pool.curRamAddr = cache->pool.startRamAddr;
+        ramAddr = AudioHeap_Alloc(&cache->pool, size);
+        if (ramAddr == NULL) {
+            cache->pool.curRamAddr = old;
+            return NULL;
+        }
+        allocBefore = cache->pool.startRamAddr;
+    }
+    allocAfter = cache->pool.curRamAddr;
+    entryIdx = -1;
+    for (i = 0; i < gPreloadSampleStackTop; i++) {
+        preload = &gPreloadSampleStack[i];
+        if (preload->isFree == 0) {
+            startRamAddr = preload->ramAddr;
+            endRamAddr = preload->ramAddr + preload->sample->size - 1;
+            if ((endRamAddr < allocBefore) && (startRamAddr < allocBefore)) {
+                continue;
+            }
+            if ((endRamAddr >= allocAfter) && (startRamAddr >= allocAfter)) {
+                continue;
+            }
+            preload->isFree = 1;
+        }
+    }
+    for (i = 0; i < cache->numEntries; i++) {
+        if (cache->entries[i].inUse == 0) {
+            continue;
+        }
+        startRamAddr = cache->entries[i].allocatedAddr;
+        endRamAddr = startRamAddr + cache->entries[i].size - 1;
+        if ((endRamAddr < allocBefore) && (startRamAddr < allocBefore)) {
+            continue;
+        }
+        if ((endRamAddr >= allocAfter) && (startRamAddr >= allocAfter)) {
+            continue;
+        }
+        AudioHeap_DiscardSampleCacheEntry(&cache->entries[i]);
+        if (entryIdx == -1) {
+            entryIdx = i;
+        }
+    }
+    if (entryIdx == -1) {
+        entryIdx = cache->numEntries++;
+    }
+    entry = &cache->entries[entryIdx];
+    entry->inUse = 1;
+    entry->allocatedAddr = ramAddr;
+    entry->size = size;
+    return entry;
+}
+
+void AudioHeap_DiscardSampleCacheEntry(SampleCacheEntry* entry) {
+    s32 fondId;
+    s32 numFonts;
+    Drum* drum;
+    Instrument* instrument;
+    s32 instId;
+    s32 drumId;
+    s32 sampleBankId2;
+    s32 sampleBankId1;
+
+    numFonts = gSoundFontTable->base.numEntries;
+    for (fondId = 0; fondId < numFonts; fondId++) {
+        sampleBankId1 = gSoundFontList[fondId].sampleBankId1;
+        sampleBankId2 = gSoundFontList[fondId].sampleBankId2;
+        if (((sampleBankId1 != SAMPLES_NONE) && (entry->sampleBankId == sampleBankId1)) ||
+            ((sampleBankId2 != SAMPLES_NONE) && (entry->sampleBankId == sampleBankId2)) ||
+            (entry->sampleBankId == SAMPLES_SFX)) {
+            if ((AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, fondId) != NULL) &&
+                ((gFontLoadStatus[fondId] > 1) != 0)) {
+                for (instId = 0; instId < gSoundFontList[fondId].numInstruments; instId++) {
+                    instrument = Audio_GetInstrument(fondId, instId);
+                    if (instrument != NULL) {
+                        if (instrument->normalRangeLo != 0) {
+                            AudioHeap_UnapplySampleCache(entry, instrument->lowPitchTunedSample.sample);
+                        }
+                        if (instrument->normalRangeHi != 0x7F) {
+                            AudioHeap_UnapplySampleCache(entry, instrument->highPitchTunedSample.sample);
+                        }
+                        AudioHeap_UnapplySampleCache(entry, instrument->normalPitchTunedSample.sample);
+                    }
+                }
+                for (drumId = 0; drumId < gSoundFontList[fondId].numDrums; drumId++) {
+                    drum = Audio_GetDrum(fondId, drumId);
+                    if (drum != NULL) {
+                        AudioHeap_UnapplySampleCache(entry, drum->tunedSample.sample);
+                    }
+                }
+            }
+        }
+    }
+}
+
+void AudioHeap_UnapplySampleCache(SampleCacheEntry* entry, Sample* sample) {
+    if ((sample != NULL) && (sample->sampleAddr == entry->allocatedAddr)) {
+        sample->sampleAddr = entry->sampleAddr;
+        sample->medium = entry->origMedium;
+    }
+}
+
+SampleCacheEntry* AudioHeap_AllocPersistentSampleCacheEntry(u32 size) {
+    AudioSampleCache* cache = &gPersistentSampleCache;
+    SampleCacheEntry* entry;
+    u8* ramAddr;
+
+    ramAddr = AudioHeap_Alloc(&cache->pool, size);
+    if (ramAddr == NULL) {
+        return NULL;
+    }
+    entry = &cache->entries[cache->numEntries];
+    entry->inUse = 1;
+    entry->allocatedAddr = ramAddr;
+    entry->size = size;
+    cache->numEntries++;
+    return entry;
+}
+
+void AudioHeap_DiscardSampleCaches(void) {
+    s32 fontId;
+    s32 i;
+    s32 numFonts = gSoundFontTable->base.numEntries;
+    s32 pad;
+    s32 sampleBankId2;
+    s32 sampleBankId1;
+    s32 instId;
+    s32 drumId;
+    Drum* drum;
+    Instrument* instrument;
+    SampleCacheEntry* entry;
+
+#ifdef AVOID_UB
+    entry = gPersistentSampleCache.entries;
+#endif
+
+    for (fontId = 0; fontId < numFonts; fontId++) {
+        sampleBankId1 = gSoundFontList[fontId].sampleBankId1;
+        sampleBankId2 = gSoundFontList[fontId].sampleBankId2;
+        if (((sampleBankId1 != SAMPLES_NONE_U) && (entry->sampleBankId == sampleBankId1)) ||
+            ((sampleBankId2 != SAMPLES_NONE) && (entry->sampleBankId == sampleBankId2)) ||
+            (entry->sampleBankId == SAMPLES_SFX)) {
+            if ((AudioHeap_SearchCaches(FONT_TABLE, CACHE_PERMANENT, fontId) != NULL) &&
+                ((gFontLoadStatus[fontId] > 1) != 0)) {
+                for (i = 0; i < gPersistentSampleCache.numEntries; i++) {
+                    entry = &gPersistentSampleCache.entries[i];
+                    for (instId = 0; instId < gSoundFontList[fontId].numInstruments; instId++) {
+                        instrument = Audio_GetInstrument(fontId, instId);
+                        if (instrument != NULL) {
+                            if (instrument->normalRangeLo != 0) {
+                                AudioHeap_UnapplySampleCache(entry, instrument->lowPitchTunedSample.sample);
+                            }
+                            if (instrument->normalRangeHi != 0x7F) {
+                                AudioHeap_UnapplySampleCache(entry, instrument->highPitchTunedSample.sample);
+                            }
+                            AudioHeap_UnapplySampleCache(entry, instrument->normalPitchTunedSample.sample);
+                        }
+                    }
+                    for (drumId = 0; drumId < gSoundFontList[fontId].numDrums; drumId++) {
+                        drum = Audio_GetDrum(fontId, drumId);
+                        if (drum != NULL) {
+                            AudioHeap_UnapplySampleCache(entry, drum->tunedSample.sample);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/srceu/audio/audio_load.c b/srceu/audio/audio_load.c
index e37dcd741..6d3224c56 100644
--- a/srceu/audio/audio_load.c
+++ b/srceu/audio/audio_load.c
@@ -1,97 +1,1512 @@
-#include "common.h"
+#include "sys.h"
+#include "sf64dma.h"
+#include "sf64audio_provisional.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000E4F0.s")
+extern AudioSlowLoadBuffer gSlowLoads;
+extern s32 D_80148EF0;
+extern s32 D_80157BC0;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000E5F8.s")
+void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData);
+s32 AudioLoad_DiscardFont(s32 fontId);
+void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2);
+void* AudioLoad_SyncLoadSeq(s32 seqId);
+void* AudioLoad_SyncLoadFont(s32 fontId);
+void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate);
+s32 AudioLoad_GetLoadTableIndex(s32 tableType, u32 entryId);
+void* AudioLoad_SearchCaches(s32 tableType, s32 id);
+AudioTable* AudioLoad_GetLoadTable(s32 tableType);
+void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium);
+void AudioLoad_SyncDmaUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam);
+s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size,
+                  OSMesgQueue* retQueue, s32 medium, const char* dmaType);
+s32 func_8000FC7C(u32 unkMediumParam, u32* addrPtr);
+void func_8000FC8C(s32 unkParam2, u32 addr, u8* ramAddr, u32 size);
+void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue);
+Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId);
+void AudioLoad_ProcessSlowLoads(s32 resetStatus);
+void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size);
+void AudioLoad_DmaSlowCopyUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam);
+AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 medium, s32 nChunks,
+                                         OSMesgQueue* retQueue, u32 retMesg);
+void AudioLoad_ProcessAsyncLoads(s32 resetStatus);
+void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus);
+void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size);
+void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam);
+void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBankRelocInfo* relocInfo);
+s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync);
+s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus);
+void func_8000FCDC(s32 unkParam2, u32 addr, u8* ramAddr, u32 size);
+s32 func_8000FCCC(u32 unkMediumParam, u32* addrPtr);
+void* AudioLoad_SyncLoadSampleBank(u32 sampleBankId, s32* outMedium);
+void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad);
+void func_8001689C(void);
+void AudioLoad_InitTable(AudioTable* table, u8* romAddr, u16 unkMediumParam);
+void func_800144C4(SequencePlayer* seqPlayer);
+void func_800167E4(s32 arg0);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000E930.s")
+void AudioLoad_DecreaseSampleDmaTtls(void) {
+    SampleDma* dma;
+    u32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000EC04.s")
+    for (i = 0; i < gSampleDmaListSize1; i++) {
+        dma = &gSampleDmas[i];
+        if (dma->ttl != 0) {
+            dma->ttl--;
+            if (dma->ttl == 0) {
+                dma->reuseIndex = gSampleDmaReuseQueue1WrPos;
+                gSampleDmaReuseQueue1[gSampleDmaReuseQueue1WrPos] = i;
+                gSampleDmaReuseQueue1WrPos++;
+            }
+        }
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000EC64.s")
+    for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) {
+        dma = &gSampleDmas[i];
+        if (dma->ttl != 0) {
+            dma->ttl--;
+            if (dma->ttl == 0) {
+                dma->reuseIndex = gSampleDmaReuseQueue2WrPos;
+                gSampleDmaReuseQueue2[gSampleDmaReuseQueue2WrPos] = i;
+                gSampleDmaReuseQueue2WrPos++;
+            }
+        }
+    }
+    D_80157BC0 = 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000ED10.s")
+#ifndef IMPORT_RODATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/AudioLoad_DmaSampleData.s")
+#else
+void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, u32 arg2, u8* dmaIndexRef, s32 medium) {
+    u32 i;
+    SampleDma* dma;
+    bool hasDma = false;
+    s32 bufferPos;
+    u32 dmaDevAddr;
+    s32 sp38;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000ED78.s")
+    if ((arg2 != 0) || (*dmaIndexRef >= gSampleDmaListSize1)) {
+        for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) {
+            dma = &gSampleDmas[i];
+            bufferPos = devAddr - dma->devAddr;
+            if ((0 <= bufferPos) && (bufferPos <= (dma->size - size))) {
+                if ((dma->ttl == 0) && (gSampleDmaReuseQueue2RdPos != gSampleDmaReuseQueue2WrPos)) {
+                    if (dma->reuseIndex != gSampleDmaReuseQueue2RdPos) {
+                        gSampleDmaReuseQueue2[dma->reuseIndex] = gSampleDmaReuseQueue2[gSampleDmaReuseQueue2RdPos];
+                        gSampleDmas[gSampleDmaReuseQueue2[gSampleDmaReuseQueue2RdPos]].reuseIndex = dma->reuseIndex;
+                    }
+                    gSampleDmaReuseQueue2RdPos++;
+                }
+                dma->ttl = 60;
+                *dmaIndexRef = i;
+                return &dma->ramAddr[devAddr - dma->devAddr];
+            }
+        }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000EE64.s")
+        if ((gSampleDmaReuseQueue2RdPos != gSampleDmaReuseQueue2WrPos) && (arg2 != 0)) {
+            sp38 = gSampleDmaReuseQueue2[gSampleDmaReuseQueue2RdPos];
+            gSampleDmaReuseQueue2RdPos++;
+            dma = &gSampleDmas[sp38];
+            hasDma = true;
+        }
+    } else {
+        dma = &gSampleDmas[*dmaIndexRef];
+        for (i = 0; i < gSampleDmaListSize1; i++) {
+            bufferPos = devAddr - dma->devAddr;
+            if ((0 <= bufferPos) && (bufferPos <= (dma->size - size))) {
+                if (dma->ttl == 0) {
+                    if (dma->reuseIndex != gSampleDmaReuseQueue1RdPos) {
+                        gSampleDmaReuseQueue1[dma->reuseIndex] = gSampleDmaReuseQueue1[gSampleDmaReuseQueue1RdPos];
+                        gSampleDmas[gSampleDmaReuseQueue1[gSampleDmaReuseQueue1RdPos]].reuseIndex = dma->reuseIndex;
+                    }
+                    if (1) {}
+                    gSampleDmaReuseQueue1RdPos++;
+                }
+                dma->ttl = 2;
+                return &dma->ramAddr[devAddr - dma->devAddr];
+            }
+            dma = &gSampleDmas[i];
+        }
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000EF34.s")
+    if (hasDma == 0) {
+        sp38 = gSampleDmaReuseQueue1[gSampleDmaReuseQueue1RdPos];
+        gSampleDmaReuseQueue1RdPos++;
+        dma = &gSampleDmas[sp38];
+    }
+    dmaDevAddr = devAddr & ~0xF;
+    dma->ttl = 2;
+    dma->devAddr = dmaDevAddr;
+    dma->sizeUnused = dma->size;
+    AudioLoad_Dma(&gCurAudioFrameDmaIoMsgBuf[gCurAudioFrameDmaCount++], OS_MESG_PRI_NORMAL, OS_READ, dmaDevAddr,
+                  dma->ramAddr, dma->size, &gCurAudioFrameDmaQueue, medium, "SUPERDMA");
+    *dmaIndexRef = sp38;
+    return devAddr - dmaDevAddr + dma->ramAddr;
+}
+#endif
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000EF98.s")
+void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
+    s32 i;
+    u8* dma;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F060.s")
+    gSampleDmaBuffSize = 0x2D0;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F0C8.s")
+    for (i = 0; i < (3 * gNumNotes * gAudioBufferParams.count); i++) {
+        dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize);
+        gSampleDmas[gSampleDmaCount].ramAddr = dma;
+        if (dma == NULL) {
+            break;
+        }
+        gSampleDmas[gSampleDmaCount].devAddr = 0;
+        gSampleDmas[gSampleDmaCount].sizeUnused = 0;
+        gSampleDmas[gSampleDmaCount].unused = 0;
+        gSampleDmas[gSampleDmaCount].ttl = 0;
+        gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize;
+        gSampleDmaCount++;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F1A8.s")
+    for (i = 0; i < gSampleDmaCount; i++) {
+        gSampleDmaReuseQueue1[i] = i;
+        gSampleDmas[i].reuseIndex = i;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F250.s")
+    for (i = gSampleDmaCount; i < 0x100; i++) {
+        gSampleDmaReuseQueue1[i] = 0;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F270.s")
+    gSampleDmaReuseQueue1RdPos = 0;
+    gSampleDmaReuseQueue1WrPos = gSampleDmaCount;
+    gSampleDmaListSize1 = gSampleDmaCount;
+    gSampleDmaBuffSize = 0x200;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F3A4.s")
+    for (i = 0; i < gNumNotes; i++) {
+        dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize);
+        gSampleDmas[gSampleDmaCount].ramAddr = dma;
+        if (dma == NULL) {
+            break;
+        }
+        gSampleDmas[gSampleDmaCount].devAddr = 0;
+        gSampleDmas[gSampleDmaCount].sizeUnused = 0;
+        gSampleDmas[gSampleDmaCount].unused = 0;
+        gSampleDmas[gSampleDmaCount].ttl = 0;
+        gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize;
+        gSampleDmaCount++;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F3D8.s")
+    for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) {
+        gSampleDmaReuseQueue2[i - gSampleDmaListSize1] = i;
+        gSampleDmas[i].reuseIndex = i - gSampleDmaListSize1;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F4C8.s")
+    for (i = gSampleDmaCount; i < 0x100; i++) {
+        gSampleDmaReuseQueue2[i] = gSampleDmaListSize1;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F5A4.s")
+    gSampleDmaReuseQueue2RdPos = 0;
+    gSampleDmaReuseQueue2WrPos = gSampleDmaCount - gSampleDmaListSize1;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F7E0.s")
+// Updates the audiotable entries with their relative ROM addresses
+void AudioLoad_InitTable(AudioTable* table, u8* romAddr, u16 unkMediumParam) {
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F81C.s")
+    table->base.unkMediumParam = unkMediumParam;
+    table->base.romAddr = (uintptr_t) romAddr;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F870.s")
+    for (i = 0; i < table->base.numEntries; i++) {
+        if ((table->entries[i].size != 0) && (table->entries[i].medium == MEDIUM_CART)) {
+            table->entries[i].romAddr += (uintptr_t) romAddr;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000F8B4.s")
+void* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outFontId) {
+    s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)];
+    s32 fontId = 0xFF;
+    s32 numFonts = gSeqFontTable[index++];
+    void* soundFontData;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FA78.s")
+    for (numFonts; numFonts > 0; numFonts--) {
+        fontId = gSeqFontTable[index++];
+        soundFontData = AudioLoad_SyncLoadFont(fontId);
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FBA0.s")
+    *outFontId = fontId;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FBF8.s")
+    return soundFontData;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FCCC.s")
+void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 flags) {
+    s32 pad;
+    u32 fontId;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FCDC.s")
+    seqId = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId);
+    if (flags & 2) {
+        AudioLoad_SyncLoadSeqFonts(seqId, &fontId);
+    }
+    if (flags & 1) {
+        AudioLoad_SyncLoadSeq(seqId);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FCF0.s")
+s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
+    u8* sampleAddr;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FD10.s")
+    if ((sample->isRelocated == true) && (sample->medium != MEDIUM_RAM)) {
+        sampleAddr = AudioHeap_AllocPersistentSampleCache(sample->size, fontId, sample->sampleAddr, sample->medium);
+        if (sampleAddr == NULL) {
+            return -1;
+        }
+        if (sample->medium == MEDIUM_UNK) {
+            AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size,
+                                       gSampleBankTable->base.unkMediumParam);
+        } else {
+            AudioLoad_SyncDma(sample->sampleAddr, sampleAddr, sample->size, sample->medium);
+        }
+        sample->medium = MEDIUM_RAM;
+        sample->sampleAddr = sampleAddr;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8000FFEC.s")
+s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
+    Instrument* instrument;
+    Drum* drum;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8001001C.s")
+    if (instId < 0x7F) {
+        instrument = Audio_GetInstrument(fontId, instId);
+        if (instrument == NULL) {
+            return -1;
+        }
+        if (instrument->normalRangeLo != 0) {
+            AudioLoad_SyncLoadSample(instrument->lowPitchTunedSample.sample, fontId);
+        }
+        AudioLoad_SyncLoadSample(instrument->normalPitchTunedSample.sample, fontId);
+        if (instrument->normalRangeHi != 0x7F) {
+            AudioLoad_SyncLoadSample(instrument->highPitchTunedSample.sample, fontId);
+        }
+    } else if (instId == 0x7F) {
+        drum = Audio_GetDrum(fontId, drumId);
+        if (drum == NULL) {
+            return -1;
+        }
+        AudioLoad_SyncLoadSample(drum->tunedSample.sample, fontId);
+        return 0;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_800105D0.s")
+void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
+    if (AudioLoad_AsyncLoadInner(SAMPLE_TABLE, AudioLoad_GetLoadTableIndex(SAMPLE_TABLE, sampleBankId), nChunks,
+                                 retData, retQueue) == NULL) {
+        osSendMesg(retQueue, NULL, OS_MESG_NOBLOCK);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010780.s")
+void AudioLoad_AsyncLoadSeq(s32 seqId, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
+    s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
+    s32 fontsLeft = gSeqFontTable[index++];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_800107EC.s")
+    for (fontsLeft; fontsLeft > 0; fontsLeft--) {
+        AudioLoad_AsyncLoadInner(FONT_TABLE, AudioLoad_GetLoadTableIndex(FONT_TABLE, gSeqFontTable[index++]), nChunks,
+                                 retData, retQueue);
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010854.s")
+u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
+    s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_800109E0.s")
+    *outNumFonts = gSeqFontTable[index++];
+    if (*outNumFonts == 0) {
+        return NULL;
+    } else {
+        return &gSeqFontTable[index];
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010A64.s")
+void AudioLoad_DiscardSeqFonts(s32 seqId) {
+    s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
+    s32 numFonts = gSeqFontTable[index++];
+    u32 fontId;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010ABC.s")
+    while (numFonts > 0) {
+        numFonts--;
+        fontId = AudioLoad_GetLoadTableIndex(FONT_TABLE, gSeqFontTable[index++]);
+        if (AudioHeap_SearchPermanentCache(1, fontId) == NULL) {
+            AudioLoad_DiscardFont(fontId);
+            if (gFontLoadStatus[fontId] != 5) {
+                gFontLoadStatus[fontId] = 0;
+                if (1) {}
+            }
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010BD4.s")
+s32 AudioLoad_DiscardFont(s32 fontId) {
+    AudioCache* cache = &gFontCache;
+    AudioTemporaryCache* tcache;
+    AudioPersistentCache* pcache;
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010C44.s")
+    tcache = &cache->temporary;
+    if (tcache->entries[0].id == fontId) {
+        tcache->entries[0].id = -1;
+    } else if (tcache->entries[1].id == fontId) {
+        tcache->entries[1].id = -1;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010EE0.s")
+    pcache = &cache->persistent;
+    for (i = 0; i < pcache->numEntries; i++) {
+        if (pcache->entries[i].id == fontId) {
+            pcache->entries[i].id = -1;
+        }
+    }
+    AudioHeap_DiscardFont(fontId);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010F70.s")
+void AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) {
+    AudioLoad_SyncInitSeqPlayerInternal(playerIdx, seqId, arg2);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80010FC8.s")
+void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
+    s32 index;
+    s32 numFonts;
+    u8* seqData;
+    s32 fontId;
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80011104.s")
+    seqId = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_80011530.s")
+    func_800144C4(&gSeqPlayers[playerIdx]);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_800116F4.s")
+    index = *((u16*) gSeqFontTable + seqId);
+    numFonts = gSeqFontTable[index++];
+    fontId = 0xFF;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/func_8001173C.s")
+    for (numFonts; numFonts > 0; numFonts--) {
+        fontId = gSeqFontTable[index++];
+        AudioLoad_SyncLoadFont(fontId);
+    }
+
+    seqData = AudioLoad_SyncLoadSeq(seqId);
+
+    func_800167E4(playerIdx);
+
+    gSeqPlayers[playerIdx].seqId = seqId;
+    gSeqPlayers[playerIdx].defaultFont = fontId;
+    gSeqPlayers[playerIdx].enabled = true;
+    gSeqPlayers[playerIdx].seqData = seqData;
+    gSeqPlayers[playerIdx].scriptState.pc = seqData;
+    gSeqPlayers[playerIdx].scriptState.depth = 0;
+    gSeqPlayers[playerIdx].delay = 0;
+    gSeqPlayers[playerIdx].finished = false;
+
+    for (i = 0; i < 16; i++) {
+        ;
+    }
+}
+
+void* AudioLoad_SyncLoadSeq(s32 seqId) {
+    s32 seqIdx = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId);
+    s32 didAllocate;
+
+    return AudioLoad_SyncLoad(0, seqIdx, &didAllocate);
+}
+
+void* AudioLoad_SyncLoadSampleBank(u32 sampleBankId, s32* outMedium) {
+    void* ramAddr;
+    AudioTable* sampleBankTable = AudioLoad_GetLoadTable(2);
+    s32 cachePolicy;
+    s32 noLoad;
+
+    sampleBankId = AudioLoad_GetLoadTableIndex(SAMPLE_TABLE, sampleBankId);
+    ramAddr = AudioLoad_SearchCaches(2, sampleBankId);
+    if (ramAddr != NULL) {
+        if (gSampleFontLoadStatus[sampleBankId] != 5) {
+            gSampleFontLoadStatus[sampleBankId] = 2;
+        }
+        *outMedium = MEDIUM_RAM;
+        return ramAddr;
+    }
+
+    cachePolicy = sampleBankTable->entries[sampleBankId].cachePolicy;
+    if (cachePolicy == CACHEPOLICY_4) {
+        *outMedium = sampleBankTable->entries[sampleBankId].medium;
+        return sampleBankTable->entries[sampleBankId].romAddr;
+    }
+
+    ramAddr = AudioLoad_SyncLoad(2, sampleBankId, &noLoad);
+    if (ramAddr != NULL) {
+        *outMedium = MEDIUM_RAM;
+        return ramAddr;
+    }
+
+    *outMedium = sampleBankTable->entries[sampleBankId].medium;
+
+    return sampleBankTable->entries[sampleBankId].romAddr;
+}
+
+void* AudioLoad_SyncLoadFont(s32 fontId) {
+    void* fontData;
+    s32 sampleBankId1;
+    u32 sampleBankId2;
+    s32 didAllocate;
+    SampleBankRelocInfo relocInfo;
+
+    fontId = AudioLoad_GetLoadTableIndex(FONT_TABLE, fontId);
+
+    sampleBankId1 = gSoundFontList[fontId].sampleBankId1;
+    sampleBankId2 = gSoundFontList[fontId].sampleBankId2;
+
+    relocInfo.sampleBankId1 = sampleBankId1;
+    relocInfo.sampleBankId2 = sampleBankId2;
+
+    if (sampleBankId1 != SAMPLES_NONE) {
+        relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1);
+    } else {
+        relocInfo.baseAddr1 = NULL;
+    }
+
+    if (sampleBankId2 != SAMPLES_NONE) {
+        relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2);
+    } else {
+        relocInfo.baseAddr2 = NULL;
+    }
+
+    fontData = AudioLoad_SyncLoad(1, fontId, &didAllocate);
+    if (fontData == NULL) {
+        return NULL;
+    }
+
+    if (didAllocate == 1) {
+        AudioLoad_RelocateFontAndPreloadSamples(fontId, fontData, &relocInfo, AUDIOLOAD_SYNC);
+    }
+
+    return fontData;
+}
+
+void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
+    u32 size;
+    AudioTable* table;
+    u8* ramAddr;
+    u32 medium;
+    s32 loadStatus;
+    u32 romAddr;
+    s32 pad;
+    s32 cachePolicy;
+
+    ramAddr = AudioLoad_SearchCaches(tableType, id);
+    if (ramAddr != NULL) {
+        loadStatus = 2;
+        *didAllocate = false;
+    } else {
+        table = AudioLoad_GetLoadTable(tableType);
+        size = table->entries[id].size;
+        size = ALIGN16(size);
+        medium = table->entries[id].medium;
+        cachePolicy = table->entries[id].cachePolicy;
+        romAddr = table->entries[id].romAddr;
+
+        switch (cachePolicy) {
+            case CACHEPOLICY_0:
+                ramAddr = AudioHeap_AllocPermanent(tableType, id, size);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+
+            case CACHEPOLICY_1:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+
+            case CACHEPOLICY_2:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+
+            case CACHEPOLICY_3:
+            case CACHEPOLICY_4:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+        }
+
+        *didAllocate = true;
+
+        if (medium == MEDIUM_UNK) {
+            AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, table->base.unkMediumParam);
+        } else {
+            AudioLoad_SyncDma(romAddr, ramAddr, size, medium);
+        }
+        loadStatus = (cachePolicy == CACHEPOLICY_0) ? 5 : 2;
+    }
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            if (gSeqLoadStatus[id] != 5) {
+                gSeqLoadStatus[id] = loadStatus;
+            }
+            break;
+
+        case FONT_TABLE:
+            if (gFontLoadStatus[id] != 5) {
+                gFontLoadStatus[id] = loadStatus;
+            }
+            break;
+
+        case SAMPLE_TABLE:
+            if (gSampleFontLoadStatus[id] != 5) {
+                gSampleFontLoadStatus[id] = loadStatus;
+            }
+            break;
+    }
+    return ramAddr;
+}
+
+s32 AudioLoad_GetLoadTableIndex(s32 tableType, u32 entryId) {
+    AudioTable* table = AudioLoad_GetLoadTable(tableType);
+
+    if (table->entries[entryId].size == 0) {
+        entryId = table->entries[entryId].romAddr;
+    }
+    return entryId;
+}
+
+void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
+    void* ramAddr;
+
+    ramAddr = AudioHeap_SearchPermanentCache(tableType, id);
+    if (ramAddr != NULL) {
+        return ramAddr;
+    }
+
+    ramAddr = AudioHeap_SearchCaches(tableType, CACHE_EITHER, id);
+    if (ramAddr != NULL) {
+        return ramAddr;
+    }
+    return NULL;
+}
+
+AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
+    AudioTable* table;
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            table = gSequenceTable;
+            break;
+        case FONT_TABLE:
+            table = gSoundFontTable;
+            break;
+        case SAMPLE_TABLE:
+            table = gSampleBankTable;
+            break;
+        default:
+            table = NULL;
+            break;
+    }
+    return table;
+}
+
+void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) {
+    u32* fontDataPtrs = fontBaseAddr;
+    u32** drumDataPtrs = fontBaseAddr;
+    s32 numDrums;
+    Drum* drum;
+    Instrument* instrument;
+    u32 offset;
+    s32 i;
+    s32 numInstruments;
+
+    numDrums = gSoundFontList[fontId].numDrums;
+    numInstruments = gSoundFontList[fontId].numInstruments;
+
+    if ((fontDataPtrs[0] != 0) && (numDrums != 0)) {
+        fontDataPtrs[0] += fontBaseAddr;
+
+        for (i = 0; i < numDrums; i++) {
+            offset = *(*drumDataPtrs + i);
+            if (offset != 0) {
+                drum = offset += fontBaseAddr;
+                *(*drumDataPtrs + i) = drum;
+
+                if (!drum->isRelocated) {
+                    AudioLoad_RelocateSample(&drum->tunedSample, fontBaseAddr, relocData);
+                    offset = (u32) drum->envelope;
+                    drum->envelope = offset + fontBaseAddr;
+                    drum->isRelocated = true;
+                }
+            }
+        }
+    }
+
+    for (i = 1; i <= numInstruments; i++) {
+        if (fontDataPtrs[i] != 0) {
+
+            fontDataPtrs[i] += fontBaseAddr;
+
+            instrument = fontDataPtrs[i];
+            if (!instrument->isRelocated) {
+                if (instrument->normalRangeLo != 0) {
+                    AudioLoad_RelocateSample(&instrument->lowPitchTunedSample, fontBaseAddr, relocData);
+                }
+                AudioLoad_RelocateSample(&instrument->normalPitchTunedSample, fontBaseAddr, relocData);
+                if (instrument->normalRangeHi != 0x7F) {
+                    AudioLoad_RelocateSample(&instrument->highPitchTunedSample, fontBaseAddr, relocData);
+                }
+                offset = (u32) instrument->envelope;
+                instrument->envelope = offset + fontBaseAddr;
+                instrument->isRelocated = true;
+            }
+        }
+    }
+
+    gSoundFontList[fontId].drums = fontDataPtrs[0];
+    gSoundFontList[fontId].instruments = (u32) &fontDataPtrs[1];
+}
+
+#ifndef IMPORT_RODATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/AudioLoad_SyncDma.s")
+#else
+void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
+    size = ALIGN16(size);
+
+    osInvalDCache(ramAddr, size);
+
+    while (true) {
+        if (size < 0x400) {
+            break;
+        }
+        AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, 0x400, &gSyncDmaQueue, medium, "FastCopy");
+        MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
+        size -= 0x400;
+        devAddr += 0x400;
+        ramAddr += 0x400;
+    }
+
+    if (size != 0) {
+        AudioLoad_Dma(&gSyncDmaIoMsg, OS_MESG_PRI_HIGH, OS_READ, devAddr, ramAddr, size, &gSyncDmaQueue, medium,
+                      "FastCopy");
+        MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
+    }
+}
+#endif
+
+void AudioLoad_SyncDmaUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam) {
+    s32 addr = devAddr;
+
+    osInvalDCache(ramAddr, size);
+    func_8000FCDC(func_8000FCCC(unkMediumParam, &addr), addr, ramAddr, size);
+}
+
+s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size,
+                  OSMesgQueue* retQueue, s32 medium, const char* dmaType) {
+    OSPiHandle* handle;
+
+    switch (medium) {
+        case MEDIUM_CART:
+            handle = osCartRomInit();
+            break;
+        case MEDIUM_DISK_DRIVE:
+            handle = osDriveRomInit();
+            break;
+        default:
+            return 0;
+    }
+
+    if (size % 16) {
+        size = ALIGN16(size);
+    }
+
+    mesg->hdr.pri = priority;
+    mesg->hdr.retQueue = retQueue;
+    mesg->dramAddr = ramAddr;
+    mesg->devAddr = devAddr;
+    mesg->size = size;
+
+    handle->transferInfo.cmdType = 2;
+    osEPiStartDma(handle, mesg, direction);
+
+    return 0;
+}
+
+s32 func_8000FCCC(u32 unkMediumParam, u32* addrPtr) {
+    return 0;
+}
+
+void func_8000FCDC(s32 unkParam2, u32 addr, u8* ramAddr, u32 size) {
+}
+
+void AudioLoad_SyncLoadSimple(u32 tableType, u32 id) {
+    s32 didAllocate;
+
+    AudioLoad_SyncLoad(tableType, id, &didAllocate);
+}
+
+void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
+    u32 size;
+    AudioTable* table;
+    u8* ramAddr;
+    s32 medium;
+    s32 cachePolicy;
+    u32 romAddr;
+    s32 loadStatus;
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            if (gSeqLoadStatus[id] == LOAD_STATUS_IN_PROGRESS) {
+                return NULL;
+            }
+            break;
+
+        case FONT_TABLE:
+            if (gFontLoadStatus[id] == LOAD_STATUS_IN_PROGRESS) {
+                return NULL;
+            }
+            break;
+
+        case SAMPLE_TABLE:
+            if (gSampleFontLoadStatus[id] == LOAD_STATUS_IN_PROGRESS) {
+                return NULL;
+            }
+            break;
+    }
+
+    ramAddr = AudioLoad_SearchCaches(tableType, id);
+    if (ramAddr != NULL) {
+        loadStatus = LOAD_STATUS_COMPLETE;
+        osSendMesg(retQueue, (OSMesg) (retData << 0x18), OS_MESG_NOBLOCK);
+    } else {
+        table = AudioLoad_GetLoadTable(tableType);
+        size = table->entries[id].size;
+        size = ALIGN16(size);
+        medium = table->entries[id].medium;
+        cachePolicy = table->entries[id].cachePolicy;
+        romAddr = table->entries[id].romAddr;
+        loadStatus = LOAD_STATUS_COMPLETE;
+
+        switch (cachePolicy) {
+            case CACHEPOLICY_0:
+                ramAddr = AudioHeap_AllocPermanent(tableType, id, size);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                loadStatus = LOAD_STATUS_PERMANENTLY_LOADED;
+                break;
+
+            case CACHEPOLICY_1:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+
+            case CACHEPOLICY_2:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+
+            case CACHEPOLICY_3:
+            case CACHEPOLICY_4:
+                ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id);
+                if (ramAddr == NULL) {
+                    return ramAddr;
+                }
+                break;
+        }
+        AudioLoad_StartAsyncLoad(romAddr, ramAddr, size, medium, nChunks, retQueue,
+                                 (retData << 0x18) | (tableType << 0x10) | (id << 8) | loadStatus);
+        loadStatus = LOAD_STATUS_IN_PROGRESS;
+    }
+
+    switch (tableType) {
+        case SEQUENCE_TABLE:
+            if (gSeqLoadStatus[id] != 5) {
+                gSeqLoadStatus[id] = loadStatus;
+            }
+            break;
+
+        case FONT_TABLE:
+            if (gFontLoadStatus[id] != 5) {
+                gFontLoadStatus[id] = loadStatus;
+            }
+            break;
+
+        case SAMPLE_TABLE:
+            if (gSampleFontLoadStatus[id] != 5) {
+                gSampleFontLoadStatus[id] = loadStatus;
+            }
+            break;
+    }
+
+    return ramAddr;
+}
+
+void AudioLoad_ProcessLoads(s32 resetStatus) {
+    AudioLoad_ProcessSlowLoads(resetStatus);
+    AudioLoad_ProcessSamplePreloads(resetStatus);
+    AudioLoad_ProcessAsyncLoads(resetStatus);
+}
+
+void AudioLoad_Init(void) {
+#ifdef VERSION_EU
+    s32 pad2;
+#endif
+    s32 pad[14];
+    s32 i;
+    s32 j;
+    s32 numFonts;
+    s32 dwordsLeft;
+    u64* clearContext;
+    void* ramAddr;
+
+    gAudioResetTimer = 0;
+
+    for (i = 0; i < gAudioHeapSize / 8; i++) {
+        *((u64*) gAudioHeap + i) = 0;
+    }
+
+    clearContext = gAudioContextStart;
+    dwordsLeft = ((u32) gAudioContextEnd - (u32) gAudioContextStart) / 8;
+    for (; dwordsLeft >= 0; dwordsLeft--) {
+        *clearContext++ = 0;
+    }
+
+// 1000 is a conversion from seconds to milliseconds
+#ifdef VERSION_EU
+    gMaxTempoTvTypeFactors = 1000 * REFRESH_RATE_DEVIATION_PAL / REFRESH_RATE_PAL;
+    gRefreshRate = REFRESH_RATE_PAL;
+#else
+    switch (osTvType) {
+        case OS_TV_PAL:
+            gMaxTempoTvTypeFactors = 1000 * REFRESH_RATE_DEVIATION_PAL / REFRESH_RATE_PAL;
+            gRefreshRate = REFRESH_RATE_PAL;
+            break;
+
+        case OS_TV_MPAL:
+            gMaxTempoTvTypeFactors = 1000 * REFRESH_RATE_DEVIATION_MPAL / REFRESH_RATE_MPAL;
+            gRefreshRate = REFRESH_RATE_MPAL;
+            break;
+
+        case OS_TV_NTSC:
+        default:
+            gMaxTempoTvTypeFactors = 1000 * REFRESH_RATE_DEVIATION_NTSC / REFRESH_RATE_NTSC;
+            gRefreshRate = REFRESH_RATE_NTSC;
+            break;
+    }
+#endif
+
+    AudioThread_Init();
+
+    for (i = 0; i < 3; i++) {
+        gAiBuffLengths[i] = 0xA0;
+    }
+
+    gAudioTaskCountQ = 0;
+    gAudioTaskIndexQ = 0;
+    gCurAiBuffIndex = 0;
+    gAudioSoundMode = SOUNDMODE_STEREO;
+    gAudioCurTask = NULL;
+    gAudioRspTasks[0].task.t.data_size = 0;
+    gAudioRspTasks[1].task.t.data_size = 0;
+
+    osCreateMesgQueue(&gSyncDmaQueue, gSyncDmaMsg, 1);
+    osCreateMesgQueue(&gCurAudioFrameDmaQueue, gCurAudioFrameDmaMsg, 64);
+    osCreateMesgQueue(&gExternalLoadQueue, gExternalLoadMsg, 16);
+    osCreateMesgQueue(&gPreloadSampleQueue, gPreloadSampleMsg, 16);
+
+    gCurAudioFrameDmaCount = 0;
+    gSampleDmaCount = 0;
+
+    AudioHeap_InitMainPools(gInitPoolSize);
+
+    for (i = 0; i < 3; i++) {
+        gAiBuffers[i] = AudioHeap_Alloc(&gInitPool, AIBUF_SIZE);
+        for (j = 0; j < AIBUF_LEN; j++) {
+            gAiBuffers[i][j] = 0;
+        }
+    }
+
+    gAudioSpecId = AUDIOSPEC_CO;
+    gAudioResetStep = 1;
+    AudioHeap_ResetStep();
+
+    gSequenceTable = &gSeqTableInit;
+    gSoundFontTable = &gSoundFontTableInit;
+    gSampleBankTable = &gSampleBankTableInit;
+    gSeqFontTable = gSeqFontTableInit;
+    gNumSequences = gSequenceTable->base.numEntries;
+
+    AudioLoad_InitTable(gSequenceTable, SEGMENT_ROM_START(audio_seq), gSequenceMedium);
+    AudioLoad_InitTable(gSoundFontTable, SEGMENT_ROM_START(audio_bank), gSoundFontMedium);
+    AudioLoad_InitTable(gSampleBankTable, SEGMENT_ROM_START(audio_table), gSampleBankMedium);
+
+    numFonts = gSoundFontTable->base.numEntries;
+
+    gSoundFontList = AudioHeap_Alloc(&gInitPool, numFonts * sizeof(SoundFont));
+
+    for (i = 0; i < numFonts; i++) {
+        gSoundFontList[i].sampleBankId1 = (gSoundFontTable->entries[i].shortData1 >> 8) & 0xFF;
+        gSoundFontList[i].sampleBankId2 = gSoundFontTable->entries[i].shortData1 & 0xFF;
+        gSoundFontList[i].numInstruments = (gSoundFontTable->entries[i].shortData2 >> 8) & 0xFF;
+        gSoundFontList[i].numDrums = gSoundFontTable->entries[i].shortData2 & 0xFF;
+    }
+
+    ramAddr = AudioHeap_Alloc(&gInitPool, gPermanentPoolSize);
+    if (ramAddr == NULL) {
+        gPermanentPoolSize = 0;
+    }
+
+    AudioHeap_InitPool(&gPermanentPool.pool, ramAddr, gPermanentPoolSize);
+    func_8001689C();
+}
+
+s32 AudioLoad_SlowLoadSample(s32 fontId, u8 instId, s8* status) {
+    Sample* sample;
+    AudioSlowLoad* slowLoad;
+
+    sample = AudioLoad_GetFontSample(fontId, instId);
+    if (sample == NULL) {
+        *status = SLOW_LOAD_STATUS_0;
+        return -1;
+    }
+    if (sample->medium == MEDIUM_RAM) {
+        *status = SLOW_LOAD_STATUS_2;
+        return 0;
+    }
+
+    slowLoad = &gSlowLoads.slowLoad[gSlowLoads.unk_00];
+    if (slowLoad->state == SLOW_LOAD_DONE) {
+        slowLoad->state = SLOW_LOAD_WAITING;
+    }
+
+    slowLoad->sample = *sample;
+    slowLoad->status = status;
+
+    slowLoad->curRamAddr =
+        AudioHeap_AllocTemporarySampleCache(sample->size, fontId, sample->sampleAddr, sample->medium);
+
+    if (slowLoad->curRamAddr == NULL) {
+        if ((sample->medium == MEDIUM_UNK) || (sample->codec == 2)) {
+            *status = SLOW_LOAD_STATUS_0;
+            return -1;
+        } else {
+            *status = SLOW_LOAD_STATUS_3;
+            return -1;
+        }
+    }
+
+    slowLoad->state = SLOW_LOAD_START;
+    slowLoad->bytesRemaining = ALIGN16(sample->size);
+    slowLoad->ramAddr = slowLoad->curRamAddr;
+    slowLoad->curDevAddr = sample->sampleAddr;
+    slowLoad->medium = sample->medium;
+    slowLoad->seqOrFontId = fontId;
+    slowLoad->instId = instId;
+    gSlowLoads.unk_00 ^= 1;
+
+    return 0;
+}
+
+Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
+    Sample* sample;
+    Drum* drum;
+    Instrument* instrument;
+
+    if (instId < 0x80) {
+        instrument = Audio_GetInstrument(fontId, instId);
+        if (instrument == NULL) {
+            return NULL;
+        }
+        sample = instrument->normalPitchTunedSample.sample;
+    } else {
+        drum = Audio_GetDrum(fontId, instId - 0x80);
+        if (drum == NULL) {
+            return NULL;
+        }
+        sample = drum->tunedSample.sample;
+    }
+    return sample;
+}
+
+void AudioLoad_Stub_10800(void) {
+}
+
+void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) {
+    Sample* sample = AudioLoad_GetFontSample(slowLoad->seqOrFontId, slowLoad->instId);
+
+    if (sample != NULL) {
+        slowLoad->sample = *sample;
+        sample->sampleAddr = slowLoad->ramAddr;
+        sample->medium = MEDIUM_RAM;
+    }
+}
+
+void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
+    AudioTable* sampleBankTable = gSampleBankTable;
+    AudioSlowLoad* slowLoad;
+    s32 i;
+
+    for (i = 0; i < 2; i++) {
+        slowLoad = &gSlowLoads.slowLoad[i];
+        switch (slowLoad->state) {
+            case SLOW_LOAD_LOADING:
+                MQ_WAIT_FOR_MESG(&slowLoad->mesgQueue, NULL);
+                if (resetStatus != 0) {
+                    slowLoad->state = SLOW_LOAD_DONE;
+                    break;
+                }
+            case SLOW_LOAD_START:
+                slowLoad->state = SLOW_LOAD_LOADING;
+                if (slowLoad->bytesRemaining == 0) {
+                    AudioLoad_FinishSlowLoad(&gSlowLoads.slowLoad[i]);
+                    slowLoad->state = SLOW_LOAD_DONE;
+                    *slowLoad->status = SLOW_LOAD_STATUS_1;
+                } else if (slowLoad->bytesRemaining < 0x1000) {
+                    if (slowLoad->medium == MEDIUM_UNK) {
+                        AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr,
+                                                       slowLoad->bytesRemaining, sampleBankTable->base.unkMediumParam);
+                    } else {
+                        AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], slowLoad->bytesRemaining);
+                    }
+                    slowLoad->bytesRemaining = 0;
+                } else {
+                    if (slowLoad->medium == MEDIUM_UNK) {
+                        AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, 0x1000,
+                                                       sampleBankTable->base.unkMediumParam);
+                    } else {
+                        AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], 0x1000);
+                    }
+                    slowLoad->bytesRemaining -= 0x1000;
+                    slowLoad->curRamAddr += 0x1000;
+                    slowLoad->curDevAddr += 0x1000;
+                }
+                break;
+        }
+    }
+}
+
+#ifndef IMPORT_RODATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/AudioLoad_DmaSlowCopy.s")
+#else
+void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
+    osInvalDCache(slowLoad->curRamAddr, size);
+    osCreateMesgQueue(&slowLoad->mesgQueue, &slowLoad->msg, 1);
+    AudioLoad_Dma(&slowLoad->ioMesg, 0, 0, slowLoad->curDevAddr, slowLoad->curRamAddr, size, &slowLoad->mesgQueue,
+                  slowLoad->medium, "SLOWCOPY");
+}
+#endif
+
+void AudioLoad_DmaSlowCopyUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam) {
+    s32 addr = devAddr;
+
+    osInvalDCache(ramAddr, size);
+    func_8000FCDC(func_8000FCCC(unkMediumParam, &addr), addr, ramAddr, size);
+}
+
+AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 medium, s32 nChunks,
+                                         OSMesgQueue* retQueue, u32 retMesg) {
+    AudioAsyncLoad* asyncLoad;
+    s32 i;
+
+    for (i = 0; i < 16; i++) {
+        if (gAsyncLoads[i].status == 0) {
+            asyncLoad = &gAsyncLoads[i];
+            break;
+        }
+    }
+    if (i == 16) {
+        return NULL;
+    }
+
+    asyncLoad->status = 1;
+    asyncLoad->curDevAddr = devAddr;
+    asyncLoad->ramAddr = ramAddr;
+    asyncLoad->curRamAddr = ramAddr;
+    asyncLoad->bytesRemaining = size;
+
+    if (nChunks == 0) {
+        asyncLoad->chunkSize = 0x1000;
+    } else {
+        asyncLoad->chunkSize = ALIGN256((s32) size / nChunks);
+        if (asyncLoad->chunkSize < 0x100) {
+            asyncLoad->chunkSize = 0x100;
+        }
+    }
+
+    asyncLoad->retQueue = retQueue;
+    asyncLoad->delay = 3;
+    asyncLoad->medium = medium;
+    asyncLoad->retMsg = retMesg;
+
+    osCreateMesgQueue(&asyncLoad->mesgQueue, &asyncLoad->msg, 1);
+    return asyncLoad;
+}
+
+void AudioLoad_ProcessAsyncLoads(s32 resetStatus) {
+    s32 i;
+
+    for (i = 0; i < 16; i++) {
+        if (gAsyncLoads[i].status == 1) {
+            AudioLoad_ProcessAsyncLoad(&gAsyncLoads[i], resetStatus);
+        }
+    }
+}
+
+void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
+    AudioTable* sampleTable = gSampleBankTable;
+    s32 tableType;
+    s32 loadStatus;
+    u32 msg;
+    s32 tableIndex;
+    s32 sampleBankId1;
+    s32 sampleBankId2;
+    SampleBankRelocInfo relocInfo;
+
+    if (asyncLoad->delay > 1) {
+        asyncLoad->delay--;
+        return;
+    }
+    if (asyncLoad->delay == 1) {
+        asyncLoad->delay = 0;
+    } else {
+        if (resetStatus != 0) {
+            MQ_WAIT_FOR_MESG(&asyncLoad->mesgQueue, NULL);
+            asyncLoad->status = 0;
+            return;
+        }
+        if (!MQ_GET_MESG(&asyncLoad->mesgQueue, NULL)) {
+            return;
+        }
+    }
+
+    if (asyncLoad->bytesRemaining == 0) {
+        msg = asyncLoad->retMsg;
+        tableType = (msg >> 0x10) & 0xFF;
+        tableIndex = (msg >> 8) & 0xFF;
+        loadStatus = msg & 0xFF;
+
+        switch (tableType) {
+            case SEQUENCE_TABLE:
+                if (gSeqLoadStatus[tableIndex] != 5) {
+                    gSeqLoadStatus[tableIndex] = loadStatus;
+                }
+                break;
+
+            case SAMPLE_TABLE:
+                if (gSampleFontLoadStatus[tableIndex] != 5) {
+                    gSampleFontLoadStatus[tableIndex] = loadStatus;
+                }
+                break;
+
+            case FONT_TABLE:
+                if (gFontLoadStatus[tableIndex] != 5) {
+                    gFontLoadStatus[tableIndex] = loadStatus;
+                }
+
+                sampleBankId1 = gSoundFontList[tableIndex].sampleBankId1;
+                sampleBankId2 = gSoundFontList[tableIndex].sampleBankId2;
+                relocInfo.sampleBankId1 = sampleBankId1;
+                relocInfo.sampleBankId2 = sampleBankId2;
+
+                if (sampleBankId1 != SAMPLES_NONE) {
+                    relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1);
+                } else {
+                    relocInfo.baseAddr1 = NULL;
+                }
+
+                if (sampleBankId2 != SAMPLES_NONE) {
+                    relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2);
+                } else {
+                    relocInfo.baseAddr2 = NULL;
+                }
+                AudioLoad_RelocateFontAndPreloadSamples(tableIndex, asyncLoad->ramAddr, &relocInfo, AUDIOLOAD_ASYNC);
+                break;
+        }
+        asyncLoad->status = 0;
+        osSendMesg(asyncLoad->retQueue, asyncLoad->retMsg, OS_MESG_NOBLOCK);
+    } else if (asyncLoad->bytesRemaining < asyncLoad->chunkSize) {
+        if (asyncLoad->medium == MEDIUM_UNK) {
+            AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->bytesRemaining,
+                                        sampleTable->base.unkMediumParam);
+        } else {
+            AudioLoad_AsyncDma(asyncLoad, asyncLoad->bytesRemaining);
+        }
+        asyncLoad->bytesRemaining = 0;
+    } else {
+        if (asyncLoad->medium == MEDIUM_UNK) {
+            AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->chunkSize,
+                                        sampleTable->base.unkMediumParam);
+        } else {
+            AudioLoad_AsyncDma(asyncLoad, asyncLoad->chunkSize);
+        }
+        asyncLoad->bytesRemaining -= asyncLoad->chunkSize;
+        asyncLoad->curDevAddr += asyncLoad->chunkSize;
+        asyncLoad->curRamAddr += asyncLoad->chunkSize;
+    }
+}
+
+#ifndef IMPORT_RODATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_load/AudioLoad_AsyncDma.s")
+#else
+void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
+    size = ALIGN16(size);
+    osInvalDCache(asyncLoad->curRamAddr, size);
+    osCreateMesgQueue(&asyncLoad->mesgQueue, &asyncLoad->msg, 1);
+    if (size) {}
+    AudioLoad_Dma(&asyncLoad->ioMesg, 0, 0, asyncLoad->curDevAddr, asyncLoad->curRamAddr, size, &asyncLoad->mesgQueue,
+                  asyncLoad->medium, "BGCOPY");
+}
+#endif
+
+void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam) {
+    s32 addr = devAddr;
+
+    osInvalDCache(ramAddr, size);
+    func_8000FCDC(func_8000FCCC(unkMediumParam, &addr), addr, ramAddr, size);
+}
+
+void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBankRelocInfo* relocInfo) {
+    void* reloc;
+    Sample* sample;
+
+    // "Error: Already wavetable is touched %x.\n";
+    if ((u32) tSample->sample <= AUDIO_RELOCATED_ADDRESS_START) {
+        sample = tSample->sample = reloc = (u32) tSample->sample + fontDataAddr;
+        // "Touch Warning: Length zero %x\n";
+        if ((sample->size != 0) && (sample->isRelocated != 1)) {
+            sample->loop = reloc = (u32) sample->loop + fontDataAddr;
+            sample->book = reloc = (u32) sample->book + fontDataAddr;
+            switch (sample->medium) {
+                case MEDIUM_RAM:
+                    sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr1;
+                    sample->medium = relocInfo->medium1;
+                    break;
+                case MEDIUM_UNK:
+                    sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr2;
+                    sample->medium = relocInfo->medium2;
+                    break;
+                case MEDIUM_CART:
+                case MEDIUM_DISK_DRIVE:
+                    break;
+            }
+
+            sample->isRelocated = true;
+            if (sample->unk_bit26 && (sample->medium != 0)) {
+                gUsedSamples[gNumUsedSamples++] = sample;
+            }
+        }
+    }
+}
+
+s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync) {
+    s32 i;
+    Sample* sample;
+    u8* sampleRamAddr;
+    s32 size;
+    s32 pad;
+    u32 nChunks;
+    s32 inProgress;
+
+    inProgress = false;
+    if (gPreloadSampleStackTop != 0) {
+        inProgress = true;
+    } else {
+        D_80148EF0 = 0;
+    }
+
+    gNumUsedSamples = 0;
+    AudioLoad_RelocateFont(fontId, fontDataAddr, relocData);
+    size = 0;
+
+    for (i = 0; i < gNumUsedSamples; i++) {
+        size += ALIGN16(gUsedSamples[i]->size);
+    }
+
+    for (i = 0; i < gNumUsedSamples; i++) {
+        if (gPreloadSampleStackTop == 120) {
+            break;
+        }
+        sample = gUsedSamples[i];
+#ifdef AVOID_UB
+        sampleRamAddr = NULL;
+#endif
+        //! @bug Those are assignments, not equality checks.
+        switch (isAsync) {
+            case AUDIOLOAD_SYNC:
+                if (sample->medium = relocData->medium1) {
+                    sampleRamAddr = AudioHeap_AllocPersistentSampleCache(sample->size, relocData->sampleBankId1,
+                                                                         sample->sampleAddr, sample->medium);
+                } else if (sample->medium = relocData->medium2) {
+                    sampleRamAddr = AudioHeap_AllocPersistentSampleCache(sample->size, relocData->sampleBankId2,
+                                                                         sample->sampleAddr, sample->medium);
+                }
+                break;
+
+            case AUDIOLOAD_ASYNC:
+                if (sample->medium = relocData->medium1) {
+                    sampleRamAddr = AudioHeap_AllocTemporarySampleCache(sample->size, relocData->sampleBankId1,
+                                                                        sample->sampleAddr, sample->medium);
+                } else if (sample->medium = relocData->medium2) {
+                    sampleRamAddr = AudioHeap_AllocTemporarySampleCache(sample->size, relocData->sampleBankId2,
+                                                                        sample->sampleAddr, sample->medium);
+                }
+                break;
+        }
+
+        if (sampleRamAddr == NULL) {
+            continue;
+        }
+
+        switch (isAsync) {
+            case AUDIOLOAD_SYNC:
+                if (sample->medium == MEDIUM_UNK) {
+                    AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleRamAddr, sample->size,
+                                               gSampleBankTable->base.unkMediumParam);
+                    sample->sampleAddr = sampleRamAddr;
+                    sample->medium = MEDIUM_RAM;
+                } else {
+                    AudioLoad_SyncDma(sample->sampleAddr, sampleRamAddr, sample->size, sample->medium);
+                    sample->sampleAddr = sampleRamAddr;
+                    sample->medium = MEDIUM_RAM;
+                }
+                break;
+
+            case AUDIOLOAD_ASYNC:
+                size = gPreloadSampleStackTop;
+                gPreloadSampleStack[size].sample = sample;
+                gPreloadSampleStack[size].ramAddr = sampleRamAddr;
+                gPreloadSampleStack[size].encodedInfo = (size << 24) | 0xFFFFFF;
+                gPreloadSampleStack[size].isFree = 0;
+                gPreloadSampleStack[size].endAndMediumKey =
+                    (uintptr_t) sample->sampleAddr + sample->size + sample->medium;
+                gPreloadSampleStackTop++;
+                break;
+        }
+    }
+
+    gNumUsedSamples = 0;
+
+    if ((gPreloadSampleStackTop != 0) && !inProgress) {
+        sample = gPreloadSampleStack[gPreloadSampleStackTop - 1].sample;
+        nChunks = (sample->size / 0x1000) + 1;
+        AudioLoad_StartAsyncLoad(sample->sampleAddr, gPreloadSampleStack[gPreloadSampleStackTop - 1].ramAddr,
+                                 sample->size, sample->medium, nChunks, &gPreloadSampleQueue,
+                                 gPreloadSampleStack[gPreloadSampleStackTop - 1].encodedInfo);
+    }
+}
+
+s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
+    Sample* sample;
+    u32 preloadIndex;
+    u32 key;
+    s32 sampleAddr;
+    u32 size;
+    s32 nChunks;
+
+    if (gPreloadSampleStackTop > 0) {
+        if (resetStatus != 0) {
+            if (!MQ_GET_MESG(&gPreloadSampleQueue, &preloadIndex)) {}
+            gPreloadSampleStackTop = 0;
+            return false;
+        }
+        if (!MQ_GET_MESG(&gPreloadSampleQueue, &preloadIndex)) {
+            return false;
+        }
+        // "Receive %d\n"
+        preloadIndex >>= 0x18;
+
+        if (gPreloadSampleStack[preloadIndex].isFree == 0) {
+            sample = gPreloadSampleStack[preloadIndex].sample;
+            key = sample->sampleAddr + sample->size + sample->medium;
+            if (key == gPreloadSampleStack[preloadIndex].endAndMediumKey) {
+                sample->sampleAddr = gPreloadSampleStack[preloadIndex].ramAddr;
+                sample->medium = MEDIUM_RAM;
+            }
+            //  "============Error: Magic is Broken after loading.\n"
+            gPreloadSampleStack[preloadIndex].isFree = 1;
+        }
+
+        while (true) {
+            if (gPreloadSampleStackTop <= 0) {
+                break;
+            }
+            if (gPreloadSampleStack[gPreloadSampleStackTop - 1].isFree == 1) {
+                gPreloadSampleStackTop--;
+                continue;
+            }
+
+            sample = gPreloadSampleStack[gPreloadSampleStackTop - 1].sample;
+            sampleAddr = sample->sampleAddr;
+            size = sample->size;
+            nChunks = (size >> 0xC) + 1;
+
+            key = sampleAddr + size + sample->medium;
+            if (key != gPreloadSampleStack[gPreloadSampleStackTop - 1].endAndMediumKey) {
+                // "============Error: Magic is Broken: %x\n";
+                gPreloadSampleStack[gPreloadSampleStackTop - 1].isFree = 1;
+                gPreloadSampleStackTop--;
+            } else {
+                size = sample->size;
+                AudioLoad_StartAsyncLoad(sampleAddr, gPreloadSampleStack[gPreloadSampleStackTop - 1].ramAddr, size,
+                                         sample->medium, nChunks, &gPreloadSampleQueue,
+                                         gPreloadSampleStack[gPreloadSampleStackTop - 1].encodedInfo);
+                break;
+            }
+        }
+    }
+    return true;
+}
+
+s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet) {
+    s32 i;
+
+    for (i = 0; i < numSamples; i++) {
+        if (sample->sampleAddr == sampleSet[i]->sampleAddr) {
+            break;
+        }
+    }
+    if (i == numSamples) {
+        sampleSet[numSamples++] = sample;
+    }
+    return numSamples;
+}
+
+s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
+    s32 i;
+    Drum* drum;
+    Instrument* inst;
+    s32 numLoaded = 0;
+    s32 numDrums = gSoundFontList[fontId].numDrums;
+    s32 numInstruments = gSoundFontList[fontId].numInstruments;
+
+    for (i = 0; i < numDrums; i++) {
+        drum = Audio_GetDrum(fontId, i);
+        if (drum == NULL) {
+            continue;
+        }
+        numLoaded = AudioLoad_AddToSampleSet(drum->tunedSample.sample, numLoaded, sampleSet);
+    }
+
+    for (i = 0; i < numInstruments; i++) {
+        inst = Audio_GetInstrument(fontId, i);
+        if (inst == NULL) {
+            continue;
+        }
+        if (inst->normalRangeLo != 0) {
+            numLoaded = AudioLoad_AddToSampleSet(inst->lowPitchTunedSample.sample, numLoaded, sampleSet);
+        }
+        if (inst->normalRangeHi != 127) {
+            numLoaded = AudioLoad_AddToSampleSet(inst->highPitchTunedSample.sample, numLoaded, sampleSet);
+        }
+        numLoaded = AudioLoad_AddToSampleSet(inst->normalPitchTunedSample.sample, numLoaded, sampleSet);
+    }
+
+    return numLoaded;
+}
diff --git a/srceu/audio/audio_playback.c b/srceu/audio/audio_playback.c
index 19da37c85..ff3eaffc9 100644
--- a/srceu/audio/audio_playback.c
+++ b/srceu/audio/audio_playback.c
@@ -1,59 +1,783 @@
-#include "common.h"
+// No version differences found here.
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011870.s")
+#include "sys.h"
+#include "sf64audio_provisional.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011C38.s")
+extern u32 D_80157EF8;
+extern u8 sSamplesPerWavePeriod[4];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011CF0.s")
+void func_80011C38(Note* note, f32 arg1);
+void func_80013B4C(AdsrState* adsr, EnvelopePoint* envelope, s16* arg2);
+void func_8001413C(SequenceChannel* channel);
+void func_8001266C(SequenceLayer* layer);
+f32 func_80013B70(AdsrState* adsr);
+void func_80012C20(Note* note);
+void func_800139F8(Note* note);
+void func_80012BE0(AudioListItem* item1, AudioListItem* item2);
+void func_80012CCC(Note* note, SequenceLayer* layer);
+void func_80013A64(Note* note);
+void func_8001459C(AudioListItem* list, AudioListItem* item);
+void* func_800145DC(AudioListItem* list);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011D2C.s")
+void func_80011870(Note* note, NoteAttributes* noteAttr) {
+    NoteSubEu* noteSub;
+    f32 panVolumeLeft;
+    f32 pamVolumeRight;
+    f32 velocity;
+    s32 temp_t0;
+    s32 var_a0;
+    s32 strongRight;
+    s32 strongLeft;
+    u8 pan;
+    u8 reverb;
+    Stereo stereo;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011DDC.s")
+    func_80011C38(note, noteAttr->freqMod);
+    noteSub = &note->noteSubEu;
+    velocity = noteAttr->velocity;
+    pan = noteAttr->pan;
+    reverb = noteAttr->reverb;
+    stereo = noteAttr->stereo;
+    pan %= ARRAY_COUNTU(gHeadsetPanVolume);
+    if ((noteSub->bitField0.stereoHeadsetEffects) && (gAudioSoundMode == SOUNDMODE_HEADSET)) {
+        var_a0 = pan >> 1;
+        if (var_a0 >= ARRAY_COUNT(gHaasEffectDelaySizes)) {
+            var_a0 = ARRAY_COUNT(gHaasEffectDelaySizes) - 1;
+        }
+        noteSub->rightDelaySize = gHaasEffectDelaySizes[var_a0];
+        noteSub->leftDelaySize = gHaasEffectDelaySizes[ARRAY_COUNT(gHaasEffectDelaySizes) - 1 - var_a0];
+        noteSub->bitField0.stereoStrongRight = false;
+        noteSub->bitField0.stereoStrongLeft = false;
+        noteSub->bitField0.usesHeadsetPanEffects = true;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011E98.s")
+        panVolumeLeft = gHeadsetPanVolume[pan];
+        pamVolumeRight = gHeadsetPanVolume[ARRAY_COUNT(gHeadsetPanVolume) - 1 - pan];
+    } else if (noteSub->bitField0.stereoHeadsetEffects && (gAudioSoundMode == SOUNDMODE_STEREO)) {
+        noteSub->leftDelaySize = 0;
+        noteSub->rightDelaySize = 0;
+        noteSub->bitField0.usesHeadsetPanEffects = false;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011F2C.s")
+        panVolumeLeft = gStereoPanVolume[pan];
+        pamVolumeRight = gStereoPanVolume[ARRAY_COUNT(gStereoPanVolume) - 1 - pan];
+        strongRight = false;
+        strongLeft = false;
+        if (pan < 32) {
+            strongLeft = true;
+        } else if (pan > 96) {
+            strongRight = true;
+        }
+        noteSub->bitField0.stereoStrongRight = strongRight;
+        noteSub->bitField0.stereoStrongLeft = strongLeft;
+        switch (stereo.s.bit2) {
+            case 0:
+                noteSub->bitField0.stereoStrongRight = stereo.s.strongRight;
+                noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft;
+                break;
+            case 1:
+                break;
+            case 2:
+                noteSub->bitField0.stereoStrongRight = stereo.s.strongRight | strongRight;
+                noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft | strongLeft;
+                break;
+            case 3:
+                noteSub->bitField0.stereoStrongRight = stereo.s.strongRight ^ strongRight;
+                noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft ^ strongLeft;
+                break;
+        }
+    } else if (gAudioSoundMode == SOUNDMODE_MONO) {
+        panVolumeLeft = 0.707f;
+        pamVolumeRight = 0.707f;
+    } else {
+        panVolumeLeft = gDefaultPanVolume[pan];
+        pamVolumeRight = gDefaultPanVolume[ARRAY_COUNT(gDefaultPanVolume) - 1 - pan];
+    }
+    if (velocity < 0.0f) {
+        velocity = 0.0f;
+    }
+    if (velocity > 1.0f) {
+        velocity = 1.0f;
+    }
+    noteSub->panVolLeft = (s32) (velocity * panVolumeLeft * 4095.999f);
+    noteSub->panVolRight = (s32) (velocity * pamVolumeRight * 4095.999f);
+    noteSub->gain = noteAttr->gain;
+    if (noteSub->reverb != reverb) {
+        noteSub->reverb = reverb;
+        noteSub->bitField0.unused = true;
+    } else if (noteSub->bitField0.needsInit) {
+        noteSub->bitField0.unused = true;
+    } else {
+        noteSub->bitField0.unused = false;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80011F88.s")
+void func_80011C38(Note* note, f32 arg1) {
+    NoteSubEu* noteSub = &note->noteSubEu;
+    f32 var_fv0;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012418.s")
+    if (arg1 < 2.0f) {
+        noteSub->bitField1.hasTwoParts = 0;
+        if (arg1 > 1.99998f) {
+            var_fv0 = 1.99998f;
+        } else {
+            var_fv0 = arg1;
+        }
+    } else {
+        noteSub->bitField1.hasTwoParts = 1;
+        if (arg1 > 3.99996f) {
+            var_fv0 = 1.99998f;
+        } else {
+            var_fv0 = arg1 * 0.5f;
+        }
+    }
+    note->noteSubEu.resampleRate = (s32) (var_fv0 * 32768.0f);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_8001264C.s")
+TunedSample* func_80011CF0(Instrument* instrument, s32 arg1) {
+    TunedSample* sample;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_8001266C.s")
+    if (arg1 < instrument->normalRangeLo) {
+        sample = &instrument->lowPitchTunedSample;
+    } else if (arg1 <= instrument->normalRangeHi) {
+        sample = &instrument->normalPitchTunedSample;
+    } else {
+        sample = &instrument->highPitchTunedSample;
+    }
+    return sample;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_8001268C.s")
+Instrument* Audio_GetInstrument(s32 fontId, s32 instId) {
+    Instrument* instrument;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012790.s")
+    if ((gFontLoadStatus[fontId] < 2) != 0) {
+        D_80157EF8 = fontId + 0x10000000;
+        return NULL;
+    }
+    if (instId >= gSoundFontList[fontId].numInstruments) {
+        D_80157EF8 = (fontId << 8) + instId + 0x03000000;
+        return NULL;
+    }
+    instrument = gSoundFontList[fontId].instruments[instId];
+    if (instrument == NULL) {
+        D_80157EF8 = (fontId << 8) + instId + 0x01000000;
+        return instrument;
+    }
+    return instrument;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012834.s")
+Drum* Audio_GetDrum(s32 fontId, s32 drumId) {
+    Drum* drum;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012844.s")
+    if ((gFontLoadStatus[fontId] < 2) != 0) {
+        D_80157EF8 = fontId + 0x10000000;
+        return NULL;
+    }
+    if (drumId >= gSoundFontList[fontId].numDrums) {
+        D_80157EF8 = (fontId << 8) + drumId + 0x04000000;
+        return NULL;
+    }
+    if ((u32) gSoundFontList[fontId].drums < AUDIO_RELOCATED_ADDRESS_START) {
+        return NULL;
+    }
+    drum = gSoundFontList[fontId].drums[drumId];
+    if (gSoundFontList[fontId].drums[drumId] == NULL) {
+        D_80157EF8 = (fontId << 8) + drumId + 0x05000000;
+    }
+    return drum;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012894.s")
+void func_80011E98(Note* note) {
+    if (note->playbackState.parentLayer->adsr.decayIndex == 0) {
+        func_80013B4C(&note->playbackState.adsr, note->playbackState.parentLayer->channel->adsr.envelope,
+                      &note->playbackState.adsrVolModUnused);
+    } else {
+        func_80013B4C(&note->playbackState.adsr, note->playbackState.parentLayer->adsr.envelope,
+                      &note->playbackState.adsrVolModUnused);
+    }
+    note->playbackState.adsr.state = 1;
+    note->noteSubEu = gDefaultNoteSub;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012944.s")
+void func_80011F2C(Note* note) {
+    if (note->noteSubEu.bitField0.needsInit == 1) {
+        note->noteSubEu.bitField0.needsInit = 0;
+    }
+    note->playbackState.priority = 0;
+    note->playbackState.unk_04 = 0;
+    note->noteSubEu.bitField0.enabled = 0;
+    note->playbackState.parentLayer = NO_LAYER;
+    note->playbackState.prevParentLayer = NO_LAYER;
+    note->noteSubEu.bitField0.finished = 0;
+    note->playbackState.adsr.state = 0;
+    note->playbackState.adsr.current = 0.0f;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012AA4.s")
+void func_80011F88(void) {
+    s32 pad2;
+    s32 pad;
+    Note* note;
+    NotePlaybackState* playbackState;
+    NoteSubEu* noteSub;
+    NoteAttributes* attr;
+    s32 i;
+    NoteAttributes sp70;
+    u8 bookOffset;
+    f32 temp_fs0;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012BE0.s")
+    for (i = 0; i < gNumNotes; i++) {
+        note = &gNotes[i];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012C20.s")
+        playbackState = &note->playbackState;
+        if ((playbackState->parentLayer != NO_LAYER)) {
+            if ((u32) playbackState->parentLayer < 0x7FFFFFFF) {
+                continue;
+            }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012C4C.s")
+            if ((note != playbackState->parentLayer->note) && (playbackState->unk_04 == 0)) {
+                playbackState->adsr.action.asByte |= 0x10;
+                playbackState->adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
+                playbackState->priority = 1;
+                playbackState->unk_04 = 2;
+                goto block_21;
+            } else {
+                if ((playbackState->parentLayer->enabled) || (playbackState->unk_04 != 0) ||
+                    (playbackState->priority <= 0)) {
+                    if (playbackState->parentLayer->channel->seqPlayer == NULL) {
+                        func_8001413C(playbackState->parentLayer->channel);
+                        playbackState->priority = 1;
+                        playbackState->unk_04 = 1;
+                        continue;
+                    }
+                    if (!(playbackState->parentLayer->channel->seqPlayer->muted &&
+                          (playbackState->parentLayer->channel->muteBehavior & 0x40))) {
+                        goto block_21;
+                    }
+                }
+                func_8001266C(playbackState->parentLayer);
+                func_80012C20(note);
+                func_80012BE0(&note->listItem.pool->decaying, &note->listItem);
+                playbackState->priority = 1;
+                playbackState->unk_04 = 2;
+            }
+        } else if ((playbackState->unk_04 == 0) && (playbackState->priority > 0)) {
+            continue;
+        }
+    block_21:
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012CCC.s")
+        if (playbackState->priority != 0) {
+            if (1) {}
+            noteSub = &note->noteSubEu;
+            if ((playbackState->unk_04 > 0) || noteSub->bitField0.finished) {
+                if ((playbackState->adsr.state == 0) || noteSub->bitField0.finished) {
+                    if (playbackState->wantedParentLayer != NO_LAYER) {
+                        func_80011F2C(note);
+                        if (playbackState->wantedParentLayer->channel != NULL) {
+                            func_80012CCC(note, playbackState->wantedParentLayer);
+                            func_80013A64(note);
+                            func_80012C20(note);
+                            func_8001459C(&note->listItem.pool->active, &note->listItem);
+                            playbackState->wantedParentLayer = NO_LAYER;
+                        } else {
+                            func_80011F2C(note);
+                            func_80012C20(note);
+                            func_8001459C(&note->listItem.pool->disabled, &note->listItem);
+                            playbackState->wantedParentLayer = NO_LAYER;
+                            goto next;
+                        }
+                    } else {
+                        func_80011F2C(note);
+                        func_80012C20(note);
+                        func_8001459C(&note->listItem.pool->disabled, &note->listItem);
+                        goto next;
+                    }
+                }
+            } else if (playbackState->adsr.state == 0) {
+                func_80011F2C(note);
+                func_80012C20(note);
+                func_8001459C(&note->listItem.pool->disabled, &note->listItem);
+                goto next;
+            }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012E08.s")
+            temp_fs0 = func_80013B70(&playbackState->adsr);
+            func_800139F8(note);
+            attr = &playbackState->attributes;
+            if ((playbackState->unk_04 == 1) || (playbackState->unk_04 == 2)) {
+                sp70.freqMod = attr->freqMod;
+                sp70.velocity = attr->velocity;
+                sp70.pan = attr->pan;
+                sp70.reverb = attr->reverb;
+                sp70.stereo = attr->stereo;
+                sp70.gain = attr->gain;
+                bookOffset = noteSub->bitField1.bookOffset;
+            } else {
+                sp70.freqMod = playbackState->parentLayer->noteFreqMod;
+                sp70.velocity = playbackState->parentLayer->noteVelocity;
+                sp70.pan = playbackState->parentLayer->notePan;
+                sp70.stereo = playbackState->parentLayer->stereo;
+                sp70.reverb = playbackState->parentLayer->channel->targetReverbVol;
+                sp70.gain = playbackState->parentLayer->channel->reverbIndex;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012E3C.s")
+                bookOffset = playbackState->parentLayer->channel->bookOffset % 8U;
+                if ((playbackState->parentLayer->channel->seqPlayer->muted) &&
+                    (playbackState->parentLayer->channel->muteBehavior & 8)) {
+                    sp70.freqMod = 0.0f;
+                    sp70.velocity = 0.0f;
+                }
+            }
+            sp70.freqMod *= playbackState->vibratoFreqMod * playbackState->portamentoFreqMod;
+            sp70.freqMod *= gAudioBufferParams.resampleRate;
+            sp70.velocity *= temp_fs0;
+            func_80011870(note, &sp70);
+            noteSub->bitField1.bookOffset = bookOffset;
+        next:;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012E68.s")
+void func_80012418(SequenceLayer* layer, s32 arg1) {
+    Note* note;
+    NoteAttributes* noteAttr;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012EB4.s")
+    if (layer == NO_LAYER) {
+        return;
+    }
+    layer->unk_3 = 0;
+    if (layer->note == NULL) {
+        return;
+    }
+    note = layer->note;
+    if (layer == note->playbackState.wantedParentLayer) {
+        note->playbackState.wantedParentLayer = NO_LAYER;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012F04.s")
+    if (layer != note->playbackState.parentLayer) {
+        if ((note->playbackState.parentLayer == NO_LAYER) && (note->playbackState.wantedParentLayer == NO_LAYER) &&
+            (layer == note->playbackState.prevParentLayer) && (arg1 != 6)) {
+            note->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
+            note->playbackState.adsr.action.asByte |= 0x10;
+        }
+    } else {
+        noteAttr = &note->playbackState.attributes;
+        if (note->playbackState.adsr.state != 6) {
+            noteAttr->freqMod = layer->noteFreqMod;
+            noteAttr->velocity = layer->noteVelocity;
+            noteAttr->pan = layer->notePan;
+            noteAttr->stereo = layer->stereo;
+            if (layer->channel != NULL) {
+                noteAttr->reverb = layer->channel->targetReverbVol;
+                noteAttr->gain = layer->channel->reverbIndex;
+                if (layer->channel->seqPlayer->muted && (layer->channel->muteBehavior & 8)) {
+                    note->noteSubEu.bitField0.finished = 1;
+                }
+            }
+            note->playbackState.priority = 1;
+            note->playbackState.prevParentLayer = note->playbackState.parentLayer;
+            note->playbackState.parentLayer = NO_LAYER;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_80012FFC.s")
+            if (arg1 == 7) {
+                note->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
+                note->playbackState.adsr.action.asByte |= 0x10;
+                note->playbackState.unk_04 = 2;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_playback/func_800132C8.s")
+            } else {
+                note->playbackState.unk_04 = 1;
+                note->playbackState.adsr.action.asByte |= 0x20;
+                if (layer->adsr.decayIndex == 0) {
+                    note->playbackState.adsr.fadeOutVel =
+                        layer->channel->adsr.decayIndex * gAudioBufferParams.ticksPerUpdateInvScaled;
+                } else {
+                    note->playbackState.adsr.fadeOutVel =
+                        layer->adsr.decayIndex * gAudioBufferParams.ticksPerUpdateInvScaled;
+                }
+                note->playbackState.adsr.sustain =
+                    (s32) layer->channel->adsr.sustain * note->playbackState.adsr.current / 256.0f;
+            }
+        }
+        if (arg1 == 6) {
+            func_80012C20(note);
+            func_80012BE0(&note->listItem.pool->decaying, &note->listItem);
+        }
+    }
+}
+
+void func_8001264C(SequenceLayer* layer) {
+    func_80012418(layer, 6);
+}
+
+void func_8001266C(SequenceLayer* layer) {
+    func_80012418(layer, 7);
+}
+
+s32 func_8001268C(Note* note, SequenceLayer* layer, s32 waveId) {
+    f32 freqMod;
+    u8 harmonicIndex = 0;
+
+    if (waveId < 128) {
+        waveId = 128;
+    }
+    freqMod = layer->freqMod;
+    if ((layer->portamento.mode != 0) && (layer->portamento.extent > 0.0f)) {
+        freqMod *= layer->portamento.extent + 1.0f;
+    }
+    if (freqMod < 1.0f) {
+        freqMod = 1.0465f;
+    } else if (freqMod < 2.0f) {
+        harmonicIndex = 1;
+        freqMod = 0.52325f;
+    } else if (freqMod < 4.0f) {
+        harmonicIndex = 2;
+        freqMod = 0.26263f;
+    } else {
+        harmonicIndex = 3;
+        freqMod = 0.13081f;
+    }
+
+    layer->freqMod *= freqMod;
+    note->playbackState.waveId = waveId;
+    note->playbackState.harmonicIndex = harmonicIndex;
+    note->noteSubEu.waveSampleAddr = &gWaveSamples[waveId - 128][harmonicIndex * 64];
+    return harmonicIndex;
+}
+
+void func_80012790(Note* note, SequenceLayer* layer) {
+    s32 harmonicIndex;
+    s32 waveId;
+
+    waveId = layer->instOrWave;
+    if (waveId == 0xFF) {
+        waveId = layer->channel->instOrWave;
+    }
+    harmonicIndex = note->playbackState.harmonicIndex;
+    note->synthesisState.samplePosInt =
+        (note->synthesisState.samplePosInt * sSamplesPerWavePeriod[func_8001268C(note, layer, waveId)]) /
+        sSamplesPerWavePeriod[harmonicIndex];
+}
+
+void func_80012834(AudioListItem* item) {
+    item->prev = item;
+    item->next = item;
+    item->u.value = NULL;
+}
+
+void func_80012844(NotePool* pool) {
+    func_80012834(&pool->disabled);
+    func_80012834(&pool->decaying);
+    func_80012834(&pool->releasing);
+    func_80012834(&pool->active);
+    pool->disabled.pool = pool;
+    pool->decaying.pool = pool;
+    pool->releasing.pool = pool;
+    pool->active.pool = pool;
+}
+
+void func_80012894(void) {
+    s32 i;
+
+    func_80012844(&gNoteFreeLists);
+    for (i = 0; i < gNumNotes; i++) {
+        gNotes[i].listItem.u.value = &gNotes[i];
+        gNotes[i].listItem.prev = NULL;
+        func_8001459C(&gNoteFreeLists.disabled, &gNotes[i].listItem);
+    }
+}
+
+void func_80012944(NotePool* pool) {
+    s32 poolType;
+    AudioListItem* poolItem;
+    AudioListItem* nextPoolItem;
+    AudioListItem* freeList;
+
+    for (poolType = 0; poolType < 4; poolType++) {
+        switch (poolType) {
+            case 0:
+                poolItem = &pool->disabled;
+                freeList = &gNoteFreeLists.disabled;
+                break;
+            case 1:
+                poolItem = &pool->decaying;
+                freeList = &gNoteFreeLists.decaying;
+                break;
+            case 2:
+                poolItem = &pool->releasing;
+                freeList = &gNoteFreeLists.releasing;
+                break;
+            case 3:
+                poolItem = &pool->active;
+                freeList = &gNoteFreeLists.active;
+                break;
+        }
+
+        while (true) {
+            nextPoolItem = poolItem->next;
+            if ((nextPoolItem == poolItem) || (nextPoolItem == NULL)) {
+                break;
+            }
+            func_80012C20((Note*) nextPoolItem);
+            func_8001459C(freeList, nextPoolItem);
+        }
+    }
+}
+
+void func_80012AA4(NotePool* pool, s32 arg1) {
+    s32 var_s0;
+    s32 poolType;
+    AudioListItem* note;
+    AudioListItem* freeList;
+    AudioListItem* poolList;
+
+    func_80012944(pool);
+    poolType = 0;
+    var_s0 = 0;
+    while (var_s0 < arg1) {
+        if (poolType == 4) {
+            return;
+        }
+        switch (poolType) {
+            case 0:
+                freeList = &gNoteFreeLists.disabled;
+                poolList = &pool->disabled;
+                break;
+            case 1:
+                freeList = &gNoteFreeLists.decaying;
+                poolList = &pool->decaying;
+                break;
+            case 2:
+                freeList = &gNoteFreeLists.releasing;
+                poolList = &pool->releasing;
+                break;
+            case 3:
+                freeList = &gNoteFreeLists.active;
+                poolList = &pool->active;
+                break;
+        }
+        while (var_s0 < arg1) {
+            note = func_800145DC(freeList);
+            if (note == NULL) {
+                break;
+            }
+            func_8001459C(poolList, note);
+            var_s0++;
+        }
+        poolType++;
+    }
+}
+
+void func_80012BE0(AudioListItem* item1, AudioListItem* item2) {
+    if (item2->prev == NULL) {
+        item2->prev = item1;
+        item2->next = item1->next;
+        item1->next->prev = item2;
+        item1->next = item2;
+        item1->u.count++;
+        item2->pool = item1->pool;
+    }
+}
+
+void func_80012C20(Note* note) {
+    if (note->listItem.prev != NULL) {
+        note->listItem.prev->next = note->listItem.next;
+        note->listItem.next->prev = note->listItem.prev;
+        note->listItem.prev = NULL;
+    }
+}
+
+Note* func_80012C4C(AudioListItem* item, s32 priority) {
+    AudioListItem* priorityItem;
+    AudioListItem* nextItem = item->next;
+
+    if (nextItem == item) {
+        return NULL;
+    }
+    priorityItem = nextItem;
+    for (nextItem; nextItem != item; nextItem = nextItem->next) {
+        if (((Note*) nextItem->u.value)->playbackState.priority <=
+            ((Note*) priorityItem->u.value)->playbackState.priority) {
+            priorityItem = nextItem;
+        }
+    }
+
+    if (priorityItem == NULL) {
+        return NULL;
+    }
+
+    if (((Note*) priorityItem->u.value)->playbackState.priority >= priority) {
+        return NULL;
+    }
+    return (Note*) priorityItem->u.value;
+}
+
+void func_80012CCC(Note* note, SequenceLayer* layer) {
+    s32 pad[4];
+    s32 var_a2;
+    NoteSubEu* noteSub;
+
+    note->playbackState.prevParentLayer = NO_LAYER;
+    note->playbackState.parentLayer = layer;
+    note->playbackState.priority = layer->channel->notePriority;
+    layer->ignoreDrumPan = 1;
+    layer->unk_3 = 3;
+    layer->note = note;
+    layer->channel->noteUnused = note;
+    layer->channel->layerUnused = layer;
+    layer->noteVelocity = 0.0f;
+    func_80011E98(note);
+    var_a2 = layer->instOrWave;
+    noteSub = &note->noteSubEu;
+    if (var_a2 == 0xFF) {
+        var_a2 = layer->channel->instOrWave;
+    }
+    noteSub->waveSampleAddr = (s16*) layer->tunedSample;
+    if (var_a2 >= 128) {
+        noteSub->bitField1.isSyntheticWave = true;
+    } else {
+        noteSub->bitField1.isSyntheticWave = false;
+    }
+    if (noteSub->bitField1.isSyntheticWave) {
+        func_8001268C(note, layer, var_a2);
+    }
+    note->playbackState.fontId = layer->channel->fontId;
+    noteSub->bitField0.stereoHeadsetEffects = layer->channel->stereoHeadsetEffects;
+    noteSub->bitField1.reverbIndex = layer->channel->someOtherPriority & 3;
+}
+
+void func_80012E08(Note* note, SequenceLayer* layer) {
+    func_8001266C(note->playbackState.parentLayer);
+    note->playbackState.wantedParentLayer = layer;
+}
+
+void func_80012E3C(Note* note, SequenceLayer* layer) {
+    note->playbackState.wantedParentLayer = layer;
+    note->playbackState.priority = layer->channel->notePriority;
+    note->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
+    note->playbackState.adsr.action.asByte |= 0x10;
+}
+
+Note* func_80012E68(NotePool* pool, SequenceLayer* layer) {
+    Note* note = func_800145DC(&pool->disabled);
+
+    if (note != NULL) {
+        func_80012CCC(note, layer);
+        func_80012BE0(&pool->active, &note->listItem);
+    }
+    return note;
+}
+
+Note* func_80012EB4(NotePool* pool, SequenceLayer* layer) {
+    Note* note = func_800145DC(&pool->decaying);
+
+    if (note != NULL) {
+        func_80012E3C(note, layer);
+        func_8001459C(&pool->releasing, &note->listItem);
+    }
+    return note;
+}
+
+Note* func_80012F04(NotePool* pool, SequenceLayer* layer) {
+    Note* sp34;
+    Note* sp30;
+    s32 sp2C;
+    s32 sp28;
+
+    sp2C = sp28 = 0x10;
+    sp34 = func_80012C4C(&pool->releasing, layer->channel->notePriority);
+    if (sp34 != NULL) {
+        sp2C = sp34->playbackState.priority;
+    }
+    sp30 = func_80012C4C(&pool->active, layer->channel->notePriority);
+    if (sp30 != NULL) {
+        sp28 = sp30->playbackState.priority;
+    }
+    if ((sp34 == NULL) && (sp30 == NULL)) {
+        return NULL;
+    }
+    if (sp28 < sp2C) {
+        func_80012C20(sp30);
+        func_80012E08(sp30, layer);
+        func_8001459C(&pool->releasing, &sp30->listItem);
+        sp30->playbackState.priority = layer->channel->notePriority;
+        return sp30;
+    } else {
+        sp34->playbackState.wantedParentLayer = layer;
+        sp34->playbackState.priority = layer->channel->notePriority;
+        return sp34;
+    }
+}
+
+Note* func_80012FFC(SequenceLayer* layer) {
+    Note* sp24;
+
+    if (layer->channel->noteAllocPolicy & 1) {
+        sp24 = layer->note;
+        if ((sp24 != NULL) && (layer == sp24->playbackState.prevParentLayer) &&
+            (sp24->playbackState.wantedParentLayer == NO_LAYER)) {
+
+            func_80012E3C(sp24, layer);
+            func_80012C20(sp24);
+            func_8001459C(&sp24->listItem.pool->releasing, &sp24->listItem);
+            return sp24;
+        }
+    }
+
+    if (layer->channel->noteAllocPolicy & 2) {
+        if (((sp24 = func_80012E68(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&layer->channel->notePool, layer)) != NULL)) {
+            return sp24;
+        }
+    } else if (layer->channel->noteAllocPolicy & 4) {
+        if (((sp24 = func_80012E68(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012E68(&layer->channel->seqPlayer->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&layer->channel->seqPlayer->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&layer->channel->seqPlayer->notePool, layer)) != NULL)) {
+            return sp24;
+        }
+    } else if (layer->channel->noteAllocPolicy & 8) {
+        if (((sp24 = func_80012E68(&gNoteFreeLists, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&gNoteFreeLists, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&gNoteFreeLists, layer)) != NULL)) {
+            return sp24;
+        }
+    } else {
+        if (((sp24 = func_80012E68(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012E68(&layer->channel->seqPlayer->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012E68(&gNoteFreeLists, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&layer->channel->seqPlayer->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012EB4(&gNoteFreeLists, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&layer->channel->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&layer->channel->seqPlayer->notePool, layer)) != NULL) ||
+            ((sp24 = func_80012F04(&gNoteFreeLists, layer)) != NULL)) {
+            return sp24;
+        }
+    }
+    layer->unk_3 = 0;
+    return NULL;
+}
+
+void func_800132C8(void) {
+    s32 i;
+    Note* note;
+
+    for (i = 0; i < gNumNotes; i++) {
+        note = &gNotes[i];
+
+        note->noteSubEu = gZeroNoteSub;
+
+        note->playbackState.priority = 0;
+        note->playbackState.unk_04 = 0;
+        note->playbackState.parentLayer = NO_LAYER;
+        note->playbackState.wantedParentLayer = NO_LAYER;
+        note->playbackState.prevParentLayer = NO_LAYER;
+        note->playbackState.waveId = 0;
+        note->playbackState.attributes.velocity = 0.0f;
+        note->playbackState.adsrVolModUnused = 0;
+        note->playbackState.adsr.state = 0;
+        note->playbackState.adsr.action.asByte = 0;
+        note->playbackState.vibratoState.active = 0;
+        note->playbackState.portamento.cur = 0.0f;
+        note->playbackState.portamento.speed = 0.0f;
+
+        note->synthesisState.synthesisBuffers = AudioHeap_Alloc(&gMiscPool, sizeof(Note));
+    }
+}
diff --git a/srceu/audio/audio_seqplayer.c b/srceu/audio/audio_seqplayer.c
index 88ff98c9e..6cf1e869b 100644
--- a/srceu/audio/audio_seqplayer.c
+++ b/srceu/audio/audio_seqplayer.c
@@ -1,51 +1,1407 @@
-#include "common.h"
+// No regional differences in this file
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80013E80.s")
+#include "sys.h"
+#include "sf64audio_provisional.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80013FA4.s")
+extern u32 D_80157EF8;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800140B0.s")
+void func_80012844(NotePool* pool);
+void* func_800145DC(AudioListItem* list);
+void func_8001459C(AudioListItem* list, AudioListItem* item);
+void func_8001264C(SequenceLayer* layer);
+void func_80012944(NotePool* pool);
+u8 func_800152C0(SequenceChannel* channel, u8 arg1, Instrument** instrument, AdsrSettings* adsrSettings);
+TunedSample* func_80011CF0(Instrument* instrument, s32 arg1);
+void func_80012790(Note* note, SequenceLayer* layer);
+void func_80013A64(Note* note);
+Note* func_80012FFC(SequenceLayer* layer);
+u8 func_800152A0(SequenceChannel* channel, u8 arg1, Instrument** instrument, AdsrSettings* adsrSettings);
+void func_80012AA4(NotePool* pool, s32);
+void func_80011F88(void);
+void func_80013588(SequencePlayer* seqplayer);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800140EC.s")
+void func_80013E80(SequenceChannel* channel) {
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_8001413C.s")
+    channel->enabled = 0;
+    channel->finished = 0;
+    channel->stopScript = 0;
+    channel->muted = 0;
+    channel->hasInstrument = false;
+    channel->stereoHeadsetEffects = 0;
+    channel->transposition = 0;
+    channel->largeNotes = 0;
+    channel->bookOffset = 0;
+    channel->changes.asByte = 0xFF;
+    channel->scriptState.depth = 0;
+    channel->newPan = 0x40;
+    channel->panChannelWeight = 0x80;
+    channel->noteUnused = NULL;
+    channel->someOtherPriority = 0;
+    channel->targetReverbVol = 0;
+    channel->reverbIndex = 0;
+    channel->notePriority = 3;
+    channel->delay = 0;
+    channel->adsr.envelope = gDefaultEnvelope;
+    channel->adsr.decayIndex = 0x20;
+    channel->vibratoRateTarget = 0x800;
+    channel->vibratoRateStart = 0x800;
+    channel->adsr.sustain = 0;
+    channel->vibratoDepthTarget = 0;
+    channel->vibratoDepthStart = 0;
+    channel->vibratoRateChangeDelay = 0;
+    channel->vibratoDepthChangeDelay = 0;
+    channel->vibratoDelay = 0;
+    channel->volume = 1.0f;
+    channel->volumeMod = 1.0f;
+    channel->freqMod = 1.0f;
+    for (i = 0; i < 8; i++) {
+        channel->seqScriptIO[i] = -1;
+    }
+    channel->unused = 0;
+    func_80012844(&channel->notePool);
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800141A8.s")
+s32 func_80013FA4(SequenceChannel* channel, s32 arg1) {
+    SequenceLayer* temp_v0;
+    SequenceLayer* temp;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80014224.s")
+    if (channel->layers[arg1] == NULL) {
+        temp_v0 = func_800145DC(&gLayerFreeList);
+        channel->layers[arg1] = temp_v0;
+        if (temp_v0 == NULL) {
+            channel->layers[arg1] = NULL;
+            return -1;
+        }
+    } else {
+        func_8001264C(channel->layers[arg1]);
+    }
+    temp = channel->layers[arg1];
+    temp->channel = channel;
+    temp->adsr = channel->adsr;
+    temp->enabled = 1;
+    temp->muted = 0;
+    temp->continuousNotes = 0;
+    temp->finished = 0;
+    temp->adsr.decayIndex = 0;
+    temp->bit1 = 0;
+    temp->stereo.asByte = 0x40;
+    temp->portamento.mode = 0;
+    temp->state.depth = 0;
+    temp->unk_3 = 0;
+    temp->gateTime = 0x80;
+    temp->pan = 0x40;
+    temp->transposition = 0;
+    temp->delay = 0;
+    temp->gateDelay = 0;
+    temp->delay2 = 0;
+    temp->note = NULL;
+    temp->instrument = NULL;
+    temp->instOrWave = 0xFF;
+    temp->freqMod = 1.0f;
+    temp->velocitySquare = 0.0f;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80014350.s")
+    return 0;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80014420.s")
+void func_800140B0(SequenceLayer* layer) {
+    if (layer != NULL) {
+        func_8001264C(layer);
+        layer->enabled = 0;
+        layer->finished = 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800144C4.s")
+void func_800140EC(SequenceChannel* channel, s32 arg1) {
+    SequenceLayer* temp_a2 = channel->layers[arg1];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_8001459C.s")
+    if (temp_a2 != NULL) {
+        func_8001459C(&gLayerFreeList, &temp_a2->listItem);
+        func_800140B0(temp_a2);
+        channel->layers[arg1] = NULL;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800145DC.s")
+void func_8001413C(SequenceChannel* channel) {
+    s32 var_s0;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_8001461C.s")
+    for (var_s0 = 0; var_s0 < ARRAY_COUNT(channel->layers); var_s0++) {
+        func_800140EC(channel, var_s0);
+    }
+    func_80012944(&channel->notePool);
+    channel->enabled = 0;
+    channel->finished = 1;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800146A0.s")
+SequenceChannel* func_800141A8(void) {
+    s32 i;
+    SequenceChannel* var_v1;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800146B4.s")
+    for (i = 0; i < 48; i++) {
+        if (gSeqChannels[i].seqPlayer == NULL) {
+            return &gSeqChannels[i];
+        }
+    }
+    return &gSeqChannelNone;
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800146E4.s")
+void func_80014224(SequencePlayer* seqPlayer, u16 arg1) {
+    SequenceChannel* temp_s0;
+    SequenceChannel* temp_v0;
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80014728.s")
+    for (i = 0; i < 16; i++) {
+        if (arg1 & 1) {
+            temp_s0 = seqPlayer->channels[i];
+            if ((IS_SEQUENCE_CHANNEL_VALID(temp_s0) == 1) && (seqPlayer == temp_s0->seqPlayer)) {
+                func_8001413C(temp_s0);
+                temp_s0->seqPlayer = NULL;
+            }
+            temp_v0 = func_800141A8();
+            if (IS_SEQUENCE_CHANNEL_VALID(temp_v0) == 0) {
+                D_80157EF8 = i + 0x10000;
+                seqPlayer->channels[i] = temp_v0;
+            } else {
+                func_80013E80(temp_v0);
+                seqPlayer->channels[i] = temp_v0;
+                temp_v0->seqPlayer = seqPlayer;
+                temp_v0->fontId = seqPlayer->defaultFont;
+                temp_v0->muteBehavior = seqPlayer->muteBehavior;
+                temp_v0->noteAllocPolicy = seqPlayer->noteAllocPolicy;
+            }
+        }
+        arg1 = arg1 >> 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800152A0.s")
+void func_80014350(SequencePlayer* seqPlayer, u16 arg1) {
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80015310.s")
+    for (i = 0; i < 16; i++) {
+        if (arg1 & 1) {
+            SequenceChannel* temp_s0 = seqPlayer->channels[i];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800153A4.s")
+            if (IS_SEQUENCE_CHANNEL_VALID(temp_s0) == 1) {
+                if (seqPlayer == temp_s0->seqPlayer) {
+                    func_8001413C(temp_s0);
+                    if (0) {}
+                    temp_s0->seqPlayer = NULL;
+                }
+                seqPlayer->channels[i] = &gSeqChannelNone;
+            }
+        }
+        arg1 = arg1 >> 1;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800153C8.s")
+void func_80014420(SequencePlayer* seqPlayer, u8 arg1, u8* arg2) {
+    SequenceChannel* channel = seqPlayer->channels[arg1];
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_80015FB4.s")
+    if (IS_SEQUENCE_CHANNEL_VALID(channel) != 0) {
+        channel->scriptState.depth = 0;
+        channel->scriptState.pc = arg2;
+        channel->enabled = 1;
+        channel->finished = 0;
+        channel->delay = 0;
+        for (i = 0; i < ARRAY_COUNT(channel->layers); i++) {
+            if (channel->layers[i] != NULL) {
+                func_800140EC(channel, i);
+            }
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_8001676C.s")
+void func_800144C4(SequencePlayer* seqPlayer) {
+    func_80014350(seqPlayer, 0xFFFF);
+    func_80012944(&seqPlayer->notePool);
+    seqPlayer->finished = 1;
+    seqPlayer->enabled = 0;
+    if ((gSeqLoadStatus[seqPlayer->seqId] >= 2) && (gSeqLoadStatus[seqPlayer->seqId] != 5)) {
+        gSeqLoadStatus[seqPlayer->seqId] = 3;
+    }
+    if ((gFontLoadStatus[seqPlayer->defaultFont] >= 2) && (gFontLoadStatus[seqPlayer->defaultFont] != 5)) {
+        gFontLoadStatus[seqPlayer->defaultFont] = 4;
+    }
+    if (seqPlayer->defaultFont == gFontCache.temporary.entries[0].id) {
+        gFontCache.temporary.nextSide = 1;
+    } else if (seqPlayer->defaultFont == gFontCache.temporary.entries[1].id) {
+        gFontCache.temporary.nextSide = 0;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800167E4.s")
+void func_8001459C(AudioListItem* list, AudioListItem* item) {
+    if (item->prev == NULL) {
+        list->prev->next = item;
+        item->prev = list->prev;
+        item->next = list;
+        list->prev = item;
+        list->u.count++;
+        item->pool = list->pool;
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_8001689C.s")
+void* func_800145DC(AudioListItem* list) {
+    AudioListItem* item = list->prev;
+
+    if (item == list) {
+        return NULL;
+    }
+    item->prev->next = list;
+    list->prev = item->prev;
+    item->prev = NULL;
+    list->u.count--;
+    return item->u.value;
+}
+
+void func_8001461C(void) {
+    s32 i;
+
+    gLayerFreeList.prev = &gLayerFreeList;
+    gLayerFreeList.next = &gLayerFreeList;
+    gLayerFreeList.u.value = NULL;
+    gLayerFreeList.pool = NULL;
+
+    for (i = 0; i < 64; i++) {
+        gSeqLayers[i].listItem.u.value = &gSeqLayers[i];
+        gSeqLayers[i].listItem.prev = NULL;
+        func_8001459C(&gLayerFreeList, &gSeqLayers[i].listItem);
+    }
+}
+
+u8 func_800146A0(SeqScriptState* state) {
+    return *(state->pc++);
+}
+
+s16 func_800146B4(SeqScriptState* state) {
+    s16 ret = *(state->pc++) << 8;
+
+    ret = *(state->pc++) | ret;
+    return ret;
+}
+
+u16 func_800146E4(SeqScriptState* state) {
+    u16 ret = *(state->pc++);
+
+    if (ret & 0x80) {
+        ret = (ret << 8) & 0x7F00;
+        ret = *(state->pc++) | ret;
+    }
+    return ret;
+}
+
+void func_80014728(SequenceLayer* layer) {
+    SequencePlayer* seqPlayer;
+    SequenceChannel* channel; // sp60
+    SeqScriptState* state;
+    u8 cmd;
+    Drum* drum;
+    Instrument* instrument;
+    TunedSample* sample;
+    Portamento* portamento;
+    s16 var_s2;
+    u16 sp44;        // sp44
+    s32 sp40 = true; // sp40
+
+    if (!layer->enabled) {
+        return;
+    }
+    if (layer->delay >= 2) {
+        layer->delay--;
+        if (!layer->muted && (layer->gateDelay >= layer->delay)) {
+            func_8001264C(layer);
+            layer->muted = 1;
+        }
+        return;
+    }
+    if (!layer->continuousNotes) {
+        func_8001264C(layer);
+    } else if ((layer->note != NULL) && (layer == layer->note->playbackState.wantedParentLayer)) {
+        func_8001264C(layer);
+    }
+    if (((layer->portamento.mode & ~0x80) == 1) || ((layer->portamento.mode & ~0x80) == 2)) {
+        layer->portamento.mode = 0;
+    }
+    channel = layer->channel;
+    state = &layer->state;
+    seqPlayer = channel->seqPlayer;
+    layer->ignoreDrumPan = 1;
+    while (true) {
+        cmd = func_800146A0(state);
+        if (cmd <= 0xC0) {
+            break;
+        }
+        switch (cmd) {
+            case 0xFF:
+                if (state->depth == 0) {
+                    func_800140B0(layer);
+                    return;
+                }
+                state->pc = state->stack[--state->depth];
+                break;
+            case 0xFC:
+                sp44 = func_800146B4(state);
+                state->stack[state->depth] = state->pc;
+                state->depth++;
+                state->pc = &seqPlayer->seqData[sp44];
+                break;
+            case 0xF8:
+                state->remLoopIters[state->depth] = func_800146A0(state);
+                state->stack[state->depth] = state->pc;
+                state->depth++;
+                break;
+            case 0xF7:
+                state->remLoopIters[state->depth - 1]--;
+                if (state->remLoopIters[state->depth - 1] != 0) {
+                    state->pc = state->stack[state->depth - 1];
+                } else {
+                    state->depth--;
+                }
+                break;
+            case 0xFB:
+                sp44 = func_800146B4(state);
+                state->pc = &seqPlayer->seqData[sp44];
+                break;
+            case 0xF4:
+                state->pc += (s8) func_800146A0(state);
+                break;
+            case 0xC1:
+            case 0xCA:
+                var_s2 = *state->pc++;
+                if (cmd == 0xC1) {
+                    layer->velocitySquare = (f32) (var_s2 * var_s2) / 16129.0f;
+                } else {
+                    layer->pan = var_s2;
+                }
+                break;
+            case 0xC2:
+            case 0xC9:
+                var_s2 = *state->pc++;
+                if (cmd == 0xC9) {
+                    layer->gateTime = var_s2;
+                } else {
+                    layer->transposition = var_s2;
+                }
+                break;
+            case 0xC4:
+            case 0xC5:
+                if (cmd == 0xC4) {
+                    layer->continuousNotes = 1;
+                } else {
+                    layer->continuousNotes = 0;
+                }
+                func_8001264C(layer);
+                break;
+            case 0xC3:
+                sp44 = func_800146E4(state);
+                layer->shortNoteDefaultDelay = sp44;
+                break;
+            case 0xC6:
+                cmd = func_800146A0(state);
+                if (cmd >= 127) {
+                    if (cmd == 127) {
+                        layer->instOrWave = 0;
+                    } else {
+                        layer->instOrWave = cmd;
+                        layer->instrument = NULL;
+                    }
+                    if (cmd == 255) {
+                        layer->adsr.decayIndex = 0;
+                    }
+                } else {
+                    // cmd = func_800152A0(channel, cmd, &layer->instrument, &layer->adsr);
+                    // layer->instOrWave = cmd;
+                    if ((layer->instOrWave = func_800152A0(channel, cmd, &layer->instrument, &layer->adsr)) == 0) {
+                        layer->instOrWave = 0xFF;
+                    }
+                }
+                break;
+            case 0xC7:
+                layer->portamento.mode = func_800146A0(state);
+                cmd = func_800146A0(state) + channel->transposition + layer->transposition + seqPlayer->transposition;
+                if (cmd > 127) {
+                    cmd = 0;
+                }
+                layer->portamentoTargetNote = cmd;
+                if (layer->portamento.mode & 0x80) {
+                    layer->portamentoTime = *state->pc++;
+                } else {
+                    sp44 = func_800146E4(state);
+                    layer->portamentoTime = sp44;
+                }
+                break;
+            case 0xC8:
+                layer->portamento.mode = 0;
+                break;
+            case 0xCB:
+                sp44 = func_800146B4(state);
+                layer->adsr.envelope = (EnvelopePoint*) &seqPlayer->seqData[sp44];
+                layer->adsr.decayIndex = func_800146A0(state);
+                break;
+            case 0xCC:
+                layer->bit1 = 1;
+                break;
+            case 0xCD:
+                layer->stereo.asByte = func_800146A0(state);
+                break;
+            default:
+                switch (cmd & 0xF0) { /* switch 6; irregular */
+                    case 0xD0:
+                        sp44 = (u16) seqPlayer->shortNoteVelocityTable[cmd & 0xF];
+                        layer->velocitySquare = (f32) (sp44 * sp44) / 16129.0f;
+                        break;
+                    case 0xE0:
+                        layer->gateTime = seqPlayer->shortNoteGateTimeTable[cmd & 0xF];
+                        break;
+                    default:
+                        break;
+                }
+                break;
+        }
+    }
+    if (cmd == 0xC0) {
+        layer->delay = func_800146E4(state);
+        layer->muted = true;
+    } else {
+        f32 tuning;
+        f32 freqMod;
+        u32 instOrWave;
+        s32 vel; // sp30
+        f32 temp_fa1;
+        f32 temp_fv1;
+        f32 var_v0_2;
+        s32 temp2;
+
+        layer->muted = false;
+        if (channel->largeNotes == 1) {
+            switch (cmd & 0xC0) {
+                case 0x00:
+                    sp44 = func_800146E4(state);
+                    vel = *state->pc++;
+                    layer->gateTime = *state->pc++;
+                    layer->lastDelay = sp44;
+                    break;
+                case 0x40:
+                    sp44 = func_800146E4(state);
+                    vel = *state->pc++;
+                    layer->gateTime = 0;
+                    layer->lastDelay = sp44;
+                    break;
+                case 0x80:
+                    sp44 = layer->lastDelay;
+                    vel = *state->pc++;
+                    layer->gateTime = *state->pc++;
+
+                    break;
+            }
+            if ((vel > 127) || (vel < 0)) {
+                vel = 127;
+            }
+            layer->velocitySquare = SQ((f32) vel) / 16129.0f;
+            cmd -= (cmd & 0xC0);
+        } else {
+            switch (cmd & 0xC0) { /* switch 4; irregular */
+                case 0x0:
+                    sp44 = func_800146E4(state);
+                    layer->lastDelay = sp44;
+                    break;
+                case 0x40:
+                    sp44 = layer->shortNoteDefaultDelay;
+                    break;
+                case 0x80:
+                    sp44 = layer->lastDelay;
+                    break;
+            }
+            cmd -= (cmd & 0xC0);
+        }
+        layer->delay = sp44;
+        layer->gateDelay = (layer->gateTime * sp44) >> 8;
+        if ((seqPlayer->muted && (channel->muteBehavior & 0x50)) || (channel->muted)) {
+            layer->muted = 1;
+        } else {
+            instOrWave = layer->instOrWave;
+            if (instOrWave == 0xFF) {
+                if (!channel->hasInstrument) {
+                    return;
+                }
+                instOrWave = channel->instOrWave;
+            }
+            if (instOrWave == 0) {
+                cmd = cmd + channel->transposition + layer->transposition;
+                drum = Audio_GetDrum(channel->fontId, cmd);
+                if (drum == NULL) {
+                    layer->muted = true;
+                    layer->delay2 = layer->delay;
+                    return;
+                }
+                layer->adsr.envelope = drum->envelope;
+                layer->adsr.decayIndex = drum->adsrDecayIndex;
+                if (!layer->bit1) {
+                    layer->pan = drum->pan;
+                }
+                layer->tunedSample = &drum->tunedSample;
+                layer->freqMod = layer->tunedSample->tuning;
+            } else {
+                cmd = cmd + seqPlayer->transposition + channel->transposition + layer->transposition;
+                if (cmd >= 0x80) {
+                    layer->muted = 1;
+                } else {
+                    if (layer->instOrWave == 0xFF) {
+                        instrument = channel->instrument;
+                    } else {
+                        instrument = layer->instrument;
+                    }
+                    if (layer->portamento.mode != 0) {
+
+                        if (layer->portamentoTargetNote < cmd) {
+                            temp2 = cmd;
+                        } else {
+                            temp2 = layer->portamentoTargetNote;
+                        }
+                        if (instrument != NULL) {
+                            sample = func_80011CF0(instrument, temp2);
+                            sp40 = (sample == layer->tunedSample);
+                            layer->tunedSample = sample;
+                            tuning = sample->tuning;
+                        } else {
+                            tuning = 1.0f;
+                            layer->tunedSample = NULL;
+                        }
+                        temp_fv1 = gPitchFrequencies[cmd] * tuning;
+                        temp_fa1 = gPitchFrequencies[layer->portamentoTargetNote] * tuning;
+                        portamento = &layer->portamento;
+                        switch (portamento->mode & ~0x80) {
+                            case 1:
+                            case 3:
+                            case 5:
+                                var_v0_2 = temp_fv1;
+                                freqMod = temp_fa1;
+                                break;
+                            case 2:
+                            case 4:
+                                freqMod = temp_fv1;
+                                var_v0_2 = temp_fa1;
+                                break;
+                            default:
+                                freqMod = temp_fv1;
+                                var_v0_2 = temp_fv1;
+                                break;
+                        }
+
+                        portamento->extent = (var_v0_2 / freqMod) - 1.0f;
+                        if (layer->portamento.mode & 0x80) {
+                            portamento->speed = ((s32) seqPlayer->tempo * 32512.0f) /
+                                                ((f32) layer->delay * gMaxTempo * (s32) layer->portamentoTime);
+                        } else {
+                            portamento->speed = 127.0f / (s32) layer->portamentoTime;
+                        }
+                        portamento->cur = 0.0f;
+                        layer->freqMod = freqMod;
+                        if ((layer->portamento.mode & ~0x80) == 5) {
+                            layer->portamentoTargetNote = cmd;
+                        }
+                    } else if (instrument != NULL) {
+                        sample = func_80011CF0(instrument, cmd);
+                        sp40 = (sample == layer->tunedSample);
+                        layer->tunedSample = sample;
+                        layer->freqMod = gPitchFrequencies[cmd] * sample->tuning;
+                    } else {
+                        layer->tunedSample = NULL;
+                        layer->freqMod = gPitchFrequencies[cmd];
+                    }
+                }
+            }
+            layer->delay2 = layer->delay;
+        }
+    }
+    if ((layer->muted == 0) && (layer->tunedSample != NULL) && (layer->tunedSample->sample->codec == 2) &&
+        (layer->tunedSample->sample->medium != 0)) {
+        layer->muted = 1;
+    }
+    if (layer->muted == 1) {
+        if ((layer->note != NULL) || (layer->continuousNotes)) {
+            func_8001264C(layer);
+        }
+    } else {
+        cmd = 0;
+        if (!layer->continuousNotes) {
+            cmd = 1;
+        } else if ((layer->note == NULL) || ((u8) layer->unk_3 == 0)) {
+            cmd = 1;
+        } else if (sp40 == 0) {
+            func_8001264C(layer);
+            cmd = 1;
+        } else if (layer != layer->note->playbackState.parentLayer) {
+            cmd = 1;
+        } else if (layer->tunedSample == NULL) {
+            func_80012790(layer->note, layer);
+        }
+        if (cmd != 0) {
+            layer->note = func_80012FFC(layer);
+        }
+        if ((layer->note != NULL) && (layer == layer->note->playbackState.parentLayer)) {
+            func_80013A64(layer->note);
+        }
+    }
+    if (!channel) {}
+}
+
+u8 func_800152A0(SequenceChannel* channel, u8 arg1, Instrument** instrument, AdsrSettings* adsrSettings) {
+    Instrument* temp_v0;
+
+    temp_v0 = Audio_GetInstrument(channel->fontId, arg1);
+    if (temp_v0 == NULL) {
+        *instrument = NULL;
+        return 0;
+    }
+
+    adsrSettings->envelope = temp_v0->envelope;
+    adsrSettings->decayIndex = temp_v0->adsrDecayIndex;
+    *instrument = temp_v0;
+    arg1++;
+    return arg1;
+}
+
+void func_80015310(SequenceChannel* channel, u8 arg1) {
+    if (arg1 >= 0x80) {
+        channel->instOrWave = arg1;
+        channel->instrument = NULL;
+    } else if (arg1 == 0x7F) {
+        channel->instOrWave = 0;
+        channel->instrument = (Instrument*) 1;
+    } else {
+        if ((channel->instOrWave = func_800152A0(channel, arg1, &channel->instrument, &channel->adsr)) == 0) {
+            channel->hasInstrument = false;
+            return;
+        }
+    }
+    channel->hasInstrument = true;
+}
+
+void func_800153A4(SequenceChannel* channel, u8 arg1) {
+    channel->volume = (s32) arg1 / 127.0f;
+}
+
+// #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_seqplayer/func_800153C8.s")
+void func_800153C8(SequenceChannel* channel) {
+    s32 i;
+    SequencePlayer* seqPlayer;
+    u8 cmd;
+    s8 temps8;
+    u8 loBits;
+    u16 sp52;
+    SeqScriptState* state;
+    s8 sp4B;
+    u8* seqData;
+    s32 pad;
+
+    if (!channel->enabled) {
+        return;
+    }
+    if (channel->stopScript) {
+        for (i = 0; i < ARRAY_COUNT(channel->layers); i++) {
+            if (channel->layers[i] != NULL) {
+                func_80014728(channel->layers[i]);
+            }
+        }
+        return;
+    }
+    seqPlayer = channel->seqPlayer;
+    if ((seqPlayer->muted) && (channel->muteBehavior & 0x80)) {
+        return;
+    }
+
+    if (channel->delay != 0) {
+        channel->delay--;
+    }
+
+    if (channel->delay == 0) {
+
+        while (true) {
+            state = &channel->scriptState;
+            cmd = func_800146A0(state);
+            if (cmd > 0xC0) {
+                switch (cmd) {
+                    case 0xD5:
+                    case 0xD6:
+                        break;
+                    case 0xFF:
+                        if (state->depth == 0) {
+                            func_8001413C(channel);
+                            goto end_loop;
+                        }
+                        state->pc = state->stack[--state->depth];
+                        break;
+                    case 0xFE:
+                        goto end_loop;
+                    case 0xFD:
+                        channel->delay = func_800146E4(state);
+                        goto end_loop;
+                    case 0xEA:
+                        channel->stopScript = 1;
+                        goto end_loop;
+                    case 0xFC:
+                        // if (0 && state->depth >= 4) {
+                        // }
+                        sp52 = func_800146B4(state);
+                        state->stack[state->depth] = state->pc;
+                        state->depth++;
+                        state->pc = &seqPlayer->seqData[sp52];
+                        break;
+                    case 0xF8:
+                        // if (0 && state->depth >= 4) {
+                        // }
+                        state->remLoopIters[state->depth] = func_800146A0(state);
+                        state->stack[state->depth] = state->pc;
+                        state->depth++;
+                        break;
+                    case 0xF7:
+                        state->remLoopIters[state->depth - 1]--;
+                        if (state->remLoopIters[state->depth - 1] != 0) {
+                            state->pc = state->stack[state->depth - 1];
+                        } else {
+                            state->depth--;
+                        }
+                        break;
+                    case 0xF6:
+                        state->depth--;
+                        break;
+                    case 0xF5:
+                    case 0xF9:
+                    case 0xFA:
+                    case 0xFB:
+                        sp52 = func_800146B4(state);
+                        if (((cmd == 0xFA) && (sp4B != 0)) || ((cmd == 0xF9) && (sp4B >= 0)) ||
+                            ((cmd == 0xF5) && (sp4B < 0))) {
+                            break;
+                        }
+                        state->pc = &seqPlayer->seqData[sp52];
+                        break;
+                    case 0xF2:
+                    case 0xF3:
+                    case 0xF4:
+                        temps8 = func_800146A0(state);
+                        if (((cmd == 0xF3) && (sp4B != 0)) || ((cmd == 0xF2) && (sp4B >= 0))) {
+                            break;
+                        }
+                        state->pc = &state->pc[temps8];
+                        break;
+                    case 0xF1:
+                        func_80012944(&channel->notePool);
+                        func_80012AA4(&channel->notePool, func_800146A0(state));
+                        break;
+                    case 0xF0:
+                        func_80012944(&channel->notePool);
+                        break;
+                    case 0xC2:
+                        sp52 = func_800146B4(state);
+                        channel->dynTable = (u8(*)[2]) & seqPlayer->seqData[sp52];
+                        break;
+                    case 0xC5:
+                        if (sp4B != -1) {
+                            seqData = channel->dynTable[sp4B];
+                            sp52 = (seqData[0] << 8) + seqData[1];
+                            channel->dynTable = (u8(*)[2]) & seqPlayer->seqData[sp52];
+                        }
+                        break;
+                    case 0xEB:
+                        cmd = func_800146A0(state);
+                        sp52 = ((u16*) gSeqFontTable)[seqPlayer->seqId];
+                        loBits = gSeqFontTable[sp52];
+                        cmd = gSeqFontTable[sp52 + loBits - cmd];
+                        if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, cmd) != NULL) {
+                            channel->fontId = cmd;
+                        }
+                        /* fallthrough */
+                    case 0xC1:
+                        cmd = func_800146A0(state);
+                        func_80015310(channel, cmd);
+                        break;
+                    case 0xC3:
+                        channel->largeNotes = false;
+                        break;
+                    case 0xC4:
+                        channel->largeNotes = true;
+                        break;
+                    case 0xDF:
+                        cmd = func_800146A0(state);
+                        func_800153A4(channel, cmd);
+                        channel->changes.s.volume = 1;
+                        break;
+                    case 0xE0:
+                        channel->volumeMod = (s32) func_800146A0(state) / 128.0f;
+                        channel->changes.s.volume = 1;
+                        break;
+                    case 0xDE:
+                        sp52 = func_800146B4(state);
+                        channel->freqMod = (s32) sp52 / 32768.0f;
+                        channel->changes.s.freqMod = 1;
+                        break;
+                    case 0xD3:
+                        cmd = func_800146A0(state) + 0x80;
+                        channel->freqMod = gBendPitchOneOctaveFrequencies[cmd];
+                        channel->changes.s.freqMod = 1;
+                        break;
+                    case 0xEE:
+                        cmd = func_800146A0(state) + 0x80;
+                        channel->freqMod = gBendPitchTwoSemitonesFrequencies[cmd];
+                        channel->changes.s.freqMod = 1;
+                        break;
+                    case 0xDD:
+                        channel->newPan = func_800146A0(state);
+                        channel->changes.s.pan = 1;
+                        break;
+                    case 0xDC:
+                        channel->panChannelWeight = func_800146A0(state);
+                        channel->changes.s.pan = 1;
+                        break;
+                    case 0xDB:
+                        temps8 = *(state->pc++);
+                        channel->transposition = temps8;
+                        break;
+                    case 0xDA:
+                        sp52 = func_800146B4(state);
+                        channel->adsr.envelope = (EnvelopePoint*) &seqPlayer->seqData[sp52];
+                        break;
+                    case 0xD9:
+                        channel->adsr.decayIndex = func_800146A0(state);
+                        break;
+                    case 0xD8:
+                        channel->vibratoDepthTarget = func_800146A0(state) * 8;
+                        channel->vibratoDepthStart = 0;
+                        channel->vibratoDepthChangeDelay = 0;
+                        break;
+                    case 0xD7:
+                        channel->vibratoRateStart = channel->vibratoRateTarget = func_800146A0(state) * 32;
+                        channel->vibratoRateChangeDelay = 0;
+                        break;
+                    case 0xE2:
+                        channel->vibratoDepthStart = func_800146A0(state) * 8;
+                        channel->vibratoDepthTarget = func_800146A0(state) * 8;
+                        channel->vibratoDepthChangeDelay = func_800146A0(state) * 0x10;
+                        break;
+                    case 0xE1:
+                        channel->vibratoRateStart = func_800146A0(state) * 32;
+                        channel->vibratoRateTarget = func_800146A0(state) * 32;
+                        channel->vibratoRateChangeDelay = func_800146A0(state) * 0x10;
+                        break;
+                    case 0xE3:
+                        channel->vibratoDelay = func_800146A0(state) * 0x10;
+                        break;
+                    case 0xD4:
+                        channel->targetReverbVol = func_800146A0(state);
+                        break;
+                    case 0xC6:
+                        cmd = func_800146A0(state);
+                        sp52 = ((u16*) gSeqFontTable)[seqPlayer->seqId];
+                        loBits = gSeqFontTable[sp52];
+                        cmd = gSeqFontTable[sp52 + loBits - cmd];
+                        if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, cmd) != NULL) {
+                            channel->fontId = cmd;
+                        }
+                        break;
+                    case 0xC7:
+                        cmd = func_800146A0(state);
+                        sp52 = func_800146B4(state);
+                        seqData = &seqPlayer->seqData[sp52];
+                        *seqData = (u8) sp4B + cmd;
+                        break;
+                    case 0xC8:
+                    case 0xC9:
+                    case 0xCC:
+                        temps8 = func_800146A0(state);
+                        if (cmd == 0xC8) {
+                            sp4B -= temps8;
+                        } else if (cmd == 0xCC) {
+                            sp4B = temps8;
+                        } else {
+                            sp4B &= temps8;
+                        }
+                        break;
+                    case 0xCD:
+                        func_8001413C(seqPlayer->channels[func_800146A0(state)]);
+                        break;
+                    case 0xCA:
+                        channel->muteBehavior = func_800146A0(state);
+                        break;
+                    case 0xCB:
+                        sp52 = func_800146B4(state);
+                        pad = sp52 + sp4B;
+                        // seqData =&seqPlayer->seqData[sp4B];
+                        sp4B = seqPlayer->seqData[pad];
+                        break;
+                    case 0xCE:
+                        channel->unkC4 = func_800146B4(state);
+                        break;
+                    case 0xCF:
+                        sp52 = func_800146B4(state);
+                        seqData = &seqPlayer->seqData[sp52];
+                        seqData[0] = (channel->unkC4 >> 8) & 0xFF;
+                        seqData[1] = channel->unkC4 & 0xFF;
+                        break;
+                    case 0xD0:
+                        channel->stereoHeadsetEffects = func_800146A0(state);
+                        break;
+                    case 0xD1:
+                        channel->noteAllocPolicy = func_800146A0(state);
+                        break;
+                    case 0xD2:
+                        channel->adsr.sustain = func_800146A0(state);
+                        break;
+                    case 0xE5:
+                        channel->someOtherPriority = func_800146A0(state);
+                        break;
+                    case 0xE4:
+                        if (sp4B != -1) {
+                            if (state->depth >= 4) {
+                                // eu_stubbed_printf_0("Audio:Track: CTBLCALL Macro Level Over Error!\n");
+                            }
+                            seqData = channel->dynTable[sp4B];
+                            state->stack[state->depth++] = state->pc;
+                            sp52 = (seqData[0] << 8) + seqData[1];
+                            state->pc = &seqPlayer->seqData[sp52];
+                            // if (0 && sp52 >= gSequenceTable->entries[seqPlayer->seqId].size) {
+                            //     // eu_stubbed_printf_3("Err :Sub %x ,address %x:Undefined SubTrack Function %x",
+                            //     seqChannel, state->pc, sp38);
+                            // }
+                        }
+                        break;
+                    case 0xE6:
+                        channel->bookOffset = func_800146A0(state);
+                        break;
+                    case 0xE7:
+                        sp52 = func_800146B4(state);
+                        seqData = &seqPlayer->seqData[sp52];
+                        channel->muteBehavior = *seqData++;
+                        channel->noteAllocPolicy = *seqData++;
+                        channel->notePriority = *seqData++;
+                        channel->transposition = (s8) *seqData++;
+                        channel->newPan = *seqData++;
+                        channel->panChannelWeight = *seqData++;
+                        channel->targetReverbVol = *seqData++;
+                        channel->someOtherPriority = *seqData++;
+                        channel->changes.s.pan = 1;
+                        break;
+                    case 0xE8:
+                        channel->muteBehavior = func_800146A0(state);
+                        channel->noteAllocPolicy = func_800146A0(state);
+                        channel->notePriority = func_800146A0(state);
+                        channel->transposition = (s8) func_800146A0(state);
+                        channel->newPan = func_800146A0(state);
+                        channel->panChannelWeight = func_800146A0(state);
+                        channel->targetReverbVol = func_800146A0(state);
+                        channel->someOtherPriority = func_800146A0(state);
+                        channel->changes.s.pan = 1;
+                        break;
+                    case 0xEC:
+                        channel->vibratoDepthTarget = 0;
+                        channel->vibratoDepthStart = 0;
+                        channel->vibratoDepthChangeDelay = 0;
+                        channel->vibratoRateTarget = 0;
+                        channel->vibratoRateStart = 0;
+                        channel->vibratoRateChangeDelay = 0;
+                        channel->freqMod = 1.0f;
+                        break;
+                    case 0xE9:
+                        channel->notePriority = func_800146A0(state);
+                        break;
+                    case 0xED:
+                        // cmd =
+                        channel->reverbIndex = func_800146A0(state);
+                        break;
+                    case 0xEF:
+                        func_800146B4(state);
+                        func_800146A0(state);
+                        break;
+                }
+            } else {
+                loBits = cmd & 0xF;
+                switch (cmd & 0xF0) {
+                    case 0x0:
+                        if (channel->layers[loBits] != NULL) {
+                            sp4B = channel->layers[loBits]->finished;
+                        } else {
+                            sp4B = -1;
+                        }
+                        break;
+                    case 0x10:
+                        channel->seqScriptIO[loBits] = -1;
+                        if (AudioLoad_SlowLoadSample(channel->fontId, sp4B, &channel->seqScriptIO[loBits]) == -1) {}
+                        break;
+                    case 0x70:
+                        channel->seqScriptIO[loBits] = sp4B;
+                        break;
+                    case 0x80:
+                        sp4B = channel->seqScriptIO[loBits];
+                        if (loBits < 4) {
+                            channel->seqScriptIO[loBits] = -1;
+                        }
+                        break;
+                    case 0x50:
+                        sp4B -= channel->seqScriptIO[loBits];
+                        break;
+                    case 0x60:
+                        channel->delay = loBits;
+                        goto end_loop;
+                    case 0x90:
+                        sp52 = func_800146B4(state);
+                        if (func_80013FA4(channel, loBits) == 0) {
+                            // if(1) {}
+                            channel->layers[loBits]->state.pc = &seqPlayer->seqData[sp52];
+                        }
+                        break;
+                    case 0xA0:
+                        func_800140EC(channel, loBits);
+                        break;
+                    case 0xB0:
+                        if ((sp4B != -1) && (func_80013FA4(channel, loBits) != -1)) {
+                            seqData = channel->dynTable[sp4B];
+                            sp52 = (seqData[0] << 8) + seqData[1];
+                            channel->layers[loBits]->state.pc = &seqPlayer->seqData[sp52];
+                        }
+                        break;
+                    case 0x20:
+                        sp52 = func_800146B4(state);
+                        func_80014420(seqPlayer, loBits, &seqPlayer->seqData[sp52]);
+                        break;
+                    case 0x30:
+                        cmd = func_800146A0(state);
+                        seqPlayer->channels[loBits]->seqScriptIO[cmd] = sp4B;
+                        break;
+                    case 0x40:
+                        cmd = func_800146A0(state);
+                        sp4B = seqPlayer->channels[loBits]->seqScriptIO[cmd];
+                        break;
+                }
+            }
+        }
+    }
+end_loop:;
+    for (i = 0; i < ARRAY_COUNT(channel->layers); i++) {
+        if (channel->layers[i] != NULL) {
+            func_80014728(channel->layers[i]);
+        }
+    }
+}
+
+void func_80015FB4(SequencePlayer* seqPlayer) {
+    u8 temp_s2;
+    u8 temp_v0_8;
+    u16 temp_v0_7;
+    u8* temp_v1_7;
+    SeqScriptState* temp_s0;
+    s32 sp50;
+    s32 i;
+    s8 pad;
+    u8* pad2;
+    s32 pad3;
+
+    if (!seqPlayer->enabled) {
+        return;
+    }
+    if (((gSeqLoadStatus[seqPlayer->seqId] < 2) != 0) ||
+        ((seqPlayer->defaultFont != 0xFF) && ((gFontLoadStatus[seqPlayer->defaultFont] < 2) != 0))) {
+        func_800144C4(seqPlayer);
+        return;
+    }
+    if (gSeqLoadStatus[seqPlayer->seqId] != 5) {
+        gSeqLoadStatus[seqPlayer->seqId] = 2;
+    }
+    if (gFontLoadStatus[seqPlayer->defaultFont] != 5) {
+        gFontLoadStatus[seqPlayer->defaultFont] = 2;
+    }
+    if (seqPlayer->muted && (seqPlayer->muteBehavior & 0x80)) {
+        return;
+    }
+    seqPlayer->tempoAcc += seqPlayer->tempo;
+    seqPlayer->tempoAcc = seqPlayer->tempoAcc + (s16) seqPlayer->tempoChange;
+    if (seqPlayer->tempoAcc < gMaxTempo) {
+        return;
+    }
+    seqPlayer->tempoAcc = (seqPlayer->tempoAcc - gMaxTempo) & 0xFFFF; // fake?
+    if (seqPlayer->delay > 1) {
+        seqPlayer->delay--;
+    } else {
+        temp_s0 = &seqPlayer->scriptState;
+        seqPlayer->recalculateVolume = true;
+        while (true) {
+            temp_s2 = func_800146A0(temp_s0);
+            if (temp_s2 == 0xFF) {
+                if (temp_s0->depth == 0) {
+                    func_800144C4(seqPlayer);
+                    break;
+                }
+                temp_s0->pc = temp_s0->stack[--temp_s0->depth];
+            }
+            if (temp_s2 == 0xFD) {
+                seqPlayer->delay = func_800146E4(temp_s0);
+                break;
+            }
+            if (temp_s2 == 0xFE) {
+                seqPlayer->delay = 1;
+                break;
+            }
+            if (temp_s2 >= 0xC0) {
+                switch (temp_s2) {
+                    case 0xFF:
+                        break;
+                    case 0xFC:
+                        temp_v0_7 = func_800146B4(temp_s0);
+
+                        temp_s0->stack[temp_s0->depth] = temp_s0->pc;
+                        temp_s0->depth++;
+                        temp_s0->pc = &seqPlayer->seqData[temp_v0_7];
+                        break;
+                    case 0xF8:
+                        temp_s0->remLoopIters[temp_s0->depth] = func_800146A0(temp_s0);
+                        temp_s0->stack[temp_s0->depth] = temp_s0->pc;
+                        temp_s0->depth++;
+                        break;
+                    case 0xF7:
+                        temp_s0->remLoopIters[temp_s0->depth - 1]--;
+                        if (temp_s0->remLoopIters[temp_s0->depth - 1] != 0) {
+                            temp_s0->pc = temp_s0->stack[temp_s0->depth - 1];
+                        } else {
+                            temp_s0->depth--;
+                        }
+                        break;
+                    case 0xF5:
+                    case 0xF9:
+                    case 0xFA:
+                    case 0xFB:
+                        temp_v0_7 = func_800146B4(temp_s0);
+                        if (((temp_s2 != 0xFA) || (sp50 == 0)) && ((temp_s2 != 0xF9) || (sp50 < 0)) &&
+                            ((temp_s2 != 0xF5) || (sp50 >= 0))) {
+                            temp_s0->pc = &seqPlayer->seqData[temp_v0_7];
+                        }
+                        break;
+                    case 0xF2:
+                    case 0xF3:
+                    case 0xF4:
+                        pad = func_800146A0(temp_s0);
+                        if (((temp_s2 != 0xF3) || (sp50 == 0)) && ((temp_s2 != 0xF2) || (sp50 < 0))) {
+                            temp_s0->pc = &temp_s0->pc[pad];
+                        }
+                        break;
+                    case 0xF1:
+                        func_80012944(&seqPlayer->notePool);
+                        func_80012AA4(&seqPlayer->notePool, func_800146A0(temp_s0));
+                        break;
+                    case 0xF0:
+                        func_80012944(&seqPlayer->notePool);
+                        break;
+                    case 0xDF:
+                        seqPlayer->transposition = 0;
+                        /* fallthrough */
+                    case 0xDE:
+                        seqPlayer->transposition += (s8) func_800146A0(temp_s0);
+                        break;
+                    case 0xDD:
+                        seqPlayer->tempo = func_800146A0(temp_s0) * 0x30;
+                        if (seqPlayer->tempo > gMaxTempo) {
+                            seqPlayer->tempo = gMaxTempo;
+                        }
+                        if ((s16) seqPlayer->tempo <= 0) {
+                            seqPlayer->tempo = 1;
+                        }
+                        break;
+                    case 0xDC:
+                        seqPlayer->tempoChange = (s8) func_800146A0(temp_s0) * 0x30;
+                        break;
+                    case 0xDA:
+                        temp_s2 = func_800146A0(temp_s0);
+                        temp_v0_7 = func_800146B4(temp_s0);
+                        switch (temp_s2) {
+                            case 0:
+                            case 1:
+                                if (seqPlayer->state != 2) {
+                                    seqPlayer->fadeTimerUnkEu = temp_v0_7;
+                                    seqPlayer->state = temp_s2;
+                                }
+                                break;
+                            case 2:
+                                seqPlayer->fadeTimer = temp_v0_7;
+                                seqPlayer->state = temp_s2;
+                                seqPlayer->fadeVelocity = (0.0f - seqPlayer->fadeVolume) / (s32) seqPlayer->fadeTimer;
+                                break;
+                        }
+                        break;
+                    case 0xDB:
+                        temp_v0_8 = func_800146A0(temp_s0);
+                        switch (seqPlayer->state) {
+                            case 2:
+                                break;
+                            case 1:
+                                seqPlayer->state = 0;
+                                seqPlayer->fadeVolume = 0.0f;
+                                /* fallthrough */
+                            case 0:
+                                seqPlayer->fadeTimer = seqPlayer->fadeTimerUnkEu;
+                                if (seqPlayer->fadeTimerUnkEu != 0) {
+                                    seqPlayer->fadeVelocity = (((s32) temp_v0_8 / 127.0f) - seqPlayer->fadeVolume) /
+                                                              (s32) seqPlayer->fadeTimer;
+                                } else {
+                                    seqPlayer->fadeVolume = (s32) temp_v0_8 / 127.f;
+                                }
+                                break;
+                        }
+                        break;
+                    case 0xD9:
+                        seqPlayer->fadeVolumeMod = (s8) func_800146A0(temp_s0) / 127.0f;
+                        break;
+                    case 0xD7:
+                        func_80014224(seqPlayer, func_800146B4(temp_s0));
+                        break;
+                    case 0xD6:
+                        func_80014350(seqPlayer, func_800146B4(temp_s0));
+                        break;
+                    case 0xD5:
+                        seqPlayer->muteVolumeMod = (s8) func_800146A0(temp_s0) / 127.0f;
+                        break;
+                    case 0xD4:
+                        seqPlayer->muted = 1;
+                        break;
+                    case 0xD3:
+                        seqPlayer->muteBehavior = func_800146A0(temp_s0);
+                        break;
+                    case 0xD1:
+                    case 0xD2:
+                        temp_v0_7 = func_800146B4(temp_s0);
+                        temp_v1_7 = &seqPlayer->seqData[(temp_v0_7)];
+                        if (temp_s2 == 0xD2) {
+                            seqPlayer->shortNoteVelocityTable = temp_v1_7;
+                        } else {
+                            seqPlayer->shortNoteGateTimeTable = temp_v1_7;
+                        }
+                        break;
+                    case 0xD0:
+                        seqPlayer->noteAllocPolicy = func_800146A0(temp_s0);
+                        break;
+                    case 0xCC:
+                        sp50 = func_800146A0(temp_s0);
+                        break;
+                    case 0xC9:
+                        sp50 &= func_800146A0(temp_s0);
+                        break;
+                    case 0xC8:
+                        sp50 -= func_800146A0(temp_s0);
+                        break;
+                    case 0xC7:
+                        temp_s2 = func_800146A0(temp_s0);
+                        temp_v0_7 = func_800146B4(temp_s0);
+                        temp_v1_7 = &seqPlayer->seqData[temp_v0_7];
+                        temp_v0_8 = sp50;
+                        *temp_v1_7 = temp_v0_8 + temp_s2;
+                        break;
+                }
+            } else {
+                switch (temp_s2 & 0xF0) {
+                    case 0x0:
+                        sp50 = seqPlayer->channels[(u8) (temp_s2 & 0xF)]->finished;
+                        break;
+                    case 0x50:
+                        sp50 -= seqPlayer->unk_07[0];
+                        break;
+                    case 0x70:
+                        seqPlayer->unk_07[0] = sp50;
+                        break;
+                    case 0x80:
+                        sp50 = seqPlayer->unk_07[0];
+                        break;
+                    case 0x90:
+                        temp_v0_7 = func_800146B4(temp_s0);
+                        func_80014420(seqPlayer, temp_s2 & 0xF, &seqPlayer->seqData[temp_v0_7]);
+                        break;
+                    case 0x10:
+                        break;
+                    case 0x20:
+                        break;
+                    case 0x40:
+                        break;
+                    case 0x60:
+                        break;
+                    case 0xA0:
+                        break;
+                }
+            }
+        }
+    }
+    for (i = 0; i < 0x10; i++) {
+        if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == 1) {
+            func_800153C8(seqPlayer->channels[i]);
+        }
+    }
+}
+
+void func_8001676C(s32 arg0) {
+    s32 i;
+
+    for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+        if (gSeqPlayers[i].enabled == 1) {
+            func_80015FB4(&gSeqPlayers[i]);
+            func_80013588(&gSeqPlayers[i]);
+        }
+    }
+    func_80011F88();
+}
+
+void func_800167E4(s32 arg0) {
+    SequencePlayer* seqPlayer = &gSeqPlayers[arg0];
+
+    func_800144C4(seqPlayer);
+    seqPlayer->delay = 0;
+    seqPlayer->state = 1;
+    seqPlayer->fadeTimer = 0;
+    seqPlayer->fadeTimerUnkEu = 0;
+    seqPlayer->tempoAcc = 0;
+    seqPlayer->tempo = 0x1680;
+    seqPlayer->tempoChange = 0;
+    seqPlayer->transposition = 0;
+    seqPlayer->noteAllocPolicy = 0;
+    seqPlayer->shortNoteVelocityTable = gDefaultShortNoteVelocityTable;
+    seqPlayer->shortNoteGateTimeTable = gDefaultShortNoteGateTimeTable;
+    seqPlayer->fadeVolume = 1.0f;
+    seqPlayer->fadeVolumeMod = 1.0f;
+    seqPlayer->fadeVelocity = 0.0f;
+    seqPlayer->volume = 0.0f;
+    seqPlayer->muteVolumeMod = 0.5f;
+}
+
+void func_8001689C(void) {
+    s32 i;
+    s32 j;
+
+    for (i = 0; i < ARRAY_COUNT(gSeqChannels); i++) {
+        gSeqChannels[i].seqPlayer = NULL;
+        gSeqChannels[i].enabled = false;
+#ifdef AVOID_UB
+        for (j = 0; j < ARRAY_COUNT(gSeqChannels->layers); j++) {
+#else
+        for (j = 0; j < 64;
+             j++) { // bug: this is ARRAY_COUNT(gSeqLayers) instead of ARRAY_COUNT(gSeqChannels[i].layers)
+#endif
+            gSeqChannels[i].layers[j] = NULL;
+        }
+    }
+
+    func_8001461C();
+
+    for (i = 0; i < ARRAY_COUNT(gSeqLayers); i++) {
+        gSeqLayers[i].channel = NULL;
+        gSeqLayers[i].enabled = false;
+    }
+
+    for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+        for (j = 0; j < 16; j++) {
+            gSeqPlayers[i].channels[j] = &gSeqChannelNone;
+        }
+        gSeqPlayers[i].unk_07[0] = -1;
+        gSeqPlayers[i].muteBehavior = 0xE0;
+        gSeqPlayers[i].enabled = false;
+        gSeqPlayers[i].muted = false;
+        gSeqPlayers[i].fontDmaInProgress = false;
+        gSeqPlayers[i].seqDmaInProgress = false;
+        func_80012844(&gSeqPlayers[i].notePool);
+        func_800167E4(i);
+    }
+}
diff --git a/srceu/audio/audio_synthesis.c b/srceu/audio/audio_synthesis.c
index 7683e1d27..aba36f8a6 100644
--- a/srceu/audio/audio_synthesis.c
+++ b/srceu/audio/audio_synthesis.c
@@ -1,41 +1,614 @@
-#include "common.h"
+// No regional differences in this file.
+#include "sys.h"
+#include "sf64audio_provisional.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80008130.s")
+extern s8 D_8014E322;
+extern f32 D_80147EB8[256];
+extern f32 D_801482B8[256];
+extern f32 D_801486B8[515];
+extern s16 D_8014E324;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_800083D4.s")
+void func_800083D4(f32* buffer0, f32* buffer1, s32 length, f32* buffer2);
+void func_80009194(s16** arg0);
+Acmd* func_80009DE8(Acmd* aList, s32 aiBufLen, s16 reverbIndex, s16 updateIndex);
+Acmd* func_8000A198(Acmd* aList, s16 reverbIndex, s16 updateIndex);
+Acmd* func_8000A770(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synthState, s16* aiBuf, s32 aiBufLen,
+                    Acmd* aList, s32 updateIndex);
+Acmd* func_800099F4(Acmd* aList, u16 dmem, u16 startPos, s32 size, s32 reverbIndex);
+Acmd* func_8000994C(Acmd* aList, u16 dmem, u16 startPos, s32 size, s32 reverbIndex);
+void func_8001676C(s32 arg0);
+void func_80009B1C(s32 updateIndex);
+void func_80008130(s32 sampleCount, s32 itemIndex, s32 reverbIndex);
+Acmd* func_8000A2CC(s16* aiBuf, s32 aiBufLen, Acmd* aList, s32 updateIndex);
+s32 func_800096EC(s32 length, s16* ramAddr, UnkStruct_800097A8* arg2);
+void func_80009574(s16* arg0, UnkStruct_800097A8* arg1);
+void func_800087F0(f32*, s32, f32*);
+
+void func_80008130(s32 sampleCount, s32 itemIndex, s32 reverbIndex) {
+    ReverbRingBufferItem* ringItem;
+    SynthesisReverb* reverb = &gSynthReverbs[reverbIndex];
+    s32 temp_lo;
+    s32 temp_v1_3;
+    s32 i;
+    s32 j;
+    s32 pad1;
+    s32 pad2;
+    s32 pad3;
+
+    if ((reverb->downsampleRate != 1) && (reverb->framesToIgnore == 0)) {
+        ringItem = &reverb->items[reverb->curFrame][itemIndex];
+        osInvalDCache(ringItem->toDownsampleLeft, 0x300);
+        j = 0;
+        for (i = 0; i < ringItem->lengthA / 2; i++, j += reverb->downsampleRate) {
+            reverb->leftRingBuf[ringItem->startPos + i] = ringItem->toDownsampleLeft[j];
+            reverb->rightRingBuf[ringItem->startPos + i] = ringItem->toDownsampleRight[j];
+        }
+        for (i = 0; i < ringItem->lengthB / 2; i++, j += reverb->downsampleRate) {
+            reverb->leftRingBuf[i] = ringItem->toDownsampleLeft[j];
+            reverb->rightRingBuf[i] = ringItem->toDownsampleRight[j];
+        }
+    }
+    ringItem = &reverb->items[reverb->curFrame][itemIndex];
+    temp_lo = sampleCount / reverb->downsampleRate;
+    temp_v1_3 = reverb->nextRingBufPos + temp_lo - reverb->bufSizePerChan;
+
+    if (temp_v1_3 < 0) {
+        ringItem->lengthA = temp_lo * 2;
+        ringItem->lengthB = 0;
+        ringItem->startPos = reverb->nextRingBufPos;
+        reverb->nextRingBufPos += temp_lo;
+    } else {
+        ringItem->lengthA = (temp_lo - temp_v1_3) * 2;
+        ringItem->lengthB = temp_v1_3 * 2;
+        ringItem->startPos = reverb->nextRingBufPos;
+        reverb->nextRingBufPos = temp_v1_3;
+    }
+    ringItem->numSamplesAfterDownsampling = temp_lo;
+    ringItem->chunkLen = sampleCount;
+}
+
+void func_800083D4(f32* buffer0, f32* buffer1, s32 length, f32* buffer2) {
+    f32 temp_ft0;
+    f32 var_fs0;
+    f32* buff0fromStart;
+    f32* buf2half2;
+    f32* buf2half3;
+    f32* buff1half1;
+    f32* buff0FromEnd;
+    f32* buff1half2;
+    s32 half;
+    s32 i;
+    s32 size;
+
+    size = 1 << length;
+    half = size >> 1;
+
+    // Initialize buffer 2 if it is the wrong size for this calculation
+    if (size != (s32) buffer2[0]) {
+        buf2half2 = &buffer2[half];
+        buf2half3 = &buf2half2[half];
+        var_fs0 = 0.0f;
+        temp_ft0 = D_PI / (f32) (2 * size);
+        for (i = 0; i < half; i++) {
+            *buf2half2++ = (__cosf(var_fs0) - __sinf(var_fs0)) * 0.707107f;
+            *buf2half3++ = (__cosf(var_fs0) + __sinf(var_fs0)) * 0.707107f;
+            var_fs0 += temp_ft0;
+        }
+    }
+
+    // reset the buffer pointers
+    buf2half2 = &buffer2[half];
+    buf2half3 = &buf2half2[half];
+    buff1half1 = buffer1;
+    buff0fromStart = buffer0;
+
+    // handle i = 0 case
+    buffer1[0] = buffer0[0];
+    buffer1[half] = buffer0[half];
+
+    // advance buffer pointers
+    buf2half2++;
+    buf2half3++;
+    buff0fromStart++;
+    buff0FromEnd = &buffer0[size - 1];
+    buff1half1++;
+    buff1half2 = &buffer1[size - 1];
+
+    // convert to real amplitudes
+    for (i = 1; i < half; i++) {
+        *buff1half1++ = (*buf2half2 * *buff0fromStart) + (*buf2half3 * *buff0FromEnd);
+        *buff1half2-- = (*buf2half3 * *buff0fromStart) - (*buf2half2 * *buff0FromEnd);
+        buff0fromStart++;
+        buf2half3++;
+        buf2half2++;
+        buff0FromEnd--;
+    }
+
+    // FFT buffer 1 using buffer 2
+    func_800087F0(buffer1, length, buffer2);
+
+    buff0fromStart = buffer0;
+    buff0FromEnd = &buffer0[size - 1];
+    buff1half1 = buffer1;
+    buff1half2 = &buffer1[half];
+
+    // Copy even entries of buffer 0 into the first half of buffer 1. Copy odd entries into the second half in reverse
+    // order
+    for (i = 0; i < half; i++) {
+        *buff0fromStart = *buff1half1++;
+        *buff0FromEnd = *buff1half2++;
+        buff0fromStart += 2;
+        buff0FromEnd -= 2;
+    }
+}
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_800087F0.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009194.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009574.s")
+void func_80009574(s16* arg0, UnkStruct_800097A8* arg1) {
+    s32 i;
+
+    if (arg1->unk_0 != NULL) {
+        arg1->unk_C = arg1->unk_0;
+        arg1->unk_0 = 0;
+    }
+
+    arg1->unk18 += D_8014E324;
+    while (arg1->unk18 > 0x1000) {
+        func_80009194(&arg1->unk_C);
+        arg1->unk18 -= 0x1000;
+    }
+
+    func_800083D4(D_80147EB8, D_801482B8, 8, D_801486B8);
+
+    for (i = 0; i < 256; i++) {
+        if (D_80147EB8[i] > 32767.0f) {
+            D_80147EB8[i] = 32767.0f;
+        }
+        if (D_80147EB8[i] < -32767.0f) {
+            D_80147EB8[i] = -32767.0f;
+        }
+    }
+
+    for (i = 0; i < 0x100; i++, arg0++) {
+        *arg0 = D_80147EB8[i];
+    }
+}
+
+s32 func_800096EC(s32 length, s16* ramAddr, UnkStruct_800097A8* arg2) {
+    s32 pad;
+    s32 temp_t0;
+    s32 i;
+    s32 var_s1;
+    s16* temp_t7 = (s16*) arg2->unk_14->ramAddr;
+
+    for (i = 0; i < arg2->unk_4; i++) {
+        ramAddr[i] = temp_t7[i];
+    }
+
+    var_s1 = arg2->unk_4;
+    temp_t0 = (length - arg2->unk_4 + 0xFF) / 256;
+    arg2->unk_4 = (temp_t0 * 256) + arg2->unk_4 - length;
+
+    for (i = 0; i < temp_t0; i++) {
+        func_80009574(&ramAddr[var_s1], arg2);
+        var_s1 += 0x100;
+    }
+
+    for (i = 0; i < arg2->unk_4; i++) {
+        temp_t7[i] = ramAddr[length + i];
+    }
+    return temp_t0;
+}
+
+u8* func_80009818(Sample* sample, s32 length, u32 flags, UnkStruct_800097A8* arg3) {
+    s32 pad1;
+    SampleDma* pad2;
+    SampleDma* sp1C;
+
+    if (flags == 1) {
+        arg3->unk_0 = (s16*) sample->sampleAddr;
+        arg3->unk_4 = 0;
+        arg3->unk_8 = 0;
+        arg3->unk18 = 0;
+
+        if (gSampleDmaReuseQueue1RdPos != gSampleDmaReuseQueue1WrPos) {
+            arg3->unk_14 = &gSampleDmas[gSampleDmaReuseQueue1[gSampleDmaReuseQueue1RdPos++]];
+            arg3->unk_14->devAddr = -1;
+            arg3->unk_14->sizeUnused = 0;
+        }
+    }
+
+    if (gSampleDmaReuseQueue1RdPos != gSampleDmaReuseQueue1WrPos) {
+        sp1C = &gSampleDmas[gSampleDmaReuseQueue1[gSampleDmaReuseQueue1RdPos++]];
+    }
+
+    if (1) {} //! FAKE
+
+    sp1C->ttl = 2;
+    sp1C->devAddr = sample->sampleAddr;
+    sp1C->sizeUnused = length * 2;
+    pad2 = arg3->unk_14;
+    pad2->ttl = 2;
+    arg3->unk_8 += func_800096EC(length, (s16*) sp1C->ramAddr, arg3);
+    return sp1C->ramAddr;
+}
+
+Acmd* func_8000994C(Acmd* aList, u16 dmem, u16 startPos, s32 size, s32 reverbIndex) {
+    aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(&gSynthReverbs[reverbIndex].leftRingBuf[startPos]), dmem, size);
+    aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(&gSynthReverbs[reverbIndex].rightRingBuf[startPos]), dmem + 0x180, size);
+    return aList;
+}
+
+Acmd* func_800099F4(Acmd* aList, u16 dmem, u16 startPos, s32 size, s32 reverbIndex) {
+    aSaveBuffer(aList++, dmem, OS_K0_TO_PHYSICAL(&gSynthReverbs[reverbIndex].leftRingBuf[startPos]), size);
+    aSaveBuffer(aList++, dmem + 0x180, OS_K0_TO_PHYSICAL(&gSynthReverbs[reverbIndex].rightRingBuf[startPos]), size);
+    return aList;
+}
+
+void func_80009A9C(s32 updateIndex, s32 noteIndex) {
+    NoteSubEu* noteSubEu;
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_800096EC.s")
+    for (i = updateIndex + 1; i < gAudioBufferParams.ticksPerUpdate; i++) {
+        if (!gNoteSubsEu[(gNumNotes * i) + noteIndex].bitField0.needsInit) {
+            gNoteSubsEu[(gNumNotes * i) + noteIndex].bitField0.enabled = false;
+        } else {
+            break;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009818.s")
+void func_80009B1C(s32 updateIndex) {
+    NoteSubEu* subEu;
+    NoteSubEu* subEu2;
+    s32 i;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000994C.s")
+    for (i = 0; i < gNumNotes; i++) {
+        subEu = &gNotes[i].noteSubEu;
+        subEu2 = &gNoteSubsEu[gNumNotes * updateIndex + i];
+        if (subEu->bitField0.enabled) {
+            *subEu2 = *subEu;
+            subEu->bitField0.needsInit = false;
+        } else {
+            subEu2->bitField0.enabled = false;
+        }
+    }
+}
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_800099F4.s")
+Acmd* func_80009BD4(Acmd* aList, s32* cmdCount, s16* aiBufStart, s32 aiBufLen) {
+    Acmd* aCmdPtr;
+    s32* aiBufPtr;
+    s32 chunkLen;
+    s32 i;
+    s32 j;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009A9C.s")
+    aCmdPtr = aList;
+    for (i = gAudioBufferParams.ticksPerUpdate; i > 0; i--) {
+        func_8001676C(i - 1);
+        func_80009B1C(gAudioBufferParams.ticksPerUpdate - i);
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009B1C.s")
+    aiBufPtr = (s32*) aiBufStart;
+    for (i = gAudioBufferParams.ticksPerUpdate; i > 0; i--) {
+        if (i == 1) {
+            chunkLen = aiBufLen;
+        } else if ((aiBufLen / i) >= gAudioBufferParams.samplesPerTickMax) {
+            chunkLen = gAudioBufferParams.samplesPerTickMax;
+        } else if (gAudioBufferParams.samplesPerTickMin >= (aiBufLen / i)) {
+            chunkLen = gAudioBufferParams.samplesPerTickMin;
+        } else {
+            chunkLen = gAudioBufferParams.samplesPerTick;
+        }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009BD4.s")
+        for (j = 0; j < gNumSynthReverbs; j++) {
+            if (gSynthReverbs[j].useReverb) {
+                func_80008130(chunkLen, gAudioBufferParams.ticksPerUpdate - i, j);
+            }
+        }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_80009DE8.s")
+        aCmdPtr = func_8000A2CC((s16*) aiBufPtr, chunkLen, aCmdPtr, gAudioBufferParams.ticksPerUpdate - i);
+        aiBufLen -= chunkLen;
+        aiBufPtr += chunkLen;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000A198.s")
+    for (j = 0; j < gNumSynthReverbs; j++) {
+        if (gSynthReverbs[j].framesToIgnore != 0) {
+            gSynthReverbs[j].framesToIgnore--;
+        }
+        gSynthReverbs[j].curFrame ^= 1;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000A2CC.s")
+    *cmdCount = aCmdPtr - aList;
+
+    return aCmdPtr;
+}
+Acmd* func_80009DE8(Acmd* aList, s32 aiBufLen, s16 reverbIndex, s16 updateIndex) {
+    ReverbRingBufferItem* sp64 = &gSynthReverbs[reverbIndex].items[gSynthReverbs[reverbIndex].curFrame][updateIndex];
+    s16 sp62;
+    s16 sp60;
+
+    aClearBuffer(aList++, 0xC90, 0x300);
+
+    if (gSynthReverbs[reverbIndex].downsampleRate == 1) {
+        aList = func_8000994C(aList, 0xC90, sp64->startPos, sp64->lengthA, reverbIndex);
+        if (sp64->lengthB != 0) {
+            aList = func_8000994C(aList, sp64->lengthA + 0xC90, 0, sp64->lengthB, reverbIndex);
+        }
+        aAddMixer(aList++, 0x300, 0xC90, 0x990, 0x7FFF);
+        aMix(aList++, 0x30, gSynthReverbs[reverbIndex].decayRatio + 0x8000, 0xC90, 0xC90);
+    } else {
+        sp62 = (sp64->startPos & 7) * 2;
+        sp60 = ALIGN16(sp62 + sp64->lengthA);
+        aList = func_8000994C(aList, 0x470, sp64->startPos - (sp62 / 2), 0x180, reverbIndex);
+        if (sp64->lengthB != 0) {
+            aList = func_8000994C(aList, sp60 + 0x470, 0, 0x180 - sp60, reverbIndex);
+        }
+        aSetBuffer(aList++, 0, sp62 + 0x470, 0xC90, aiBufLen * 2);
+        aResample(aList++, gSynthReverbs[reverbIndex].resampleFlags, gSynthReverbs[reverbIndex].unk_0A,
+                  OS_K0_TO_PHYSICAL(gSynthReverbs[reverbIndex].unk_30));
+        aSetBuffer(aList++, 0, sp62 + 0x5F0, 0xE10, aiBufLen * 2);
+        aResample(aList++, gSynthReverbs[reverbIndex].resampleFlags, gSynthReverbs[reverbIndex].unk_0A,
+                  OS_K0_TO_PHYSICAL(gSynthReverbs[reverbIndex].unk_34));
+        aAddMixer(aList++, 0x300, 0xC90, 0x990, 0x7FFF);
+        aMix(aList++, 0x30, gSynthReverbs[reverbIndex].decayRatio + 0x8000, 0xC90, 0xC90);
+    }
+
+    if ((gSynthReverbs[reverbIndex].leakRtL != 0) || (gSynthReverbs[reverbIndex].leakLtR != 0)) {
+        aDMEMMove(aList++, 0xC90, 0x470, 0x180);
+        aMix(aList++, 0x18, gSynthReverbs[reverbIndex].leakRtL, 0xE10, 0xC90);
+        aMix(aList++, 0x18, gSynthReverbs[reverbIndex].leakLtR, 0x470, 0xE10);
+    }
+    return aList;
+}
+
+Acmd* func_8000A198(Acmd* aList, s16 reverbIndex, s16 updateIndex) {
+    ReverbRingBufferItem* sp24;
+
+    sp24 = &gSynthReverbs[reverbIndex].items[gSynthReverbs[reverbIndex].curFrame][updateIndex];
+    switch (gSynthReverbs[reverbIndex].downsampleRate) {
+        case 1:
+            aList = func_800099F4(aList, 0xC90, sp24->startPos, sp24->lengthA, reverbIndex);
+            if (sp24->lengthB != 0) {
+                aList = func_800099F4(aList, sp24->lengthA + 0xC90, 0, sp24->lengthB, reverbIndex);
+            }
+            break;
+
+        default:
+            aSaveBuffer(aList++, 0xC90,
+                        OS_K0_TO_PHYSICAL(gSynthReverbs[reverbIndex]
+                                              .items[gSynthReverbs[reverbIndex].curFrame][updateIndex]
+                                              .toDownsampleLeft),
+                        0x300);
+            gSynthReverbs[reverbIndex].resampleFlags = 0;
+            break;
+    }
+
+    return aList;
+}
+
+Acmd* func_8000A2CC(s16* aiBuf, s32 aiBufLen, Acmd* aList, s32 updateIndex) {
+    u8 sp84[0x3C];
+    NoteSubEu* temp_v0;
+    s16 var_s2;
+    s16 i;
+    s32 j;
+
+    var_s2 = 0;
+    if (gNumSynthReverbs == 0) {
+        if (gSynthReverbs[i].useReverb) {} // fake?
+        for (j = 0; j < gNumNotes; j++) {
+            if (gNoteSubsEu[gNumNotes * updateIndex + j].bitField0.enabled) {
+                sp84[var_s2++] = j;
+            }
+        }
+    } else {
+        for (i = 0; i < gNumSynthReverbs; i++) {
+            for (j = 0; j < gNumNotes; j++) {
+                temp_v0 = &gNoteSubsEu[gNumNotes * updateIndex + j];
+                if (temp_v0->bitField0.enabled && (temp_v0->bitField1.reverbIndex == i)) {
+                    sp84[var_s2++] = j;
+                }
+            }
+        }
+        for (j = 0; j < gNumNotes; j++) {
+            temp_v0 = &gNoteSubsEu[gNumNotes * updateIndex + j];
+            if (temp_v0->bitField0.enabled && (temp_v0->bitField1.reverbIndex >= gNumSynthReverbs)) {
+                sp84[var_s2++] = j;
+            }
+        }
+    }
+
+    aClearBuffer(aList++, 0x990, 0x300);
+
+    j = 0;
+    for (i = 0; i < gNumSynthReverbs; i++) {
+        D_8014E322 = gSynthReverbs[i].useReverb;
+        if (D_8014E322) {
+            aList = func_80009DE8(aList, aiBufLen, i, updateIndex);
+        }
+        while (j < var_s2) {
+            if (i != gNoteSubsEu[updateIndex * gNumNotes + sp84[j]].bitField1.reverbIndex) {
+                break;
+            }
+            aList = func_8000A770(sp84[j], &gNoteSubsEu[updateIndex * gNumNotes + sp84[j]],
+                                  &gNotes[sp84[j]].synthesisState, aiBuf, aiBufLen, aList, updateIndex);
+            j++;
+        }
+        if (gSynthReverbs[i].useReverb) {
+            aList = func_8000A198(aList, i, updateIndex);
+        }
+    }
+
+    while (j < var_s2) {
+        aList = func_8000A770(sp84[j], &gNoteSubsEu[updateIndex * gNumNotes + sp84[j]], &gNotes[sp84[j]].synthesisState,
+                              aiBuf, aiBufLen, aList, updateIndex);
+        j++;
+    }
+
+    j = aiBufLen * 2;
+    aSetBuffer(aList++, 0, 0, 0x450, j);
+    aInterleave(aList++, 0, 0x990, 0xB10, 0);
+    aSaveBuffer(aList++, 0x450, OS_K0_TO_PHYSICAL(aiBuf), j * 2);
+
+    return aList;
+}
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000A770.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000B460.s")
+Acmd* func_8000B460(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthState, s32 numSamplesToLoad) {
+    s32 temp_v1;
+
+    aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(noteSub->waveSampleAddr), 0x5F0, 0x80);
+    synthState->samplePosInt &= 0x3F;
+    temp_v1 = 0x40 - synthState->samplePosInt;
+    if (temp_v1 < numSamplesToLoad) {
+        if ((((numSamplesToLoad - temp_v1) + 0x3F) / 64) != 0) {
+            aDuplicate(aList++, ((numSamplesToLoad - temp_v1) + 0x3F) / 64, 0x5F0, 0x670);
+        }
+    }
+    return aList;
+}
+
+Acmd* func_8000B4F0(Acmd* aList, NoteSynthesisState* synthState, s32 size, u16 pitch, u16 inpDmem, u32 resampleFlags) {
+    if (pitch == 0) {
+        aClearBuffer(aList++, 0x450, size);
+    } else {
+        aSetBuffer(aList++, 0, inpDmem, 0x450, size);
+        aResample(aList++, resampleFlags, pitch, OS_K0_TO_PHYSICAL(synthState->synthesisBuffers->finalResampleState));
+    }
+    return aList;
+}
+
+Acmd* func_8000B58C(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthState, s32 aiBufLen, u16 dmemSrc,
+                    s32 delaySide, s32 flags) {
+    s16 var_a2;
+    s16 var_a3;
+    s16 var_t0;
+    u16 temp_t7;
+    u16 temp_t9;
+    u16 temp_t1;
+    u16 temp_t2;
+    s32 temp_a1;
+    s32 temp = 0;
+
+    temp_t1 = synthState->curVolLeft;
+    temp_t2 = synthState->curVolRight;
+
+    temp_t7 = noteSub->panVolLeft;
+    temp_t9 = noteSub->panVolRight;
+
+    temp_t7 <<= 4;
+    temp_t9 <<= 4;
+
+    if (temp_t7 != temp_t1) {
+        var_t0 = (temp_t7 - temp_t1) / (aiBufLen >> 3);
+    } else {
+        var_t0 = 0;
+    }
+    if (temp_t9 != temp_t2) {
+        var_a3 = (temp_t9 - temp_t2) / (aiBufLen >> 3);
+    } else {
+        var_a3 = 0;
+    }
+
+    temp_a1 = synthState->reverbVol;
+
+    if (noteSub->reverb != temp_a1) {
+        temp = (((noteSub->reverb & 0x7F) - (temp_a1 & 0x7F)) << 8);
+        var_a2 = temp / (aiBufLen >> 3);
+        synthState->reverbVol = noteSub->reverb;
+    } else {
+        var_a2 = 0;
+    }
+
+    synthState->curVolLeft = temp_t1 + (var_t0 * (aiBufLen >> 3));
+    synthState->curVolRight = temp_t2 + (var_a3 * (aiBufLen >> 3));
+
+    if (noteSub->bitField0.usesHeadsetPanEffects) {
+        aClearBuffer(aList++, 0x650, 0x180);
+        aEnvSetup1(aList++, (temp_a1 & 0x7F), var_a2, var_t0, var_a3);
+        aEnvSetup2(aList++, temp_t1, temp_t2);
+
+        switch (delaySide) {
+            case 1:
+                aEnvMixer(aList++, dmemSrc, aiBufLen, 0, 0, ((temp_a1 & 0x80) >> 7),
+                          noteSub->bitField0.stereoStrongRight, noteSub->bitField0.stereoStrongLeft, 0x65B1C9E1);
+                break;
+            case 2:
+                aEnvMixer(aList++, dmemSrc, aiBufLen, 0, 0, ((temp_a1 & 0x80) >> 7),
+                          noteSub->bitField0.stereoStrongRight, noteSub->bitField0.stereoStrongLeft, 0x9965C9E1);
+                break;
+            default:
+                aEnvMixer(aList++, dmemSrc, aiBufLen, 0, 0, ((temp_a1 & 0x80) >> 7),
+                          noteSub->bitField0.stereoStrongRight, noteSub->bitField0.stereoStrongLeft, 0x99B1C9E1);
+                break;
+        }
+    } else {
+        aEnvSetup1(aList++, (temp_a1 & 0x7F), var_a2, var_t0, var_a3);
+        aEnvSetup2(aList++, temp_t1, temp_t2);
+        aEnvMixer(aList++, dmemSrc, aiBufLen, 0, 0, ((temp_a1 & 0x80) >> 7), noteSub->bitField0.stereoStrongRight,
+                  noteSub->bitField0.stereoStrongLeft, 0x99B1C9E1);
+    }
+
+    return aList;
+}
+
+Acmd* func_8000B9FC(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthState, s32 size, s32 flags,
+                    s32 delaySide) {
+    u16 var_t0;
+    u8 var_a1;
+    u8 var_v1;
+    u16 temp;
+
+    switch (delaySide) {
+        case 1:
+            var_t0 = 0x990;
+            var_a1 = noteSub->leftDelaySize;
+            synthState->prevHaasEffectRightDelaySize = 0;
+            var_v1 = synthState->prevHaasEffectLeftDelaySize;
+            synthState->prevHaasEffectLeftDelaySize = var_a1;
+            break;
+
+        case 2:
+            var_t0 = 0xB10;
+            var_a1 = noteSub->rightDelaySize;
+            synthState->prevHaasEffectLeftDelaySize = 0;
+            var_v1 = synthState->prevHaasEffectRightDelaySize;
+            synthState->prevHaasEffectRightDelaySize = var_a1;
+            break;
+
+        default:
+            return aList;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000B4F0.s")
+    if (flags != 1) {
+        if (var_a1 != var_v1) {
+            temp = (((size << 0xF) / 2) - 1) / ((size + var_a1 - var_v1 - 2) / 2);
+            aSetBuffer(aList++, 0, 0x650, 0x450, size + var_a1 - var_v1);
+            aResampleZoh(aList++, temp, 0);
+        } else {
+            aDMEMMove(aList++, 0x650, 0x450, size);
+        }
+        if (var_v1 != 0) {
+            aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(synthState->synthesisBuffers->panSamplesBuffer), 0x650,
+                        ALIGN16(var_v1));
+            aDMEMMove(aList++, 0x450, var_v1 + 0x650, size + var_a1 - var_v1);
+        } else {
+            aDMEMMove(aList++, 0x450, 0x650, size + var_a1);
+        }
+    } else {
+        aDMEMMove(aList++, 0x650, 0x450, size);
+        aClearBuffer(aList++, 0x650, var_a1);
+        aDMEMMove(aList++, 0x450, var_a1 + 0x650, size);
+    }
+    if (var_a1) {
+        aSaveBuffer(aList++, size + 0x650, OS_K0_TO_PHYSICAL(synthState->synthesisBuffers->panSamplesBuffer),
+                    ALIGN16(var_a1));
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000B58C.s")
+    aAddMixer(aList++, ALIGN64(size), 0x650, var_t0, 0x7FFF);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_synthesis/func_8000B9FC.s")
+    return aList;
+}
diff --git a/srceu/audio/audio_thread.c b/srceu/audio/audio_thread.c
index cb7862feb..f156e1abc 100644
--- a/srceu/audio/audio_thread.c
+++ b/srceu/audio/audio_thread.c
@@ -1,39 +1,443 @@
-#include "common.h"
+// No regional differences in this file
+#include "sys.h"
+#include "sf64audio_provisional.h"
+#include "audiothread_cmd.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E020.s")
+void AudioThread_ProcessCmds(u32 msg);
+void AudioThread_SetFadeOutTimer(s32 seqPlayId, s32 fadeTime);
+void AudioThread_SetFadeInTimer(s32 seqPlayId, s32 fadeTime);
+void func_800144C4(SequencePlayer* seqPlayer);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E514.s")
+extern OSMesgQueue sAudioTaskStartQueue;
+extern OSMesgQueue sThreadCmdProcQueue;
+extern OSMesgQueue sAudioSpecQueue;
+extern OSMesgQueue sAudioResetQueue;
+extern AudioCmd gThreadCmdBuffer[256];
+extern OSMesg sAudioTaskStartMsg[1];
+extern OSMesg sThreadCmdProcMsg[4];
+extern OSMesg sAudioSpecMsg[1];
+extern OSMesg sAudioResetMsg[1];
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E7F0.s")
+extern u8 gThreadCmdWritePos;
+extern u8 gThreadCmdReadPos;
+extern OSMesgQueue* gAudioTaskStartQueue;
+extern OSMesgQueue* gThreadCmdProcQueue;
+extern OSMesgQueue* gAudioSpecQueue;
+extern OSMesgQueue* gAudioResetQueue;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E848.s")
+#ifndef IMPORT_DATA
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/AudioThread_CreateTask.s")
+#else
+SPTask* AudioThread_CreateTask(void) {
+    static s32 gMaxAbiCmdCnt = 128;
+    static SPTask* gWaitingAudioTask = NULL;
+    u32 aiSamplesLeft;
+    s32 abiCmdCount;
+    s32 aiBuffIndex;
+    s32 pad48;
+    OSTask_t* task;
+    u16* aiBuffer;
+    s32 pad3C;
+    u32 specId;
+    u32 msg;
+    s32 pad30;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E898.s")
+    gAudioTaskCountQ++;
+    if ((gAudioTaskCountQ % gAudioBufferParams.count) != 0) {
+        return gWaitingAudioTask;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E920.s")
+    osSendMesg(gAudioTaskStartQueue, (OSMesg) gAudioTaskCountQ, OS_MESG_NOBLOCK);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E978.s")
+    gAudioTaskIndexQ ^= 1;
+    gCurAiBuffIndex++;
+    gCurAiBuffIndex %= 3;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E99C.s")
+    aiBuffIndex = (gCurAiBuffIndex + 1) % 3;
+    aiSamplesLeft = osAiGetLength() / 4;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E9C0.s")
+    if ((gAudioResetTimer < 16) && (gAiBuffLengths[aiBuffIndex] != 0)) {
+        osAiSetNextBuffer(gAiBuffers[aiBuffIndex], gAiBuffLengths[aiBuffIndex] * 4);
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001E9F0.s")
+    if (gCurAudioFrameDmaCount && gCurAudioFrameDmaCount) {} //! FAKE ?
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EA68.s")
+    gCurAudioFrameDmaCount = 0;
+    AudioLoad_DecreaseSampleDmaTtls();
+    AudioLoad_ProcessLoads(gAudioResetStep);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EA7C.s")
+    if (MQ_GET_MESG(gAudioSpecQueue, &specId)) {
+        if (gAudioResetStep == 0) {
+            gAudioResetStep = 5;
+        }
+        gAudioSpecId = specId;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001ED7C.s")
+    if ((gAudioResetStep != 0) && (AudioHeap_ResetStep() == 0)) {
+        if (gAudioResetStep == 0) {
+            osSendMesg(gAudioResetQueue, (OSMesg) (s32) gAudioSpecId, OS_MESG_NOBLOCK);
+        }
+        gWaitingAudioTask = NULL;
+        return NULL;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EDE4.s")
+    if (gAudioResetTimer > 16) {
+        return NULL;
+    }
+    if (gAudioResetTimer != 0) {
+        gAudioResetTimer++;
+    }
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EE04.s")
+    gAudioCurTask = &gAudioRspTasks[gAudioTaskIndexQ];
+    gCurAbiCmdBuffer = gAbiCmdBuffs[gAudioTaskIndexQ];
+    aiBuffIndex = gCurAiBuffIndex;
+    aiBuffer = gAiBuffers[aiBuffIndex];
+    gAiBuffLengths[aiBuffIndex] = ALIGN16_ALT(gAudioBufferParams.samplesPerFrameTarget - aiSamplesLeft + 0x80);
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EE5C.s")
+    if (gAiBuffLengths[aiBuffIndex] < gAudioBufferParams.minAiBufferLength) {
+        gAiBuffLengths[aiBuffIndex] = gAudioBufferParams.minAiBufferLength;
+    }
+    if (gAiBuffLengths[aiBuffIndex] > gAudioBufferParams.maxAiBufferLength) {
+        gAiBuffLengths[aiBuffIndex] = gAudioBufferParams.maxAiBufferLength;
+    }
+    while (MQ_GET_MESG(gThreadCmdProcQueue, &msg)) {
+        AudioThread_ProcessCmds(msg);
+    }
+    gCurAbiCmdBuffer = func_80009BD4(gCurAbiCmdBuffer, &abiCmdCount, aiBuffer, gAiBuffLengths[aiBuffIndex]);
+    gAudioRandom = osGetCount() * (gAudioRandom + gAudioTaskCountQ);
+    gAudioRandom = gAiBuffers[aiBuffIndex][gAudioTaskCountQ & 0xFF] + gAudioRandom;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EED0.s")
+    aiBuffIndex = gAudioTaskIndexQ;
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/func_8001EF0C.s")
+    gAudioCurTask->mesgQueue = NULL;
+    gAudioCurTask->msg = NULL;
+
+    task = &gAudioCurTask->task.t;
+
+    task->type = 2;
+    task->flags = 0;
+    task->ucode_boot = rspbootTextStart;
+    task->ucode_boot_size = (uintptr_t) rspbootTextEnd - (uintptr_t) rspbootTextStart;
+
+    task->ucode = aspMainTextStart;
+    task->ucode_data = aspMainDataStart;
+    task->ucode_size = SP_UCODE_SIZE;
+    task->ucode_data_size = (aspMainDataEnd - aspMainDataStart) * 8;
+
+    task->dram_stack = NULL;
+    task->dram_stack_size = 0;
+
+    task->output_buff = NULL;
+    task->output_buff_size = NULL;
+    if (1) {}
+    task->data_ptr = (u64*) gAbiCmdBuffs[aiBuffIndex];
+    task->data_size = abiCmdCount * sizeof(Acmd);
+
+    task->yield_data_ptr = NULL;
+    task->yield_data_size = 0;
+
+    if (gMaxAbiCmdCnt < abiCmdCount) {
+        gMaxAbiCmdCnt = abiCmdCount;
+    }
+
+    if (gAudioBufferParams.count == 1) {
+        return gAudioCurTask;
+    } else {
+        gWaitingAudioTask = gAudioCurTask;
+        return NULL;
+    }
+}
+#endif
+
+void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
+    s32 i;
+
+    switch (cmd->op) {
+        case AUDIOCMD_OP_GLOBAL_SYNC_LOAD_SEQ_PARTS:
+            AudioLoad_SyncLoadSeqParts(cmd->arg1, 3);
+            break;
+        case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER:
+        case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER_ALT:
+            AudioLoad_SyncInitSeqPlayer(cmd->arg0, cmd->arg1, cmd->arg2);
+            AudioThread_SetFadeInTimer(cmd->arg0, cmd->data);
+            break;
+        case AUDIOCMD_OP_GLOBAL_DISABLE_SEQPLAYER:
+            if (gSeqPlayers[cmd->arg0].enabled) {
+                if (cmd->asInt == 0) {
+                    func_800144C4(&gSeqPlayers[cmd->arg0]);
+                } else {
+                    AudioThread_SetFadeOutTimer(cmd->arg0, cmd->asInt);
+                }
+            }
+            break;
+        case AUDIOCMD_OP_GLOBAL_UNK_84:
+            break;
+        case AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE:
+            gAudioSoundMode = cmd->asUInt;
+            break;
+        case AUDIOCMD_OP_GLOBAL_MUTE:
+            for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+                SequencePlayer* seqplayer = &gSeqPlayers[i];
+
+                seqplayer->muted = true;
+                seqplayer->recalculateVolume = true;
+            }
+            break;
+        case AUDIOCMD_OP_GLOBAL_UNMUTE:
+            if (cmd->asUInt == 1) {
+                for (i = 0; i < gNumNotes; i++) {
+                    Note* note = &gNotes[i];
+                    NoteSubEu* noteSub = &note->noteSubEu;
+
+                    if ((noteSub->bitField0.enabled) && (note->playbackState.unk_04 == 0) &&
+                        (note->playbackState.parentLayer != NO_LAYER) &&
+                        (note->playbackState.parentLayer->channel->muteBehavior & 8)) {
+                        noteSub->bitField0.finished = true;
+                    }
+                }
+            }
+            for (i = 0; i < ARRAY_COUNT(gSeqPlayers); i++) {
+                SequencePlayer* seqplayer = &gSeqPlayers[i];
+
+                seqplayer->muted = false;
+                seqplayer->recalculateVolume = true;
+            }
+            break;
+        case AUDIOCMD_OP_GLOBAL_SYNC_LOAD_INSTRUMENT:
+            AudioLoad_SyncLoadInstrument(cmd->arg0, cmd->arg1, cmd->arg2);
+            break;
+        case AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SAMPLE_BANK:
+            AudioLoad_AsyncLoadSampleBank(cmd->arg0, cmd->arg1, cmd->arg2, &gExternalLoadQueue);
+            break;
+        case AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_FONT:
+            AudioLoad_AsyncLoadSeq(cmd->arg0, cmd->arg1, cmd->arg2, &gExternalLoadQueue);
+            break;
+        case AUDIOCMD_OP_GLOBAL_DISCARD_SEQ_FONTS:
+            AudioLoad_DiscardSeqFonts(cmd->arg1);
+            break;
+    }
+}
+
+void AudioThread_SetFadeOutTimer(s32 seqPlayId, s32 fadeTime) {
+    if (fadeTime == 0) {
+        fadeTime = 1;
+    }
+
+    gSeqPlayers[seqPlayId].state = 2;
+    gSeqPlayers[seqPlayId].fadeTimer = fadeTime;
+    gSeqPlayers[seqPlayId].fadeVelocity = -(gSeqPlayers[seqPlayId].fadeVolume / fadeTime);
+}
+
+void AudioThread_SetFadeInTimer(s32 seqPlayId, s32 fadeTime) {
+    if (fadeTime != 0) {
+        gSeqPlayers[seqPlayId].state = 1;
+        gSeqPlayers[seqPlayId].fadeTimerUnkEu = fadeTime;
+        gSeqPlayers[seqPlayId].fadeTimer = fadeTime;
+        gSeqPlayers[seqPlayId].fadeVolume = 0.0f;
+        gSeqPlayers[seqPlayId].fadeVelocity = 0.0f;
+    }
+}
+
+void AudioThread_InitQueues(void) {
+    gThreadCmdWritePos = 0;
+    gThreadCmdReadPos = 0;
+    osCreateMesgQueue(gAudioTaskStartQueue, sAudioTaskStartMsg, 1);
+    osCreateMesgQueue(gThreadCmdProcQueue, sThreadCmdProcMsg, 4);
+    osCreateMesgQueue(gAudioSpecQueue, sAudioSpecMsg, 1);
+    osCreateMesgQueue(gAudioResetQueue, sAudioResetMsg, 1);
+}
+
+void AudioThread_QueueCmd(u32 opArgs, void** data) {
+    AudioCmd* audioCmd = &gThreadCmdBuffer[gThreadCmdWritePos & 0xFF];
+
+    audioCmd->opArgs = opArgs;
+    audioCmd->data = *data;
+
+    gThreadCmdWritePos++;
+    if (gThreadCmdWritePos == gThreadCmdReadPos) {
+        gThreadCmdWritePos--;
+    }
+}
+
+void AudioThread_QueueCmdF32(u32 opArgs, f32 val) {
+    AudioThread_QueueCmd(opArgs, (void**) &val);
+}
+
+void AudioThread_QueueCmdS32(u32 opArgs, u32 val) {
+    AudioThread_QueueCmd(opArgs, (void**) &val);
+}
+
+void AudioThread_QueueCmdS8(u32 opArgs, s8 val) {
+    s32 data = val << 0x18;
+
+    AudioThread_QueueCmd(opArgs, (void**) &data);
+}
+
+#ifndef IMPORT_DATA
+void AudioThread_ScheduleProcessCmds(void);
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/AudioThread_ScheduleProcessCmds.s")
+#else
+void AudioThread_ScheduleProcessCmds(void) {
+    static s32 D_800C8884 = 0;
+    s32 msg;
+
+    if (D_800C8884 < (u8) (gThreadCmdWritePos - gThreadCmdReadPos + 0x100)) {
+        D_800C8884 = (u8) (gThreadCmdWritePos - gThreadCmdReadPos + 0x100);
+    }
+    msg = (((gThreadCmdReadPos & 0xFF) << 8) | (gThreadCmdWritePos & 0xFF));
+    osSendMesg(gThreadCmdProcQueue, (OSMesg) msg, OS_MESG_NOBLOCK);
+    gThreadCmdReadPos = gThreadCmdWritePos;
+}
+#endif
+
+void AudioThread_ResetCmdQueue(void) {
+    gThreadCmdReadPos = gThreadCmdWritePos;
+}
+
+#ifndef IMPORT_DATA
+void AudioThread_ProcessCmds(u32 msg);
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/AudioThread_ProcessCmds.s")
+#else
+void AudioThread_ProcessCmds(u32 msg) {
+    static u8 gCurCmdReadPos = 0;
+    static u8 gThreadCmdQueueFinished = false;
+    AudioCmd* cmd;
+    SequenceChannel* channel;
+    SequencePlayer* player;
+    u8 writePos;
+
+    if (!gThreadCmdQueueFinished) {
+        gCurCmdReadPos = (msg >> 8) & 0xFF;
+    }
+    writePos = msg & 0xFF;
+    while (true) {
+        if (gCurCmdReadPos == writePos) {
+            gThreadCmdQueueFinished = 0;
+            break;
+        }
+        cmd = &gThreadCmdBuffer[gCurCmdReadPos & 0xFF];
+        gCurCmdReadPos++;
+        if (cmd->op == AUDIOCMD_OP_GLOBAL_STOP_AUDIOCMDS) {
+            gThreadCmdQueueFinished = true;
+            break;
+        }
+        if ((cmd->op & 0xF0) == 0xF0) {
+            AudioThread_ProcessGlobalCmd(cmd);
+        } else if (cmd->arg0 < ARRAY_COUNT(gSeqPlayers)) {
+            player = &gSeqPlayers[cmd->arg0];
+            if (cmd->op & 0x80) {
+                AudioThread_ProcessGlobalCmd(cmd);
+            } else if (cmd->op & 0x40) {
+                switch (cmd->op) {
+                    case AUDIOCMD_OP_SEQPLAYER_FADE_VOLUME_SCALE:
+                        if (player->fadeVolumeMod != cmd->asFloat) {
+                            player->fadeVolumeMod = cmd->asFloat;
+                            player->recalculateVolume = true;
+                        }
+                        break;
+                    case AUDIOCMD_OP_SEQPLAYER_SET_TEMPO:
+                        player->tempo = cmd->asInt * 48;
+                        break;
+                    case AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION:
+                        player->transposition = cmd->asSbyte;
+                        break;
+                    case 0x46: // AUDIOCMD_OP_SEQPLAYER_SET_IO?
+                        player->unk_07[cmd->arg2] = cmd->asSbyte;
+                        break;
+                }
+            } else if ((player->enabled) && (cmd->arg1 < 16)) {
+                channel = player->channels[cmd->arg1];
+                if (IS_SEQUENCE_CHANNEL_VALID(channel)) {
+                    switch (cmd->op) {
+                        case AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE:
+                            if (channel->volumeMod != cmd->asFloat) {
+                                channel->volumeMod = cmd->asFloat;
+                                channel->changes.s.volume = true;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_VOL:
+                            if (channel->volume != cmd->asFloat) {
+                                channel->volume = cmd->asFloat;
+                                channel->changes.s.volume = true;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_PAN:
+                            if (channel->newPan != cmd->asSbyte) {
+                                channel->newPan = cmd->asSbyte;
+                                channel->changes.s.pan = true;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_FREQ_SCALE:
+                            if (channel->freqMod != cmd->asFloat) {
+                                channel->freqMod = cmd->asFloat;
+                                channel->changes.s.freqMod = true;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_REVERB_VOLUME:
+                            if (channel->targetReverbVol != cmd->asSbyte) {
+                                channel->targetReverbVol = cmd->asSbyte;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_IO:
+                            if (cmd->arg2 < 8) {
+                                channel->seqScriptIO[cmd->arg2] = cmd->asSbyte;
+                            }
+                            break;
+                        case AUDIOCMD_OP_CHANNEL_SET_MUTE:
+                            channel->muted = cmd->asSbyte;
+                            break;
+                    }
+                }
+            }
+        }
+        cmd->op = 0;
+    }
+}
+#endif
+
+u32 AudioThread_GetAsyncLoadStatus(u32* outData) {
+    u32 loadStatus;
+
+    if (!MQ_GET_MESG(&gExternalLoadQueue, &loadStatus)) {
+        *outData = 0;
+        return 0;
+    }
+    *outData = loadStatus & 0xFFFFFF;
+    return loadStatus >> 0x18;
+}
+
+u8* AudioThread_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
+    return AudioLoad_GetFontsForSequence(seqId, outNumFonts);
+}
+
+bool AudioThread_ResetComplete(void) {
+    s32 pad;
+    s32 sp18;
+
+    if (!MQ_GET_MESG(gAudioResetQueue, &sp18)) {
+        return false;
+    }
+    if (sp18 != gAudioSpecId) {
+        return false;
+    }
+    return true;
+}
+
+void AudioThread_ResetAudioHeap(s32 specId) {
+    MQ_CLEAR_QUEUE(gAudioResetQueue);
+
+    AudioThread_ResetCmdQueue();
+    osSendMesg(gAudioSpecQueue, (OSMesg) specId, OS_MESG_NOBLOCK);
+}
+
+void AudioThread_PreNMIReset(void) {
+    gAudioResetTimer = 1;
+    AudioThread_ResetAudioHeap(AUDIOSPEC_CO);
+    gAudioResetStep = 0;
+}
+
+void AudioThread_Init(void) {
+    AudioThread_InitQueues();
+}
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/audio/audio_thread/D_800C9D00.s")
diff --git a/srceu/driverominit.c b/srceu/driverominit.c
index 37d8cf13c..c098142c0 100644
--- a/srceu/driverominit.c
+++ b/srceu/driverominit.c
@@ -1,3 +1,3 @@
 #include "common.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/driverominit/func_8001EF30.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/driverominit/osDriveRomInit.s")
diff --git a/srceu/engine/fox_360.c b/srceu/engine/fox_360.c
index 41d131299..2299b9f94 100644
--- a/srceu/engine/fox_360.c
+++ b/srceu/engine/fox_360.c
@@ -30,7 +30,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_360/func_8002EFA0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_360/func_8002F2BC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_360/ActorAllRange_SpawnTeam.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_360/func_8002F51C.s")
 
diff --git a/srceu/engine/fox_game.c b/srceu/engine/fox_game.c
index 301858775..9d8a1a30c 100644
--- a/srceu/engine/fox_game.c
+++ b/srceu/engine/fox_game.c
@@ -2,22 +2,22 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A1EC0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A1F90.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_SetGameState.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A217C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_ChangeScene.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2224.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_InitMasterDL.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2478.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_InitStandbyDL.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2554.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A25C0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_InitViewport.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2AEC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_Draw.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2BEC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_SetScene.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A2CE0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/Game_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_game/func_800A3CC4.s")
diff --git a/srceu/engine/fox_load.c b/srceu/engine/fox_load.c
index 8a9ccc7e1..736f97c6e 100644
--- a/srceu/engine/fox_load.c
+++ b/srceu/engine/fox_load.c
@@ -1,6 +1,8 @@
 #include "sf64dma.h"
 
-u8 D_800CAFC0 = 3;
+/* Had to comment these out because the rom didn't match */
+#if 0
+u8 sFillTimer = 3;
 
 #include "fox_load_inits.c"
 
@@ -22,15 +24,43 @@ Scene D_800CCC44 = {
       /* 0xE */ NO_SEGMENT,
       /* 0xF */ NO_SEGMENT },
 };
+#endif
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/func_80058B10.s")
+// No difference
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/Load_RomFile.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/func_80058BD8.s")
+// No difference
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/Load_SceneFiles.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/func_80058EA4.s")
+// No difference
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/Load_SceneSetup.s")
 
+// It's a version of Load_InitDmaAndMsg, although Msg isn't here, but in Load_SetTextLanguage
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/func_80059428.s")
+// https://decomp.me/scratch/vQ0WZ (matching)
+/*
+void func_80059428(void) {
+    if (gStopTasks != 1) {
+        Lib_DmaRead(dma_table_ROM_START, gDmaTable, audio_seq_ROM_START - dma_table_ROM_START);
+    }
+}
+*/
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/func_80059470.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/Load_SetTextLanguage.s")
+
+// https://decomp.me/scratch/pCmOV
+/*
+void Load_SetTextLanguage(void) {
+    if (gStopTasks != 1) {
+        switch (D_8017AACB) {
+        case 0:
+            Load_RomFile(&ast_radio_en_ROM_START, &D_fr_8017B230,(u32) &ast_radio_fr_ROM_START -
+(u32)&ast_radio_en_ROM_START); break; case 1: Load_RomFile(&ast_radio_fr_ROM_START, &D_fr_8017B230,
+(u32)&ast_radio_fr_ROM_END - (u32)&ast_radio_fr_ROM_START); break; case 2: Load_RomFile(&ast_radio_de_ROM_START,
+&D_fr_8017B230, (u32)&ast_radio_de_ROM_END - (u32)&ast_radio_de_ROM_START); break;
+        }
+    }
+}
+*/
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_load/D_800D7350.s")
diff --git a/srceu/engine/fox_load_inits.c b/srceu/engine/fox_load_inits.c
index 006614b9d..2938c2d6c 100644
--- a/srceu/engine/fox_load_inits.c
+++ b/srceu/engine/fox_load_inits.c
@@ -1,6 +1,6 @@
 #include "sf64dma.h"
 
-Scene D_800CAFC4[1] = {
+Scene sNoOvl_Logo[1] = {
     { NO_OVERLAY,
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -19,7 +19,7 @@ Scene D_800CAFC4[1] = {
         /* F */ ROM_SEGMENT(ast_logo) } },
 };
 
-Scene D_800CB05C[6] = {
+Scene sOvlending_Ending[6] = {
     { OVERLAY_OFFSETS(ovl_ending),
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -118,7 +118,7 @@ Scene D_800CB05C[6] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB3EC[1] = {
+Scene sOvlmenu_Title[1] = {
     { OVERLAY_OFFSETS(ovl_menu),
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -137,7 +137,7 @@ Scene D_800CB3EC[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB484[3] = {
+Scene sOvlmenu_Option[3] = {
     { OVERLAY_OFFSETS(ovl_menu),
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -188,7 +188,7 @@ Scene D_800CB484[3] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB64C[3] = {
+Scene sOvlmenu_Map[3] = {
     { OVERLAY_OFFSETS(ovl_menu),
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -239,7 +239,7 @@ Scene D_800CB64C[3] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB814[1] = {
+Scene sOvlmenu_GameOver[1] = {
     { OVERLAY_OFFSETS(ovl_menu),
       { /* 1 */ NO_SEGMENT,
         /* 2 */ NO_SEGMENT,
@@ -258,7 +258,7 @@ Scene D_800CB814[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB8AC[1] = {
+Scene sOvli1_Corneria[1] = {
     { OVERLAY_OFFSETS(ovl_i1),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -277,7 +277,7 @@ Scene D_800CB8AC[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CB944[2] = {
+Scene sOvli2_Meteo[2] = {
     { OVERLAY_OFFSETS(ovl_i2),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -312,7 +312,7 @@ Scene D_800CB944[2] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CBA74[6] = {
+Scene sOvli5_Titania[6] = {
     { OVERLAY_OFFSETS(ovl_i5),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -411,7 +411,7 @@ Scene D_800CBA74[6] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CBE04[2] = {
+Scene sOvli2_SectorX[2] = {
     { OVERLAY_OFFSETS(ovl_i2),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -446,7 +446,7 @@ Scene D_800CBE04[2] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CBF34[1] = {
+Scene sOvli4_SectorZ[1] = {
     { OVERLAY_OFFSETS(ovl_i4),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -465,7 +465,7 @@ Scene D_800CBF34[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CBFCC[1] = {
+Scene sOvli3_Aquas[1] = {
     { OVERLAY_OFFSETS(ovl_i3),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -484,7 +484,7 @@ Scene D_800CBFCC[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC064[1] = {
+Scene sOvli3_Area6[1] = {
     { OVERLAY_OFFSETS(ovl_i3),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -503,7 +503,7 @@ Scene D_800CC064[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC0FC[2] = {
+Scene sOvli4_Fortuna[2] = {
     { OVERLAY_OFFSETS(ovl_i4),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -538,7 +538,7 @@ Scene D_800CC0FC[2] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC22C[1] = {
+Scene sOvli3_Unk4[1] = {
     { OVERLAY_OFFSETS(ovl_i3),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -557,7 +557,7 @@ Scene D_800CC22C[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC2C4[1] = {
+Scene sOvli6_SectorY[1] = {
     { OVERLAY_OFFSETS(ovl_i6),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -576,7 +576,7 @@ Scene D_800CC2C4[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC35C[1] = {
+Scene sOvli3_Solar[1] = {
     { OVERLAY_OFFSETS(ovl_i3),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -595,7 +595,7 @@ Scene D_800CC35C[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC3F4[1] = {
+Scene sOvli3_Zoness[1] = {
     { OVERLAY_OFFSETS(ovl_i3),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -614,7 +614,7 @@ Scene D_800CC3F4[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC48C[1] = {
+Scene sOvli1_Venom1[1] = {
     { OVERLAY_OFFSETS(ovl_i1),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -633,7 +633,7 @@ Scene D_800CC48C[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC524[1] = {
+Scene sOvli6_Andross[1] = {
     { OVERLAY_OFFSETS(ovl_i6),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -652,7 +652,7 @@ Scene D_800CC524[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC5BC[2] = {
+Scene sOvli6_Venom2[2] = {
     { OVERLAY_OFFSETS(ovl_i6),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -687,7 +687,7 @@ Scene D_800CC5BC[2] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC6EC[1] = {
+Scene sOvli2_Setup20[1] = {
     { OVERLAY_OFFSETS(ovl_i2),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -706,7 +706,7 @@ Scene D_800CC6EC[1] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC784[1] = {
+Scene sOvli4_Bolse[1] = {
     { OVERLAY_OFFSETS(ovl_i4),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_space),
@@ -725,7 +725,7 @@ Scene D_800CC784[1] = {
         /* F */ ROM_SEGMENT(ast_star_wolf) } },
 };
 
-Scene D_800CC81C[1] = {
+Scene sOvli4_Katina[1] = {
     { OVERLAY_OFFSETS(ovl_i4),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -744,7 +744,7 @@ Scene D_800CC81C[1] = {
         /* F */ ROM_SEGMENT(ast_star_wolf) } },
 };
 
-Scene D_800CC8B4[2] = {
+Scene sOvli5_Macbeth[2] = {
     { OVERLAY_OFFSETS(ovl_i5),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -779,7 +779,7 @@ Scene D_800CC8B4[2] = {
         /* F */ NO_SEGMENT } },
 };
 
-Scene D_800CC9E4[1] = {
+Scene sOvli1_Training[1] = {
     { OVERLAY_OFFSETS(ovl_i1),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
@@ -798,7 +798,7 @@ Scene D_800CC9E4[1] = {
         /* F */ ROM_SEGMENT(ast_star_wolf) } },
 };
 
-Scene D_800CCA7C[2] = {
+Scene sOvli2_Versus[2] = {
     { OVERLAY_OFFSETS(ovl_i2),
       { /* 1 */ ROM_SEGMENT(ast_common),
         /* 2 */ ROM_SEGMENT(ast_bg_planet),
diff --git a/srceu/engine/fox_message.c b/srceu/engine/fox_message.c
index 8bab23a1c..0ad3e3cb0 100644
--- a/srceu/engine/fox_message.c
+++ b/srceu/engine/fox_message.c
@@ -14,4 +14,4 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_message/func_800C38C8.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_message/func_800C3ABC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_message/Message_IsPrintingChar.s")
diff --git a/srceu/engine/fox_play.c b/srceu/engine/fox_play.c
index 4a88d5296..26659044b 100644
--- a/srceu/engine/fox_play.c
+++ b/srceu/engine/fox_play.c
@@ -8,9 +8,9 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A46AC.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A4B20.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_WingEffects.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A4D60.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_DamageEffects.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A5300.s")
 
@@ -27,13 +27,13 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A5EA0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A5F04.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_Setup.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A600C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_InitEnvironment.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A642C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A657C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_SetupStarfield.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A6660.s")
 
@@ -47,9 +47,9 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A67D8.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A6808.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_ClearObjectData.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A6C50.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_UpdateFillScreen.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800A6D4C.s")
 
@@ -85,17 +85,17 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AAEBC.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AB968.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_InitializeAll.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AB9C0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AB9F0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_InitLevel.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AC020.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_ResetVsData.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AC0C4.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AC170.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_Init.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AC95C.s")
 
@@ -123,9 +123,9 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AE624.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AE944.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_CheckBounds360.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AEB70.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_MoveArwing360.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800AF3AC.s")
 
@@ -169,7 +169,7 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B4E2C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B4FE4.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Player_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B5DE4.s")
 
@@ -191,14 +191,15 @@ void func_800A59F0(void) {
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B7B08.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B80D8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_UpdateLevel.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B8A54.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B8C54.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B8DCC.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/func_800B8DF4.s")
+// has this added D_80163BC8 = 1.2f;
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/Play_Main.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_play/D_800D9760.s")
diff --git a/srceu/engine/fox_radio.c b/srceu/engine/fox_radio.c
index 5fdc76d35..aace8b3e7 100644
--- a/srceu/engine/fox_radio.c
+++ b/srceu/engine/fox_radio.c
@@ -1,13 +1,19 @@
 #include "common.h"
 
+// No difference
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BAE90.s")
 
+// No difference
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BAEEC.s")
 
+// Different in EU
+// https://decomp.me/scratch/kqrrH
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BAF38.s")
 
+// No difference
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BB230.s")
 
+// No difference
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BBAD0.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_radio/func_800BBD18.s")
diff --git a/srceu/engine/fox_rcp.c b/srceu/engine/fox_rcp.c
index 2534959ba..22369b1ee 100644
--- a/srceu/engine/fox_rcp.c
+++ b/srceu/engine/fox_rcp.c
@@ -1,6 +1,6 @@
 #include "common.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/func_800B9500.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/RCP_SetupDL.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/func_800B9544.s")
 
@@ -30,7 +30,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/func_800B9A58.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/func_800B9A88.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/RCP_SetupDL_36.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_rcp/func_800B9AB8.s")
 
diff --git a/srceu/engine/fox_save.c b/srceu/engine/fox_save.c
index 0d112d1fb..67e5f175d 100644
--- a/srceu/engine/fox_save.c
+++ b/srceu/engine/fox_save.c
@@ -2,8 +2,8 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/func_800C3B40.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/func_800C3C14.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/Save_Write.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/func_800C3D24.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/Save_Read.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_save/D_800DA8A0.s")
diff --git a/srceu/engine/fox_std_lib.c b/srceu/engine/fox_std_lib.c
index cbcae9f7e..f7100bd6d 100644
--- a/srceu/engine/fox_std_lib.c
+++ b/srceu/engine/fox_std_lib.c
@@ -24,9 +24,9 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009C154.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009C5FC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/Math_SmoothStepToF.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009C708.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/Math_SmoothStepToAngle.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009C8BC.s")
 
@@ -46,7 +46,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009E09C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009E364.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/Lib_TextureRect_IA8.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009E61C.s")
 
@@ -66,7 +66,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009FC90.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_8009FF44.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/Graphics_FillRectangle.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/engine/fox_std_lib/func_800A009C.s")
 
diff --git a/srceu/overlays/ovl_ending/end1.c b/srceu/overlays/ovl_ending/end1.c
index cca56cacd..d6136e104 100644
--- a/srceu/overlays/ovl_ending/end1.c
+++ b/srceu/overlays/ovl_ending/end1.c
@@ -38,7 +38,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_ending/end1/func_ending_8018E3E8.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_ending/end1/func_ending_8018E458.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_ending/end1/Ending_Main.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_ending/end1/func_ending_8018E5D8.s")
 
diff --git a/srceu/overlays/ovl_menu/fox_option.c b/srceu/overlays/ovl_menu/fox_option.c
index 4d2e20453..656539112 100644
--- a/srceu/overlays/ovl_menu/fox_option.c
+++ b/srceu/overlays/ovl_menu/fox_option.c
@@ -1,44 +1,46 @@
 #include "common.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80195880.s")
+// difference from US: there's a call to func_menu_8019626C after setting gVIsPerFrame
+// sOptionCardList setup is missing from this function, perhaps it was moved to func_menu_8019626C?
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Setup.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80195E4C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Main.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80195F18.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Entry_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801960D8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Entry_Draw.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019626C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80196408.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Entry_Setup.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801964EC.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019668C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80196810.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Map_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019688C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Training_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80196944.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80196D60.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_MainMenu_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801979D8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_MainMenu_Draw.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80197C78.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80197DE0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Versus_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198700.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198888.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198AB8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Sound_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198CFC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Sound_SetSoundMode.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198DE0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Sound_SetVolumeLevels.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80198F04.s")
 
@@ -46,13 +48,13 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80199CFC.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80199D64.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_ExpertSound_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_80199F94.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019A69C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019A724.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Language_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019A790.s")
 
@@ -66,19 +68,19 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019B490.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019B4D4.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Data_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019B754.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Data_Select.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019B970.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019BFF0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019C098.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Ranking_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019C138.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019C160.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Ranking_Select.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019C210.s")
 
@@ -166,7 +168,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019E630.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019E790.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_VersusMenu_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019E808.s")
 
@@ -180,13 +182,13 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F450.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F47C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_VersusStage_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F4E8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Vs_PointMatch_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F56C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Vs_BattleRoyal_Update.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F5D8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Vs_TimeTrial_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_8019F65C.s")
 
@@ -238,7 +240,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A174C.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A1A44.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Input_MoveCursor_Y.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A1BCC.s")
 
@@ -248,7 +250,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A1EF4.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A2110.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_NameEntry_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A21F0.s")
 
@@ -262,13 +264,13 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A3344.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A33A0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Score_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A34E8.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A35D8.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A369C.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/Option_Invoice_Update.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/overlays/ovl_menu/fox_option/func_menu_801A38F0.s")
 
diff --git a/srceu/sys/sys_lib.c b/srceu/sys/sys_lib.c
index 5cb3f11b2..997152191 100644
--- a/srceu/sys/sys_lib.c
+++ b/srceu/sys/sys_lib.c
@@ -8,10 +8,10 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/func_80003008.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/func_800031EC.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/Lib_InitPerspective.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/func_80003334.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/func_80003460.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/Lib_DmaRead.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/func_800035A0.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_lib/Lib_FillScreen.s")
diff --git a/srceu/sys/sys_matrix.c b/srceu/sys/sys_matrix.c
index 3726fbb52..1fcefa821 100644
--- a/srceu/sys/sys_matrix.c
+++ b/srceu/sys/sys_matrix.c
@@ -12,9 +12,9 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80005CA4.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80005DB4.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/Matrix_RotateX.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80005F00.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/Matrix_RotateY.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80006050.s")
 
@@ -26,7 +26,7 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_800069E0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80006A90.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/Matrix_MultVec3fNoTranslate.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_matrix/func_80006B28.s")
 
diff --git a/srceu/sys/sys_memory.c b/srceu/sys/sys_memory.c
index 81b978ea1..f057f660d 100644
--- a/srceu/sys/sys_memory.c
+++ b/srceu/sys/sys_memory.c
@@ -1,5 +1,5 @@
 #include "common.h"
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_memory/func_80006F90.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_memory/Memory_FreeAll.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_memory/func_80006FA8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_memory/Memory_Allocate.s")
diff --git a/srceu/sys/sys_timer.c b/srceu/sys/sys_timer.c
index 41617f4f2..0a97c376e 100644
--- a/srceu/sys/sys_timer.c
+++ b/srceu/sys/sys_timer.c
@@ -2,9 +2,9 @@
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/func_80006FD0.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/func_80007048.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/Timer_CreateTask.s")
 
-#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/func_800070D8.s")
+#pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/Timer_Increment.s")
 
 #pragma GLOBAL_ASM("asm/eu/rev0/nonmatchings/sys/sys_timer/func_800070EC.s")
 
diff --git a/srcjp/audio/audio_tables.c b/srcjp/audio/audio_tables.c
new file mode 100644
index 000000000..0da7d3a40
--- /dev/null
+++ b/srcjp/audio/audio_tables.c
@@ -0,0 +1,160 @@
+#include "sys.h"
+#include "sf64audio_provisional.h"
+
+// AudioTable gSampleBankTableInit = {
+AudioTable D_800C0760 = {
+    { 4, 0, 0 },
+    {
+        { 0x000000, 0x0DF120, MEDIUM_CART, CACHEPOLICY_4 },
+        { 0x0DF120, 0x0D1D80, MEDIUM_CART, CACHEPOLICY_4 },
+        { 0x1B0EA0, 0x48C480, MEDIUM_CART, CACHEPOLICY_4 },
+        { 0x63D320, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 },
+    },
+};
+
+// AudioTable gSeqTableInit = {
+AudioTable D_800C07B0 = {
+    { SEQ_ID_MAX, 0, 0 },
+    {
+        { 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 },     { 0x03AF0, 0x5990, MEDIUM_CART, CACHEPOLICY_0 },
+        { 0x09480, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 },     { 0x0C200, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x0D610, 0x1600, MEDIUM_CART, CACHEPOLICY_3 },     { 0x0EC10, 0xF20, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x0FB30, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 },     { 0x10ED0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x11FD0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 },     { 0x139B0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x14D90, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 },     { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x16080, 0xB70, MEDIUM_CART, CACHEPOLICY_3 },      { 0x16BF0, 0x2460, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x19050, 0xD40, MEDIUM_CART, CACHEPOLICY_3 },      { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 },   { 0x19D90, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x1A580, 0x1440, MEDIUM_CART, CACHEPOLICY_3 },     { 0x1B9C0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },   { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },   { 0x1D4E0, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x1F010, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 },     { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },   { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },   { 0x200C0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x214D0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 },      { 0x22400, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x24F30, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 },      { 0x25720, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x26AD0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 },      { 0x27740, 0x180, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x278C0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 },      { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x27E80, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 },     { 0x2CCC0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x2E1A0, 0x400, MEDIUM_CART, CACHEPOLICY_3 },      { 0x2E5A0, 0x800, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x2EDA0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 },     { 0x30850, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },   { 0x322F0, 0x1370, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x33660, 0xB80, MEDIUM_CART, CACHEPOLICY_3 },      { 0x341E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 },
+        { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 },  { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x347A0, 0x550, MEDIUM_CART, CACHEPOLICY_3 },      { 0x34CF0, 0x360, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x35050, 0x620, MEDIUM_CART, CACHEPOLICY_3 },      { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x35670, 0xA70, MEDIUM_CART, CACHEPOLICY_3 },      { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x360E0, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 },      { 0x36B90, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x37F60, 0x250, MEDIUM_CART, CACHEPOLICY_3 },      { 0x381B0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 },
+        { 0x388A0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 },      { 0x39850, 0x1780, MEDIUM_CART, CACHEPOLICY_3 },
+    },
+};
+#define SOUNDFONT_ENTRY(offset, size, medium, cachePolicy, bank1, bank2, numInst, numDrums) \
+    {                                                                                       \
+        offset, size, medium, cachePolicy, (((bank1) &0xFF) << 8) | ((bank2) &0xFF),        \
+            (((numInst) &0xFF) << 8) | ((numDrums) &0xFF)                                   \
+    }
+
+// AudioTable gSoundFontTableInit
+s32 D_800C0BE0[] = {
+    0x00210000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002F00, 0x020000FF, 0x7F000000, 0x00002F00,
+    0x00000820, 0x020101FF, 0x7F000000, 0x00003720, 0x000006E0, 0x020002FF, 0x7F000000, 0x00003E00, 0x000015E0,
+    0x020002FF, 0x7F000000, 0x000053E0, 0x00000C20, 0x020002FF, 0x7F000000, 0x00006000, 0x00000FE0, 0x020002FF,
+    0x7F000000, 0x00006FE0, 0x00001360, 0x020002FF, 0x7F000000, 0x00008340, 0x00001120, 0x020002FF, 0x7F000000,
+    0x00009460, 0x00000EA0, 0x020002FF, 0x7F000000, 0x0000A300, 0x00000CE0, 0x020002FF, 0x7F000000, 0x0000AFE0,
+    0x00001BA0, 0x020002FF, 0x7F000000, 0x0000CB80, 0x00000AC0, 0x020002FF, 0x7F000000, 0x0000D640, 0x00000AC0,
+    0x020002FF, 0x7F000000, 0x0000E100, 0x00000EE0, 0x020002FF, 0x7F000000, 0x0000EFE0, 0x00000C00, 0x020002FF,
+    0x7F000000, 0x0000FBE0, 0x000010A0, 0x020002FF, 0x7F000000, 0x00010C80, 0x00000F80, 0x020002FF, 0x7F000000,
+    0x00011C00, 0x000010C0, 0x020002FF, 0x7F000000, 0x00012CC0, 0x00001380, 0x020002FF, 0x7F000000, 0x00014040,
+    0x00002B20, 0x020002FF, 0x7F000000, 0x00016B60, 0x000009A0, 0x020002FF, 0x7F000000, 0x00017500, 0x00001220,
+    0x020303FF, 0x10400000, 0x00018720, 0x00000180, 0x020303FF, 0x03000000, 0x000188A0, 0x000011C0, 0x020303FF,
+    0x10400000, 0x00019A60, 0x00000940, 0x020303FF, 0x0A400000, 0x0001A3A0, 0x000009E0, 0x020303FF, 0x0A400000,
+    0x0001AD80, 0x00000920, 0x020303FF, 0x0A400000, 0x0001B6A0, 0x000009E0, 0x020303FF, 0x0A400000, 0x0001C080,
+    0x000009E0, 0x020303FF, 0x0A400000, 0x0001CA60, 0x00000A10, 0x020303FF, 0x0A400000, 0x0001D470, 0x000009E0,
+    0x020303FF, 0x0A400000, 0x0001DE50, 0x00000A00, 0x020303FF, 0x0A400000, 0x0001E850, 0x000008D0, 0x020303FF,
+    0x0A400000,
+};
+/*
+AudioTable gSoundFontTableInit = {
+    { 33, 0, 0 },
+    {
+        SOUNDFONT_ENTRY(0x00000, 0x2F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x02F00, 0x0FE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_MAP, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x03EE0, 0x0640, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x04520, 0x1560, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x05A80, 0x0C00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x06680, 0x0DE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x07460, 0x1200, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x08660, 0x1040, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x096A0, 0x0E40, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0A4E0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0B100, 0x1920, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0CA20, 0x0A20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0D440, 0x0A00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0DE40, 0x0D60, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0EBA0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x0F7C0, 0x0F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x106C0, 0x0F20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x115E0, 0x0E20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x12400, 0x10A0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x134A0, 0x2580, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x15A20, 0x09E0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
+        SOUNDFONT_ENTRY(0x16400, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
+        SOUNDFONT_ENTRY(0x17620, 0x0180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0),
+        SOUNDFONT_ENTRY(0x177A0, 0x11C0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
+        SOUNDFONT_ENTRY(0x18960, 0x0940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x192A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x19C80, 0x0920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1A5A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1AF80, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1B960, 0x0A10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1C370, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1CD50, 0x0A00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+        SOUNDFONT_ENTRY(0x1D750, 0x08D0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
+    },
+};
+*/
+
+#define AS_BYTES(x) (((x) >> 8) & 0xFF), ((x) &0xFF)
+
+// u8 gSeqFontTableInit[283]
+s32 D_800C0E00[] = {
+    0x00840086, 0x009B009D, 0x009F00A1, 0x00A300A5, 0x00A700A9, 0x00AB00AD, 0x00AF00B1, 0x00B300B5, 0x00B700B9,
+    0x00BB00BD, 0x00BF00C1, 0x00C300C5, 0x00C700C9, 0x00CB00CD, 0x00CF00D1, 0x00D300D5, 0x00D700D9, 0x00DB00DD,
+    0x00DF00E1, 0x00E300E5, 0x00E700E9, 0x00EB00ED, 0x00EF00F1, 0x00F300F5, 0x00F700F9, 0x00FB00FD, 0x00FF0101,
+    0x01030105, 0x01070109, 0x010B010D, 0x010F0111, 0x01130115, 0x01170119, 0x01001414, 0x13121110, 0x0F0E0D0C,
+    0x0B0A0908, 0x07060504, 0x03010201, 0x18011D01, 0x19011A01, 0x1C011901, 0x19011D01, 0x18011D01, 0x1C011901,
+    0x1E011801, 0x19011C01, 0x1C011F01, 0x1F011C01, 0x1C011F01, 0x1F011F01, 0x1C011F01, 0x1F011F01, 0x1F011F01,
+    0x1F012001, 0x15011501, 0x16011501, 0x15011501, 0x15011501, 0x17011901, 0x15011501, 0x1D011901, 0x1F011501,
+    0x15011501, 0x15011501, 0x15011501, 0x15011501, 0x1B011901, 0x15011901, 0x19011901, 0x15011F00, 0x00000000,
+};
+
+// clang-format off
+/*
+u8 gSeqFontTableInit[283] = {
+    // Offset into this table for sequence sound font list
+    AS_BYTES(132), AS_BYTES(134), AS_BYTES(155), AS_BYTES(157), AS_BYTES(159), AS_BYTES(161), AS_BYTES(163),
+    AS_BYTES(165), AS_BYTES(167), AS_BYTES(169), AS_BYTES(171), AS_BYTES(173), AS_BYTES(175), AS_BYTES(177),
+    AS_BYTES(179), AS_BYTES(181), AS_BYTES(183), AS_BYTES(185), AS_BYTES(187), AS_BYTES(189), AS_BYTES(191),
+    AS_BYTES(193), AS_BYTES(195), AS_BYTES(197), AS_BYTES(199), AS_BYTES(201), AS_BYTES(203), AS_BYTES(205),
+    AS_BYTES(207), AS_BYTES(209), AS_BYTES(211), AS_BYTES(213), AS_BYTES(215), AS_BYTES(217), AS_BYTES(219),
+    AS_BYTES(221), AS_BYTES(223), AS_BYTES(225), AS_BYTES(227), AS_BYTES(229), AS_BYTES(231), AS_BYTES(233),
+    AS_BYTES(235), AS_BYTES(237), AS_BYTES(239), AS_BYTES(241), AS_BYTES(243), AS_BYTES(245), AS_BYTES(247),
+    AS_BYTES(249), AS_BYTES(251), AS_BYTES(253), AS_BYTES(255), AS_BYTES(257), AS_BYTES(259), AS_BYTES(261),
+    AS_BYTES(263), AS_BYTES(265), AS_BYTES(267), AS_BYTES(269), AS_BYTES(271), AS_BYTES(273), AS_BYTES(275),
+    AS_BYTES(277), AS_BYTES(279), AS_BYTES(281),
+
+    // sound font for SFX sequence
+    1,  0,
+    // sound fonts voice sequence
+    20, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9,  8, 7,  6, 5,  4, 3,  1, 2,
+    // sound fonts for BGM sequences. Each sequence has a single sound font.
+    1, 24, 1, 29, 1, 25, 1, 26, 1, 28, 1, 25, 1, 25, 1, 29, 1, 24, 1, 29, 1, 28, 1, 25, 1, 30, 1, 24, 1, 25, 1, 28,
+    1, 28, 1, 31, 1, 31, 1, 28, 1, 28, 1, 31, 1, 31, 1, 31, 1, 28, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32,
+    1, 21, 1, 21, 1, 22, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 23, 1, 25, 1, 21, 1, 21, 1, 29, 1, 25, 1, 31, 1, 21,
+    1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 27, 1, 25, 1, 21, 1, 25, 1, 25, 1, 25, 1, 21, 1, 31
+};
+*/
+// clang-format on
diff --git a/srcjp/overlays/ovl_i1/fox_i1.c b/srcjp/overlays/ovl_i1/fox_i1.c
index 76e6764e3..140c35a1b 100644
--- a/srcjp/overlays/ovl_i1/fox_i1.c
+++ b/srcjp/overlays/ovl_i1/fox_i1.c
@@ -1,3 +1,3 @@
 #include "common.h"
 
-#pragma GLOBAL_ASM("asm/jp/rev0/nonmatchings/overlays/ovl_i1/fox_i1/func_i1_8017E7A0.s")
+#pragma GLOBAL_ASM("asm/jp/rev0/nonmatchings/overlays/ovl_i1/fox_i1/OvlI1_CallFunction.s")
diff --git a/starfox64.eu.rev0.uncompressed.md5 b/starfox64.eu.rev0.uncompressed.md5
index 8e3b48ab2..4119848d0 100644
--- a/starfox64.eu.rev0.uncompressed.md5
+++ b/starfox64.eu.rev0.uncompressed.md5
@@ -1 +1 @@
-5541368ed41aee7c1612379aee2415bd  baserom.eu.rev0.uncompressed.z64
+5541368ed41aee7c1612379aee2415bd  ./build/starfox64.eu.rev0.uncompressed.z64
diff --git a/yamls/eu/rev0/main.yaml b/yamls/eu/rev0/main.yaml
index a43b65114..e6bb69b9b 100644
--- a/yamls/eu/rev0/main.yaml
+++ b/yamls/eu/rev0/main.yaml
@@ -228,7 +228,7 @@
       - [0xCB690, data, engine/fox_tank]
       - [0xCB6F0, data, engine/fox_demo]
       - [0xCB9B0, data, engine/fox_display]
-      - [0xCBB40, .data, engine/fox_load]
+      - [0xCBB40, data, engine/fox_load]
       - [0xCD860, data, engine/fox_edata]
       - [0xD1360, data, engine/fox_edisplay]
       - [0xD1790, data, engine/fox_enmy]
diff --git a/yamls/jp/rev0/header.yaml b/yamls/jp/rev0/header.yaml
index aaa7d62bd..bf5bdcdf5 100644
--- a/yamls/jp/rev0/header.yaml
+++ b/yamls/jp/rev0/header.yaml
@@ -17,6 +17,7 @@ options:
   - linker_scripts/jp/rev0/symbol_addrs.txt
   - linker_scripts/jp/rev0/symbol_addrs_fix.txt
   - linker_scripts/jp/rev0/symbol_addrs_assets.txt
+  - linker_scripts/jp/rev0/symbol_addrs_overlays.txt
 
   asm_path: asm/jp/rev0
   src_path: srcjp
diff --git a/yamls/jp/rev0/main.yaml b/yamls/jp/rev0/main.yaml
index fcda490c6..36c42805b 100644
--- a/yamls/jp/rev0/main.yaml
+++ b/yamls/jp/rev0/main.yaml
@@ -154,7 +154,7 @@
 
       # DATA - Microcode
       - [0xC1030, data, aspmain]
-      - [0xC1360, data, audio/audio_tables]
+      - [0xC1360, .data, audio/audio_tables]
       - [0xC1B20, data, f3dex]
 
       # DATA - Nintendo Libraries
diff --git a/yamls/jp/rev0/overlays.yaml b/yamls/jp/rev0/overlays.yaml
index 925cc2dba..51c2d0235 100644
--- a/yamls/jp/rev0/overlays.yaml
+++ b/yamls/jp/rev0/overlays.yaml
@@ -1,4 +1,4 @@
-  - name: ovl_i1
+  - name: ovl_i1  # size = 0x141A0
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i1
@@ -25,7 +25,7 @@
     - { type: bss, vram: 0x80192950, name: fox_co }
     - { type: bss, vram: 0x80192A70, name: fox_ve1 }
 
-  - name: ovl_i2
+  - name: ovl_i2 # size = 0xE800
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i2
@@ -36,8 +36,8 @@
     symbol_name_format: i2_$VRAM
     subsegments:
     - [0xDBD820, c, fox_i2]
-    - [0xDBD830, c, fox_me]
-    - [0xDC52D0, c, fox_sx]
+    - [0xDBD830, c, fox_me] # size = 0x7AA0
+    - [0xDC52D0, c, fox_sx] # size = 0x6400
     - [0xDCB6D0, data, fox_i2]
     - [0xDCB6E0, data, fox_me]
     - [0xDCB8F0, data, fox_sx]
@@ -46,7 +46,7 @@
     - { type: bss, vram: 0x8018CFA0, name: fox_i2 }
     - { type: bss, vram: 0x8018CFB0, name: fox_sx }
 
-  - name: ovl_i3
+  - name: ovl_i3 # size = 0x3AD50
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i3
@@ -77,7 +77,7 @@
     - { type: bss, vram: 0x801B9A70, name: fox_aq }
 
 
-  - name: ovl_i4
+  - name: ovl_i4 # size = 0x18B00
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i4
@@ -87,11 +87,11 @@
     bss_size: 0x1B0
     symbol_name_format: i4_$VRAM
     subsegments:
-    - [0xE06D70, c, fox_i4]
-    - [0xE06E40, c, fox_fo]
-    - [0xE0B580, c, fox_bo]
-    - [0xE11FD0, c, fox_ka]
-    - [0xE18DD0, c, fox_sz]
+    - [0xE06D70, c, fox_i4] # size = 0xD0
+    - [0xE06E40, c, fox_fo] # size = 0x4740
+    - [0xE0B580, c, fox_bo] # size = 0x6A50
+    - [0xE11FD0, c, fox_ka] # size = 0x6E00
+    - [0xE18DD0, c, fox_sz] # size = 0x54D0
     - [0xE1E2A0, data, fox_i4]
     - [0xE1E2B0, data, fox_fo]
     - [0xE1E350, data, fox_bo]
diff --git a/yamls/us/rev1/overlays.yaml b/yamls/us/rev1/overlays.yaml
index a1992e90b..e7e1a50e9 100644
--- a/yamls/us/rev1/overlays.yaml
+++ b/yamls/us/rev1/overlays.yaml
@@ -1,4 +1,4 @@
-  - name: ovl_i1
+  - name: ovl_i1 # size = 0x141A0
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i1
@@ -25,7 +25,7 @@
     - { type: .bss, vram: 0x8019B6D0, name: fox_co }
     - { type: .bss, vram: 0x8019B7F0, name: fox_ve1 }
 
-  - name: ovl_i2
+  - name: ovl_i2 # size = 0xE850
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i2
@@ -36,8 +36,8 @@
     symbol_name_format: i2_$VRAM
     subsegments:
     - [0xE08400, c, fox_i2]
-    - [0xE08410, c, fox_me]
-    - [0xE0FF10, c, fox_sx]
+    - [0xE08410, c, fox_me] # size = 0x7B00
+    - [0xE0FF10, c, fox_sx] # size = 0x63F0
     - [0xE16300, .data, fox_i2]
     - [0xE16310, .data, fox_me]
     - [0xE16520, .data, fox_sx]
@@ -46,7 +46,7 @@
     - { type: .bss, vram: 0x80195D70, name: fox_i2 }
     - { type: .bss, vram: 0x80195D80, name: fox_sx }
 
-  - name: ovl_i3
+  - name: ovl_i3 # size = 0x3AD20
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i3
@@ -76,7 +76,7 @@
     - { type: .bss, vram: 0x801C2740, name: fox_so }
     - { type: .bss, vram: 0x801C27C0, name: fox_aq }
 
-  - name: ovl_i4
+  - name: ovl_i4 # size = 0x18EA0
     exclusive_ram_id: overlay
     type: code
     dir: overlays/ovl_i4
@@ -86,11 +86,11 @@
     bss_size: 0x1B0
     symbol_name_format: i4_$VRAM
     subsegments:
-    - [0xE51970, c, fox_i4]
-    - [0xE51A40, c, fox_fo]
-    - [0xE561B0, c, fox_bo]
-    - [0xE5CC30, c, fox_ka]
-    - [0xE63D50, c, fox_sz]
+    - [0xE51970, c, fox_i4] # size = 0xD0
+    - [0xE51A40, c, fox_fo] # size = 0x4770
+    - [0xE561B0, c, fox_bo] # size = 0x6A80
+    - [0xE5CC30, c, fox_ka] # size = 0x7120
+    - [0xE63D50, c, fox_sz] # size = 0x54D0
     - [0xE69220, .data, fox_i4]
     - [0xE69230, .data, fox_fo]
     - [0xE692D0, .data, fox_bo]