master
n64 3 years ago
parent 9273f38df1
commit 9a801cb96d
  1. 9
      CHANGES
  2. 23
      Jenkinsfile
  3. 23
      Makefile
  4. 4
      actors/group5.h
  5. 146
      actors/mario/geo.inc.c
  6. 2
      actors/tornado/geo.inc.c
  7. 4
      asm/non_matchings/eu/append_bubble_vertex_buffer.s
  8. 4
      asm/non_matchings/eu/append_snowflake_vertex_buffer.s
  9. 269
      asm/non_matchings/eu/audio/alloc_bank_or_seq.s
  10. 88
      asm/non_matchings/eu/audio/func_eu_802e00d8.s
  11. 263
      asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s
  12. 179
      asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s
  13. 781
      asm/non_matchings/eu/audio/seq_channel_layer_process_script.s
  14. 56
      asm/non_matchings/eu/audio/sequence_channel_enable.s
  15. 929
      asm/non_matchings/eu/audio/sequence_channel_process_script.s
  16. 698
      asm/non_matchings/eu/audio/sequence_player_process_sequence.s
  17. 331
      asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s
  18. 178
      asm/non_matchings/eu/audio/synthesis_execute.s
  19. 657
      asm/non_matchings/eu/audio/synthesis_process_note.s
  20. 220
      asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s
  21. 58
      asm/non_matchings/eu/handle_dialog_text_and_pages.s
  22. 55
      asm/non_matchings/eu/libultra_unk_802aeeb0.s
  23. 87
      asm/non_matchings/eu/libultra_unk_802aef80.s
  24. 86
      asm/non_matchings/eu/play_sequence.s
  25. 36
      asm/non_matchings/eu/player_performed_grab_escape_action.s
  26. 156
      asm/non_matchings/patch_audio_bank.s
  27. 8
      data/behavior_data.c
  28. 54
      enhancements/README.md
  29. 0
      enhancements/RecordDemo.js
  30. 29
      enhancements/crash.h
  31. 292
      enhancements/crash.inc.c
  32. 158
      enhancements/crash.inc.s
  33. 529
      enhancements/crash.patch
  34. 23
      enhancements/debug_box.h
  35. 248
      enhancements/debug_box.inc.c
  36. 302
      enhancements/debug_box.patch
  37. 172
      enhancements/dyn_light.inc.c
  38. 59
      enhancements/fps.inc.c
  39. 60
      enhancements/fps.patch
  40. 312
      enhancements/ique_support.patch
  41. 46
      enhancements/ique_support/README.md
  42. 11
      enhancements/ique_support/consoleType.c
  43. 7
      enhancements/ique_support/console_type.h
  44. 9
      enhancements/ique_support/osEepromProbe.inc.c
  45. 8
      enhancements/ique_support/osEepromRead.inc.c
  46. 8
      enhancements/ique_support/osEepromWrite.inc.c
  47. 18
      enhancements/ique_support/skGetId.s
  48. 193
      enhancements/mem_error_screen.inc.c
  49. 298
      enhancements/mem_error_screen.patch
  50. 177
      enhancements/record_demo.patch
  51. 163
      enhancements/record_demo/record_demo.inc.c
  52. 14
      extract_assets.py
  53. 4
      first-diff.py
  54. 1
      include/PR/os_message.h
  55. 2
      include/PR/os_misc.h
  56. 52
      include/PR/os_pi.h
  57. 2
      include/PR/os_thread.h
  58. 2
      include/audio_defines.h
  59. 6
      include/behavior_data.h
  60. 6
      include/config.h
  61. 2
      include/macro_presets.h
  62. 2
      include/model_ids.h
  63. 23
      include/object_constants.h
  64. 6
      include/object_fields.h
  65. 9
      include/segments.h
  66. 4
      include/sm64.h
  67. 179
      include/text_strings.h.in
  68. 24
      include/types.h
  69. 2
      levels/bbh/script.c
  70. 3
      levels/ending/geo.c
  71. 4
      levels/intro/geo.c
  72. 5
      levels/menu/header.h
  73. 26
      levels/menu/leveldata.c
  74. 2
      levels/scripts.c
  75. 1
      levels/sl/script.c
  76. 10
      levels/ssl/script.c
  77. BIN
      lib/PR/boot/F3D_boot_eu.bin
  78. BIN
      lib/PR/f3d/new/F3D_data_EU.bin
  79. 474
      lib/asm/__osExceptionPreamble.s
  80. 22
      lib/asm/__os_eu_802ef550.s
  81. 34
      lib/asm/osSetIntMask.s
  82. 18
      lib/asm/parameters.s
  83. 9
      lib/rsp.s
  84. 147
      lib/src/D_802F4380.c
  85. 12
      lib/src/EU_D_802f4330.c
  86. 4
      lib/src/_Ldtob.c
  87. 86
      lib/src/__osDevMgrMain.c
  88. 5
      lib/src/__osGetCurrFaultedThread.c
  89. 1
      lib/src/__osSyncPutChars.c
  90. 27
      lib/src/__osViInit.c
  91. 171
      lib/src/func_802F4A20.c
  92. 31
      lib/src/func_802F7140.c
  93. 36
      lib/src/func_802F71A0.c
  94. 33
      lib/src/func_802F71F0.c
  95. 42
      lib/src/hardware.h
  96. 2
      lib/src/kdebugserver.c
  97. 34
      lib/src/libultra_internal.h
  98. 22
      lib/src/new_func.h
  99. 4
      lib/src/osContInit.c
  100. 8
      lib/src/osCreatePiManager.c
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,3 +1,12 @@
Refresh #6
1.) Make tools work on MinGW (#804)
2.) Document mario_misc (#628)
3.) add patch_libmalloc.py script to work around compiler crashes (#811)
4.) Label the coffins file. (#829)
5.) Convert enhancements into patches (#827)
6.) Document Tweester.inc.c (#840)
7.) EU OK and cleanup EU (#782)
Refresh #5
1.) mem_error_screen.inc.c updated for C (#775)
2.) updated patch_libultra_math to work directly on libultra.a (#781)

23
Jenkinsfile vendored

@ -17,14 +17,33 @@ pipeline {
sh './extract_assets.py jp us eu'
}
}
stage('Build U Source') {
steps {
sh 'make -j4 VERSION=us'
}
}
stage('Build E Source') {
steps {
sh 'make -j4 VERSION=eu'
}
}
stage('Build J Source') {
steps {
sh 'make -j4 VERSION=jp'
}
}
stage('Build U Source') {
stage('Test Enhancements') {
steps {
sh 'make -j4 VERSION=us'
sh '''
set -e
for f in enhancements/*.patch
do
git clean -fd .
git checkout -- .
echo 'y' | tools/apply_patch.sh "$f"
make -j4 VERSION=us COMPARE=0
done
'''
}
}
}

@ -37,7 +37,6 @@ ifeq ($(VERSION),us)
TARGET := sm64.us
else
ifeq ($(VERSION),eu)
$(warning Building EU is experimental and is prone to breaking. Try at your own risk.)
VERSION_CFLAGS := -DVERSION_EU
VERSION_ASFLAGS := --defsym VERSION_EU=1
GRUCODE_CFLAGS := -DF3D_NEW
@ -193,7 +192,7 @@ GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
DEP_FILES := $(O_FILES:.o=.d) $(ULTRA_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d
# Files with GLOBAL_ASM blocks
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/audio/*.c) $(wildcard src/game/*.c)
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/**/*.c)
GLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
GLOBAL_ASM_DEP = $(BUILD_DIR)/src/audio/non_matching_dep
@ -316,10 +315,14 @@ $(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in
ifeq ($(VERSION),eu)
TEXT_DIRS := text/de text/us text/fr
# EU encoded text inserted into individual segment 0x19 files
# EU encoded text inserted into individual segment 0x19 files,
# and course data also duplicated in leveldata.c
$(BUILD_DIR)/bin/eu/translation_en.o: $(BUILD_DIR)/text/us/define_text.inc.c
$(BUILD_DIR)/bin/eu/translation_de.o: $(BUILD_DIR)/text/de/define_text.inc.c
$(BUILD_DIR)/bin/eu/translation_fr.o: $(BUILD_DIR)/text/fr/define_text.inc.c
$(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/us/define_courses.inc.c
$(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/de/define_courses.inc.c
$(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/fr/define_courses.inc.c
else
TEXT_DIRS := text/$(VERSION)
@ -328,6 +331,10 @@ TEXT_DIRS := text/$(VERSION)
$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c
endif
$(BUILD_DIR)/text/%/define_courses.inc.c: text/define_courses.inc.c text/%/courses.h
$(CPP) $(VERSION_CFLAGS) $< -o $@ -I text/$*/
$(TEXTCONV) charmap.txt $@ $@
$(BUILD_DIR)/text/%/define_text.inc.c: text/define_text.inc.c text/%/courses.h text/%/dialogs.h
$(CPP) $(VERSION_CFLAGS) $< -o $@ -I text/$*/
$(TEXTCONV) charmap.txt $@ $@
@ -443,6 +450,9 @@ $(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*
# Source code
$(BUILD_DIR)/levels/%/leveldata.o: OPT_FLAGS := -g
$(BUILD_DIR)/actors/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/bin/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: MIPSISET := -mips1
$(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
@ -460,6 +470,13 @@ ifeq ($(VERSION),eu)
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3
# enable loop unrolling except for external.c (external.c might also have used
# unrolling, but it makes one loop harder to match)
$(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2
$(BUILD_DIR)/src/audio/load.o: OPT_FLAGS := -O2
$(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
endif
ifeq ($(NON_MATCHING),0)

@ -77,9 +77,9 @@ extern const Gfx pokey_seg5_dl_05012808[];
extern const Gfx pokey_seg5_dl_05013078[];
extern const Gfx pokey_seg5_dl_050130B0[];
// tornado
// tweester
extern const Gfx tornado_seg5_dl_05014450[];
extern const Gfx tornado_seg5_dl_050145C0[];
extern const GeoLayout tornado_seg5_geo_05014630[];
extern const GeoLayout tweester_geo[];
#endif

@ -2,7 +2,7 @@
// 0x170002E0
const GeoLayout mario_geo_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -32,7 +32,7 @@ const GeoLayout mario_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left
@ -40,7 +40,7 @@ const GeoLayout mario_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right
@ -56,7 +56,7 @@ const GeoLayout mario_geo_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed),
@ -76,7 +76,7 @@ const GeoLayout mario_geo_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_hand_closed),
@ -106,7 +106,7 @@ const GeoLayout mario_geo_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_butt), // starts sharing solid color with mario_torso (blue)
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_torso),
@ -155,7 +155,7 @@ const GeoLayout mario_geo_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_foot), // stops sharing because foot has its solid color (brown)
@ -175,7 +175,7 @@ const GeoLayout mario_geo_medium_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed),
@ -195,7 +195,7 @@ const GeoLayout mario_geo_medium_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_hand_closed),
@ -223,7 +223,7 @@ const GeoLayout mario_geo_medium_poly_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_butt), // starts sharing solid color with mario_torso (blue)
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_medium_poly_torso),
@ -272,7 +272,7 @@ const GeoLayout mario_geo_medium_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_foot), // stops sharing because foot has its solid color (brown)
@ -288,7 +288,7 @@ const GeoLayout mario_geo_medium_poly_body[] = {
// 0x170009D4
const GeoLayout mario_geo_low_poly_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -318,7 +318,7 @@ const GeoLayout mario_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left
@ -326,7 +326,7 @@ const GeoLayout mario_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right
@ -342,7 +342,7 @@ const GeoLayout mario_geo_low_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed),
@ -362,7 +362,7 @@ const GeoLayout mario_geo_low_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_hand_closed),
@ -390,7 +390,7 @@ const GeoLayout mario_geo_low_poly_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_butt), // starts sharing solid color with mario_torso (blue)
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_low_poly_torso),
@ -439,7 +439,7 @@ const GeoLayout mario_geo_low_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_foot), // stops sharing because foot has its solid color (brown)
@ -457,7 +457,7 @@ const GeoLayout mario_geo_low_poly_body[] = {
// 0x17000DEC
const GeoLayout mario_vanish_geo_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -487,7 +487,7 @@ const GeoLayout mario_vanish_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),
@ -495,7 +495,7 @@ const GeoLayout mario_vanish_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),
@ -511,7 +511,7 @@ const GeoLayout mario_vanish_geo_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed),
@ -531,7 +531,7 @@ const GeoLayout mario_vanish_geo_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_hand_closed),
@ -561,7 +561,7 @@ const GeoLayout mario_vanish_geo_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_torso),
@ -610,7 +610,7 @@ const GeoLayout mario_vanish_geo_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_foot),
@ -630,7 +630,7 @@ const GeoLayout mario_vanish_geo_medium_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed),
@ -650,7 +650,7 @@ const GeoLayout mario_vanish_geo_medium_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_hand_closed),
@ -678,7 +678,7 @@ const GeoLayout mario_vanish_geo_medium_poly_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_medium_poly_torso),
@ -727,7 +727,7 @@ const GeoLayout mario_vanish_geo_medium_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_foot),
@ -743,7 +743,7 @@ const GeoLayout mario_vanish_geo_medium_poly_body[] = {
// 0x170014E0
const GeoLayout mario_vanish_geo_low_poly_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -773,7 +773,7 @@ const GeoLayout mario_vanish_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),
@ -781,7 +781,7 @@ const GeoLayout mario_vanish_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),
@ -797,7 +797,7 @@ const GeoLayout mario_vanish_geo_low_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed),
@ -817,7 +817,7 @@ const GeoLayout mario_vanish_geo_low_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_hand_closed),
@ -845,7 +845,7 @@ const GeoLayout mario_vanish_geo_low_poly_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_low_poly_torso),
@ -894,7 +894,7 @@ const GeoLayout mario_vanish_geo_low_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_foot),
@ -912,7 +912,7 @@ const GeoLayout mario_vanish_geo_low_poly_body[] = {
// 0x170018F8
const GeoLayout mario_metal_geo_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -922,7 +922,7 @@ const GeoLayout mario_metal_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // left
@ -930,7 +930,7 @@ const GeoLayout mario_metal_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // right
@ -946,7 +946,7 @@ const GeoLayout mario_metal_geo_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed_shared_dl),
@ -966,7 +966,7 @@ const GeoLayout mario_metal_geo_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_hand_closed),
@ -996,7 +996,7 @@ const GeoLayout mario_metal_geo_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_butt), // starts sharing metal texture with the dls below
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_torso_shared_dl),
@ -1045,7 +1045,7 @@ const GeoLayout mario_metal_geo_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_foot),
@ -1065,7 +1065,7 @@ const GeoLayout mario_metal_geo_medium_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed_shared_dl),
@ -1085,7 +1085,7 @@ const GeoLayout mario_metal_geo_medium_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_hand_closed),
@ -1113,7 +1113,7 @@ const GeoLayout mario_metal_geo_medium_poly_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_medium_poly_torso),
@ -1162,7 +1162,7 @@ const GeoLayout mario_metal_geo_medium_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_foot),
@ -1178,7 +1178,7 @@ const GeoLayout mario_metal_geo_medium_poly_body[] = {
// 0x17001F5C
const GeoLayout mario_metal_geo_low_poly_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -1188,7 +1188,7 @@ const GeoLayout mario_metal_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings),
@ -1196,7 +1196,7 @@ const GeoLayout mario_metal_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings),
@ -1212,7 +1212,7 @@ const GeoLayout mario_metal_geo_low_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed_shared_dl),
@ -1232,7 +1232,7 @@ const GeoLayout mario_metal_geo_low_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_hand_closed),
@ -1260,7 +1260,7 @@ const GeoLayout mario_metal_geo_low_poly_body[] = {
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_low_poly_torso),
@ -1309,7 +1309,7 @@ const GeoLayout mario_metal_geo_low_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_foot),
@ -1327,7 +1327,7 @@ const GeoLayout mario_metal_geo_low_poly_body[] = {
// 0x170022E4
const GeoLayout mario_metal_vanish_geo_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -1337,7 +1337,7 @@ const GeoLayout mario_metal_vanish_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),
@ -1345,7 +1345,7 @@ const GeoLayout mario_metal_vanish_geo_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),
@ -1361,7 +1361,7 @@ const GeoLayout mario_metal_vanish_geo_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed_shared_dl),
@ -1381,7 +1381,7 @@ const GeoLayout mario_metal_vanish_geo_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_hand_closed),
@ -1411,7 +1411,7 @@ const GeoLayout mario_metal_vanish_geo_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_torso_shared_dl),
@ -1460,7 +1460,7 @@ const GeoLayout mario_metal_vanish_geo_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_foot),
@ -1480,7 +1480,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed_shared_dl),
@ -1500,7 +1500,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_hand_closed),
@ -1528,7 +1528,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_medium_poly_torso),
@ -1580,7 +1580,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_foot),
@ -1596,7 +1596,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_body[] = {
// 0x17002958
const GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[] = {
GEO_ASM(0, Geo18_802773A4),
GEO_ASM(0, geo_mario_head_rotation),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),
@ -1606,7 +1606,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_80277824),
GEO_ASM(0, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),
@ -1614,7 +1614,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[] = {
GEO_CLOSE_NODE(),
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_80277824),
GEO_ASM(1, geo_mario_rotate_wing_cap_wings),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),
@ -1630,7 +1630,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_left_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(1, Geo18_802775CC),
GEO_ASM(1, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed_shared_dl),
@ -1650,7 +1650,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_right_hand[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802775CC),
GEO_ASM(0, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_hand_closed),
@ -1678,7 +1678,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_body[] = {
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_butt),
GEO_OPEN_NODE(),
GEO_ASM(0, Geo18_802B1BB0),
GEO_ASM(0, Geo18_80277294),
GEO_ASM(0, geo_mario_tilt_torso),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_low_poly_torso),
@ -1727,7 +1727,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_body[] = {
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ASM(2, Geo18_802775CC),
GEO_ASM(2, geo_mario_hand_foot_scaler),
GEO_SCALE(0x00, 65536),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_foot),
@ -1812,7 +1812,7 @@ const GeoLayout mario_geo[] = {
GEO_SCALE(0x00, 16384),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_mirror_mario_backface_culling),
GEO_ASM(0, Geo18_802770A4),
GEO_ASM(0, geo_mirror_mario_set_alpha),
GEO_SWITCH_CASE(0, geo_switch_mario_stand_run),
GEO_OPEN_NODE(),
GEO_BRANCH(1, mario_geo_load_body),

@ -1,5 +1,5 @@
// 0x05014630
const GeoLayout tornado_seg5_geo_05014630[] = {
const GeoLayout tweester_geo[] = {
GEO_CULLING_RADIUS(5000),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, tornado_seg5_dl_050145C0),

@ -53,14 +53,14 @@ glabel append_bubble_vertex_buffer
/* 075AA4 802B62A4 0303C821 */ addu $t9, $t8, $v1
/* 075AA8 802B62A8 8F2E0004 */ lw $t6, 4($t9)
/* 075AAC 802B62AC 17E00002 */ bnez $ra, .L802B62B8
/* 075AB0 802B62B0 00000000 */ nop
/* 075AB0 802B62B0 00000000 */ nop
/* 075AB4 802B62B4 0007000D */ break 7
.L802B62B8:
/* 075AB8 802B62B8 2401FFFF */ li $at, -1
/* 075ABC 802B62BC 17E10004 */ bne $ra, $at, .L802B62D0
/* 075AC0 802B62C0 3C018000 */ lui $at, 0x8000
/* 075AC4 802B62C4 14C10002 */ bne $a2, $at, .L802B62D0
/* 075AC8 802B62C8 00000000 */ nop
/* 075AC8 802B62C8 00000000 */ nop
/* 075ACC 802B62CC 0006000D */ break 6
.L802B62D0:
/* 075AD0 802B62D0 01EEC021 */ addu $t8, $t7, $t6

@ -57,14 +57,14 @@ glabel append_snowflake_vertex_buffer
/* 074250 802B4A50 0303C821 */ addu $t9, $t8, $v1
/* 074254 802B4A54 8F2E0004 */ lw $t6, 4($t9)
/* 074258 802B4A58 15800002 */ bnez $t4, .L802B4A64
/* 07425C 802B4A5C 00000000 */ nop
/* 07425C 802B4A5C 00000000 */ nop
/* 074260 802B4A60 0007000D */ break 7
.L802B4A64:
/* 074264 802B4A64 2401FFFF */ li $at, -1
/* 074268 802B4A68 15810004 */ bne $t4, $at, .L802B4A7C
/* 07426C 802B4A6C 3C018000 */ lui $at, 0x8000
/* 074270 802B4A70 14C10002 */ bne $a2, $at, .L802B4A7C
/* 074274 802B4A74 00000000 */ nop
/* 074274 802B4A74 00000000 */ nop
/* 074278 802B4A78 0006000D */ break 6
.L802B4A7C:
/* 07427C 802B4A7C 01EEC021 */ addu $t8, $t7, $t6

@ -0,0 +1,269 @@
glabel alloc_bank_or_seq
/* 0A1B94 802E2394 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 0A1B98 802E2398 AFB20020 */ sw $s2, 0x20($sp)
/* 0A1B9C 802E239C 00C09025 */ move $s2, $a2
/* 0A1BA0 802E23A0 AFB1001C */ sw $s1, 0x1c($sp)
/* 0A1BA4 802E23A4 AFB00018 */ sw $s0, 0x18($sp)
/* 0A1BA8 802E23A8 00A08025 */ move $s0, $a1
/* 0A1BAC 802E23AC 00808825 */ move $s1, $a0
/* 0A1BB0 802E23B0 2406000C */ li $a2, 12
/* 0A1BB4 802E23B4 AFBF0024 */ sw $ra, 0x24($sp)
/* 0A1BB8 802E23B8 8FA90068 */ lw $t1, 0x68($sp)
/* 0A1BBC 802E23BC 24080001 */ li $t0, 1
.L80200850:
/* 0A1BC0 802E23C0 14E000AD */ bnez $a3, .L80200B08
/* 0A1BC4 802E23C4 3C0E8022 */ lui $t6, %hi(gSeqLoadedPool) # $t6, 0x8022
/* 0A1BC8 802E23C8 25CE2670 */ addiu $t6, %lo(gSeqLoadedPool) # addiu $t6, $t6, 0x2670
/* 0A1BCC 802E23CC 162E0006 */ bne $s1, $t6, .L80200878
/* 0A1BD0 802E23D0 26300194 */ addiu $s0, $s1, 0x194
/* 0A1BD4 802E23D4 3C058022 */ lui $a1, %hi(gSeqLoadStatus) # $a1, 0x8022
/* 0A1BD8 802E23D8 24A52C58 */ addiu $a1, %lo(gSeqLoadStatus) # addiu $a1, $a1, 0x2c58
/* 0A1BDC 802E23DC AFA5003C */ sw $a1, 0x3c($sp)
/* 0A1BE0 802E23E0 10000009 */ b .L80200898
/* 0A1BE4 802E23E4 A3A0003B */ sb $zero, 0x3b($sp)
.L80200878:
/* 0A1BE8 802E23E8 3C0F8022 */ lui $t7, %hi(gBankLoadedPool) # $t7, 0x8022
/* 0A1BEC 802E23EC 25EF2840 */ addiu $t7, %lo(gBankLoadedPool) # addiu $t7, $t7, 0x2840
/* 0A1BF0 802E23F0 162F0005 */ bne $s1, $t7, .L80200898
/* 0A1BF4 802E23F4 3C058022 */ lui $a1, %hi(gBankLoadStatus) # $a1, 0x8022
/* 0A1BF8 802E23F8 24A52C18 */ addiu $a1, %lo(gBankLoadStatus) # addiu $a1, $a1, 0x2c18
/* 0A1BFC 802E23FC 240A0001 */ li $t2, 1
/* 0A1C00 802E2400 A3AA003B */ sb $t2, 0x3b($sp)
/* 0A1C04 802E2404 AFA5003C */ sw $a1, 0x3c($sp)
.L80200898:
/* 0A1C08 802E2408 8E02001C */ lw $v0, 0x1c($s0)
/* 0A1C0C 802E240C 2407FFFF */ li $a3, -1
/* 0A1C10 802E2410 8FA5003C */ lw $a1, 0x3c($sp)
/* 0A1C14 802E2414 14E20003 */ bne $a3, $v0, .L802008B4
/* 0A1C18 802E2418 93AA003B */ lbu $t2, 0x3b($sp)
/* 0A1C1C 802E241C 10000003 */ b .L802008BC
/* 0A1C20 802E2420 00001825 */ move $v1, $zero
.L802008B4:
/* 0A1C24 802E2424 0045C021 */ addu $t8, $v0, $a1
/* 0A1C28 802E2428 93030000 */ lbu $v1, ($t8)
.L802008BC:
/* 0A1C2C 802E242C 8E020028 */ lw $v0, 0x28($s0)
/* 0A1C30 802E2430 14E20003 */ bne $a3, $v0, .L802008D0
/* 0A1C34 802E2434 0045C821 */ addu $t9, $v0, $a1
/* 0A1C38 802E2438 10000002 */ b .L802008D4
/* 0A1C3C 802E243C 00002025 */ move $a0, $zero
.L802008D0:
/* 0A1C40 802E2440 93240000 */ lbu $a0, ($t9)
.L802008D4:
/* 0A1C44 802E2444 14600003 */ bnez $v1, .L802008E4
/* 0A1C48 802E2448 00601025 */ move $v0, $v1
/* 0A1C4C 802E244C 1000001D */ b .L80200954
/* 0A1C50 802E2450 AE000000 */ sw $zero, ($s0)
.L802008E4:
/* 0A1C54 802E2454 14800004 */ bnez $a0, .L802008F8
/* 0A1C58 802E2458 00801825 */ move $v1, $a0
/* 0A1C5C 802E245C 240B0001 */ li $t3, 1
/* 0A1C60 802E2460 10000018 */ b .L80200954
/* 0A1C64 802E2464 AE0B0000 */ sw $t3, ($s0)
.L802008F8:
/* 0A1C68 802E2468 24040003 */ li $a0, 3
/* 0A1C6C 802E246C 14820003 */ bne $a0, $v0, .L8020090C
/* 0A1C70 802E2470 00000000 */ nop
/* 0A1C74 802E2474 50830014 */ beql $a0, $v1, .L80200958
/* 0A1C78 802E2478 8E0E0000 */ lw $t6, ($s0)
.L8020090C:
/* 0A1C7C 802E247C 14820003 */ bne $a0, $v0, .L8020091C
/* 0A1C80 802E2480 00000000 */ nop
/* 0A1C84 802E2484 1000000F */ b .L80200954
/* 0A1C88 802E2488 AE000000 */ sw $zero, ($s0)
.L8020091C:
/* 0A1C8C 802E248C 14830003 */ bne $a0, $v1, .L8020092C
/* 0A1C90 802E2490 240C0001 */ li $t4, 1
/* 0A1C94 802E2494 1000000B */ b .L80200954
/* 0A1C98 802E2498 AE0C0000 */ sw $t4, ($s0)
.L8020092C:
/* 0A1C9C 802E249C 11020003 */ beq $t0, $v0, .L8020093C
/* 0A1CA0 802E24A0 00000000 */ nop
/* 0A1CA4 802E24A4 10000007 */ b .L80200954
/* 0A1CA8 802E24A8 AE000000 */ sw $zero, ($s0)
.L8020093C:
/* 0A1CAC 802E24AC 11030003 */ beq $t0, $v1, .L8020094C
/* 0A1CB0 802E24B0 240D0001 */ li $t5, 1
/* 0A1CB4 802E24B4 10000003 */ b .L80200954
/* 0A1CB8 802E24B8 AE0D0000 */ sw $t5, ($s0)
.L8020094C:
/* 0A1CBC 802E24BC 10000099 */ b .L80200BB4
/* 0A1CC0 802E24C0 00001025 */ move $v0, $zero
.L80200954:
/* 0A1CC4 802E24C4 8E0E0000 */ lw $t6, ($s0)
.L80200958:
/* 0A1CC8 802E24C8 01C60019 */ multu $t6, $a2
/* 0A1CCC 802E24CC 00007812 */ mflo $t7
/* 0A1CD0 802E24D0 020FC021 */ addu $t8, $s0, $t7
/* 0A1CD4 802E24D4 8F02001C */ lw $v0, 0x1c($t8)
/* 0A1CD8 802E24D8 10E20010 */ beq $a3, $v0, .L802009AC
/* 0A1CDC 802E24DC 00A2C821 */ addu $t9, $a1, $v0
/* 0A1CE0 802E24E0 150A000E */ bne $t0, $t2, .L802009AC
/* 0A1CE4 802E24E4 A3200000 */ sb $zero, ($t9)
/* 0A1CE8 802E24E8 8E0B0000 */ lw $t3, ($s0)
/* 0A1CEC 802E24EC 01660019 */ multu $t3, $a2
/* 0A1CF0 802E24F0 00006012 */ mflo $t4
/* 0A1CF4 802E24F4 020C6821 */ addu $t5, $s0, $t4
/* 0A1CF8 802E24F8 8DA4001C */ lw $a0, 0x1c($t5)
/* 0A1CFC 802E24FC A3AA003B */ sb $t2, 0x3b($sp)
/* 0A1D00 802E2500 AFA90068 */ sw $t1, 0x68($sp)
/* 0A1D04 802E2504 0C0B87A3 */ jal discard_bank
/* 0A1D08 802E2508 AFA5003C */ sw $a1, 0x3c($sp)
/* 0A1D0C 802E250C 8FA5003C */ lw $a1, 0x3c($sp)
/* 0A1D10 802E2510 24080001 */ li $t0, 1
/* 0A1D14 802E2514 8FA90068 */ lw $t1, 0x68($sp)
/* 0A1D18 802E2518 93AA003B */ lbu $t2, 0x3b($sp)
.L802009AC:
/* 0A1D1C 802E251C 8E040000 */ lw $a0, ($s0)
/* 0A1D20 802E2520 24010001 */ li $at, 1
/* 0A1D24 802E2524 26230198 */ addiu $v1, $s1, 0x198
/* 0A1D28 802E2528 50800006 */ beql $a0, $zero, .L802009D4
/* 0A1D2C 802E252C 8C6E0000 */ lw $t6, ($v1)
/* 0A1D30 802E2530 1081002B */ beq $a0, $at, .L80200A70
/* 0A1D34 802E2534 26230198 */ addiu $v1, $s1, 0x198
/* 0A1D38 802E2538 1000007A */ b .L80200BB4
/* 0A1D3C 802E253C 00001025 */ move $v0, $zero
/* 0A1D40 802E2540 8C6E0000 */ lw $t6, ($v1)
.L802009D4:
/* 0A1D44 802E2544 AE09001C */ sw $t1, 0x1c($s0)
/* 0A1D48 802E2548 AE120018 */ sw $s2, 0x18($s0)
/* 0A1D4C 802E254C AE0E0014 */ sw $t6, 0x14($s0)
/* 0A1D50 802E2550 8C6F0000 */ lw $t7, ($v1)
/* 0A1D54 802E2554 01F21021 */ addu $v0, $t7, $s2
/* 0A1D58 802E2558 AC620004 */ sw $v0, 4($v1)
/* 0A1D5C 802E255C 8E180020 */ lw $t8, 0x20($s0)
/* 0A1D60 802E2560 0302082B */ sltu $at, $t8, $v0
/* 0A1D64 802E2564 50200019 */ beql $at, $zero, .L80200A5C
/* 0A1D68 802E2568 8E030014 */ lw $v1, 0x14($s0)
/* 0A1D6C 802E256C 8E190028 */ lw $t9, 0x28($s0)
/* 0A1D70 802E2570 00B95821 */ addu $t3, $a1, $t9
/* 0A1D74 802E2574 11400005 */ beqz $t2, .L80200A1C
/* 0A1D78 802E2578 A1600000 */ sb $zero, ($t3)
/* 0A1D7C 802E257C 51480009 */ beql $t2, $t0, .L80200A34
/* 0A1D80 802E2580 8E040028 */ lw $a0, 0x28($s0)
/* 0A1D84 802E2584 1000000B */ b .L80200A44
/* 0A1D88 802E2588 240CFFFF */ li $t4, -1
.L80200A1C:
/* 0A1D8C 802E258C 8E040028 */ lw $a0, 0x28($s0)
/* 0A1D90 802E2590 0C0B87DC */ jal discard_sequence
/* 0A1D94 802E2594 AFA3002C */ sw $v1, 0x2c($sp)
/* 0A1D98 802E2598 10000005 */ b .L80200A40
/* 0A1D9C 802E259C 8FA3002C */ lw $v1, 0x2c($sp)
/* 0A1DA0 802E25A0 8E040028 */ lw $a0, 0x28($s0)
.L80200A34:
/* 0A1DA4 802E25A4 0C0B87A3 */ jal discard_bank
/* 0A1DA8 802E25A8 AFA3002C */ sw $v1, 0x2c($sp)
/* 0A1DAC 802E25AC 8FA3002C */ lw $v1, 0x2c($sp)
.L80200A40:
/* 0A1DB0 802E25B0 240CFFFF */ li $t4, -1
.L80200A44:
/* 0A1DB4 802E25B4 AE0C0028 */ sw $t4, 0x28($s0)
/* 0A1DB8 802E25B8 8C6E0008 */ lw $t6, 8($v1)
/* 0A1DBC 802E25BC 8C6D0000 */ lw $t5, ($v1)
/* 0A1DC0 802E25C0 01AE7821 */ addu $t7, $t5, $t6
/* 0A1DC4 802E25C4 AE0F0020 */ sw $t7, 0x20($s0)
/* 0A1DC8 802E25C8 8E030014 */ lw $v1, 0x14($s0)
.L80200A5C:
/* 0A1DCC 802E25CC 8E180000 */ lw $t8, ($s0)
/* 0A1DD0 802E25D0 00601025 */ move $v0, $v1
/* 0A1DD4 802E25D4 3B190001 */ xori $t9, $t8, 1
/* 0A1DD8 802E25D8 10000052 */ b .L80200BB4
/* 0A1DDC 802E25DC AE190000 */ sw $t9, ($s0)
.L80200A70:
/* 0A1DE0 802E25E0 8C6B0000 */ lw $t3, ($v1)
/* 0A1DE4 802E25E4 8C6C0008 */ lw $t4, 8($v1)
/* 0A1DE8 802E25E8 AE090028 */ sw $t1, 0x28($s0)
/* 0A1DEC 802E25EC AE120024 */ sw $s2, 0x24($s0)
/* 0A1DF0 802E25F0 016C6821 */ addu $t5, $t3, $t4
/* 0A1DF4 802E25F4 01B27023 */ subu $t6, $t5, $s2
/* 0A1DF8 802E25F8 25C2FFF0 */ addiu $v0, $t6, -0x10
/* 0A1DFC 802E25FC AE020020 */ sw $v0, 0x20($s0)
/* 0A1E00 802E2600 8C780004 */ lw $t8, 4($v1)
/* 0A1E04 802E2604 0058082B */ sltu $at, $v0, $t8
/* 0A1E08 802E2608 10200017 */ beqz $at, .L80200AF8
/* 0A1E0C 802E260C 00000000 */ nop
/* 0A1E10 802E2610 8E19001C */ lw $t9, 0x1c($s0)
/* 0A1E14 802E2614 00B95821 */ addu $t3, $a1, $t9
/* 0A1E18 802E2618 11400005 */ beqz $t2, .L80200AC0
/* 0A1E1C 802E261C A1600000 */ sb $zero, ($t3)
/* 0A1E20 802E2620 51480009 */ beql $t2, $t0, .L80200AD8
/* 0A1E24 802E2624 8E04001C */ lw $a0, 0x1c($s0)
/* 0A1E28 802E2628 1000000B */ b .L80200AE8
/* 0A1E2C 802E262C 240CFFFF */ li $t4, -1
.L80200AC0:
/* 0A1E30 802E2630 8E04001C */ lw $a0, 0x1c($s0)
/* 0A1E34 802E2634 0C0B87DC */ jal discard_sequence
/* 0A1E38 802E2638 AFA3002C */ sw $v1, 0x2c($sp)
/* 0A1E3C 802E263C 10000005 */ b .L80200AE4
/* 0A1E40 802E2640 8FA3002C */ lw $v1, 0x2c($sp)
/* 0A1E44 802E2644 8E04001C */ lw $a0, 0x1c($s0)
.L80200AD8:
/* 0A1E48 802E2648 0C0B87A3 */ jal discard_bank
/* 0A1E4C 802E264C AFA3002C */ sw $v1, 0x2c($sp)
/* 0A1E50 802E2650 8FA3002C */ lw $v1, 0x2c($sp)
.L80200AE4:
/* 0A1E54 802E2654 240CFFFF */ li $t4, -1
.L80200AE8:
/* 0A1E58 802E2658 AE0C001C */ sw $t4, 0x1c($s0)
/* 0A1E5C 802E265C 8C6D0000 */ lw $t5, ($v1)
/* 0A1E60 802E2660 AC6D0004 */ sw $t5, 4($v1)
/* 0A1E64 802E2664 8E020020 */ lw $v0, 0x20($s0)
.L80200AF8:
/* 0A1E68 802E2668 1000FFD8 */ b .L80200A5C
/* 0A1E6C 802E266C 00401825 */ move $v1, $v0
/* 0A1E70 802E2670 1000002C */ b .L80200BB4
/* 0A1E74 802E2674 00001025 */ move $v0, $zero
.L80200B08:
/* 0A1E78 802E2678 02120019 */ multu $s0, $s2
/* 0A1E7C 802E267C 26240004 */ addiu $a0, $s1, 4
/* 0A1E80 802E2680 AFA70064 */ sw $a3, 0x64($sp)
/* 0A1E84 802E2684 AFA90068 */ sw $t1, 0x68($sp)
/* 0A1E88 802E2688 00002812 */ mflo $a1
/* 0A1E8C 802E268C 0C0B87F8 */ jal soundAlloc
/* 0A1E90 802E2690 00000000 */ nop
/* 0A1E94 802E2694 8E2E0000 */ lw $t6, ($s1)
/* 0A1E98 802E2698 2406000C */ li $a2, 12
/* 0A1E9C 802E269C 8FA70064 */ lw $a3, 0x64($sp)
/* 0A1EA0 802E26A0 01C60019 */ multu $t6, $a2
/* 0A1EA4 802E26A4 8FA90068 */ lw $t1, 0x68($sp)
/* 0A1EA8 802E26A8 24080001 */ li $t0, 1
/* 0A1EAC 802E26AC 24010002 */ li $at, 2
/* 0A1EB0 802E26B0 00007812 */ mflo $t7
/* 0A1EB4 802E26B4 022FC021 */ addu $t8, $s1, $t7
/* 0A1EB8 802E26B8 14400009 */ bnez $v0, .L80200B70
/* 0A1EBC 802E26BC AF020014 */ sw $v0, 0x14($t8)
/* 0A1EC0 802E26C0 10E80005 */ beq $a3, $t0, .L80200B68
/* 0A1EC4 802E26C4 00000000 */ nop
/* 0A1EC8 802E26C8 54E10006 */ bnel $a3, $at, .L80200B74
/* 0A1ECC 802E26CC 8E390000 */ lw $t9, ($s1)
/* 0A1ED0 802E26D0 1000FF3B */ b .L80200850
/* 0A1ED4 802E26D4 00003825 */ move $a3, $zero
.L80200B68:
/* 0A1ED8 802E26D8 10000012 */ b .L80200BB4