Merge remote-tracking branch 'upstream/master' into 3d-objects

This commit is contained in:
coco875
2024-02-25 17:43:10 +01:00
198 changed files with 3438 additions and 13964 deletions
Executable → Regular
+8 -2
View File
@@ -87,5 +87,11 @@ expected/*
# Doxygen
docs/html/*
objects
tools/mingw64
# windows build
mingw64/
.ash_history
!tools/ido-recomp/*/*
# models
models
+76 -79
View File
@@ -7,7 +7,6 @@ default: all
# Preprocessor definitions
DEFINES :=
UNAME_S := $(shell uname -s)
#==============================================================================#
# Build Options #
@@ -73,23 +72,7 @@ else ifeq ($(GRUCODE),f3dex2) # Fast3DEX2
DEFINES += F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1
endif
# USE_QEMU_IRIX - when ido is selected, select which way to emulate IRIX programs
# 1 - use qemu-irix
# 0 - statically recompile the IRIX programs
USE_QEMU_IRIX ?= 0
$(eval $(call validate-option,USE_QEMU_IRIX,0 1))
ifeq ($(COMPILER),ido)
ifeq ($(USE_QEMU_IRIX),1)
# Verify that qemu-irix exists
QEMU_IRIX := $(call find-command,qemu-irix)
ifeq (,$(QEMU_IRIX))
$(error Using the IDO compiler requires qemu-irix. Please install qemu-irix package or set the QEMU_IRIX environment variable to the full qemu-irix binary path)
endif
endif
MIPSISET := -mips2
else ifeq ($(COMPILER),gcc)
NON_MATCHING := 1
@@ -134,7 +117,18 @@ endif
# Whether to colorize build messages
COLOR ?= 1
ifeq ($(OS),Windows_NT)
DETECTED_OS=windows
# Set Windows temporary directory to its environment variable
export TMPDIR=$(TEMP)
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
DETECTED_OS=linux
else ifeq ($(UNAME_S),Darwin)
DETECTED_OS=macos
endif
endif
# display selected options unless 'make clean' or 'make distclean' is run
ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
@@ -155,8 +149,6 @@ ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
$(info =======================)
endif
#==============================================================================#
# Universal Dependencies #
#==============================================================================#
@@ -166,12 +158,33 @@ TOOLS_DIR := tools
# (This is a bit hacky, but a lot of rules implicitly depend
# on tools and assets, and we use directory globs further down
# in the makefile that we want should cover assets.)
ifeq ($(DETECTED_OS),windows)
# because python3 is a command to trigger windows store, and python on windows it's just called python
ifneq ($(PYTHON),)
else ifneq ($(call find-command,python),)
PYTHON := python
else ifneq ($(call find-command,python3),)
PYTHON := python3
endif
else
PYTHON ?= python3
endif
PYTHON := python3
DUMMY != $(PYTHON) --version || echo FAIL
ifeq ($(DUMMY),FAIL)
$(error Unable to find python)
endif
ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
# Make sure assets exist
# Make tools if out of date
DUMMY != make -C $(TOOLS_DIR)
ifeq ($(DUMMY),FAIL)
$(error Failed to build tools)
endif
$(info Building ROM...)
# Make sure assets exist
NOEXTRACT ?= 0
ifeq ($(NOEXTRACT),0)
DUMMY != $(PYTHON) extract_assets.py $(VERSION) >&2 || echo FAIL
@@ -179,14 +192,6 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
$(error Failed to extract assets)
endif
endif
# Make tools if out of date
DUMMY != make -s -C $(TOOLS_DIR) $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),all-except-recomp,) >&2 || echo FAIL
ifeq ($(DUMMY),FAIL)
$(error Failed to build tools)
endif
$(info Building ROM...)
endif
@@ -259,27 +264,23 @@ GLOBAL_ASM_RACING_O_FILES = $(foreach file,$(GLOBAL_ASM_RACING_C_FILES),$(BUILD_
#==============================================================================#
# detect prefix for MIPS toolchain
ifneq ($(call find-command,mips-linux-gnu-ld),)
CROSS := mips-linux-gnu-
ifneq ($(CROSS),)
else ifneq ($(call find-command,mips-linux-gnu-ld),)
CROSS := mips-linux-gnu-
else ifneq ($(call find-command,mips64-linux-gnu-ld),)
CROSS := mips64-linux-gnu-
CROSS := mips64-linux-gnu-
else ifneq ($(call find-command,mips64-elf-ld),)
CROSS := mips64-elf-
CROSS := mips64-elf-
else
$(error Unable to detect a suitable MIPS toolchain installed)
$(error Unable to detect a suitable MIPS toolchain installed)
endif
AS := $(CROSS)as
ifeq ($(COMPILER),gcc)
CC := $(CROSS)gcc
else
ifeq ($(USE_QEMU_IRIX),1)
IRIX_ROOT := $(TOOLS_DIR)/ido5.3_compiler
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
else
IDO_ROOT := $(TOOLS_DIR)/ido5.3_recomp
CC := $(IDO_ROOT)/cc
endif
IDO_ROOT := $(TOOLS_DIR)/ido-recomp/$(DETECTED_OS)
CC := $(IDO_ROOT)/cc
endif
LD := $(CROSS)ld
AR := $(CROSS)ar
@@ -305,13 +306,15 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
ifneq (,$(call find-command,clang))
CPP := clang
CPPFLAGS := -E -P -x c -Wno-trigraphs $(DEF_INC_CFLAGS)
else
else ifneq (,$(call find-command,cpp))
CPP := cpp
CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
else
$(error Unable to find cpp or clang)
endif
# Check code syntax with host compiler
CC_CHECK := gcc
CC_CHECK ?= gcc
CC_CHECK_CFLAGS := -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) -std=gnu90 -Wall -Wempty-body -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(DEF_INC_CFLAGS)
# C compiler options
@@ -330,13 +333,8 @@ OBJCOPYFLAGS = --pad-to=0xC00000 --gap-fill=0xFF
LDFLAGS = -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/$(TARGET).map --no-check-sections
ifeq ($(shell getconf LONG_BIT), 32)
# Work around memory allocation bug in QEMU
export QEMU_GUEST_BASE := 1
else
# Ensure that gcc treats the code as 32-bit
CC_CHECK += -m32
endif
# Ensure that gcc treats the code as 32-bit
CC_CHECK += -m32
# Prevent a crash with -sopt
export LANG := C
@@ -359,8 +357,10 @@ EMULATOR = mupen64plus
EMU_FLAGS = --noosd
LOADER = loader64
LOADER_FLAGS = -vwf
SHA1SUM = sha1sum
PRINT = printf
SHA1SUM ?= sha1sum
FALSE ?= false
PRINT ?= printf
TOUCH ?= touch
ifeq ($(COLOR),1)
NO_COL := \033[0m
@@ -390,12 +390,12 @@ endef
all: $(ROM)
ifeq ($(COMPARE),1)
@$(PRINT) "$(GREEN)Checking if ROM matches.. $(NO_COL)\n"
@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && false)
@$(SHA1SUM) -c $(TARGET).sha1 > $(NULL_OUT) && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && $(FALSE))
endif
doc:
$(PYTHON) tools/doxygen_symbol_gen.py
doxygen
$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py
doxygen
@$(PRINT) "$(GREEN)Documentation generated in docs/html$(NO_COL)\n"
@$(PRINT) "$(GREEN)Results can be viewed by opening docs/html/index.html in a web browser$(NO_COL)\n"
@@ -405,7 +405,7 @@ clean:
distclean: distclean_assets
$(RM) -r $(BUILD_DIR_BASE)
./extract_assets.py --clean
make -C tools clean
make -C $(TOOLS_DIR) clean
distclean_assets: ;
@@ -418,8 +418,6 @@ load: $(ROM)
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
#==============================================================================#
# Texture Generation #
#==============================================================================#
@@ -451,14 +449,14 @@ $(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0.s
$(BUILD_DIR)/%.mio0.s: $(BUILD_DIR)/%.mio0
$(call print,Generating mio0 asm:,$<,$@)
printf ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@
$(PRINT) ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@
$(BUILD_DIR)/src/crash_screen.o: src/crash_screen.c
@$(PRINT) "$(GREEN)Compiling Crash Screen: $(BLUE)$@ $(NO_COL)\n"
$(V)$(N64GRAPHICS) -i $(BUILD_DIR)/textures/crash_screen/crash_screen_font.ia1.inc.c -g textures/crash_screen/crash_screen_font.ia1.png -f ia1 -s u8
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC) -c $(CFLAGS) -o $@ $<
$(PYTHON) tools/set_o32abi_bit.py $@
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
#==============================================================================#
# Common Textures Segment Generation #
@@ -481,7 +479,7 @@ $(BUILD_DIR)/src/data/common_textures.inc.o: src/data/common_textures.inc.c $(TE
@$(PRINT) "$(GREEN)Compiling Common Textures: $(BLUE)$@ $(NO_COL)\n"
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC) -c $(CFLAGS) -o $@ $<
$(PYTHON) tools/set_o32abi_bit.py $@
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
@@ -493,7 +491,7 @@ $(BUILD_DIR)/src/data/common_textures.inc.o: src/data/common_textures.inc.c $(TE
%/course_textures.linkonly.c %/course_textures.linkonly.h: %/course_offsets.inc.c
$(V)$(LINKONLY_GENERATOR) $(lastword $(subst /, ,$*))
# Its unclear why this is necessary. Everything I undesrtand about `make` says that just
# Its unclear why this is necessary. Everything I undesrtand about `make` says that just
# `$(BUILD_DIR)/%/course_displaylists.inc.o: %/course_textures.linkonly.h`
# Should work identical to this. But in practice it doesn't :(
COURSE_DISPLAYLIST_OFILES := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_displaylists.inc.o)
@@ -508,7 +506,7 @@ $(COURSE_DISPLAYLIST_OFILES): $(BUILD_DIR)/%/course_displaylists.inc.o: %/course
%/course_displaylists.inc.bin: %/course_displaylists.inc.elf
$(V)$(EXTRACT_DATA_FOR_MIO) $< $@
# Displaylists are packed using a custom format
# Displaylists are packed using a custom format
%/course_displaylists_packed.inc.bin: %/course_displaylists.inc.bin
@$(PRINT) "$(GREEN)Compressing Course Displaylists: $(BLUE)$@ $(NO_COL)\n"
$(V)$(DLPACKER) $< $@
@@ -533,8 +531,7 @@ COURSE_GEOGRAPHY_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/cou
# Course vertices and displaylists are included together due to no alignment between the two files.
%/course_geography.inc.mio0.s: %/course_vertices.inc.mio0 %/course_displaylists_packed.inc.bin
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@
#==============================================================================#
@@ -557,8 +554,7 @@ COURSE_DATA_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_d
$(V)$(MIO0TOOL) -c $< $@
%/course_data.inc.mio0.s: %/course_data.inc.mio0
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
#==============================================================================#
@@ -572,7 +568,7 @@ $(BUILD_DIR)/%.o: %.c
$(call print,Compiling:,$<,$@)
$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC) -c $(CFLAGS) -o $@ $<
$(PYTHON) tools/set_o32abi_bit.py $@
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
$(call print,Compiling:,$<,$@)
@@ -582,15 +578,15 @@ $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
$(BUILD_DIR)/%.o: %.s $(MIO0_FILES) $(RAW_TEXTURE_FILES)
$(AS) $(ASFLAGS) -o $@ $<
$(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_OS_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_OS_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_RACING_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(GLOBAL_ASM_RACING_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
#==============================================================================#
# Libultra Definitions #
@@ -636,7 +632,8 @@ LDFLAGS += -R $(BUILD_DIR)/src/ending/ceremony_data.inc.elf
$(V)$(MIO0TOOL) -c $< $@
%/ceremony_data.inc.mio0.s: %/ceremony_data.inc.mio0
printf ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@
$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@
#==============================================================================#
# Compile Startup Logo #
@@ -655,7 +652,7 @@ LDFLAGS += -R $(BUILD_DIR)/src/data/startup_logo.inc.elf
$(V)$(MIO0TOOL) -c $< $@
%/startup_logo.inc.mio0.s: %/startup_logo.inc.mio0
printf ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@
$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@
#==============================================================================#
# Compile Common Textures #
@@ -674,7 +671,7 @@ LDFLAGS += -R $(BUILD_DIR)/src/data/common_textures.inc.elf
$(V)$(MIO0TOOL) -c $< $@
%/common_textures.inc.mio0.s: %/common_textures.inc.mio0
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
@@ -697,12 +694,12 @@ $(ROM): $(ELF)
$(call print,Building ROM:,$<,$@)
$(V)$(OBJCOPY) $(OBJCOPYFLAGS) $< $(@:.z64=.bin) -O binary
$(V)$(N64CKSUM) $(@:.z64=.bin) $@
$(PYTHON) tools/doxygen_symbol_gen.py
$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py
$(BUILD_DIR)/$(TARGET).hex: $(TARGET).z64
xxd $< > $@
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
$(OBJDUMP) -D $< > $@
-141
View File
@@ -1,141 +0,0 @@
glabel func_800C2274
/* 0C2E74 800C2274 308700FF */ andi $a3, $a0, 0xff
/* 0C2E78 800C2278 00077080 */ sll $t6, $a3, 2
/* 0C2E7C 800C227C 01C77021 */ addu $t6, $t6, $a3
/* 0C2E80 800C2280 000E70C0 */ sll $t6, $t6, 3
/* 0C2E84 800C2284 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 0C2E88 800C2288 3C05803B */ lui $a1, %hi(gSequencePlayers) # $a1, 0x803b
/* 0C2E8C 800C228C 01C77021 */ addu $t6, $t6, $a3
/* 0C2E90 800C2290 24A51510 */ addiu $a1, %lo(gSequencePlayers) # addiu $a1, $a1, 0x1510
/* 0C2E94 800C2294 000E70C0 */ sll $t6, $t6, 3
/* 0C2E98 800C2298 00AE7821 */ addu $t7, $a1, $t6
/* 0C2E9C 800C229C 8DF80000 */ lw $t8, ($t7)
/* 0C2EA0 800C22A0 AFBE0038 */ sw $fp, 0x38($sp)
/* 0C2EA4 800C22A4 03A0F025 */ move $fp, $sp
/* 0C2EA8 800C22A8 0018CFC2 */ srl $t9, $t8, 0x1f
/* 0C2EAC 800C22AC AFBF003C */ sw $ra, 0x3c($sp)
/* 0C2EB0 800C22B0 AFB30034 */ sw $s3, 0x34($sp)
/* 0C2EB4 800C22B4 AFB20030 */ sw $s2, 0x30($sp)
/* 0C2EB8 800C22B8 AFB1002C */ sw $s1, 0x2c($sp)
/* 0C2EBC 800C22BC AFB00028 */ sw $s0, 0x28($sp)
/* 0C2EC0 800C22C0 AFA40048 */ sw $a0, 0x48($sp)
/* 0C2EC4 800C22C4 13200062 */ beqz $t9, .L800C2450
/* 0C2EC8 800C22C8 2406000F */ li $a2, 15
/* 0C2ECC 800C22CC 3C02800E */ lui $v0, %hi(gScreenModeSelection) # $v0, 0x800e
/* 0C2ED0 800C22D0 8C42C530 */ lw $v0, %lo(gScreenModeSelection)($v0)
/* 0C2ED4 800C22D4 00074880 */ sll $t1, $a3, 2
/* 0C2ED8 800C22D8 01274821 */ addu $t1, $t1, $a3
/* 0C2EDC 800C22DC 10400010 */ beqz $v0, .L800C2320
/* 0C2EE0 800C22E0 000948C0 */ sll $t1, $t1, 3
/* 0C2EE4 800C22E4 24010001 */ li $at, 1
/* 0C2EE8 800C22E8 10410005 */ beq $v0, $at, .L800C2300
/* 0C2EEC 800C22EC 24030003 */ li $v1, 3
/* 0C2EF0 800C22F0 10430005 */ beq $v0, $v1, .L800C2308
/* 0C2EF4 800C22F4 3C08800E */ lui $t0, %hi(gPlayerCountSelection1) # $t0, 0x800e
/* 0C2EF8 800C22F8 1000000A */ b .L800C2324
/* 0C2EFC 800C22FC 01274821 */ addu $t1, $t1, $a3
.L800C2300:
/* 0C2F00 800C2300 10000007 */ b .L800C2320
/* 0C2F04 800C2304 2406000E */ li $a2, 14
.L800C2308:
/* 0C2F08 800C2308 8D08C538 */ lw $t0, %lo(gPlayerCountSelection1)($t0)
/* 0C2F0C 800C230C 2406000C */ li $a2, 12
/* 0C2F10 800C2310 14680003 */ bne $v1, $t0, .L800C2320
/* 0C2F14 800C2314 00000000 */ nop
/* 0C2F18 800C2318 10000001 */ b .L800C2320
/* 0C2F1C 800C231C 2406000D */ li $a2, 13
.L800C2320:
/* 0C2F20 800C2320 01274821 */ addu $t1, $t1, $a3
.L800C2324:
/* 0C2F24 800C2324 000948C0 */ sll $t1, $t1, 3
/* 0C2F28 800C2328 00A95021 */ addu $t2, $a1, $t1
/* 0C2F2C 800C232C 00065880 */ sll $t3, $a2, 2
/* 0C2F30 800C2330 014B6021 */ addu $t4, $t2, $t3
/* 0C2F34 800C2334 8D820030 */ lw $v0, 0x30($t4)
/* 0C2F38 800C2338 241200FF */ li $s2, 255
/* 0C2F3C 800C233C 30EA00FF */ andi $t2, $a3, 0xff
/* 0C2F40 800C2340 90500058 */ lbu $s0, 0x58($v0)
/* 0C2F44 800C2344 000A5C00 */ sll $t3, $t2, 0x10
/* 0C2F48 800C2348 2405FFFF */ li $a1, -1
/* 0C2F4C 800C234C 52500017 */ beql $s2, $s0, .L800C23AC
/* 0C2F50 800C2350 24010001 */ li $at, 1
/* 0C2F54 800C2354 804D0059 */ lb $t5, 0x59($v0)
/* 0C2F58 800C2358 31AE0003 */ andi $t6, $t5, 3
/* 0C2F5C 800C235C A7CE0046 */ sh $t6, 0x46($fp)
/* 0C2F60 800C2360 8051005A */ lb $s1, 0x5a($v0)
/* 0C2F64 800C2364 30CD00FF */ andi $t5, $a2, 0xff
/* 0C2F68 800C2368 000D7200 */ sll $t6, $t5, 8
/* 0C2F6C 800C236C 322F000F */ andi $t7, $s1, 0xf
/* 0C2F70 800C2370 000FC400 */ sll $t8, $t7, 0x10
/* 0C2F74 800C2374 00188C03 */ sra $s1, $t8, 0x10
/* 0C2F78 800C2378 2A21000A */ slti $at, $s1, 0xa
/* 0C2F7C 800C237C 54200003 */ bnel $at, $zero, .L800C238C
/* 0C2F80 800C2380 8048005B */ lb $t0, 0x5b($v0)
/* 0C2F84 800C2384 24110009 */ li $s1, 9
/* 0C2F88 800C2388 8048005B */ lb $t0, 0x5b($v0)
.L800C238C:
/* 0C2F8C 800C238C 3C010600 */ lui $at, 0x600
/* 0C2F90 800C2390 01616025 */ or $t4, $t3, $at
/* 0C2F94 800C2394 31090007 */ andi $t1, $t0, 7
/* 0C2F98 800C2398 A7C90042 */ sh $t1, 0x42($fp)
/* 0C2F9C 800C239C 0C032EFA */ jal func_800CBBE8
/* 0C2FA0 800C23A0 018E2025 */ or $a0, $t4, $t6
/* 0C2FA4 800C23A4 A7D10044 */ sh $s1, 0x44($fp)
/* 0C2FA8 800C23A8 24010001 */ li $at, 1
.L800C23AC:
/* 0C2FAC 800C23AC 12010006 */ beq $s0, $at, .L800C23C8
/* 0C2FB0 800C23B0 87D10044 */ lh $s1, 0x44($fp)
/* 0C2FB4 800C23B4 24010002 */ li $at, 2
/* 0C2FB8 800C23B8 5201001E */ beql $s0, $at, .L800C2434
/* 0C2FBC 800C23BC 87CB0046 */ lh $t3, 0x46($fp)
/* 0C2FC0 800C23C0 10000024 */ b .L800C2454
/* 0C2FC4 800C23C4 8FDF003C */ lw $ra, 0x3c($fp)
.L800C23C8:
/* 0C2FC8 800C23C8 87CF0046 */ lh $t7, 0x46($fp)
/* 0C2FCC 800C23CC 3C138019 */ lui $s3, %hi(D_8018FC10) # $s3, 0x8019
/* 0C2FD0 800C23D0 2673FC10 */ addiu $s3, %lo(D_8018FC10) # addiu $s3, $s3, -0x3f0
/* 0C2FD4 800C23D4 000FC080 */ sll $t8, $t7, 2
/* 0C2FD8 800C23D8 02781021 */ addu $v0, $s3, $t8
/* 0C2FDC 800C23DC A4510000 */ sh $s1, ($v0)
/* 0C2FE0 800C23E0 87D90042 */ lh $t9, 0x42($fp)
/* 0C2FE4 800C23E4 00008025 */ move $s0, $zero
/* 0C2FE8 800C23E8 A4590002 */ sh $t9, 2($v0)
.L800C23EC:
/* 0C2FEC 800C23EC 00104080 */ sll $t0, $s0, 2
/* 0C2FF0 800C23F0 02688821 */ addu $s1, $s3, $t0
/* 0C2FF4 800C23F4 86250000 */ lh $a1, ($s1)
/* 0C2FF8 800C23F8 00102400 */ sll $a0, $s0, 0x10
/* 0C2FFC 800C23FC 00044C03 */ sra $t1, $a0, 0x10
/* 0C3000 800C2400 12450004 */ beq $s2, $a1, .L800C2414
/* 0C3004 800C2404 01202025 */ move $a0, $t1
/* 0C3008 800C2408 0C006AAB */ jal func_8001AAAC
/* 0C300C 800C240C 86260002 */ lh $a2, 2($s1)
/* 0C3010 800C2410 A6320000 */ sh $s2, ($s1)
.L800C2414:
/* 0C3014 800C2414 26100001 */ addiu $s0, $s0, 1
/* 0C3018 800C2418 320A00FF */ andi $t2, $s0, 0xff
/* 0C301C 800C241C 29410004 */ slti $at, $t2, 4
/* 0C3020 800C2420 1420FFF2 */ bnez $at, .L800C23EC
/* 0C3024 800C2424 01408025 */ move $s0, $t2
/* 0C3028 800C2428 1000000A */ b .L800C2454
/* 0C302C 800C242C 8FDF003C */ lw $ra, 0x3c($fp)
/* 0C3030 800C2430 87CB0046 */ lh $t3, 0x46($fp)
.L800C2434:
/* 0C3034 800C2434 3C138019 */ lui $s3, %hi(D_8018FC10) # $s3, 0x8019
/* 0C3038 800C2438 2673FC10 */ addiu $s3, %lo(D_8018FC10) # addiu $s3, $s3, -0x3f0
/* 0C303C 800C243C 000B6880 */ sll $t5, $t3, 2
/* 0C3040 800C2440 026D1021 */ addu $v0, $s3, $t5
/* 0C3044 800C2444 A4510000 */ sh $s1, ($v0)
/* 0C3048 800C2448 87CC0042 */ lh $t4, 0x42($fp)
/* 0C304C 800C244C A44C0002 */ sh $t4, 2($v0)
.L800C2450:
/* 0C3050 800C2450 8FDF003C */ lw $ra, 0x3c($fp)
.L800C2454:
/* 0C3054 800C2454 03C0E825 */ move $sp, $fp
/* 0C3058 800C2458 8FD00028 */ lw $s0, 0x28($fp)
/* 0C305C 800C245C 8FD1002C */ lw $s1, 0x2c($fp)
/* 0C3060 800C2460 8FD20030 */ lw $s2, 0x30($fp)
/* 0C3064 800C2464 8FD30034 */ lw $s3, 0x34($fp)
/* 0C3068 800C2468 8FDE0038 */ lw $fp, 0x38($fp)
/* 0C306C 800C246C 03E00008 */ jr $ra
/* 0C3070 800C2470 27BD0048 */ addiu $sp, $sp, 0x48
-72
View File
@@ -1,72 +0,0 @@
glabel func_800C5278
/* 0C5E78 800C5278 27BDFF68 */ addiu $sp, $sp, -0x98
/* 0C5E7C 800C527C AFB70044 */ sw $s7, 0x44($sp)
/* 0C5E80 800C5280 309700FF */ andi $s7, $a0, 0xff
/* 0C5E84 800C5284 00177100 */ sll $t6, $s7, 4
/* 0C5E88 800C5288 01D77023 */ subu $t6, $t6, $s7
/* 0C5E8C 800C528C 3C0F8019 */ lui $t7, %hi(sSoundBanks) # $t7, 0x8019
/* 0C5E90 800C5290 AFB20030 */ sw $s2, 0x30($sp)
/* 0C5E94 800C5294 25EF1420 */ addiu $t7, %lo(sSoundBanks) # addiu $t7, $t7, 0x1420
/* 0C5E98 800C5298 000E7180 */ sll $t6, $t6, 6
/* 0C5E9C 800C529C AFB1002C */ sw $s1, 0x2c($sp)
/* 0C5EA0 800C52A0 01CF9021 */ addu $s2, $t6, $t7
/* 0C5EA4 800C52A4 9251002B */ lbu $s1, 0x2b($s2)
/* 0C5EA8 800C52A8 AFB40038 */ sw $s4, 0x38($sp)
/* 0C5EAC 800C52AC 241400FF */ li $s4, 255
/* 0C5EB0 800C52B0 AFBE0048 */ sw $fp, 0x48($sp)
/* 0C5EB4 800C52B4 03A0F025 */ move $fp, $sp
/* 0C5EB8 800C52B8 AFBF004C */ sw $ra, 0x4c($sp)
/* 0C5EBC 800C52BC AFB60040 */ sw $s6, 0x40($sp)
/* 0C5EC0 800C52C0 AFB5003C */ sw $s5, 0x3c($sp)
/* 0C5EC4 800C52C4 AFB30034 */ sw $s3, 0x34($sp)
/* 0C5EC8 800C52C8 AFB00028 */ sw $s0, 0x28($sp)
/* 0C5ECC 800C52CC 1291001B */ beq $s4, $s1, .L800C533C
/* 0C5ED0 800C52D0 AFA40098 */ sw $a0, 0x98($sp)
/* 0C5ED4 800C52D4 0017C100 */ sll $t8, $s7, 4
/* 0C5ED8 800C52D8 0317C023 */ subu $t8, $t8, $s7
/* 0C5EDC 800C52DC 0018C180 */ sll $t8, $t8, 6
/* 0C5EE0 800C52E0 030F9821 */ addu $s3, $t8, $t7
/* 0C5EE4 800C52E4 3C160602 */ lui $s6, 0x602
/* 0C5EE8 800C52E8 24150030 */ li $s5, 48
.L800C52EC:
/* 0C5EEC 800C52EC 02350019 */ multu $s1, $s5
/* 0C5EF0 800C52F0 0000C812 */ mflo $t9
/* 0C5EF4 800C52F4 02798021 */ addu $s0, $s3, $t9
/* 0C5EF8 800C52F8 92020028 */ lbu $v0, 0x28($s0)
/* 0C5EFC 800C52FC 28410003 */ slti $at, $v0, 3
/* 0C5F00 800C5300 14200007 */ bnez $at, .L800C5320
/* 0C5F04 800C5304 00000000 */ nop
/* 0C5F08 800C5308 9209002C */ lbu $t1, 0x2c($s0)
/* 0C5F0C 800C530C 00002825 */ move $a1, $zero
/* 0C5F10 800C5310 00095200 */ sll $t2, $t1, 8
/* 0C5F14 800C5314 0C032EFA */ jal func_800CBBE8
/* 0C5F18 800C5318 01562025 */ or $a0, $t2, $s6
/* 0C5F1C 800C531C 92020028 */ lbu $v0, 0x28($s0)
.L800C5320:
/* 0C5F20 800C5320 10400003 */ beqz $v0, .L800C5330
/* 0C5F24 800C5324 32E400FF */ andi $a0, $s7, 0xff
/* 0C5F28 800C5328 0C0311CF */ jal delete_sound_from_bank
/* 0C5F2C 800C532C 322500FF */ andi $a1, $s1, 0xff
.L800C5330:
/* 0C5F30 800C5330 9251002B */ lbu $s1, 0x2b($s2)
/* 0C5F34 800C5334 1691FFED */ bne $s4, $s1, .L800C52EC
/* 0C5F38 800C5338 00000000 */ nop
.L800C533C:
/* 0C5F3C 800C533C 00175F00 */ sll $t3, $s7, 0x1c
/* 0C5F40 800C5340 AFCB0084 */ sw $t3, 0x84($fp)
/* 0C5F44 800C5344 00002025 */ move $a0, $zero
/* 0C5F48 800C5348 0C031073 */ jal func_800C41CC
/* 0C5F4C 800C534C 27C50060 */ addiu $a1, $fp, 0x60
/* 0C5F50 800C5350 8FDF004C */ lw $ra, 0x4c($fp)
/* 0C5F54 800C5354 03C0E825 */ move $sp, $fp
/* 0C5F58 800C5358 8FD00028 */ lw $s0, 0x28($fp)
/* 0C5F5C 800C535C 8FD1002C */ lw $s1, 0x2c($fp)
/* 0C5F60 800C5360 8FD20030 */ lw $s2, 0x30($fp)
/* 0C5F64 800C5364 8FD30034 */ lw $s3, 0x34($fp)
/* 0C5F68 800C5368 8FD40038 */ lw $s4, 0x38($fp)
/* 0C5F6C 800C536C 8FD5003C */ lw $s5, 0x3c($fp)
/* 0C5F70 800C5370 8FD60040 */ lw $s6, 0x40($fp)
/* 0C5F74 800C5374 8FD70044 */ lw $s7, 0x44($fp)
/* 0C5F78 800C5378 8FDE0048 */ lw $fp, 0x48($fp)
/* 0C5F7C 800C537C 03E00008 */ jr $ra
/* 0C5F80 800C5380 27BD0098 */ addiu $sp, $sp, 0x98
-101
View File
@@ -1,101 +0,0 @@
glabel func_800C5578
/* 0C6178 800C5578 27BDFF68 */ addiu $sp, $sp, -0x98
/* 0C617C 800C557C 3C01F000 */ lui $at, 0xf000
/* 0C6180 800C5580 00A17024 */ and $t6, $a1, $at
/* 0C6184 800C5584 000E7F02 */ srl $t7, $t6, 0x1c
/* 0C6188 800C5588 31F800FF */ andi $t8, $t7, 0xff
/* 0C618C 800C558C 0018C900 */ sll $t9, $t8, 4
/* 0C6190 800C5590 0338C823 */ subu $t9, $t9, $t8
/* 0C6194 800C5594 3C088019 */ lui $t0, %hi(sSoundBanks) # $t0, 0x8019
/* 0C6198 800C5598 25081420 */ addiu $t0, %lo(sSoundBanks) # addiu $t0, $t0, 0x1420
/* 0C619C 800C559C 0019C980 */ sll $t9, $t9, 6
/* 0C61A0 800C55A0 AFBF004C */ sw $ra, 0x4c($sp)
/* 0C61A4 800C55A4 AFBE0048 */ sw $fp, 0x48($sp)
/* 0C61A8 800C55A8 AFB70044 */ sw $s7, 0x44($sp)
/* 0C61AC 800C55AC AFB60040 */ sw $s6, 0x40($sp)
/* 0C61B0 800C55B0 AFB5003C */ sw $s5, 0x3c($sp)
/* 0C61B4 800C55B4 AFB40038 */ sw $s4, 0x38($sp)
/* 0C61B8 800C55B8 AFB30034 */ sw $s3, 0x34($sp)
/* 0C61BC 800C55BC AFB20030 */ sw $s2, 0x30($sp)
/* 0C61C0 800C55C0 AFB1002C */ sw $s1, 0x2c($sp)
/* 0C61C4 800C55C4 AFB00028 */ sw $s0, 0x28($sp)
/* 0C61C8 800C55C8 AFA40098 */ sw $a0, 0x98($sp)
/* 0C61CC 800C55CC AFA5009C */ sw $a1, 0x9c($sp)
/* 0C61D0 800C55D0 03284821 */ addu $t1, $t9, $t0
/* 0C61D4 800C55D4 9131002B */ lbu $s1, 0x2b($t1)
/* 0C61D8 800C55D8 241500FF */ li $s5, 255
/* 0C61DC 800C55DC 03A0F025 */ move $fp, $sp
/* 0C61E0 800C55E0 0300B025 */ move $s6, $t8
/* 0C61E4 800C55E4 00009825 */ move $s3, $zero
/* 0C61E8 800C55E8 12B1002D */ beq $s5, $s1, .L800C56A0
/* 0C61EC 800C55EC 02201025 */ move $v0, $s1
/* 0C61F0 800C55F0 00185100 */ sll $t2, $t8, 4
/* 0C61F4 800C55F4 01585023 */ subu $t2, $t2, $t8
/* 0C61F8 800C55F8 000A5180 */ sll $t2, $t2, 6
/* 0C61FC 800C55FC 0148A021 */ addu $s4, $t2, $t0
/* 0C6200 800C5600 3C170602 */ lui $s7, 0x602
/* 0C6204 800C5604 24120030 */ li $s2, 48
.L800C5608:
/* 0C6208 800C5608 02320019 */ multu $s1, $s2
/* 0C620C 800C560C 8FCC0098 */ lw $t4, 0x98($fp)
/* 0C6210 800C5610 00005812 */ mflo $t3
/* 0C6214 800C5614 028B8021 */ addu $s0, $s4, $t3
/* 0C6218 800C5618 8E0D0000 */ lw $t5, ($s0)
/* 0C621C 800C561C 558D0017 */ bnel $t4, $t5, .L800C567C
/* 0C6220 800C5620 323300FF */ andi $s3, $s1, 0xff
/* 0C6224 800C5624 8FCE009C */ lw $t6, 0x9c($fp)
/* 0C6228 800C5628 8E0F0024 */ lw $t7, 0x24($s0)
/* 0C622C 800C562C 55CF0013 */ bnel $t6, $t7, .L800C567C
/* 0C6230 800C5630 323300FF */ andi $s3, $s1, 0xff
/* 0C6234 800C5634 92020028 */ lbu $v0, 0x28($s0)
/* 0C6238 800C5638 28410003 */ slti $at, $v0, 3
/* 0C623C 800C563C 14200007 */ bnez $at, .L800C565C
/* 0C6240 800C5640 00000000 */ nop
/* 0C6244 800C5644 9219002C */ lbu $t9, 0x2c($s0)
/* 0C6248 800C5648 00002825 */ move $a1, $zero
/* 0C624C 800C564C 00194A00 */ sll $t1, $t9, 8
/* 0C6250 800C5650 0C032EFA */ jal func_800CBBE8
/* 0C6254 800C5654 01372025 */ or $a0, $t1, $s7
/* 0C6258 800C5658 92020028 */ lbu $v0, 0x28($s0)
.L800C565C:
/* 0C625C 800C565C 10400003 */ beqz $v0, .L800C566C
/* 0C6260 800C5660 32C400FF */ andi $a0, $s6, 0xff
/* 0C6264 800C5664 0C0311CF */ jal delete_sound_from_bank
/* 0C6268 800C5668 322500FF */ andi $a1, $s1, 0xff
.L800C566C:
/* 0C626C 800C566C 241100FF */ li $s1, 255
/* 0C6270 800C5670 10000002 */ b .L800C567C
/* 0C6274 800C5674 240200FF */ li $v0, 255
/* 0C6278 800C5678 323300FF */ andi $s3, $s1, 0xff
.L800C567C:
/* 0C627C 800C567C 12A20006 */ beq $s5, $v0, .L800C5698
/* 0C6280 800C5680 00000000 */ nop
/* 0C6284 800C5684 02720019 */ multu $s3, $s2
/* 0C6288 800C5688 00005012 */ mflo $t2
/* 0C628C 800C568C 028A4021 */ addu $t0, $s4, $t2
/* 0C6290 800C5690 9111002B */ lbu $s1, 0x2b($t0)
/* 0C6294 800C5694 02201025 */ move $v0, $s1
.L800C5698:
/* 0C6298 800C5698 16A2FFDB */ bne $s5, $v0, .L800C5608
/* 0C629C 800C569C 00000000 */ nop
.L800C56A0:
/* 0C62A0 800C56A0 8FCB0098 */ lw $t3, 0x98($fp)
/* 0C62A4 800C56A4 8FCC009C */ lw $t4, 0x9c($fp)
/* 0C62A8 800C56A8 24040003 */ li $a0, 3
/* 0C62AC 800C56AC 27C50060 */ addiu $a1, $fp, 0x60
/* 0C62B0 800C56B0 AFCB0060 */ sw $t3, 0x60($fp)
/* 0C62B4 800C56B4 0C031073 */ jal func_800C41CC
/* 0C62B8 800C56B8 AFCC0084 */ sw $t4, 0x84($fp)
/* 0C62BC 800C56BC 8FDF004C */ lw $ra, 0x4c($fp)
/* 0C62C0 800C56C0 03C0E825 */ move $sp, $fp
/* 0C62C4 800C56C4 8FD00028 */ lw $s0, 0x28($fp)
/* 0C62C8 800C56C8 8FD1002C */ lw $s1, 0x2c($fp)
/* 0C62CC 800C56CC 8FD20030 */ lw $s2, 0x30($fp)
/* 0C62D0 800C56D0 8FD30034 */ lw $s3, 0x34($fp)
/* 0C62D4 800C56D4 8FD40038 */ lw $s4, 0x38($fp)
/* 0C62D8 800C56D8 8FD5003C */ lw $s5, 0x3c($fp)
/* 0C62DC 800C56DC 8FD60040 */ lw $s6, 0x40($fp)
/* 0C62E0 800C56E0 8FD70044 */ lw $s7, 0x44($fp)
/* 0C62E4 800C56E4 8FDE0048 */ lw $fp, 0x48($fp)
/* 0C62E8 800C56E8 03E00008 */ jr $ra
/* 0C62EC 800C56EC 27BD0098 */ addiu $sp, $sp, 0x98
-93
View File
@@ -1,93 +0,0 @@
glabel func_800C56F0
/* 0C62F0 800C56F0 27BDFF60 */ addiu $sp, $sp, -0xa0
/* 0C62F4 800C56F4 3C01F000 */ lui $at, 0xf000
/* 0C62F8 800C56F8 00817024 */ and $t6, $a0, $at
/* 0C62FC 800C56FC 000E7F02 */ srl $t7, $t6, 0x1c
/* 0C6300 800C5700 31F800FF */ andi $t8, $t7, 0xff
/* 0C6304 800C5704 0018C900 */ sll $t9, $t8, 4
/* 0C6308 800C5708 0338C823 */ subu $t9, $t9, $t8
/* 0C630C 800C570C 3C088019 */ lui $t0, %hi(sSoundBanks) # $t0, 0x8019
/* 0C6310 800C5710 25081420 */ addiu $t0, %lo(sSoundBanks) # addiu $t0, $t0, 0x1420
/* 0C6314 800C5714 0019C980 */ sll $t9, $t9, 6
/* 0C6318 800C5718 AFBF004C */ sw $ra, 0x4c($sp)
/* 0C631C 800C571C AFBE0048 */ sw $fp, 0x48($sp)
/* 0C6320 800C5720 AFB70044 */ sw $s7, 0x44($sp)
/* 0C6324 800C5724 AFB60040 */ sw $s6, 0x40($sp)
/* 0C6328 800C5728 AFB5003C */ sw $s5, 0x3c($sp)
/* 0C632C 800C572C AFB40038 */ sw $s4, 0x38($sp)
/* 0C6330 800C5730 AFB30034 */ sw $s3, 0x34($sp)
/* 0C6334 800C5734 AFB20030 */ sw $s2, 0x30($sp)
/* 0C6338 800C5738 AFB1002C */ sw $s1, 0x2c($sp)
/* 0C633C 800C573C AFB00028 */ sw $s0, 0x28($sp)
/* 0C6340 800C5740 AFA400A0 */ sw $a0, 0xa0($sp)
/* 0C6344 800C5744 03284821 */ addu $t1, $t9, $t0
/* 0C6348 800C5748 9131002B */ lbu $s1, 0x2b($t1)
/* 0C634C 800C574C 241600FF */ li $s6, 255
/* 0C6350 800C5750 03A0F025 */ move $fp, $sp
/* 0C6354 800C5754 0300A825 */ move $s5, $t8
/* 0C6358 800C5758 12D10029 */ beq $s6, $s1, .L800C5800
/* 0C635C 800C575C 00009025 */ move $s2, $zero
/* 0C6360 800C5760 00185100 */ sll $t2, $t8, 4
/* 0C6364 800C5764 01585023 */ subu $t2, $t2, $t8
/* 0C6368 800C5768 000A5180 */ sll $t2, $t2, 6
/* 0C636C 800C576C 01489821 */ addu $s3, $t2, $t0
/* 0C6370 800C5770 24170030 */ li $s7, 48
.L800C5774:
/* 0C6374 800C5774 02370019 */ multu $s1, $s7
/* 0C6378 800C5778 8FCC00A0 */ lw $t4, 0xa0($fp)
/* 0C637C 800C577C 00127080 */ sll $t6, $s2, 2
/* 0C6380 800C5780 00005812 */ mflo $t3
/* 0C6384 800C5784 026B8021 */ addu $s0, $s3, $t3
/* 0C6388 800C5788 8E0D0024 */ lw $t5, 0x24($s0)
/* 0C638C 800C578C 558D0015 */ bnel $t4, $t5, .L800C57E4
/* 0C6390 800C5790 323200FF */ andi $s2, $s1, 0xff
/* 0C6394 800C5794 92020028 */ lbu $v0, 0x28($s0)
/* 0C6398 800C5798 01D27023 */ subu $t6, $t6, $s2
/* 0C639C 800C579C 000E7100 */ sll $t6, $t6, 4
/* 0C63A0 800C57A0 28410003 */ slti $at, $v0, 3
/* 0C63A4 800C57A4 14200008 */ bnez $at, .L800C57C8
/* 0C63A8 800C57A8 026EA021 */ addu $s4, $s3, $t6
/* 0C63AC 800C57AC 920F002C */ lbu $t7, 0x2c($s0)
/* 0C63B0 800C57B0 3C010602 */ lui $at, 0x602
/* 0C63B4 800C57B4 00002825 */ move $a1, $zero
/* 0C63B8 800C57B8 000FC200 */ sll $t8, $t7, 8
/* 0C63BC 800C57BC 0C032EFA */ jal func_800CBBE8
/* 0C63C0 800C57C0 03012025 */ or $a0, $t8, $at
/* 0C63C4 800C57C4 92020028 */ lbu $v0, 0x28($s0)
.L800C57C8:
/* 0C63C8 800C57C8 10400003 */ beqz $v0, .L800C57D8
/* 0C63CC 800C57CC 32A400FF */ andi $a0, $s5, 0xff
/* 0C63D0 800C57D0 0C0311CF */ jal delete_sound_from_bank
/* 0C63D4 800C57D4 322500FF */ andi $a1, $s1, 0xff
.L800C57D8:
/* 0C63D8 800C57D8 10000007 */ b .L800C57F8
/* 0C63DC 800C57DC 9291002B */ lbu $s1, 0x2b($s4)
/* 0C63E0 800C57E0 323200FF */ andi $s2, $s1, 0xff
.L800C57E4:
/* 0C63E4 800C57E4 00124880 */ sll $t1, $s2, 2
/* 0C63E8 800C57E8 01324823 */ subu $t1, $t1, $s2
/* 0C63EC 800C57EC 00094900 */ sll $t1, $t1, 4
/* 0C63F0 800C57F0 02695021 */ addu $t2, $s3, $t1
/* 0C63F4 800C57F4 9151002B */ lbu $s1, 0x2b($t2)
.L800C57F8:
/* 0C63F8 800C57F8 16D1FFDE */ bne $s6, $s1, .L800C5774
/* 0C63FC 800C57FC 00000000 */ nop
.L800C5800:
/* 0C6400 800C5800 8FC800A0 */ lw $t0, 0xa0($fp)
/* 0C6404 800C5804 24040005 */ li $a0, 5
/* 0C6408 800C5808 27C50068 */ addiu $a1, $fp, 0x68
/* 0C640C 800C580C 0C031073 */ jal func_800C41CC
/* 0C6410 800C5810 AFC8008C */ sw $t0, 0x8c($fp)
/* 0C6414 800C5814 8FDF004C */ lw $ra, 0x4c($fp)
/* 0C6418 800C5818 03C0E825 */ move $sp, $fp
/* 0C641C 800C581C 8FD00028 */ lw $s0, 0x28($fp)
/* 0C6420 800C5820 8FD1002C */ lw $s1, 0x2c($fp)
/* 0C6424 800C5824 8FD20030 */ lw $s2, 0x30($fp)
/* 0C6428 800C5828 8FD30034 */ lw $s3, 0x34($fp)
/* 0C642C 800C582C 8FD40038 */ lw $s4, 0x38($fp)
/* 0C6430 800C5830 8FD5003C */ lw $s5, 0x3c($fp)
/* 0C6434 800C5834 8FD60040 */ lw $s6, 0x40($fp)
/* 0C6438 800C5838 8FD70044 */ lw $s7, 0x44($fp)
/* 0C643C 800C583C 8FDE0048 */ lw $fp, 0x48($fp)
/* 0C6440 800C5840 03E00008 */ jr $ra
/* 0C6444 800C5844 27BD00A0 */ addiu $sp, $sp, 0xa0
@@ -1,359 +0,0 @@
.section .late_rodata
glabel jpt_800EE890
.word L8006CA50, L8006CA74, L8006CA98, L8006CABC
.word L8006CAE0, L8006CB04, L8006CB28, L8006CB4C
.word L8006CB70
.section .text
glabel func_8006C9B8
/* 06D5B8 8006C9B8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 06D5BC 8006C9BC AFB10020 */ sw $s1, 0x20($sp)
/* 06D5C0 8006C9C0 AFB0001C */ sw $s0, 0x1c($sp)
/* 06D5C4 8006C9C4 AFA50034 */ sw $a1, 0x34($sp)
/* 06D5C8 8006C9C8 00057400 */ sll $t6, $a1, 0x10
/* 06D5CC 8006C9CC 000E2C03 */ sra $a1, $t6, 0x10
/* 06D5D0 8006C9D0 00068600 */ sll $s0, $a2, 0x18
/* 06D5D4 8006C9D4 00078E00 */ sll $s1, $a3, 0x18
/* 06D5D8 8006C9D8 0011CE03 */ sra $t9, $s1, 0x18
/* 06D5DC 8006C9DC 0010C603 */ sra $t8, $s0, 0x18
/* 06D5E0 8006C9E0 24A2FFFF */ addiu $v0, $a1, -1
/* 06D5E4 8006C9E4 03008025 */ move $s0, $t8
/* 06D5E8 8006C9E8 03208825 */ move $s1, $t9
/* 06D5EC 8006C9EC AFBF0024 */ sw $ra, 0x24($sp)
/* 06D5F0 8006C9F0 AFA60038 */ sw $a2, 0x38($sp)
/* 06D5F4 8006C9F4 AFA7003C */ sw $a3, 0x3c($sp)
/* 06D5F8 8006C9F8 04410003 */ bgez $v0, .L8006CA08
/* 06D5FC 8006C9FC AFA20028 */ sw $v0, 0x28($sp)
/* 06D600 8006CA00 24080009 */ li $t0, 9
/* 06D604 8006CA04 AFA80028 */ sw $t0, 0x28($sp)
.L8006CA08:
/* 06D608 8006CA08 000548C0 */ sll $t1, $a1, 3
/* 06D60C 8006CA0C 01254821 */ addu $t1, $t1, $a1
/* 06D610 8006CA10 000948C0 */ sll $t1, $t1, 3
/* 06D614 8006CA14 00891021 */ addu $v0, $a0, $t1
/* 06D618 8006CA18 844A0AE4 */ lh $t2, 0xae4($v0)
/* 06D61C 8006CA1C 24010001 */ li $at, 1
/* 06D620 8006CA20 5541005D */ bnel $t2, $at, .L8006CB98
/* 06D624 8006CA24 84870044 */ lh $a3, 0x44($a0)
/* 06D628 8006CA28 944B0ADA */ lhu $t3, 0xada($v0)
/* 06D62C 8006CA2C 256CFFFF */ addiu $t4, $t3, -1
/* 06D630 8006CA30 2D810009 */ sltiu $at, $t4, 9
/* 06D634 8006CA34 1020011D */ beqz $at, .L8006CEAC
/* 06D638 8006CA38 000C6080 */ sll $t4, $t4, 2
/* 06D63C 8006CA3C 3C01800F */ lui $at, %hi(jpt_800EE890)
/* 06D640 8006CA40 002C0821 */ addu $at, $at, $t4
/* 06D644 8006CA44 8C2CE890 */ lw $t4, %lo(jpt_800EE890)($at)
/* 06D648 8006CA48 01800008 */ jr $t4
/* 06D64C 8006CA4C 00000000 */ nop
glabel L8006CA50
/* 06D650 8006CA50 00103600 */ sll $a2, $s0, 0x18
/* 06D654 8006CA54 00113E00 */ sll $a3, $s1, 0x18
/* 06D658 8006CA58 00077603 */ sra $t6, $a3, 0x18
/* 06D65C 8006CA5C 00066E03 */ sra $t5, $a2, 0x18
/* 06D660 8006CA60 01A03025 */ move $a2, $t5
/* 06D664 8006CA64 0C01913A */ jal func_800644E8
/* 06D668 8006CA68 01C03825 */ move $a3, $t6
/* 06D66C 8006CA6C 10000110 */ b .L8006CEB0
/* 06D670 8006CA70 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CA74
/* 06D674 8006CA74 00103600 */ sll $a2, $s0, 0x18
/* 06D678 8006CA78 00113E00 */ sll $a3, $s1, 0x18
/* 06D67C 8006CA7C 0007C603 */ sra $t8, $a3, 0x18
/* 06D680 8006CA80 00067E03 */ sra $t7, $a2, 0x18
/* 06D684 8006CA84 01E03025 */ move $a2, $t7
/* 06D688 8006CA88 0C01927D */ jal func_800649F4
/* 06D68C 8006CA8C 03003825 */ move $a3, $t8
/* 06D690 8006CA90 10000107 */ b .L8006CEB0
/* 06D694 8006CA94 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CA98
/* 06D698 8006CA98 00103600 */ sll $a2, $s0, 0x18
/* 06D69C 8006CA9C 00113E00 */ sll $a3, $s1, 0x18
/* 06D6A0 8006CAA0 00074603 */ sra $t0, $a3, 0x18
/* 06D6A4 8006CAA4 0006CE03 */ sra $t9, $a2, 0x18
/* 06D6A8 8006CAA8 03203025 */ move $a2, $t9
/* 06D6AC 8006CAAC 0C01931D */ jal func_80064C74
/* 06D6B0 8006CAB0 01003825 */ move $a3, $t0
/* 06D6B4 8006CAB4 100000FE */ b .L8006CEB0
/* 06D6B8 8006CAB8 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CABC
/* 06D6BC 8006CABC 00103600 */ sll $a2, $s0, 0x18
/* 06D6C0 8006CAC0 00113E00 */ sll $a3, $s1, 0x18
/* 06D6C4 8006CAC4 00075603 */ sra $t2, $a3, 0x18
/* 06D6C8 8006CAC8 00064E03 */ sra $t1, $a2, 0x18
/* 06D6CC 8006CACC 01203025 */ move $a2, $t1
/* 06D6D0 8006CAD0 0C0191F2 */ jal func_800647C8
/* 06D6D4 8006CAD4 01403825 */ move $a3, $t2
/* 06D6D8 8006CAD8 100000F5 */ b .L8006CEB0
/* 06D6DC 8006CADC 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CAE0
/* 06D6E0 8006CAE0 00103600 */ sll $a2, $s0, 0x18
/* 06D6E4 8006CAE4 00113E00 */ sll $a3, $s1, 0x18
/* 06D6E8 8006CAE8 00076603 */ sra $t4, $a3, 0x18
/* 06D6EC 8006CAEC 00065E03 */ sra $t3, $a2, 0x18
/* 06D6F0 8006CAF0 01603025 */ move $a2, $t3
/* 06D6F4 8006CAF4 0C0192CC */ jal func_80064B30
/* 06D6F8 8006CAF8 01803825 */ move $a3, $t4
/* 06D6FC 8006CAFC 100000EC */ b .L8006CEB0
/* 06D700 8006CB00 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CB04
/* 06D704 8006CB04 00103600 */ sll $a2, $s0, 0x18
/* 06D708 8006CB08 00113E00 */ sll $a3, $s1, 0x18
/* 06D70C 8006CB0C 00077603 */ sra $t6, $a3, 0x18
/* 06D710 8006CB10 00066E03 */ sra $t5, $a2, 0x18
/* 06D714 8006CB14 01A03025 */ move $a2, $t5
/* 06D718 8006CB18 0C019239 */ jal func_800648E4
/* 06D71C 8006CB1C 01C03825 */ move $a3, $t6
/* 06D720 8006CB20 100000E3 */ b .L8006CEB0
/* 06D724 8006CB24 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CB28
/* 06D728 8006CB28 00103600 */ sll $a2, $s0, 0x18
/* 06D72C 8006CB2C 00113E00 */ sll $a3, $s1, 0x18
/* 06D730 8006CB30 0007C603 */ sra $t8, $a3, 0x18
/* 06D734 8006CB34 00067E03 */ sra $t7, $a2, 0x18
/* 06D738 8006CB38 01E03025 */ move $a2, $t7
/* 06D73C 8006CB3C 0C019262 */ jal func_80064988
/* 06D740 8006CB40 03003825 */ move $a3, $t8
/* 06D744 8006CB44 100000DA */ b .L8006CEB0
/* 06D748 8006CB48 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CB4C
/* 06D74C 8006CB4C 00103600 */ sll $a2, $s0, 0x18
/* 06D750 8006CB50 00113E00 */ sll $a3, $s1, 0x18
/* 06D754 8006CB54 00074603 */ sra $t0, $a3, 0x18
/* 06D758 8006CB58 0006CE03 */ sra $t9, $a2, 0x18
/* 06D75C 8006CB5C 03203025 */ move $a2, $t9
/* 06D760 8006CB60 0C01931D */ jal func_80064C74
/* 06D764 8006CB64 01003825 */ move $a3, $t0
/* 06D768 8006CB68 100000D1 */ b .L8006CEB0
/* 06D76C 8006CB6C 8FBF0024 */ lw $ra, 0x24($sp)
glabel L8006CB70
/* 06D770 8006CB70 00103600 */ sll $a2, $s0, 0x18
/* 06D774 8006CB74 00113E00 */ sll $a3, $s1, 0x18
/* 06D778 8006CB78 00075603 */ sra $t2, $a3, 0x18
/* 06D77C 8006CB7C 00064E03 */ sra $t1, $a2, 0x18
/* 06D780 8006CB80 01203025 */ move $a2, $t1
/* 06D784 8006CB84 0C019199 */ jal func_80064664
/* 06D788 8006CB88 01403825 */ move $a3, $t2
/* 06D78C 8006CB8C 100000C8 */ b .L8006CEB0
/* 06D790 8006CB90 8FBF0024 */ lw $ra, 0x24($sp)
/* 06D794 8006CB94 84870044 */ lh $a3, 0x44($a0)
.L8006CB98:
/* 06D798 8006CB98 8FA60028 */ lw $a2, 0x28($sp)
/* 06D79C 8006CB9C 30EB1000 */ andi $t3, $a3, 0x1000
/* 06D7A0 8006CBA0 5160000D */ beql $t3, $zero, .L8006CBD8
/* 06D7A4 8006CBA4 848600CA */ lh $a2, 0xca($a0)
/* 06D7A8 8006CBA8 00103E00 */ sll $a3, $s0, 0x18
/* 06D7AC 8006CBAC 00076603 */ sra $t4, $a3, 0x18
/* 06D7B0 8006CBB0 01803825 */ move $a3, $t4
/* 06D7B4 8006CBB4 AFB10010 */ sw $s1, 0x10($sp)
/* 06D7B8 8006CBB8 0C01850C */ jal func_80061430
/* 06D7BC 8006CBBC AFA40030 */ sw $a0, 0x30($sp)
/* 06D7C0 8006CBC0 8FA40030 */ lw $a0, 0x30($sp)
/* 06D7C4 8006CBC4 848D0044 */ lh $t5, 0x44($a0)
/* 06D7C8 8006CBC8 31AEFEFF */ andi $t6, $t5, 0xfeff
/* 06D7CC 8006CBCC 100000B7 */ b .L8006CEAC
/* 06D7D0 8006CBD0 A48E0044 */ sh $t6, 0x44($a0)
/* 06D7D4 8006CBD4 848600CA */ lh $a2, 0xca($a0)
.L8006CBD8:
/* 06D7D8 8006CBD8 24011000 */ li $at, 4096
/* 06D7DC 8006CBDC 30CF1000 */ andi $t7, $a2, 0x1000
/* 06D7E0 8006CBE0 51E10011 */ beql $t7, $at, .L8006CC28
/* 06D7E4 8006CBE4 00103E00 */ sll $a3, $s0, 0x18
/* 06D7E8 8006CBE8 848200E0 */ lh $v0, 0xe0($a0)
/* 06D7EC 8006CBEC 28410002 */ slti $at, $v0, 2
/* 06D7F0 8006CBF0 50200005 */ beql $at, $zero, .L8006CC08
/* 06D7F4 8006CBF4 28410002 */ slti $at, $v0, 2
/* 06D7F8 8006CBF8 8C9800BC */ lw $t8, 0xbc($a0)
/* 06D7FC 8006CBFC 0018C9C0 */ sll $t9, $t8, 7
/* 06D800 8006CC00 07200008 */ bltz $t9, .L8006CC24
/* 06D804 8006CC04 28410002 */ slti $at, $v0, 2
.L8006CC08:
/* 06D808 8006CC08 10200003 */ beqz $at, .L8006CC18
/* 06D80C 8006CC0C 8C8300BC */ lw $v1, 0xbc($a0)
/* 06D810 8006CC10 00034180 */ sll $t0, $v1, 6
/* 06D814 8006CC14 05000003 */ bltz $t0, .L8006CC24
.L8006CC18:
/* 06D818 8006CC18 30690400 */ andi $t1, $v1, 0x400
/* 06D81C 8006CC1C 11200010 */ beqz $t1, .L8006CC60
/* 06D820 8006CC20 30CF2000 */ andi $t7, $a2, 0x2000
.L8006CC24:
/* 06D824 8006CC24 00103E00 */ sll $a3, $s0, 0x18
.L8006CC28:
/* 06D828 8006CC28 00075603 */ sra $t2, $a3, 0x18
/* 06D82C 8006CC2C 01403825 */ move $a3, $t2
/* 06D830 8006CC30 8FA60028 */ lw $a2, 0x28($sp)
/* 06D834 8006CC34 AFB10010 */ sw $s1, 0x10($sp)
/* 06D838 8006CC38 0C018667 */ jal func_8006199C
/* 06D83C 8006CC3C AFA40030 */ sw $a0, 0x30($sp)
/* 06D840 8006CC40 8FA40030 */ lw $a0, 0x30($sp)
/* 06D844 8006CC44 948B0046 */ lhu $t3, 0x46($a0)
/* 06D848 8006CC48 848D0044 */ lh $t5, 0x44($a0)
/* 06D84C 8006CC4C 316CFFF7 */ andi $t4, $t3, 0xfff7
/* 06D850 8006CC50 31AEFEFF */ andi $t6, $t5, 0xfeff
/* 06D854 8006CC54 A48C0046 */ sh $t4, 0x46($a0)
/* 06D858 8006CC58 10000094 */ b .L8006CEAC
/* 06D85C 8006CC5C A48E0044 */ sh $t6, 0x44($a0)
.L8006CC60:
/* 06D860 8006CC60 24012000 */ li $at, 8192
/* 06D864 8006CC64 15E10010 */ bne $t7, $at, .L8006CCA8
/* 06D868 8006CC68 306B0200 */ andi $t3, $v1, 0x200
/* 06D86C 8006CC6C 00103E00 */ sll $a3, $s0, 0x18
/* 06D870 8006CC70 0007C603 */ sra $t8, $a3, 0x18
/* 06D874 8006CC74 03003825 */ move $a3, $t8
/* 06D878 8006CC78 8FA60028 */ lw $a2, 0x28($sp)
/* 06D87C 8006CC7C AFB10010 */ sw $s1, 0x10($sp)
/* 06D880 8006CC80 0C01868D */ jal func_80061A34
/* 06D884 8006CC84 AFA40030 */ sw $a0, 0x30($sp)
/* 06D888 8006CC88 8FA40030 */ lw $a0, 0x30($sp)
/* 06D88C 8006CC8C 94990046 */ lhu $t9, 0x46($a0)
/* 06D890 8006CC90 84890044 */ lh $t1, 0x44($a0)
/* 06D894 8006CC94 3328FFF7 */ andi $t0, $t9, 0xfff7
/* 06D898 8006CC98 312AFEFF */ andi $t2, $t1, 0xfeff
/* 06D89C 8006CC9C A4880046 */ sh $t0, 0x46($a0)
/* 06D8A0 8006CCA0 10000082 */ b .L8006CEAC
/* 06D8A4 8006CCA4 A48A0044 */ sh $t2, 0x44($a0)
.L8006CCA8:
/* 06D8A8 8006CCA8 1160001C */ beqz $t3, .L8006CD1C
/* 06D8AC 8006CCAC 3C01800E */ lui $at, %hi(gCourseTimer) # $at, 0x800e
/* 06D8B0 8006CCB0 C424C598 */ lwc1 $f4, %lo(gCourseTimer)($at)
/* 06D8B4 8006CCB4 00107080 */ sll $t6, $s0, 2
/* 06D8B8 8006CCB8 3C0F8019 */ lui $t7, %hi(D_8018D930)
/* 06D8BC 8006CCBC 4600218D */ trunc.w.s $f6, $f4
/* 06D8C0 8006CCC0 01EE7821 */ addu $t7, $t7, $t6
/* 06D8C4 8006CCC4 8DEFD930 */ lw $t7, %lo(D_8018D930)($t7)
/* 06D8C8 8006CCC8 8FA60028 */ lw $a2, 0x28($sp)
/* 06D8CC 8006CCCC 440D3000 */ mfc1 $t5, $f6
/* 06D8D0 8006CCD0 00000000 */ nop
/* 06D8D4 8006CCD4 01AFC023 */ subu $t8, $t5, $t7
/* 06D8D8 8006CCD8 2B010009 */ slti $at, $t8, 9
/* 06D8DC 8006CCDC 50200010 */ beql $at, $zero, .L8006CD20
/* 06D8E0 8006CCE0 94820046 */ lhu $v0, 0x46($a0)
/* 06D8E4 8006CCE4 00103E00 */ sll $a3, $s0, 0x18
/* 06D8E8 8006CCE8 0007CE03 */ sra $t9, $a3, 0x18
/* 06D8EC 8006CCEC 03203825 */ move $a3, $t9
/* 06D8F0 8006CCF0 AFB10010 */ sw $s1, 0x10($sp)
/* 06D8F4 8006CCF4 0C01856B */ jal func_800615AC
/* 06D8F8 8006CCF8 AFA40030 */ sw $a0, 0x30($sp)
/* 06D8FC 8006CCFC 8FA40030 */ lw $a0, 0x30($sp)
/* 06D900 8006CD00 94880046 */ lhu $t0, 0x46($a0)
/* 06D904 8006CD04 848A0044 */ lh $t2, 0x44($a0)
/* 06D908 8006CD08 3109FFF7 */ andi $t1, $t0, 0xfff7
/* 06D90C 8006CD0C 314BFEFF */ andi $t3, $t2, 0xfeff
/* 06D910 8006CD10 A4890046 */ sh $t1, 0x46($a0)
/* 06D914 8006CD14 10000065 */ b .L8006CEAC
/* 06D918 8006CD18 A48B0044 */ sh $t3, 0x44($a0)
.L8006CD1C:
/* 06D91C 8006CD1C 94820046 */ lhu $v0, 0x46($a0)
.L8006CD20:
/* 06D920 8006CD20 24010008 */ li $at, 8
/* 06D924 8006CD24 8FA60028 */ lw $a2, 0x28($sp)
/* 06D928 8006CD28 304C0008 */ andi $t4, $v0, 8
/* 06D92C 8006CD2C 1581000C */ bne $t4, $at, .L8006CD60
/* 06D930 8006CD30 30580020 */ andi $t8, $v0, 0x20
/* 06D934 8006CD34 00103E00 */ sll $a3, $s0, 0x18
/* 06D938 8006CD38 00077603 */ sra $t6, $a3, 0x18
/* 06D93C 8006CD3C 01C03825 */ move $a3, $t6
/* 06D940 8006CD40 AFB10010 */ sw $s1, 0x10($sp)
/* 06D944 8006CD44 0C0184BE */ jal func_800612F8
/* 06D948 8006CD48 AFA40030 */ sw $a0, 0x30($sp)
/* 06D94C 8006CD4C 8FA40030 */ lw $a0, 0x30($sp)
/* 06D950 8006CD50 848D0044 */ lh $t5, 0x44($a0)
/* 06D954 8006CD54 31AFFEFF */ andi $t7, $t5, 0xfeff
/* 06D958 8006CD58 10000054 */ b .L8006CEAC
/* 06D95C 8006CD5C A48F0044 */ sh $t7, 0x44($a0)
.L8006CD60:
/* 06D960 8006CD60 24010020 */ li $at, 32
/* 06D964 8006CD64 1701001D */ bne $t8, $at, .L8006CDDC
/* 06D968 8006CD68 306C2000 */ andi $t4, $v1, 0x2000
/* 06D96C 8006CD6C 3C014190 */ li $at, 0x41900000 # 18.000000
/* 06D970 8006CD70 44815000 */ mtc1 $at, $f10
/* 06D974 8006CD74 C4880094 */ lwc1 $f8, 0x94($a0)
/* 06D978 8006CD78 3C014358 */ li $at, 0x43580000 # 216.000000
/* 06D97C 8006CD7C 44819000 */ mtc1 $at, $f18
/* 06D980 8006CD80 460A4403 */ div.s $f16, $f8, $f10
/* 06D984 8006CD84 3C0141A0 */ li $at, 0x41A00000 # 20.000000
/* 06D988 8006CD88 44813000 */ mtc1 $at, $f6
/* 06D98C 8006CD8C 8FA60028 */ lw $a2, 0x28($sp)
/* 06D990 8006CD90 46128102 */ mul.s $f4, $f16, $f18
/* 06D994 8006CD94 4604303E */ c.le.s $f6, $f4
/* 06D998 8006CD98 00000000 */ nop
/* 06D99C 8006CD9C 4500000F */ bc1f .L8006CDDC
/* 06D9A0 8006CDA0 00000000 */ nop
/* 06D9A4 8006CDA4 00103E00 */ sll $a3, $s0, 0x18
/* 06D9A8 8006CDA8 0007CE03 */ sra $t9, $a3, 0x18
/* 06D9AC 8006CDAC 03203825 */ move $a3, $t9
/* 06D9B0 8006CDB0 AFB10010 */ sw $s1, 0x10($sp)
/* 06D9B4 8006CDB4 0C018753 */ jal func_80061D4C
/* 06D9B8 8006CDB8 AFA40030 */ sw $a0, 0x30($sp)
/* 06D9BC 8006CDBC 8FA40030 */ lw $a0, 0x30($sp)
/* 06D9C0 8006CDC0 94880046 */ lhu $t0, 0x46($a0)
/* 06D9C4 8006CDC4 848A0044 */ lh $t2, 0x44($a0)
/* 06D9C8 8006CDC8 3109FFF7 */ andi $t1, $t0, 0xfff7
/* 06D9CC 8006CDCC 314BFEFF */ andi $t3, $t2, 0xfeff
/* 06D9D0 8006CDD0 A4890046 */ sh $t1, 0x46($a0)
/* 06D9D4 8006CDD4 10000035 */ b .L8006CEAC
/* 06D9D8 8006CDD8 A48B0044 */ sh $t3, 0x44($a0)
.L8006CDDC:
/* 06D9DC 8006CDDC 1180000D */ beqz $t4, .L8006CE14
/* 06D9E0 8006CDE0 0003C280 */ sll $t8, $v1, 0xa
/* 06D9E4 8006CDE4 948E0000 */ lhu $t6, ($a0)
/* 06D9E8 8006CDE8 8FA60028 */ lw $a2, 0x28($sp)
/* 06D9EC 8006CDEC 31CD4000 */ andi $t5, $t6, 0x4000
/* 06D9F0 8006CDF0 11A00008 */ beqz $t5, .L8006CE14
/* 06D9F4 8006CDF4 00000000 */ nop
/* 06D9F8 8006CDF8 00103E00 */ sll $a3, $s0, 0x18
/* 06D9FC 8006CDFC 00077E03 */ sra $t7, $a3, 0x18
/* 06DA00 8006CE00 01E03825 */ move $a3, $t7
/* 06DA04 8006CE04 0C01886F */ jal func_800621BC
/* 06DA08 8006CE08 AFB10010 */ sw $s1, 0x10($sp)
/* 06DA0C 8006CE0C 10000028 */ b .L8006CEB0
/* 06DA10 8006CE10 8FBF0024 */ lw $ra, 0x24($sp)
.L8006CE14:
/* 06DA14 8006CE14 07000003 */ bltz $t8, .L8006CE24
/* 06DA18 8006CE18 0003CAC0 */ sll $t9, $v1, 0xb
/* 06DA1C 8006CE1C 07230016 */ bgezl $t9, .L8006CE78
/* 06DA20 8006CE20 30EF0100 */ andi $t7, $a3, 0x100
.L8006CE24:
/* 06DA24 8006CE24 94880000 */ lhu $t0, ($a0)
/* 06DA28 8006CE28 24014000 */ li $at, 16384
/* 06DA2C 8006CE2C 8FA60028 */ lw $a2, 0x28($sp)
/* 06DA30 8006CE30 31094000 */ andi $t1, $t0, 0x4000
/* 06DA34 8006CE34 55210010 */ bnel $t1, $at, .L8006CE78
/* 06DA38 8006CE38 30EF0100 */ andi $t7, $a3, 0x100
/* 06DA3C 8006CE3C 00103E00 */ sll $a3, $s0, 0x18
/* 06DA40 8006CE40 00075603 */ sra $t2, $a3, 0x18
/* 06DA44 8006CE44 01403825 */ move $a3, $t2
/* 06DA48 8006CE48 AFB10010 */ sw $s1, 0x10($sp)
/* 06DA4C 8006CE4C 0C0187BD */ jal func_80061EF4
/* 06DA50 8006CE50 AFA40030 */ sw $a0, 0x30($sp)
/* 06DA54 8006CE54 8FA40030 */ lw $a0, 0x30($sp)
/* 06DA58 8006CE58 948B0046 */ lhu $t3, 0x46($a0)
/* 06DA5C 8006CE5C 848E0044 */ lh $t6, 0x44($a0)
/* 06DA60 8006CE60 316CFFF7 */ andi $t4, $t3, 0xfff7
/* 06DA64 8006CE64 31CDFEFF */ andi $t5, $t6, 0xfeff
/* 06DA68 8006CE68 A48C0046 */ sh $t4, 0x46($a0)
/* 06DA6C 8006CE6C 1000000F */ b .L8006CEAC
/* 06DA70 8006CE70 A48D0044 */ sh $t5, 0x44($a0)
/* 06DA74 8006CE74 30EF0100 */ andi $t7, $a3, 0x100
.L8006CE78:
/* 06DA78 8006CE78 24010100 */ li $at, 256
/* 06DA7C 8006CE7C 15E1000B */ bne $t7, $at, .L8006CEAC
/* 06DA80 8006CE80 8FA60028 */ lw $a2, 0x28($sp)
/* 06DA84 8006CE84 00103E00 */ sll $a3, $s0, 0x18
/* 06DA88 8006CE88 0007C603 */ sra $t8, $a3, 0x18
/* 06DA8C 8006CE8C 03003825 */ move $a3, $t8
/* 06DA90 8006CE90 AFB10010 */ sw $s1, 0x10($sp)
/* 06DA94 8006CE94 0C018936 */ jal func_800624D8
/* 06DA98 8006CE98 AFA40030 */ sw $a0, 0x30($sp)
/* 06DA9C 8006CE9C 8FA40030 */ lw $a0, 0x30($sp)
/* 06DAA0 8006CEA0 94990046 */ lhu $t9, 0x46($a0)
/* 06DAA4 8006CEA4 3328FFF7 */ andi $t0, $t9, 0xfff7
/* 06DAA8 8006CEA8 A4880046 */ sh $t0, 0x46($a0)
.L8006CEAC:
/* 06DAAC 8006CEAC 8FBF0024 */ lw $ra, 0x24($sp)
.L8006CEB0:
/* 06DAB0 8006CEB0 8FB0001C */ lw $s0, 0x1c($sp)
/* 06DAB4 8006CEB4 8FB10020 */ lw $s1, 0x20($sp)
/* 06DAB8 8006CEB8 03E00008 */ jr $ra
/* 06DABC 8006CEBC 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,207 +0,0 @@
.section .late_rodata
glabel jpt_800EE8B4
.word L8006CF38, L8006D184, L8006CF4C, L8006D184
.word L8006CF60, L8006CF74, L8006CF88
.section .text
glabel func_8006CEC0
/* 06DAC0 8006CEC0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 06DAC4 8006CEC4 AFA5002C */ sw $a1, 0x2c($sp)
/* 06DAC8 8006CEC8 00057400 */ sll $t6, $a1, 0x10
/* 06DACC 8006CECC 000E2C03 */ sra $a1, $t6, 0x10
/* 06DAD0 8006CED0 24A2FFFF */ addiu $v0, $a1, -1
/* 06DAD4 8006CED4 AFBF001C */ sw $ra, 0x1c($sp)
/* 06DAD8 8006CED8 AFA60030 */ sw $a2, 0x30($sp)
/* 06DADC 8006CEDC AFA70034 */ sw $a3, 0x34($sp)
/* 06DAE0 8006CEE0 04410003 */ bgez $v0, .L8006CEF0
/* 06DAE4 8006CEE4 AFA20020 */ sw $v0, 0x20($sp)
/* 06DAE8 8006CEE8 24180009 */ li $t8, 9
/* 06DAEC 8006CEEC AFB80020 */ sw $t8, 0x20($sp)
.L8006CEF0:
/* 06DAF0 8006CEF0 0005C8C0 */ sll $t9, $a1, 3
/* 06DAF4 8006CEF4 0325C821 */ addu $t9, $t9, $a1
/* 06DAF8 8006CEF8 0019C8C0 */ sll $t9, $t9, 3
/* 06DAFC 8006CEFC 00991021 */ addu $v0, $a0, $t9
/* 06DB00 8006CF00 84480274 */ lh $t0, 0x274($v0)
/* 06DB04 8006CF04 24070001 */ li $a3, 1
/* 06DB08 8006CF08 54E80025 */ bnel $a3, $t0, .L8006CFA0
/* 06DB0C 8006CF0C 848B0044 */ lh $t3, 0x44($a0)
/* 06DB10 8006CF10 9449026A */ lhu $t1, 0x26a($v0)
/* 06DB14 8006CF14 252AFFFF */ addiu $t2, $t1, -1
/* 06DB18 8006CF18 2D410007 */ sltiu $at, $t2, 7
/* 06DB1C 8006CF1C 10200099 */ beqz $at, .L8006D184
/* 06DB20 8006CF20 000A5080 */ sll $t2, $t2, 2
/* 06DB24 8006CF24 3C01800F */ lui $at, %hi(jpt_800EE8B4)
/* 06DB28 8006CF28 002A0821 */ addu $at, $at, $t2
/* 06DB2C 8006CF2C 8C2AE8B4 */ lw $t2, %lo(jpt_800EE8B4)($at)
/* 06DB30 8006CF30 01400008 */ jr $t2
/* 06DB34 8006CF34 00000000 */ nop
glabel L8006CF38
/* 06DB38 8006CF38 83A60033 */ lb $a2, 0x33($sp)
/* 06DB3C 8006CF3C 0C018B1D */ jal func_80062C74
/* 06DB40 8006CF40 83A70037 */ lb $a3, 0x37($sp)
/* 06DB44 8006CF44 10000090 */ b .L8006D188
/* 06DB48 8006CF48 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8006CF4C
/* 06DB4C 8006CF4C 83A60033 */ lb $a2, 0x33($sp)
/* 06DB50 8006CF50 0C019061 */ jal func_80064184
/* 06DB54 8006CF54 83A70037 */ lb $a3, 0x37($sp)
/* 06DB58 8006CF58 1000008B */ b .L8006D188
/* 06DB5C 8006CF5C 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8006CF60
/* 06DB60 8006CF60 83A60033 */ lb $a2, 0x33($sp)
/* 06DB64 8006CF64 0C018C30 */ jal func_800630C0
/* 06DB68 8006CF68 83A70037 */ lb $a3, 0x37($sp)
/* 06DB6C 8006CF6C 10000086 */ b .L8006D188
/* 06DB70 8006CF70 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8006CF74
/* 06DB74 8006CF74 83A60033 */ lb $a2, 0x33($sp)
/* 06DB78 8006CF78 0C018C6A */ jal func_800631A8
/* 06DB7C 8006CF7C 83A70037 */ lb $a3, 0x37($sp)
/* 06DB80 8006CF80 10000081 */ b .L8006D188
/* 06DB84 8006CF84 8FBF001C */ lw $ra, 0x1c($sp)
glabel L8006CF88
/* 06DB88 8006CF88 83A60033 */ lb $a2, 0x33($sp)
/* 06DB8C 8006CF8C 0C018C9A */ jal func_80063268
/* 06DB90 8006CF90 83A70037 */ lb $a3, 0x37($sp)
/* 06DB94 8006CF94 1000007C */ b .L8006D188
/* 06DB98 8006CF98 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DB9C 8006CF9C 848B0044 */ lh $t3, 0x44($a0)
.L8006CFA0:
/* 06DBA0 8006CFA0 316C0200 */ andi $t4, $t3, 0x200
/* 06DBA4 8006CFA4 5180000D */ beql $t4, $zero, .L8006CFDC
/* 06DBA8 8006CFA8 8C8300BC */ lw $v1, 0xbc($a0)
/* 06DBAC 8006CFAC 948D0000 */ lhu $t5, ($a0)
/* 06DBB0 8006CFB0 8FA60020 */ lw $a2, 0x20($sp)
/* 06DBB4 8006CFB4 83AF0037 */ lb $t7, 0x37($sp)
/* 06DBB8 8006CFB8 31AE4000 */ andi $t6, $t5, 0x4000
/* 06DBBC 8006CFBC 51C00007 */ beql $t6, $zero, .L8006CFDC
/* 06DBC0 8006CFC0 8C8300BC */ lw $v1, 0xbc($a0)
/* 06DBC4 8006CFC4 83A70033 */ lb $a3, 0x33($sp)
/* 06DBC8 8006CFC8 0C018489 */ jal func_80061224
/* 06DBCC 8006CFCC AFAF0010 */ sw $t7, 0x10($sp)
/* 06DBD0 8006CFD0 1000006D */ b .L8006D188
/* 06DBD4 8006CFD4 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DBD8 8006CFD8 8C8300BC */ lw $v1, 0xbc($a0)
.L8006CFDC:
/* 06DBDC 8006CFDC 3C024000 */ lui $v0, 0x4000
/* 06DBE0 8006CFE0 0062C024 */ and $t8, $v1, $v0
/* 06DBE4 8006CFE4 5458000D */ bnel $v0, $t8, .L8006D01C
/* 06DBE8 8006CFE8 94860000 */ lhu $a2, ($a0)
/* 06DBEC 8006CFEC 849900B0 */ lh $t9, 0xb0($a0)
/* 06DBF0 8006CFF0 8FA60020 */ lw $a2, 0x20($sp)
/* 06DBF4 8006CFF4 83A80037 */ lb $t0, 0x37($sp)
/* 06DBF8 8006CFF8 2B210032 */ slti $at, $t9, 0x32
/* 06DBFC 8006CFFC 50200007 */ beql $at, $zero, .L8006D01C
/* 06DC00 8006D000 94860000 */ lhu $a2, ($a0)
/* 06DC04 8006D004 83A70033 */ lb $a3, 0x33($sp)
/* 06DC08 8006D008 0C018425 */ jal func_80061094
/* 06DC0C 8006D00C AFA80010 */ sw $t0, 0x10($sp)
/* 06DC10 8006D010 1000005D */ b .L8006D188
/* 06DC14 8006D014 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DC18 8006D018 94860000 */ lhu $a2, ($a0)
.L8006D01C:
/* 06DC1C 8006D01C 24014000 */ li $at, 16384
/* 06DC20 8006D020 30C94000 */ andi $t1, $a2, 0x4000
/* 06DC24 8006D024 15210018 */ bne $t1, $at, .L8006D088
/* 06DC28 8006D028 01203025 */ move $a2, $t1
/* 06DC2C 8006D02C 948200DE */ lhu $v0, 0xde($a0)
/* 06DC30 8006D030 24010008 */ li $at, 8
/* 06DC34 8006D034 83AB0037 */ lb $t3, 0x37($sp)
/* 06DC38 8006D038 304A0008 */ andi $t2, $v0, 8
/* 06DC3C 8006D03C 15410007 */ bne $t2, $at, .L8006D05C
/* 06DC40 8006D040 304C0002 */ andi $t4, $v0, 2
/* 06DC44 8006D044 8FA60020 */ lw $a2, 0x20($sp)
/* 06DC48 8006D048 83A70033 */ lb $a3, 0x33($sp)
/* 06DC4C 8006D04C 0C0183D4 */ jal func_80060F50
/* 06DC50 8006D050 AFAB0010 */ sw $t3, 0x10($sp)
/* 06DC54 8006D054 1000004C */ b .L8006D188
/* 06DC58 8006D058 8FBF001C */ lw $ra, 0x1c($sp)
.L8006D05C:
/* 06DC5C 8006D05C 15800003 */ bnez $t4, .L8006D06C
/* 06DC60 8006D060 304D0001 */ andi $t5, $v0, 1
/* 06DC64 8006D064 11A00008 */ beqz $t5, .L8006D088
/* 06DC68 8006D068 00000000 */ nop
.L8006D06C:
/* 06DC6C 8006D06C 83AE0037 */ lb $t6, 0x37($sp)
/* 06DC70 8006D070 8FA60020 */ lw $a2, 0x20($sp)
/* 06DC74 8006D074 83A70033 */ lb $a3, 0x33($sp)
/* 06DC78 8006D078 0C0182C5 */ jal func_80060B14
/* 06DC7C 8006D07C AFAE0010 */ sw $t6, 0x10($sp)
/* 06DC80 8006D080 10000041 */ b .L8006D188
/* 06DC84 8006D084 8FBF001C */ lw $ra, 0x1c($sp)
.L8006D088:
/* 06DC88 8006D088 3C02800E */ lui $v0, %hi(gActiveScreenMode) # $v0, 0x800e
/* 06DC8C 8006D08C 8C42C52C */ lw $v0, %lo(gActiveScreenMode)($v0)
/* 06DC90 8006D090 5040000A */ beql $v0, $zero, .L8006D0BC
/* 06DC94 8006D094 3C020400 */ lui $v0, 0x400
/* 06DC98 8006D098 10470021 */ beq $v0, $a3, .L8006D120
/* 06DC9C 8006D09C 24010002 */ li $at, 2
/* 06DCA0 8006D0A0 1041001F */ beq $v0, $at, .L8006D120
/* 06DCA4 8006D0A4 24010003 */ li $at, 3
/* 06DCA8 8006D0A8 1041001D */ beq $v0, $at, .L8006D120
/* 06DCAC 8006D0AC 00000000 */ nop
/* 06DCB0 8006D0B0 10000035 */ b .L8006D188
/* 06DCB4 8006D0B4 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DCB8 8006D0B8 3C020400 */ lui $v0, 0x400
.L8006D0BC:
/* 06DCBC 8006D0BC 00627824 */ and $t7, $v1, $v0
/* 06DCC0 8006D0C0 104F0030 */ beq $v0, $t7, .L8006D184
/* 06DCC4 8006D0C4 30780400 */ andi $t8, $v1, 0x400
/* 06DCC8 8006D0C8 24010400 */ li $at, 1024
/* 06DCCC 8006D0CC 1301002D */ beq $t8, $at, .L8006D184
/* 06DCD0 8006D0D0 3C020100 */ lui $v0, 0x100
/* 06DCD4 8006D0D4 0062C824 */ and $t9, $v1, $v0
/* 06DCD8 8006D0D8 5059002B */ beql $v0, $t9, .L8006D188
/* 06DCDC 8006D0DC 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DCE0 8006D0E0 848200CA */ lh $v0, 0xca($a0)
/* 06DCE4 8006D0E4 24010002 */ li $at, 2
/* 06DCE8 8006D0E8 30480002 */ andi $t0, $v0, 2
/* 06DCEC 8006D0EC 11010025 */ beq $t0, $at, .L8006D184
/* 06DCF0 8006D0F0 30490010 */ andi $t1, $v0, 0x10
/* 06DCF4 8006D0F4 24010010 */ li $at, 16
/* 06DCF8 8006D0F8 11210022 */ beq $t1, $at, .L8006D184
/* 06DCFC 8006D0FC 304A0100 */ andi $t2, $v0, 0x100
/* 06DD00 8006D100 15400020 */ bnez $t2, .L8006D184
/* 06DD04 8006D104 8FA60020 */ lw $a2, 0x20($sp)
/* 06DD08 8006D108 83AB0037 */ lb $t3, 0x37($sp)
/* 06DD0C 8006D10C 83A70033 */ lb $a3, 0x33($sp)
/* 06DD10 8006D110 0C018141 */ jal func_80060504
/* 06DD14 8006D114 AFAB0010 */ sw $t3, 0x10($sp)
/* 06DD18 8006D118 1000001B */ b .L8006D188
/* 06DD1C 8006D11C 8FBF001C */ lw $ra, 0x1c($sp)
.L8006D120:
/* 06DD20 8006D120 10C00018 */ beqz $a2, .L8006D184
/* 06DD24 8006D124 3C020400 */ lui $v0, 0x400
/* 06DD28 8006D128 00626024 */ and $t4, $v1, $v0
/* 06DD2C 8006D12C 104C0015 */ beq $v0, $t4, .L8006D184
/* 06DD30 8006D130 306D0400 */ andi $t5, $v1, 0x400
/* 06DD34 8006D134 24010400 */ li $at, 1024
/* 06DD38 8006D138 11A10012 */ beq $t5, $at, .L8006D184
/* 06DD3C 8006D13C 3C020100 */ lui $v0, 0x100
/* 06DD40 8006D140 00627024 */ and $t6, $v1, $v0
/* 06DD44 8006D144 504E0010 */ beql $v0, $t6, .L8006D188
/* 06DD48 8006D148 8FBF001C */ lw $ra, 0x1c($sp)
/* 06DD4C 8006D14C 848200CA */ lh $v0, 0xca($a0)
/* 06DD50 8006D150 24010002 */ li $at, 2
/* 06DD54 8006D154 304F0002 */ andi $t7, $v0, 2
/* 06DD58 8006D158 11E1000A */ beq $t7, $at, .L8006D184
/* 06DD5C 8006D15C 30580010 */ andi $t8, $v0, 0x10
/* 06DD60 8006D160 24010010 */ li $at, 16
/* 06DD64 8006D164 13010007 */ beq $t8, $at, .L8006D184
/* 06DD68 8006D168 30590100 */ andi $t9, $v0, 0x100
/* 06DD6C 8006D16C 17200005 */ bnez $t9, .L8006D184
/* 06DD70 8006D170 8FA60020 */ lw $a2, 0x20($sp)
/* 06DD74 8006D174 83A80037 */ lb $t0, 0x37($sp)
/* 06DD78 8006D178 83A70033 */ lb $a3, 0x33($sp)
/* 06DD7C 8006D17C 0C018141 */ jal func_80060504
/* 06DD80 8006D180 AFA80010 */ sw $t0, 0x10($sp)
.L8006D184:
glabel L8006D184
/* 06DD84 8006D184 8FBF001C */ lw $ra, 0x1c($sp)
.L8006D188:
/* 06DD88 8006D188 27BD0028 */ addiu $sp, $sp, 0x28
/* 06DD8C 8006D18C 03E00008 */ jr $ra
/* 06DD90 8006D190 00000000 */ nop
@@ -1,674 +0,0 @@
.section .late_rodata
glabel jpt_800F109C
.word L8009D06C, L8009D07C, L8009D08C, L8009D09C
.word L8009D0AC, L8009D0AC, L8009D0AC, L8009D0AC
.word L8009D0AC, L8009D0AC, L8009D07C, L8009D08C
.word L8009D09C, L8009D0AC, L8009D0AC, L8009D0AC
.word L8009D0AC, L8009D0AC, L8009D0AC, L8009D0AC
.word L8009D09C, L8009D0AC, L8009D0AC, L8009D0AC
.word L8009D0AC, L8009D0AC, L8009D0AC, L8009D0AC
.word L8009D0AC, L8009D0AC, L8009D07C, L8009D08C
.word L8009D09C
glabel jpt_800F1120
.word L8009D0FC, L8009D11C, L8009D138, L8009D154
.word L8009D170
glabel jpt_800F1134
.word L8009D1DC, L8009D214, L8009D22C, L8009D4D8
.word L8009D50C
glabel jpt_800F1148
.word L8009D280, L8009D2C8, L8009D318, L8009D364
.word L8009D3C4, L8009D414
.section .text
glabel func_8009CE64
/* 09DA64 8009CE64 3C02800E */ lui $v0, %hi(gGamestate) # $v0, 0x800e
/* 09DA68 8009CE68 8C42C50C */ lw $v0, %lo(gGamestate)($v0)
/* 09DA6C 8009CE6C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 09DA70 8009CE70 24080005 */ li $t0, 5
/* 09DA74 8009CE74 AFBF0014 */ sw $ra, 0x14($sp)
/* 09DA78 8009CE78 15020026 */ bne $t0, $v0, .L8009CF14
/* 09DA7C 8009CE7C 00002825 */ move $a1, $zero
/* 09DA80 8009CE80 3C03800E */ lui $v1, %hi(gCCSelection) # $v1, 0x800e
/* 09DA84 8009CE84 8C63C548 */ lw $v1, %lo(gCCSelection)($v1)
/* 09DA88 8009CE88 24060002 */ li $a2, 2
/* 09DA8C 8009CE8C 24070003 */ li $a3, 3
/* 09DA90 8009CE90 10660006 */ beq $v1, $a2, .L8009CEAC
/* 09DA94 8009CE94 3C0E8028 */ lui $t6, %hi(D_802874D8+0x1D) # $t6, 0x8028
/* 09DA98 8009CE98 24070003 */ li $a3, 3
/* 09DA9C 8009CE9C 10670003 */ beq $v1, $a3, .L8009CEAC
/* 09DAA0 8009CEA0 00000000 */ nop
/* 09DAA4 8009CEA4 1000000B */ b .L8009CED4
/* 09DAA8 8009CEA8 00000000 */ nop
.L8009CEAC:
/* 09DAAC 8009CEAC 81CE74F5 */ lb $t6, %lo(D_802874D8+0x1D)($t6)
/* 09DAB0 8009CEB0 3C028019 */ lui $v0, %hi(gCupSelection) # $v0, 0x8019
/* 09DAB4 8009CEB4 2442EE09 */ addiu $v0, %lo(gCupSelection) # addiu $v0, $v0, -0x11f7
/* 09DAB8 8009CEB8 29C10003 */ slti $at, $t6, 3
/* 09DABC 8009CEBC 10200005 */ beqz $at, .L8009CED4
/* 09DAC0 8009CEC0 00000000 */ nop
/* 09DAC4 8009CEC4 804F0000 */ lb $t7, ($v0)
/* 09DAC8 8009CEC8 14EF0002 */ bne $a3, $t7, .L8009CED4
/* 09DACC 8009CECC 00000000 */ nop
/* 09DAD0 8009CED0 24050001 */ li $a1, 1
.L8009CED4:
/* 09DAD4 8009CED4 10A00008 */ beqz $a1, .L8009CEF8
/* 09DAD8 8009CED8 3C04800F */ lui $a0, %hi(gMenuSelection) # $a0, 0x800f
/* 09DADC 8009CEDC 24180009 */ li $t8, 9
/* 09DAE0 8009CEE0 3C018028 */ lui $at, %hi(gGotoMenu) # $at, 0x8028
/* 09DAE4 8009CEE4 AC387550 */ sw $t8, %lo(gGotoMenu)($at)
/* 09DAE8 8009CEE8 3C01800E */ lui $at, %hi(gCreditsCourseId) # $at, 0x800e
/* 09DAEC 8009CEEC 24190008 */ li $t9, 8
/* 09DAF0 8009CEF0 1000021E */ b .L8009D76C
/* 09DAF4 8009CEF4 A439C644 */ sh $t9, %lo(gCreditsCourseId)($at)
.L8009CEF8:
/* 09DAF8 8009CEF8 24050001 */ li $a1, 1
/* 09DAFC 8009CEFC 3C018028 */ lui $at, %hi(gGotoMenu) # $at, 0x8028
/* 09DB00 8009CF00 248486A0 */ addiu $a0, %lo(gMenuSelection) # addiu $a0, $a0, -0x7960
/* 09DB04 8009CF04 AC257550 */ sw $a1, %lo(gGotoMenu)($at)
/* 09DB08 8009CF08 240E000B */ li $t6, 11
/* 09DB0C 8009CF0C 10000217 */ b .L8009D76C
/* 09DB10 8009CF10 AC8E0000 */ sw $t6, ($a0)
.L8009CF14:
/* 09DB14 8009CF14 24090004 */ li $t1, 4
/* 09DB18 8009CF18 152200A0 */ bne $t1, $v0, .L8009D19C
/* 09DB1C 8009CF1C 3C018019 */ lui $at, %hi(D_8018E7AC)
/* 09DB20 8009CF20 3C0F8019 */ lui $t7, %hi(D_8018E7AC) # $t7, 0x8019
/* 09DB24 8009CF24 25EFE7AC */ addiu $t7, %lo(D_8018E7AC) # addiu $t7, $t7, -0x1854
/* 09DB28 8009CF28 008F1021 */ addu $v0, $a0, $t7
/* 09DB2C 8009CF2C 80580000 */ lb $t8, ($v0)
/* 09DB30 8009CF30 24060002 */ li $a2, 2
/* 09DB34 8009CF34 3C198019 */ lui $t9, %hi(D_8018E7B0) # $t9, 0x8019
/* 09DB38 8009CF38 14D8020C */ bne $a2, $t8, .L8009D76C
/* 09DB3C 8009CF3C 2739E7B0 */ addiu $t9, %lo(D_8018E7B0) # addiu $t9, $t9, -0x1850
/* 09DB40 8009CF40 10590003 */ beq $v0, $t9, .L8009CF50
/* 09DB44 8009CF44 240400B0 */ li $a0, 176
/* 09DB48 8009CF48 10000208 */ b .L8009D76C
/* 09DB4C 8009CF4C A0480000 */ sb $t0, ($v0)
.L8009CF50:
/* 09DB50 8009CF50 AFA20018 */ sw $v0, 0x18($sp)
/* 09DB54 8009CF54 0C02ABCC */ jal find_8018D9E0_entry
/* 09DB58 8009CF58 AFA50028 */ sw $a1, 0x28($sp)
/* 09DB5C 8009CF5C 1040001D */ beqz $v0, .L8009CFD4
/* 09DB60 8009CF60 8FA50028 */ lw $a1, 0x28($sp)
/* 09DB64 8009CF64 8C430004 */ lw $v1, 4($v0)
/* 09DB68 8009CF68 2401000A */ li $at, 10
/* 09DB6C 8009CF6C 10610009 */ beq $v1, $at, .L8009CF94
/* 09DB70 8009CF70 2401000B */ li $at, 11
/* 09DB74 8009CF74 1061000B */ beq $v1, $at, .L8009CFA4
/* 09DB78 8009CF78 2401000C */ li $at, 12
/* 09DB7C 8009CF7C 1061000D */ beq $v1, $at, .L8009CFB4
/* 09DB80 8009CF80 2401000D */ li $at, 13
/* 09DB84 8009CF84 1061000F */ beq $v1, $at, .L8009CFC4
/* 09DB88 8009CF88 00000000 */ nop
/* 09DB8C 8009CF8C 1000000D */ b .L8009CFC4
/* 09DB90 8009CF90 00000000 */ nop
.L8009CF94:
/* 09DB94 8009CF94 0C0A40EC */ jal func_802903B0
/* 09DB98 8009CF98 00000000 */ nop
/* 09DB9C 8009CF9C 100001F4 */ b .L8009D770
/* 09DBA0 8009CFA0 8FBF0014 */ lw $ra, 0x14($sp)
.L8009CFA4:
/* 09DBA4 8009CFA4 0C0A40E2 */ jal func_80290388
/* 09DBA8 8009CFA8 00000000 */ nop
/* 09DBAC 8009CFAC 100001F0 */ b .L8009D770
/* 09DBB0 8009CFB0 8FBF0014 */ lw $ra, 0x14($sp)
.L8009CFB4:
/* 09DBB4 8009CFB4 0C0A40D8 */ jal func_80290360
/* 09DBB8 8009CFB8 00000000 */ nop
/* 09DBBC 8009CFBC 100001EC */ b .L8009D770
/* 09DBC0 8009CFC0 8FBF0014 */ lw $ra, 0x14($sp)
.L8009CFC4:
/* 09DBC4 8009CFC4 0C0A40CE */ jal func_80290338
/* 09DBC8 8009CFC8 00000000 */ nop
/* 09DBCC 8009CFCC 100001E8 */ b .L8009D770
/* 09DBD0 8009CFD0 8FBF0014 */ lw $ra, 0x14($sp)
.L8009CFD4:
/* 09DBD4 8009CFD4 240400AC */ li $a0, 172
/* 09DBD8 8009CFD8 0C02ABCC */ jal find_8018D9E0_entry
/* 09DBDC 8009CFDC AFA50028 */ sw $a1, 0x28($sp)
/* 09DBE0 8009CFE0 10400013 */ beqz $v0, .L8009D030
/* 09DBE4 8009CFE4 8FA50028 */ lw $a1, 0x28($sp)
/* 09DBE8 8009CFE8 8C430004 */ lw $v1, 4($v0)
/* 09DBEC 8009CFEC 2401000B */ li $at, 11
/* 09DBF0 8009CFF0 10610005 */ beq $v1, $at, .L8009D008
/* 09DBF4 8009CFF4 2401000C */ li $at, 12
/* 09DBF8 8009CFF8 10610009 */ beq $v1, $at, .L8009D020
/* 09DBFC 8009CFFC 00000000 */ nop
/* 09DC00 8009D000 10000007 */ b .L8009D020
/* 09DC04 8009D004 00000000 */ nop
.L8009D008:
/* 09DC08 8009D008 0C0A40EC */ jal func_802903B0
/* 09DC0C 8009D00C 00000000 */ nop
/* 09DC10 8009D010 24050001 */ li $a1, 1
/* 09DC14 8009D014 3C018016 */ lui $at, %hi(D_8016556E) # $at, 0x8016
/* 09DC18 8009D018 100001D4 */ b .L8009D76C
/* 09DC1C 8009D01C A425556E */ sh $a1, %lo(D_8016556E)($at)
.L8009D020:
/* 09DC20 8009D020 0C0A40CE */ jal func_80290338
/* 09DC24 8009D024 00000000 */ nop
/* 09DC28 8009D028 100001D1 */ b .L8009D770
/* 09DC2C 8009D02C 8FBF0014 */ lw $ra, 0x14($sp)
.L8009D030:
/* 09DC30 8009D030 240400C7 */ li $a0, 199
/* 09DC34 8009D034 0C02ABCC */ jal find_8018D9E0_entry
/* 09DC38 8009D038 AFA50028 */ sw $a1, 0x28($sp)
/* 09DC3C 8009D03C 10400021 */ beqz $v0, .L8009D0C4
/* 09DC40 8009D040 8FA50028 */ lw $a1, 0x28($sp)
/* 09DC44 8009D044 8C4E0004 */ lw $t6, 4($v0)
/* 09DC48 8009D048 25CFFFF4 */ addiu $t7, $t6, -0xc
/* 09DC4C 8009D04C 2DE10021 */ sltiu $at, $t7, 0x21
/* 09DC50 8009D050 10200016 */ beqz $at, .L8009D0AC
/* 09DC54 8009D054 000F7880 */ sll $t7, $t7, 2
/* 09DC58 8009D058 3C01800F */ lui $at, %hi(jpt_800F109C)
/* 09DC5C 8009D05C 002F0821 */ addu $at, $at, $t7
/* 09DC60 8009D060 8C2F109C */ lw $t7, %lo(jpt_800F109C)($at)
/* 09DC64 8009D064 01E00008 */ jr $t7
/* 09DC68 8009D068 00000000 */ nop
glabel L8009D06C
/* 09DC6C 8009D06C 0C0A40EC */ jal func_802903B0
/* 09DC70 8009D070 00000000 */ nop
/* 09DC74 8009D074 10000010 */ b .L8009D0B8
/* 09DC78 8009D078 24050001 */ li $a1, 1
glabel L8009D07C
/* 09DC7C 8009D07C 0C0A40E2 */ jal func_80290388
/* 09DC80 8009D080 00000000 */ nop
/* 09DC84 8009D084 1000000C */ b .L8009D0B8
/* 09DC88 8009D088 24050001 */ li $a1, 1
glabel L8009D08C
/* 09DC8C 8009D08C 0C0A40D8 */ jal func_80290360
/* 09DC90 8009D090 00000000 */ nop
/* 09DC94 8009D094 10000008 */ b .L8009D0B8
/* 09DC98 8009D098 24050001 */ li $a1, 1
glabel L8009D09C
/* 09DC9C 8009D09C 0C0A40CE */ jal func_80290338
/* 09DCA0 8009D0A0 00000000 */ nop
/* 09DCA4 8009D0A4 10000004 */ b .L8009D0B8
/* 09DCA8 8009D0A8 24050001 */ li $a1, 1
.L8009D0AC:
glabel L8009D0AC
/* 09DCAC 8009D0AC 8FB90018 */ lw $t9, 0x18($sp)
/* 09DCB0 8009D0B0 24180005 */ li $t8, 5
/* 09DCB4 8009D0B4 A3380000 */ sb $t8, ($t9)
.L8009D0B8:
/* 09DCB8 8009D0B8 10A00002 */ beqz $a1, .L8009D0C4
/* 09DCBC 8009D0BC 3C01800E */ lui $at, %hi(gIsGamePaused) # $at, 0x800e
/* 09DCC0 8009D0C0 A420C5FC */ sh $zero, %lo(gIsGamePaused)($at)
.L8009D0C4:
/* 09DCC4 8009D0C4 0C02ABCC */ jal find_8018D9E0_entry
/* 09DCC8 8009D0C8 240400BD */ li $a0, 189
/* 09DCCC 8009D0CC 10400030 */ beqz $v0, .L8009D190
/* 09DCD0 8009D0D0 8FAF0018 */ lw $t7, 0x18($sp)
/* 09DCD4 8009D0D4 8C4E0004 */ lw $t6, 4($v0)
/* 09DCD8 8009D0D8 25CFFFF5 */ addiu $t7, $t6, -0xb
/* 09DCDC 8009D0DC 2DE10005 */ sltiu $at, $t7, 5
/* 09DCE0 8009D0E0 102001A2 */ beqz $at, .L8009D76C
/* 09DCE4 8009D0E4 000F7880 */ sll $t7, $t7, 2
/* 09DCE8 8009D0E8 3C01800F */ lui $at, %hi(jpt_800F1120)
/* 09DCEC 8009D0EC 002F0821 */ addu $at, $at, $t7
/* 09DCF0 8009D0F0 8C2F1120 */ lw $t7, %lo(jpt_800F1120)($at)
/* 09DCF4 8009D0F4 01E00008 */ jr $t7
/* 09DCF8 8009D0F8 00000000 */ nop
glabel L8009D0FC
/* 09DCFC 8009D0FC 24180001 */ li $t8, 1
/* 09DD00 8009D100 3C018016 */ lui $at, %hi(D_8015F892) # $at, 0x8016
/* 09DD04 8009D104 A438F892 */ sh $t8, %lo(D_8015F892)($at)
/* 09DD08 8009D108 3C018016 */ lui $at, %hi(D_8015F890) # $at, 0x8016
/* 09DD0C 8009D10C 0C0A40EC */ jal func_802903B0
/* 09DD10 8009D110 A420F890 */ sh $zero, %lo(D_8015F890)($at)
/* 09DD14 8009D114 10000196 */ b .L8009D770
/* 09DD18 8009D118 8FBF0014 */ lw $ra, 0x14($sp)
glabel L8009D11C
/* 09DD1C 8009D11C 3C018016 */ lui $at, %hi(D_8015F892) # $at, 0x8016
/* 09DD20 8009D120 A420F892 */ sh $zero, %lo(D_8015F892)($at)
/* 09DD24 8009D124 3C018016 */ lui $at, %hi(D_8015F890) # $at, 0x8016
/* 09DD28 8009D128 0C0A40E2 */ jal func_80290388
/* 09DD2C 8009D12C A420F890 */ sh $zero, %lo(D_8015F890)($at)
/* 09DD30 8009D130 1000018F */ b .L8009D770
/* 09DD34 8009D134 8FBF0014 */ lw $ra, 0x14($sp)
glabel L8009D138
/* 09DD38 8009D138 3C018016 */ lui $at, %hi(D_8015F892) # $at, 0x8016
/* 09DD3C 8009D13C A420F892 */ sh $zero, %lo(D_8015F892)($at)
/* 09DD40 8009D140 3C018016 */ lui $at, %hi(D_8015F890) # $at, 0x8016
/* 09DD44 8009D144 0C0A40D8 */ jal func_80290360
/* 09DD48 8009D148 A420F890 */ sh $zero, %lo(D_8015F890)($at)
/* 09DD4C 8009D14C 10000188 */ b .L8009D770
/* 09DD50 8009D150 8FBF0014 */ lw $ra, 0x14($sp)
glabel L8009D154
/* 09DD54 8009D154 3C018016 */ lui $at, %hi(D_8015F892) # $at, 0x8016
/* 09DD58 8009D158 A420F892 */ sh $zero, %lo(D_8015F892)($at)
/* 09DD5C 8009D15C 3C018016 */ lui $at, %hi(D_8015F890) # $at, 0x8016
/* 09DD60 8009D160 0C0A40CE */ jal func_80290338
/* 09DD64 8009D164 A420F890 */ sh $zero, %lo(D_8015F890)($at)
/* 09DD68 8009D168 10000181 */ b .L8009D770
/* 09DD6C 8009D16C 8FBF0014 */ lw $ra, 0x14($sp)
glabel L8009D170
/* 09DD70 8009D170 3C018016 */ lui $at, %hi(D_8015F892) # $at, 0x8016
/* 09DD74 8009D174 A420F892 */ sh $zero, %lo(D_8015F892)($at)
/* 09DD78 8009D178 3C018016 */ lui $at, %hi(D_8015F890) # $at, 0x8016
/* 09DD7C 8009D17C 24190001 */ li $t9, 1
/* 09DD80 8009D180 0C0A40EC */ jal func_802903B0
/* 09DD84 8009D184 A439F890 */ sh $t9, %lo(D_8015F890)($at)
/* 09DD88 8009D188 10000179 */ b .L8009D770
/* 09DD8C 8009D18C 8FBF0014 */ lw $ra, 0x14($sp)
.L8009D190:
/* 09DD90 8009D190 240E0005 */ li $t6, 5
/* 09DD94 8009D194 10000175 */ b .L8009D76C
/* 09DD98 8009D198 A1EE0000 */ sb $t6, ($t7)
.L8009D19C:
/* 09DD9C 8009D19C 3C188019 */ lui $t8, %hi(gDebugMenuSelection) # $t8, 0x8019
/* 09DDA0 8009D1A0 8318EDEF */ lb $t8, %lo(gDebugMenuSelection)($t8)
/* 09DDA4 8009D1A4 00240821 */ addu $at, $at, $a0
/* 09DDA8 8009D1A8 A020E7AC */ sb $zero, %lo(D_8018E7AC)($at)
/* 09DDAC 8009D1AC 24010040 */ li $at, 64
/* 09DDB0 8009D1B0 130100FA */ beq $t8, $at, .L8009D59C
/* 09DDB4 8009D1B4 3C198019 */ lui $t9, %hi(D_8018EDE0) # $t9, 0x8019
/* 09DDB8 8009D1B8 8F39EDE0 */ lw $t9, %lo(D_8018EDE0)($t9)
/* 09DDBC 8009D1BC 2F210005 */ sltiu $at, $t9, 5
/* 09DDC0 8009D1C0 102000DE */ beqz $at, .L8009D53C
/* 09DDC4 8009D1C4 0019C880 */ sll $t9, $t9, 2
/* 09DDC8 8009D1C8 3C01800F */ lui $at, %hi(jpt_800F1134)
/* 09DDCC 8009D1CC 00390821 */ addu $at, $at, $t9
/* 09DDD0 8009D1D0 8C391134 */ lw $t9, %lo(jpt_800F1134)($at)
/* 09DDD4 8009D1D4 03200008 */ jr $t9
/* 09DDD8 8009D1D8 00000000 */ nop
glabel L8009D1DC
/* 09DDDC 8009D1DC 3C04800F */ lui $a0, %hi(gMenuSelection) # $a0, 0x800f
/* 09DDE0 8009D1E0 248486A0 */ addiu $a0, %lo(gMenuSelection) # addiu $a0, $a0, -0x7960
/* 09DDE4 8009D1E4 8C820000 */ lw $v0, ($a0)
/* 09DDE8 8009D1E8 24010008 */ li $at, 8
/* 09DDEC 8009D1EC 24060002 */ li $a2, 2
/* 09DDF0 8009D1F0 14410006 */ bne $v0, $at, .L8009D20C
/* 09DDF4 8009D1F4 244F0001 */ addiu $t7, $v0, 1
/* 09DDF8 8009D1F8 240E000A */ li $t6, 10
/* 09DDFC 8009D1FC AC8E0000 */ sw $t6, ($a0)
/* 09DE00 8009D200 3C01800F */ lui $at, %hi(D_800E86A4) # $at, 0x800f
/* 09DE04 8009D204 100000CD */ b .L8009D53C
/* 09DE08 8009D208 AC2686A4 */ sw $a2, %lo(D_800E86A4)($at)
.L8009D20C:
/* 09DE0C 8009D20C 100000CB */ b .L8009D53C
/* 09DE10 8009D210 AC8F0000 */ sw $t7, ($a0)
glabel L8009D214
/* 09DE14 8009D214 3C04800F */ lui $a0, %hi(gMenuSelection) # $a0, 0x800f
/* 09DE18 8009D218 248486A0 */ addiu $a0, %lo(gMenuSelection) # addiu $a0, $a0, -0x7960
/* 09DE1C 8009D21C 8C980000 */ lw $t8, ($a0)
/* 09DE20 8009D220 2719FFFF */ addiu $t9, $t8, -1
/* 09DE24 8009D224 100000C5 */ b .L8009D53C
/* 09DE28 8009D228 AC990000 */ sw $t9, ($a0)
glabel L8009D22C
/* 09DE2C 8009D22C 240E0001 */ li $t6, 1
/* 09DE30 8009D230 3C01800E */ lui $at, %hi(gDemoMode) # $at, 0x800e
/* 09DE34 8009D234 A42EC51C */ sh $t6, %lo(gDemoMode)($at)
/* 09DE38 8009D238 24050001 */ li $a1, 1
/* 09DE3C 8009D23C 3C018019 */ lui $at, %hi(D_8018EE08) # $at, 0x8019
/* 09DE40 8009D240 A025EE08 */ sb $a1, %lo(D_8018EE08)($at)
/* 09DE44 8009D244 3C01800E */ lui $at, %hi(gGamestateNext) # $at, 0x800e
/* 09DE48 8009D248 AC29C524 */ sw $t1, %lo(gGamestateNext)($at)
/* 09DE4C 8009D24C 3C04800F */ lui $a0, %hi(gNextDemoId) # $a0, 0x800f
/* 09DE50 8009D250 3C01800E */ lui $at, %hi(gCCSelection) # $at, 0x800e
/* 09DE54 8009D254 248486BC */ addiu $a0, %lo(gNextDemoId) # addiu $a0, $a0, -0x7944
/* 09DE58 8009D258 AC25C548 */ sw $a1, %lo(gCCSelection)($at)
/* 09DE5C 8009D25C 80830000 */ lb $v1, ($a0)
/* 09DE60 8009D260 2C610006 */ sltiu $at, $v1, 6
/* 09DE64 8009D264 10200084 */ beqz $at, .L8009D478
/* 09DE68 8009D268 00037880 */ sll $t7, $v1, 2
/* 09DE6C 8009D26C 3C01800F */ lui $at, %hi(jpt_800F1148)
/* 09DE70 8009D270 002F0821 */ addu $at, $at, $t7
/* 09DE74 8009D274 8C2F1148 */ lw $t7, %lo(jpt_800F1148)($at)
/* 09DE78 8009D278 01E00008 */ jr $t7
/* 09DE7C 8009D27C 00000000 */ nop
glabel L8009D280
/* 09DE80 8009D280 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09DE84 8009D284 A420C5A0 */ sh $zero, %lo(gCurrentCourseId)($at)
/* 09DE88 8009D288 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09DE8C 8009D28C 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09DE90 8009D290 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09DE94 8009D294 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09DE98 8009D298 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09DE9C 8009D29C 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09DEA0 8009D2A0 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09DEA4 8009D2A4 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09DEA8 8009D2A8 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09DEAC 8009D2AC 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09DEB0 8009D2B0 ADA00000 */ sw $zero, ($t5)
/* 09DEB4 8009D2B4 AD450000 */ sw $a1, ($t2)
/* 09DEB8 8009D2B8 A1650000 */ sb $a1, ($t3)
/* 09DEBC 8009D2BC A0400000 */ sb $zero, ($v0)
/* 09DEC0 8009D2C0 1000006D */ b .L8009D478
/* 09DEC4 8009D2C4 AD800000 */ sw $zero, ($t4)
glabel L8009D2C8
/* 09DEC8 8009D2C8 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09DECC 8009D2CC A425C5A0 */ sh $a1, %lo(gCurrentCourseId)($at)
/* 09DED0 8009D2D0 24060002 */ li $a2, 2
/* 09DED4 8009D2D4 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09DED8 8009D2D8 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09DEDC 8009D2DC 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09DEE0 8009D2E0 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09DEE4 8009D2E4 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09DEE8 8009D2E8 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09DEEC 8009D2EC 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09DEF0 8009D2F0 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09DEF4 8009D2F4 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09DEF8 8009D2F8 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09DEFC 8009D2FC ADA50000 */ sw $a1, ($t5)
/* 09DF00 8009D300 AD460000 */ sw $a2, ($t2)
/* 09DF04 8009D304 A1660000 */ sb $a2, ($t3)
/* 09DF08 8009D308 A0460000 */ sb $a2, ($v0)
/* 09DF0C 8009D30C A0490001 */ sb $t1, 1($v0)
/* 09DF10 8009D310 10000059 */ b .L8009D478
/* 09DF14 8009D314 AD860000 */ sw $a2, ($t4)
glabel L8009D318
/* 09DF18 8009D318 2418000B */ li $t8, 11
/* 09DF1C 8009D31C 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09DF20 8009D320 A438C5A0 */ sh $t8, %lo(gCurrentCourseId)($at)
/* 09DF24 8009D324 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09DF28 8009D328 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09DF2C 8009D32C 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09DF30 8009D330 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09DF34 8009D334 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09DF38 8009D338 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09DF3C 8009D33C 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09DF40 8009D340 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09DF44 8009D344 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09DF48 8009D348 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09DF4C 8009D34C ADA00000 */ sw $zero, ($t5)
/* 09DF50 8009D350 AD450000 */ sw $a1, ($t2)
/* 09DF54 8009D354 A1650000 */ sb $a1, ($t3)
/* 09DF58 8009D358 A0450000 */ sb $a1, ($v0)
/* 09DF5C 8009D35C 10000046 */ b .L8009D478
/* 09DF60 8009D360 AD800000 */ sw $zero, ($t4)
glabel L8009D364
/* 09DF64 8009D364 2419000E */ li $t9, 14
/* 09DF68 8009D368 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09DF6C 8009D36C A439C5A0 */ sh $t9, %lo(gCurrentCourseId)($at)
/* 09DF70 8009D370 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09DF74 8009D374 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09DF78 8009D378 24070003 */ li $a3, 3
/* 09DF7C 8009D37C 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09DF80 8009D380 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09DF84 8009D384 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09DF88 8009D388 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09DF8C 8009D38C 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09DF90 8009D390 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09DF94 8009D394 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09DF98 8009D398 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09DF9C 8009D39C 24060002 */ li $a2, 2
/* 09DFA0 8009D3A0 240E0007 */ li $t6, 7
/* 09DFA4 8009D3A4 ADA70000 */ sw $a3, ($t5)
/* 09DFA8 8009D3A8 AD470000 */ sw $a3, ($t2)
/* 09DFAC 8009D3AC A1670000 */ sb $a3, ($t3)
/* 09DFB0 8009D3B0 A0480000 */ sb $t0, ($v0)
/* 09DFB4 8009D3B4 A0460001 */ sb $a2, 1($v0)
/* 09DFB8 8009D3B8 A04E0002 */ sb $t6, 2($v0)
/* 09DFBC 8009D3BC 1000002E */ b .L8009D478
/* 09DFC0 8009D3C0 AD860000 */ sw $a2, ($t4)
glabel L8009D3C4
/* 09DFC4 8009D3C4 24060002 */ li $a2, 2
/* 09DFC8 8009D3C8 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09DFCC 8009D3CC A426C5A0 */ sh $a2, %lo(gCurrentCourseId)($at)
/* 09DFD0 8009D3D0 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09DFD4 8009D3D4 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09DFD8 8009D3D8 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09DFDC 8009D3DC 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09DFE0 8009D3E0 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09DFE4 8009D3E4 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09DFE8 8009D3E8 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09DFEC 8009D3EC 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09DFF0 8009D3F0 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09DFF4 8009D3F4 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09DFF8 8009D3F8 240F0007 */ li $t7, 7
/* 09DFFC 8009D3FC ADA00000 */ sw $zero, ($t5)
/* 09E000 8009D400 AD450000 */ sw $a1, ($t2)
/* 09E004 8009D404 A1650000 */ sb $a1, ($t3)
/* 09E008 8009D408 A04F0000 */ sb $t7, ($v0)
/* 09E00C 8009D40C 1000001A */ b .L8009D478
/* 09E010 8009D410 AD800000 */ sw $zero, ($t4)
glabel L8009D414
/* 09E014 8009D414 2418000C */ li $t8, 12
/* 09E018 8009D418 3C01800E */ lui $at, %hi(gCurrentCourseId) # $at, 0x800e
/* 09E01C 8009D41C A438C5A0 */ sh $t8, %lo(gCurrentCourseId)($at)
/* 09E020 8009D420 3C02800F */ lui $v0, %hi(gCharacterSelections) # $v0, 0x800f
/* 09E024 8009D424 244286A8 */ addiu $v0, %lo(gCharacterSelections) # addiu $v0, $v0, -0x7958
/* 09E028 8009D428 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09E02C 8009D42C 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09E030 8009D430 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09E034 8009D434 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09E038 8009D438 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09E03C 8009D43C 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09E040 8009D440 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09E044 8009D444 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09E048 8009D448 24060002 */ li $a2, 2
/* 09E04C 8009D44C 24070003 */ li $a3, 3
/* 09E050 8009D450 24080006 */ li $t0, 6
/* 09E054 8009D454 ADA70000 */ sw $a3, ($t5)
/* 09E058 8009D458 AD490000 */ sw $t1, ($t2)
/* 09E05C 8009D45C A1690000 */ sb $t1, ($t3)
/* 09E060 8009D460 A0400000 */ sb $zero, ($v0)
/* 09E064 8009D464 A0450001 */ sb $a1, 1($v0)
/* 09E068 8009D468 A0480002 */ sb $t0, 2($v0)
/* 09E06C 8009D46C A0470003 */ sb $a3, 3($v0)
/* 09E070 8009D470 10000001 */ b .L8009D478
/* 09E074 8009D474 AD860000 */ sw $a2, ($t4)
.L8009D478:
/* 09E078 8009D478 24790001 */ addiu $t9, $v1, 1
/* 09E07C 8009D47C A0990000 */ sb $t9, ($a0)
/* 09E080 8009D480 808E0000 */ lb $t6, ($a0)
/* 09E084 8009D484 3C028019 */ lui $v0, %hi(gCupSelection) # $v0, 0x8019
/* 09E088 8009D488 29C10006 */ slti $at, $t6, 6
/* 09E08C 8009D48C 14200002 */ bnez $at, .L8009D498
/* 09E090 8009D490 00000000 */ nop
/* 09E094 8009D494 A0800000 */ sb $zero, ($a0)
.L8009D498:
/* 09E098 8009D498 3C04800E */ lui $a0, %hi(gCurrentCourseId) # $a0, 0x800e
/* 09E09C 8009D49C 8484C5A0 */ lh $a0, %lo(gCurrentCourseId)($a0)
/* 09E0A0 8009D4A0 3C0F800E */ lui $t7, %hi(gCupSelectionByCourseId)
/* 09E0A4 8009D4A4 2442EE09 */ addiu $v0, %lo(gCupSelection) # addiu $v0, $v0, -0x11f7
/* 09E0A8 8009D4A8 01E47821 */ addu $t7, $t7, $a0
/* 09E0AC 8009D4AC 81EF7664 */ lb $t7, %lo(gCupSelectionByCourseId)($t7)
/* 09E0B0 8009D4B0 3C19800F */ lui $t9, %hi(gPerCupIndexByCourseId)
/* 09E0B4 8009D4B4 3C01800E */ lui $at, %hi(D_800DC540) # $at, 0x800e
/* 09E0B8 8009D4B8 A04F0000 */ sb $t7, ($v0)
/* 09E0BC 8009D4BC 80580000 */ lb $t8, ($v0)
/* 09E0C0 8009D4C0 0324C821 */ addu $t9, $t9, $a0
/* 09E0C4 8009D4C4 8339FD50 */ lb $t9, %lo(gPerCupIndexByCourseId)($t9)
/* 09E0C8 8009D4C8 AC38C540 */ sw $t8, %lo(D_800DC540)($at)
/* 09E0CC 8009D4CC 3C018019 */ lui $at, %hi(gCupCourseSelection) # $at, 0x8019
/* 09E0D0 8009D4D0 1000001A */ b .L8009D53C
/* 09E0D4 8009D4D4 A039EE0B */ sb $t9, %lo(gCupCourseSelection)($at)
glabel L8009D4D8
/* 09E0D8 8009D4D8 3C04800F */ lui $a0, %hi(gMenuSelection) # $a0, 0x800f
/* 09E0DC 8009D4DC 248486A0 */ addiu $a0, %lo(gMenuSelection) # addiu $a0, $a0, -0x7960
/* 09E0E0 8009D4E0 8C830000 */ lw $v1, ($a0)
/* 09E0E4 8009D4E4 24080006 */ li $t0, 6
/* 09E0E8 8009D4E8 2401000B */ li $at, 11
/* 09E0EC 8009D4EC 10680005 */ beq $v1, $t0, .L8009D504
/* 09E0F0 8009D4F0 240E000B */ li $t6, 11
/* 09E0F4 8009D4F4 14610011 */ bne $v1, $at, .L8009D53C
/* 09E0F8 8009D4F8 00000000 */ nop
/* 09E0FC 8009D4FC 1000000F */ b .L8009D53C
/* 09E100 8009D500 AC880000 */ sw $t0, ($a0)
.L8009D504:
/* 09E104 8009D504 1000000D */ b .L8009D53C
/* 09E108 8009D508 AC8E0000 */ sw $t6, ($a0)
glabel L8009D50C
/* 09E10C 8009D50C 3C04800F */ lui $a0, %hi(gMenuSelection) # $a0, 0x800f
/* 09E110 8009D510 248486A0 */ addiu $a0, %lo(gMenuSelection) # addiu $a0, $a0, -0x7960
/* 09E114 8009D514 8C830000 */ lw $v1, ($a0)
/* 09E118 8009D518 2401000B */ li $at, 11
/* 09E11C 8009D51C 240F000B */ li $t7, 11
/* 09E120 8009D520 50680006 */ beql $v1, $t0, .L8009D53C
/* 09E124 8009D524 AC8F0000 */ sw $t7, ($a0)
/* 09E128 8009D528 14610004 */ bne $v1, $at, .L8009D53C
/* 09E12C 8009D52C 00000000 */ nop
/* 09E130 8009D530 10000002 */ b .L8009D53C
/* 09E134 8009D534 AC880000 */ sw $t0, ($a0)
/* 09E138 8009D538 AC8F0000 */ sw $t7, ($a0)
.L8009D53C:
/* 09E13C 8009D53C 3C18800F */ lui $t8, %hi(D_800E86A4) # $t8, 0x800f
/* 09E140 8009D540 8F1886A4 */ lw $t8, %lo(D_800E86A4)($t8)
/* 09E144 8009D544 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09E148 8009D548 3C02800F */ lui $v0, %hi(gMenuSelection) # $v0, 0x800f
/* 09E14C 8009D54C 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09E150 8009D550 24050001 */ li $a1, 1
/* 09E154 8009D554 17000003 */ bnez $t8, .L8009D564
/* 09E158 8009D558 8C4286A0 */ lw $v0, %lo(gMenuSelection)($v0)
/* 09E15C 8009D55C 3C01800F */ lui $at, %hi(D_800E86A4) # $at, 0x800f
/* 09E160 8009D560 AC2586A4 */ sw $a1, %lo(D_800E86A4)($at)
.L8009D564:
/* 09E164 8009D564 2841000E */ slti $at, $v0, 0xe
/* 09E168 8009D568 14200009 */ bnez $at, .L8009D590
/* 09E16C 8009D56C 3C01800E */ lui $at, %hi(gGamestateNext) # $at, 0x800e
/* 09E170 8009D570 AC29C524 */ sw $t1, %lo(gGamestateNext)($at)
/* 09E174 8009D574 8D990000 */ lw $t9, ($t4)
/* 09E178 8009D578 3C018019 */ lui $at, %hi(D_8018EDFB) # $at, 0x8019
/* 09E17C 8009D57C 14B90002 */ bne $a1, $t9, .L8009D588
/* 09E180 8009D580 00000000 */ nop
/* 09E184 8009D584 A025EDFB */ sb $a1, %lo(D_8018EDFB)($at)
.L8009D588:
/* 09E188 8009D588 0C027387 */ jal func_8009CE1C
/* 09E18C 8009D58C 00000000 */ nop
.L8009D590:
/* 09E190 8009D590 3C018019 */ lui $at, %hi(D_8018EE0C) # $at, 0x8019
/* 09E194 8009D594 10000075 */ b .L8009D76C
/* 09E198 8009D598 A020EE0C */ sb $zero, %lo(D_8018EE0C)($at)
.L8009D59C:
/* 09E19C 8009D59C 3C038019 */ lui $v1, %hi(gDebugGotoScene) # $v1, 0x8019
/* 09E1A0 8009D5A0 8063EDFA */ lb $v1, %lo(gDebugGotoScene)($v1)
/* 09E1A4 8009D5A4 24050001 */ li $a1, 1
/* 09E1A8 8009D5A8 24060002 */ li $a2, 2
/* 09E1AC 8009D5AC 10650008 */ beq $v1, $a1, .L8009D5D0
/* 09E1B0 8009D5B0 3C01800E */ lui $at, %hi(gGamestateNext) # $at, 0x800e
/* 09E1B4 8009D5B4 10660008 */ beq $v1, $a2, .L8009D5D8
/* 09E1B8 8009D5B8 240E0009 */ li $t6, 9
/* 09E1BC 8009D5BC 24070003 */ li $a3, 3
/* 09E1C0 8009D5C0 10670005 */ beq $v1, $a3, .L8009D5D8
/* 09E1C4 8009D5C4 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09E1C8 8009D5C8 10000009 */ b .L8009D5F0
/* 09E1CC 8009D5CC 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
.L8009D5D0:
/* 09E1D0 8009D5D0 1000000E */ b .L8009D60C
/* 09E1D4 8009D5D4 AC28C524 */ sw $t0, %lo(gGamestateNext)($at)
.L8009D5D8:
/* 09E1D8 8009D5D8 3C01800E */ lui $at, %hi(gGamestateNext) # $at, 0x800e
/* 09E1DC 8009D5DC AC2EC524 */ sw $t6, %lo(gGamestateNext)($at)
/* 09E1E0 8009D5E0 3C01800E */ lui $at, %hi(gCreditsCourseId) # $at, 0x800e
/* 09E1E4 8009D5E4 240F0008 */ li $t7, 8
/* 09E1E8 8009D5E8 10000008 */ b .L8009D60C
/* 09E1EC 8009D5EC A42FC644 */ sh $t7, %lo(gCreditsCourseId)($at)
.L8009D5F0:
/* 09E1F0 8009D5F0 3C01800E */ lui $at, %hi(gGamestateNext) # $at, 0x800e
/* 09E1F4 8009D5F4 AC29C524 */ sw $t1, %lo(gGamestateNext)($at)
/* 09E1F8 8009D5F8 8D980000 */ lw $t8, ($t4)
/* 09E1FC 8009D5FC 3C018019 */ lui $at, %hi(D_8018EDFB) # $at, 0x8019
/* 09E200 8009D600 14B80002 */ bne $a1, $t8, .L8009D60C
/* 09E204 8009D604 00000000 */ nop
/* 09E208 8009D608 A025EDFB */ sb $a1, %lo(D_8018EDFB)($at)
.L8009D60C:
/* 09E20C 8009D60C 0C003C49 */ jal func_8000F124
/* 09E210 8009D610 00000000 */ nop
/* 09E214 8009D614 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e
/* 09E218 8009D618 25ADC530 */ addiu $t5, %lo(gScreenModeSelection) # addiu $t5, $t5, -0x3ad0
/* 09E21C 8009D61C 8DB90000 */ lw $t9, ($t5)
/* 09E220 8009D620 24070003 */ li $a3, 3
/* 09E224 8009D624 3C0C800E */ lui $t4, %hi(gModeSelection) # $t4, 0x800e
/* 09E228 8009D628 258CC53C */ addiu $t4, %lo(gModeSelection) # addiu $t4, $t4, -0x3ac4
/* 09E22C 8009D62C 24050001 */ li $a1, 1
/* 09E230 8009D630 14F90007 */ bne $a3, $t9, .L8009D650
/* 09E234 8009D634 24060002 */ li $a2, 2
/* 09E238 8009D638 8D830000 */ lw $v1, ($t4)
/* 09E23C 8009D63C 50600004 */ beql $v1, $zero, .L8009D650
/* 09E240 8009D640 AD860000 */ sw $a2, ($t4)
/* 09E244 8009D644 14650002 */ bne $v1, $a1, .L8009D650
/* 09E248 8009D648 00000000 */ nop
/* 09E24C 8009D64C AD860000 */ sw $a2, ($t4)
.L8009D650:
/* 09E250 8009D650 3C04800E */ lui $a0, %hi(gCurrentCourseId) # $a0, 0x800e
/* 09E254 8009D654 8484C5A0 */ lh $a0, %lo(gCurrentCourseId)($a0)
/* 09E258 8009D658 2401000F */ li $at, 15
/* 09E25C 8009D65C 3C19800E */ lui $t9, %hi(gCupSelectionByCourseId)
/* 09E260 8009D660 1081000A */ beq $a0, $at, .L8009D68C
/* 09E264 8009D664 00801825 */ move $v1, $a0
/* 09E268 8009D668 24010010 */ li $at, 16
/* 09E26C 8009D66C 10610007 */ beq $v1, $at, .L8009D68C
/* 09E270 8009D670 24010011 */ li $at, 17
/* 09E274 8009D674 10610005 */ beq $v1, $at, .L8009D68C
/* 09E278 8009D678 24010013 */ li $at, 19
/* 09E27C 8009D67C 10610003 */ beq $v1, $at, .L8009D68C
/* 09E280 8009D680 00000000 */ nop
/* 09E284 8009D684 1000000D */ b .L8009D6BC
/* 09E288 8009D688 8D820000 */ lw $v0, ($t4)
.L8009D68C:
/* 09E28C 8009D68C 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09E290 8009D690 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09E294 8009D694 8D4E0000 */ lw $t6, ($t2)
/* 09E298 8009D698 3C0B8019 */ lui $t3, %hi(gPlayerCount) # $t3, 0x8019
/* 09E29C 8009D69C AD870000 */ sw $a3, ($t4)
/* 09E2A0 8009D6A0 14AE0010 */ bne $a1, $t6, .L8009D6E4
/* 09E2A4 8009D6A4 256BEDF3 */ addiu $t3, %lo(gPlayerCount) # addiu $t3, $t3, -0x120d
/* 09E2A8 8009D6A8 A1660000 */ sb $a2, ($t3)
/* 09E2AC 8009D6AC 816F0000 */ lb $t7, ($t3)
/* 09E2B0 8009D6B0 ADA50000 */ sw $a1, ($t5)
/* 09E2B4 8009D6B4 1000000B */ b .L8009D6E4
/* 09E2B8 8009D6B8 AD4F0000 */ sw $t7, ($t2)
.L8009D6BC:
/* 09E2BC 8009D6BC 14E20003 */ bne $a3, $v0, .L8009D6CC
/* 09E2C0 8009D6C0 3C0A800E */ lui $t2, %hi(gPlayerCountSelection1) # $t2, 0x800e
/* 09E2C4 8009D6C4 AD800000 */ sw $zero, ($t4)
/* 09E2C8 8009D6C8 00001025 */ move $v0, $zero
.L8009D6CC:
/* 09E2CC 8009D6CC 14C20005 */ bne $a2, $v0, .L8009D6E4
/* 09E2D0 8009D6D0 254AC538 */ addiu $t2, %lo(gPlayerCountSelection1) # addiu $t2, $t2, -0x3ac8
/* 09E2D4 8009D6D4 8D580000 */ lw $t8, ($t2)
/* 09E2D8 8009D6D8 54B80003 */ bnel $a1, $t8, .L8009D6E8
/* 09E2DC 8009D6DC 0324C821 */ addu $t9, $t9, $a0
/* 09E2E0 8009D6E0 AD800000 */ sw $zero, ($t4)
.L8009D6E4:
/* 09E2E4 8009D6E4 0324C821 */ addu $t9, $t9, $a0
.L8009D6E8:
/* 09E2E8 8009D6E8 83397664 */ lb $t9, %lo(gCupSelectionByCourseId)($t9)
/* 09E2EC 8009D6EC 3C028019 */ lui $v0, %hi(gCupSelection) # $v0, 0x8019
/* 09E2F0 8009D6F0 2442EE09 */ addiu $v0, %lo(gCupSelection) # addiu $v0, $v0, -0x11f7
/* 09E2F4 8009D6F4 A0590000 */ sb $t9, ($v0)
/* 09E2F8 8009D6F8 804E0000 */ lb $t6, ($v0)
/* 09E2FC 8009D6FC 3C0F800F */ lui $t7, %hi(gPerCupIndexByCourseId)
/* 09E300 8009D700 3C038019 */ lui $v1, %hi(gDebugGotoScene) # $v1, 0x8019
/* 09E304 8009D704 8063EDFA */ lb $v1, %lo(gDebugGotoScene)($v1)
/* 09E308 8009D708 3C01800E */ lui $at, %hi(D_800DC540) # $at, 0x800e
/* 09E30C 8009D70C 01E47821 */ addu $t7, $t7, $a0
/* 09E310 8009D710 81EFFD50 */ lb $t7, %lo(gPerCupIndexByCourseId)($t7)
/* 09E314 8009D714 AC2EC540 */ sw $t6, %lo(D_800DC540)($at)
/* 09E318 8009D718 3C018019 */ lui $at, %hi(gCupCourseSelection) # $at, 0x8019
/* 09E31C 8009D71C 10650013 */ beq $v1, $a1, .L8009D76C
/* 09E320 8009D720 A02FEE0B */ sb $t7, %lo(gCupCourseSelection)($at)
/* 09E324 8009D724 10660005 */ beq $v1, $a2, .L8009D73C
/* 09E328 8009D728 3C01800E */ lui $at, %hi(gCCSelection)
/* 09E32C 8009D72C 10670005 */ beq $v1, $a3, .L8009D744
/* 09E330 8009D730 3C01800E */ lui $at, %hi(gCCSelection) # $at, 0x800e
/* 09E334 8009D734 10000005 */ b .L8009D74C
/* 09E338 8009D738 3C18800E */ lui $t8, %hi(gCCSelection) # $t8, 0x800e
.L8009D73C:
/* 09E33C 8009D73C 1000000B */ b .L8009D76C
/* 09E340 8009D740 AC20C548 */ sw $zero, %lo(gCCSelection)($at)
.L8009D744:
/* 09E344 8009D744 10000009 */ b .L8009D76C
/* 09E348 8009D748 AC27C548 */ sw $a3, %lo(gCCSelection)($at)
.L8009D74C:
/* 09E34C 8009D74C 8F18C548 */ lw $t8, %lo(gCCSelection)($t8)
/* 09E350 8009D750 3C01800E */ lui $at, %hi(gIsMirrorMode)
/* 09E354 8009D754 14F80004 */ bne $a3, $t8, .L8009D768
/* 09E358 8009D758 00000000 */ nop
/* 09E35C 8009D75C 3C01800E */ lui $at, %hi(gIsMirrorMode) # $at, 0x800e
/* 09E360 8009D760 10000002 */ b .L8009D76C
/* 09E364 8009D764 AC25C604 */ sw $a1, %lo(gIsMirrorMode)($at)
.L8009D768:
/* 09E368 8009D768 AC20C604 */ sw $zero, %lo(gIsMirrorMode)($at)
.L8009D76C:
/* 09E36C 8009D76C 8FBF0014 */ lw $ra, 0x14($sp)
.L8009D770:
/* 09E370 8009D770 27BD0030 */ addiu $sp, $sp, 0x30
/* 09E374 8009D774 03E00008 */ jr $ra
/* 09E378 8009D778 00000000 */ nop
@@ -2,10 +2,11 @@
glabel D_800F0C14
.asciiz "'"
.balign 4
glabel D_800F0C18
.asciiz "\""
.balign 4
.section .late_rodata
@@ -1,86 +0,0 @@
.section .late_rodata
glabel jpt_800F1B00
.word L800A0FE0, L800A103C, L800A0FE0, L800A0FE0
.word L800A103C
.section .text
glabel func_800A0FA4
/* 0A1BA4 800A0FA4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0A1BA8 800A0FA8 AFBF002C */ sw $ra, 0x2c($sp)
/* 0A1BAC 800A0FAC AFB20028 */ sw $s2, 0x28($sp)
/* 0A1BB0 800A0FB0 AFB10024 */ sw $s1, 0x24($sp)
/* 0A1BB4 800A0FB4 AFB00020 */ sw $s0, 0x20($sp)
/* 0A1BB8 800A0FB8 8C8E0004 */ lw $t6, 4($a0)
/* 0A1BBC 800A0FBC 00808025 */ move $s0, $a0
/* 0A1BC0 800A0FC0 2DC10005 */ sltiu $at, $t6, 5
/* 0A1BC4 800A0FC4 1020003B */ beqz $at, .L800A10B4
/* 0A1BC8 800A0FC8 000E7080 */ sll $t6, $t6, 2
/* 0A1BCC 800A0FCC 3C01800F */ lui $at, %hi(jpt_800F1B00)
/* 0A1BD0 800A0FD0 002E0821 */ addu $at, $at, $t6
/* 0A1BD4 800A0FD4 8C2E1B00 */ lw $t6, %lo(jpt_800F1B00)($at)
/* 0A1BD8 800A0FD8 01C00008 */ jr $t6
/* 0A1BDC 800A0FDC 00000000 */ nop
glabel L800A0FE0
/* 0A1BE0 800A0FE0 3C19800F */ lui $t9, %hi(D_800E8234) # $t9, 0x800f
/* 0A1BE4 800A0FE4 27398234 */ addiu $t9, %lo(D_800E8234) # addiu $t9, $t9, -0x7dcc
/* 0A1BE8 800A0FE8 0005C0C0 */ sll $t8, $a1, 3
/* 0A1BEC 800A0FEC 03198821 */ addu $s1, $t8, $t9
/* 0A1BF0 800A0FF0 0C026449 */ jal segmented_to_virtual_dupe
/* 0A1BF4 800A0FF4 8E240000 */ lw $a0, ($s1)
/* 0A1BF8 800A0FF8 3C128015 */ lui $s2, %hi(gDisplayListHead) # $s2, 0x8015
/* 0A1BFC 800A0FFC 26520298 */ addiu $s2, %lo(gDisplayListHead) # addiu $s2, $s2, 0x298
/* 0A1C00 800A1000 8E440000 */ lw $a0, ($s2)
/* 0A1C04 800A1004 00402825 */ move $a1, $v0
/* 0A1C08 800A1008 8E06000C */ lw $a2, 0xc($s0)
/* 0A1C0C 800A100C 0C026E9D */ jal func_8009BA74
/* 0A1C10 800A1010 8E070010 */ lw $a3, 0x10($s0)
/* 0A1C14 800A1014 AE420000 */ sw $v0, ($s2)
/* 0A1C18 800A1018 0C026449 */ jal segmented_to_virtual_dupe
/* 0A1C1C 800A101C 8E240004 */ lw $a0, 4($s1)
/* 0A1C20 800A1020 8E440000 */ lw $a0, ($s2)
/* 0A1C24 800A1024 00402825 */ move $a1, $v0
/* 0A1C28 800A1028 8E06000C */ lw $a2, 0xc($s0)
/* 0A1C2C 800A102C 0C026E9D */ jal func_8009BA74
/* 0A1C30 800A1030 8E070010 */ lw $a3, 0x10($s0)
/* 0A1C34 800A1034 1000001F */ b .L800A10B4
/* 0A1C38 800A1038 AE420000 */ sw $v0, ($s2)
glabel L800A103C
/* 0A1C3C 800A103C 3C0A800F */ lui $t2, %hi(D_800E8234) # $t2, 0x800f
/* 0A1C40 800A1040 254A8234 */ addiu $t2, %lo(D_800E8234) # addiu $t2, $t2, -0x7dcc
/* 0A1C44 800A1044 000548C0 */ sll $t1, $a1, 3
/* 0A1C48 800A1048 012A8821 */ addu $s1, $t1, $t2
/* 0A1C4C 800A104C 0C026449 */ jal segmented_to_virtual_dupe
/* 0A1C50 800A1050 8E240000 */ lw $a0, ($s1)
/* 0A1C54 800A1054 8E06000C */ lw $a2, 0xc($s0)
/* 0A1C58 800A1058 8E070010 */ lw $a3, 0x10($s0)
/* 0A1C5C 800A105C 240B0002 */ li $t3, 2
/* 0A1C60 800A1060 AFAB0010 */ sw $t3, 0x10($sp)
/* 0A1C64 800A1064 8E0C001C */ lw $t4, 0x1c($s0)
/* 0A1C68 800A1068 3C128015 */ lui $s2, %hi(gDisplayListHead) # $s2, 0x8015
/* 0A1C6C 800A106C 26520298 */ addiu $s2, %lo(gDisplayListHead) # addiu $s2, $s2, 0x298
/* 0A1C70 800A1070 8E440000 */ lw $a0, ($s2)
/* 0A1C74 800A1074 00402825 */ move $a1, $v0
/* 0A1C78 800A1078 0C026F27 */ jal func_8009BC9C
/* 0A1C7C 800A107C AFAC0014 */ sw $t4, 0x14($sp)
/* 0A1C80 800A1080 AE420000 */ sw $v0, ($s2)
/* 0A1C84 800A1084 0C026449 */ jal segmented_to_virtual_dupe
/* 0A1C88 800A1088 8E240004 */ lw $a0, 4($s1)
/* 0A1C8C 800A108C 8E06000C */ lw $a2, 0xc($s0)
/* 0A1C90 800A1090 8E070010 */ lw $a3, 0x10($s0)
/* 0A1C94 800A1094 240D0002 */ li $t5, 2
/* 0A1C98 800A1098 AFAD0010 */ sw $t5, 0x10($sp)
/* 0A1C9C 800A109C 8E0E001C */ lw $t6, 0x1c($s0)
/* 0A1CA0 800A10A0 8E440000 */ lw $a0, ($s2)
/* 0A1CA4 800A10A4 00402825 */ move $a1, $v0
/* 0A1CA8 800A10A8 0C026F27 */ jal func_8009BC9C
/* 0A1CAC 800A10AC AFAE0014 */ sw $t6, 0x14($sp)
/* 0A1CB0 800A10B0 AE420000 */ sw $v0, ($s2)
.L800A10B4:
/* 0A1CB4 800A10B4 8FBF002C */ lw $ra, 0x2c($sp)
/* 0A1CB8 800A10B8 8FB00020 */ lw $s0, 0x20($sp)
/* 0A1CBC 800A10BC 8FB10024 */ lw $s1, 0x24($sp)
/* 0A1CC0 800A10C0 8FB20028 */ lw $s2, 0x28($sp)
/* 0A1CC4 800A10C4 03E00008 */ jr $ra
/* 0A1CC8 800A10C8 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,76 +0,0 @@
.section .late_rodata
glabel D_800F1B14
.float 0.65
.section .text
glabel func_800A10CC
/* 0A1CCC 800A10CC 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 0A1CD0 800A10D0 AFBF0044 */ sw $ra, 0x44($sp)
/* 0A1CD4 800A10D4 AFB30040 */ sw $s3, 0x40($sp)
/* 0A1CD8 800A10D8 AFB2003C */ sw $s2, 0x3c($sp)
/* 0A1CDC 800A10DC AFB10038 */ sw $s1, 0x38($sp)
/* 0A1CE0 800A10E0 AFB00034 */ sw $s0, 0x34($sp)
/* 0A1CE4 800A10E4 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 0A1CE8 800A10E8 8C820004 */ lw $v0, 4($a0)
/* 0A1CEC 800A10EC 24010002 */ li $at, 2
/* 0A1CF0 800A10F0 00808025 */ move $s0, $a0
/* 0A1CF4 800A10F4 10410007 */ beq $v0, $at, .L800A1114
/* 0A1CF8 800A10F8 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015
/* 0A1CFC 800A10FC 24010003 */ li $at, 3
/* 0A1D00 800A1100 10410004 */ beq $v0, $at, .L800A1114
/* 0A1D04 800A1104 24010004 */ li $at, 4
/* 0A1D08 800A1108 10410002 */ beq $v0, $at, .L800A1114
/* 0A1D0C 800A110C 24010005 */ li $at, 5
/* 0A1D10 800A1110 14410027 */ bne $v0, $at, .L800A11B0
.L800A1114:
/* 0A1D14 800A1114 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298
/* 0A1D18 800A1118 240E006E */ li $t6, 110
/* 0A1D1C 800A111C 240F00FF */ li $t7, 255
/* 0A1D20 800A1120 AFAF0020 */ sw $t7, 0x20($sp)
/* 0A1D24 800A1124 AFAE0010 */ sw $t6, 0x10($sp)
/* 0A1D28 800A1128 8E240000 */ lw $a0, ($s1)
/* 0A1D2C 800A112C 2405001E */ li $a1, 30
/* 0A1D30 800A1130 24060032 */ li $a2, 50
/* 0A1D34 800A1134 24070122 */ li $a3, 290
/* 0A1D38 800A1138 AFA00014 */ sw $zero, 0x14($sp)
/* 0A1D3C 800A113C AFA00018 */ sw $zero, 0x18($sp)
/* 0A1D40 800A1140 0C026306 */ jal draw_box_fill
/* 0A1D44 800A1144 AFA0001C */ sw $zero, 0x1c($sp)
/* 0A1D48 800A1148 AE220000 */ sw $v0, ($s1)
/* 0A1D4C 800A114C 8E130004 */ lw $s3, 4($s0)
/* 0A1D50 800A1150 24040003 */ li $a0, 3
/* 0A1D54 800A1154 0C024C36 */ jal set_text_color
/* 0A1D58 800A1158 2673FFFE */ addiu $s3, $s3, -2
/* 0A1D5C 800A115C 0260C025 */ move $t8, $s3
/* 0A1D60 800A1160 3C08800E */ lui $t0, %hi(D_800E7940) # $t0, 0x800e
/* 0A1D64 800A1164 25087940 */ addiu $t0, %lo(D_800E7940) # addiu $t0, $t0, 0x7940
/* 0A1D68 800A1168 0018C900 */ sll $t9, $t8, 4
/* 0A1D6C 800A116C 3C01800F */ lui $at, %hi(D_800F1B14) # $at, 0x800f
/* 0A1D70 800A1170 C4341B14 */ lwc1 $f20, %lo(D_800F1B14)($at)
/* 0A1D74 800A1174 03289021 */ addu $s2, $t9, $t0
/* 0A1D78 800A1178 24130010 */ li $s3, 16
/* 0A1D7C 800A117C 24100041 */ li $s0, 65
/* 0A1D80 800A1180 00008825 */ move $s1, $zero
.L800A1184:
/* 0A1D84 800A1184 24040023 */ li $a0, 35
/* 0A1D88 800A1188 02002825 */ move $a1, $s0
/* 0A1D8C 800A118C 8E460000 */ lw $a2, ($s2)
/* 0A1D90 800A1190 00003825 */ move $a3, $zero
/* 0A1D94 800A1194 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A1D98 800A1198 0C024CC9 */ jal func_80093324
/* 0A1D9C 800A119C E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A1DA0 800A11A0 26310004 */ addiu $s1, $s1, 4
/* 0A1DA4 800A11A4 2610000D */ addiu $s0, $s0, 0xd
/* 0A1DA8 800A11A8 1633FFF6 */ bne $s1, $s3, .L800A1184
/* 0A1DAC 800A11AC 26520004 */ addiu $s2, $s2, 4
.L800A11B0:
/* 0A1DB0 800A11B0 8FBF0044 */ lw $ra, 0x44($sp)
/* 0A1DB4 800A11B4 D7B40028 */ ldc1 $f20, 0x28($sp)
/* 0A1DB8 800A11B8 8FB00034 */ lw $s0, 0x34($sp)
/* 0A1DBC 800A11BC 8FB10038 */ lw $s1, 0x38($sp)
/* 0A1DC0 800A11C0 8FB2003C */ lw $s2, 0x3c($sp)
/* 0A1DC4 800A11C4 8FB30040 */ lw $s3, 0x40($sp)
/* 0A1DC8 800A11C8 03E00008 */ jr $ra
/* 0A1DCC 800A11CC 27BD0048 */ addiu $sp, $sp, 0x48
@@ -1,110 +0,0 @@
glabel func_800A1780
/* 0A2380 800A1780 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0A2384 800A1784 AFBF0014 */ sw $ra, 0x14($sp)
/* 0A2388 800A1788 AFA40018 */ sw $a0, 0x18($sp)
/* 0A238C 800A178C 8C870020 */ lw $a3, 0x20($a0)
/* 0A2390 800A1790 24010003 */ li $at, 3
/* 0A2394 800A1794 3C1F800E */ lui $ra, %hi(D_800E74D0) # $ra, 0x800e
/* 0A2398 800A1798 24F80001 */ addiu $t8, $a3, 1
/* 0A239C 800A179C 0301001A */ div $zero, $t8, $at
/* 0A23A0 800A17A0 27FF74D0 */ addiu $ra, %lo(D_800E74D0) # addiu $ra, $ra, 0x74d0
/* 0A23A4 800A17A4 000778C0 */ sll $t7, $a3, 3
/* 0A23A8 800A17A8 0000C810 */ mfhi $t9
/* 0A23AC 800A17AC 03EF1821 */ addu $v1, $ra, $t7
/* 0A23B0 800A17B0 8C82001C */ lw $v0, 0x1c($a0)
/* 0A23B4 800A17B4 001978C0 */ sll $t7, $t9, 3
/* 0A23B8 800A17B8 94790000 */ lhu $t9, ($v1)
/* 0A23BC 800A17BC 24180100 */ li $t8, 256
/* 0A23C0 800A17C0 03023023 */ subu $a2, $t8, $v0
/* 0A23C4 800A17C4 03260019 */ multu $t9, $a2
/* 0A23C8 800A17C8 03EF2821 */ addu $a1, $ra, $t7
/* 0A23CC 800A17CC 94AE0000 */ lhu $t6, ($a1)
/* 0A23D0 800A17D0 3C088015 */ lui $t0, %hi(gDisplayListHead) # $t0, 0x8015
/* 0A23D4 800A17D4 8D080298 */ lw $t0, %lo(gDisplayListHead)($t0)
/* 0A23D8 800A17D8 3C040200 */ lui $a0, %hi(D_02001FA4) # $a0, 0x200
/* 0A23DC 800A17DC 24841FA4 */ addiu $a0, %lo(D_02001FA4) # addiu $a0, $a0, 0x1fa4
/* 0A23E0 800A17E0 00007812 */ mflo $t7
/* 0A23E4 800A17E4 00000000 */ nop
/* 0A23E8 800A17E8 00000000 */ nop
/* 0A23EC 800A17EC 01C20019 */ multu $t6, $v0
/* 0A23F0 800A17F0 946E0002 */ lhu $t6, 2($v1)
/* 0A23F4 800A17F4 0000C012 */ mflo $t8
/* 0A23F8 800A17F8 01F85021 */ addu $t2, $t7, $t8
/* 0A23FC 800A17FC 94B80002 */ lhu $t8, 2($a1)
/* 0A2400 800A1800 01C60019 */ multu $t6, $a2
/* 0A2404 800A1804 05410003 */ bgez $t2, .L800A1814
/* 0A2408 800A1808 000ACA03 */ sra $t9, $t2, 8
/* 0A240C 800A180C 254100FF */ addiu $at, $t2, 0xff
/* 0A2410 800A1810 0001CA03 */ sra $t9, $at, 8
.L800A1814:
/* 0A2414 800A1814 03205025 */ move $t2, $t9
/* 0A2418 800A1818 00007812 */ mflo $t7
/* 0A241C 800A181C 00000000 */ nop
/* 0A2420 800A1820 00000000 */ nop
/* 0A2424 800A1824 03020019 */ multu $t8, $v0
/* 0A2428 800A1828 94780004 */ lhu $t8, 4($v1)
/* 0A242C 800A182C 0000C812 */ mflo $t9
/* 0A2430 800A1830 01F95821 */ addu $t3, $t7, $t9
/* 0A2434 800A1834 94B90004 */ lhu $t9, 4($a1)
/* 0A2438 800A1838 03060019 */ multu $t8, $a2
/* 0A243C 800A183C 05610003 */ bgez $t3, .L800A184C
/* 0A2440 800A1840 000B7203 */ sra $t6, $t3, 8
/* 0A2444 800A1844 256100FF */ addiu $at, $t3, 0xff
/* 0A2448 800A1848 00017203 */ sra $t6, $at, 8
.L800A184C:
/* 0A244C 800A184C 01C05825 */ move $t3, $t6
/* 0A2450 800A1850 00007812 */ mflo $t7
/* 0A2454 800A1854 00000000 */ nop
/* 0A2458 800A1858 00000000 */ nop
/* 0A245C 800A185C 03220019 */ multu $t9, $v0
/* 0A2460 800A1860 94790006 */ lhu $t9, 6($v1)
/* 0A2464 800A1864 00007012 */ mflo $t6
/* 0A2468 800A1868 01EE6021 */ addu $t4, $t7, $t6
/* 0A246C 800A186C 94AE0006 */ lhu $t6, 6($a1)
/* 0A2470 800A1870 03260019 */ multu $t9, $a2
/* 0A2474 800A1874 05810003 */ bgez $t4, .L800A1884
/* 0A2478 800A1878 000CC203 */ sra $t8, $t4, 8
/* 0A247C 800A187C 258100FF */ addiu $at, $t4, 0xff
/* 0A2480 800A1880 0001C203 */ sra $t8, $at, 8
.L800A1884:
/* 0A2484 800A1884 03006025 */ move $t4, $t8
/* 0A2488 800A1888 00007812 */ mflo $t7
/* 0A248C 800A188C 00000000 */ nop
/* 0A2490 800A1890 00000000 */ nop
/* 0A2494 800A1894 01C20019 */ multu $t6, $v0
/* 0A2498 800A1898 250E0008 */ addiu $t6, $t0, 8
/* 0A249C 800A189C 0000C012 */ mflo $t8
/* 0A24A0 800A18A0 01F86821 */ addu $t5, $t7, $t8
/* 0A24A4 800A18A4 05A10003 */ bgez $t5, .L800A18B4
/* 0A24A8 800A18A8 000DCA03 */ sra $t9, $t5, 8
/* 0A24AC 800A18AC 25A100FF */ addiu $at, $t5, 0xff
/* 0A24B0 800A18B0 0001CA03 */ sra $t9, $at, 8
.L800A18B4:
/* 0A24B4 800A18B4 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015
/* 0A24B8 800A18B8 AC2E0298 */ sw $t6, %lo(gDisplayListHead)($at)
/* 0A24BC 800A18BC 3C0FFA00 */ lui $t7, 0xfa00
/* 0A24C0 800A18C0 316E00FF */ andi $t6, $t3, 0xff
/* 0A24C4 800A18C4 AD0F0000 */ sw $t7, ($t0)
/* 0A24C8 800A18C8 03206825 */ move $t5, $t9
/* 0A24CC 800A18CC 000E7C00 */ sll $t7, $t6, 0x10
/* 0A24D0 800A18D0 000ACE00 */ sll $t9, $t2, 0x18
/* 0A24D4 800A18D4 032FC025 */ or $t8, $t9, $t7
/* 0A24D8 800A18D8 318E00FF */ andi $t6, $t4, 0xff
/* 0A24DC 800A18DC 000ECA00 */ sll $t9, $t6, 8
/* 0A24E0 800A18E0 03197825 */ or $t7, $t8, $t9
/* 0A24E4 800A18E4 31AE00FF */ andi $t6, $t5, 0xff
/* 0A24E8 800A18E8 01EEC025 */ or $t8, $t7, $t6
/* 0A24EC 800A18EC 0C026449 */ jal segmented_to_virtual_dupe
/* 0A24F0 800A18F0 AD180004 */ sw $t8, 4($t0)
/* 0A24F4 800A18F4 8FA30018 */ lw $v1, 0x18($sp)
/* 0A24F8 800A18F8 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015
/* 0A24FC 800A18FC 8C840298 */ lw $a0, %lo(gDisplayListHead)($a0)
/* 0A2500 800A1900 00402825 */ move $a1, $v0
/* 0A2504 800A1904 8C66000C */ lw $a2, 0xc($v1)
/* 0A2508 800A1908 0C026E9D */ jal func_8009BA74
/* 0A250C 800A190C 8C670010 */ lw $a3, 0x10($v1)
/* 0A2510 800A1910 8FBF0014 */ lw $ra, 0x14($sp)
/* 0A2514 800A1914 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015
/* 0A2518 800A1918 AC220298 */ sw $v0, %lo(gDisplayListHead)($at)
/* 0A251C 800A191C 03E00008 */ jr $ra
/* 0A2520 800A1920 27BD0018 */ addiu $sp, $sp, 0x18
@@ -1,145 +0,0 @@
.section .late_rodata
glabel D_800F1B54
.float 0.6
.section .text
glabel func_800A1BE0
/* 0A27E0 800A1BE0 27BDFF70 */ addiu $sp, $sp, -0x90
/* 0A27E4 800A1BE4 AFB70044 */ sw $s7, 0x44($sp)
/* 0A27E8 800A1BE8 3C178019 */ lui $s7, %hi(gTimeTrialDataCourseIndex) # $s7, 0x8019
/* 0A27EC 800A1BEC 26F7EDF7 */ addiu $s7, %lo(gTimeTrialDataCourseIndex) # addiu $s7, $s7, -0x1209
/* 0A27F0 800A1BF0 82E20000 */ lb $v0, ($s7)
/* 0A27F4 800A1BF4 AFB5003C */ sw $s5, 0x3c($sp)
/* 0A27F8 800A1BF8 AFB30034 */ sw $s3, 0x34($sp)
/* 0A27FC 800A1BFC 3C098019 */ lui $t1, %hi(gSaveData) # $t1, 0x8019
/* 0A2800 800A1C00 AFBE0048 */ sw $fp, 0x48($sp)
/* 0A2804 800A1C04 AFB60040 */ sw $s6, 0x40($sp)
/* 0A2808 800A1C08 AFB40038 */ sw $s4, 0x38($sp)
/* 0A280C 800A1C0C AFB00028 */ sw $s0, 0x28($sp)
/* 0A2810 800A1C10 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0A2814 800A1C14 2529EB90 */ addiu $t1, %lo(gSaveData) # addiu $t1, $t1, -0x1470
/* 0A2818 800A1C18 3C13800E */ lui $s3, %hi(D_800E7834) # $s3, 0x800e
/* 0A281C 800A1C1C 3C158015 */ lui $s5, %hi(gDisplayListHead) # $s5, 0x8015
/* 0A2820 800A1C20 AFBF004C */ sw $ra, 0x4c($sp)
/* 0A2824 800A1C24 AFB20030 */ sw $s2, 0x30($sp)
/* 0A2828 800A1C28 AFB1002C */ sw $s1, 0x2c($sp)
/* 0A282C 800A1C2C AFA40090 */ sw $a0, 0x90($sp)
/* 0A2830 800A1C30 04410003 */ bgez $v0, .L800A1C40
/* 0A2834 800A1C34 00027083 */ sra $t6, $v0, 2
/* 0A2838 800A1C38 24410003 */ addiu $at, $v0, 3
/* 0A283C 800A1C3C 00017083 */ sra $t6, $at, 2
.L800A1C40:
/* 0A2840 800A1C40 000E7880 */ sll $t7, $t6, 2
/* 0A2844 800A1C44 01EE7823 */ subu $t7, $t7, $t6
/* 0A2848 800A1C48 000F7940 */ sll $t7, $t7, 5
/* 0A284C 800A1C4C 04410004 */ bgez $v0, .L800A1C60
/* 0A2850 800A1C50 30580003 */ andi $t8, $v0, 3
/* 0A2854 800A1C54 13000002 */ beqz $t8, .L800A1C60
/* 0A2858 800A1C58 00000000 */ nop
/* 0A285C 800A1C5C 2718FFFC */ addiu $t8, $t8, -4
.L800A1C60:
/* 0A2860 800A1C60 0018C880 */ sll $t9, $t8, 2
/* 0A2864 800A1C64 0338C823 */ subu $t9, $t9, $t8
/* 0A2868 800A1C68 0019C8C0 */ sll $t9, $t9, 3
/* 0A286C 800A1C6C 01F94021 */ addu $t0, $t7, $t9
/* 0A2870 800A1C70 3C01800F */ lui $at, %hi(D_800F1B54) # $at, 0x800f
/* 0A2874 800A1C74 0109B021 */ addu $s6, $t0, $t1
/* 0A2878 800A1C78 C4341B54 */ lwc1 $f20, %lo(D_800F1B54)($at)
/* 0A287C 800A1C7C 26B50298 */ addiu $s5, %lo(gDisplayListHead) # addiu $s5, $s5, 0x298
/* 0A2880 800A1C80 26737834 */ addiu $s3, %lo(D_800E7834) # addiu $s3, $s3, 0x7834
/* 0A2884 800A1C84 00008025 */ move $s0, $zero
/* 0A2888 800A1C88 2414003F */ li $s4, 63
/* 0A288C 800A1C8C 3C1EFA00 */ lui $fp, 0xfa00
.L800A1C90:
/* 0A2890 800A1C90 3C0A8019 */ lui $t2, %hi(gCourseRecordsMenuSelection) # $t2, 0x8019
/* 0A2894 800A1C94 814AEDF8 */ lb $t2, %lo(gCourseRecordsMenuSelection)($t2)
/* 0A2898 800A1C98 00008825 */ move $s1, $zero
/* 0A289C 800A1C9C 24010001 */ li $at, 1
/* 0A28A0 800A1CA0 160A0003 */ bne $s0, $t2, .L800A1CB0
/* 0A28A4 800A1CA4 00000000 */ nop
/* 0A28A8 800A1CA8 10000012 */ b .L800A1CF4
/* 0A28AC 800A1CAC 24120005 */ li $s2, 5
.L800A1CB0:
/* 0A28B0 800A1CB0 12010006 */ beq $s0, $at, .L800A1CCC
/* 0A28B4 800A1CB4 24120001 */ li $s2, 1
/* 0A28B8 800A1CB8 24010002 */ li $at, 2
/* 0A28BC 800A1CBC 12010008 */ beq $s0, $at, .L800A1CE0
/* 0A28C0 800A1CC0 00000000 */ nop
/* 0A28C4 800A1CC4 1000000B */ b .L800A1CF4
/* 0A28C8 800A1CC8 00000000 */ nop
.L800A1CCC:
/* 0A28CC 800A1CCC 92CB0012 */ lbu $t3, 0x12($s6)
/* 0A28D0 800A1CD0 15600008 */ bnez $t3, .L800A1CF4
/* 0A28D4 800A1CD4 00000000 */ nop
/* 0A28D8 800A1CD8 10000006 */ b .L800A1CF4
/* 0A28DC 800A1CDC 24110001 */ li $s1, 1
.L800A1CE0:
/* 0A28E0 800A1CE0 0C02D8E7 */ jal func_800B639C
/* 0A28E4 800A1CE4 82E40000 */ lb $a0, ($s7)
/* 0A28E8 800A1CE8 04410002 */ bgez $v0, .L800A1CF4
/* 0A28EC 800A1CEC 00000000 */ nop
/* 0A28F0 800A1CF0 24110001 */ li $s1, 1
.L800A1CF4:
/* 0A28F4 800A1CF4 12200012 */ beqz $s1, .L800A1D40
/* 0A28F8 800A1CF8 00000000 */ nop
/* 0A28FC 800A1CFC 0C024C36 */ jal set_text_color
/* 0A2900 800A1D00 00002025 */ move $a0, $zero
/* 0A2904 800A1D04 8EA30000 */ lw $v1, ($s5)
/* 0A2908 800A1D08 240D0096 */ li $t5, 150
/* 0A290C 800A1D0C 24040025 */ li $a0, 37
/* 0A2910 800A1D10 246C0008 */ addiu $t4, $v1, 8
/* 0A2914 800A1D14 AEAC0000 */ sw $t4, ($s5)
/* 0A2918 800A1D18 AC6D0004 */ sw $t5, 4($v1)
/* 0A291C 800A1D1C AC7E0000 */ sw $fp, ($v1)
/* 0A2920 800A1D20 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A2924 800A1D24 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A2928 800A1D28 8E660000 */ lw $a2, ($s3)
/* 0A292C 800A1D2C 02802825 */ move $a1, $s4
/* 0A2930 800A1D30 0C024CD6 */ jal func_80093358
/* 0A2934 800A1D34 00003825 */ move $a3, $zero
/* 0A2938 800A1D38 1000000B */ b .L800A1D68
/* 0A293C 800A1D3C 26100001 */ addiu $s0, $s0, 1
.L800A1D40:
/* 0A2940 800A1D40 0C024C36 */ jal set_text_color
/* 0A2944 800A1D44 02402025 */ move $a0, $s2
/* 0A2948 800A1D48 24040025 */ li $a0, 37
/* 0A294C 800A1D4C 02802825 */ move $a1, $s4
/* 0A2950 800A1D50 8E660000 */ lw $a2, ($s3)
/* 0A2954 800A1D54 00003825 */ move $a3, $zero
/* 0A2958 800A1D58 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A295C 800A1D5C 0C024CC9 */ jal func_80093324
/* 0A2960 800A1D60 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A2964 800A1D64 26100001 */ addiu $s0, $s0, 1
.L800A1D68:
/* 0A2968 800A1D68 24010003 */ li $at, 3
/* 0A296C 800A1D6C 26730004 */ addiu $s3, $s3, 4
/* 0A2970 800A1D70 1601FFC7 */ bne $s0, $at, .L800A1C90
/* 0A2974 800A1D74 2694000D */ addiu $s4, $s4, 0xd
/* 0A2978 800A1D78 3C188019 */ lui $t8, %hi(gCourseRecordsMenuSelection) # $t8, 0x8019
/* 0A297C 800A1D7C 8318EDF8 */ lb $t8, %lo(gCourseRecordsMenuSelection)($t8)
/* 0A2980 800A1D80 240E001F */ li $t6, 31
/* 0A2984 800A1D84 A7AE0078 */ sh $t6, 0x78($sp)
/* 0A2988 800A1D88 00187880 */ sll $t7, $t8, 2
/* 0A298C 800A1D8C 01F87823 */ subu $t7, $t7, $t8
/* 0A2990 800A1D90 000F7880 */ sll $t7, $t7, 2
/* 0A2994 800A1D94 01F87821 */ addu $t7, $t7, $t8
/* 0A2998 800A1D98 25F9003A */ addiu $t9, $t7, 0x3a
/* 0A299C 800A1D9C A7B9007A */ sh $t9, 0x7a($sp)
/* 0A29A0 800A1DA0 8FA40090 */ lw $a0, 0x90($sp)
/* 0A29A4 800A1DA4 0C0299AA */ jal func_800A66A8
/* 0A29A8 800A1DA8 27A50078 */ addiu $a1, $sp, 0x78
/* 0A29AC 800A1DAC 8FBF004C */ lw $ra, 0x4c($sp)
/* 0A29B0 800A1DB0 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0A29B4 800A1DB4 8FB00028 */ lw $s0, 0x28($sp)
/* 0A29B8 800A1DB8 8FB1002C */ lw $s1, 0x2c($sp)
/* 0A29BC 800A1DBC 8FB20030 */ lw $s2, 0x30($sp)
/* 0A29C0 800A1DC0 8FB30034 */ lw $s3, 0x34($sp)
/* 0A29C4 800A1DC4 8FB40038 */ lw $s4, 0x38($sp)
/* 0A29C8 800A1DC8 8FB5003C */ lw $s5, 0x3c($sp)
/* 0A29CC 800A1DCC 8FB60040 */ lw $s6, 0x40($sp)
/* 0A29D0 800A1DD0 8FB70044 */ lw $s7, 0x44($sp)
/* 0A29D4 800A1DD4 8FBE0048 */ lw $fp, 0x48($sp)
/* 0A29D8 800A1DD8 03E00008 */ jr $ra
/* 0A29DC 800A1DDC 27BD0090 */ addiu $sp, $sp, 0x90
@@ -1,95 +0,0 @@
.section .late_rodata
glabel D_800F1B58
.float 0.65
.section .text
glabel func_800A1DE0
/* 0A29E0 800A1DE0 27BDFF90 */ addiu $sp, $sp, -0x70
/* 0A29E4 800A1DE4 AFBF003C */ sw $ra, 0x3c($sp)
/* 0A29E8 800A1DE8 AFA40070 */ sw $a0, 0x70($sp)
/* 0A29EC 800A1DEC AFB40038 */ sw $s4, 0x38($sp)
/* 0A29F0 800A1DF0 AFB30034 */ sw $s3, 0x34($sp)
/* 0A29F4 800A1DF4 AFB20030 */ sw $s2, 0x30($sp)
/* 0A29F8 800A1DF8 AFB1002C */ sw $s1, 0x2c($sp)
/* 0A29FC 800A1DFC AFB00028 */ sw $s0, 0x28($sp)
/* 0A2A00 800A1E00 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0A2A04 800A1E04 0C024C36 */ jal set_text_color
/* 0A2A08 800A1E08 24040001 */ li $a0, 1
/* 0A2A0C 800A1E0C 3C01800F */ lui $at, %hi(D_800F1B58) # $at, 0x800f
/* 0A2A10 800A1E10 3C138019 */ lui $s3, %hi(gCourseRecordsMenuSelection) # $s3, 0x8019
/* 0A2A14 800A1E14 3C12800E */ lui $s2, %hi(D_800E7848) # $s2, 0x800e
/* 0A2A18 800A1E18 26527848 */ addiu $s2, %lo(D_800E7848) # addiu $s2, $s2, 0x7848
/* 0A2A1C 800A1E1C 2673EDF8 */ addiu $s3, %lo(gCourseRecordsMenuSelection) # addiu $s3, $s3, -0x1208
/* 0A2A20 800A1E20 C4341B58 */ lwc1 $f20, %lo(D_800F1B58)($at)
/* 0A2A24 800A1E24 00008825 */ move $s1, $zero
/* 0A2A28 800A1E28 2410003C */ li $s0, 60
/* 0A2A2C 800A1E2C 24140003 */ li $s4, 3
.L800A1E30:
/* 0A2A30 800A1E30 826E0000 */ lb $t6, ($s3)
/* 0A2A34 800A1E34 2404001B */ li $a0, 27
/* 0A2A38 800A1E38 02002825 */ move $a1, $s0
/* 0A2A3C 800A1E3C 01D40019 */ multu $t6, $s4
/* 0A2A40 800A1E40 00003825 */ move $a3, $zero
/* 0A2A44 800A1E44 00007812 */ mflo $t7
/* 0A2A48 800A1E48 000FC080 */ sll $t8, $t7, 2
/* 0A2A4C 800A1E4C 0258C821 */ addu $t9, $s2, $t8
/* 0A2A50 800A1E50 03314021 */ addu $t0, $t9, $s1
/* 0A2A54 800A1E54 8D06FFF4 */ lw $a2, -0xc($t0)
/* 0A2A58 800A1E58 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A2A5C 800A1E5C 0C024CC9 */ jal func_80093324
/* 0A2A60 800A1E60 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A2A64 800A1E64 2610000D */ addiu $s0, $s0, 0xd
/* 0A2A68 800A1E68 2A010063 */ slti $at, $s0, 0x63
/* 0A2A6C 800A1E6C 1420FFF0 */ bnez $at, .L800A1E30
/* 0A2A70 800A1E70 26310004 */ addiu $s1, $s1, 4
/* 0A2A74 800A1E74 3C10800E */ lui $s0, %hi(D_800E7840) # $s0, 0x800e
/* 0A2A78 800A1E78 3C138019 */ lui $s3, %hi(D_8018EDF9) # $s3, 0x8019
/* 0A2A7C 800A1E7C 2673EDF9 */ addiu $s3, %lo(D_8018EDF9) # addiu $s3, $s3, -0x1207
/* 0A2A80 800A1E80 26107840 */ addiu $s0, %lo(D_800E7840) # addiu $s0, $s0, 0x7840
/* 0A2A84 800A1E84 00009025 */ move $s2, $zero
/* 0A2A88 800A1E88 2411006E */ li $s1, 110
/* 0A2A8C 800A1E8C 24140002 */ li $s4, 2
.L800A1E90:
/* 0A2A90 800A1E90 82690000 */ lb $t1, ($s3)
/* 0A2A94 800A1E94 24040001 */ li $a0, 1
/* 0A2A98 800A1E98 16490003 */ bne $s2, $t1, .L800A1EA8
/* 0A2A9C 800A1E9C 00000000 */ nop
/* 0A2AA0 800A1EA0 10000001 */ b .L800A1EA8
/* 0A2AA4 800A1EA4 24040005 */ li $a0, 5
.L800A1EA8:
/* 0A2AA8 800A1EA8 0C024C36 */ jal set_text_color
/* 0A2AAC 800A1EAC 00000000 */ nop
/* 0A2AB0 800A1EB0 24040043 */ li $a0, 67
/* 0A2AB4 800A1EB4 02202825 */ move $a1, $s1
/* 0A2AB8 800A1EB8 8E060000 */ lw $a2, ($s0)
/* 0A2ABC 800A1EBC 00003825 */ move $a3, $zero
/* 0A2AC0 800A1EC0 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A2AC4 800A1EC4 0C024CC9 */ jal func_80093324
/* 0A2AC8 800A1EC8 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A2ACC 800A1ECC 26520001 */ addiu $s2, $s2, 1
/* 0A2AD0 800A1ED0 26100004 */ addiu $s0, $s0, 4
/* 0A2AD4 800A1ED4 1654FFEE */ bne $s2, $s4, .L800A1E90
/* 0A2AD8 800A1ED8 2631000D */ addiu $s1, $s1, 0xd
/* 0A2ADC 800A1EDC 826B0000 */ lb $t3, ($s3)
/* 0A2AE0 800A1EE0 240A003B */ li $t2, 59
/* 0A2AE4 800A1EE4 A7AA0058 */ sh $t2, 0x58($sp)
/* 0A2AE8 800A1EE8 000B6080 */ sll $t4, $t3, 2
/* 0A2AEC 800A1EEC 018B6023 */ subu $t4, $t4, $t3
/* 0A2AF0 800A1EF0 000C6080 */ sll $t4, $t4, 2
/* 0A2AF4 800A1EF4 018B6021 */ addu $t4, $t4, $t3
/* 0A2AF8 800A1EF8 258D0066 */ addiu $t5, $t4, 0x66
/* 0A2AFC 800A1EFC A7AD005A */ sh $t5, 0x5a($sp)
/* 0A2B00 800A1F00 8FA40070 */ lw $a0, 0x70($sp)
/* 0A2B04 800A1F04 0C0299AA */ jal func_800A66A8
/* 0A2B08 800A1F08 27A50058 */ addiu $a1, $sp, 0x58
/* 0A2B0C 800A1F0C 8FBF003C */ lw $ra, 0x3c($sp)
/* 0A2B10 800A1F10 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0A2B14 800A1F14 8FB00028 */ lw $s0, 0x28($sp)
/* 0A2B18 800A1F18 8FB1002C */ lw $s1, 0x2c($sp)
/* 0A2B1C 800A1F1C 8FB20030 */ lw $s2, 0x30($sp)
/* 0A2B20 800A1F20 8FB30034 */ lw $s3, 0x34($sp)
/* 0A2B24 800A1F24 8FB40038 */ lw $s4, 0x38($sp)
/* 0A2B28 800A1F28 03E00008 */ jr $ra
/* 0A2B2C 800A1F2C 27BD0070 */ addiu $sp, $sp, 0x70
@@ -1,522 +0,0 @@
.section .late_rodata
glabel D_800F1CCC
.float 0.6
glabel jpt_800F1CD0
.word L800A3FA4, L800A4478, L800A4478, L800A4478
.word L800A3FA4, L800A3FA4, L800A3FA4, L800A3FA4
.word L800A3FA4, L800A3FA4, L800A40C4, L800A40C4
.word L800A40C4, L800A40C4, L800A40C4, L800A40C4
.word L800A412C, L800A412C, L800A42A8, L800A4308
.word L800A4308, L800A4478, L800A4478, L800A4478
.word L800A43C4, L800A4424, L800A4478, L800A4478
.word L800A4478, L800A3FA4
glabel D_800F1D48
.float 0.7
glabel D_800F1D4C
.float 0.45
glabel D_800F1D50
.float 0.8
glabel D_800F1D54
.float 0.67
glabel D_800F1D58
.float 0.67
glabel jpt_800F1D5C
.word L800A449C, L800A449C, L800A449C, L800A449C
.word L800A449C, L800A449C, L800A4528, L800A4528
.word L800A4528, L800A4528, L800A4528, L800A4528
.word L800A44B4, L800A44B4, L800A4528, L800A44CC
.word L800A44CC, L800A4528, L800A4528, L800A4528
.word L800A4528, L800A4528, L800A4528, L800A4528
.word L800A4528, L800A44E4
.section .text
glabel func_800A3E60
/* 0A4A60 800A3E60 27BDFF70 */ addiu $sp, $sp, -0x90
/* 0A4A64 800A3E64 AFBF0044 */ sw $ra, 0x44($sp)
/* 0A4A68 800A3E68 AFB30040 */ sw $s3, 0x40($sp)
/* 0A4A6C 800A3E6C AFB2003C */ sw $s2, 0x3c($sp)
/* 0A4A70 800A3E70 AFB10038 */ sw $s1, 0x38($sp)
/* 0A4A74 800A3E74 AFB00034 */ sw $s0, 0x34($sp)
/* 0A4A78 800A3E78 F7B80028 */ sdc1 $f24, 0x28($sp)
/* 0A4A7C 800A3E7C F7B60020 */ sdc1 $f22, 0x20($sp)
/* 0A4A80 800A3E80 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 0A4A84 800A3E84 8C820004 */ lw $v0, 4($a0)
/* 0A4A88 800A3E88 00809825 */ move $s3, $a0
/* 0A4A8C 800A3E8C 2401001F */ li $at, 31
/* 0A4A90 800A3E90 504001A6 */ beql $v0, $zero, .L800A452C
/* 0A4A94 800A3E94 8FBF0044 */ lw $ra, 0x44($sp)
/* 0A4A98 800A3E98 504101A4 */ beql $v0, $at, .L800A452C
/* 0A4A9C 800A3E9C 8FBF0044 */ lw $ra, 0x44($sp)
/* 0A4AA0 800A3EA0 0C024C36 */ jal set_text_color
/* 0A4AA4 800A3EA4 24040004 */ li $a0, 4
/* 0A4AA8 800A3EA8 3C188019 */ lui $t8, %hi(gCupSelection) # $t8, 0x8019
/* 0A4AAC 800A3EAC 3C098019 */ lui $t1, %hi(gCupCourseSelection) # $t1, 0x8019
/* 0A4AB0 800A3EB0 8129EE0B */ lb $t1, %lo(gCupCourseSelection)($t1)
/* 0A4AB4 800A3EB4 8318EE09 */ lb $t8, %lo(gCupSelection)($t8)
/* 0A4AB8 800A3EB8 3C0C800F */ lui $t4, %hi(gCupCourseOrder)
/* 0A4ABC 800A3EBC 00095040 */ sll $t2, $t1, 1
/* 0A4AC0 800A3EC0 0018C8C0 */ sll $t9, $t8, 3
/* 0A4AC4 800A3EC4 032A5821 */ addu $t3, $t9, $t2
/* 0A4AC8 800A3EC8 018B6021 */ addu $t4, $t4, $t3
/* 0A4ACC 800A3ECC 858C2BB4 */ lh $t4, %lo(gCupCourseOrder)($t4)
/* 0A4AD0 800A3ED0 3C01800F */ lui $at, %hi(D_800F1CCC) # $at, 0x800f
/* 0A4AD4 800A3ED4 C4381CCC */ lwc1 $f24, %lo(D_800F1CCC)($at)
/* 0A4AD8 800A3ED8 8E64000C */ lw $a0, 0xc($s3)
/* 0A4ADC 800A3EDC 8E6E0010 */ lw $t6, 0x10($s3)
/* 0A4AE0 800A3EE0 3C06800E */ lui $a2, %hi(D_800E7574)
/* 0A4AE4 800A3EE4 000C6880 */ sll $t5, $t4, 2
/* 0A4AE8 800A3EE8 00CD3021 */ addu $a2, $a2, $t5
/* 0A4AEC 800A3EEC 240F0019 */ li $t7, 25
/* 0A4AF0 800A3EF0 8CC67574 */ lw $a2, %lo(D_800E7574)($a2)
/* 0A4AF4 800A3EF4 00003825 */ move $a3, $zero
/* 0A4AF8 800A3EF8 E7B80014 */ swc1 $f24, 0x14($sp)
/* 0A4AFC 800A3EFC E7B80010 */ swc1 $f24, 0x10($sp)
/* 0A4B00 800A3F00 24840055 */ addiu $a0, $a0, 0x55
/* 0A4B04 800A3F04 0C024DBB */ jal draw_text
/* 0A4B08 800A3F08 01EE2823 */ subu $a1, $t7, $t6
/* 0A4B0C 800A3F0C 0C024C36 */ jal set_text_color
/* 0A4B10 800A3F10 24040003 */ li $a0, 3
/* 0A4B14 800A3F14 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A4B18 800A3F18 4481B000 */ mtc1 $at, $f22
/* 0A4B1C 800A3F1C 8E64000C */ lw $a0, 0xc($s3)
/* 0A4B20 800A3F20 8E6F0010 */ lw $t7, 0x10($s3)
/* 0A4B24 800A3F24 240E0028 */ li $t6, 40
/* 0A4B28 800A3F28 3C06800E */ lui $a2, %hi(D_800E7730) # $a2, 0x800e
/* 0A4B2C 800A3F2C 8CC67730 */ lw $a2, %lo(D_800E7730)($a2)
/* 0A4B30 800A3F30 00003825 */ move $a3, $zero
/* 0A4B34 800A3F34 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A4B38 800A3F38 E7B60010 */ swc1 $f22, 0x10($sp)
/* 0A4B3C 800A3F3C 24840055 */ addiu $a0, $a0, 0x55
/* 0A4B40 800A3F40 0C024DBB */ jal draw_text
/* 0A4B44 800A3F44 01CF2823 */ subu $a1, $t6, $t7
/* 0A4B48 800A3F48 00008825 */ move $s1, $zero
/* 0A4B4C 800A3F4C 00008025 */ move $s0, $zero
.L800A3F50:
/* 0A4B50 800A3F50 8E780010 */ lw $t8, 0x10($s3)
/* 0A4B54 800A3F54 8E65000C */ lw $a1, 0xc($s3)
/* 0A4B58 800A3F58 02202025 */ move $a0, $s1
/* 0A4B5C 800A3F5C 02183023 */ subu $a2, $s0, $t8
/* 0A4B60 800A3F60 24C60037 */ addiu $a2, $a2, 0x37
/* 0A4B64 800A3F64 0C029154 */ jal func_800A4550
/* 0A4B68 800A3F68 24A50026 */ addiu $a1, $a1, 0x26
/* 0A4B6C 800A3F6C 26310001 */ addiu $s1, $s1, 1
/* 0A4B70 800A3F70 2A210004 */ slti $at, $s1, 4
/* 0A4B74 800A3F74 1420FFF6 */ bnez $at, .L800A3F50
/* 0A4B78 800A3F78 2610000F */ addiu $s0, $s0, 0xf
/* 0A4B7C 800A3F7C 8E630004 */ lw $v1, 4($s3)
/* 0A4B80 800A3F80 2469FFFF */ addiu $t1, $v1, -1
/* 0A4B84 800A3F84 2D21001E */ sltiu $at, $t1, 0x1e
/* 0A4B88 800A3F88 1020013B */ beqz $at, .L800A4478
/* 0A4B8C 800A3F8C 00094880 */ sll $t1, $t1, 2
/* 0A4B90 800A3F90 3C01800F */ lui $at, %hi(jpt_800F1CD0)
/* 0A4B94 800A3F94 00290821 */ addu $at, $at, $t1
/* 0A4B98 800A3F98 8C291CD0 */ lw $t1, %lo(jpt_800F1CD0)($at)
/* 0A4B9C 800A3F9C 01200008 */ jr $t1
/* 0A4BA0 800A3FA0 00000000 */ nop
glabel L800A3FA4
/* 0A4BA4 800A3FA4 3C10800E */ lui $s0, %hi(D_800E775C) # $s0, 0x800e
/* 0A4BA8 800A3FA8 2610775C */ addiu $s0, %lo(D_800E775C) # addiu $s0, $s0, 0x775c
/* 0A4BAC 800A3FAC 00008825 */ move $s1, $zero
/* 0A4BB0 800A3FB0 00009025 */ move $s2, $zero
.L800A3FB4:
/* 0A4BB4 800A3FB4 8E640004 */ lw $a0, 4($s3)
/* 0A4BB8 800A3FB8 AFA0006C */ sw $zero, 0x6c($sp)
/* 0A4BBC 800A3FBC 02202825 */ move $a1, $s1
/* 0A4BC0 800A3FC0 24060001 */ li $a2, 1
/* 0A4BC4 800A3FC4 0C024870 */ jal func_800921C0
/* 0A4BC8 800A3FC8 2484FFFB */ addiu $a0, $a0, -5
/* 0A4BCC 800A3FCC 24010004 */ li $at, 4
/* 0A4BD0 800A3FD0 12210006 */ beq $s1, $at, .L800A3FEC
/* 0A4BD4 800A3FD4 8FA3006C */ lw $v1, 0x6c($sp)
/* 0A4BD8 800A3FD8 24010005 */ li $at, 5
/* 0A4BDC 800A3FDC 1221000A */ beq $s1, $at, .L800A4008
/* 0A4BE0 800A3FE0 3C0A8016 */ lui $t2, %hi(D_80162DD4) # $t2, 0x8016
/* 0A4BE4 800A3FE4 1000000C */ b .L800A4018
/* 0A4BE8 800A3FE8 00000000 */ nop
.L800A3FEC:
/* 0A4BEC 800A3FEC 3C198016 */ lui $t9, %hi(D_80162DF8) # $t9, 0x8016
/* 0A4BF0 800A3FF0 8F392DF8 */ lw $t9, %lo(D_80162DF8)($t9)
/* 0A4BF4 800A3FF4 24010001 */ li $at, 1
/* 0A4BF8 800A3FF8 17210007 */ bne $t9, $at, .L800A4018
/* 0A4BFC 800A3FFC 00000000 */ nop
/* 0A4C00 800A4000 10000005 */ b .L800A4018
/* 0A4C04 800A4004 24030001 */ li $v1, 1
.L800A4008:
/* 0A4C08 800A4008 954A2DD4 */ lhu $t2, %lo(D_80162DD4)($t2)
/* 0A4C0C 800A400C 11400002 */ beqz $t2, .L800A4018
/* 0A4C10 800A4010 00000000 */ nop
/* 0A4C14 800A4014 24030002 */ li $v1, 2
.L800A4018:
/* 0A4C18 800A4018 10600019 */ beqz $v1, .L800A4080
/* 0A4C1C 800A401C 241900B2 */ li $t9, 178
/* 0A4C20 800A4020 0C024C36 */ jal set_text_color
/* 0A4C24 800A4024 00002025 */ move $a0, $zero
/* 0A4C28 800A4028 3C088015 */ lui $t0, %hi(gDisplayListHead) # $t0, 0x8015
/* 0A4C2C 800A402C 25080298 */ addiu $t0, %lo(gDisplayListHead) # addiu $t0, $t0, 0x298
/* 0A4C30 800A4030 8D030000 */ lw $v1, ($t0)
/* 0A4C34 800A4034 3C0CFA00 */ lui $t4, 0xfa00
/* 0A4C38 800A4038 240D0096 */ li $t5, 150
/* 0A4C3C 800A403C 246B0008 */ addiu $t3, $v1, 8
/* 0A4C40 800A4040 AD0B0000 */ sw $t3, ($t0)
/* 0A4C44 800A4044 AC6D0004 */ sw $t5, 4($v1)
/* 0A4C48 800A4048 AC6C0000 */ sw $t4, ($v1)
/* 0A4C4C 800A404C 8E780010 */ lw $t8, 0x10($s3)
/* 0A4C50 800A4050 8E6E000C */ lw $t6, 0xc($s3)
/* 0A4C54 800A4054 240F00B2 */ li $t7, 178
/* 0A4C58 800A4058 03122821 */ addu $a1, $t8, $s2
/* 0A4C5C 800A405C 24A50093 */ addiu $a1, $a1, 0x93
/* 0A4C60 800A4060 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A4C64 800A4064 E7B60010 */ swc1 $f22, 0x10($sp)
/* 0A4C68 800A4068 8E060004 */ lw $a2, 4($s0)
/* 0A4C6C 800A406C 00003825 */ move $a3, $zero
/* 0A4C70 800A4070 0C024CD6 */ jal func_80093358
/* 0A4C74 800A4074 01EE2023 */ subu $a0, $t7, $t6
/* 0A4C78 800A4078 1000000C */ b .L800A40AC
/* 0A4C7C 800A407C 26310001 */ addiu $s1, $s1, 1
.L800A4080:
/* 0A4C80 800A4080 8E6A0010 */ lw $t2, 0x10($s3)
/* 0A4C84 800A4084 8E69000C */ lw $t1, 0xc($s3)
/* 0A4C88 800A4088 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A4C8C 800A408C 01522821 */ addu $a1, $t2, $s2
/* 0A4C90 800A4090 24A50093 */ addiu $a1, $a1, 0x93
/* 0A4C94 800A4094 E7B60010 */ swc1 $f22, 0x10($sp)
/* 0A4C98 800A4098 8E060004 */ lw $a2, 4($s0)
/* 0A4C9C 800A409C 00003825 */ move $a3, $zero
/* 0A4CA0 800A40A0 0C024CC9 */ jal func_80093324
/* 0A4CA4 800A40A4 03292023 */ subu $a0, $t9, $t1
/* 0A4CA8 800A40A8 26310001 */ addiu $s1, $s1, 1
.L800A40AC:
/* 0A4CAC 800A40AC 24010006 */ li $at, 6
/* 0A4CB0 800A40B0 2652000D */ addiu $s2, $s2, 0xd
/* 0A4CB4 800A40B4 1621FFBF */ bne $s1, $at, .L800A3FB4
/* 0A4CB8 800A40B8 26100004 */ addiu $s0, $s0, 4
/* 0A4CBC 800A40BC 100000EE */ b .L800A4478
/* 0A4CC0 800A40C0 8E630004 */ lw $v1, 4($s3)
glabel L800A40C4
/* 0A4CC4 800A40C4 0C024C36 */ jal set_text_color
/* 0A4CC8 800A40C8 24040003 */ li $a0, 3
/* 0A4CCC 800A40CC 8E630004 */ lw $v1, 4($s3)
/* 0A4CD0 800A40D0 3C0D800E */ lui $t5, %hi(D_800E798C) # $t5, 0x800e
/* 0A4CD4 800A40D4 25AD798C */ addiu $t5, %lo(D_800E798C) # addiu $t5, $t5, 0x798c
/* 0A4CD8 800A40D8 2463FFF5 */ addiu $v1, $v1, -0xb
/* 0A4CDC 800A40DC 000358C0 */ sll $t3, $v1, 3
/* 0A4CE0 800A40E0 01635823 */ subu $t3, $t3, $v1
/* 0A4CE4 800A40E4 000B6080 */ sll $t4, $t3, 2
/* 0A4CE8 800A40E8 018D1021 */ addu $v0, $t4, $t5
/* 0A4CEC 800A40EC 2410008C */ li $s0, 140
/* 0A4CF0 800A40F0 241100E7 */ li $s1, 231
.L800A40F4:
/* 0A4CF4 800A40F4 240400A2 */ li $a0, 162
/* 0A4CF8 800A40F8 02002825 */ move $a1, $s0
/* 0A4CFC 800A40FC 8C460000 */ lw $a2, ($v0)
/* 0A4D00 800A4100 00003825 */ move $a3, $zero
/* 0A4D04 800A4104 E7B80010 */ swc1 $f24, 0x10($sp)
/* 0A4D08 800A4108 E7B80014 */ swc1 $f24, 0x14($sp)
/* 0A4D0C 800A410C 0C024CC9 */ jal func_80093324
/* 0A4D10 800A4110 AFA20050 */ sw $v0, 0x50($sp)
/* 0A4D14 800A4114 8FA20050 */ lw $v0, 0x50($sp)
/* 0A4D18 800A4118 2610000D */ addiu $s0, $s0, 0xd
/* 0A4D1C 800A411C 1611FFF5 */ bne $s0, $s1, .L800A40F4
/* 0A4D20 800A4120 24420004 */ addiu $v0, $v0, 4
/* 0A4D24 800A4124 100000D4 */ b .L800A4478
/* 0A4D28 800A4128 8E630004 */ lw $v1, 4($s3)
glabel L800A412C
/* 0A4D2C 800A412C 0C024C36 */ jal set_text_color
/* 0A4D30 800A4130 24040001 */ li $a0, 1
/* 0A4D34 800A4134 3C10800E */ lui $s0, %hi(D_800E7A3C) # $s0, 0x800e
/* 0A4D38 800A4138 3C01800F */ lui $at, %hi(D_800F1D48) # $at, 0x800f
/* 0A4D3C 800A413C 3C11800E */ lui $s1, %hi(D_800E7A44) # $s1, 0x800e
/* 0A4D40 800A4140 26317A44 */ addiu $s1, %lo(D_800E7A44) # addiu $s1, $s1, 0x7a44
/* 0A4D44 800A4144 C4341D48 */ lwc1 $f20, %lo(D_800F1D48)($at)
/* 0A4D48 800A4148 26107A3C */ addiu $s0, %lo(D_800E7A3C) # addiu $s0, $s0, 0x7a3c
/* 0A4D4C 800A414C 00009025 */ move $s2, $zero
.L800A4150:
/* 0A4D50 800A4150 8E6F0010 */ lw $t7, 0x10($s3)
/* 0A4D54 800A4154 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A4D58 800A4158 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4D5C 800A415C 01F22821 */ addu $a1, $t7, $s2
/* 0A4D60 800A4160 24A5008C */ addiu $a1, $a1, 0x8c
/* 0A4D64 800A4164 240400A5 */ li $a0, 165
/* 0A4D68 800A4168 8E060000 */ lw $a2, ($s0)
/* 0A4D6C 800A416C 0C024CC9 */ jal func_80093324
/* 0A4D70 800A4170 00003825 */ move $a3, $zero
/* 0A4D74 800A4174 26100004 */ addiu $s0, $s0, 4
/* 0A4D78 800A4178 0211082B */ sltu $at, $s0, $s1
/* 0A4D7C 800A417C 1420FFF4 */ bnez $at, .L800A4150
/* 0A4D80 800A4180 2652000D */ addiu $s2, $s2, 0xd
/* 0A4D84 800A4184 3C128019 */ lui $s2, %hi(D_8018EE10) # $s2, 0x8019
/* 0A4D88 800A4188 3C01800F */ lui $at, %hi(D_800F1D4C) # $at, 0x800f
/* 0A4D8C 800A418C C4341D4C */ lwc1 $f20, %lo(D_800F1D4C)($at)
/* 0A4D90 800A4190 2652EE10 */ addiu $s2, %lo(D_8018EE10) # addiu $s2, $s2, -0x11f0
/* 0A4D94 800A4194 00008825 */ move $s1, $zero
/* 0A4D98 800A4198 241000AA */ li $s0, 170
.L800A419C:
/* 0A4D9C 800A419C 8E640004 */ lw $a0, 4($s3)
/* 0A4DA0 800A41A0 02202825 */ move $a1, $s1
/* 0A4DA4 800A41A4 24060001 */ li $a2, 1
/* 0A4DA8 800A41A8 0C024870 */ jal func_800921C0
/* 0A4DAC 800A41AC 2484FFEF */ addiu $a0, $a0, -0x11
/* 0A4DB0 800A41B0 26240001 */ addiu $a0, $s1, 1
/* 0A4DB4 800A41B4 AFA40054 */ sw $a0, 0x54($sp)
/* 0A4DB8 800A41B8 0C029E25 */ jal convert_number_to_ascii
/* 0A4DBC 800A41BC 27A50060 */ addiu $a1, $sp, 0x60
/* 0A4DC0 800A41C0 8E6E000C */ lw $t6, 0xc($s3)
/* 0A4DC4 800A41C4 241800B1 */ li $t8, 177
/* 0A4DC8 800A41C8 E7B80014 */ swc1 $f24, 0x14($sp)
/* 0A4DCC 800A41CC E7B80010 */ swc1 $f24, 0x10($sp)
/* 0A4DD0 800A41D0 02002825 */ move $a1, $s0
/* 0A4DD4 800A41D4 27A60061 */ addiu $a2, $sp, 0x61
/* 0A4DD8 800A41D8 00003825 */ move $a3, $zero
/* 0A4DDC 800A41DC 0C024CC9 */ jal func_80093324
/* 0A4DE0 800A41E0 030E2023 */ subu $a0, $t8, $t6
/* 0A4DE4 800A41E4 92590004 */ lbu $t9, 4($s2)
/* 0A4DE8 800A41E8 240C00BB */ li $t4, 187
/* 0A4DEC 800A41EC 02002825 */ move $a1, $s0
/* 0A4DF0 800A41F0 1720000D */ bnez $t9, .L800A4228
/* 0A4DF4 800A41F4 3C0A800F */ lui $t2, %hi(gCupCourseOrder)
/* 0A4DF8 800A41F8 8E69000C */ lw $t1, 0xc($s3)
/* 0A4DFC 800A41FC 240A00BB */ li $t2, 187
/* 0A4E00 800A4200 3C06800E */ lui $a2, %hi(D_800E7A44) # $a2, 0x800e
/* 0A4E04 800A4204 8CC67A44 */ lw $a2, %lo(D_800E7A44)($a2)
/* 0A4E08 800A4208 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A4E0C 800A420C E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4E10 800A4210 02002825 */ move $a1, $s0
/* 0A4E14 800A4214 00003825 */ move $a3, $zero
/* 0A4E18 800A4218 0C024CC9 */ jal func_80093324
/* 0A4E1C 800A421C 01492023 */ subu $a0, $t2, $t1
/* 0A4E20 800A4220 1000001B */ b .L800A4290
/* 0A4E24 800A4224 8FB10054 */ lw $s1, 0x54($sp)
.L800A4228:
/* 0A4E28 800A4228 82420005 */ lb $v0, 5($s2)
/* 0A4E2C 800A422C 8E6B000C */ lw $t3, 0xc($s3)
/* 0A4E30 800A4230 3C06800E */ lui $a2, %hi(D_800E75C4)
/* 0A4E34 800A4234 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A4E38 800A4238 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4E3C 800A423C 00003825 */ move $a3, $zero
/* 0A4E40 800A4240 018B2023 */ subu $a0, $t4, $t3
/* 0A4E44 800A4244 04410003 */ bgez $v0, .L800A4254
/* 0A4E48 800A4248 00026883 */ sra $t5, $v0, 2
/* 0A4E4C 800A424C 24410003 */ addiu $at, $v0, 3
/* 0A4E50 800A4250 00016883 */ sra $t5, $at, 2
.L800A4254:
/* 0A4E54 800A4254 000D78C0 */ sll $t7, $t5, 3
/* 0A4E58 800A4258 04410004 */ bgez $v0, .L800A426C
/* 0A4E5C 800A425C 30580003 */ andi $t8, $v0, 3
/* 0A4E60 800A4260 13000002 */ beqz $t8, .L800A426C
/* 0A4E64 800A4264 00000000 */ nop
/* 0A4E68 800A4268 2718FFFC */ addiu $t8, $t8, -4
.L800A426C:
/* 0A4E6C 800A426C 00187040 */ sll $t6, $t8, 1
/* 0A4E70 800A4270 01EEC821 */ addu $t9, $t7, $t6
/* 0A4E74 800A4274 01595021 */ addu $t2, $t2, $t9
/* 0A4E78 800A4278 854A2BB4 */ lh $t2, %lo(gCupCourseOrder)($t2)
/* 0A4E7C 800A427C 000A4880 */ sll $t1, $t2, 2
/* 0A4E80 800A4280 00C93021 */ addu $a2, $a2, $t1
/* 0A4E84 800A4284 0C024CC9 */ jal func_80093324
/* 0A4E88 800A4288 8CC675C4 */ lw $a2, %lo(D_800E75C4)($a2)
/* 0A4E8C 800A428C 8FB10054 */ lw $s1, 0x54($sp)
.L800A4290:
/* 0A4E90 800A4290 24010002 */ li $at, 2
/* 0A4E94 800A4294 2610001E */ addiu $s0, $s0, 0x1e
/* 0A4E98 800A4298 1621FFC0 */ bne $s1, $at, .L800A419C
/* 0A4E9C 800A429C 26520080 */ addiu $s2, $s2, 0x80
/* 0A4EA0 800A42A0 10000075 */ b .L800A4478
/* 0A4EA4 800A42A4 8E630004 */ lw $v1, 4($s3)
glabel L800A42A8
/* 0A4EA8 800A42A8 0C024C36 */ jal set_text_color
/* 0A4EAC 800A42AC 24040003 */ li $a0, 3
/* 0A4EB0 800A42B0 3C02800E */ lui $v0, %hi(D_800E7A48) # $v0, 0x800e
/* 0A4EB4 800A42B4 3C01800F */ lui $at, %hi(D_800F1D50) # $at, 0x800f
/* 0A4EB8 800A42B8 3C11800E */ lui $s1, %hi(D_800E7A54) # $s1, 0x800e
/* 0A4EBC 800A42BC 26317A54 */ addiu $s1, %lo(D_800E7A54) # addiu $s1, $s1, 0x7a54
/* 0A4EC0 800A42C0 C4341D50 */ lwc1 $f20, %lo(D_800F1D50)($at)
/* 0A4EC4 800A42C4 24427A48 */ addiu $v0, %lo(D_800E7A48) # addiu $v0, $v0, 0x7a48
/* 0A4EC8 800A42C8 24100093 */ li $s0, 147
/* 0A4ECC 800A42CC 240400AA */ li $a0, 170
.L800A42D0:
/* 0A4ED0 800A42D0 02002825 */ move $a1, $s0
/* 0A4ED4 800A42D4 8C460000 */ lw $a2, ($v0)
/* 0A4ED8 800A42D8 00003825 */ move $a3, $zero
/* 0A4EDC 800A42DC E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4EE0 800A42E0 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A4EE4 800A42E4 0C024CC9 */ jal func_80093324
/* 0A4EE8 800A42E8 AFA20050 */ sw $v0, 0x50($sp)
/* 0A4EEC 800A42EC 8FA20050 */ lw $v0, 0x50($sp)
/* 0A4EF0 800A42F0 2610000D */ addiu $s0, $s0, 0xd
/* 0A4EF4 800A42F4 24420004 */ addiu $v0, $v0, 4
/* 0A4EF8 800A42F8 5451FFF5 */ bnel $v0, $s1, .L800A42D0
/* 0A4EFC 800A42FC 240400AA */ li $a0, 170
/* 0A4F00 800A4300 1000005D */ b .L800A4478
/* 0A4F04 800A4304 8E630004 */ lw $v1, 4($s3)
glabel L800A4308
/* 0A4F08 800A4308 0C024C36 */ jal set_text_color
/* 0A4F0C 800A430C 24040003 */ li $a0, 3
/* 0A4F10 800A4310 3C10800E */ lui $s0, %hi(D_800E7A60) # $s0, 0x800e
/* 0A4F14 800A4314 3C01800F */ lui $at, %hi(D_800F1D54) # $at, 0x800f
/* 0A4F18 800A4318 3C11800E */ lui $s1, %hi(D_800E7A6C) # $s1, 0x800e
/* 0A4F1C 800A431C 26317A6C */ addiu $s1, %lo(D_800E7A6C) # addiu $s1, $s1, 0x7a6c
/* 0A4F20 800A4320 C4341D54 */ lwc1 $f20, %lo(D_800F1D54)($at)
/* 0A4F24 800A4324 26107A60 */ addiu $s0, %lo(D_800E7A60) # addiu $s0, $s0, 0x7a60
/* 0A4F28 800A4328 00009025 */ move $s2, $zero
.L800A432C:
/* 0A4F2C 800A432C 8E6C0010 */ lw $t4, 0x10($s3)
/* 0A4F30 800A4330 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A4F34 800A4334 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4F38 800A4338 01922821 */ addu $a1, $t4, $s2
/* 0A4F3C 800A433C 24A5008C */ addiu $a1, $a1, 0x8c
/* 0A4F40 800A4340 240400A3 */ li $a0, 163
/* 0A4F44 800A4344 8E060000 */ lw $a2, ($s0)
/* 0A4F48 800A4348 0C024CC9 */ jal func_80093324
/* 0A4F4C 800A434C 00003825 */ move $a3, $zero
/* 0A4F50 800A4350 26100004 */ addiu $s0, $s0, 4
/* 0A4F54 800A4354 0211082B */ sltu $at, $s0, $s1
/* 0A4F58 800A4358 1420FFF4 */ bnez $at, .L800A432C
/* 0A4F5C 800A435C 2652000D */ addiu $s2, $s2, 0xd
/* 0A4F60 800A4360 3C12800E */ lui $s2, %hi(D_800E7A6C) # $s2, 0x800e
/* 0A4F64 800A4364 26527A6C */ addiu $s2, %lo(D_800E7A6C) # addiu $s2, $s2, 0x7a6c
/* 0A4F68 800A4368 00008825 */ move $s1, $zero
/* 0A4F6C 800A436C 241000B9 */ li $s0, 185
.L800A4370:
/* 0A4F70 800A4370 8E640004 */ lw $a0, 4($s3)
/* 0A4F74 800A4374 02202825 */ move $a1, $s1
/* 0A4F78 800A4378 24060001 */ li $a2, 1
/* 0A4F7C 800A437C 0C024870 */ jal func_800921C0
/* 0A4F80 800A4380 2484FFEC */ addiu $a0, $a0, -0x14
/* 0A4F84 800A4384 8E6B000C */ lw $t3, 0xc($s3)
/* 0A4F88 800A4388 240D00C8 */ li $t5, 200
/* 0A4F8C 800A438C E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A4F90 800A4390 E7B60010 */ swc1 $f22, 0x10($sp)
/* 0A4F94 800A4394 02002825 */ move $a1, $s0
/* 0A4F98 800A4398 8E460000 */ lw $a2, ($s2)
/* 0A4F9C 800A439C 00003825 */ move $a3, $zero
/* 0A4FA0 800A43A0 0C024CC9 */ jal func_80093324
/* 0A4FA4 800A43A4 01AB2023 */ subu $a0, $t5, $t3
/* 0A4FA8 800A43A8 26310001 */ addiu $s1, $s1, 1
/* 0A4FAC 800A43AC 24010002 */ li $at, 2
/* 0A4FB0 800A43B0 2610000F */ addiu $s0, $s0, 0xf
/* 0A4FB4 800A43B4 1621FFEE */ bne $s1, $at, .L800A4370
/* 0A4FB8 800A43B8 26520004 */ addiu $s2, $s2, 4
/* 0A4FBC 800A43BC 1000002E */ b .L800A4478
/* 0A4FC0 800A43C0 8E630004 */ lw $v1, 4($s3)
glabel L800A43C4
/* 0A4FC4 800A43C4 0C024C36 */ jal set_text_color
/* 0A4FC8 800A43C8 24040003 */ li $a0, 3
/* 0A4FCC 800A43CC 3C02800E */ lui $v0, %hi(D_800E7A74) # $v0, 0x800e
/* 0A4FD0 800A43D0 3C01800F */ lui $at, %hi(D_800F1D58) # $at, 0x800f
/* 0A4FD4 800A43D4 3C11800E */ lui $s1, %hi(D_800E7A80) # $s1, 0x800e
/* 0A4FD8 800A43D8 26317A80 */ addiu $s1, %lo(D_800E7A80) # addiu $s1, $s1, 0x7a80
/* 0A4FDC 800A43DC C4341D58 */ lwc1 $f20, %lo(D_800F1D58)($at)
/* 0A4FE0 800A43E0 24427A74 */ addiu $v0, %lo(D_800E7A74) # addiu $v0, $v0, 0x7a74
/* 0A4FE4 800A43E4 24100093 */ li $s0, 147
/* 0A4FE8 800A43E8 240400A3 */ li $a0, 163
.L800A43EC:
/* 0A4FEC 800A43EC 02002825 */ move $a1, $s0
/* 0A4FF0 800A43F0 8C460000 */ lw $a2, ($v0)
/* 0A4FF4 800A43F4 00003825 */ move $a3, $zero
/* 0A4FF8 800A43F8 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A4FFC 800A43FC E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5000 800A4400 0C024CC9 */ jal func_80093324
/* 0A5004 800A4404 AFA20050 */ sw $v0, 0x50($sp)
/* 0A5008 800A4408 8FA20050 */ lw $v0, 0x50($sp)
/* 0A500C 800A440C 2610000D */ addiu $s0, $s0, 0xd
/* 0A5010 800A4410 24420004 */ addiu $v0, $v0, 4
/* 0A5014 800A4414 5451FFF5 */ bnel $v0, $s1, .L800A43EC
/* 0A5018 800A4418 240400A3 */ li $a0, 163
/* 0A501C 800A441C 10000016 */ b .L800A4478
/* 0A5020 800A4420 8E630004 */ lw $v1, 4($s3)
glabel L800A4424
/* 0A5024 800A4424 0C024C36 */ jal set_text_color
/* 0A5028 800A4428 24040003 */ li $a0, 3
/* 0A502C 800A442C 3C02800E */ lui $v0, %hi(D_800E7A80) # $v0, 0x800e
/* 0A5030 800A4430 3C11800E */ lui $s1, %hi(D_800E7A88) # $s1, 0x800e
/* 0A5034 800A4434 26317A88 */ addiu $s1, %lo(D_800E7A88) # addiu $s1, $s1, 0x7a88
/* 0A5038 800A4438 24427A80 */ addiu $v0, %lo(D_800E7A80) # addiu $v0, $v0, 0x7a80
/* 0A503C 800A443C 24100093 */ li $s0, 147
/* 0A5040 800A4440 240400AA */ li $a0, 170
.L800A4444:
/* 0A5044 800A4444 02002825 */ move $a1, $s0
/* 0A5048 800A4448 8C460000 */ lw $a2, ($v0)
/* 0A504C 800A444C 00003825 */ move $a3, $zero
/* 0A5050 800A4450 E7B60010 */ swc1 $f22, 0x10($sp)
/* 0A5054 800A4454 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A5058 800A4458 0C024CC9 */ jal func_80093324
/* 0A505C 800A445C AFA20050 */ sw $v0, 0x50($sp)
/* 0A5060 800A4460 8FA20050 */ lw $v0, 0x50($sp)
/* 0A5064 800A4464 2610000D */ addiu $s0, $s0, 0xd
/* 0A5068 800A4468 24420004 */ addiu $v0, $v0, 4
/* 0A506C 800A446C 5451FFF5 */ bnel $v0, $s1, .L800A4444
/* 0A5070 800A4470 240400AA */ li $a0, 170
/* 0A5074 800A4474 8E630004 */ lw $v1, 4($s3)
.L800A4478:
glabel L800A4478
/* 0A5078 800A4478 2478FFFB */ addiu $t8, $v1, -5
/* 0A507C 800A447C 2F01001A */ sltiu $at, $t8, 0x1a
/* 0A5080 800A4480 10200029 */ beqz $at, .L800A4528
/* 0A5084 800A4484 0018C080 */ sll $t8, $t8, 2
/* 0A5088 800A4488 3C01800F */ lui $at, %hi(jpt_800F1D5C)
/* 0A508C 800A448C 00380821 */ addu $at, $at, $t8
/* 0A5090 800A4490 8C381D5C */ lw $t8, %lo(jpt_800F1D5C)($at)
/* 0A5094 800A4494 03000008 */ jr $t8
/* 0A5098 800A4498 00000000 */ nop
glabel L800A449C
/* 0A509C 800A449C 000378C0 */ sll $t7, $v1, 3
/* 0A50A0 800A44A0 3C19800E */ lui $t9, %hi(D_800E7390) # $t9, 0x800e
/* 0A50A4 800A44A4 27397390 */ addiu $t9, %lo(D_800E7390) # addiu $t9, $t9, 0x7390
/* 0A50A8 800A44A8 25EEFFD8 */ addiu $t6, $t7, -0x28
/* 0A50AC 800A44AC 10000013 */ b .L800A44FC
/* 0A50B0 800A44B0 01D91021 */ addu $v0, $t6, $t9
glabel L800A44B4
/* 0A50B4 800A44B4 000350C0 */ sll $t2, $v1, 3
/* 0A50B8 800A44B8 3C0C800E */ lui $t4, %hi(D_800E73C0) # $t4, 0x800e
/* 0A50BC 800A44BC 258C73C0 */ addiu $t4, %lo(D_800E73C0) # addiu $t4, $t4, 0x73c0
/* 0A50C0 800A44C0 2549FF78 */ addiu $t1, $t2, -0x88
/* 0A50C4 800A44C4 1000000D */ b .L800A44FC
/* 0A50C8 800A44C8 012C1021 */ addu $v0, $t1, $t4
glabel L800A44CC
/* 0A50CC 800A44CC 000368C0 */ sll $t5, $v1, 3
/* 0A50D0 800A44D0 3C18800E */ lui $t8, %hi(D_800E73D0) # $t8, 0x800e
/* 0A50D4 800A44D4 271873D0 */ addiu $t8, %lo(D_800E73D0) # addiu $t8, $t8, 0x73d0
/* 0A50D8 800A44D8 25ABFF60 */ addiu $t3, $t5, -0xa0
/* 0A50DC 800A44DC 10000007 */ b .L800A44FC
/* 0A50E0 800A44E0 01781021 */ addu $v0, $t3, $t8
glabel L800A44E4
/* 0A50E4 800A44E4 8E6F001C */ lw $t7, 0x1c($s3)
/* 0A50E8 800A44E8 3C0A800E */ lui $t2, %hi(D_800E7390) # $t2, 0x800e
/* 0A50EC 800A44EC 254A7390 */ addiu $t2, %lo(D_800E7390) # addiu $t2, $t2, 0x7390
/* 0A50F0 800A44F0 000F70C0 */ sll $t6, $t7, 3
/* 0A50F4 800A44F4 25D9FFD8 */ addiu $t9, $t6, -0x28
/* 0A50F8 800A44F8 032A1021 */ addu $v0, $t9, $t2
.L800A44FC:
/* 0A50FC 800A44FC 84490000 */ lh $t1, ($v0)
/* 0A5100 800A4500 8E6C000C */ lw $t4, 0xc($s3)
/* 0A5104 800A4504 02602025 */ move $a0, $s3
/* 0A5108 800A4508 27A50084 */ addiu $a1, $sp, 0x84
/* 0A510C 800A450C 012C6823 */ subu $t5, $t1, $t4
/* 0A5110 800A4510 A7AD0084 */ sh $t5, 0x84($sp)
/* 0A5114 800A4514 8E780010 */ lw $t8, 0x10($s3)
/* 0A5118 800A4518 844B0002 */ lh $t3, 2($v0)
/* 0A511C 800A451C 01787821 */ addu $t7, $t3, $t8
/* 0A5120 800A4520 0C0299AA */ jal func_800A66A8
/* 0A5124 800A4524 A7AF0086 */ sh $t7, 0x86($sp)
.L800A4528:
glabel L800A4528
/* 0A5128 800A4528 8FBF0044 */ lw $ra, 0x44($sp)
.L800A452C:
/* 0A512C 800A452C D7B40018 */ ldc1 $f20, 0x18($sp)
/* 0A5130 800A4530 D7B60020 */ ldc1 $f22, 0x20($sp)
/* 0A5134 800A4534 D7B80028 */ ldc1 $f24, 0x28($sp)
/* 0A5138 800A4538 8FB00034 */ lw $s0, 0x34($sp)
/* 0A513C 800A453C 8FB10038 */ lw $s1, 0x38($sp)
/* 0A5140 800A4540 8FB2003C */ lw $s2, 0x3c($sp)
/* 0A5144 800A4544 8FB30040 */ lw $s3, 0x40($sp)
/* 0A5148 800A4548 03E00008 */ jr $ra
/* 0A514C 800A454C 27BD0090 */ addiu $sp, $sp, 0x90
@@ -2,10 +2,11 @@
glabel D_800F0C54
.asciiz "'"
.balign 4
glabel D_800F0C58
.asciiz "\""
.balign 4
.section .late_rodata
@@ -1,105 +0,0 @@
glabel func_800A4EF8
/* 0A5AF8 800A4EF8 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 0A5AFC 800A4EFC AFB00038 */ sw $s0, 0x38($sp)
/* 0A5B00 800A4F00 3C10800E */ lui $s0, %hi(gIsGamePaused) # $s0, 0x800e
/* 0A5B04 800A4F04 2610C5FC */ addiu $s0, %lo(gIsGamePaused) # addiu $s0, $s0, -0x3a04
/* 0A5B08 800A4F08 960E0000 */ lhu $t6, ($s0)
/* 0A5B0C 800A4F0C 3C198016 */ lui $t9, %hi(D_8015F480) # $t9, 0x8016
/* 0A5B10 800A4F10 2739F480 */ addiu $t9, %lo(D_8015F480) # addiu $t9, $t9, -0xb80
/* 0A5B14 800A4F14 000E7980 */ sll $t7, $t6, 6
/* 0A5B18 800A4F18 25F8FFC0 */ addiu $t8, $t7, -0x40
/* 0A5B1C 800A4F1C AFBF0054 */ sw $ra, 0x54($sp)
/* 0A5B20 800A4F20 AFB60050 */ sw $s6, 0x50($sp)
/* 0A5B24 800A4F24 AFB5004C */ sw $s5, 0x4c($sp)
/* 0A5B28 800A4F28 AFB40048 */ sw $s4, 0x48($sp)
/* 0A5B2C 800A4F2C AFB30044 */ sw $s3, 0x44($sp)
/* 0A5B30 800A4F30 AFB20040 */ sw $s2, 0x40($sp)
/* 0A5B34 800A4F34 AFB1003C */ sw $s1, 0x3c($sp)
/* 0A5B38 800A4F38 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 0A5B3C 800A4F3C 03191021 */ addu $v0, $t8, $t9
/* 0A5B40 800A4F40 8449002C */ lh $t1, 0x2c($v0)
/* 0A5B44 800A4F44 844A002E */ lh $t2, 0x2e($v0)
/* 0A5B48 800A4F48 84430030 */ lh $v1, 0x30($v0)
/* 0A5B4C 800A4F4C 84480032 */ lh $t0, 0x32($v0)
/* 0A5B50 800A4F50 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015
/* 0A5B54 800A4F54 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298
/* 0A5B58 800A4F58 0080A025 */ move $s4, $a0
/* 0A5B5C 800A4F5C 05210003 */ bgez $t1, .L800A4F6C
/* 0A5B60 800A4F60 00095843 */ sra $t3, $t1, 1
/* 0A5B64 800A4F64 25210001 */ addiu $at, $t1, 1
/* 0A5B68 800A4F68 00015843 */ sra $t3, $at, 1
.L800A4F6C:
/* 0A5B6C 800A4F6C 01604825 */ move $t1, $t3
/* 0A5B70 800A4F70 05410003 */ bgez $t2, .L800A4F80
/* 0A5B74 800A4F74 000A6043 */ sra $t4, $t2, 1
/* 0A5B78 800A4F78 25410001 */ addiu $at, $t2, 1
/* 0A5B7C 800A4F7C 00016043 */ sra $t4, $at, 1
.L800A4F80:
/* 0A5B80 800A4F80 240E008C */ li $t6, 140
/* 0A5B84 800A4F84 010C6821 */ addu $t5, $t0, $t4
/* 0A5B88 800A4F88 AFAD0010 */ sw $t5, 0x10($sp)
/* 0A5B8C 800A4F8C AFAE0020 */ sw $t6, 0x20($sp)
/* 0A5B90 800A4F90 8E240000 */ lw $a0, ($s1)
/* 0A5B94 800A4F94 AFA0001C */ sw $zero, 0x1c($sp)
/* 0A5B98 800A4F98 AFA00018 */ sw $zero, 0x18($sp)
/* 0A5B9C 800A4F9C AFA00014 */ sw $zero, 0x14($sp)
/* 0A5BA0 800A4FA0 00692823 */ subu $a1, $v1, $t1
/* 0A5BA4 800A4FA4 00693821 */ addu $a3, $v1, $t1
/* 0A5BA8 800A4FA8 0C02637E */ jal draw_box
/* 0A5BAC 800A4FAC 010C3023 */ subu $a2, $t0, $t4
/* 0A5BB0 800A4FB0 AE220000 */ sw $v0, ($s1)
/* 0A5BB4 800A4FB4 3C0F800E */ lui $t7, %hi(gScreenModeSelection) # $t7, 0x800e
/* 0A5BB8 800A4FB8 8DF8C530 */ lw $t8, %lo(gScreenModeSelection)($t7)
/* 0A5BBC 800A4FBC 960B0000 */ lhu $t3, ($s0)
/* 0A5BC0 800A4FC0 3C0F800F */ lui $t7, %hi(D_800E8540) # $t7, 0x800f
/* 0A5BC4 800A4FC4 0018C940 */ sll $t9, $t8, 5
/* 0A5BC8 800A4FC8 000B60C0 */ sll $t4, $t3, 3
/* 0A5BCC 800A4FCC 032C6821 */ addu $t5, $t9, $t4
/* 0A5BD0 800A4FD0 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A5BD4 800A4FD4 25AEFFF8 */ addiu $t6, $t5, -8
/* 0A5BD8 800A4FD8 25EF8540 */ addiu $t7, %lo(D_800E8540) # addiu $t7, $t7, -0x7ac0
/* 0A5BDC 800A4FDC 3C15800E */ lui $s5, %hi(D_800E775C) # $s5, 0x800e
/* 0A5BE0 800A4FE0 4481A000 */ mtc1 $at, $f20
/* 0A5BE4 800A4FE4 01CF9821 */ addu $s3, $t6, $t7
/* 0A5BE8 800A4FE8 26B5775C */ addiu $s5, %lo(D_800E775C) # addiu $s5, $s5, 0x775c
/* 0A5BEC 800A4FEC 00002825 */ move $a1, $zero
/* 0A5BF0 800A4FF0 00009025 */ move $s2, $zero
/* 0A5BF4 800A4FF4 24160004 */ li $s6, 4
.L800A4FF8:
/* 0A5BF8 800A4FF8 18A00004 */ blez $a1, .L800A500C
/* 0A5BFC 800A4FFC 00A08825 */ move $s1, $a1
/* 0A5C00 800A5000 24B00001 */ addiu $s0, $a1, 1
/* 0A5C04 800A5004 10000002 */ b .L800A5010
/* 0A5C08 800A5008 02008825 */ move $s1, $s0
.L800A500C:
/* 0A5C0C 800A500C 24B00001 */ addiu $s0, $a1, 1
.L800A5010:
/* 0A5C10 800A5010 8E840004 */ lw $a0, 4($s4)
/* 0A5C14 800A5014 24060003 */ li $a2, 3
/* 0A5C18 800A5018 0C024870 */ jal func_800921C0
/* 0A5C1C 800A501C 2484FFEB */ addiu $a0, $a0, -0x15
/* 0A5C20 800A5020 00115880 */ sll $t3, $s1, 2
/* 0A5C24 800A5024 86640000 */ lh $a0, ($s3)
/* 0A5C28 800A5028 86780002 */ lh $t8, 2($s3)
/* 0A5C2C 800A502C 02ABC821 */ addu $t9, $s5, $t3
/* 0A5C30 800A5030 8F260000 */ lw $a2, ($t9)
/* 0A5C34 800A5034 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5C38 800A5038 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A5C3C 800A503C 00003825 */ move $a3, $zero
/* 0A5C40 800A5040 2484FFFE */ addiu $a0, $a0, -2
/* 0A5C44 800A5044 0C024CC9 */ jal func_80093324
/* 0A5C48 800A5048 03122821 */ addu $a1, $t8, $s2
/* 0A5C4C 800A504C 02002825 */ move $a1, $s0
/* 0A5C50 800A5050 1616FFE9 */ bne $s0, $s6, .L800A4FF8
/* 0A5C54 800A5054 2652000D */ addiu $s2, $s2, 0xd
/* 0A5C58 800A5058 8FBF0054 */ lw $ra, 0x54($sp)
/* 0A5C5C 800A505C D7B40030 */ ldc1 $f20, 0x30($sp)
/* 0A5C60 800A5060 8FB00038 */ lw $s0, 0x38($sp)
/* 0A5C64 800A5064 8FB1003C */ lw $s1, 0x3c($sp)
/* 0A5C68 800A5068 8FB20040 */ lw $s2, 0x40($sp)
/* 0A5C6C 800A506C 8FB30044 */ lw $s3, 0x44($sp)
/* 0A5C70 800A5070 8FB40048 */ lw $s4, 0x48($sp)
/* 0A5C74 800A5074 8FB5004C */ lw $s5, 0x4c($sp)
/* 0A5C78 800A5078 8FB60050 */ lw $s6, 0x50($sp)
/* 0A5C7C 800A507C 03E00008 */ jr $ra
/* 0A5C80 800A5080 27BD0058 */ addiu $sp, $sp, 0x58
@@ -1,187 +0,0 @@
glabel func_800A5084
/* 0A5C84 800A5084 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 0A5C88 800A5088 AFB00034 */ sw $s0, 0x34($sp)
/* 0A5C8C 800A508C 3C10800E */ lui $s0, %hi(gIsGamePaused) # $s0, 0x800e
/* 0A5C90 800A5090 2610C5FC */ addiu $s0, %lo(gIsGamePaused) # addiu $s0, $s0, -0x3a04
/* 0A5C94 800A5094 960E0000 */ lhu $t6, ($s0)
/* 0A5C98 800A5098 3C198016 */ lui $t9, %hi(D_8015F480) # $t9, 0x8016
/* 0A5C9C 800A509C 2739F480 */ addiu $t9, %lo(D_8015F480) # addiu $t9, $t9, -0xb80
/* 0A5CA0 800A50A0 000E7980 */ sll $t7, $t6, 6
/* 0A5CA4 800A50A4 25F8FFC0 */ addiu $t8, $t7, -0x40
/* 0A5CA8 800A50A8 AFBF004C */ sw $ra, 0x4c($sp)
/* 0A5CAC 800A50AC AFB50048 */ sw $s5, 0x48($sp)
/* 0A5CB0 800A50B0 AFB40044 */ sw $s4, 0x44($sp)
/* 0A5CB4 800A50B4 AFB30040 */ sw $s3, 0x40($sp)
/* 0A5CB8 800A50B8 AFB2003C */ sw $s2, 0x3c($sp)
/* 0A5CBC 800A50BC AFB10038 */ sw $s1, 0x38($sp)
/* 0A5CC0 800A50C0 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 0A5CC4 800A50C4 03191021 */ addu $v0, $t8, $t9
/* 0A5CC8 800A50C8 8449002C */ lh $t1, 0x2c($v0)
/* 0A5CCC 800A50CC 844A002E */ lh $t2, 0x2e($v0)
/* 0A5CD0 800A50D0 84430030 */ lh $v1, 0x30($v0)
/* 0A5CD4 800A50D4 84480032 */ lh $t0, 0x32($v0)
/* 0A5CD8 800A50D8 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015
/* 0A5CDC 800A50DC 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298
/* 0A5CE0 800A50E0 0080A825 */ move $s5, $a0
/* 0A5CE4 800A50E4 05210003 */ bgez $t1, .L800A50F4
/* 0A5CE8 800A50E8 00095843 */ sra $t3, $t1, 1
/* 0A5CEC 800A50EC 25210001 */ addiu $at, $t1, 1
/* 0A5CF0 800A50F0 00015843 */ sra $t3, $at, 1
.L800A50F4:
/* 0A5CF4 800A50F4 01604825 */ move $t1, $t3
/* 0A5CF8 800A50F8 05410003 */ bgez $t2, .L800A5108
/* 0A5CFC 800A50FC 000A6043 */ sra $t4, $t2, 1
/* 0A5D00 800A5100 25410001 */ addiu $at, $t2, 1
/* 0A5D04 800A5104 00016043 */ sra $t4, $at, 1
.L800A5108:
/* 0A5D08 800A5108 240E008C */ li $t6, 140
/* 0A5D0C 800A510C 010C6821 */ addu $t5, $t0, $t4
/* 0A5D10 800A5110 AFAD0010 */ sw $t5, 0x10($sp)
/* 0A5D14 800A5114 AFAE0020 */ sw $t6, 0x20($sp)
/* 0A5D18 800A5118 8E240000 */ lw $a0, ($s1)
/* 0A5D1C 800A511C AFA0001C */ sw $zero, 0x1c($sp)
/* 0A5D20 800A5120 AFA00018 */ sw $zero, 0x18($sp)
/* 0A5D24 800A5124 AFA00014 */ sw $zero, 0x14($sp)
/* 0A5D28 800A5128 00692823 */ subu $a1, $v1, $t1
/* 0A5D2C 800A512C 00693821 */ addu $a3, $v1, $t1
/* 0A5D30 800A5130 0C02637E */ jal draw_box
/* 0A5D34 800A5134 010C3023 */ subu $a2, $t0, $t4
/* 0A5D38 800A5138 AE220000 */ sw $v0, ($s1)
/* 0A5D3C 800A513C 3C0F800E */ lui $t7, %hi(gScreenModeSelection) # $t7, 0x800e
/* 0A5D40 800A5140 8DF8C530 */ lw $t8, %lo(gScreenModeSelection)($t7)
/* 0A5D44 800A5144 960B0000 */ lhu $t3, ($s0)
/* 0A5D48 800A5148 3C128019 */ lui $s2, %hi(gCupSelection) # $s2, 0x8019
/* 0A5D4C 800A514C 2652EE09 */ addiu $s2, %lo(gCupSelection) # addiu $s2, $s2, -0x11f7
/* 0A5D50 800A5150 0018C940 */ sll $t9, $t8, 5
/* 0A5D54 800A5154 82580000 */ lb $t8, ($s2)
/* 0A5D58 800A5158 000B60C0 */ sll $t4, $t3, 3
/* 0A5D5C 800A515C 3C14800E */ lui $s4, %hi(gCupNames) # $s4, 0x800e
/* 0A5D60 800A5160 032C6821 */ addu $t5, $t9, $t4
/* 0A5D64 800A5164 26947500 */ addiu $s4, %lo(gCupNames) # addiu $s4, $s4, 0x7500
/* 0A5D68 800A5168 3C0F800F */ lui $t7, %hi(D_800E85C0) # $t7, 0x800f
/* 0A5D6C 800A516C 00185880 */ sll $t3, $t8, 2
/* 0A5D70 800A5170 25EF85C0 */ addiu $t7, %lo(D_800E85C0) # addiu $t7, $t7, -0x7a40
/* 0A5D74 800A5174 25AEFFF8 */ addiu $t6, $t5, -8
/* 0A5D78 800A5178 028BC821 */ addu $t9, $s4, $t3
/* 0A5D7C 800A517C 01CF9821 */ addu $s3, $t6, $t7
/* 0A5D80 800A5180 0C024C0D */ jal get_string_width
/* 0A5D84 800A5184 8F240000 */ lw $a0, ($t9)
/* 0A5D88 800A5188 44822000 */ mtc1 $v0, $f4
/* 0A5D8C 800A518C 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0A5D90 800A5190 4481A000 */ mtc1 $at, $f20
/* 0A5D94 800A5194 468021A0 */ cvt.s.w $f6, $f4
/* 0A5D98 800A5198 3C014120 */ li $at, 0x41200000 # 10.000000
/* 0A5D9C 800A519C 44815000 */ mtc1 $at, $f10
/* 0A5DA0 800A51A0 3C014000 */ li $at, 0x40000000 # 2.000000
/* 0A5DA4 800A51A4 44819000 */ mtc1 $at, $f18
/* 0A5DA8 800A51A8 3C0D800E */ lui $t5, %hi(gCCSelection) # $t5, 0x800e
/* 0A5DAC 800A51AC 46143202 */ mul.s $f8, $f6, $f20
/* 0A5DB0 800A51B0 8DADC548 */ lw $t5, %lo(gCCSelection)($t5)
/* 0A5DB4 800A51B4 3C04800E */ lui $a0, %hi(D_800E76CC)
/* 0A5DB8 800A51B8 000D7080 */ sll $t6, $t5, 2
/* 0A5DBC 800A51BC 008E2021 */ addu $a0, $a0, $t6
/* 0A5DC0 800A51C0 8C8476CC */ lw $a0, %lo(D_800E76CC)($a0)
/* 0A5DC4 800A51C4 460A4400 */ add.s $f16, $f8, $f10
/* 0A5DC8 800A51C8 46128103 */ div.s $f4, $f16, $f18
/* 0A5DCC 800A51CC 4600218D */ trunc.w.s $f6, $f4
/* 0A5DD0 800A51D0 44103000 */ mfc1 $s0, $f6
/* 0A5DD4 800A51D4 0C024C0D */ jal get_string_width
/* 0A5DD8 800A51D8 00000000 */ nop
/* 0A5DDC 800A51DC 44824000 */ mtc1 $v0, $f8
/* 0A5DE0 800A51E0 3C014120 */ li $at, 0x41200000 # 10.000000
/* 0A5DE4 800A51E4 44819000 */ mtc1 $at, $f18
/* 0A5DE8 800A51E8 468042A0 */ cvt.s.w $f10, $f8
/* 0A5DEC 800A51EC 3C014000 */ li $at, 0x40000000 # 2.000000
/* 0A5DF0 800A51F0 44813000 */ mtc1 $at, $f6
/* 0A5DF4 800A51F4 24040003 */ li $a0, 3
/* 0A5DF8 800A51F8 46145402 */ mul.s $f16, $f10, $f20
/* 0A5DFC 800A51FC 46128100 */ add.s $f4, $f16, $f18
/* 0A5E00 800A5200 46062203 */ div.s $f8, $f4, $f6
/* 0A5E04 800A5204 4600428D */ trunc.w.s $f10, $f8
/* 0A5E08 800A5208 44115000 */ mfc1 $s1, $f10
/* 0A5E0C 800A520C 0C024C36 */ jal set_text_color
/* 0A5E10 800A5210 00000000 */ nop
/* 0A5E14 800A5214 824B0000 */ lb $t3, ($s2)
/* 0A5E18 800A5218 86650002 */ lh $a1, 2($s3)
/* 0A5E1C 800A521C 241800A0 */ li $t8, 160
/* 0A5E20 800A5220 000BC880 */ sll $t9, $t3, 2
/* 0A5E24 800A5224 02996021 */ addu $t4, $s4, $t9
/* 0A5E28 800A5228 8D860000 */ lw $a2, ($t4)
/* 0A5E2C 800A522C E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5E30 800A5230 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A5E34 800A5234 03112023 */ subu $a0, $t8, $s1
/* 0A5E38 800A5238 00003825 */ move $a3, $zero
/* 0A5E3C 800A523C 0C024DBB */ jal draw_text
/* 0A5E40 800A5240 24A5FFCE */ addiu $a1, $a1, -0x32
/* 0A5E44 800A5244 0C024C36 */ jal set_text_color
/* 0A5E48 800A5248 24040003 */ li $a0, 3
/* 0A5E4C 800A524C 3C0D800E */ lui $t5, %hi(gCCSelection) # $t5, 0x800e
/* 0A5E50 800A5250 8DADC548 */ lw $t5, %lo(gCCSelection)($t5)
/* 0A5E54 800A5254 86650002 */ lh $a1, 2($s3)
/* 0A5E58 800A5258 3C06800E */ lui $a2, %hi(D_800E76CC)
/* 0A5E5C 800A525C 000D7080 */ sll $t6, $t5, 2
/* 0A5E60 800A5260 00CE3021 */ addu $a2, $a2, $t6
/* 0A5E64 800A5264 8CC676CC */ lw $a2, %lo(D_800E76CC)($a2)
/* 0A5E68 800A5268 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5E6C 800A526C E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A5E70 800A5270 260400A0 */ addiu $a0, $s0, 0xa0
/* 0A5E74 800A5274 00003825 */ move $a3, $zero
/* 0A5E78 800A5278 0C024DBB */ jal draw_text
/* 0A5E7C 800A527C 24A5FFCE */ addiu $a1, $a1, -0x32
/* 0A5E80 800A5280 0C024C36 */ jal set_text_color
/* 0A5E84 800A5284 24040003 */ li $a0, 3
/* 0A5E88 800A5288 3C0B8019 */ lui $t3, %hi(gCupCourseSelection) # $t3, 0x8019
/* 0A5E8C 800A528C 816BEE0B */ lb $t3, %lo(gCupCourseSelection)($t3)
/* 0A5E90 800A5290 824F0000 */ lb $t7, ($s2)
/* 0A5E94 800A5294 3C0D800F */ lui $t5, %hi(gCupCourseOrder)
/* 0A5E98 800A5298 000BC840 */ sll $t9, $t3, 1
/* 0A5E9C 800A529C 000FC0C0 */ sll $t8, $t7, 3
/* 0A5EA0 800A52A0 03196021 */ addu $t4, $t8, $t9
/* 0A5EA4 800A52A4 01AC6821 */ addu $t5, $t5, $t4
/* 0A5EA8 800A52A8 85AD2BB4 */ lh $t5, %lo(gCupCourseOrder)($t5)
/* 0A5EAC 800A52AC 86650002 */ lh $a1, 2($s3)
/* 0A5EB0 800A52B0 3C06800E */ lui $a2, %hi(D_800E7574)
/* 0A5EB4 800A52B4 000D7080 */ sll $t6, $t5, 2
/* 0A5EB8 800A52B8 00CE3021 */ addu $a2, $a2, $t6
/* 0A5EBC 800A52BC 8CC67574 */ lw $a2, %lo(D_800E7574)($a2)
/* 0A5EC0 800A52C0 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5EC4 800A52C4 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A5EC8 800A52C8 240400A0 */ li $a0, 160
/* 0A5ECC 800A52CC 00003825 */ move $a3, $zero
/* 0A5ED0 800A52D0 0C024DBB */ jal draw_text
/* 0A5ED4 800A52D4 24A5FFE2 */ addiu $a1, $a1, -0x1e
/* 0A5ED8 800A52D8 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A5EDC 800A52DC 3C12800E */ lui $s2, %hi(D_800E775C) # $s2, 0x800e
/* 0A5EE0 800A52E0 4481A000 */ mtc1 $at, $f20
/* 0A5EE4 800A52E4 2652775C */ addiu $s2, %lo(D_800E775C) # addiu $s2, $s2, 0x775c
/* 0A5EE8 800A52E8 00008025 */ move $s0, $zero
/* 0A5EEC 800A52EC 00008825 */ move $s1, $zero
/* 0A5EF0 800A52F0 24140002 */ li $s4, 2
.L800A52F4:
/* 0A5EF4 800A52F4 8EA40004 */ lw $a0, 4($s5)
/* 0A5EF8 800A52F8 02002825 */ move $a1, $s0
/* 0A5EFC 800A52FC 24060003 */ li $a2, 3
/* 0A5F00 800A5300 0C024870 */ jal func_800921C0
/* 0A5F04 800A5304 2484FFE1 */ addiu $a0, $a0, -0x1f
/* 0A5F08 800A5308 866F0002 */ lh $t7, 2($s3)
/* 0A5F0C 800A530C 86640000 */ lh $a0, ($s3)
/* 0A5F10 800A5310 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A5F14 800A5314 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A5F18 800A5318 8E460000 */ lw $a2, ($s2)
/* 0A5F1C 800A531C 00003825 */ move $a3, $zero
/* 0A5F20 800A5320 0C024CC9 */ jal func_80093324
/* 0A5F24 800A5324 01F12821 */ addu $a1, $t7, $s1
/* 0A5F28 800A5328 26100001 */ addiu $s0, $s0, 1
/* 0A5F2C 800A532C 2631000D */ addiu $s1, $s1, 0xd
/* 0A5F30 800A5330 1614FFF0 */ bne $s0, $s4, .L800A52F4
/* 0A5F34 800A5334 26520010 */ addiu $s2, $s2, 0x10
/* 0A5F38 800A5338 8FBF004C */ lw $ra, 0x4c($sp)
/* 0A5F3C 800A533C D7B40028 */ ldc1 $f20, 0x28($sp)
/* 0A5F40 800A5340 8FB00034 */ lw $s0, 0x34($sp)
/* 0A5F44 800A5344 8FB10038 */ lw $s1, 0x38($sp)
/* 0A5F48 800A5348 8FB2003C */ lw $s2, 0x3c($sp)
/* 0A5F4C 800A534C 8FB30040 */ lw $s3, 0x40($sp)
/* 0A5F50 800A5350 8FB40044 */ lw $s4, 0x44($sp)
/* 0A5F54 800A5354 8FB50048 */ lw $s5, 0x48($sp)
/* 0A5F58 800A5358 03E00008 */ jr $ra
/* 0A5F5C 800A535C 27BD0050 */ addiu $sp, $sp, 0x50
@@ -1,105 +0,0 @@
glabel func_800A5360
/* 0A5F60 800A5360 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 0A5F64 800A5364 AFB00038 */ sw $s0, 0x38($sp)
/* 0A5F68 800A5368 3C10800E */ lui $s0, %hi(gIsGamePaused) # $s0, 0x800e
/* 0A5F6C 800A536C 2610C5FC */ addiu $s0, %lo(gIsGamePaused) # addiu $s0, $s0, -0x3a04
/* 0A5F70 800A5370 960E0000 */ lhu $t6, ($s0)
/* 0A5F74 800A5374 3C198016 */ lui $t9, %hi(D_8015F480) # $t9, 0x8016
/* 0A5F78 800A5378 2739F480 */ addiu $t9, %lo(D_8015F480) # addiu $t9, $t9, -0xb80
/* 0A5F7C 800A537C 000E7980 */ sll $t7, $t6, 6
/* 0A5F80 800A5380 25F8FFC0 */ addiu $t8, $t7, -0x40
/* 0A5F84 800A5384 AFBF0054 */ sw $ra, 0x54($sp)
/* 0A5F88 800A5388 AFB60050 */ sw $s6, 0x50($sp)
/* 0A5F8C 800A538C AFB5004C */ sw $s5, 0x4c($sp)
/* 0A5F90 800A5390 AFB40048 */ sw $s4, 0x48($sp)
/* 0A5F94 800A5394 AFB30044 */ sw $s3, 0x44($sp)
/* 0A5F98 800A5398 AFB20040 */ sw $s2, 0x40($sp)
/* 0A5F9C 800A539C AFB1003C */ sw $s1, 0x3c($sp)
/* 0A5FA0 800A53A0 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 0A5FA4 800A53A4 03191021 */ addu $v0, $t8, $t9
/* 0A5FA8 800A53A8 8449002C */ lh $t1, 0x2c($v0)
/* 0A5FAC 800A53AC 844A002E */ lh $t2, 0x2e($v0)
/* 0A5FB0 800A53B0 84430030 */ lh $v1, 0x30($v0)
/* 0A5FB4 800A53B4 84480032 */ lh $t0, 0x32($v0)
/* 0A5FB8 800A53B8 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015
/* 0A5FBC 800A53BC 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298
/* 0A5FC0 800A53C0 0080A025 */ move $s4, $a0
/* 0A5FC4 800A53C4 05210003 */ bgez $t1, .L800A53D4
/* 0A5FC8 800A53C8 00095843 */ sra $t3, $t1, 1
/* 0A5FCC 800A53CC 25210001 */ addiu $at, $t1, 1
/* 0A5FD0 800A53D0 00015843 */ sra $t3, $at, 1
.L800A53D4:
/* 0A5FD4 800A53D4 01604825 */ move $t1, $t3
/* 0A5FD8 800A53D8 05410003 */ bgez $t2, .L800A53E8
/* 0A5FDC 800A53DC 000A6043 */ sra $t4, $t2, 1
/* 0A5FE0 800A53E0 25410001 */ addiu $at, $t2, 1
/* 0A5FE4 800A53E4 00016043 */ sra $t4, $at, 1
.L800A53E8:
/* 0A5FE8 800A53E8 240E008C */ li $t6, 140
/* 0A5FEC 800A53EC 010C6821 */ addu $t5, $t0, $t4
/* 0A5FF0 800A53F0 AFAD0010 */ sw $t5, 0x10($sp)
/* 0A5FF4 800A53F4 AFAE0020 */ sw $t6, 0x20($sp)
/* 0A5FF8 800A53F8 8E240000 */ lw $a0, ($s1)
/* 0A5FFC 800A53FC AFA0001C */ sw $zero, 0x1c($sp)
/* 0A6000 800A5400 AFA00018 */ sw $zero, 0x18($sp)
/* 0A6004 800A5404 AFA00014 */ sw $zero, 0x14($sp)
/* 0A6008 800A5408 00692823 */ subu $a1, $v1, $t1
/* 0A600C 800A540C 00693821 */ addu $a3, $v1, $t1
/* 0A6010 800A5410 0C02637E */ jal draw_box
/* 0A6014 800A5414 010C3023 */ subu $a2, $t0, $t4
/* 0A6018 800A5418 AE220000 */ sw $v0, ($s1)
/* 0A601C 800A541C 3C0F800E */ lui $t7, %hi(gScreenModeSelection) # $t7, 0x800e
/* 0A6020 800A5420 8DF8C530 */ lw $t8, %lo(gScreenModeSelection)($t7)
/* 0A6024 800A5424 960B0000 */ lhu $t3, ($s0)
/* 0A6028 800A5428 3C0F800F */ lui $t7, %hi(D_800E8600) # $t7, 0x800f
/* 0A602C 800A542C 0018C940 */ sll $t9, $t8, 5
/* 0A6030 800A5430 000B60C0 */ sll $t4, $t3, 3
/* 0A6034 800A5434 032C6821 */ addu $t5, $t9, $t4
/* 0A6038 800A5438 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A603C 800A543C 25AEFFF8 */ addiu $t6, $t5, -8
/* 0A6040 800A5440 25EF8600 */ addiu $t7, %lo(D_800E8600) # addiu $t7, $t7, -0x7a00
/* 0A6044 800A5444 3C15800E */ lui $s5, %hi(D_800E775C) # $s5, 0x800e
/* 0A6048 800A5448 4481A000 */ mtc1 $at, $f20
/* 0A604C 800A544C 01CF9821 */ addu $s3, $t6, $t7
/* 0A6050 800A5450 26B5775C */ addiu $s5, %lo(D_800E775C) # addiu $s5, $s5, 0x775c
/* 0A6054 800A5454 00002825 */ move $a1, $zero
/* 0A6058 800A5458 00009025 */ move $s2, $zero
/* 0A605C 800A545C 24160004 */ li $s6, 4
.L800A5460:
/* 0A6060 800A5460 18A00004 */ blez $a1, .L800A5474
/* 0A6064 800A5464 00A08825 */ move $s1, $a1
/* 0A6068 800A5468 24B00001 */ addiu $s0, $a1, 1
/* 0A606C 800A546C 10000002 */ b .L800A5478
/* 0A6070 800A5470 02008825 */ move $s1, $s0
.L800A5474:
/* 0A6074 800A5474 24B00001 */ addiu $s0, $a1, 1
.L800A5478:
/* 0A6078 800A5478 8E840004 */ lw $a0, 4($s4)
/* 0A607C 800A547C 24060003 */ li $a2, 3
/* 0A6080 800A5480 0C024870 */ jal func_800921C0
/* 0A6084 800A5484 2484FFD7 */ addiu $a0, $a0, -0x29
/* 0A6088 800A5488 00115880 */ sll $t3, $s1, 2
/* 0A608C 800A548C 86640000 */ lh $a0, ($s3)
/* 0A6090 800A5490 86780002 */ lh $t8, 2($s3)
/* 0A6094 800A5494 02ABC821 */ addu $t9, $s5, $t3
/* 0A6098 800A5498 8F260000 */ lw $a2, ($t9)
/* 0A609C 800A549C E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A60A0 800A54A0 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A60A4 800A54A4 00003825 */ move $a3, $zero
/* 0A60A8 800A54A8 2484FFFE */ addiu $a0, $a0, -2
/* 0A60AC 800A54AC 0C024CC9 */ jal func_80093324
/* 0A60B0 800A54B0 03122821 */ addu $a1, $t8, $s2
/* 0A60B4 800A54B4 02002825 */ move $a1, $s0
/* 0A60B8 800A54B8 1616FFE9 */ bne $s0, $s6, .L800A5460
/* 0A60BC 800A54BC 2652000D */ addiu $s2, $s2, 0xd
/* 0A60C0 800A54C0 8FBF0054 */ lw $ra, 0x54($sp)
/* 0A60C4 800A54C4 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 0A60C8 800A54C8 8FB00038 */ lw $s0, 0x38($sp)
/* 0A60CC 800A54CC 8FB1003C */ lw $s1, 0x3c($sp)
/* 0A60D0 800A54D0 8FB20040 */ lw $s2, 0x40($sp)
/* 0A60D4 800A54D4 8FB30044 */ lw $s3, 0x44($sp)
/* 0A60D8 800A54D8 8FB40048 */ lw $s4, 0x48($sp)
/* 0A60DC 800A54DC 8FB5004C */ lw $s5, 0x4c($sp)
/* 0A60E0 800A54E0 8FB60050 */ lw $s6, 0x50($sp)
/* 0A60E4 800A54E4 03E00008 */ jr $ra
/* 0A60E8 800A54E8 27BD0058 */ addiu $sp, $sp, 0x58
@@ -2,18 +2,19 @@
glabel D_800F0C6C
.asciiz "'"
.balign 4
glabel D_800F0C70
.asciiz "\""
.balign 4
glabel D_800F0C74
.asciiz "'"
.balign 4
glabel D_800F0C78
.asciiz "\""
.balign 4
.section .late_rodata
@@ -1,68 +0,0 @@
glabel func_800A6D94
/* 0A7994 800A6D94 3C0F800E */ lui $t7, %hi(gPlayerWinningIndex) # $t7, 0x800e
/* 0A7998 800A6D98 8DEFC5E8 */ lw $t7, %lo(gPlayerWinningIndex)($t7)
/* 0A799C 800A6D9C 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0A79A0 800A6DA0 AFBF001C */ sw $ra, 0x1c($sp)
/* 0A79A4 800A6DA4 AFA40040 */ sw $a0, 0x40($sp)
/* 0A79A8 800A6DA8 AFA50044 */ sw $a1, 0x44($sp)
/* 0A79AC 800A6DAC 10AF0002 */ beq $a1, $t7, .L800A6DB8
/* 0A79B0 800A6DB0 00001025 */ move $v0, $zero
/* 0A79B4 800A6DB4 24020001 */ li $v0, 1
.L800A6DB8:
/* 0A79B8 800A6DB8 8FB80044 */ lw $t8, 0x44($sp)
/* 0A79BC 800A6DBC 3C04800E */ lui $a0, %hi(gGlobalTimer)
/* 0A79C0 800A6DC0 00D8C821 */ addu $t9, $a2, $t8
/* 0A79C4 800A6DC4 93280000 */ lbu $t0, ($t9)
/* 0A79C8 800A6DC8 10400005 */ beqz $v0, .L800A6DE0
/* 0A79CC 800A6DCC AFA80024 */ sw $t0, 0x24($sp)
/* 0A79D0 800A6DD0 0C024C36 */ jal set_text_color
/* 0A79D4 800A6DD4 00002025 */ move $a0, $zero
/* 0A79D8 800A6DD8 10000008 */ b .L800A6DFC
/* 0A79DC 800A6DDC 8FA40024 */ lw $a0, 0x24($sp)
.L800A6DE0:
/* 0A79E0 800A6DE0 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0)
/* 0A79E4 800A6DE4 24010003 */ li $at, 3
/* 0A79E8 800A6DE8 0081001A */ div $zero, $a0, $at
/* 0A79EC 800A6DEC 00002010 */ mfhi $a0
/* 0A79F0 800A6DF0 0C024C36 */ jal set_text_color
/* 0A79F4 800A6DF4 00000000 */ nop
/* 0A79F8 800A6DF8 8FA40024 */ lw $a0, 0x24($sp)
.L800A6DFC:
/* 0A79FC 800A6DFC 0C029E7D */ jal func_800A79F4
/* 0A7A00 800A6E00 27A50030 */ addiu $a1, $sp, 0x30
/* 0A7A04 800A6E04 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A7A08 800A6E08 44810000 */ mtc1 $at, $f0
/* 0A7A0C 800A6E0C 3C014200 */ li $at, 0x42000000 # 32.000000
/* 0A7A10 800A6E10 44812000 */ mtc1 $at, $f4
/* 0A7A14 800A6E14 3C014000 */ li $at, 0x40000000 # 2.000000
/* 0A7A18 800A6E18 44814000 */ mtc1 $at, $f8
/* 0A7A1C 800A6E1C 46002182 */ mul.s $f6, $f4, $f0
/* 0A7A20 800A6E20 8FAB0040 */ lw $t3, 0x40($sp)
/* 0A7A24 800A6E24 8FAD0044 */ lw $t5, 0x44($sp)
/* 0A7A28 800A6E28 3C19800E */ lui $t9, %hi(D_800E7300) # $t9, 0x800e
/* 0A7A2C 800A6E2C 000B6140 */ sll $t4, $t3, 5
/* 0A7A30 800A6E30 000D70C0 */ sll $t6, $t5, 3
/* 0A7A34 800A6E34 018E7821 */ addu $t7, $t4, $t6
/* 0A7A38 800A6E38 46083283 */ div.s $f10, $f6, $f8
/* 0A7A3C 800A6E3C 25F8FFC0 */ addiu $t8, $t7, -0x40
/* 0A7A40 800A6E40 27397300 */ addiu $t9, %lo(D_800E7300) # addiu $t9, $t9, 0x7300
/* 0A7A44 800A6E44 03191021 */ addu $v0, $t8, $t9
/* 0A7A48 800A6E48 84480000 */ lh $t0, ($v0)
/* 0A7A4C 800A6E4C 84450002 */ lh $a1, 2($v0)
/* 0A7A50 800A6E50 27A60030 */ addiu $a2, $sp, 0x30
/* 0A7A54 800A6E54 25090020 */ addiu $t1, $t0, 0x20
/* 0A7A58 800A6E58 44898000 */ mtc1 $t1, $f16
/* 0A7A5C 800A6E5C 00003825 */ move $a3, $zero
/* 0A7A60 800A6E60 E7A00014 */ swc1 $f0, 0x14($sp)
/* 0A7A64 800A6E64 E7A00010 */ swc1 $f0, 0x10($sp)
/* 0A7A68 800A6E68 24A50075 */ addiu $a1, $a1, 0x75
/* 0A7A6C 800A6E6C 468084A0 */ cvt.s.w $f18, $f16
/* 0A7A70 800A6E70 460A9101 */ sub.s $f4, $f18, $f10
/* 0A7A74 800A6E74 4600218D */ trunc.w.s $f6, $f4
/* 0A7A78 800A6E78 44043000 */ mfc1 $a0, $f6
/* 0A7A7C 800A6E7C 0C024E7F */ jal text_draw
/* 0A7A80 800A6E80 00000000 */ nop
/* 0A7A84 800A6E84 8FBF001C */ lw $ra, 0x1c($sp)
/* 0A7A88 800A6E88 27BD0040 */ addiu $sp, $sp, 0x40
/* 0A7A8C 800A6E8C 03E00008 */ jr $ra
/* 0A7A90 800A6E90 00000000 */ nop
@@ -1,137 +0,0 @@
.section .rodata
glabel D_800F0C98
.asciiz "'"
.balign 4
glabel D_800F0C9C
.asciiz "\""
.balign 4
.section .late_rodata
glabel D_800F24A0
.float 0.6
glabel D_800F24A4
.float 0.65
.section .text
glabel func_800A874C
/* 0A934C 800A874C 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 0A9350 800A8750 AFB00030 */ sw $s0, 0x30($sp)
/* 0A9354 800A8754 00808025 */ move $s0, $a0
/* 0A9358 800A8758 AFBF003C */ sw $ra, 0x3c($sp)
/* 0A935C 800A875C AFB20038 */ sw $s2, 0x38($sp)
/* 0A9360 800A8760 AFB10034 */ sw $s1, 0x34($sp)
/* 0A9364 800A8764 F7B60028 */ sdc1 $f22, 0x28($sp)
/* 0A9368 800A8768 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0A936C 800A876C 0C024C36 */ jal set_text_color
/* 0A9370 800A8770 24040001 */ li $a0, 1
/* 0A9374 800A8774 8E0E0000 */ lw $t6, ($s0)
/* 0A9378 800A8778 24010065 */ li $at, 101
/* 0A937C 800A877C 15C10005 */ bne $t6, $at, .L800A8794
/* 0A9380 800A8780 00000000 */ nop
/* 0A9384 800A8784 0C02D389 */ jal func_800B4E24
/* 0A9388 800A8788 00002025 */ move $a0, $zero
/* 0A938C 800A878C 10000004 */ b .L800A87A0
/* 0A9390 800A8790 00409025 */ move $s2, $v0
.L800A8794:
/* 0A9394 800A8794 0C02D3CB */ jal func_800B4F2C
/* 0A9398 800A8798 00000000 */ nop
/* 0A939C 800A879C 00409025 */ move $s2, $v0
.L800A87A0:
/* 0A93A0 800A87A0 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf
/* 0A93A4 800A87A4 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0A93A8 800A87A8 02418824 */ and $s1, $s2, $at
/* 0A93AC 800A87AC 02202025 */ move $a0, $s1
/* 0A93B0 800A87B0 0C029E3D */ jal get_time_record_minutes
/* 0A93B4 800A87B4 27A50058 */ addiu $a1, $sp, 0x58
/* 0A93B8 800A87B8 3C01800F */ lui $at, %hi(D_800F24A0) # $at, 0x800f
/* 0A93BC 800A87BC C43424A0 */ lwc1 $f20, %lo(D_800F24A0)($at)
/* 0A93C0 800A87C0 3C01800F */ lui $at, %hi(D_800F24A4) # $at, 0x800f
/* 0A93C4 800A87C4 C43624A4 */ lwc1 $f22, %lo(D_800F24A4)($at)
/* 0A93C8 800A87C8 8E04000C */ lw $a0, 0xc($s0)
/* 0A93CC 800A87CC 8E050010 */ lw $a1, 0x10($s0)
/* 0A93D0 800A87D0 27A60058 */ addiu $a2, $sp, 0x58
/* 0A93D4 800A87D4 00003825 */ move $a3, $zero
/* 0A93D8 800A87D8 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A93DC 800A87DC E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A93E0 800A87E0 24840005 */ addiu $a0, $a0, 5
/* 0A93E4 800A87E4 0C024E7F */ jal text_draw
/* 0A93E8 800A87E8 24A50021 */ addiu $a1, $a1, 0x21
/* 0A93EC 800A87EC 8E04000C */ lw $a0, 0xc($s0)
/* 0A93F0 800A87F0 8E050010 */ lw $a1, 0x10($s0)
/* 0A93F4 800A87F4 3C06800F */ lui $a2, %hi(D_800F0C98) # $a2, 0x800f
/* 0A93F8 800A87F8 24C60C98 */ addiu $a2, %lo(D_800F0C98) # addiu $a2, $a2, 0xc98
/* 0A93FC 800A87FC E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A9400 800A8800 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A9404 800A8804 00003825 */ move $a3, $zero
/* 0A9408 800A8808 2484000E */ addiu $a0, $a0, 0xe
/* 0A940C 800A880C 0C024CC9 */ jal func_80093324
/* 0A9410 800A8810 24A50021 */ addiu $a1, $a1, 0x21
/* 0A9414 800A8814 02202025 */ move $a0, $s1
/* 0A9418 800A8818 0C029E51 */ jal get_time_record_seconds
/* 0A941C 800A881C 27A50058 */ addiu $a1, $sp, 0x58
/* 0A9420 800A8820 8E04000C */ lw $a0, 0xc($s0)
/* 0A9424 800A8824 8E050010 */ lw $a1, 0x10($s0)
/* 0A9428 800A8828 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A942C 800A882C E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A9430 800A8830 27A60058 */ addiu $a2, $sp, 0x58
/* 0A9434 800A8834 00003825 */ move $a3, $zero
/* 0A9438 800A8838 24840016 */ addiu $a0, $a0, 0x16
/* 0A943C 800A883C 0C024E7F */ jal text_draw
/* 0A9440 800A8840 24A50021 */ addiu $a1, $a1, 0x21
/* 0A9444 800A8844 8E04000C */ lw $a0, 0xc($s0)
/* 0A9448 800A8848 8E050010 */ lw $a1, 0x10($s0)
/* 0A944C 800A884C 3C06800F */ lui $a2, %hi(D_800F0C9C) # $a2, 0x800f
/* 0A9450 800A8850 24C60C9C */ addiu $a2, %lo(D_800F0C9C) # addiu $a2, $a2, 0xc9c
/* 0A9454 800A8854 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A9458 800A8858 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A945C 800A885C 00003825 */ move $a3, $zero
/* 0A9460 800A8860 24840020 */ addiu $a0, $a0, 0x20
/* 0A9464 800A8864 0C024CC9 */ jal func_80093324
/* 0A9468 800A8868 24A50021 */ addiu $a1, $a1, 0x21
/* 0A946C 800A886C 02202025 */ move $a0, $s1
/* 0A9470 800A8870 0C029E69 */ jal get_time_record_centiseconds
/* 0A9474 800A8874 27A50058 */ addiu $a1, $sp, 0x58
/* 0A9478 800A8878 8E04000C */ lw $a0, 0xc($s0)
/* 0A947C 800A887C 8E050010 */ lw $a1, 0x10($s0)
/* 0A9480 800A8880 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A9484 800A8884 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A9488 800A8888 27A60058 */ addiu $a2, $sp, 0x58
/* 0A948C 800A888C 00003825 */ move $a3, $zero
/* 0A9490 800A8890 24840029 */ addiu $a0, $a0, 0x29
/* 0A9494 800A8894 0C024E7F */ jal text_draw
/* 0A9498 800A8898 24A50021 */ addiu $a1, $a1, 0x21
/* 0A949C 800A889C 3C010009 */ lui $at, (0x000927C0 >> 16) # lui $at, 9
/* 0A94A0 800A88A0 342127C0 */ ori $at, (0x000927C0 & 0xFFFF) # ori $at, $at, 0x27c0
/* 0A94A4 800A88A4 0221082B */ sltu $at, $s1, $at
/* 0A94A8 800A88A8 10200004 */ beqz $at, .L800A88BC
/* 0A94AC 800A88AC 3C06800E */ lui $a2, %hi(D_800E76A8)
/* 0A94B0 800A88B0 00127D02 */ srl $t7, $s2, 0x14
/* 0A94B4 800A88B4 10000002 */ b .L800A88C0
/* 0A94B8 800A88B8 01E09025 */ move $s2, $t7
.L800A88BC:
/* 0A94BC 800A88BC 24120008 */ li $s2, 8
.L800A88C0:
/* 0A94C0 800A88C0 8E04000C */ lw $a0, 0xc($s0)
/* 0A94C4 800A88C4 8E050010 */ lw $a1, 0x10($s0)
/* 0A94C8 800A88C8 0012C080 */ sll $t8, $s2, 2
/* 0A94CC 800A88CC 00D83021 */ addu $a2, $a2, $t8
/* 0A94D0 800A88D0 8CC676A8 */ lw $a2, %lo(D_800E76A8)($a2)
/* 0A94D4 800A88D4 E7B60014 */ swc1 $f22, 0x14($sp)
/* 0A94D8 800A88D8 E7B40010 */ swc1 $f20, 0x10($sp)
/* 0A94DC 800A88DC 00003825 */ move $a3, $zero
/* 0A94E0 800A88E0 24840060 */ addiu $a0, $a0, 0x60
/* 0A94E4 800A88E4 0C024DAE */ jal func_800936B8
/* 0A94E8 800A88E8 24A50021 */ addiu $a1, $a1, 0x21
/* 0A94EC 800A88EC 8FBF003C */ lw $ra, 0x3c($sp)
/* 0A94F0 800A88F0 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0A94F4 800A88F4 D7B60028 */ ldc1 $f22, 0x28($sp)
/* 0A94F8 800A88F8 8FB00030 */ lw $s0, 0x30($sp)
/* 0A94FC 800A88FC 8FB10034 */ lw $s1, 0x34($sp)
/* 0A9500 800A8900 8FB20038 */ lw $s2, 0x38($sp)
/* 0A9504 800A8904 03E00008 */ jr $ra
/* 0A9508 800A8908 27BD0060 */ addiu $sp, $sp, 0x60
@@ -1,130 +0,0 @@
.section .late_rodata
glabel jpt_800F25E0
.word L800AAC50, L800AACF0, L800AAD14, L800AACF0
.word L800AAD14
.section .text
glabel func_800AAC18
/* 0AB818 800AAC18 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0AB81C 800AAC1C AFBF0014 */ sw $ra, 0x14($sp)
/* 0AB820 800AAC20 8C830004 */ lw $v1, 4($a0)
/* 0AB824 800AAC24 8C850000 */ lw $a1, ($a0)
/* 0AB828 800AAC28 00803825 */ move $a3, $a0
/* 0AB82C 800AAC2C 2C610005 */ sltiu $at, $v1, 5
/* 0AB830 800AAC30 10200064 */ beqz $at, .L800AADC4
/* 0AB834 800AAC34 24A5FFD5 */ addiu $a1, $a1, -0x2b
/* 0AB838 800AAC38 00037080 */ sll $t6, $v1, 2
/* 0AB83C 800AAC3C 3C01800F */ lui $at, %hi(jpt_800F25E0)
/* 0AB840 800AAC40 002E0821 */ addu $at, $at, $t6
/* 0AB844 800AAC44 8C2E25E0 */ lw $t6, %lo(jpt_800F25E0)($at)
/* 0AB848 800AAC48 01C00008 */ jr $t6
/* 0AB84C 800AAC4C 00000000 */ nop
glabel L800AAC50
/* 0AB850 800AAC50 3C0F8019 */ lui $t7, %hi(D_8018EDEE) # $t7, 0x8019
/* 0AB854 800AAC54 81EFEDEE */ lb $t7, %lo(D_8018EDEE)($t7)
/* 0AB858 800AAC58 24010003 */ li $at, 3
/* 0AB85C 800AAC5C 00A02025 */ move $a0, $a1
/* 0AB860 800AAC60 15E10023 */ bne $t7, $at, .L800AACF0
/* 0AB864 800AAC64 00000000 */ nop
/* 0AB868 800AAC68 AFA50024 */ sw $a1, 0x24($sp)
/* 0AB86C 800AAC6C 0C02ABF3 */ jal func_800AAFCC
/* 0AB870 800AAC70 AFA70030 */ sw $a3, 0x30($sp)
/* 0AB874 800AAC74 8FA50024 */ lw $a1, 0x24($sp)
/* 0AB878 800AAC78 04400052 */ bltz $v0, .L800AADC4
/* 0AB87C 800AAC7C 8FA70030 */ lw $a3, 0x30($sp)
/* 0AB880 800AAC80 3C18800E */ lui $t8, %hi(gScreenModeSelection) # $t8, 0x800e
/* 0AB884 800AAC84 8F19C530 */ lw $t9, %lo(gScreenModeSelection)($t8)
/* 0AB888 800AAC88 000250C0 */ sll $t2, $v0, 3
/* 0AB88C 800AAC8C 3C0C800E */ lui $t4, %hi(D_800E7188) # $t4, 0x800e
/* 0AB890 800AAC90 00194940 */ sll $t1, $t9, 5
/* 0AB894 800AAC94 012A5821 */ addu $t3, $t1, $t2
/* 0AB898 800AAC98 258C7188 */ addiu $t4, %lo(D_800E7188) # addiu $t4, $t4, 0x7188
/* 0AB89C 800AAC9C 016C4021 */ addu $t0, $t3, $t4
/* 0AB8A0 800AACA0 850D0000 */ lh $t5, ($t0)
/* 0AB8A4 800AACA4 24060002 */ li $a2, 2
/* 0AB8A8 800AACA8 00057880 */ sll $t7, $a1, 2
/* 0AB8AC 800AACAC ACED000C */ sw $t5, 0xc($a3)
/* 0AB8B0 800AACB0 850E0002 */ lh $t6, 2($t0)
/* 0AB8B4 800AACB4 3C04800F */ lui $a0, %hi(D_800E8340) # 0x800f
/* 0AB8B8 800AACB8 ACE60004 */ sw $a2, 4($a3)
/* 0AB8BC 800AACBC ACE60008 */ sw $a2, 8($a3)
/* 0AB8C0 800AACC0 008F2021 */ addu $a0, $a0, $t7
/* 0AB8C4 800AACC4 ACEE0010 */ sw $t6, 0x10($a3)
/* 0AB8C8 800AACC8 AFA70030 */ sw $a3, 0x30($sp)
/* 0AB8CC 800AACCC 0C026455 */ jal segmented_to_virtual_dupe_2
/* 0AB8D0 800AACD0 8C848340 */ lw $a0, %lo(D_800E8340)($a0) # -0x7cc0($a0)
/* 0AB8D4 800AACD4 8FA70030 */ lw $a3, 0x30($sp)
/* 0AB8D8 800AACD8 00002825 */ move $a1, $zero
/* 0AB8DC 800AACDC 00403025 */ move $a2, $v0
/* 0AB8E0 800AACE0 0C026965 */ jal func_8009A594
/* 0AB8E4 800AACE4 8CE40018 */ lw $a0, 0x18($a3)
/* 0AB8E8 800AACE8 10000037 */ b .L800AADC8
/* 0AB8EC 800AACEC 8FBF0014 */ lw $ra, 0x14($sp)
.L800AACF0:
glabel L800AACF0
/* 0AB8F0 800AACF0 3C19800E */ lui $t9, %hi(D_800E7108) # $t9, 0x800e
/* 0AB8F4 800AACF4 27397108 */ addiu $t9, %lo(D_800E7108) # addiu $t9, $t9, 0x7108
/* 0AB8F8 800AACF8 0005C0C0 */ sll $t8, $a1, 3
/* 0AB8FC 800AACFC 03191021 */ addu $v0, $t8, $t9
/* 0AB900 800AAD00 84490000 */ lh $t1, ($v0)
/* 0AB904 800AAD04 ACE9000C */ sw $t1, 0xc($a3)
/* 0AB908 800AAD08 844A0002 */ lh $t2, 2($v0)
/* 0AB90C 800AAD0C 1000002D */ b .L800AADC4
/* 0AB910 800AAD10 ACEA0010 */ sw $t2, 0x10($a3)
glabel L800AAD14
/* 0AB914 800AAD14 24060002 */ li $a2, 2
/* 0AB918 800AAD18 14C30012 */ bne $a2, $v1, .L800AAD64
/* 0AB91C 800AAD1C 00A02025 */ move $a0, $a1
/* 0AB920 800AAD20 0C02ABF3 */ jal func_800AAFCC
/* 0AB924 800AAD24 AFA70030 */ sw $a3, 0x30($sp)
/* 0AB928 800AAD28 24060002 */ li $a2, 2
/* 0AB92C 800AAD2C 0440000A */ bltz $v0, .L800AAD58
/* 0AB930 800AAD30 8FA70030 */ lw $a3, 0x30($sp)
/* 0AB934 800AAD34 3C0B800E */ lui $t3, %hi(gScreenModeSelection) # $t3, 0x800e
/* 0AB938 800AAD38 8D6CC530 */ lw $t4, %lo(gScreenModeSelection)($t3)
/* 0AB93C 800AAD3C 000270C0 */ sll $t6, $v0, 3
/* 0AB940 800AAD40 3C18800E */ lui $t8, %hi(D_800E7188) # $t8, 0x800e
/* 0AB944 800AAD44 000C6940 */ sll $t5, $t4, 5
/* 0AB948 800AAD48 01AE7821 */ addu $t7, $t5, $t6
/* 0AB94C 800AAD4C 27187188 */ addiu $t8, %lo(D_800E7188) # addiu $t8, $t8, 0x7188
/* 0AB950 800AAD50 01F84021 */ addu $t0, $t7, $t8
/* 0AB954 800AAD54 AFA80018 */ sw $t0, 0x18($sp)
.L800AAD58:
/* 0AB958 800AAD58 8FA80018 */ lw $t0, 0x18($sp)
/* 0AB95C 800AAD5C 10000010 */ b .L800AADA0
/* 0AB960 800AAD60 8CE30004 */ lw $v1, 4($a3)
.L800AAD64:
/* 0AB964 800AAD64 3C09800E */ lui $t1, %hi(D_800E7108) # $t1, 0x800e
/* 0AB968 800AAD68 25297108 */ addiu $t1, %lo(D_800E7108) # addiu $t1, $t1, 0x7108
/* 0AB96C 800AAD6C 0005C8C0 */ sll $t9, $a1, 3
/* 0AB970 800AAD70 03291021 */ addu $v0, $t9, $t1
/* 0AB974 800AAD74 844B0000 */ lh $t3, ($v0)
/* 0AB978 800AAD78 8CEA000C */ lw $t2, 0xc($a3)
/* 0AB97C 800AAD7C 00404025 */ move $t0, $v0
/* 0AB980 800AAD80 154B0007 */ bne $t2, $t3, .L800AADA0
/* 0AB984 800AAD84 00000000 */ nop
/* 0AB988 800AAD88 8CEC0010 */ lw $t4, 0x10($a3)
/* 0AB98C 800AAD8C 844D0002 */ lh $t5, 2($v0)
/* 0AB990 800AAD90 158D0003 */ bne $t4, $t5, .L800AADA0
/* 0AB994 800AAD94 00000000 */ nop
/* 0AB998 800AAD98 1000000A */ b .L800AADC4
/* 0AB99C 800AAD9C ACE00004 */ sw $zero, 4($a3)
.L800AADA0:
/* 0AB9A0 800AADA0 54C30005 */ bnel $a2, $v1, .L800AADB8
/* 0AB9A4 800AADA4 00E02025 */ move $a0, $a3
/* 0AB9A8 800AADA8 8CEE0008 */ lw $t6, 8($a3)
/* 0AB9AC 800AADAC 24010001 */ li $at, 1
/* 0AB9B0 800AADB0 11C10004 */ beq $t6, $at, .L800AADC4
/* 0AB9B4 800AADB4 00E02025 */ move $a0, $a3
.L800AADB8:
/* 0AB9B8 800AADB8 85050000 */ lh $a1, ($t0)
/* 0AB9BC 800AADBC 0C02A476 */ jal func_800A91D8
/* 0AB9C0 800AADC0 85060002 */ lh $a2, 2($t0)
.L800AADC4:
/* 0AB9C4 800AADC4 8FBF0014 */ lw $ra, 0x14($sp)
.L800AADC8:
/* 0AB9C8 800AADC8 27BD0030 */ addiu $sp, $sp, 0x30
/* 0AB9CC 800AADCC 03E00008 */ jr $ra
/* 0AB9D0 800AADD0 00000000 */ nop
@@ -1,172 +0,0 @@
.section .late_rodata
glabel jpt_800F2728
.word L800ACF94, L800ACFB8, L800AD01C, L800AD128
.word L800AD190
.section .text
glabel func_800ACF40
/* 0ADB40 800ACF40 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0ADB44 800ACF44 AFBF001C */ sw $ra, 0x1c($sp)
/* 0ADB48 800ACF48 AFB00018 */ sw $s0, 0x18($sp)
/* 0ADB4C 800ACF4C 8C820000 */ lw $v0, ($a0)
/* 0ADB50 800ACF50 3C0E800F */ lui $t6, %hi(gCharacterSelections - 0xb1) # 0x800f
/* 0ADB54 800ACF54 8C8F0004 */ lw $t7, 4($a0)
/* 0ADB58 800ACF58 01C27021 */ addu $t6, $t6, $v0
/* 0ADB5C 800ACF5C 81CE85F7 */ lb $t6, %lo(gCharacterSelections - 0xb1)($t6) # -0x7a09($t6)
/* 0ADB60 800ACF60 3C05800F */ lui $a1, %hi(D_800EFD64) # 0x800f
/* 0ADB64 800ACF64 2DE10005 */ sltiu $at, $t7, 5
/* 0ADB68 800ACF68 00AE2821 */ addu $a1, $a1, $t6
/* 0ADB6C 800ACF6C 00808025 */ move $s0, $a0
/* 0ADB70 800ACF70 80A5FD64 */ lb $a1, %lo(D_800EFD64)($a1) # -0x29c($a1)
/* 0ADB74 800ACF74 10200086 */ beqz $at, .L800AD190
/* 0ADB78 800ACF78 2446FF4F */ addiu $a2, $v0, -0xb1
/* 0ADB7C 800ACF7C 000F7880 */ sll $t7, $t7, 2
/* 0ADB80 800ACF80 3C01800F */ lui $at, %hi(jpt_800F2728)
/* 0ADB84 800ACF84 002F0821 */ addu $at, $at, $t7
/* 0ADB88 800ACF88 8C2F2728 */ lw $t7, %lo(jpt_800F2728)($at)
/* 0ADB8C 800ACF8C 01E00008 */ jr $t7
/* 0ADB90 800ACF90 00000000 */ nop
glabel L800ACF94
/* 0ADB94 800ACF94 3C02800E */ lui $v0, %hi(D_800E72F8) # $v0, 0x800e
/* 0ADB98 800ACF98 244272F8 */ addiu $v0, %lo(D_800E72F8) # addiu $v0, $v0, 0x72f8
/* 0ADB9C 800ACF9C 84580000 */ lh $t8, ($v0)
/* 0ADBA0 800ACFA0 24080001 */ li $t0, 1
/* 0ADBA4 800ACFA4 AE18000C */ sw $t8, 0xc($s0)
/* 0ADBA8 800ACFA8 84590002 */ lh $t9, 2($v0)
/* 0ADBAC 800ACFAC AE080004 */ sw $t0, 4($s0)
/* 0ADBB0 800ACFB0 10000077 */ b .L800AD190
/* 0ADBB4 800ACFB4 AE190010 */ sw $t9, 0x10($s0)
glabel L800ACFB8
/* 0ADBB8 800ACFB8 3C098019 */ lui $t1, %hi(gPlayerCount) # $t1, 0x8019
/* 0ADBBC 800ACFBC 812AEDF3 */ lb $t2, %lo(gPlayerCount)($t1)
/* 0ADBC0 800ACFC0 000660C0 */ sll $t4, $a2, 3
/* 0ADBC4 800ACFC4 3C0F800E */ lui $t7, %hi(D_800E7300) # $t7, 0x800e
/* 0ADBC8 800ACFC8 000A5940 */ sll $t3, $t2, 5
/* 0ADBCC 800ACFCC 016C6821 */ addu $t5, $t3, $t4
/* 0ADBD0 800ACFD0 25AEFFC0 */ addiu $t6, $t5, -0x40
/* 0ADBD4 800ACFD4 25EF7300 */ addiu $t7, %lo(D_800E7300) # addiu $t7, $t7, 0x7300
/* 0ADBD8 800ACFD8 01CF1021 */ addu $v0, $t6, $t7
/* 0ADBDC 800ACFDC 84450000 */ lh $a1, ($v0)
/* 0ADBE0 800ACFE0 AFA2003C */ sw $v0, 0x3c($sp)
/* 0ADBE4 800ACFE4 0C02A482 */ jal func_800A9208
/* 0ADBE8 800ACFE8 02002025 */ move $a0, $s0
/* 0ADBEC 800ACFEC 8FB8003C */ lw $t8, 0x3c($sp)
/* 0ADBF0 800ACFF0 02002025 */ move $a0, $s0
/* 0ADBF4 800ACFF4 0C02A49E */ jal func_800A9278
/* 0ADBF8 800ACFF8 87050002 */ lh $a1, 2($t8)
/* 0ADBFC 800ACFFC 8FB9003C */ lw $t9, 0x3c($sp)
/* 0ADC00 800AD000 8E09000C */ lw $t1, 0xc($s0)
/* 0ADC04 800AD004 87280000 */ lh $t0, ($t9)
/* 0ADC08 800AD008 15090061 */ bne $t0, $t1, .L800AD190
/* 0ADC0C 800AD00C 240A0002 */ li $t2, 2
/* 0ADC10 800AD010 AE0A0004 */ sw $t2, 4($s0)
/* 0ADC14 800AD014 1000005E */ b .L800AD190
/* 0ADC18 800AD018 AE000020 */ sw $zero, 0x20($s0)
glabel L800AD01C
/* 0ADC1C 800AD01C 3C02800E */ lui $v0, %hi(gModeSelection) # $v0, 0x800e
/* 0ADC20 800AD020 8C42C53C */ lw $v0, %lo(gModeSelection)($v0)
/* 0ADC24 800AD024 24010002 */ li $at, 2
/* 0ADC28 800AD028 00001825 */ move $v1, $zero
/* 0ADC2C 800AD02C 10410006 */ beq $v0, $at, .L800AD048
/* 0ADC30 800AD030 00065880 */ sll $t3, $a2, 2
/* 0ADC34 800AD034 24010003 */ li $at, 3
/* 0ADC38 800AD038 1041000A */ beq $v0, $at, .L800AD064
/* 0ADC3C 800AD03C 3C0D800E */ lui $t5, %hi(gPlayerWinningIndex) # $t5, 0x800e
/* 0ADC40 800AD040 1000000C */ b .L800AD074
/* 0ADC44 800AD044 00000000 */ nop
.L800AD048:
/* 0ADC48 800AD048 3C0C8016 */ lui $t4, %hi(gGPCurrentRaceRankByPlayerId)
/* 0ADC4C 800AD04C 018B6021 */ addu $t4, $t4, $t3
/* 0ADC50 800AD050 8D8C43B8 */ lw $t4, %lo(gGPCurrentRaceRankByPlayerId)($t4)
/* 0ADC54 800AD054 11800007 */ beqz $t4, .L800AD074
/* 0ADC58 800AD058 00000000 */ nop
/* 0ADC5C 800AD05C 10000005 */ b .L800AD074
/* 0ADC60 800AD060 24030001 */ li $v1, 1
.L800AD064:
/* 0ADC64 800AD064 8DADC5E8 */ lw $t5, %lo(gPlayerWinningIndex)($t5)
/* 0ADC68 800AD068 10CD0002 */ beq $a2, $t5, .L800AD074
/* 0ADC6C 800AD06C 00000000 */ nop
/* 0ADC70 800AD070 24030001 */ li $v1, 1
.L800AD074:
/* 0ADC74 800AD074 54600047 */ bnel $v1, $zero, .L800AD194
/* 0ADC78 800AD078 8FBF001C */ lw $ra, 0x1c($sp)
/* 0ADC7C 800AD07C 8E0E0020 */ lw $t6, 0x20($s0)
/* 0ADC80 800AD080 240400B0 */ li $a0, 176
/* 0ADC84 800AD084 25CF0001 */ addiu $t7, $t6, 1
/* 0ADC88 800AD088 29E1001F */ slti $at, $t7, 0x1f
/* 0ADC8C 800AD08C 14200040 */ bnez $at, .L800AD190
/* 0ADC90 800AD090 AE0F0020 */ sw $t7, 0x20($s0)
/* 0ADC94 800AD094 AFA50034 */ sw $a1, 0x34($sp)
/* 0ADC98 800AD098 0C02ABBD */ jal find_8018D9E0_entry_dupe
/* 0ADC9C 800AD09C AFA60038 */ sw $a2, 0x38($sp)
/* 0ADCA0 800AD0A0 8C590004 */ lw $t9, 4($v0)
/* 0ADCA4 800AD0A4 8FA50034 */ lw $a1, 0x34($sp)
/* 0ADCA8 800AD0A8 8FA60038 */ lw $a2, 0x38($sp)
/* 0ADCAC 800AD0AC 2B210002 */ slti $at, $t9, 2
/* 0ADCB0 800AD0B0 14200037 */ bnez $at, .L800AD190
/* 0ADCB4 800AD0B4 00054080 */ sll $t0, $a1, 2
/* 0ADCB8 800AD0B8 3C04800F */ lui $a0, %hi(gCharacterCelebrateAnimation) # 0x800f
/* 0ADCBC 800AD0BC 00882021 */ addu $a0, $a0, $t0
/* 0ADCC0 800AD0C0 8C848380 */ lw $a0, %lo(gCharacterCelebrateAnimation)($a0) # -0x7c80($a0)
/* 0ADCC4 800AD0C4 0C026455 */ jal segmented_to_virtual_dupe_2
/* 0ADCC8 800AD0C8 AFA60038 */ sw $a2, 0x38($sp)
/* 0ADCCC 800AD0CC 8FA60038 */ lw $a2, 0x38($sp)
/* 0ADCD0 800AD0D0 8E040018 */ lw $a0, 0x18($s0)
/* 0ADCD4 800AD0D4 00002825 */ move $a1, $zero
/* 0ADCD8 800AD0D8 0C026990 */ jal func_8009A640
/* 0ADCDC 800AD0DC 00403825 */ move $a3, $v0
/* 0ADCE0 800AD0E0 8FA60038 */ lw $a2, 0x38($sp)
/* 0ADCE4 800AD0E4 24090003 */ li $t1, 3
/* 0ADCE8 800AD0E8 AE090004 */ sw $t1, 4($s0)
/* 0ADCEC 800AD0EC 30C400FF */ andi $a0, $a2, 0xff
/* 0ADCF0 800AD0F0 0C032893 */ jal func_800CA24C
/* 0ADCF4 800AD0F4 AFA40024 */ sw $a0, 0x24($sp)
/* 0ADCF8 800AD0F8 8FA60038 */ lw $a2, 0x38($sp)
/* 0ADCFC 800AD0FC 3C05800F */ lui $a1, %hi(gCharacterSelections) # 0x800f
/* 0ADD00 800AD100 3C012900 */ lui $at, (0x29008007 >> 16) # lui $at, 0x2900
/* 0ADD04 800AD104 00A62821 */ addu $a1, $a1, $a2
/* 0ADD08 800AD108 80A586A8 */ lb $a1, %lo(gCharacterSelections)($a1) # -0x7958($a1)
/* 0ADD0C 800AD10C 34218007 */ ori $at, (0x29008007 & 0xFFFF) # ori $at, $at, 0x8007
/* 0ADD10 800AD110 8FA40024 */ lw $a0, 0x24($sp)
/* 0ADD14 800AD114 00055100 */ sll $t2, $a1, 4
/* 0ADD18 800AD118 0C03243D */ jal func_800C90F4
/* 0ADD1C 800AD11C 01412821 */ addu $a1, $t2, $at
/* 0ADD20 800AD120 1000001C */ b .L800AD194
/* 0ADD24 800AD124 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800AD128
/* 0ADD28 800AD128 8E0B0018 */ lw $t3, 0x18($s0)
/* 0ADD2C 800AD12C 00051080 */ sll $v0, $a1, 2
/* 0ADD30 800AD130 3C0D8019 */ lui $t5, %hi(D_8018DEE0+0x4) # 0x8019
/* 0ADD34 800AD134 000B6080 */ sll $t4, $t3, 2
/* 0ADD38 800AD138 018B6023 */ subu $t4, $t4, $t3
/* 0ADD3C 800AD13C 000C60C0 */ sll $t4, $t4, 3
/* 0ADD40 800AD140 3C0E800F */ lui $t6, %hi(D_800E8440)
/* 0ADD44 800AD144 01C27021 */ addu $t6, $t6, $v0
/* 0ADD48 800AD148 01AC6821 */ addu $t5, $t5, $t4
/* 0ADD4C 800AD14C 8DADDEE4 */ lw $t5, %lo(D_8018DEE0+0x4)($t5) # -0x211c($t5)
/* 0ADD50 800AD150 8DCE8440 */ lw $t6, %lo(D_800E8440)($t6)
/* 0ADD54 800AD154 3C04800F */ lui $a0, %hi(D_800E83A0) # 0x800f
/* 0ADD58 800AD158 00822021 */ addu $a0, $a0, $v0
/* 0ADD5C 800AD15C 01AE082A */ slt $at, $t5, $t6
/* 0ADD60 800AD160 5420000C */ bnel $at, $zero, .L800AD194
/* 0ADD64 800AD164 8FBF001C */ lw $ra, 0x1c($sp)
/* 0ADD68 800AD168 8C8483A0 */ lw $a0, %lo(D_800E83A0)($a0) # -0x7c60($a0)
/* 0ADD6C 800AD16C 0C026455 */ jal segmented_to_virtual_dupe_2
/* 0ADD70 800AD170 AFA60038 */ sw $a2, 0x38($sp)
/* 0ADD74 800AD174 8FA60038 */ lw $a2, 0x38($sp)
/* 0ADD78 800AD178 8E040018 */ lw $a0, 0x18($s0)
/* 0ADD7C 800AD17C 00002825 */ move $a1, $zero
/* 0ADD80 800AD180 0C026990 */ jal func_8009A640
/* 0ADD84 800AD184 00403825 */ move $a3, $v0
/* 0ADD88 800AD188 240F0004 */ li $t7, 4
/* 0ADD8C 800AD18C AE0F0004 */ sw $t7, 4($s0)
.L800AD190:
glabel L800AD190
/* 0ADD90 800AD190 8FBF001C */ lw $ra, 0x1c($sp)
.L800AD194:
/* 0ADD94 800AD194 8FB00018 */ lw $s0, 0x18($sp)
/* 0ADD98 800AD198 27BD0040 */ addiu $sp, $sp, 0x40
/* 0ADD9C 800AD19C 03E00008 */ jr $ra
/* 0ADDA0 800AD1A0 00000000 */ nop
+1 -1
View File
@@ -31,7 +31,7 @@ $(BLUESHELL_FRAMES) $(BLUESHELL_PALETTE): $(BLUESHELL_EXPORT_SENTINEL) ;
$(BLUESHELL_EXPORT_SENTINEL): $(ASSET_DIR)/blueshell.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_blueshell
distclean_blueshell:
+1 -1
View File
@@ -22,7 +22,7 @@ $(BOMB_FRAMES) $(BOMB_PALETTE): $(BOMB_EXPORT_SENTINEL) ;
$(BOMB_EXPORT_SENTINEL): $(ASSET_DIR)/bomb.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_bomb
distclean_bomb:
+1 -1
View File
@@ -50,7 +50,7 @@ $(PORTRAIT_PNG) $(SPECIAL_PORTRAIT_PNG) $(PORTRAIT_PALETTES) $(SPECIAL_PORTRAIT_
$(PORTRAIT_EXPORT_SENTINEL): $(ASSET_DIR)/character_portraits.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_character_portraits
distclean_character_portraits:
@@ -33,7 +33,7 @@ $(BOWSER_SELECT_PNG): $(BOWSER_SELECT_EXPORT_SENTINEL) ;
$(BOWSER_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/bowser_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_bowser_select
distclean_bowser_select:
@@ -33,7 +33,7 @@ $(DONKEYKONG_SELECT_PNG): $(DONKEYKONG_SELECT_EXPORT_SENTINEL) ;
$(DONKEYKONG_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/donkeykong_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_donkeykong_select
distclean_donkeykong_select:
@@ -33,7 +33,7 @@ $(LUIGI_SELECT_PNG): $(LUIGI_SELECT_EXPORT_SENTINEL) ;
$(LUIGI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/luigi_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_luigi_select
distclean_luigi_select:
@@ -33,7 +33,7 @@ $(MARIO_SELECT_PNG): $(MARIO_SELECT_EXPORT_SENTINEL) ;
$(MARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/mario_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_mario_select
distclean_mario_select:
@@ -33,7 +33,7 @@ $(PEACH_SELECT_PNG): $(PEACH_SELECT_EXPORT_SENTINEL) ;
$(PEACH_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/peach_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_peach_select
distclean_peach_select:
@@ -33,7 +33,7 @@ $(TOAD_SELECT_PNG): $(TOAD_SELECT_EXPORT_SENTINEL) ;
$(TOAD_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/toad_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_toad_select
distclean_toad_select:
@@ -33,7 +33,7 @@ $(WARIO_SELECT_PNG): $(WARIO_SELECT_EXPORT_SENTINEL) ;
$(WARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/wario_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_wario_select
distclean_wario_select:
@@ -33,7 +33,7 @@ $(YOSHI_SELECT_PNG): $(YOSHI_SELECT_EXPORT_SENTINEL) ;
$(YOSHI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/yoshi_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_yoshi_select
distclean_yoshi_select:
+1 -1
View File
@@ -36,7 +36,7 @@ $(COURSE_OUTLINE_PNG): $(COURSE_OUTLINE_EXPORT_SENTINEL) ;
$(COURSE_OUTLINE_EXPORT_SENTINEL): $(ASSET_DIR)/course_outlines.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_course_outlines
distclean_course_outlines:
+1 -1
View File
@@ -36,7 +36,7 @@ $(COURSE_PREVIEW_PNG): $(COURSE_PREVIEW_EXPORT_SENTINEL) ;
$(COURSE_PREVIEW_EXPORT_SENTINEL): $(ASSET_DIR)/course_previews.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_course_previews
distclean_course_previews:
+4 -2
View File
@@ -57,8 +57,10 @@ $(BANSHEE_BOARDWALK_DIR)/boo_frames.mio0: $(BANSHEE_BOARDWALK_DIR)/boo_frames.bi
# $(DATA_DIR)/boo_frames.bin: $(DATA_DIR)/boo_frames.o
# $(OBJCOPY) --only-section=.data -O binary $@ $<
# cat'ing the files together is easier though
CAT ?= cat
$(BANSHEE_BOARDWALK_DIR)/boo_frames.bin: $(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin)
cat $^ > $@
$(CAT) $^ > $@
$(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin): %.bin : %.png
$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BOO_PALETTE)
@@ -79,7 +81,7 @@ $(BANSHEE_BOARDWALK_PNG): $(BANSHEE_BOARDWALK_EXPORT_SENTINEL) ;
$(BANSHEE_BOARDWALK_EXPORT_SENTINEL): $(ASSET_DIR)/courses/banshee_boardwalk.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_banshee_boardwalk
distclean_banshee_boardwalk:
+1 -1
View File
@@ -27,7 +27,7 @@ $(THWOMP_PALETTE) $(THWOMP_FACE_FRAMES) $(THOWMP_SIDE_PNG): $(BOWSERS_CASTLE_EXP
$(BOWSERS_CASTLE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/bowsers_castle.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_bowsers_castle
distclean_bowsers_castle:
+1 -1
View File
@@ -15,7 +15,7 @@ $(CHOCO_MOUNTAIN_PNG): $(CHOCO_MOUNTAIN_EXPORT_SENTINEL) ;
$(CHOCO_MOUNTAIN_EXPORT_SENTINEL): $(ASSET_DIR)/courses/choco_mountain.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_choco_mountain
distclean_choco_mountain:
+1 -1
View File
@@ -43,7 +43,7 @@ $(DKS_JUNGLE_PARKWAY_PNG): $(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL) ;
$(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/dks_jungle_parkway.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_dks_junk_parkway
distclean_dks_junk_parkway:
+1 -1
View File
@@ -43,7 +43,7 @@ $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE) $(FRAPPE_SNOWLAND_SNOW_PALETTE) $(FRAPPE_SNOW
$(FRAPPE_SNOWLAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/frappe_snowland.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_frappe_snowland
distclean_frappe_snowland:
+1 -1
View File
@@ -58,7 +58,7 @@ $(KALIMARI_DESERT_PNG): $(KALIMARI_DESERT_EXPORT_SENTINEL) ;
$(KALIMARI_DESERT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/kalimari_desert.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_kalimari_desert
distclean_kalimari_desert:
+1 -1
View File
@@ -33,7 +33,7 @@ $(KOOPA_TROOPA_BEACH_CRAB_PALETTE) $(KOOPA_TROOPA_BEACH_CRAB_FRAMES) $(KOOPA_TRO
$(KOOPA_TROOPA_BEACH_EXPORT_SENTINEL): $(ASSET_DIR)/courses/koopa_troopa_beach.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_koopa_troopa_beach
distclean_koopa_troopa_beach:
+1 -1
View File
@@ -17,7 +17,7 @@ $(LUIGI_RACEWAY_PNG): $(LUIGI_RACEWAY_EXPORT_SENTINEL) ;
$(LUIGI_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/luigi_raceway.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_luigi_raceway
distclean_luigi_raceway:
+1 -1
View File
@@ -36,7 +36,7 @@ $(PIRANHA_PLANT_FRAMES) $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE) $(MARIO_RACEWAY_S
$(PIRANHA_PLANT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/mario_raceway.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_mario_raceway
distclean_mario_raceway:
+1 -1
View File
@@ -74,7 +74,7 @@ $(MOO_MOO_FARM_SIGN_PNG) $(MOO_MOO_FARM_DIRT_PNG): $(MOO_MOO_FARM_EXPORT_SENTINE
$(MOO_MOO_FARM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/moo_moo_farm.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_moo_moo_farm
distclean_moo_moo_farm:
+1 -1
View File
@@ -99,7 +99,7 @@ $(RAINBOW_ROAD_PNG): $(RAINBOW_ROAD_EXPORT_SENTINEL) ;
$(RAINBOW_ROAD_EXPORT_SENTINEL): $(ASSET_DIR)/courses/rainbow_road.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_rainbow_road
distclean_rainbow_road:
+1 -1
View File
@@ -13,7 +13,7 @@ $(ROYAL_RACEWAY_PIRANHA_PLANT_PALETTE): $(ROYAL_RACEWAY_EXPORT_SENTINEL) ;
$(ROYAL_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/royal_raceway.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_royal_raceway
distclean_royal_raceway:
+1 -1
View File
@@ -20,7 +20,7 @@ $(SHERBET_LAND_PNG) $(PENGUIN_PNG) $(SHERBET_LAND_ICE): $(SHERBET_LAND_EXPORT_SE
$(SHERBET_LAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/sherbet_land.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_sherbet_land
distclean_sherbet_land:
+1 -1
View File
@@ -47,7 +47,7 @@ $(TOADS_TURNPIKE_PNG): $(TOADS_TURNPIKE_EXPORT_SENTINEL) ;
$(TOADS_TURNPIKE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/toads_turnpike.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_toads_turnpike
distclean_toads_turnpike:
+1 -1
View File
@@ -17,7 +17,7 @@ $(WARIO_STADIUM_SIGN): $(WARIO_STADIUM_EXPORT_SENTINEL) ;
$(WARIO_STADIUM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/wario_stadium.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_wario_stadium
distclean_wario_stadium:
+1 -1
View File
@@ -24,7 +24,7 @@ $(YOSHI_VALLEY_PNG): $(YOSHI_VALLEY_EXPORT_SENTINEL) ;
$(YOSHI_VALLEY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/yoshi_valley.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_yoshi_valley
distclean_yoshi_valley:
+1 -1
View File
@@ -18,7 +18,7 @@ $(DEBUG_FONT_PNG) $(DEBUG_FONT_PALETTE): $(DEBUG_FONT_EXPORT_SENTINEL) ;
$(DEBUG_FONT_EXPORT_SENTINEL): $(ASSET_DIR)/debug_font.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_debug_font
distclean_debug_font:
+1 -1
View File
@@ -21,7 +21,7 @@ $(TROHPY_PNG) $(PODIUM_PNG): $(ENDING_CEREMONY_EXPORT_SENTINEL) ;
$(ENDING_CEREMONY_EXPORT_SENTINEL): $(ASSET_DIR)/ending_ceremony.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_ending_ceremony
distclean_ending_ceremony:
+1 -1
View File
@@ -31,7 +31,7 @@ $(FINISH_LINE_BANNER_PNG) $(FINISH_LINE_BANNER_PALETTE): $(FINISH_LINE_BANNER_EX
$(FINISH_LINE_BANNER_EXPORT_SENTINEL): $(ASSET_DIR)/finish_line_banner.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_finish_line_banner
distclean_finish_line_banner:
+1 -1
View File
@@ -31,7 +31,7 @@ $(GREENSHELL_FRAMES) $(GREENSHELL_PALETTE): $(GREENSHELL_EXPORT_SENTINEL) ;
$(GREENSHELL_EXPORT_SENTINEL): $(ASSET_DIR)/greenshell.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_greenshell
distclean_greenshell:
+1 -1
View File
@@ -55,7 +55,7 @@ $(HUD_TYPE_C_PORTRAIT_BORDER_PNG): $(HUD_TYPE_C_EXPORT_SENTINEL) ;
$(HUD_TYPE_C_EXPORT_SENTINEL): $(ASSET_DIR)/hud_type_c.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_hud_type_c
distclean_hud_type_c:
+1 -1
View File
@@ -50,7 +50,7 @@ $(ITEM_WINDOW_PNG) $(ITEM_WINDOW_PALETTES): $(ITEM_WINDOW_EXPORT_SENTINEL) ;
$(ITEM_WINDOW_EXPORT_SENTINEL): $(ASSET_DIR)/item_window.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_item_window
distclean_item_window:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(BOWSER_KART_FRAME_PNG) $(BOWSER_KART_PALETTE_PNG): $(BOWSER_EXPORT_SENTINEL) ;
$(BOWSER_EXPORT_SENTINEL): $(ASSET_DIR)/karts/bowser_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_bowser_kart
distclean_bowser_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(DONKEYKONG_KART_FRAME_PNG) $(DONKEYKONG_KART_PALETTE_PNG): $(DONKEYKONG_EXPORT
$(DONKEYKONG_EXPORT_SENTINEL): $(ASSET_DIR)/karts/donkeykong_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_donkeykong_kart
distclean_donkeykong_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(LUIGI_KART_FRAME_PNG) $(LUIGI_KART_PALETTE_PNG): $(LUIGI_EXPORT_SENTINEL) ;
$(LUIGI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/luigi_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_luigi_kart
distclean_luigi_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(MARIO_KART_FRAME_PNG) $(MARIO_KART_PALETTE_PNG): $(MARIO_EXPORT_SENTINEL) ;
$(MARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/mario_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_mario_kart
distclean_mario_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(PEACH_KART_FRAME_PNG) $(PEACH_KART_PALETTE_PNG): $(PEACH_EXPORT_SENTINEL) ;
$(PEACH_EXPORT_SENTINEL): $(ASSET_DIR)/karts/peach_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_peach_kart
distclean_peach_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(TOAD_KART_FRAME_PNG) $(TOAD_KART_PALETTE_PNG): $(TOAD_EXPORT_SENTINEL) ;
$(TOAD_EXPORT_SENTINEL): $(ASSET_DIR)/karts/toad_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_toad_kart
distclean_toad_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(WARIO_KART_FRAME_PNG) $(WARIO_KART_PALETTE_PNG): $(WARIO_EXPORT_SENTINEL) ;
$(WARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/wario_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_wario_kart
distclean_wario_kart:
+1 -1
View File
@@ -1499,7 +1499,7 @@ $(YOSHI_KART_FRAME_PNG) $(YOSHI_KART_PALETTE_PNG): $(YOSHI_EXPORT_SENTINEL) ;
$(YOSHI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/yoshi_kart.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_yoshi_kart
distclean_yoshi_kart:
+1 -1
View File
@@ -28,7 +28,7 @@ $(BLUELIGHT_FRAMES) $(BLUELIGHT_PALETTE): $(BLUELIGHT_EXPORT_SENTINEL) ;
$(BLUELIGHT_EXPORT_SENTINEL): assets/lakitu/bluelight.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_bluelight
distclean_lakitu_bluelight:
+1 -1
View File
@@ -52,7 +52,7 @@ $(CHECKEREDFLAG_FRAMES) $(CHECKEREDFLAG_PALETTE): $(CHECKEREDFLAG_EXPORT_SENTINE
$(CHECKEREDFLAG_EXPORT_SENTINEL): assets/lakitu/checkeredflag.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_checkeredflag
distclean_lakitu_checkeredflag:
+1 -1
View File
@@ -36,7 +36,7 @@ $(FINALLAP_FRAMES) $(FINALLAP_PALETTE): $(FINALLAP_EXPORT_SENTINEL) ;
$(FINALLAP_EXPORT_SENTINEL): assets/lakitu/finallap.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_finallap
distclean_lakitu_finallap:
+1 -1
View File
@@ -24,7 +24,7 @@ $(FISHING_FRAMES) $(FISHING_PALETTE): $(FISHING_EXPORT_SENTINEL) ;
$(FISHING_EXPORT_SENTINEL): assets/lakitu/fishing.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_fishing
distclean_lakitu_fishing:
+1 -1
View File
@@ -28,7 +28,7 @@ $(NOLIGHTS_FRAMES) $(NOLIGHTS_PALETTE): $(NOLIGHTS_EXPORT_SENTINEL) ;
$(NOLIGHTS_EXPORT_SENTINEL): assets/lakitu/nolights.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_nolights
distclean_lakitu_nolights:
+1 -1
View File
@@ -36,7 +36,7 @@ $(REDLIGHTS_FRAMES) $(REDLIGHTS_PALETTE): $(REDLIGHTS_EXPORT_SENTINEL) ;
$(REDLIGHTS_EXPORT_SENTINEL): assets/lakitu/redlights.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_redlights
distclean_lakitu_redlights:
+1 -1
View File
@@ -36,7 +36,7 @@ $(REVERSE_FRAMES) $(REVERSE_PALETTE): $(REVERSE_EXPORT_SENTINEL) ;
$(REVERSE_EXPORT_SENTINEL): assets/lakitu/reverse.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_reverse
distclean_lakitu_reverse:
+1 -1
View File
@@ -36,7 +36,7 @@ $(SECONDLAP_FRAMES) $(SECONDLAP_PALETTE): $(SECONDLAP_EXPORT_SENTINEL) ;
$(SECONDLAP_EXPORT_SENTINEL): assets/lakitu/secondlap.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_lakitu_secondlap
distclean_lakitu_secondlap:
+1 -1
View File
@@ -23,7 +23,7 @@ $(MINIMAP_ICONS_PNG): $(MINIMAP_ICONS_EXPORT_SENTINEL) ;
$(MINIMAP_ICONS_EXPORT_SENTINEL): $(ASSET_DIR)/minimap_icons.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_minimap_icons
distclean_minimap_icons:
+1 -1
View File
@@ -29,7 +29,7 @@ $(ONOMATOPOEIA_PNG) $(ONOMATOPOEIA_PALETTE): $(ONOMATOPOEIA_EXPORT_SENTINEL) ;
$(ONOMATOPOEIA_EXPORT_SENTINEL): $(ASSET_DIR)/onomatopoeia.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_onomatopoeia
distclean_onomatopoeia:
+1 -1
View File
@@ -22,7 +22,7 @@ $(PLAYER_EMBLEM_PNGS) $(PLAYER_EMBLEM_PALETTE): $(PLAYER_EMBLEM_EXPORT_SENTINEL)
$(PLAYER_EMBLEM_EXPORT_SENTINEL): $(ASSET_DIR)/player_emblems.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_player_emblems
distclean_player_emblems:
+1 -1
View File
@@ -13,7 +13,7 @@ $(REFLECTION_MAP): $(STARTUP_LOGO_EXPORT_SENTINEL) ;
$(STARTUP_LOGO_EXPORT_SENTINEL): $(ASSET_DIR)/startup_logo.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_startup_logo
distclean_startup_logo:
+1 -1
View File
@@ -38,7 +38,7 @@ $(TREES_PNG) $(TREES_PALETTE) $(TREES_PALETTE_IMPORT): $(TREES_EXPORT_SENTINEL)
$(TREES_EXPORT_SENTINEL): $(ASSET_DIR)/trees.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_trees
distclean_trees:
+1 -1
View File
@@ -28,7 +28,7 @@ $(UNUSED_TRAFFIC_LIGHT_PNG) $(UNUSED_TRAFFIC_LIGHT_PALETTE): $(UNUSED_TRAFFIC_LI
$(UNUSED_TRAFFIC_LIGHT_EXPORT_SENTINEL): $(ASSET_DIR)/unused_traffic_light.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@
$(TOUCH) $@
.PHONY: distclean_unused_traffic_light
distclean_unused_traffic_light:
-101
View File
@@ -1,101 +0,0 @@
@page buildwindows Compiling for Windows
## Compiling mk64 Decomp In Windows
***This method is not recommended nor supported. However, it is the only solution to build in W7/W8. WSL is the path of least resistance, use that not this***
> Building decomp using msys on Windows is a journey.. A journey akin to crawling over broken glass in the dark.
- leogames
The extraneous and convoluted process to building mk64 decomp on Windows begins with disabling your anti-virus program or adding an exception to the mk64 decomp folder and the msys2 installation folder.
Please note that this action may impact the security of your system. Prior to proceeding, make sure to understand the increased security risks that may result from this step. Nobody except you, is responsible and liable for your system and its security.
### Preamble
Any misteps may require a complete uninstall of `MSYS2 MinGW x64` and restarting from the very beginning.
It is unknown if `MSYS MinGW x32` is supported (most likely not).
### Step 1: Download MSYS2 MinGW x64
https://www.msys2.org/
Follow the initial instructions to update the base packages. Ignore installing any extra packages in-case they conflict with the below steps.
MinGW is a separate program from Msys2. However, it must be wrapped right into msys2.
Compiling recomp requires steps using<br>`MSYS2 MSYS` *and* `MSYS2 MinGW x64`. The instructions will clearly differentiate which terminal program to launch and run in the section titles.
##### *Why flip-flop between both?*
Compiling the recomp executable that generates the source files for compiling the compiler requires capstone. A disassembly, analysis, and reverse-engineering framework. Capstone is only available on `MSYS2 MinGW x64`. It is not available on `MSYS2 MSYS`. However, compiling the compiler itself requires
`MSYS2 MSYS` because it contains an equivallent dependency for `mman`. A memory mapping library. `MSYS2 MinGW x64` does not contain an equivallent dependancy.
### Step 2: Install Dependancies in MSYS2 MinGW x64
```
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-capstone pkgconf make python3 git
```
### Step 3: Install Dependencies in MSYS2 MSYS
```
pacman -S gcc
```
### Step 3.5: Rename include in recomp.cpp
For some reason on Windows capstone is inside of a capstone folder.
```
#include <capstone/capstone.h>
```
### Step 4: Get Binutils
Download and install the mips64 tool chain:
https://github.com/N64-tools/mips64-gcc-toolchain
Merge the inner folders (bin, share, etc.) with the respective folders in `C:\msys64\mingw64\`
### Step 5: Compiling recomp.exe in MSYS2 MinGW x64
In `MSYS2 MinGW x64` run in `mk64/tools/ido5.3_recomp/`:
```
g++ recomp.cpp -o recomp -g -lcapstone -Dugen53
```
### Step 6: Generate Recomp Source Files in MSYS2 MinGW x64
Generate the .c files which will compile into the recomp binaries.
mk64 requires the following compiler binaries: `as1, cc, cfe, copt, ugen, ujoin, uld, umerge, uopt`
In `MSYS2 MinGW x64` run in the directory `mk64/tools/ido5.3_recomp/`:
```
./recomp ../ido5.3_compiler/usr/lib/as1 > as1_c.c
./recomp ../ido5.3_compiler/usr/lib/cc > cc_c.c
./recomp ../ido5.3_compiler/usr/lib/cfe > cfe_c.c
./recomp ../ido5.3_compiler/usr/lib/copt > copt_c.c
./recomp ../ido5.3_compiler/usr/lib/ugen > ugen_c.c
./recomp ../ido5.3_compiler/usr/lib/ujoin > ujoin_c.c
./recomp ../ido5.3_compiler/usr/lib/uld > uld_c.c
./recomp ../ido5.3_compiler/usr/lib/umerge > umerge_c.c
./recomp ../ido5.3_compiler/usr/lib/uopt > uopt_c.c
```
If you get an assertion failed error. Then the directory to the compiler is incorrect.
The binary for cc is in `/ido5.3_compiler/usr/bin/` so do:
```
./recomp ../ido5.3_compiler/usr/bin/cc > cc_c.c
```
### Step 7: Compiling the recomp compiler in MSYS2 MSYS
In `MSYS2 MSYS` run in the directory `mk64/tools/ido5.3_recomp/`:
```
gcc libc_impl.c as1_c.c -o as1 -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c cc_c.c -o cc -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c cfe_c.c -o cfe -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c copt_c.c -o copt -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c ugen_c.c -o ugen -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c ujoin_c.c -o ujoin -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c uld_c.c -o uld -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c umerge_c.c -o umerge -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
gcc libc_impl.c uopt_c.c -o uopt -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
```
`-O2` is an optional optimization flag.
### Step 8: Compile mk64 in MSYS2 MinGW x64
In `/mk64/` run:
```
make -j#
```
Replace # with your number of CPU cores for quicker compilation.
+6 -4
View File
@@ -27,9 +27,13 @@ Review the [n64decomp/sm64](https://github.com/n64decomp/sm64) readme for instru
# Windows
Not recommended. Use WSL unless this is your only option.
- Clone the repo or download the zip.
- Download and extract the toolchain from [here](https://github.com/coco875/mk64-tools/releases/download/v0.0.6/mips-tools-chain-windows.zip)
[Instructions here](buildwindows.html)
### Setup
- Place the `mingw64` folder from the toolchain into the tools folder like so: `mk64/tools/mingw64`.
- Open a terminal (cmd or powershell) in the repo folder and run `"tools\mingw64\w64devkit.exe"` and after `make`
- Wait for the build to finish and Enjoy!
# macOS
@@ -55,7 +59,6 @@ docker run --rm -v .:/mk64 mk64
For example:
```bash
docker run --rm -v .:/mk64 mk64 make -C tools
docker run --rm -v .:/mk64 mk64 make
```
@@ -65,7 +68,6 @@ Place a US version of Mario Kart 64 called `baserom.us.z64` into the project fol
Run the following commands after pulling:
```bash
make -C tools
make -j
```
+5 -7
View File
@@ -137,11 +137,6 @@ def main():
print(fname + " has the wrong hash! Found " + sha1 + ", expected " + expected_sha1)
sys.exit(1)
# Make sure tools exist
subprocess.check_call(
["make", "-s", "-C", "tools/", "mio0", "n64graphics", "tkmk00"]
)
# Go through the assets in roughly alphabetical order (but assets in the same
# compressed block still go together).
keys = sorted(list(todo.keys()), key=lambda k: todo[k][0][0])
@@ -212,7 +207,9 @@ def main():
input = image[pos : pos + size]
os.makedirs(os.path.dirname(asset), exist_ok=True)
if asset.endswith(".png"):
with tempfile.NamedTemporaryFile(prefix="asset") as tex_file:
name_file = ""
with tempfile.NamedTemporaryFile(prefix="asset", delete=False) as tex_file:
name_file = tex_file.name
tex_file.write(input)
tex_file.flush()
cmd = [
@@ -250,7 +247,8 @@ def main():
"-c", ci_fmt,
"-p", tmp_pal.name
])
subprocess.run(cmd, check=True)
subprocess.run(cmd, check=True)
os.remove(name_file)
else:
with open(asset, "wb") as f:
f.write(input)
-138
View File
@@ -1,138 +0,0 @@
#!/bin/node
const fs = require('fs');
const { exit } = require('process');
/**
* Call this script like
*
* node app.js input_file_here output_file_here
*/
if (process.argv.length !== 4 && process.argv.length !== 5 ) {
console.error(`Error! Usage: ./${process.argv[1].split('/').slice(-1)[0]} input_file output_file`)
exit(1);
}
// get the name of the file to read
const f = fs.readFileSync(process.argv[2]);
let type;
if (Number(process.argv[4]) > -1 && Number(process.argv[4]) < 3) {
type = Number(process.argv[4]);
} else {
type = 2;
}
// offset, type
arr = [
{o: "0x0", t: 3},
{o: "0x19D0", t: 0}, // path
{o: "0x1CF8", t: 0}, // more path? or spawn?
// 0x5400
];
let iter = 8;
// spawn, vtx, ptr, gfx
switch(type) {
case 0: // Actor Spawn
iter = 8;
break;
case 1: // Vtx
iter = 16;
break;
case 2: // Ptr Addr
iter = 8;
break;
}
// parse data to s16
function p(offset) {
const byteA = f[offset];
const byteB = f[offset + 1];
let sign = byteA & (1 << 7);
let x = (((byteA & 0xFF) << 8) | (byteB & 0xFF));
if (sign) {
return 0xFFFF0000 | x; // fill in most significant bits with 1's
} else {
return x;
}
}
// parse s8 to hex
function s8(b) {
if (typeof b === "undefined") {
return "";
}
let res = b.toString(16).toUpperCase();
if (res.length == 1) {
return "0x0"+String(res);
}
return "0x"+res;
}
function s32_h(b, offset) { // helper
let str = f[b + offset].toString(16).toUpperCase()
if (str.length == 1) {
return "0"+str;
} else {
return str;
}
}
// parse s32 to hex
function s32(b) {
return res = "0x"+s32_h(b, 0) +
s32_h(b, 1) +
s32_h(b, 2) +
s32_h(b, 3);
}
// lines to output
let k = [];
switch(type) {
case 0:
k.push("struct ActorSpawnData d_course__dl[] = {");
break;
case 1:
k.push("Vtx_t d_course__dl[] = {");
break;
case 2:
k.push("TrackSections d_course__dl[] = {");
break;
}
for (i = 0; i < f.length; i += iter) {
// X Y Z
switch(type) {
case 0: // Spawn location { x, y, z}, { flag }
k.push(" {{ "+p(i + 0)+", "+p(i + 2)+", "+p(i + 4)+" }, { "+p(i + 6)+" }},");
break;
case 1: // Vtx {x, y, z}, { flag }, { t1, t2 }, { r, g, b, a }
k.push(" {{ "+p(i + 0)+", "+p(i + 2)+", "+p(i + 4)+" }, { "+p(i + 6)+" }, { "+p(i + 8)+", "+p(i + 10)+" }, {"+s8(f[i + 12], 16)+", "+s8(f[i + 13], 16)+", "+s8(f[i + 14])+", "+s8(f[i + 15])+" }},");
break;
case 2: // Ptr addr
k.push(" {{ "+s32(i + 0)+" }, { "+s32(i + 4)+" }},");
break;
}
// check if this is a glabel line
//let n = i.match(/glabel D_([0-9A-F]*)$/);
// if it is
//if (n) {
// the number will be in the second? item in the array - convert it to a numbers
// let newLast = Number(`0x${n[1]}`)
//if (last != 0) { // not the first line? add the skip info
// k.push(`.skip ${newLast-last}`) // .skip ##
// k.push('') // blank line
//}
//last = newLast; // save what the last glbael line was
//k.push(i) // glabel D_###
//}
//if (i > 100) {break;}
}
// might need additional logical here to output the last lines after the last glabel?
// for now, just copy the last line from the original file
//k.push(b.slice(-1)[0])
k.push("};");
// write this to the file name in the second arg
//fs.writeFileSync(process.argv[3], k.join("\n")+"\n");
console.log(k.join("\n")+"\n");
exit(0);
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
# note, this quick hack only works with three arguments.
# if you're trying to use four arguments, you need to add another `$4` etc.
python3 tools/decomp-permuter/permuter.py $1 $2 $3
+103 -155
View File
@@ -9,6 +9,7 @@
#include "audio/data.h"
#include "audio/port_eu.h"
#include "code_800029B0.h"
#include "code_80005FD0.h"
#include "code_80091750.h"
s8 D_8018EF10;
@@ -21,7 +22,7 @@ Camera *gCopyCamera[4];
Vec3f gVelocityCamera[4];
Vec3f gCameraLastPos[4];
u8 D_8018FC08;
u16 D_8018FC10[4][2];
s16 D_8018FC10[4][2];
struct Sound sSoundRequests[0x100];
struct SoundCharacteristics sSoundBanks[SOUND_BANK_COUNT][20];
u8 sSoundBankUsedListBack[SOUND_BANK_COUNT];
@@ -578,80 +579,59 @@ Vec3f *func_800C21E8(Vec3f pos, u32 soundBits) {
return ret;
}
#ifdef MIPS_TO_C
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-18-2023
void func_800C2274(s32 player) {
void func_800C2274(u8 player) {
s16 sp46;
s16 sp44;
s16 sp42;
s16 temp_a1;
s16 temp_t2;
s16 var_s0;
s16 var_s1;
s32 temp_a3;
s32 var_a2;
struct SequenceChannel *temp_v0;
u16 *temp_s1;
u16 *temp_v0_2;
u16 *temp_v0_3;
s16 sp42;
u8 var_s0;
u8 temp_s0;
u8 why = 0xFF;
s32 var_a2;
temp_a3 = player & 0xFF;
var_a2 = 0xF;
if (((u32) gSequencePlayers[temp_a3] >> 0x1F) != 0) {
if (gSequencePlayers[player].enabled != 0) {
switch (gScreenModeSelection) { /* irregular */
case 0:
break;
case 1:
var_a2 = 0xE;
break;
case 3:
case 0:
break;
case 1:
var_a2 = 0xE;
break;
case 3:
if (gPlayerCountSelection1 == 3) {
var_a2 = 0xD;
} else {
var_a2 = 0xC;
if (gPlayerCountSelection1 == 3) {
var_a2 = 0xD;
}
break;
}
break;
}
temp_v0 = gSequencePlayers[temp_a3].channels[var_a2];
temp_s0 = (u8) temp_v0->soundScriptIO[0];
if (temp_s0 != (u8) 0x00FFU) {
sp46 = temp_v0->soundScriptIO[1] & 3;
var_s1 = temp_v0->soundScriptIO[2] & 0xF;
temp_s0 = gSequencePlayers[player].channels[var_a2]->soundScriptIO[0];
if (temp_s0 != why) {
sp46 = gSequencePlayers[player].channels[var_a2]->soundScriptIO[1] % 4u;
var_s1 = gSequencePlayers[player].channels[var_a2]->soundScriptIO[2] % 16u;
if (var_s1 >= 0xA) {
var_s1 = 9;
}
sp42 = temp_v0->soundScriptIO[3] & 7;
func_800CBBE8(((temp_a3 & 0xFF) << 0x10) | 0x06000000 | ((var_a2 & 0xFF) << 8), -1);
sp44 = var_s1;
sp42 = gSequencePlayers[player].channels[var_a2]->soundScriptIO[3] % 8u;
func_800CBBE8(((player & 0xFF) << 0x10) | 0x06000000 | ((var_a2 & 0xFF) << 8), -1);
}
switch (temp_s0) { /* switch 1; irregular */
case 1: /* switch 1 */
temp_v0_2 = D_8018FC10[sp46];
temp_v0_2->unk0 = (u16) sp44;
var_s0 = 0;
temp_v0_2->unk2 = sp42;
do {
temp_s1 = D_8018FC10[var_s0];
temp_a1 = (s16) temp_s1->unk0;
if (temp_a1 != (s16) 0x00FFU) {
func_8001AAAC(var_s0, temp_a1, temp_s1->unk2);
temp_s1->unk0 = 0x00FF;
}
temp_t2 = (var_s0 + 1) & 0xFF;
var_s0 = temp_t2;
} while (temp_t2 < 4);
return;
case 2: /* switch 1 */
temp_v0_3 = D_8018FC10[sp46];
temp_v0_3->unk0 = (u16) sp44;
temp_v0_3->unk2 = sp42;
break;
case 1: /* switch 1 */
D_8018FC10[sp46][0] = var_s1;
D_8018FC10[sp46][1] = sp42;
for (var_s0 = 0; var_s0 < 4; var_s0++) {
if (D_8018FC10[var_s0][0] != why) {
func_8001AAAC(var_s0, D_8018FC10[var_s0][0], D_8018FC10[var_s0][1]);
D_8018FC10[var_s0][0] = why;
}
}
break;
case 2: /* switch 1 */
D_8018FC10[sp46][0] = var_s1;
D_8018FC10[sp46][1] = sp42;
break;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C2274.s")
#endif
void func_800C2474(void) {
u8 var_v0;
@@ -2068,33 +2048,28 @@ void func_800C4FE4(u8 bankId) {
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C4FE4.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-17-2023
// Seems somewhat similar to certain parts of `select_current_sounds` from SM64
void func_800C5278(u8 bankId) {
s32 stackPadding0;
u8 soundId;
struct SoundCharacteristics sp60;
s32 temp_s7;
struct SoundCharacteristics *temp_s0;
struct SoundCharacteristics *temp_s2;
temp_s7 = bankId & 0xFF;
temp_s2 = sSoundBanks[temp_s7];
if (temp_s2->next != 0xFF) {
do {
temp_s0 = &sSoundBanks[temp_s7][temp_s2->next];
if ((s32) temp_s0->soundStatus >= 3) {
func_800CBBE8((temp_s0->unk2C << 8) | 0x06020000, 0);
}
if (temp_s0->soundStatus != 0) {
delete_sound_from_bank(temp_s7 & 0xFF, temp_s2->next & 0xFF);
}
} while (temp_s2->next != 0xFF);
soundId = sSoundBanks[bankId][0].next;
while (soundId != 0xFF) {
if (sSoundBanks[bankId][soundId].soundStatus >= 3) {
func_800CBBE8(((sSoundBanks[bankId][soundId].unk2C & 0xff) << 8) | 0x06020000, 0);
}
if (sSoundBanks[bankId][soundId].soundStatus != 0) {
delete_sound_from_bank(bankId, soundId);
}
// This feels wrong, I think it only works because `delete_sound_from_bank`
// modifies `sSoundBanks[bankId][0].next`, which allows us to eventually(?)
// break out of the loop
soundId = sSoundBanks[bankId][0].next;
}
sp60.soundBits = temp_s7 << 0x1C;
func_800C41CC(0U, &sp60);
sp60.soundBits = bankId << 0x1C;
func_800C41CC(0, &sp60);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C5278.s")
#endif
void func_800C5384(u8 arg0, Vec3f *arg1) {
u8 curr;
@@ -2129,101 +2104,74 @@ void func_800C54B8(u8 arg0, Vec3f *arg1) {
}
void func_800C550C(Vec3f *arg0) {
UNUSED s32 pad[11];
u8 i;
Vec3f *sp3C;
struct SoundCharacteristics sp3C;
for(i = 0; i < 6; i++) {
func_800C5384(i, arg0);
}
sp3C = arg0;
func_800C41CC(2U, (struct SoundCharacteristics*) &sp3C);
sp3C.unk00 = arg0;
func_800C41CC(2, &sp3C);
}
#ifdef MIPS_TO_C
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-18-2023
void func_800C5578(Vec3f arg0, u32 soundBits) {
u32 sp84;
f32 *sp60;
s32 temp_t8;
s32 var_s3;
struct SoundCharacteristics *temp_s0;
struct SoundCharacteristics *temp_s4;
u8 var_s1;
u8 var_v0;
void func_800C5578(Vec3f *arg0, u32 soundBits) {
s32 stackPadding0;
u8 bankId;
u8 next;
u8 curr;
struct SoundCharacteristics sp60;
temp_t8 = ((u32) (soundBits & 0xF0000000) >> 0x1C) & 0xFF;
var_s1 = sSoundBanks[temp_t8]->next;
var_s3 = 0;
var_v0 = var_s1;
if (var_s1 != 0xFF) {
temp_s4 = sSoundBanks[temp_t8];
do {
temp_s0 = &temp_s4[var_s1];
if ((arg0 == temp_s0->unk00) && (soundBits == temp_s0->soundBits)) {
if ((s32) temp_s0->soundStatus >= 3) {
func_800CBBE8((temp_s0->unk2C << 8) | 0x06020000, 0);
}
if (temp_s0->soundStatus != 0) {
delete_sound_from_bank(temp_t8 & 0xFF, var_s1 & 0xFF);
}
var_s1 = 0xFF;
var_v0 = 0xFF;
} else {
var_s3 = var_s1 & 0xFF;
bankId = (soundBits & 0xF0000000) >> 0x1C;
next = sSoundBanks[bankId][0].next;
curr = 0;
while (next != 0xFF) {
if ((arg0 == sSoundBanks[bankId][next].unk00) && (soundBits == sSoundBanks[bankId][next].soundBits)) {
if (sSoundBanks[bankId][next].soundStatus >= 3) {
func_800CBBE8(((sSoundBanks[bankId][next].unk2C & 0xff) << 8) | 0x06020000, 0);
}
if (var_v0 != 0xFF) {
var_s1 = temp_s4[var_s3].next;
var_v0 = var_s1;
if (sSoundBanks[bankId][next].soundStatus != 0) {
delete_sound_from_bank(bankId, next);
}
} while (var_v0 != 0xFF);
next = 0xFF;
} else {
curr = next;
}
if (next != 0xFF) {
next = sSoundBanks[bankId][curr].next;
}
}
sp60 = arg0;
sp84 = soundBits;
func_800C41CC(3U, (struct SoundCharacteristics *) &sp60);
sp60.unk00 = arg0;
sp60.soundBits = soundBits;
func_800C41CC(3, &sp60);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C5578.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-17-2023
void func_800C56F0(u32 soundBits) {
s32 stackPadding0;
u8 bankId;
u8 next;
u8 curr;
struct SoundCharacteristics sp68;
s32 temp_t8;
s32 var_s2;
struct SoundCharacteristics *temp_s0;
struct SoundCharacteristics *temp_s3;
u8 var_s1;
temp_t8 = ((u32) (soundBits & 0xF0000000) >> 0x1C) & 0xFF;
var_s1 = sSoundBanks[temp_t8]->next;
var_s2 = 0;
if (var_s1 != 0xFF) {
temp_s3 = sSoundBanks[temp_t8];
do {
temp_s0 = &temp_s3[var_s1];
if (soundBits == temp_s0->soundBits) {
if ((s32) temp_s0->soundStatus >= 3) {
func_800CBBE8((temp_s0->unk2C << 8) | 0x06020000, 0);
}
if (temp_s0->soundStatus != 0) {
delete_sound_from_bank(temp_t8 & 0xFF, var_s1 & 0xFF);
}
var_s1 = temp_s3[var_s2].next;
} else {
var_s2 = var_s1 & 0xFF;
var_s1 = temp_s3[var_s2].next;
bankId = (soundBits & 0xF0000000) >> 0x1C;
next = sSoundBanks[bankId][0].next;
curr = 0;
while (next != 0xFF) {
if (soundBits == sSoundBanks[bankId][next].soundBits) {
if (sSoundBanks[bankId][next].soundStatus >= 3) {
func_800CBBE8(((sSoundBanks[bankId][next].unk2C & 0xff) << 8) | 0x06020000, 0);
}
} while (var_s1 != 0xFF);
if (sSoundBanks[bankId][next].soundStatus != 0) {
delete_sound_from_bank(bankId, next);
}
} else {
curr = next;
}
next = sSoundBanks[bankId][curr].next;
}
sp68.soundBits = soundBits;
func_800C41CC(5U, &sp68);
func_800C41CC(5, &sp68);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C56F0.s")
#endif
// Might be process_all_sound_requests
void func_800C5848(void) {
+3 -3
View File
@@ -235,8 +235,8 @@ void func_800C5278(u8);
void func_800C5384(u8, Vec3f*);
void func_800C54B8(u8, Vec3f*);
void func_800C550C(Vec3f*);
void func_800C5578(Vec3f, u32);
u8 func_800C56F0(u32);
void func_800C5578(Vec3f*, u32);
void func_800C56F0(u32);
void func_800C5848(void);
void fade_channel_volume_scale(u8, u8, u16);
void func_800C5968(u8);
@@ -332,7 +332,7 @@ extern Camera *gCopyCamera[4];
extern Vec3f gVelocityCamera[4];
extern Vec3f gCameraLastPos[4];
extern u8 D_8018FC08;
extern u16 D_8018FC10[4][2];
extern s16 D_8018FC10[4][2];
extern struct SoundCharacteristics sSoundBanks[SOUND_BANK_COUNT][20];
extern u8 sSoundBankUsedListBack[SOUND_BANK_COUNT];
+21 -49
View File
@@ -3493,7 +3493,7 @@ void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8005F90C.s")
#endif
void func_80060504(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
void func_80060504(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) {
UNUSED s32 thing1;
s16 thing2;
UNUSED s32 thing3;
@@ -3634,7 +3634,7 @@ void func_80060BCC(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
}
}
void func_80060F50(Player* player, s16 arg1, UNUSED s8 arg2, s8 arg3, UNUSED s8 arg4) {
void func_80060F50(Player* player, s16 arg1, UNUSED s32 arg2, s8 arg3, UNUSED s8 arg4) {
func_8005D794(player, &player->unk_258[arg1], 0.0f, 0.0f, 0.0f, 0, 0);
func_8005D7D8(&player->unk_258[arg1], 5, 4.0f);
@@ -3650,7 +3650,7 @@ void func_80060F50(Player* player, s16 arg1, UNUSED s8 arg2, s8 arg3, UNUSED s8
player->unk_0DE &= ~0x0008;
}
void func_80061094(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
void func_80061094(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
if (arg1 == 0) {
func_8005D794(player, &player->unk_258[arg1], 0.0f, 0.0f, 0.0f, 0, 0);
func_8005D7D8(&player->unk_258[arg1], 6, 3.8f);
@@ -3685,7 +3685,7 @@ void func_80061224(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) {
}
}
void func_800612F8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
void func_800612F8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 var_s2;
for (var_s2 = 0; var_s2 < 10; var_s2++){
@@ -3703,7 +3703,7 @@ void func_800612F8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
player->unk_046 &= ~0x0008;
}
void func_80061430(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
void func_80061430(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 var_s2;
for (var_s2 = 0; var_s2 < 7; var_s2++){
@@ -3723,7 +3723,7 @@ void func_80061430(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
player->unk_044 &= ~0x1000;
}
void func_800615AC(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
void func_800615AC(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 test = 2;
UNUSED s32 stackPadding0;
UNUSED s32 stackPadding1;
@@ -3788,7 +3788,7 @@ void func_8006199C(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) {
}
}
void func_80061A34(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3) {
void func_80061A34(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 sp54;
UNUSED s32 stackPadding0;
s32 sp4C;
@@ -3818,7 +3818,7 @@ void func_80061A34(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3) {
}
}
void func_80061D4C(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
void func_80061D4C(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 test = 2;
UNUSED s32 stackPadding0;
UNUSED s32 stackPadding1;
@@ -3841,7 +3841,7 @@ void func_80061D4C(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
}
}
void func_80061EF4(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3) {
void func_80061EF4(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
UNUSED s32 stackPadding0;
s32 var_t0 = 0x000000FF;
s32 var_t1;
@@ -3890,7 +3890,7 @@ void func_80061EF4(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3) {
}
}
void func_800621BC(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3) {
void func_800621BC(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 temp_v1;
s32 phi_t0;
s32 phi_t1;
@@ -3961,7 +3961,7 @@ void func_80062484(Player* player, UnkPlayerStruct258* arg1, s32 arg2) {
arg1->unk_01E = 0;
}
void func_800624D8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
void func_800624D8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
s32 var_s1;
switch (player->surfaceType) {
@@ -6039,14 +6039,6 @@ void func_8006C6AC(Player *player, s16 arg1, s8 arg2, s8 arg3) {
}
}
#ifdef NON_MATCHING
/**
* https://decomp.me/scratch/pKyCf
* There's something very very wrong about the handling of arg3
* In the target assembly arg3 keeps getting (re?)converted to
* an s8, but in this decomp attempt that never happens.
* I don't know what's going on.
**/
void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
UNUSED s32 stackPadding;
s32 sp28;
@@ -6097,7 +6089,7 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
}
} else {
if (player->unk_044 & 0x1000) {
func_80061430(player, arg1, sp28, arg2);
func_80061430(player, arg1, sp28, arg2, arg3);
player->unk_044 &= ~0x0100;
return;
}
@@ -6108,60 +6100,45 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
return;
}
if ((player->unk_0CA & 0x2000) == 0x2000) {
func_80061A34(player, arg1, sp28, arg2);
func_80061A34(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
return;
}
if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - D_8018D930[arg2]) < 9)) {
func_800615AC(player, arg1, sp28, arg2);
func_800615AC(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
return;
}
if ((player->unk_046 & 8) == 8) {
func_800612F8(player, arg1, sp28, arg2);
func_800612F8(player, arg1, sp28, arg2, arg3);
player->unk_044 &= ~0x0100;
return;
}
if (((player->unk_046 & 0x20) == 0x20) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) {
func_80061D4C(player, arg1, sp28, arg2);
func_80061D4C(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
return;
}
if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) {
func_800621BC(player, arg1, sp28, arg2);
func_800621BC(player, arg1, sp28, arg2, arg3);
return;
}
if (((player->effects & 0x200000) || (player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
func_80061EF4(player, arg1, sp28, arg2);
func_80061EF4(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
return;
}
if ((player->unk_044 & 0x100) == 0x100) {
func_800624D8(player, arg1, sp28, arg2);
func_800624D8(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8006C9B8.s")
#endif
#ifdef NON_MATCHING
// Something really wrong with arg3 on these functions, could be fake?
void func_80062C74(Player *player, s16 arg1, s32 arg2, s32 arg3);
void func_80064184(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3);
void func_800630C0(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3);
void func_800631A8(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3);
void func_80063268(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3);
extern s32 gActiveScreenMode;
// Replacing arg3 with 0 seems to make the percentage higher.
// func_80060504 args could be wrong as well.
void func_8006CEC0(Player *arg0, s16 arg1, s8 arg2, s8 arg3) {
UNUSED u16 temp_v0_3;
s32 sp20 = arg1;
@@ -6208,8 +6185,7 @@ void func_8006CEC0(Player *arg0, s16 arg1, s8 arg2, s8 arg3) {
&& ((arg0->effects & 0x400) != 0x400)
&& ((arg0->effects & 0x01000000) != 0x01000000)) {
if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) {
//func_80060504(arg0, arg1, sp20, arg2, arg3);
func_80060504(arg0, sp20, arg2, arg3);
func_80060504(arg0, arg1, sp20, arg2, arg3);
}
}
break;
@@ -6223,17 +6199,13 @@ void func_8006CEC0(Player *arg0, s16 arg1, s8 arg2, s8 arg3) {
&& ((arg0->effects & 0x400) != 0x400)
&& ((arg0->effects & 0x01000000) != 0x01000000)) {
if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) {
//func_80060504(arg0, arg1, sp20, arg2, arg3);
func_80060504(arg0, sp20, arg2, arg3);
func_80060504(arg0, arg1, sp20, arg2, arg3);
}
}
break;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8006CEC0.s")
#endif
void func_8006D194(Player *player, s8 arg1, s8 arg2) {
if (player->unk_258[0x14].unk_01C == 1) {
+11 -11
View File
@@ -121,27 +121,27 @@ void func_8005ED48(Player*, s16, s32, s8, s8);
void func_8005F90C(Player*, s16, s32, s8, s8);
void func_80060504(Player*, s16, s32, s32);
void func_80060504(Player*, s16, s32, s8, s8);
void func_800608E0(Player*, s16, s32, s8, s8);
void func_80060B14(Player*, s16, s32, s8, s8);
void func_80060BCC(Player*, s16, s32, s8, s8);
void func_80060F50(Player*, s16, s8, s8, s8);
void func_80060F50(Player*, s16, s32, s8, s8);
void func_80061094(Player*, s16, s8, s8, s8);
void func_80061094(Player*, s16, s32, s8, s8);
void func_80061130(Player*, s16, s32, s8, s8);
void func_80061224(Player*, s16, s32, s8, s8);
void func_800612F8(Player*, s32, s32, s8);
void func_80061430(Player*, s32, s32, s8);
void func_800615AC(Player*, s16, s32, s8);
void func_800612F8(Player*, s32, s32, s8, s8);
void func_80061430(Player*, s32, s32, s8, s8);
void func_800615AC(Player*, s16, s32, s8, s8);
void func_80061754(Player*, s16, s32, s32, s32);
void func_8006199C(Player*, s16, s32, s8, s8);
void func_80061A34(Player*, s16, s32, s8);
void func_80061D4C(Player*, s16, s32, s8);
void func_80061EF4(Player*, s16, s32, s8);
void func_80061A34(Player*, s16, s32, s8, s8);
void func_80061D4C(Player*, s16, s32, s8, s8);
void func_80061EF4(Player*, s16, s32, s8, s8);
void func_800621BC(Player*, s16, s32, s8);
void func_800621BC(Player*, s16, s32, s8, s8);
void func_80062484(Player*, UnkPlayerStruct258*, s32);
void func_800624D8(Player*, s32, s32, s8);
void func_800624D8(Player*, s32, s32, s8, s8);
void func_800628C0(Player*, s8, s8, s8);
void func_80062914(Player*, s8, s8, s8);
void func_80062968(Player*, s8, s8, s8);
-2107
View File
File diff suppressed because it is too large Load Diff
+566 -746
View File
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -186,7 +186,7 @@ void func_8009AB7C(s32);
void func_8009AD78(s32, s32);
void func_8009B0A4(s32, u32);
void func_8009B538(s32, s32, s32, s32, s32);
s32 func_8009B8C4(u64*);
u16 *func_8009B8C4(u64*);
void func_8009B938(void);
void func_8009B954(MkTexture*);
void func_8009B998(void);
@@ -453,14 +453,14 @@ extern Unk_D_800E70A0 D_800E70E8[];
extern Unk_D_800E70A0 D_800E7108[][4];
extern Unk_D_800E70A0 D_800E7148[];
extern Unk_D_800E70A0 D_800E7168[];
extern Unk_D_800E70A0 D_800E7188[][4];
extern Unk_D_800E70A0 D_800E7188[];
extern Unk_D_800E70A0 D_800E7208[][2];
extern Unk_D_800E70A0 D_800E7248[];
extern Unk_D_800E70A0 D_800E7258[];
extern Unk_D_800E70A0 D_800E7268[];
extern Unk_D_800E70A0 D_800E7278[];
extern Unk_D_800E70A0 D_800E72F8;
extern Unk_D_800E70A0 D_800E7300[][4];
extern Unk_D_800E70A0 D_800E7300[];
extern Unk_D_800E70A0 D_800E7360[];
extern Unk_D_800E70A0 D_800E7380[];
extern Unk_D_800E70A0 D_800E7390[];
@@ -513,17 +513,17 @@ extern char *D_800E7860[];
extern char *D_800E7868[];
extern char *D_800E7878[];
extern char *D_800E7884[];
extern char *D_800E7890[][4];
extern char *D_800E78D0[][3];
extern char *D_800E7900[][3];
extern char *D_800E7890[];
extern char *D_800E78D0[];
extern char *D_800E7900[];
extern char *D_800E7918[];
extern char *D_800E7920[];
extern char *D_800E7928[];
extern char *D_800E7930[];
extern char *D_800E7938[];
extern char *D_800E7940[][4];
extern char *D_800E7940[];
extern char *D_800E7980[];
extern char *D_800E798C[][7];
extern char *D_800E798C[];
extern char *D_800E7A34[];
extern char *D_800E7A3C[];
extern char *D_800E7A44;
@@ -562,7 +562,7 @@ extern MkTexture *D_800E8174[];
extern MkTexture *D_800E817C[];
extern MkTexture *D_800E81E4[];
extern MkTexture *D_800E822C[];
extern MkTexture *D_800E8234[][2];
extern MkTexture *D_800E8234[];
extern MkTexture *D_800E824C[];
extern MkTexture *D_800E8254[];
extern MkTexture *D_800E8274[];
@@ -591,9 +591,9 @@ extern s8 D_800E852C;
extern f32 D_800E8530;
extern f32 D_800E8534;
extern Unk_D_800E70A0 D_800E8538[];
extern Unk_D_800E70A0 D_800E8540[][4];
extern Unk_D_800E70A0 D_800E85C0[][4];
extern Unk_D_800E70A0 D_800E8600[][4];
extern Unk_D_800E70A0 D_800E8540[];
extern Unk_D_800E70A0 D_800E85C0[];
extern Unk_D_800E70A0 D_800E8600[];
extern s32 gControllerPak1NumPagesFree;
extern s32 gControllerPak1FileNote;
+1 -9
View File
@@ -7,8 +7,6 @@ CFLAGS := -I . -Wall -Wextra -Wno-unused-parameter -pedantic -std=c99 -O2 -s
# Tools to compile
PROGRAMS := mio0 n64graphics displaylist_packer n64cksum tkmk00 extract_data_for_mio
#==============================================================================#
# Source Files and Flags for Each Tool #
#==============================================================================#
@@ -30,18 +28,12 @@ n64cksum_CFLAGS := -DN64CKSUM_STANDALONE
extract_data_for_mio_SOURCES := extract_data_for_mio.c
# Build tools and recomp
all: $(PROGRAMS) subsystem
# Build recomp
subsystem:
$(MAKE) -C ido5.3_recomp
all: $(PROGRAMS)
# Remove generated files
clean:
$(RM) $(PROGRAMS)
$(MAKE) -C ido5.3_recomp clean
-868
View File
@@ -1,868 +0,0 @@
#!/usr/bin/env python3
import argparse
import tempfile
import struct
import copy
import sys
import re
import os
MAX_FN_SIZE = 100
EI_NIDENT = 16
EI_CLASS = 4
EI_DATA = 5
EI_VERSION = 6
EI_OSABI = 7
EI_ABIVERSION = 8
STN_UNDEF = 0
SHN_UNDEF = 0
SHN_ABS = 0xfff1
SHN_COMMON = 0xfff2
SHN_XINDEX = 0xffff
SHN_LORESERVE = 0xff00
STT_NOTYPE = 0
STT_OBJECT = 1
STT_FUNC = 2
STT_SECTION = 3
STT_FILE = 4
STT_COMMON = 5
STT_TLS = 6
STB_LOCAL = 0
STB_GLOBAL = 1
STB_WEAK = 2
STV_DEFAULT = 0
STV_INTERNAL = 1
STV_HIDDEN = 2
STV_PROTECTED = 3
SHT_NULL = 0
SHT_PROGBITS = 1
SHT_SYMTAB = 2
SHT_STRTAB = 3
SHT_RELA = 4
SHT_HASH = 5
SHT_DYNAMIC = 6
SHT_NOTE = 7
SHT_NOBITS = 8
SHT_REL = 9
SHT_SHLIB = 10
SHT_DYNSYM = 11
SHT_INIT_ARRAY = 14
SHT_FINI_ARRAY = 15
SHT_PREINIT_ARRAY = 16
SHT_GROUP = 17
SHT_SYMTAB_SHNDX = 18
SHT_MIPS_GPTAB = 0x70000003
SHT_MIPS_DEBUG = 0x70000005
SHT_MIPS_REGINFO = 0x70000006
SHT_MIPS_OPTIONS = 0x7000000d
SHF_WRITE = 0x1
SHF_ALLOC = 0x2
SHF_EXECINSTR = 0x4
SHF_MERGE = 0x10
SHF_STRINGS = 0x20
SHF_INFO_LINK = 0x40
SHF_LINK_ORDER = 0x80
SHF_OS_NONCONFORMING = 0x100
SHF_GROUP = 0x200
SHF_TLS = 0x400
R_MIPS_32 = 2
R_MIPS_26 = 4
R_MIPS_HI16 = 5
R_MIPS_LO16 = 6
class ElfHeader:
"""
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
"""
def __init__(self, data):
self.e_ident = data[:EI_NIDENT]
self.e_type, self.e_machine, self.e_version, self.e_entry, self.e_phoff, self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize, self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx = struct.unpack('>HHIIIIIHHHHHH', data[EI_NIDENT:])
assert self.e_ident[EI_CLASS] == 1 # 32-bit
assert self.e_ident[EI_DATA] == 2 # big-endian
assert self.e_type == 1 # relocatable
assert self.e_machine == 8 # MIPS I Architecture
assert self.e_phoff == 0 # no program header
assert self.e_shoff != 0 # section header
assert self.e_shstrndx != SHN_UNDEF
def to_bin(self):
return self.e_ident + struct.pack('>HHIIIIIHHHHHH', self.e_type,
self.e_machine, self.e_version, self.e_entry, self.e_phoff,
self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize,
self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx)
class Symbol:
"""
typedef struct {
Elf32_Word st_name;
Elf32_Addr st_value;
Elf32_Word st_size;
unsigned char st_info;
unsigned char st_other;
Elf32_Half st_shndx;
} Elf32_Sym;
"""
def __init__(self, data, strtab):
self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx = struct.unpack('>IIIBBH', data)
assert self.st_shndx != SHN_XINDEX, "too many sections (SHN_XINDEX not supported)"
self.bind = st_info >> 4
self.type = st_info & 15
self.name = strtab.lookup_str(self.st_name)
self.visibility = self.st_other & 3
def to_bin(self):
st_info = (self.bind << 4) | self.type
return struct.pack('>IIIBBH', self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx)
class Relocation:
def __init__(self, data, sh_type):
self.sh_type = sh_type
if sh_type == SHT_REL:
self.r_offset, self.r_info = struct.unpack('>II', data)
else:
self.r_offset, self.r_info, self.r_addend = struct.unpack('>III', data)
self.sym_index = self.r_info >> 8
self.rel_type = self.r_info & 0xff
def to_bin(self):
self.r_info = (self.sym_index << 8) | self.rel_type
if self.sh_type == SHT_REL:
return struct.pack('>II', self.r_offset, self.r_info)
else:
return struct.pack('>III', self.r_offset, self.r_info, self.r_addend)
class Section:
"""
typedef struct {
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
} Elf32_Shdr;
"""
def __init__(self, header, data, index):
self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize = struct.unpack('>IIIIIIIIII', header)
assert not self.sh_flags & SHF_LINK_ORDER
if self.sh_entsize != 0:
assert self.sh_size % self.sh_entsize == 0
if self.sh_type == SHT_NOBITS:
self.data = ''
else:
self.data = data[self.sh_offset:self.sh_offset + self.sh_size]
self.index = index
self.relocated_by = []
@staticmethod
def from_parts(sh_name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data, index):
header = struct.pack('>IIIIIIIIII', sh_name, sh_type, sh_flags, 0, 0, len(data), sh_link, sh_info, sh_addralign, sh_entsize)
return Section(header, data, index)
def lookup_str(self, index):
assert self.sh_type == SHT_STRTAB
to = self.data.find(b'\0', index)
assert to != -1
return self.data[index:to].decode('utf-8')
def add_str(self, string):
assert self.sh_type == SHT_STRTAB
ret = len(self.data)
self.data += bytes(string, 'utf-8') + b'\0'
return ret
def is_rel(self):
return self.sh_type == SHT_REL or self.sh_type == SHT_RELA
def header_to_bin(self):
if self.sh_type != SHT_NOBITS:
self.sh_size = len(self.data)
return struct.pack('>IIIIIIIIII', self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize)
def late_init(self, sections):
if self.sh_type == SHT_SYMTAB:
self.init_symbols(sections)
elif self.is_rel():
self.rel_target = sections[self.sh_info]
self.rel_target.relocated_by.append(self)
self.init_relocs()
def find_symbol(self, name):
assert self.sh_type == SHT_SYMTAB
for s in self.symbol_entries:
if s.name == name:
return (s.st_shndx, s.st_value)
return None
def init_symbols(self, sections):
assert self.sh_type == SHT_SYMTAB
assert self.sh_entsize == 16
self.strtab = sections[self.sh_link]
entries = []
for i in range(0, self.sh_size, self.sh_entsize):
entries.append(Symbol(self.data[i:i+self.sh_entsize], self.strtab))
self.symbol_entries = entries
def init_relocs(self):
assert self.is_rel()
entries = []
for i in range(0, self.sh_size, self.sh_entsize):
entries.append(Relocation(self.data[i:i+self.sh_entsize], self.sh_type))
self.relocations = entries
def local_symbols(self):
assert self.sh_type == SHT_SYMTAB
return self.symbol_entries[:self.sh_info]
def global_symbols(self):
assert self.sh_type == SHT_SYMTAB
return self.symbol_entries[self.sh_info:]
class ElfFile:
def __init__(self, data):
self.data = data
assert data[:4] == b'\x7fELF', "not an ELF file"
self.elf_header = ElfHeader(data[0:52])
offset, size = self.elf_header.e_shoff, self.elf_header.e_shentsize
null_section = Section(data[offset:offset + size], data, 0)
num_sections = self.elf_header.e_shnum or null_section.sh_size
self.sections = [null_section]
for i in range(1, num_sections):
ind = offset + i * size
self.sections.append(Section(data[ind:ind + size], data, i))
symtab = None
for s in self.sections:
if s.sh_type == SHT_SYMTAB:
assert not symtab
symtab = s
assert symtab is not None
self.symtab = symtab
shstr = self.sections[self.elf_header.e_shstrndx]
for s in self.sections:
s.name = shstr.lookup_str(s.sh_name)
s.late_init(self.sections)
def find_section(self, name):
for s in self.sections:
if s.name == name:
return s
return None
def add_section(self, name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data):
shstr = self.sections[self.elf_header.e_shstrndx]
sh_name = shstr.add_str(name)
s = Section.from_parts(sh_name=sh_name, sh_type=sh_type,
sh_flags=sh_flags, sh_link=sh_link, sh_info=sh_info,
sh_addralign=sh_addralign, sh_entsize=sh_entsize, data=data,
index=len(self.sections))
self.sections.append(s)
s.name = name
s.late_init(self.sections)
return s
def drop_irrelevant_sections(self):
# We can only drop sections at the end, since otherwise section
# references might be wrong. Luckily, these sections typically are.
while self.sections[-1].sh_type in [SHT_MIPS_DEBUG, SHT_MIPS_GPTAB]:
self.sections.pop()
def write(self, filename):
outfile = open(filename, 'wb')
outidx = 0
def write_out(data):
nonlocal outidx
outfile.write(data)
outidx += len(data)
def pad_out(align):
if align and outidx % align:
write_out(b'\0' * (align - outidx % align))
self.elf_header.e_shnum = len(self.sections)
write_out(self.elf_header.to_bin())
for s in self.sections:
if s.sh_type != SHT_NOBITS and s.sh_type != SHT_NULL:
pad_out(s.sh_addralign)
s.sh_offset = outidx
write_out(s.data)
pad_out(4)
self.elf_header.e_shoff = outidx
for s in self.sections:
write_out(s.header_to_bin())
outfile.seek(0)
outfile.write(self.elf_header.to_bin())
outfile.close()
def is_temp_name(name):
return name.startswith('_asmpp_')
class GlobalState:
def __init__(self, min_instr_count, skip_instr_count):
# A value that hopefully never appears as a 32-bit rodata constant (or we
# miscompile late rodata). Increases by 1 in each step.
self.late_rodata_hex = 0xE0123456
self.namectr = 0
self.min_instr_count = min_instr_count
self.skip_instr_count = skip_instr_count
def make_name(self, cat):
self.namectr += 1
return '_asmpp_{}{}'.format(cat, self.namectr)
class GlobalAsmBlock:
def __init__(self):
self.cur_section = '.text'
self.asm_conts = []
self.late_rodata_asm_conts = []
self.late_rodata_alignment = 0
self.text_glabels = []
self.fn_section_sizes = {
'.text': 0,
'.data': 0,
'.bss': 0,
'.rodata': 0,
'.late_rodata': 0,
}
self.fn_ins_inds = []
self.num_lines = 0
def add_sized(self, size, line):
if self.cur_section in ['.text', '.late_rodata']:
assert size % 4 == 0, "size must be a multiple of 4 on line: " + line
assert size >= 0
self.fn_section_sizes[self.cur_section] += size
if self.cur_section == '.text':
assert self.text_glabels, ".text block without an initial glabel"
self.fn_ins_inds.append((self.num_lines, size // 4))
def process_line(self, line):
line = re.sub(r'/\*.*?\*/', '', line)
line = re.sub(r'#.*', '', line)
line = line.strip()
changed_section = False
if line.startswith('glabel ') and self.cur_section == '.text':
self.text_glabels.append(line.split()[1])
if not line:
pass # empty line
elif line.startswith('glabel ') or (' ' not in line and line.endswith(':')):
pass # label
elif line.startswith('.section') or line in ['.text', '.data', '.rdata', '.rodata', '.bss', '.late_rodata']:
# section change
self.cur_section = '.rodata' if line == '.rdata' else line.split(',')[0].split()[-1]
assert self.cur_section in ['.data', '.text', '.rodata', '.late_rodata', '.bss'], \
"unrecognized .section directive"
changed_section = True
elif line.startswith('.late_rodata_alignment'):
assert self.cur_section == '.late_rodata'
self.late_rodata_alignment = int(line.split()[1])
assert self.late_rodata_alignment in [4, 8]
changed_section = True
elif line.startswith('.incbin'):
self.add_sized(int(line.split(',')[-1].strip(), 0), line)
elif line.startswith('.word') or line.startswith('.float'):
self.add_sized(4 * len(line.split(',')), line)
elif line.startswith('.double'):
self.add_sized(8 * len(line.split(',')), line)
elif line.startswith('.space'):
self.add_sized(int(line.split()[1], 0), line)
elif line.startswith('.'):
# .macro, .ascii, .asciiz, .balign, .align, ...
assert False, 'not supported yet: ' + line
else:
# Unfortunately, macros are hard to support for .rodata --
# we don't know how how space they will expand to before
# running the assembler, but we need that information to
# construct the C code. So if we need that we'll either
# need to run the assembler twice (at least in some rare
# cases), or change how this program is invoked.
# Similarly, we can't currently deal with pseudo-instructions
# that expand to several real instructions.
assert self.cur_section == '.text', "instruction or macro call in non-.text section? not supported: " + line
self.add_sized(4, line)
if self.cur_section == '.late_rodata':
if not changed_section:
self.late_rodata_asm_conts.append(line)
else:
self.asm_conts.append(line)
self.num_lines += 1
def finish(self, state):
src = [''] * (self.num_lines + 1)
late_rodata = []
late_rodata_fn_output = []
if self.fn_section_sizes['.late_rodata'] > 0:
# Generate late rodata by emitting unique float constants.
# This requires 3 instructions for each 4 bytes of rodata.
# If we know alignment, we can use doubles, which give 3
# instructions for 8 bytes of rodata.
size = self.fn_section_sizes['.late_rodata'] // 4
skip_next = False
for i in range(size):
if skip_next:
skip_next = False
continue
if (state.late_rodata_hex & 0xffff) == 0:
# Avoid lui
state.late_rodata_hex += 1
dummy_bytes = struct.pack('>I', state.late_rodata_hex)
state.late_rodata_hex += 1
late_rodata.append(dummy_bytes)
if self.late_rodata_alignment == 4 * ((i + 1) % 2 + 1) and i + 1 < size:
late_rodata.append(dummy_bytes)
fval, = struct.unpack('>d', dummy_bytes * 2)
late_rodata_fn_output.append('*(volatile double*)0 = {};'.format(fval))
skip_next = True
else:
fval, = struct.unpack('>f', dummy_bytes)
late_rodata_fn_output.append('*(volatile float*)0 = {}f;'.format(fval))
late_rodata_fn_output.append('')
late_rodata_fn_output.append('')
text_name = None
if self.fn_section_sizes['.text'] > 0 or late_rodata_fn_output:
text_name = state.make_name('func')
src[0] = 'void {}(void) {{'.format(text_name)
src[self.num_lines] = '}'
instr_count = self.fn_section_sizes['.text'] // 4
assert instr_count >= state.min_instr_count, "too short .text block"
tot_emitted = 0
tot_skipped = 0
fn_emitted = 0
fn_skipped = 0
rodata_stack = late_rodata_fn_output[::-1]
for (line, count) in self.fn_ins_inds:
for _ in range(count):
if (fn_emitted > MAX_FN_SIZE and instr_count - tot_emitted > state.min_instr_count and
(not rodata_stack or rodata_stack[-1])):
# Don't let functions become too large. When a function reaches 284
# instructions, and -O2 -framepointer flags are passed, the IRIX
# compiler decides it is a great idea to start optimizing more.
fn_emitted = 0
fn_skipped = 0
src[line] += ' }} void {}(void) {{ '.format(state.make_name('large_func'))
if fn_skipped < state.skip_instr_count:
fn_skipped += 1
tot_skipped += 1
elif rodata_stack:
src[line] += rodata_stack.pop()
else:
src[line] += '*(volatile int*)0 = 0;'
tot_emitted += 1
fn_emitted += 1
if rodata_stack:
size = len(late_rodata_fn_output) // 3
available = instr_count - tot_skipped
print("late rodata to text ratio is too high: {} / {} must be <= 1/3"
.format(size, available), file=sys.stderr)
print("add a .late_rodata_alignment (4|8) to the .late_rodata "
"block to double the allowed ratio.", file=sys.stderr)
exit(1)
rodata_name = None
if self.fn_section_sizes['.rodata'] > 0:
rodata_name = state.make_name('rodata')
output_line += ' const char {}[{}] = {{1}};'.format(rodata_name, self.fn_section_sizes['.rodata'])
data_name = None
if self.fn_section_sizes['.data'] > 0:
data_name = state.make_name('data')
output_line += ' char {}[{}] = {{1}};'.format(data_name, self.fn_section_sizes['.data'])
bss_name = None
if self.fn_section_sizes['.bss'] > 0:
bss_name = state.make_name('bss')
output_line += ' char {}[{}];'.format(bss_name, self.fn_section_sizes['.bss'])
fn = (self.text_glabels, self.asm_conts, late_rodata, self.late_rodata_asm_conts,
{
'.text': (text_name, self.fn_section_sizes['.text']),
'.data': (data_name, self.fn_section_sizes['.data']),
'.rodata': (rodata_name, self.fn_section_sizes['.rodata']),
'.bss': (bss_name, self.fn_section_sizes['.bss']),
})
return src, fn
def parse_source(f, print_source, opt, framepointer):
if opt == 'O2':
if framepointer:
min_instr_count = 6
skip_instr_count = 5
else:
min_instr_count = 2
skip_instr_count = 1
elif opt == 'g':
if framepointer:
min_instr_count = 7
skip_instr_count = 7
else:
min_instr_count = 4
skip_instr_count = 4
else:
assert opt == 'g3'
if framepointer:
min_instr_count = 4
skip_instr_count = 4
else:
min_instr_count = 2
skip_instr_count = 2
state = GlobalState(min_instr_count, skip_instr_count)
global_asm = None
asm_functions = []
output_lines = []
for raw_line in f:
raw_line = raw_line.rstrip()
line = raw_line.lstrip()
# Print exactly one output line per source line, to make compiler
# errors have correct line numbers. These will be overridden with
# reasonable content further down.
output_lines.append('')
if global_asm is not None:
if line.startswith(')'):
src, fn = global_asm.finish(state)
for i, line2 in enumerate(src):
output_lines[start_index + i] = line2
asm_functions.append(fn)
global_asm = None
else:
global_asm.process_line(line)
else:
if line == 'GLOBAL_ASM(':
global_asm = GlobalAsmBlock()
start_index = len(output_lines)
elif line.startswith('GLOBAL_ASM("') and line.endswith('")'):
global_asm = GlobalAsmBlock()
fname = line[len('GLOBAL_ASM') + 2 : -2]
with open(fname) as f:
for line2 in f:
global_asm.process_line(line2)
src, fn = global_asm.finish(state)
output_lines[-1] = ''.join(src)
asm_functions.append(fn)
global_asm = None
else:
output_lines[-1] = raw_line
if print_source:
for line in output_lines:
print(line)
return asm_functions
def fixup_objfile(objfile_name, functions, asm_prelude, assembler):
SECTIONS = ['.data', '.text', '.rodata', '.bss']
with open(objfile_name, 'rb') as f:
objfile = ElfFile(f.read())
prev_locs = {
'.text': 0,
'.data': 0,
'.rodata': 0,
'.bss': 0,
}
to_copy = {
'.text': [],
'.data': [],
'.rodata': [],
}
asm = []
late_rodata = []
late_rodata_asm = []
late_rodata_source_name = None
# Generate an assembly file with all the assembly we need to fill in. For
# simplicity we pad with nops/.space so that addresses match exactly, so we
# don't have to fix up relocations/symbol references.
all_text_glabels = set()
for (text_glabels, body, fn_late_rodata, fn_late_rodata_body, data) in functions:
ifdefed = False
for sectype, (temp_name, size) in data.items():
if temp_name is None:
continue
assert size > 0
loc = objfile.symtab.find_symbol(temp_name)
if loc is None:
ifdefed = True
break
loc = loc[1]
prev_loc = prev_locs[sectype]
assert loc >= prev_loc, sectype
if loc != prev_loc:
asm.append('.section ' + sectype)
if sectype == '.text':
for i in range((loc - prev_loc) // 4):
asm.append('nop')
else:
asm.append('.space {}'.format(loc - prev_loc))
if sectype != '.bss':
to_copy[sectype].append((loc, size))
prev_locs[sectype] = loc + size
if not ifdefed:
all_text_glabels.update(text_glabels)
late_rodata.extend(fn_late_rodata)
late_rodata_asm.extend(fn_late_rodata_body)
asm.append('.text')
for line in body:
asm.append(line)
if late_rodata_asm:
late_rodata_source_name = '_asmpp_late_rodata'
asm.append('.rdata')
asm.append('glabel {}'.format(late_rodata_source_name))
asm.extend(late_rodata_asm)
o_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.o', delete=False)
o_name = o_file.name
o_file.close()
s_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.s', delete=False)
s_name = s_file.name
try:
s_file.write(asm_prelude + b'\n')
for line in asm:
s_file.write(line.encode('utf-8') + b'\n')
s_file.close()
ret = os.system(assembler + " " + s_name + " -o " + o_name)
if ret != 0:
raise Exception("failed to assemble")
with open(o_name, 'rb') as f:
asm_objfile = ElfFile(f.read())
# Remove some clutter from objdump output
objfile.drop_irrelevant_sections()
# Unify reginfo sections
target_reginfo = objfile.find_section('.reginfo')
source_reginfo_data = list(asm_objfile.find_section('.reginfo').data)
data = list(target_reginfo.data)
for i in range(20):
data[i] |= source_reginfo_data[i]
target_reginfo.data = bytes(data)
# Move over section contents
modified_text_positions = set()
last_rodata_pos = 0
for sectype in SECTIONS:
if sectype == '.bss':
continue
source = asm_objfile.find_section(sectype)
target = objfile.find_section(sectype)
if source is None or not to_copy[sectype]:
continue
assert target is not None, "must have a section to overwrite: " + sectype
data = list(target.data)
for (pos, count) in to_copy[sectype]:
data[pos:pos + count] = source.data[pos:pos + count]
if sectype == '.text':
assert count % 4 == 0
assert pos % 4 == 0
for i in range(count // 4):
modified_text_positions.add(pos + 4 * i)
elif sectype == '.rodata':
last_rodata_pos = pos + count
target.data = bytes(data)
# Move over late rodata. This is heuristic, sadly, since I can't think
# of another way of doing it.
moved_late_rodata = {}
if late_rodata:
source = asm_objfile.find_section('.rodata')
target = objfile.find_section('.rodata')
source_pos = asm_objfile.symtab.find_symbol(late_rodata_source_name)
assert source_pos is not None and source_pos[0] == source.index
source_pos = source_pos[1]
new_data = list(target.data)
for dummy_bytes in late_rodata:
pos = target.data.index(dummy_bytes, last_rodata_pos)
new_data[pos:pos+4] = source.data[source_pos:source_pos+4]
moved_late_rodata[source_pos] = pos
last_rodata_pos = pos + 4
source_pos += 4
target.data = bytes(new_data)
# Merge strtab data.
strtab_adj = len(objfile.symtab.strtab.data)
objfile.symtab.strtab.data += asm_objfile.symtab.strtab.data
# Find relocated symbols
relocated_symbols = set()
for sectype in SECTIONS:
for obj in [asm_objfile, objfile]:
sec = obj.find_section(sectype)
if sec is None:
continue
for reltab in sec.relocated_by:
for rel in reltab.relocations:
relocated_symbols.add(obj.symtab.symbol_entries[rel.sym_index])
# Move over symbols, deleting the temporary function labels.
# Sometimes this naive procedure results in duplicate symbols, or UNDEF
# symbols that are also defined the same .o file. Hopefully that's fine.
# Skip over local symbols that aren't used relocated against, to avoid
# conflicts.
new_local_syms = [s for s in objfile.symtab.local_symbols() if not is_temp_name(s.name)]
new_global_syms = [s for s in objfile.symtab.global_symbols() if not is_temp_name(s.name)]
for i, s in enumerate(asm_objfile.symtab.symbol_entries):
is_local = (i < asm_objfile.symtab.sh_info)
if is_local and s not in relocated_symbols:
continue
if is_temp_name(s.name):
continue
if s.st_shndx not in [SHN_UNDEF, SHN_ABS]:
section_name = asm_objfile.sections[s.st_shndx].name
assert section_name in SECTIONS, "Generated assembly .o must only have symbols for .text, .data, .rodata, ABS and UNDEF, but found {}".format(section_name)
s.st_shndx = objfile.find_section(section_name).index
# glabel's aren't marked as functions, making objdump output confusing. Fix that.
if s.name in all_text_glabels:
s.type = STT_FUNC
if objfile.sections[s.st_shndx].name == '.rodata' and s.st_value in moved_late_rodata:
s.st_value = moved_late_rodata[s.st_value]
s.st_name += strtab_adj
if is_local:
new_local_syms.append(s)
else:
new_global_syms.append(s)
new_syms = new_local_syms + new_global_syms
for i, s in enumerate(new_syms):
s.new_index = i
objfile.symtab.data = b''.join(s.to_bin() for s in new_syms)
objfile.symtab.sh_info = len(new_local_syms)
# Move over relocations
for sectype in SECTIONS:
source = asm_objfile.find_section(sectype)
target = objfile.find_section(sectype)
if target is not None:
# fixup relocation symbol indices, since we butchered them above
for reltab in target.relocated_by:
nrels = []
for rel in reltab.relocations:
if sectype == '.text' and rel.r_offset in modified_text_positions:
# don't include relocations for late_rodata dummy code
continue
# hopefully we don't have relocations for local or
# temporary symbols, so new_index exists
rel.sym_index = objfile.symtab.symbol_entries[rel.sym_index].new_index
nrels.append(rel)
reltab.relocations = nrels
reltab.data = b''.join(rel.to_bin() for rel in nrels)
if not source:
continue
target_reltab = objfile.find_section('.rel' + sectype)
target_reltaba = objfile.find_section('.rela' + sectype)
for reltab in source.relocated_by:
for rel in reltab.relocations:
rel.sym_index = asm_objfile.symtab.symbol_entries[rel.sym_index].new_index
if sectype == '.rodata' and rel.r_offset in moved_late_rodata:
rel.r_offset = moved_late_rodata[rel.r_offset]
new_data = b''.join(rel.to_bin() for rel in reltab.relocations)
if reltab.sh_type == SHT_REL:
if not target_reltab:
target_reltab = objfile.add_section('.rel' + sectype,
sh_type=SHT_REL, sh_flags=0,
sh_link=objfile.symtab.index, sh_info=target.index,
sh_addralign=4, sh_entsize=8, data=b'')
target_reltab.data += new_data
else:
if not target_reltaba:
target_reltaba = objfile.add_section('.rela' + sectype,
sh_type=SHT_RELA, sh_flags=0,
sh_link=objfile.symtab.index, sh_info=target.index,
sh_addralign=4, sh_entsize=12, data=b'')
target_reltaba.data += new_data
objfile.write(objfile_name)
finally:
s_file.close()
os.remove(s_name)
try:
os.remove(o_name)
except:
pass
def main():
parser = argparse.ArgumentParser(description="Pre-process .c files and post-process .o files to enable embedding assembly into C.")
parser.add_argument('filename', help="path to .c code")
parser.add_argument('--post-process', dest='objfile', help="path to .o file to post-process")
parser.add_argument('--assembler', dest='assembler', help="assembler command (e.g. \"mips-linux-gnu-as -march=vr4300 -mabi=32\")")
parser.add_argument('--asm-prelude', dest='asm_prelude', help="path to a file containing a prelude to the assembly file (with .set and .macro directives, e.g.)")
parser.add_argument('-framepointer', dest='framepointer', action='store_true')
parser.add_argument('-g3', dest='g3', action='store_true')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-O2', dest='o2', action='store_true')
group.add_argument('-g', dest='o2', action='store_false')
args = parser.parse_args()
opt = 'O2' if args.o2 else 'g'
if args.g3:
if opt != 'O2':
print("-g3 is only supported together with -O2", file=sys.stderr)
exit(1)
opt = 'g3'
if args.objfile is None:
with open(args.filename) as f:
parse_source(f, print_source=True, opt=opt, framepointer=args.framepointer)
else:
assert args.assembler is not None, "must pass assembler command"
with open(args.filename) as f:
functions = parse_source(f, print_source=False, opt=opt, framepointer=args.framepointer)
if not functions:
return
asm_prelude = b''
if args.asm_prelude:
with open(args.asm_prelude, 'rb') as f:
asm_prelude = f.read()
fixup_objfile(args.objfile, functions, asm_prelude, args.assembler)
if __name__ == "__main__":
main()
+2
View File
@@ -5,6 +5,8 @@ import shlex
import subprocess
import tempfile
import uuid
import sys
sys.path.append("tools/asm_processor")
import asm_processor
# Boolean for debugging purposes
-13
View File
@@ -3674,8 +3674,6 @@ Variable Name | Memory Address
[D_800F0C70](@ref D_800F0C70) | 0x800F0C70
[D_800F0C74](@ref D_800F0C74) | 0x800F0C74
[D_800F0C78](@ref D_800F0C78) | 0x800F0C78
[D_800F0C98](@ref D_800F0C98) | 0x800F0C98
[D_800F0C9C](@ref D_800F0C9C) | 0x800F0C9C
[D_800F0CA0](@ref D_800F0CA0) | 0x800F0CA0
[D_800F0CD0](@ref D_800F0CD0) | 0x800F0CD0
[D_800F15E0](@ref D_800F15E0) | 0x800F15E0
@@ -3685,9 +3683,6 @@ Variable Name | Memory Address
[D_800F1AF4](@ref D_800F1AF4) | 0x800F1AF4
[D_800F1AF8](@ref D_800F1AF8) | 0x800F1AF8
[D_800F1AFC](@ref D_800F1AFC) | 0x800F1AFC
[D_800F1B14](@ref D_800F1B14) | 0x800F1B14
[D_800F1B54](@ref D_800F1B54) | 0x800F1B54
[D_800F1B58](@ref D_800F1B58) | 0x800F1B58
[D_800F1C28](@ref D_800F1C28) | 0x800F1C28
[D_800F1C2C](@ref D_800F1C2C) | 0x800F1C2C
[D_800F1C30](@ref D_800F1C30) | 0x800F1C30
@@ -3696,12 +3691,6 @@ Variable Name | Memory Address
[D_800F1C3C](@ref D_800F1C3C) | 0x800F1C3C
[D_800F1C40](@ref D_800F1C40) | 0x800F1C40
[D_800F1C44](@ref D_800F1C44) | 0x800F1C44
[D_800F1CCC](@ref D_800F1CCC) | 0x800F1CCC
[D_800F1D48](@ref D_800F1D48) | 0x800F1D48
[D_800F1D4C](@ref D_800F1D4C) | 0x800F1D4C
[D_800F1D50](@ref D_800F1D50) | 0x800F1D50
[D_800F1D54](@ref D_800F1D54) | 0x800F1D54
[D_800F1D58](@ref D_800F1D58) | 0x800F1D58
[D_800F1DC8](@ref D_800F1DC8) | 0x800F1DC8
[D_800F1DD8](@ref D_800F1DD8) | 0x800F1DD8
[D_800F1E80](@ref D_800F1E80) | 0x800F1E80
@@ -3713,8 +3702,6 @@ Variable Name | Memory Address
[D_800F1E98](@ref D_800F1E98) | 0x800F1E98
[D_800F1F18](@ref D_800F1F18) | 0x800F1F18
[D_800F1F20](@ref D_800F1F20) | 0x800F1F20
[D_800F24A0](@ref D_800F24A0) | 0x800F24A0
[D_800F24A4](@ref D_800F24A4) | 0x800F24A4
[D_800F2B38](@ref D_800F2B38) | 0x800F2B38
[D_800F2B40](@ref D_800F2B40) | 0x800F2B40
[D_800F2B44](@ref D_800F2B44) | 0x800F2B44
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

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