diff --git a/.clang-tidy b/.clang-tidy index caf62ab7f8..a56f7b17c9 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,6 @@ Checks: '-*,readability-braces-around-statements,readability-inconsistent-declaration-parameter-name' WarningsAsErrors: '' -HeaderFilterRegex: '(src|include)\/.*\.h$' +HeaderFilterRegex: '(src|include)\/.*(\.h|\.inc\.c)$' FormatStyle: 'file' CheckOptions: # Require argument names to match exactly (instead of allowing a name to be a prefix/suffix of another) diff --git a/Makefile b/Makefile index 7195365d3c..ebba84f850 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,8 @@ VERSION ?= gc-eu-mq-dbg N_THREADS ?= $(shell nproc) # Check code syntax with host compiler. RUN_CC_CHECK ?= 1 +# If DEBUG_OBJECTS is 1, produce additional debugging files such as objdump output or raw binaries for assets +DEBUG_OBJECTS ?= 0 # Set prefix to mips binutils binaries (mips-linux-gnu-ld => 'mips-linux-gnu-') - Change at your own risk! # In nearly all cases, not having 'mips-linux-gnu-*' binaries on the PATH indicates missing dependencies. MIPS_BINUTILS_PREFIX ?= mips-linux-gnu- @@ -55,10 +57,6 @@ N64_EMULATOR ?= # This may also be used to disable debug features on debug ROMs by setting DEBUG_FEATURES to 0 # DEBUG_FEATURES ?= 1 -CFLAGS ?= -CPPFLAGS ?= -CPP_DEFINES ?= - # Version-specific settings REGIONAL_CHECKSUM := 0 ifeq ($(VERSION),ntsc-1.0) @@ -66,6 +64,7 @@ ifeq ($(VERSION),ntsc-1.0) REGION ?= JP PLATFORM := N64 DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd44 BUILD_DATE := 98-10-21 BUILD_TIME := 04:56:31 REVISION := 0 @@ -74,6 +73,7 @@ else ifeq ($(VERSION),ntsc-1.1) REGION ?= JP PLATFORM := N64 DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd44 BUILD_DATE := 98-10-26 BUILD_TIME := 10:58:45 REVISION := 1 @@ -81,6 +81,7 @@ else ifeq ($(VERSION),pal-1.0) REGION ?= EU PLATFORM := N64 DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd44 BUILD_DATE := 98-11-10 BUILD_TIME := 14:34:22 REVISION := 0 @@ -89,6 +90,7 @@ else ifeq ($(VERSION),ntsc-1.2) REGION ?= JP PLATFORM := N64 DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd44 BUILD_DATE := 98-11-12 BUILD_TIME := 18:17:03 REVISION := 2 @@ -96,6 +98,7 @@ else ifeq ($(VERSION),pal-1.1) REGION ?= EU PLATFORM := N64 DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd44 BUILD_DATE := 98-11-18 BUILD_TIME := 17:36:49 REVISION := 1 @@ -103,6 +106,7 @@ else ifeq ($(VERSION),gc-jp) REGION ?= JP PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 02-10-29 BUILD_TIME := 23:49:53 REVISION := 15 @@ -110,6 +114,7 @@ else ifeq ($(VERSION),gc-jp-mq) REGION ?= JP PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 02-10-30 BUILD_TIME := 00:15:15 REVISION := 15 @@ -117,6 +122,7 @@ else ifeq ($(VERSION),gc-us) REGION ?= US PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 02-12-19 BUILD_TIME := 13:28:09 REVISION := 15 @@ -124,6 +130,7 @@ else ifeq ($(VERSION),gc-us-mq) REGION ?= US PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 02-12-19 BUILD_TIME := 14:05:42 REVISION := 15 @@ -131,6 +138,7 @@ else ifeq ($(VERSION),gc-eu-mq-dbg) REGION ?= EU PLATFORM := GC DEBUG_FEATURES ?= 1 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 03-02-21 BUILD_TIME := 00:16:31 REVISION := 15 @@ -138,6 +146,7 @@ else ifeq ($(VERSION),gc-eu) REGION ?= EU PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 03-02-21 BUILD_TIME := 20:12:23 REVISION := 15 @@ -145,6 +154,7 @@ else ifeq ($(VERSION),gc-eu-mq) REGION ?= EU PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 03-02-21 BUILD_TIME := 20:37:19 REVISION := 15 @@ -152,23 +162,23 @@ else ifeq ($(VERSION),gc-jp-ce) REGION ?= JP PLATFORM := GC DEBUG_FEATURES ?= 0 + BUILD_CREATOR := zelda@srd022j BUILD_DATE := 03-10-08 BUILD_TIME := 21:53:00 REVISION := 15 +else ifeq ($(VERSION),ique-cn) + COMPARE := 0 + REGION ?= US + PLATFORM := IQUE + DEBUG_FEATURES ?= 0 + BUILD_CREATOR := build@toad.routefree.com + BUILD_DATE := 03-10-22 + BUILD_TIME := 16:23:19 + REVISION := 0 else $(error Unsupported version $(VERSION)) endif -ifeq ($(PLATFORM),N64) - BUILD_CREATOR := zelda@srd44 - LIBULTRA_VERSION := I - LIBULTRA_PATCH := 1 -else - BUILD_CREATOR := zelda@srd022j - LIBULTRA_VERSION := L - LIBULTRA_PATCH := 0 -endif - # ORIG_COMPILER cannot be combined with a non-IDO compiler. Check for this case and error out if found. ifneq ($(COMPILER),ido) ifeq ($(ORIG_COMPILER),1) @@ -194,22 +204,31 @@ EXTRACTED_DIR := extracted/$(VERSION) VENV := .venv MAKE = make -CPPFLAGS += -P -xc -fno-dollars-in-identifiers + +ifeq ($(PLATFORM),N64) + CPP_DEFINES += -DPLATFORM_N64=1 -DPLATFORM_GC=0 -DPLATFORM_IQUE=0 + LIBULTRA_VERSION := I + LIBULTRA_PATCH := 1 +else ifeq ($(PLATFORM),GC) + CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=1 -DPLATFORM_IQUE=0 + LIBULTRA_VERSION := L + LIBULTRA_PATCH := 0 +else ifeq ($(PLATFORM),IQUE) + CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=0 -DPLATFORM_IQUE=1 + LIBULTRA_VERSION := L + LIBULTRA_PATCH := 0 +else +$(error Unsupported platform $(PLATFORM)) +endif # Converts e.g. ntsc-1.0 to NTSC_1_0 VERSION_MACRO := $(shell echo $(VERSION) | tr a-z-. A-Z__) CPP_DEFINES += -DOOT_VERSION=$(VERSION_MACRO) -DOOT_REVISION=$(REVISION) CPP_DEFINES += -DOOT_REGION=REGION_$(REGION) -CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\"" CPP_DEFINES += -DLIBULTRA_VERSION=LIBULTRA_VERSION_$(LIBULTRA_VERSION) CPP_DEFINES += -DLIBULTRA_PATCH=$(LIBULTRA_PATCH) - -ifeq ($(PLATFORM),N64) - CPP_DEFINES += -DPLATFORM_N64=1 -DPLATFORM_GC=0 -else ifeq ($(PLATFORM),GC) - CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=1 -else - $(error Unsupported platform $(PLATFORM)) +ifeq ($(PLATFORM),IQUE) + CPP_DEFINES += -DBBPLAYER endif ifeq ($(DEBUG_FEATURES),1) @@ -219,6 +238,7 @@ else CPP_DEFINES += -DDEBUG_FEATURES=0 -DNDEBUG OPTFLAGS := -O2 -g3 endif +ASOPTFLAGS := -O1 ifeq ($(OS),Windows_NT) DETECTED_OS=windows @@ -241,9 +261,11 @@ endif # Detect compiler and set variables appropriately. ifeq ($(COMPILER),gcc) CC := $(MIPS_BINUTILS_PREFIX)gcc + CCAS := $(CC) -x assembler-with-cpp else ifeq ($(COMPILER),ido) CC := tools/ido_recomp/$(DETECTED_OS)/7.1/cc CC_OLD := tools/ido_recomp/$(DETECTED_OS)/5.3/cc + CCAS := $(CC_OLD) else $(error Unsupported compiler. Please use either ido or gcc as the COMPILER variable.) endif @@ -256,15 +278,28 @@ ifeq ($(ORIG_COMPILER),1) $(error Please install qemu-irix package or set QEMU_IRIX env var to the full qemu-irix binary path) endif endif - CC = $(QEMU_IRIX) -L tools/ido7.1_compiler tools/ido7.1_compiler/usr/bin/cc - CC_OLD = $(QEMU_IRIX) -L tools/ido5.3_compiler tools/ido5.3_compiler/usr/bin/cc + CC := $(QEMU_IRIX) -L tools/ido7.1_compiler tools/ido7.1_compiler/usr/bin/cc + CC_OLD := $(QEMU_IRIX) -L tools/ido5.3_compiler tools/ido5.3_compiler/usr/bin/cc + CCAS := $(CC) endif +# EGCS Compiler +EGCS_PREFIX := tools/egcs/$(DETECTED_OS)/ +EGCS_CC := $(EGCS_PREFIX)gcc -B $(EGCS_PREFIX) +EGCS_CCAS := $(EGCS_CC) -x assembler-with-cpp + AS := $(MIPS_BINUTILS_PREFIX)as LD := $(MIPS_BINUTILS_PREFIX)ld OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump NM := $(MIPS_BINUTILS_PREFIX)nm +STRIP := $(MIPS_BINUTILS_PREFIX)strip + +# Command prefix to preprocess a file before running the compiler +PREPROCESS := + +# Command to patch certain object files after they are built +POSTPROCESS_OBJ := @: # The default iconv on macOS has some differences from GNU iconv, so we use the Homebrew version instead ifeq ($(UNAME_S),Darwin) @@ -307,34 +342,45 @@ SEQ_CPPFLAGS := -D_LANGUAGE_ASEQ -DMML_VERSION=MML_VERSION_OOT $(CPP_DEFINES) - SBCFLAGS := --matching SFCFLAGS := --matching -CFLAGS += $(CPP_DEFINES) -CPPFLAGS += $(CPP_DEFINES) +# Extra debugging steps +ifeq ($(DEBUG_OBJECTS),1) + OBJDUMP_CMD = @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) + OBJCOPY_CMD = @$(OBJCOPY) -O binary $@ $(@:.o=.bin) +else + OBJDUMP_CMD = @: + OBJCOPY_CMD = @: +endif ifeq ($(COMPILER),gcc) OPTFLAGS := -Os -ffast-math -fno-unsafe-math-optimizations endif GBI_DEFINES := -DF3DEX_GBI_2 -ifeq ($(PLATFORM),GC) +ifneq ($(PLATFORM),N64) GBI_DEFINES += -DF3DEX_GBI_PL -DGBI_DOWHILE endif ifeq ($(DEBUG_FEATURES),1) GBI_DEFINES += -DGBI_DEBUG endif -CFLAGS += $(GBI_DEFINES) - -ASFLAGS := -march=vr4300 -32 -no-pad-sections -Iinclude -I$(EXTRACTED_DIR) +CPPFLAGS += -P -xc -fno-dollars-in-identifiers $(CPP_DEFINES) +ASFLAGS += -march=vr4300 -32 -no-pad-sections -Iinclude -I$(EXTRACTED_DIR) ifeq ($(COMPILER),gcc) - CFLAGS += -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -fbuiltin -fno-builtin-sinf -fno-builtin-cosf $(CHECK_WARNINGS) -funsigned-char + CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -funsigned-char -fbuiltin -fno-builtin-sinf -fno-builtin-cosf $(CHECK_WARNINGS) + CCASFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -fno-PIC -fno-common -Wa,-no-pad-sections MIPS_VERSION := -mips3 else # Suppress warnings for wrong number of macro arguments (to fake variadic # macros) and Microsoft extensions such as anonymous structs (which the # compiler does support but warns for their usage). - CFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 + CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 + CCASFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 -o32 + EGCS_CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -mcpu=vr4300 -mabi=32 -mgp32 -mfp32 -fno-PIC MIPS_VERSION := -mips2 + + EGCS_CCASFLAGS := -Wall -nostdinc $(CPP_DEFINES) $(INC) -c -G 0 -Wa,-irix-symtab -D_ABIO32=1 -D_ABI64=3 -D_MIPS_SIM_ABI64=_ABI64 -D_MIPS_SIM_ABI32=_ABIO32 -DMIPSEB -D_LANGUAGE_ASSEMBLY -mabi=32 -fno-PIC -non_shared -mcpu=4300 -mfix4300 + EGCS_ASOPTFLAGS := endif ifeq ($(COMPILER),ido) @@ -365,11 +411,8 @@ LDSCRIPT := $(ROM:.z64=.ld) # description of ROM segments SPEC := spec -ifeq ($(COMPILER),ido) -SRC_DIRS := $(shell find src -type d -not -path src/gcc_fix) -else SRC_DIRS := $(shell find src -type d) -endif +UNDECOMPILED_DATA_DIRS := $(shell find data -type d) ifneq ($(wildcard $(EXTRACTED_DIR)/assets/audio),) SAMPLE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samples -type d) @@ -445,32 +488,19 @@ ASSET_BIN_DIRS := $(ASSET_BIN_DIRS_EXTRACTED) $(ASSET_BIN_DIRS_COMMITTED) ASSET_FILES_BIN_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.bin)) ASSET_FILES_BIN_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.bin)) ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN_EXTRACTED:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \ - $(foreach f,$(ASSET_FILES_BIN_COMMITTED:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \ - $(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o)) + $(foreach f,$(ASSET_FILES_BIN_COMMITTED:.bin=.bin.inc.c),$(BUILD_DIR)/$f) -UNDECOMPILED_DATA_DIRS := $(shell find data -type d) +# Find all .o files included in the spec +SPEC_O_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(BUILD_DIR_REPLACE) | sed -n -E 's/^[ \t]*include[ \t]*"([a-zA-Z0-9/_.-]+\.o)"/\1/p') -BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*) - -# source files -ASSET_C_FILES_EXTRACTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.c))) -ASSET_C_FILES_COMMITTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.c))) -SRC_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))) -S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s)) -O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(SRC_C_FILES:.c=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(ASSET_C_FILES_EXTRACTED:.c=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \ - $(foreach f,$(ASSET_C_FILES_COMMITTED:.c=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o) \ - $(BUILD_DIR)/src/code/z_message_z_game_over.o - -OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(BUILD_DIR_REPLACE) | grep -o '[^"]*_reloc.o' ) +# Split out reloc files +O_FILES := $(filter-out %_reloc.o,$(SPEC_O_FILES)) +OVL_RELOC_FILES := $(filter %_reloc.o,$(SPEC_O_FILES)) # Automatic dependency files # (Only asm_processor dependencies and reloc dependencies are handled for now) DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d) - TEXTURE_FILES_PNG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.png)) TEXTURE_FILES_PNG_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.png)) TEXTURE_FILES_JPG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.jpg)) @@ -482,7 +512,8 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG_EXTRACTED:.png=.inc.c),$(f: # create build directories $(shell mkdir -p $(BUILD_DIR)/baserom \ - $(BUILD_DIR)/assets/text) + $(BUILD_DIR)/assets/text \ + $(BUILD_DIR)/linker_scripts) $(shell mkdir -p $(foreach dir, \ $(SRC_DIRS) \ $(UNDECOMPILED_DATA_DIRS) \ @@ -502,9 +533,20 @@ $(shell mkdir -p $(foreach dir, \ $(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))) endif +$(BUILD_DIR)/src/boot/build.o: CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\"" + ifeq ($(COMPILER),ido) $(BUILD_DIR)/src/boot/driverominit.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +# iQue's driverominit.o seems to have been patched manually. For non-matching builds we edit the source code instead. +ifneq ($(NON_MATCHING),1) +$(BUILD_DIR)/src/boot/driverominit.o: POSTPROCESS_OBJ := $(PYTHON) tools/patch_ique_driverominit.py +endif + +$(BUILD_DIR)/src/boot/viconfig.o: OPTFLAGS := -O2 +endif + $(BUILD_DIR)/src/code/jpegutils.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/code/jpegdecoder.o: OPTFLAGS := -O2 @@ -523,10 +565,47 @@ endif $(BUILD_DIR)/src/code/jpegutils.o: CC := $(CC_OLD) $(BUILD_DIR)/src/code/jpegdecoder.o: CC := $(CC_OLD) -ifeq ($(DEBUG_FEATURES),1) +ifeq ($(PLATFORM),IQUE) +# Some files are compiled with EGCS on iQue +EGCS_O_FILES += $(BUILD_DIR)/src/boot/boot_main.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/idle.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/is_debug_ique.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_locale.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_std_dma.o +# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_actor.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_common_data.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_construct.o +# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o +# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_parameter.o +# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o +# EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_opening/z_opening.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_title/z_title.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.o + +$(EGCS_O_FILES): CC := $(EGCS_CC) +$(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls -funsigned-char +$(EGCS_O_FILES): MIPS_VERSION := +endif + +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libc/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libc/%.o: CCAS := $(EGCS_CCAS) +$(BUILD_DIR)/src/libc/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls +$(BUILD_DIR)/src/libc/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) +$(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -O1 +$(BUILD_DIR)/src/libc/%.o: MIPS_VERSION := +else ifeq ($(DEBUG_FEATURES),1) $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -g +$(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -g else $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -O2 +$(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -O2 endif $(BUILD_DIR)/src/libc64/%.o: OPTFLAGS := -O2 @@ -546,12 +625,43 @@ endif $(BUILD_DIR)/src/audio/sfx.o: CFLAGS += -use_readwrite_const $(BUILD_DIR)/src/audio/sequence.o: CFLAGS += -use_readwrite_const +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libultra/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libultra/%.o: CCAS := $(EGCS_CCAS) +$(BUILD_DIR)/src/libultra/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls +$(BUILD_DIR)/src/libultra/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) +$(BUILD_DIR)/src/libultra/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) + +$(BUILD_DIR)/src/libultra/reg/_%.o: OPTFLAGS := -O0 +$(BUILD_DIR)/src/libultra/reg/_%.o: MIPS_VERSION := -mgp64 -mfp64 -mips3 + +$(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O0 +$(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O0 + +$(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/invaldcache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/invalicache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/writebackdcache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o: MIPS_VERSION := -mips3 +else $(BUILD_DIR)/src/libultra/%.o: CC := $(CC_OLD) $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/libc/ll.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py + $(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/llcvt.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/libc/llcvt.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py + +$(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/os/exceptasm.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py +endif + +$(BUILD_DIR)/src/code/%.o: ASOPTFLAGS := -O2 +$(BUILD_DIR)/src/libleo/%.o: ASOPTFLAGS := -O2 +$(BUILD_DIR)/src/libultra/libc/%.o: ASOPTFLAGS := -O2 +$(BUILD_DIR)/src/libultra/mgu/%.o: ASOPTFLAGS := -O2 ifeq ($(LIBULTRA_VERSION),I) $(BUILD_DIR)/src/libultra/gu/%.o: OPTFLAGS := -O3 @@ -592,20 +702,32 @@ else $(BUILD_DIR)/src/libultra/gu/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/io/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/libc/%.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libultra/os/%.o: OPTFLAGS := -O0 +else $(BUILD_DIR)/src/libultra/os/%.o: OPTFLAGS := -O1 endif +endif $(BUILD_DIR)/src/libleo/%.o: CC := $(CC_OLD) $(BUILD_DIR)/src/libleo/%.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libgcc/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libgcc/%.o: CFLAGS := $(EGCS_CFLAGS) +endif + $(BUILD_DIR)/assets/misc/z_select_static/%.o: GBI_DEFINES := -DF3DEX_GBI -# For using asm_processor on some files: -#$(BUILD_DIR)/.../%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/makerom/%.o: CCAS := $(EGCS_CCAS) +$(BUILD_DIR)/src/makerom/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) +$(BUILD_DIR)/src/makerom/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) +endif ifeq ($(PERMUTER),) # permuter + preprocess.py misbehaves, permuter doesn't care about rodata diffs or bss ordering so just don't use it in that case # Handle encoding (UTF-8 -> EUC-JP) and custom pragmas -$(BUILD_DIR)/src/%.o: CC := ./tools/preprocess.sh -v $(VERSION) -i $(ICONV) -- $(CC) +$(BUILD_DIR)/src/%.o: PREPROCESS := ./tools/preprocess.sh -v $(VERSION) -i $(ICONV) -- endif else @@ -686,14 +808,25 @@ endif $(ROM): $(ELF) $(ELF2ROM) -cic 6105 $< $@ -$(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/compress_ranges.txt - $(PYTHON) tools/compress.py --in $(ROM) --out $@ --dmadata-start `./tools/dmadata_start.sh $(NM) $(ELF)` --compress `cat $(BUILD_DIR)/compress_ranges.txt` --threads $(N_THREADS) - $(PYTHON) -m ipl3checksum sum --cic 6105 --update $@ +ifeq ($(PLATFORM),IQUE) + COMPRESS_ARGS := --format gzip --pad-to 0x4000 + CIC = 6102 +else + COMPRESS_ARGS := --format yaz0 --pad-to 0x800000 --fill-padding-bytes + CIC = 6105 +endif -$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(BUILD_DIR)/undefined_syms.txt \ +$(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/compress_ranges.txt + $(PYTHON) tools/compress.py --in $(ROM) --out $@ --dmadata-start `./tools/dmadata_start.sh $(NM) $(ELF)` --compress `cat $(BUILD_DIR)/compress_ranges.txt` --threads $(N_THREADS) $(COMPRESS_ARGS) + $(PYTHON) -m ipl3checksum sum --cic $(CIC) --update $@ + +$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(BUILD_DIR)/linker_scripts/makerom.ld $(BUILD_DIR)/undefined_syms.txt \ $(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) $(SEQUENCE_O_FILES) \ $(BUILD_DIR)/assets/audio/sequence_font_table.o $(BUILD_DIR)/assets/audio/audiobank_padding.o - $(LD) -T $(LDSCRIPT) -T $(BUILD_DIR)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -o $@ + $(LD) -T $(LDSCRIPT) -T $(BUILD_DIR)/linker_scripts/makerom.ld -T $(BUILD_DIR)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -o $@ + +$(BUILD_DIR)/linker_scripts/makerom.ld: linker_scripts/makerom.ld + $(CPP) -I include $(CPPFLAGS) $< > $@ ## Order-only prerequisites # These ensure e.g. the O_FILES are built before the OVL_RELOC_FILES. @@ -722,11 +855,17 @@ $(BUILD_DIR)/baserom/%.o: $(EXTRACTED_DIR)/baserom/% $(BUILD_DIR)/data/%.o: data/%.s $(CPP) $(CPPFLAGS) -Iinclude $< | $(AS) $(ASFLAGS) -o $@ -$(BUILD_DIR)/assets/text/%.enc.jpn.h: assets/text/%.h $(EXTRACTED_DIR)/text/%.h assets/text/charmap.txt - $(CPP) $(CPPFLAGS) -I$(EXTRACTED_DIR) $< | $(PYTHON) tools/msgenc.py --encoding jpn --charmap assets/text/charmap.txt - $@ +ifeq ($(PLATFORM),IQUE) + NES_CHARMAP := assets/text/charmap.chn.txt +else + NES_CHARMAP := assets/text/charmap.nes.txt +endif -$(BUILD_DIR)/assets/text/%.enc.nes.h: assets/text/%.h $(EXTRACTED_DIR)/text/%.h assets/text/charmap.txt - $(CPP) $(CPPFLAGS) -I$(EXTRACTED_DIR) $< | $(PYTHON) tools/msgenc.py --encoding nes --charmap assets/text/charmap.txt - $@ +$(BUILD_DIR)/assets/text/%.enc.nes.h: assets/text/%.h $(EXTRACTED_DIR)/text/%.h $(NES_CHARMAP) + $(CPP) $(CPPFLAGS) -I$(EXTRACTED_DIR) $< | $(PYTHON) tools/msgenc.py --encoding utf-8 --charmap $(NES_CHARMAP) - $@ + +$(BUILD_DIR)/assets/text/%.enc.jpn.h: assets/text/%.h $(EXTRACTED_DIR)/text/%.h assets/text/charmap.jpn.txt + $(CPP) $(CPPFLAGS) -I$(EXTRACTED_DIR) $< | $(PYTHON) tools/msgenc.py --encoding SHIFT-JIS --wchar --charmap assets/text/charmap.jpn.txt - $@ # Dependencies for files including message data headers # TODO remove when full header dependencies are used. @@ -749,14 +888,37 @@ endif $(BUILD_DIR)/assets/%.o: assets/%.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(OBJCOPY) -O binary $@ $@.bin + $(OBJCOPY_CMD) $(BUILD_DIR)/assets/%.o: $(EXTRACTED_DIR)/assets/%.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(OBJCOPY) -O binary $@ $@.bin + $(OBJCOPY_CMD) + +# Assemble the ROM header with GNU AS always +$(BUILD_DIR)/src/makerom/rom_header.o: src/makerom/rom_header.s +ifeq ($(COMPILER),ido) + $(CPP) $(CPPFLAGS) $(MIPS_BUILTIN_DEFS) $(INC) $< | $(AS) $(ASFLAGS) -o $@ +else + $(CCAS) -c $(CCASFLAGS) $(MIPS_VERSION) $(ASOPTFLAGS) -o $@ $< +endif + $(OBJDUMP_CMD) + +$(BUILD_DIR)/src/makerom/ipl3.o: $(EXTRACTED_DIR)/incbin/ipl3 + $(OBJCOPY) -I binary -O elf32-big --rename-section .data=.text $< $@ $(BUILD_DIR)/src/%.o: src/%.s - $(CPP) $(CPPFLAGS) -Iinclude $< | $(AS) $(ASFLAGS) -o $@ +ifeq ($(COMPILER),ido) + $(CCAS) -c $(CCASFLAGS) $(MIPS_VERSION) $(ASOPTFLAGS) -o $(@:.o=.tmp.o) $< +# IDO generates bad symbol tables, fix the symbol table with strip.. + $(STRIP) $(@:.o=.tmp.o) -N dummy-symbol-name +# but strip doesn't know about file-relative offsets in .mdebug and doesn't relocate them, ld will +# segfault unless .mdebug is removed + $(OBJCOPY) --remove-section .mdebug $(@:.o=.tmp.o) $@ +else + $(CCAS) -c $(CCASFLAGS) $(MIPS_VERSION) $(ASOPTFLAGS) -o $@ $< +endif + $(POSTPROCESS_OBJ) $@ + $(OBJDUMP_CMD) # Incremental link to move z_message and z_game_over data into rodata $(BUILD_DIR)/src/code/z_message_z_game_over.o: $(BUILD_DIR)/src/code/z_message.o $(BUILD_DIR)/src/code/z_game_over.o @@ -785,23 +947,16 @@ $(BUILD_DIR)/src/%.o: src/%.c ifneq ($(RUN_CC_CHECK),0) $(CC_CHECK) $< endif - $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) + $(PREPROCESS) $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< + $(POSTPROCESS_OBJ) $@ + $(OBJDUMP_CMD) -$(BUILD_DIR)/src/libultra/libc/ll.o: src/libultra/libc/ll.c +$(BUILD_DIR)/src/audio/session_init.o: src/audio/session_init.c $(BUILD_DIR)/assets/audio/soundfont_sizes.h $(BUILD_DIR)/assets/audio/sequence_sizes.h ifneq ($(RUN_CC_CHECK),0) $(CC_CHECK) $< endif - $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(PYTHON) tools/set_o32abi_bit.py $@ - @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) - -$(BUILD_DIR)/src/libultra/libc/llcvt.o: src/libultra/libc/llcvt.c -ifneq ($(RUN_CC_CHECK),0) - $(CC_CHECK) $< -endif - $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(PYTHON) tools/set_o32abi_bit.py $@ + $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $(@:.o=.tmp) $< + $(LD) -r -T linker_scripts/data_with_rodata.ld -o $@ $(@:.o=.tmp) @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) $(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/$(SPEC) @@ -967,8 +1122,6 @@ $(BUILD_DIR)/assets/audio/sequence_font_table.o: $(BUILD_DIR)/assets/audio/seque # make headers with file sizes and amounts -$(BUILD_DIR)/src/audio/session_config.o: $(BUILD_DIR)/assets/audio/soundfont_sizes.h $(BUILD_DIR)/assets/audio/sequence_sizes.h - $(BUILD_DIR)/assets/audio/soundfont_sizes.h: $(SOUNDFONT_O_FILES) $(AFILE_SIZES) $@ NUM_SOUNDFONTS SOUNDFONT_SIZES .rodata $^ diff --git a/README.md b/README.md index 59791e60a0..ff255f32db 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ The build process has the following package requirements: * git * build-essential * binutils-mips-linux-gnu +* curl * python3 * python3-pip * python3-venv @@ -91,7 +92,7 @@ Under Debian / Ubuntu (which we recommend using), you can install them with the ```bash sudo apt-get update -sudo apt-get install git build-essential binutils-mips-linux-gnu python3 python3-pip python3-venv libpng-dev libxml2-dev +sudo apt-get install git build-essential binutils-mips-linux-gnu curl python3 python3-pip python3-venv libpng-dev libxml2-dev ``` If you are using GCC as the compiler for Ocarina of Time, you will also need: diff --git a/assets/audio/sequences/seq_109.prg.seq b/assets/audio/sequences/seq_109.prg.seq index 49b0dfb606..ee3e8e0aa4 100644 --- a/assets/audio/sequences/seq_109.prg.seq +++ b/assets/audio/sequences/seq_109.prg.seq @@ -1149,7 +1149,7 @@ ENVELOPE_08BA: point 20, 20000 hang -#if OOT_VERSION == NTSC_1_2 || PLATFORM_GC +#if OOT_VERSION == NTSC_1_2 || !PLATFORM_N64 .filter FILTER_0932 filter 0, 0, 0, 0, 0, 0, 0, 0 diff --git a/assets/text/charmap.chn.txt b/assets/text/charmap.chn.txt new file mode 100644 index 0000000000..08d4d451df --- /dev/null +++ b/assets/text/charmap.chn.txt @@ -0,0 +1,1823 @@ +# Determines how certain text sequences should be encoded for the CHN text encoding. +{ + '\n' : 0x01, + + '[A]' : 0xAA9F, + '[B]' : 0xAAA0, + '[C]' : 0xAAA1, + '[L]' : 0xAAA2, + '[R]' : 0xAAA3, + '[Z]' : 0xAAA4, + '[C-Up]' : 0xAAA5, + '[C-Down]' : 0xAAA6, + '[C-Left]' : 0xAAA7, + '[C-Right]' : 0xAAA8, + '▼' : 0xAAA9, + '[Control-Pad]' : 0xAAAA, + + 'À' : 0x80, + 'î' : 0x81, + 'Â' : 0x82, + 'Ä' : 0x83, + 'Ç' : 0x84, + 'È' : 0x85, + 'É' : 0x86, + 'Ê' : 0x87, + 'Ë' : 0x88, + 'Ï' : 0x89, + 'Ô' : 0x8A, + 'Ö' : 0x8B, + 'Ù' : 0x8C, + 'Û' : 0x8D, + 'Ü' : 0x8E, + 'ß' : 0x8F, + 'à' : 0x90, + 'á' : 0x91, + 'â' : 0x92, + 'ä' : 0x93, + 'ç' : 0x94, + 'è' : 0x95, + 'é' : 0x96, + 'ê' : 0x97, + 'ë' : 0x98, + 'ï' : 0x99, + 'ô' : 0x9A, + 'ö' : 0x9B, + 'ù' : 0x9C, + 'û' : 0x9D, + 'ü' : 0x9E, + + # Unfortunately the CN codepoint map does not correspond to any standard encoding, + # characters were added in the order they were needed in the text. The order is + # reproduced here. + '你' : 0xA08C, + '借' : 0xA08D, + '到' : 0xA08E, + '了' : 0xA08F, + '一' : 0xA090, + '颗' : 0xA091, + '口' : 0xA092, + '袋' : 0xA093, + '鸡' : 0xA094, + '蛋' : 0xA095, + '过' : 0xA096, + '夜' : 0xA097, + '后' : 0xA098, + '就' : 0xA099, + '会' : 0xA09A, + '孵' : 0xA09B, + '出' : 0xA09C, + '只' : 0xA09D, + ',' : 0xA09E, + '用' : 0xA09F, + '完' : 0xA0A0, + '别' : 0xA0A1, + '忘' : 0xA0A2, + '记' : 0xA0A3, + '把' : 0xA0A4, + '它' : 0xA0A5, + '还' : 0xA0A6, + '回' : 0xA0A7, + '去' : 0xA0A8, + '。' : 0xA0A9, + '归' : 0xA0AA, + '得' : 0xA0AB, + '克' : 0xA0AC, + '洛' : 0xA0AD, + '!' : 0xA0AE, + '与' : 0xA0AF, + '不' : 0xA0B0, + '同' : 0xA0B1, + '很' : 0xA0B2, + '少' : 0xA0B3, + '啼' : 0xA0B4, + '叫' : 0xA0B5, + '个' : 0xA0B6, + '奇' : 0xA0B7, + '异' : 0xA0B8, + '蘑' : 0xA0B9, + '菇' : 0xA0BA, + '新' : 0xA0BB, + '鲜' : 0xA0BC, + '的' : 0xA0BD, + '都' : 0xA0BE, + '容' : 0xA0BF, + '易' : 0xA0C0, + '变' : 0xA0C1, + '质' : 0xA0C2, + '快' : 0xA0C3, + '拿' : 0xA0C4, + '卡' : 0xA0C5, + '利' : 0xA0C6, + '科' : 0xA0C7, + '药' : 0xA0C8, + '店' : 0xA0C9, + '吧' : 0xA0CA, + '之' : 0xA0CB, + '知' : 0xA0CC, + '道' : 0xA0CD, + '这' : 0xA0CE, + '两' : 0xA0CF, + '人' : 0xA0D0, + '间' : 0xA0D1, + '发' : 0xA0D2, + '生' : 0xA0D3, + '什' : 0xA0D4, + '么' : 0xA0D5, + '事' : 0xA0D6, + '但' : 0xA0D7, + '带' : 0xA0D8, + '迷' : 0xA0D9, + '失' : 0xA0DA, + '森' : 0xA0DB, + '林' : 0xA0DC, + '物' : 0xA0DD, + '原' : 0xA0DE, + '主' : 0xA0DF, + '偷' : 0xA0E0, + '猎' : 0xA0E1, + '者' : 0xA0E2, + '锯' : 0xA0E3, + '定' : 0xA0E4, + '是' : 0xA0E5, + '那' : 0xA0E6, + '年' : 0xA0E7, + '轻' : 0xA0E8, + '留' : 0xA0E9, + '下' : 0xA0EA, + '炸' : 0xA0EB, + '弹' : 0xA0EC, + '枚' : 0xA0ED, + '卢' : 0xA0EE, + '比' : 0xA0EF, + '买' : 0xA0F0, + '德' : 0xA0F1, + '库' : 0xA0F2, + '子' : 0xA0F3, + '可' : 0xA0F4, + '以' : 0xA0F5, + '装' : 0xA0F6, + '弓' : 0xA0F7, + '换' : 0xA0F8, + '破' : 0xA0F9, + '损' : 0xA0FA, + '格' : 0xA0FB, + '雷' : 0xA0FC, + '剑' : 0xA0FD, + '大' : 0xA0FE, + '城' : 0xA0FF, + '修' : 0xA100, + '好' : 0xA101, + '交' : 0xA102, + '处' : 0xA103, + '方' : 0xA104, + '见' : 0xA105, + '卓' : 0xA106, + '拉' : 0xA107, + '王' : 0xA108, + '⋯' : 0xA109, # TODO this isn't quite the same width as everything else.. + '兑' : 0xA10A, + '券' : 0xA10B, + '急' : 0xA10C, + '切' : 0xA10D, + '地' : 0xA10E, + '希' : 0xA10F, + '望' : 0xA110, + '点' : 0xA111, + '铸' : 0xA112, + '卖' : 0xA113, + '掉' : 0xA114, + '巨' : 0xA115, + '刀' : 0xA116, + '铁' : 0xA117, + '匠' : 0xA118, + '师' : 0xA119, + '所' : 0xA11A, + '造' : 0xA11B, + '坚' : 0xA11C, + '摧' : 0xA11D, + '卷' : 0xA11E, + '眼' : 0xA11F, + '青' : 0xA120, + '蛙' : 0xA121, + '趁' : 0xA122, + '凉' : 0xA123, + '海' : 0xA124, + '鲁' : 0xA125, + '湖' : 0xA126, + '世' : 0xA127, + '上' : 0xA128, + '最' : 0xA129, + '水' : 0xA12A, + '在' : 0xA12B, + '前' : 0xA12C, + '送' : 0xA12D, + '蠃' : 0xA12E, + '啦' : 0xA12F, + '骷' : 0xA130, + '髅' : 0xA131, + '面' : 0xA132, + '具' : 0xA133, + '按' : 0xA134, + '戴' : 0xA135, + '试' : 0xA136, + '看' : 0xA137, + '着' : 0xA138, + '真' : 0xA139, + '像' : 0xA13A, + '怪' : 0xA13B, + '恐' : 0xA13C, + '怖' : 0xA13D, + '吓' : 0xA13E, + '基' : 0xA13F, + '顿' : 0xA140, + '受' : 0xA141, + '欢' : 0xA142, + '迎' : 0xA143, + '哦' : 0xA144, + '兔' : 0xA145, + '兜' : 0xA146, + '帽' : 0xA147, + '长' : 0xA148, + '耳' : 0xA149, + '朵' : 0xA14A, + '太' : 0xA14B, + '爱' : 0xA14C, + '让' : 0xA14D, + '头' : 0xA14E, + '起' : 0xA14F, + '来' : 0xA150, + '有' : 0xA151, + '女' : 0xA152, + '孩' : 0xA153, + '?' : 0xA154, + '理' : 0xA155, + '更' : 0xA156, + '多' : 0xA157, + '我' : 0xA158, + '们' : 0xA159, + '娱' : 0xA15A, + '乐' : 0xA15B, + '中' : 0xA15C, + '心' : 0xA15D, + ':' : 0xA15E, + '保' : 0xA15F, + '龄' : 0xA160, + '球' : 0xA161, + '场' : 0xA162, + '想' : 0xA163, + '奖' : 0xA164, + '品' : 0xA165, + '吗' : 0xA166, + '秘' : 0xA167, + '密' : 0xA168, + '付' : 0xA169, + '钱' : 0xA16A, + '才' : 0xA16B, + '告' : 0xA16C, + '诉' : 0xA16D, + '玩' : 0xA16E, + '次' : 0xA16F, + '要' : 0xA170, + '瞄' : 0xA171, + '准' : 0xA172, + '洞' : 0xA173, + '放' : 0xA174, + '鼠' : 0xA175, + '十' : 0xA176, + '机' : 0xA177, + '预' : 0xA178, + '备' : 0xA179, + '开' : 0xA17A, + '始' : 0xA17B, + '再' : 0xA17C, + '差' : 0xA17D, + '(' : 0xA17E, + ')' : 0xA17F, + '捡' : 0xA180, + '扔' : 0xA181, + '没' : 0xA182, + '能' : 0xA183, + '恢' : 0xA184, + '复' : 0xA185, + '正' : 0xA186, + '常' : 0xA187, + '请' : 0xA188, + '救' : 0xA189, + '其' : 0xA18A, + '他' : 0xA18B, + '兄' : 0xA18C, + '弟' : 0xA18D, + '给' : 0xA18E, + '励' : 0xA18F, + '诅' : 0xA190, + '咒' : 0xA191, + '解' : 0xA192, + '除' : 0xA193, + '谢' : 0xA194, + '报' : 0xA195, + '呀' : 0xA196, + '啊' : 0xA197, + '被' : 0xA198, + '小' : 0xA199, + '消' : 0xA19A, + '灭' : 0xA19B, + '蜘' : 0xA19C, + '蛛' : 0xA19D, + '已' : 0xA19E, + '经' : 0xA19F, + '减' : 0xA1A0, + '弱' : 0xA1A1, + '富' : 0xA1A2, + '办' : 0xA1A3, + '法' : 0xA1A4, + '越' : 0xA1A5, + '些' : 0xA1A6, + '验' : 0xA1A7, + '帮' : 0xA1A8, + '助' : 0xA1A9, + '寻' : 0xA1AA, + '找' : 0xA1AB, + '首' : 0xA1AC, + '先' : 0xA1AD, + '晚' : 0xA1AE, + '行' : 0xA1AF, + '动' : 0xA1B0, + '第' : 0xA1B1, + '二' : 0xA1B2, + '住' : 0xA1B3, + '喜' : 0xA1B4, + '松' : 0xA1B5, + '柔' : 0xA1B6, + '土' : 0xA1B7, + '壤' : 0xA1B8, + '仔' : 0xA1B9, + '细' : 0xA1BA, + '观' : 0xA1BB, + '察' : 0xA1BC, + '周' : 0xA1BD, + '围' : 0xA1BE, + '全' : 0xA1BF, + '靠' : 0xA1C0, + '成' : 0xA1C1, + '样' : 0xA1C2, + '因' : 0xA1C3, + '为' : 0xA1C4, + '种' : 0xA1C5, + '界' : 0xA1C6, + '每' : 0xA1C7, + '现' : 0xA1C8, + '徽' : 0xA1C9, + '章' : 0xA1CA, + '收' : 0xA1CB, + '集' : 0xA1CC, + '作' : 0xA1CD, + '战' : 0xA1CE, + '绩' : 0xA1CF, + '证' : 0xA1D0, + '明' : 0xA1D1, + '征' : 0xA1D2, + '途' : 0xA1D3, + '状' : 0xA1D4, + '态' : 0xA1D5, + '窗' : 0xA1D6, + '此' : 0xA1D7, + '图' : 0xA1D8, + '标' : 0xA1D9, + '旁' : 0xA1DA, + '边' : 0xA1DB, + '数' : 0xA1DC, + '字' : 0xA1DD, + '显' : 0xA1DE, + '示' : 0xA1DF, + '目' : 0xA1E0, + '量' : 0xA1E1, + '如' : 0xA1E2, + '果' : 0xA1E3, + '区' : 0xA1E4, + '名' : 0xA1E5, + '说' : 0xA1E6, + '里' : 0xA1E7, + '家' : 0xA1E8, + '族' : 0xA1E9, + '身' : 0xA1EA, + '感' : 0xA1EB, + '止' : 0xA1EC, + '错' : 0xA1ED, + '担' : 0xA1EE, + '需' : 0xA1EF, + '箭' : 0xA1F0, + '关' : 0xA1F1, + '系' : 0xA1F2, + '强' : 0xA1F3, + '迫' : 0xA1F4, + '游' : 0xA1F5, + '戏' : 0xA1F6, + '著' : 0xA1F7, + '射' : 0xA1F8, + '击' : 0xA1F9, + '从' : 0xA1FA, + '台' : 0xA1FB, + '够' : 0xA1FC, + '五' : 0xA1FD, + '支' : 0xA1FE, + '武' : 0xA1FF, + '器' : 0xA200, + '争' : 0xA201, + '取' : 0xA202, + '祝' : 0xA203, + '运' : 0xA204, + '堆' : 0xA205, + '软' : 0xA206, + '泥' : 0xA207, + '精' : 0xA208, + '灵' : 0xA209, + '选' : 0xA20A, + '择' : 0xA20B, + '或' : 0xA20C, + '键' : 0xA20D, + '并' : 0xA20E, + '立' : 0xA20F, + '即' : 0xA210, + '时' : 0xA211, + '举' : 0xA212, + '置' : 0xA213, + '跑' : 0xA214, + '投' : 0xA215, + '掷' : 0xA216, + '疑' : 0xA217, + '型' : 0xA218, + '甚' : 0xA219, + '至' : 0xA21A, + '飞' : 0xA21B, + '檐' : 0xA21C, + '走' : 0xA21D, + '壁' : 0xA21E, + '闪' : 0xA21F, + '光' : 0xA220, + '使' : 0xA221, + '敌' : 0xA222, + '眩' : 0xA223, + '晕' : 0xA224, + '旋' : 0xA225, + '镖' : 0xA226, + '攻' : 0xA227, + '远' : 0xA228, + '短' : 0xA229, + '钩' : 0xA22A, + '条' : 0xA22B, + '力' : 0xA22C, + '链' : 0xA22D, + '勾' : 0xA22E, + '体' : 0xA22F, + '获' : 0xA230, + '自' : 0xA231, + '己' : 0xA232, + '根' : 0xA233, + '木' : 0xA234, + '棒' : 0xA235, + '挥' : 0xA236, + '舞' : 0xA237, + '站' : 0xA238, + '携' : 0xA239, + '浪' : 0xA23A, + '费' : 0xA23B, + '锤' : 0xA23C, + '砸' : 0xA23D, + '碎' : 0xA23E, + '废' : 0xA23F, + '沉' : 0xA240, + '双' : 0xA241, + '手' : 0xA242, + '镜' : 0xA243, + '神' : 0xA244, + '井' : 0xA245, + '外' : 0xA246, + '也' : 0xA247, + '耗' : 0xA248, + '魔' : 0xA249, + '停' : 0xA24A, + '笛' : 0xA24B, + '塞' : 0xA24C, + '尔' : 0xA24D, + '达' : 0xA24E, + '宝' : 0xA24F, + '散' : 0xA250, + '芒' : 0xA251, + '施' : 0xA252, + '展' : 0xA253, + '花' : 0xA254, + '风' : 0xA255, + '返' : 0xA256, + '避' : 0xA257, + '退' : 0xA258, + '火' : 0xA259, + '勋' : 0xA25A, + '圣' : 0xA25B, + '尼' : 0xA25C, + '亚' : 0xA25D, + '觉' : 0xA25E, + '醒' : 0xA25F, + '将' : 0xA260, + '赐' : 0xA261, + '予' : 0xA262, + '茹' : 0xA263, + '特' : 0xA264, + '她' : 0xA265, + '萨' : 0xA266, + '莉' : 0xA267, + '娅' : 0xA268, + '魂' : 0xA269, + '纳' : 0xA26A, + '波' : 0xA26B, + '若' : 0xA26C, + '暗' : 0xA26D, + '英' : 0xA26E, + '帕' : 0xA26F, + '空' : 0xA270, + '瓶' : 0xA271, + '红' : 0xA272, + '色' : 0xA273, + '命' : 0xA274, + '份' : 0xA275, + '绿' : 0xA276, + '蓝' : 0xA277, + '和' : 0xA278, + '抓' : 0xA279, + '伙' : 0xA27A, + '伴' : 0xA27B, + '活' : 0xA27C, + '随' : 0xA27D, + '呼' : 0xA27E, + '唤' : 0xA27F, + '鱼' : 0xA280, + '非' : 0xA281, + '美' : 0xA282, + '豆' : 0xA283, + '园' : 0xA284, + '合' : 0xA285, + '适' : 0xA286, + '趣' : 0xA287, + '对' : 0xA288, + '纪' : 0xA289, + '念' : 0xA28A, + '演' : 0xA28B, + '奏' : 0xA28C, + '各' : 0xA28D, + '律' : 0xA28E, + '重' : 0xA28F, + '握' : 0xA290, + '盾' : 0xA291, + '蹲' : 0xA292, + '防' : 0xA293, + '御' : 0xA294, + '移' : 0xA295, + '表' : 0xA296, + '滑' : 0xA297, + '反' : 0xA298, + '升' : 0xA299, + '级' : 0xA29A, + '延' : 0xA29B, + '伸' : 0xA29C, + '距' : 0xA29D, + '离' : 0xA29E, + '倍' : 0xA29F, + '套' : 0xA2A0, + '件' : 0xA2A1, + '隔' : 0xA2A2, + '热' : 0xA2A3, + '穿' : 0xA2A4, + '潜' : 0xA2A5, + '服' : 0xA2A6, + '淹' : 0xA2A7, + '死' : 0xA2A8, + '坛' : 0xA2A9, + '充' : 0xA2AA, + '满' : 0xA2AB, + '靴' : 0xA2AC, + '浮' : 0xA2AD, + '悬' : 0xA2AE, + '缺' : 0xA2AF, + '摩' : 0xA2B0, + '擦' : 0xA2B1, + '段' : 0xA2B2, + '勇' : 0xA2B3, + '敢' : 0xA2B4, + '相' : 0xA2B5, + '信' : 0xA2B6, + '超' : 0xA2B7, + '东' : 0xA2B8, + '哥' : 0xA2B9, + '猛' : 0xA2BA, + '龙' : 0xA2BB, + '胃' : 0xA2BC, + '做' : 0xA2BD, + '幸' : 0xA2BE, + '银' : 0xA2BF, + '臂' : 0xA2C0, + '答' : 0xA2C1, + '应' : 0xA2C2, + '遵' : 0xA2C3, + '守' : 0xA2C4, + '诺' : 0xA2C5, + '言' : 0xA2C6, + '金' : 0xA2C7, + '焰' : 0xA2C8, + '入' : 0xA2C9, + '冷' : 0xA2CA, + '艳' : 0xA2CB, + '包' : 0xA2CC, + '钥' : 0xA2CD, + '匙' : 0xA2CE, + '打' : 0xA2CF, + '锁' : 0xA2D0, + '门' : 0xA2D1, + '限' : 0xA2D2, + '于' : 0xA2D3, + '宫' : 0xA2D4, + '内' : 0xA2D5, + '老' : 0xA2D6, + '却' : 0xA2D7, + '驱' : 0xA2D8, + '喝' : 0xA2D9, + '进' : 0xA2DA, + '然' : 0xA2DB, + '域' : 0xA2DC, + '烁' : 0xA2DD, + '当' : 0xA2DE, + '位' : 0xA2DF, + '拨' : 0xA2E0, + '查' : 0xA2E1, + '某' : 0xA2E2, + '层' : 0xA2E3, + '罗' : 0xA2E4, + '盘' : 0xA2E5, + '隐' : 0xA2E6, + '藏' : 0xA2E7, + '振' : 0xA2E8, + '石' : 0xA2E9, + '继' : 0xA2EA, + '续' : 0xA2EB, + '努' : 0xA2EC, + '哇' : 0xA2ED, + '公' : 0xA2EE, + '签' : 0xA2EF, + '临' : 0xA2F0, + '西' : 0xA2F1, + '便' : 0xA2F2, + '箱' : 0xA2F3, + '意' : 0xA2F4, + '惊' : 0xA2F5, + '话' : 0xA2F6, + '左' : 0xA2F7, + '右' : 0xA2F8, + '赌' : 0xA2F9, + '徒' : 0xA2FA, + '值' : 0xA2FB, + '威' : 0xA2FC, + '增' : 0xA2FD, + '冰' : 0xA2FE, + '结' : 0xA2FF, + '授' : 0xA300, + '艰' : 0xA301, + '苦' : 0xA302, + '训' : 0xA303, + '练' : 0xA304, + '该' : 0xA305, + '拥' : 0xA306, + '而' : 0xA307, + '荣' : 0xA308, + '义' : 0xA309, + '邪' : 0xA30A, + '恶' : 0xA30B, + '学' : 0xA30C, + '步' : 0xA30D, + '曲' : 0xA30E, + '烈' : 0xA30F, + '安' : 0xA310, + '影' : 0xA311, + '梦' : 0xA312, + '幻' : 0xA313, + '镯' : 0xA314, + '拔' : 0xA315, + '虫' : 0xA316, + '员' : 0xA317, + '张' : 0xA318, + '据' : 0xA319, + '翡' : 0xA31A, + '翠' : 0xA31B, + '伟' : 0xA31C, + '树' : 0xA31D, + '托' : 0xA31E, + '代' : 0xA31F, + '传' : 0xA320, + '碧' : 0xA321, + '商' : 0xA322, + '讲' : 0xA323, + '妖' : 0xA324, + '婆' : 0xA325, + '堡' : 0xA326, + '男' : 0xA327, + '情' : 0xA328, + '隆' : 0xA329, + '牛' : 0xA32A, + '奶' : 0xA32B, + '营' : 0xA32C, + '养' : 0xA32D, + '排' : 0xA32E, + '销' : 0xA32F, + '售' : 0xA330, + '榜' : 0xA331, + '朋' : 0xA332, + '友' : 0xA333, + '搬' : 0xA334, + '日' : 0xA335, + '客' : 0xA336, + '碰' : 0xA337, + '烧' : 0xA338, + '毁' : 0xA339, + '折' : 0xA33A, + '断' : 0xA33B, + '斗' : 0xA33C, + '习' : 0xA33D, + '骑' : 0xA33E, + '士' : 0xA33F, + '又' : 0xA340, + '承' : 0xA341, + '制' : 0xA342, + '尺' : 0xA343, + '码' : 0xA344, + '护' : 0xA345, + '炙' : 0xA346, + '侵' : 0xA347, + '害' : 0xA348, + '底' : 0xA349, + '溺' : 0xA34A, + '掌' : 0xA34B, + '丁' : 0xA34C, + '妮' : 0xA34D, + '席' : 0xA34E, + '性' : 0xA34F, + '危' : 0xA350, + '往' : 0xA351, + '创' : 0xA352, + '建' : 0xA353, + '娜' : 0xA354, + '产' : 0xA355, + '罩' : 0xA356, + '刚' : 0xA357, + '清' : 0xA358, + '舒' : 0xA359, + '爽' : 0xA35A, + '般' : 0xA35B, + '暂' : 0xA35C, + '脱' : 0xA35D, + '参' : 0xA35E, + '加' : 0xA35F, + '嗯' : 0xA360, + '顾' : 0xA361, + '片' : 0xA362, + '四' : 0xA363, + '整' : 0xA364, + '三' : 0xA365, + '房' : 0xA366, + '干' : 0xA367, + '稍' : 0xA368, + '候' : 0xA369, + '赛' : 0xA36A, + '鳞' : 0xA36B, + '跳' : 0xA36C, + '深' : 0xA36D, + '歌' : 0xA36E, + '伊' : 0xA36F, + '阳' : 0xA370, + '摇' : 0xA371, + '篮' : 0xA372, + '雪' : 0xA373, + '壮' : 0xA374, + '管' : 0xA375, + '术' : 0xA376, + '接' : 0xA377, + '智' : 0xA378, + '慧' : 0xA379, + '气' : 0xA37A, + '疲' : 0xA37B, + '惫' : 0xA37C, + '治' : 0xA37D, + '疗' : 0xA37E, + '伤' : 0xA37F, + '且' : 0xA380, + '硬' : 0xA381, + '技' : 0xA382, + '斩' : 0xA383, + '积' : 0xA384, + '蓄' : 0xA385, + '直' : 0xA386, + '释' : 0xA387, + '转' : 0xA388, + '效' : 0xA389, + '谈' : 0xA38A, + '听' : 0xA38B, + '束' : 0xA38C, + '刻' : 0xA38D, + '注' : 0xA38E, + '嗨' : 0xA38F, + '皇' : 0xA390, + '探' : 0xA391, + '儿' : 0xA392, + '附' : 0xA393, + '近' : 0xA394, + '半' : 0xA395, + '思' : 0xA396, + '仅' : 0xA397, + '燃' : 0xA398, + '紫' : 0xA399, + '价' : 0xA39A, + '高' : 0xA39B, + '百' : 0xA39C, + '索' : 0xA39D, + '何' : 0xA39E, + '输' : 0xA39F, + '虽' : 0xA3A0, + '惜' : 0xA3A1, + '幽' : 0xA3A2, + '妙' : 0xA3A3, + '愿' : 0xA3A4, + '勉' : 0xA3A5, + '网' : 0xA3A6, + '墙' : 0xA3A7, + '布' : 0xA3A8, + '藤' : 0xA3A9, + '蔓' : 0xA3AA, + '平' : 0xA3AB, + '爬' : 0xA3AC, + '屏' : 0xA3AD, + '幕' : 0xA3AE, + '顶' : 0xA3AF, + '端' : 0xA3B0, + '挂' : 0xA3B1, + '旧' : 0xA3B2, + '梯' : 0xA3B3, + '嘿' : 0xA3B4, + '饰' : 0xA3B5, + '熄' : 0xA3B6, + '久' : 0xA3B7, + '通' : 0xA3B8, + '狭' : 0xA3B9, + '路' : 0xA3BA, + '慢' : 0xA3BB, + '躲' : 0xA3BC, + '调' : 0xA3BD, + '视' : 0xA3BE, + '角' : 0xA3BF, + '弯' : 0xA3C0, + '旦' : 0xA3C1, + '侧' : 0xA3C2, + '落' : 0xA3C3, + '块' : 0xA3C4, + '推' : 0xA3C5, + '向' : 0xA3C6, + '兴' : 0xA3C7, + '引' : 0xA3C8, + '爆' : 0xA3C9, + '呢' : 0xA3CA, + '山' : 0xA3CB, + '坑' : 0xA3CC, + '楼' : 0xA3CD, + '绝' : 0xA3CE, + '总' : 0xA3CF, + '巧' : 0xA3D0, + '脸' : 0xA3D1, + '私' : 0xA3D2, + '语' : 0xA3D3, + '足' : 0xA3D4, + '导' : 0xA3D5, + '写' : 0xA3D6, + '险' : 0xA3D7, + '雕' : 0xA3D8, + '流' : 0xA3D9, + '粘' : 0xA3DA, + '浑' : 0xA3DB, + '电' : 0xA3DC, + '尾' : 0xA3DD, + '巴' : 0xA3DE, + '几' : 0xA3DF, + '瞧' : 0xA3E0, + '旗' : 0xA3E1, + '哪' : 0xA3E2, + '召' : 0xA3E3, + '跟' : 0xA3E4, + '拜' : 0xA3E5, + '访' : 0xA3E6, + '牧' : 0xA3E7, + '爸' : 0xA3E8, + '拯' : 0xA3E9, + '窟' : 0xA3EA, + '卜' : 0xA3EB, + '肚' : 0xA3EC, + '白' : 0xA3ED, + '马' : 0xA3EE, + '丢' : 0xA3EF, + '河' : 0xA3F0, + '殿' : 0xA3F1, + '村' : 0xA3F2, + '云' : 0xA3F3, + '吹' : 0xA3F4, + '寒' : 0xA3F5, + '庄' : 0xA3F6, + '谁' : 0xA3F7, + '教' : 0xA3F8, + '沙' : 0xA3F9, + '漠' : 0xA3FA, + '盖' : 0xA3FB, + '侬' : 0xA3FC, + '夫' : 0xA3FD, + '等' : 0xA3FE, + '介' : 0xA3FF, + '联' : 0xA400, + '声' : 0xA401, + '嘻' : 0xA402, + '曾' : 0xA403, + '领' : 0xA404, + '统' : 0xA405, + '疆' : 0xA406, + '怕' : 0xA407, + '鸟' : 0xA408, + '黑' : 0xA409, + '睛' : 0xA40A, + '暴' : 0xA40B, + '雨' : 0xA40C, + '息' : 0xA40D, + '初' : 0xA40E, + '六' : 0xA40F, + '聚' : 0xA410, + '封' : 0xA411, + '印' : 0xA412, + '七' : 0xA413, + '认' : 0xA414, + '识' : 0xA415, + '必' : 0xA416, + '须' : 0xA417, + '未' : 0xA418, + '梭' : 0xA419, + '另' : 0xA41A, + '渡' : 0xA41B, + '船' : 0xA41C, + '乘' : 0xA41D, + '艘' : 0xA41E, + '咯' : 0xA41F, + '扇' : 0xA420, + '许' : 0xA421, + '鬼' : 0xA422, + '板' : 0xA423, + '画' : 0xA424, + '廊' : 0xA425, + '扭' : 0xA426, + '天' : 0xA427, + '味' : 0xA428, + '冻' : 0xA429, + '音' : 0xA42A, + '座' : 0xA42B, + '锈' : 0xA42C, + '漩' : 0xA42D, + '涡' : 0xA42E, + '吞' : 0xA42F, + '嘛' : 0xA430, + '牢' : 0xA431, + '固' : 0xA432, + '殊' : 0xA433, + '静' : 0xA434, + '墓' : 0xA435, + '培' : 0xA436, + '睡' : 0xA437, + '掘' : 0xA438, + '阅' : 0xA439, + '读' : 0xA43A, + '式' : 0xA43B, + '租' : 0xA43C, + '货' : 0xA43D, + '款' : 0xA43E, + '仍' : 0xA43F, + ';' : 0xA440, + '载' : 0xA441, + '贪' : 0xA442, + '婪' : 0xA443, + '仇' : 0xA444, + '恨' : 0xA445, + '血' : 0xA446, + '腥' : 0xA447, + '历' : 0xA448, + '史' : 0xA449, + '诡' : 0xA44A, + '计' : 0xA44B, + '谜' : 0xA44C, + '题' : 0xA44D, + '亡' : 0xA44E, + '闭' : 0xA44F, + '今' : 0xA450, + '业' : 0xA451, + '早' : 0xA452, + '招' : 0xA453, + '聘' : 0xA454, + '兼' : 0xA455, + '职' : 0xA456, + '杂' : 0xA457, + '指' : 0xA458, + '启' : 0xA459, + '遗' : 0xA45A, + '极' : 0xA45B, + '亮' : 0xA45C, + '照' : 0xA45D, + '闯' : 0xA45E, + '穴' : 0xA45F, + '伏' : 0xA460, + '阻' : 0xA461, + '拦' : 0xA462, + '朝' : 0xA463, + '囚' : 0xA464, + '室' : 0xA465, + '贝' : 0xA466, + '泊' : 0xA467, + '泉' : 0xA468, + '黎' : 0xA469, + '童' : 0xA46A, + '纯' : 0xA46B, + '洁' : 0xA46C, + '翻' : 0xA46D, + '嘴' : 0xA46E, + '陷' : 0xA46F, + '野' : 0xA470, + '研' : 0xA471, + '究' : 0xA472, + '考' : 0xA473, + '坏' : 0xA474, + '竟' : 0xA475, + '坐' : 0xA476, + '玛' : 0xA477, + '录' : 0xA478, + '钓' : 0xA479, + '磅' : 0xA47A, + '分' : 0xA47B, + '纹' : 0xA47C, + '誓' : 0xA47D, + '忠' : 0xA47E, + '哈' : 0xA47F, + '眠' : 0xA480, + '瀑' : 0xA481, + '国' : 0xA482, + '务' : 0xA483, + '盯' : 0xA484, + '毯' : 0xA485, + '踩' : 0xA486, + '资' : 0xA487, + '瞎' : 0xA488, + '难' : 0xA489, + '倒' : 0xA48A, + '阱' : 0xA48B, + '塘' : 0xA48C, + '屈' : 0xA48D, + '镇' : 0xA48E, + '径' : 0xA48F, + '窄' : 0xA490, + '慌' : 0xA491, + '允' : 0xA492, + '禁' : 0xA493, + '激' : 0xA494, + '颁' : 0xA495, + '喷' : 0xA496, + '扰' : 0xA497, + '砍' : 0xA498, + '持' : 0xA499, + '草' : 0xA49A, + '泰' : 0xA49B, + '沿' : 0xA49C, + '实' : 0xA49D, + '峡' : 0xA49E, + '谷' : 0xA49F, + '册' : 0xA4A0, + '追' : 0xA4A1, + '赶' : 0xA4A2, + '市' : 0xA4A3, + '蜃' : 0xA4A4, + '崖' : 0xA4A5, + '灼' : 0xA4A6, + '宣' : 0xA4A7, + '疯' : 0xA4A8, + '狂' : 0xA4A9, + '滚' : 0xA4AA, + '伞' : 0xA4AB, + '脚' : 0xA4AC, + '共' : 0xA4AD, + '部' : 0xA4AE, + '免' : 0xA4AF, + '规' : 0xA4B0, + '递' : 0xA4B1, + '登' : 0xA4B2, + '补' : 0xA4B3, + '肉' : 0xA4B4, + '歉' : 0xA4B5, + '刺' : 0xA4B6, + '杀' : 0xA4B7, + '节' : 0xA4B8, + '横' : 0xA4B9, + '纵' : 0xA4BA, + '礼' : 0xA4BB, + '貌' : 0xA4BC, + '米' : 0xA4BD, + '无' : 0xA4BE, + '孪' : 0xA4BF, + '姐' : 0xA4C0, + '妹' : 0xA4C1, + '改' : 0xA4C2, + '池' : 0xA4C3, + '胆' : 0xA4C4, + '跃' : 0xA4C5, + '任' : 0xA4C6, + '句' : 0xA4C7, + '线' : 0xA4C8, + '范' : 0xA4C9, + '逃' : 0xA4CA, + '期' : 0xA4CB, + '待' : 0xA4CC, + '丽' : 0xA4CD, + '问' : 0xA4CE, + '闲' : 0xA4CF, + '泳' : 0xA4D0, + '连' : 0xA4D1, + '北' : 0xA4D2, + '棵' : 0xA4D3, + '锐' : 0xA4D4, + '虑' : 0xA4D5, + '挤' : 0xA4D6, + '障' : 0xA4D7, + '碍' : 0xA4D8, + '盔' : 0xA4D9, + '甲' : 0xA4DA, + '假' : 0xA4DB, + '设' : 0xA4DC, + '温' : 0xA4DD, + '际' : 0xA4DE, + '顽' : 0xA4DF, + '皮' : 0xA4E0, + '姆' : 0xA4E1, + '违' : 0xA4E2, + '盗' : 0xA4E3, + '贼' : 0xA4E4, + '蝴' : 0xA4E5, + '蝶' : 0xA4E6, + '崇' : 0xA4E7, + '象' : 0xA4E8, + '猫' : 0xA4E9, + '鹰' : 0xA4EA, + '凯' : 0xA4EB, + '普' : 0xA4EC, + '・' : 0xA4ED, + '博' : 0xA4EE, + '古' : 0xA4EF, + '化' : 0xA4F0, + '笨' : 0xA4F1, + '朗' : 0xA4F2, + '匹' : 0xA4F3, + '雄' : 0xA4F4, + '赚' : 0xA4F5, + '寄' : 0xA4F6, + '卵' : 0xA4F7, + '幼' : 0xA4F8, + '突' : 0xA4F9, + '袭' : 0xA4FA, + '腹' : 0xA4FB, + '绦' : 0xA4FC, + '食' : 0xA4FD, + '笔' : 0xA4FE, + '竖' : 0xA4FF, + '枯' : 0xA500, + '矮' : 0xA501, + '丛' : 0xA502, + '吃' : 0xA503, + '震' : 0xA504, + '撼' : 0xA505, + '吸' : 0xA506, + '败' : 0xA507, + '蜥' : 0xA508, + '蜴' : 0xA509, + '蝙' : 0xA50A, + '蝠' : 0xA50B, + '否' : 0xA50C, + '则' : 0xA50D, + '阿' : 0xA50E, + '莫' : 0xA50F, + '斯' : 0xA510, + '母' : 0xA511, + '绕' : 0xA512, + '触' : 0xA513, + '傻' : 0xA514, + '遭' : 0xA515, + '汀' : 0xA516, + '幅' : 0xA517, + '敬' : 0xA518, + '诱' : 0xA519, + '泡' : 0xA51A, + '挡' : 0xA51B, + '沃' : 0xA51C, + '衣' : 0xA51D, + '炬' : 0xA51E, + '黏' : 0xA51F, + '背' : 0xA520, + '抵' : 0xA521, + '权' : 0xA522, + '核' : 0xA523, + '挑' : 0xA524, + '壳' : 0xA525, + '肌' : 0xA526, + '缩' : 0xA527, + '邦' : 0xA528, + '苏' : 0xA529, + '透' : 0xA52A, + '僵' : 0xA52B, + '尸' : 0xA52C, + '麻' : 0xA52D, + '痹' : 0xA52E, + '咬' : 0xA52F, + '吉' : 0xA530, + '乃' : 0xA531, + '穷' : 0xA532, + '尽' : 0xA533, + '裂' : 0xA534, + '拢' : 0xA535, + '娃' : 0xA536, + '傀' : 0xA537, + '儡' : 0xA538, + '亲' : 0xA539, + '巫' : 0xA53A, + '低' : 0xA53B, + '骨' : 0xA53C, + '斧' : 0xA53D, + '漏' : 0xA53E, + '莱' : 0xA53F, + '彼' : 0xA540, + '塔' : 0xA541, + '扫' : 0xA542, + '描' : 0xA543, + '烟' : 0xA544, + '蛇' : 0xA545, + '弗' : 0xA546, + '扎' : 0xA547, + '挺' : 0xA548, + '八' : 0xA549, + '爪' : 0xA54A, + '迪' : 0xA54B, + '困' : 0xA54C, + '陆' : 0xA54D, + '嗜' : 0xA54E, + '仙' : 0xA54F, + '狼' : 0xA550, + '懈' : 0xA551, + '贩' : 0xA552, + '麦' : 0xA553, + '判' : 0xA554, + '乔' : 0xA555, + '绽' : 0xA556, + '速' : 0xA557, + '嗄' : 0xA558, + '羞' : 0xA559, + '永' : 0xA55A, + '稻' : 0xA55B, + '终' : 0xA55C, + '薇' : 0xA55D, + '呵' : 0xA55E, + '父' : 0xA55F, + '程' : 0xA560, + '工' : 0xA561, + '存' : 0xA562, + '氛' : 0xA563, + '笼' : 0xA564, + '令' : 0xA565, + '敏' : 0xA566, + '项' : 0xA567, + '欧' : 0xA568, + '谅' : 0xA569, + '众' : 0xA56A, + '悍' : 0xA56B, + '怎' : 0xA56C, + '亏' : 0xA56D, + '掏' : 0xA56E, + '毕' : 0xA56F, + '缓' : 0xA570, + '冲' : 0xA571, + '酷' : 0xA572, + '俯' : 0xA573, + '瞰' : 0xA574, + '哼' : 0xA575, + '蚀' : 0xA576, + '功' : 0xA577, + '糟' : 0xA578, + '呸' : 0xA579, + '黄' : 0xA57A, + '类' : 0xA57B, + '篇' : 0xA57C, + '论' : 0xA57D, + '控' : 0xA57E, + '括' : 0xA57F, + '冒' : 0xA580, + '度' : 0xA581, + '检' : 0xA582, + '单' : 0xA583, + '懂' : 0xA584, + '屋' : 0xA585, + '户' : 0xA586, + '致' : 0xA587, + '腾' : 0xA588, + '模' : 0xA589, + '嗒' : 0xA58A, + '咔' : 0xA58B, + '咋' : 0xA58C, + '萎' : 0xA58D, + '紧' : 0xA58E, + '决' : 0xA58F, + '呆' : 0xA590, + '闷' : 0xA591, + '畏' : 0xA592, + '骗' : 0xA593, + '苗' : 0xA594, + '茁' : 0xA595, + '算' : 0xA596, + '猜' : 0xA597, + '残' : 0xA598, + '妇' : 0xA599, + '婴' : 0xA59A, + '蔽' : 0xA59B, + '唯' : 0xA59C, + '响' : 0xA59D, + '抚' : 0xA59E, + '吵' : 0xA59F, + '境' : 0xA5A0, + '隙' : 0xA5A1, + '逝' : 0xA5A2, + '忆' : 0xA5A3, + '喂' : 0xA5A4, + '辈' : 0xA5A5, + '肩' : 0xA5A6, + '洋' : 0xA5A7, + '溢' : 0xA5A8, + '确' : 0xA5A9, + '迹' : 0xA5AA, + '凝' : 0xA5AB, + '髓' : 0xA5AC, + '混' : 0xA5AD, + '沌' : 0xA5AE, + '降' : 0xA5AF, + '健' : 0xA5B0, + '耕' : 0xA5B1, + '耘' : 0xA5B2, + '星' : 0xA5B3, + '倾' : 0xA5B4, + '沛' : 0xA5B5, + '础' : 0xA5B6, + '堂' : 0xA5B7, + '万' : 0xA5B8, + '宗' : 0xA5B9, + '源' : 0xA5BA, + '本' : 0xA5BB, + '替' : 0xA5BC, + '缝' : 0xA5BD, + '惩' : 0xA5BE, + '罚' : 0xA5BF, + '遇' : 0xA5C0, + '懒' : 0xA5C1, + '惰' : 0xA5C2, + '衷' : 0xA5C3, + '势' : 0xA5C4, + '维' : 0xA5C5, + '秩' : 0xA5C6, + '序' : 0xA5C7, + '抗' : 0xA5C8, + '衡' : 0xA5C9, + '旅' : 0xA5CA, + '顺' : 0xA5CB, + '叛' : 0xA5CC, + '愤' : 0xA5CD, + '辽' : 0xA5CE, + '阔' : 0xA5CF, + '茂' : 0xA5D0, + '称' : 0xA5D1, + '讨' : 0xA5D2, + '厌' : 0xA5D3, + '靶' : 0xA5D4, + '饲' : 0xA5D5, + '求' : 0xA5D6, + '材' : 0xA5D7, + '耶' : 0xA5D8, + '谊' : 0xA5D9, + '噓' : 0xA5DA, + '遍' : 0xA5DB, + '谱' : 0xA5DC, + '议' : 0xA5DD, + '吼' : 0xA5DE, + '薄' : 0xA5DF, + '饶' : 0xA5E0, + '稽' : 0xA5E1, + '齐' : 0xA5E2, + '懦' : 0xA5E3, + '抱' : 0xA5E4, + '千' : 0xA5E5, + '辛' : 0xA5E6, + '漂' : 0xA5E7, + '环' : 0xA5E8, + '配' : 0xA5E9, + '帝' : 0xA5EA, + '焦' : 0xA5EB, + '乎' : 0xA5EC, + '欠' : 0xA5ED, + '驯' : 0xA5EE, + '圈' : 0xA5EF, + '局' : 0xA5F0, + '咩' : 0xA5F1, + '既' : 0xA5F2, + '劳' : 0xA5F3, + '祭' : 0xA5F4, + '伪' : 0xA5F5, + '弃' : 0xA5F6, + '耐' : 0xA5F7, + '岗' : 0xA5F8, + '唔' : 0xA5F9, + '佳' : 0xA5FA, + '搭' : 0xA5FB, + '档' : 0xA5FC, + '负' : 0xA5FD, + '责' : 0xA5FE, + '攀' : 0xA5FF, + '绍' : 0xA600, + '忙' : 0xA601, + '提' : 0xA602, + '缠' : 0xA603, + '唉' : 0xA604, + '亳' : 0xA605, + '毛' : 0xA606, + '笑' : 0xA607, + '欣' : 0xA608, + '赏' : 0xA609, + '怜' : 0xA60A, + '瓜' : 0xA60B, + '奔' : 0xA60C, + '啧' : 0xA60D, + '踢' : 0xA60E, + '志' : 0xA60F, + '宜' : 0xA610, + '仿' : 0xA611, + '楚' : 0xA612, + '挖' : 0xA613, + '由' : 0xA614, + '捕' : 0xA615, + '播' : 0xA616, + '谣' : 0xA617, + '勤' : 0xA618, + '陌' : 0xA619, + '杰' : 0xA61A, + '骏' : 0xA61B, + '鞭' : 0xA61C, + '抽' : 0xA61D, + '享' : 0xA61E, + '栏' : 0xA61F, + '逛' : 0xA620, + '汊' : 0xA621, + '烦' : 0xA622, + '匆' : 0xA623, + '妈' : 0xA624, + '唱' : 0xA625, + '墟' : 0xA626, + '粗' : 0xA627, + '虐' : 0xA628, + '乡' : 0xA629, + '彻' : 0xA62A, + '咕' : 0xA62B, + '哝' : 0xA62C, + '简' : 0xA62D, + '优' : 0xA62E, + '惠' : 0xA62F, + '民' : 0xA630, + '灰' : 0xA631, + '聪' : 0xA632, + '南' : 0xA633, + '澈' : 0xA634, + '卫' : 0xA635, + '熟' : 0xA636, + '悉' : 0xA637, + '故' : 0xA638, + '乌' : 0xA639, + '兆' : 0xA63A, + '企' : 0xA63B, + '抢' : 0xA63C, + '夺' : 0xA63D, + '拼' : 0xA63E, + '粉' : 0xA63F, + '番' : 0xA640, + '群' : 0xA641, + '秒' : 0xA642, + '料' : 0xA643, + '肯' : 0xA644, + '赋' : 0xA645, + '婚' : 0xA646, + '诚' : 0xA647, + '邀' : 0xA648, + '斜' : 0xA649, + '诞' : 0xA64A, + '及' : 0xA64B, + '盛' : 0xA64C, + '典' : 0xA64D, + '拍' : 0xA64E, + '轰' : 0xA64F, + '植' : 0xA650, + '矿' : 0xA651, + '采' : 0xA652, + '阴' : 0xA653, + '罕' : 0xA654, + '昏' : 0xA655, + '压' : 0xA656, + '悦' : 0xA657, + '饿' : 0xA658, + '忍' : 0xA659, + '咳' : 0xA65A, + '弄' : 0xA65B, + '舔' : 0xA65C, + '醉' : 0xA65D, + '怀' : 0xA65E, + '尊' : 0xA65F, + '严' : 0xA660, + '滋' : 0xA661, + '农' : 0xA662, + '饥' : 0xA663, + '沮' : 0xA664, + '丧' : 0xA665, + '奋' : 0xA666, + '省' : 0xA667, + '撑' : 0xA668, + '脑' : 0xA669, + '灯' : 0xA66A, + '隧' : 0xA66B, + '派' : 0xA66C, + '狗' : 0xA66D, + '呜' : 0xA66E, + '咣' : 0xA66F, + '警' : 0xA670, + '挪' : 0xA671, + '窜' : 0xA672, + '峙' : 0xA673, + '含' : 0xA674, + '痛' : 0xA675, + '夸' : 0xA676, + '艺' : 0xA677, + '撒' : 0xA678, + '谎' : 0xA679, + '昨' : 0xA67A, + '炎' : 0xA67B, + '痒' : 0xA67C, + '泪' : 0xA67D, + '稳' : 0xA67E, + '况' : 0xA67F, + '磨' : 0xA680, + '休' : 0xA681, + '柱' : 0xA682, + '敲' : 0xA683, + '油' : 0xA684, + '菜' : 0xA685, + '盟' : 0xA686, + '骄' : 0xA687, + '傲' : 0xA688, + '献' : 0xA689, + '噢' : 0xA68A, + '窒' : 0xA68B, + '医' : 0xA68C, + '甜' : 0xA68D, + '鰓' : 0xA68E, + '恼' : 0xA68F, + '耽' : 0xA690, + '搁' : 0xA691, + '孤' : 0xA692, + '丈' : 0xA693, + '订' : 0xA694, + '戒' : 0xA695, + '贵' : 0xA696, + '财' : 0xA697, + '惹' : 0xA698, + '腐' : 0xA699, + '剂' : 0xA69A, + '融' : 0xA69B, + '厚' : 0xA69C, + '映' : 0xA69D, + '妻' : 0xA69E, + '狠' : 0xA69F, + '泄' : 0xA6A0, + '咿' : 0xA6A1, + '瞒' : 0xA6A2, + '咽' : 0xA6A3, + '恭' : 0xA6A4, + '涨' : 0xA6A5, + '嘎' : 0xA6A6, + '悔' : 0xA6A7, + '犹' : 0xA6A8, + '豫' : 0xA6A9, + '呃' : 0xA6AA, + '糕' : 0xA6AB, + '埃' : 0xA6AC, + '荡' : 0xA6AD, + '漾' : 0xA6AE, + '饵' : 0xA6AF, + '晃' : 0xA6B0, + '约' : 0xA6B1, + '专' : 0xA6B2, + '剔' : 0xA6B3, + '窍' : 0xA6B4, + '.' : 0xA6B5, + '乱' : 0xA6B6, + '甩' : 0xA6B7, + '鳅' : 0xA6B8, + '剧' : 0xA6B9, + '竿' : 0xA6BA, + '杆' : 0xA6BB, + '符' : 0xA6BC, + '呱' : 0xA6BD, + '团' : 0xA6BE, + '饱' : 0xA6BF, + '犯' : 0xA6C0, + '肃' : 0xA6C1, + '啵' : 0xA6C2, + '吟' : 0xA6C3, + '月' : 0xA6C4, + '诗' : 0xA6C5, + '碑' : 0xA6C6, + '奥' : 0xA6C7, + '扬' : 0xA6C8, + '舍' : 0xA6C9, + '副' : 0xA6CA, + '袖' : 0xA6CB, + '夏' : 0xA6CC, + '赖' : 0xA6CD, + '仆' : 0xA6CE, + '摆' : 0xA6CF, + '雇' : 0xA6D0, + '疙' : 0xA6D1, + '瘩' : 0xA6D2, + '居' : 0xA6D3, + '簧' : 0xA6D4, + '车' : 0xA6D5, + '剩' : 0xA6D6, + '玻' : 0xA6D7, + '璃' : 0xA6D8, + '赔' : 0xA6D9, + '欺' : 0xA6DA, + '育' : 0xA6DB, + '珍' : 0xA6DC, + '床' : 0xA6DD, + '蛮' : 0xA6DE, + '啄' : 0xA6DF, + '、' : 0xA6E0, + '稀' : 0xA6E1, + '栋' : 0xA6E2, + '柜' : 0xA6E3, + '鼻' : 0xA6E4, + '厉' : 0xA6E5, + '乏' : 0xA6E6, + '饭' : 0xA6E7, + '胡' : 0xA6E8, + '叮' : 0xA6E9, + '咚' : 0xA6EA, + '兵' : 0xA6EB, + '勃' : 0xA6EC, + '苛' : 0xA6ED, + '薪' : 0xA6EE, + '痴' : 0xA6EF, + '挣' : 0xA6F0, + '馊' : 0xA6F1, + '扑' : 0xA6F2, + '良' : 0xA6F3, + '竭' : 0xA6F4, + '慷' : 0xA6F5, + '慨' : 0xA6F6, + '欲' : 0xA6F7, + '愚' : 0xA6F8, + '蠢' : 0xA6F9, + '嘉' : 0xA6FA, + '监' : 0xA6FB, + '狱' : 0xA6FC, + '喔' : 0xA6FD, + '港' : 0xA6FE, + '逆' : 0xA6FF, + '误' : 0xA700, + '独' : 0xA701, + '划' : 0xA702, + '措' : 0xA703, + '颜' : 0xA704, + '奴' : 0xA705, + '罢' : 0xA706, + '洗' : 0xA707, + '俊' : 0xA708, + '罪' : 0xA709, + '偿' : 0xA70A, + '牺' : 0xA70B, + '牲' : 0xA70C, + '劲' : 0xA70D, + '岁' : 0xA70E, + '恩' : 0xA70F, + '账' : 0xA710, + '珂' : 0xA711, + '艾' : 0xA712, + '组' : 0xA713, + '织' : 0xA714, + '伯' : 0xA715, + '社' : 0xA716, + '架' : 0xA717, + '桥' : 0xA718, + '碟' : 0xA719, + '卑' : 0xA71A, + '鄙' : 0xA71B, + '臭' : 0xA71C, + '占' : 0xA71D, + '讶' : 0xA71E, + '兽' : 0xA71F, + '刷' : 0xA720, + '竞' : 0xA721, + '帐' : 0xA722, + '篷' : 0xA723, + '迟' : 0xA724, + '繁' : 0xA725, + '倦' : 0xA726, + '罐' : 0xA727, + '牌' : 0xA728, + '晨' : 0xA729, + '景' : 0xA72A, + '田' : 0xA72B, + '孔' : 0xA72C, + '钻' : 0xA72D, + '浓' : 0xA72E, + '盒' : 0xA72F, + '溜' : 0xA730, + '街' : 0xA731, + '概' : 0xA732, + '盹' : 0xA733, + '敞' : 0xA734, + '扉' : 0xA735, + '文' : 0xA736, + '撞' : 0xA737, + '姑' : 0xA738, + '娘' : 0xA739, + '糊' : 0xA73A, + '涂' : 0xA73B, + '依' : 0xA73C, + '辐' : 0xA73D, + '微' : 0xA73E, + '汇' : 0xA73F, + '缚' : 0xA740, + '宰' : 0xA741, + '摸' : 0xA742, + '侍' : 0xA743, + '垒' : 0xA744, + '扮' : 0xA745, + '惕' : 0xA746, + '估' : 0xA747, + '执' : 0xA748, + '悲' : 0xA749, + '拖' : 0xA74A, + '累' : 0xA74B, + '弥' : 0xA74C, + '渴' : 0xA74D, + '班' : 0xA74E, + '搞' : 0xA74F, + '谛' : 0xA750, + '哀' : 0xA751, + '圆' : 0xA752, + '鸣' : 0xA753, + '俩' : 0xA754, + '善' : 0xA755, + '塌' : 0xA756, + '埋' : 0xA757, + '孙' : 0xA758, + '凶' : 0xA759, + '聊' : 0xA75A, + '寃' : 0xA75B, + '怨' : 0xA75C, + '购' : 0xA75D, + '涌' : 0xA75E, + '劈' : 0xA75F, + '狐' : 0xA760, + '狸' : 0xA761, + '票' : 0xA762, + '闻' : 0xA763, + '哟' : 0xA764, + '唬' : 0xA765, + '摘' : 0xA766, + '愉' : 0xA767, + '呦' : 0xA768, + '棺' : 0xA769, + '溶' : 0xA76A, + '褐' : 0xA76B, + '肤' : 0xA76C, + '颤' : 0xA76D, + '逗' : 0xA76E, + '娶' : 0xA76F, + '逼' : 0xA770, + '悠' : 0xA771, + '蒙' : 0xA772, + '漆' : 0xA773, + '彩' : 0xA774, + '丰' : 0xA775, +} diff --git a/assets/text/charmap.jpn.txt b/assets/text/charmap.jpn.txt new file mode 100644 index 0000000000..f615e8807f --- /dev/null +++ b/assets/text/charmap.jpn.txt @@ -0,0 +1,20 @@ +# Determines how certain text sequences should be encoded for the JPN text encoding. +{ + '\n' : 0x000A, + + '[A]' : 0x839F, + '[B]' : 0x83A0, + '[C]' : 0x83A1, + '[L]' : 0x83A2, + '[R]' : 0x83A3, + '[Z]' : 0x83A4, + '[C-Up]' : 0x83A5, + '[C-Down]' : 0x83A6, + '[C-Left]' : 0x83A7, + '[C-Right]' : 0x83A8, + '▼' : 0x83A9, + '[Control-Pad]' : 0x83AA, + + # Possibly from a SHIFT-JIS extension, python doesn't have builtin support + '┯' : 0x86D3, +} diff --git a/assets/text/charmap.nes.txt b/assets/text/charmap.nes.txt new file mode 100644 index 0000000000..1dd6445712 --- /dev/null +++ b/assets/text/charmap.nes.txt @@ -0,0 +1,50 @@ +# Determines how certain text sequences should be encoded for the NES text encoding. +{ + '\n' : 0x01, + + '[A]' : 0x9F, + '[B]' : 0xA0, + '[C]' : 0xA1, + '[L]' : 0xA2, + '[R]' : 0xA3, + '[Z]' : 0xA4, + '[C-Up]' : 0xA5, + '[C-Down]' : 0xA6, + '[C-Left]' : 0xA7, + '[C-Right]' : 0xA8, + '▼' : 0xA9, + '[Control-Pad]' : 0xAA, + '[D-Pad]' : 0xAB, + + 'À' : 0x80, + 'î' : 0x81, + 'Â' : 0x82, + 'Ä' : 0x83, + 'Ç' : 0x84, + 'È' : 0x85, + 'É' : 0x86, + 'Ê' : 0x87, + 'Ë' : 0x88, + 'Ï' : 0x89, + 'Ô' : 0x8A, + 'Ö' : 0x8B, + 'Ù' : 0x8C, + 'Û' : 0x8D, + 'Ü' : 0x8E, + 'ß' : 0x8F, + 'à' : 0x90, + 'á' : 0x91, + 'â' : 0x92, + 'ä' : 0x93, + 'ç' : 0x94, + 'è' : 0x95, + 'é' : 0x96, + 'ê' : 0x97, + 'ë' : 0x98, + 'ï' : 0x99, + 'ô' : 0x9A, + 'ö' : 0x9B, + 'ù' : 0x9C, + 'û' : 0x9D, + 'ü' : 0x9E, +} diff --git a/assets/text/charmap.txt b/assets/text/charmap.txt deleted file mode 100644 index 1e7260a7c7..0000000000 --- a/assets/text/charmap.txt +++ /dev/null @@ -1,57 +0,0 @@ -# Determines how certain text sequences should be encoded. The text sequence is -# converted to either the first or second tuple element based on whether the -# target encoding is the "wide" encoding. The first element is for the non-wide -# encoding, used for all languages besides JP, while the second element is for -# the wide encoding, used for JP. -{ - '\n' : (0x01, 0x000A), - - '[A]' : (0x9F, 0x839F), - '[B]' : (0xA0, 0x83A0), - '[C]' : (0xA1, 0x83A1), - '[L]' : (0xA2, 0x83A2), - '[R]' : (0xA3, 0x83A3), - '[Z]' : (0xA4, 0x83A4), - '[C-Up]' : (0xA5, 0x83A5), - '[C-Down]' : (0xA6, 0x83A6), - '[C-Left]' : (0xA7, 0x83A7), - '[C-Right]' : (0xA8, 0x83A8), - '▼' : (0xA9, 0x83A9), - '[Control-Pad]' : (0xAA, 0x83AA), - '[D-Pad]' : (0xAB, None), - - # Possibly from a SHIFT-JIS extension, python doesn't have builtin support - '┯' : (None, 0x86D3), - - 'À' : (0x80, None), - 'î' : (0x81, None), - 'Â' : (0x82, None), - 'Ä' : (0x83, None), - 'Ç' : (0x84, None), - 'È' : (0x85, None), - 'É' : (0x86, None), - 'Ê' : (0x87, None), - 'Ë' : (0x88, None), - 'Ï' : (0x89, None), - 'Ô' : (0x8A, None), - 'Ö' : (0x8B, None), - 'Ù' : (0x8C, None), - 'Û' : (0x8D, None), - 'Ü' : (0x8E, None), - 'ß' : (0x8F, None), - 'à' : (0x90, None), - 'á' : (0x91, None), - 'â' : (0x92, None), - 'ä' : (0x93, None), - 'ç' : (0x94, None), - 'è' : (0x95, None), - 'é' : (0x96, None), - 'ê' : (0x97, None), - 'ë' : (0x98, None), - 'ï' : (0x99, None), - 'ô' : (0x9A, None), - 'ö' : (0x9B, None), - 'ù' : (0x9C, None), - 'û' : (0x9D, None), - 'ü' : (0x9E, None), -} diff --git a/assets/xml/objects/object_mag_ique.xml b/assets/xml/objects/object_mag_ique.xml new file mode 100644 index 0000000000..03b1a8b193 --- /dev/null +++ b/assets/xml/objects/object_mag_ique.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_End_Title_ique.xml b/assets/xml/overlays/ovl_End_Title_ique.xml new file mode 100644 index 0000000000..300448cabf --- /dev/null +++ b/assets/xml/overlays/ovl_End_Title_ique.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/textures/nes_font_static_ique_cn.xml b/assets/xml/textures/nes_font_static_ique_cn.xml new file mode 100644 index 0000000000..484707b05d --- /dev/null +++ b/assets/xml/textures/nes_font_static_ique_cn.xml @@ -0,0 +1,1919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/baseroms/gc-eu-mq-dbg/config.yml b/baseroms/gc-eu-mq-dbg/config.yml index 84a6d3b6c7..09abaaf67a 100644 --- a/baseroms/gc-eu-mq-dbg/config.yml +++ b/baseroms/gc-eu-mq-dbg/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x12F70 -text_lang_pal: true +text_lang: PAL incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-eu-mq/config.yml b/baseroms/gc-eu-mq/config.yml index f29e904e85..62925ab3b4 100644 --- a/baseroms/gc-eu-mq/config.yml +++ b/baseroms/gc-eu-mq/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: true +text_lang: PAL incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-eu/config.yml b/baseroms/gc-eu/config.yml index de1d26194c..278badfb80 100644 --- a/baseroms/gc-eu/config.yml +++ b/baseroms/gc-eu/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: true +text_lang: PAL incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-jp-ce/config.yml b/baseroms/gc-jp-ce/config.yml index 3a3de8c818..f73344d892 100644 --- a/baseroms/gc-jp-ce/config.yml +++ b/baseroms/gc-jp-ce/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-jp-mq/config.yml b/baseroms/gc-jp-mq/config.yml index 6e1ab6b0ef..81927277bd 100644 --- a/baseroms/gc-jp-mq/config.yml +++ b/baseroms/gc-jp-mq/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-jp/config.yml b/baseroms/gc-jp/config.yml index 08df45e6ae..26e407d8c4 100644 --- a/baseroms/gc-jp/config.yml +++ b/baseroms/gc-jp/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-us-mq/config.yml b/baseroms/gc-us-mq/config.yml index df026951f4..77f12ba8bd 100644 --- a/baseroms/gc-us-mq/config.yml +++ b/baseroms/gc-us-mq/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/gc-us/config.yml b/baseroms/gc-us/config.yml index 60050cb7ec..c53cd1841a 100644 --- a/baseroms/gc-us/config.yml +++ b/baseroms/gc-us/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7170 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/ique-cn/checksum-compressed.md5 b/baseroms/ique-cn/checksum-compressed.md5 new file mode 100644 index 0000000000..ba4e5e57bf --- /dev/null +++ b/baseroms/ique-cn/checksum-compressed.md5 @@ -0,0 +1 @@ +0ab48b2d44a74b3bb2d384f6170c2742 build/ique-cn/oot-ique-cn-compressed.z64 diff --git a/baseroms/ique-cn/checksum.md5 b/baseroms/ique-cn/checksum.md5 new file mode 100644 index 0000000000..82dfff85bf --- /dev/null +++ b/baseroms/ique-cn/checksum.md5 @@ -0,0 +1 @@ +17a9f30d722c29e6912bd4b66713d2b0 build/ique-cn/oot-ique-cn.z64 diff --git a/baseroms/ique-cn/config.yml b/baseroms/ique-cn/config.yml new file mode 100644 index 0000000000..86bceb7339 --- /dev/null +++ b/baseroms/ique-cn/config.yml @@ -0,0 +1,1212 @@ +dmadata_start: 0xB7A0 +text_lang: CN +incbins: + - name: ipl3 + segment: makerom + vram: 0x80000040 + size: 0xFC0 + - name: rspbootText + segment: boot + vram: 0x80009C30 + size: 0xD0 + - name: aspMainText + segment: code + vram: 0x800EBF70 + size: 0xFB0 + - name: gspS2DEX2d_fifoText + segment: code + vram: 0x800ECF20 + size: 0x18C0 + - name: njpgdspMainText + segment: code + vram: 0x800EE7E0 + size: 0xAF0 + - name: aspMainData + segment: code + vram: 0x8011FE20 + size: 0x2E0 + - name: gspF3DZEX2_NoN_PosLight_fifoText + segment: code + vram: 0x80120100 + size: 0x1630 + - name: gspF3DZEX2_NoN_PosLight_fifoData + segment: code + vram: 0x80121730 + size: 0x420 + - name: gspS2DEX2d_fifoData + segment: code + vram: 0x80121B50 + size: 0x390 + - name: njpgdspMainData + segment: code + vram: 0x80121EE0 + size: 0x60 +variables: + gMtxClear: 0x80106980 + sJpnMessageEntryTable: 0x80115838 + sNesMessageEntryTable: 0x80119978 + sStaffMessageEntryTable: 0x8011DB98 + gSoundFontTable: 0x8011F280 + gSequenceFontTable: 0x8011F4F0 + gSequenceTable: 0x8011F6B0 + gSampleBankTable: 0x8011FDA0 + sShadowTex: 0x80AE0B10 +assets: +- name: code/fbdemo_circle + xml_path: assets/xml/code/fbdemo_circle.xml + start_offset: 0xEBD88 + end_offset: 0xECFA8 +- name: code/fbdemo_triforce + xml_path: assets/xml/code/fbdemo_triforce.xml + start_offset: 0xEB210 + end_offset: 0xEB2E0 +- name: code/fbdemo_wipe1 + xml_path: assets/xml/code/fbdemo_wipe1.xml + start_offset: 0xEB2E0 + end_offset: 0xEBC70 +- name: misc/link_animetion + xml_path: assets/xml/misc/link_animetion.xml +- name: misc/z_select_static + xml_path: assets/xml/misc/z_select_static.xml +- name: objects/gameplay_dangeon_keep + xml_path: assets/xml/objects/gameplay_dangeon_keep.xml +- name: objects/gameplay_field_keep + xml_path: assets/xml/objects/gameplay_field_keep.xml +- name: objects/gameplay_keep + xml_path: assets/xml/objects/gameplay_keep.xml +- name: objects/object_ahg + xml_path: assets/xml/objects/object_ahg.xml +- name: objects/object_am + xml_path: assets/xml/objects/object_am.xml +- name: objects/object_ane + xml_path: assets/xml/objects/object_ane.xml +- name: objects/object_ani + xml_path: assets/xml/objects/object_ani.xml +- name: objects/object_anubice + xml_path: assets/xml/objects/object_anubice.xml +- name: objects/object_aob + xml_path: assets/xml/objects/object_aob.xml +- name: objects/object_b_heart + xml_path: assets/xml/objects/object_b_heart.xml +- name: objects/object_Bb + xml_path: assets/xml/objects/object_Bb.xml +- name: objects/object_bba + xml_path: assets/xml/objects/object_bba.xml +- name: objects/object_bdan_objects + xml_path: assets/xml/objects/object_bdan_objects.xml +- name: objects/object_bdoor + xml_path: assets/xml/objects/object_bdoor.xml +- name: objects/object_bg + xml_path: assets/xml/objects/object_bg.xml +- name: objects/object_bigokuta + xml_path: assets/xml/objects/object_bigokuta.xml +- name: objects/object_bird + xml_path: assets/xml/objects/object_bird.xml +- name: objects/object_bji + xml_path: assets/xml/objects/object_bji.xml +- name: objects/object_bl + xml_path: assets/xml/objects/object_bl.xml +- name: objects/object_blkobj + xml_path: assets/xml/objects/object_blkobj.xml +- name: objects/object_bob + xml_path: assets/xml/objects/object_bob.xml +- name: objects/object_boj + xml_path: assets/xml/objects/object_boj.xml +- name: objects/object_bombf + xml_path: assets/xml/objects/object_bombf.xml +- name: objects/object_bombiwa + xml_path: assets/xml/objects/object_bombiwa.xml +- name: objects/object_bowl + xml_path: assets/xml/objects/object_bowl.xml +- name: objects/object_box + xml_path: assets/xml/objects/object_box.xml +- name: objects/object_brob + xml_path: assets/xml/objects/object_brob.xml +- name: objects/object_bubble + xml_path: assets/xml/objects/object_bubble.xml +- name: objects/object_bv + xml_path: assets/xml/objects/object_bv.xml +- name: objects/object_bw + xml_path: assets/xml/objects/object_bw.xml +- name: objects/object_bwall + xml_path: assets/xml/objects/object_bwall.xml +- name: objects/object_bxa + xml_path: assets/xml/objects/object_bxa.xml +- name: objects/object_cne + xml_path: assets/xml/objects/object_cne.xml +- name: objects/object_cob + xml_path: assets/xml/objects/object_cob.xml +- name: objects/object_cow + xml_path: assets/xml/objects/object_cow.xml +- name: objects/object_crow + xml_path: assets/xml/objects/object_crow.xml +- name: objects/object_cs + xml_path: assets/xml/objects/object_cs.xml +- name: objects/object_d_elevator + xml_path: assets/xml/objects/object_d_elevator.xml +- name: objects/object_d_hsblock + xml_path: assets/xml/objects/object_d_hsblock.xml +- name: objects/object_d_lift + xml_path: assets/xml/objects/object_d_lift.xml +- name: objects/object_daiku + xml_path: assets/xml/objects/object_daiku.xml +- name: objects/object_ddan_objects + xml_path: assets/xml/objects/object_ddan_objects.xml +- name: objects/object_dekubaba + xml_path: assets/xml/objects/object_dekubaba.xml +- name: objects/object_dekujr + xml_path: assets/xml/objects/object_dekujr.xml +- name: objects/object_dekunuts + xml_path: assets/xml/objects/object_dekunuts.xml +- name: objects/object_demo_6k + xml_path: assets/xml/objects/object_demo_6k.xml +- name: objects/object_demo_kekkai + xml_path: assets/xml/objects/object_demo_kekkai.xml +- name: objects/object_demo_tre_lgt + xml_path: assets/xml/objects/object_demo_tre_lgt.xml +- name: objects/object_dh + xml_path: assets/xml/objects/object_dh.xml +- name: objects/object_dnk + xml_path: assets/xml/objects/object_dnk.xml +- name: objects/object_dns + xml_path: assets/xml/objects/object_dns.xml +- name: objects/object_dodojr + xml_path: assets/xml/objects/object_dodojr.xml +- name: objects/object_dodongo + xml_path: assets/xml/objects/object_dodongo.xml +- name: objects/object_dog + xml_path: assets/xml/objects/object_dog.xml +- name: objects/object_door_gerudo + xml_path: assets/xml/objects/object_door_gerudo.xml +- name: objects/object_door_killer + xml_path: assets/xml/objects/object_door_killer.xml +- name: objects/object_ds + xml_path: assets/xml/objects/object_ds.xml +- name: objects/object_ds2 + xml_path: assets/xml/objects/object_ds2.xml +- name: objects/object_du + xml_path: assets/xml/objects/object_du.xml +- name: objects/object_dy_obj + xml_path: assets/xml/objects/object_dy_obj.xml +- name: objects/object_ec + xml_path: assets/xml/objects/object_ec.xml +- name: objects/object_efc_crystal_light + xml_path: assets/xml/objects/object_efc_crystal_light.xml +- name: objects/object_efc_doughnut + xml_path: assets/xml/objects/object_efc_doughnut.xml +- name: objects/object_efc_erupc + xml_path: assets/xml/objects/object_efc_erupc.xml +- name: objects/object_efc_fire_ball + xml_path: assets/xml/objects/object_efc_fire_ball.xml +- name: objects/object_efc_flash + xml_path: assets/xml/objects/object_efc_flash.xml +- name: objects/object_efc_lgt_shower + xml_path: assets/xml/objects/object_efc_lgt_shower.xml +- name: objects/object_efc_star_field + xml_path: assets/xml/objects/object_efc_star_field.xml +- name: objects/object_efc_tw + xml_path: assets/xml/objects/object_efc_tw.xml +- name: objects/object_ei + xml_path: assets/xml/objects/object_ei.xml +- name: objects/object_fa + xml_path: assets/xml/objects/object_fa.xml +- name: objects/object_fd + xml_path: assets/xml/objects/object_fd.xml +- name: objects/object_fd2 + xml_path: assets/xml/objects/object_fd2.xml +- name: objects/object_fhg + xml_path: assets/xml/objects/object_fhg.xml +- name: objects/object_fire + xml_path: assets/xml/objects/object_fire.xml +- name: objects/object_firefly + xml_path: assets/xml/objects/object_firefly.xml +- name: objects/object_fish + xml_path: assets/xml/objects/object_fish.xml +- name: objects/object_fr + xml_path: assets/xml/objects/object_fr.xml +- name: objects/object_fu + xml_path: assets/xml/objects/object_fu.xml +- name: objects/object_fw + xml_path: assets/xml/objects/object_fw.xml +- name: objects/object_fz + xml_path: assets/xml/objects/object_fz.xml +- name: objects/object_ganon + xml_path: assets/xml/objects/object_ganon.xml +- name: objects/object_ganon2 + xml_path: assets/xml/objects/object_ganon2.xml +- name: objects/object_ganon_anime1 + xml_path: assets/xml/objects/object_ganon_anime1.xml +- name: objects/object_ganon_anime2 + xml_path: assets/xml/objects/object_ganon_anime2.xml +- name: objects/object_ganon_anime3 + xml_path: assets/xml/objects/object_ganon_anime3.xml +- name: objects/object_ganon_objects + xml_path: assets/xml/objects/object_ganon_objects.xml +- name: objects/object_ge1 + xml_path: assets/xml/objects/object_ge1.xml +- name: objects/object_geff + xml_path: assets/xml/objects/object_geff.xml +- name: objects/object_geldb + xml_path: assets/xml/objects/object_geldb.xml +- name: objects/object_gi_arrow + xml_path: assets/xml/objects/object_gi_arrow.xml +- name: objects/object_gi_arrowcase + xml_path: assets/xml/objects/object_gi_arrowcase.xml +- name: objects/object_gi_bean + xml_path: assets/xml/objects/object_gi_bean.xml +- name: objects/object_gi_bomb_1 + xml_path: assets/xml/objects/object_gi_bomb_1.xml +- name: objects/object_gi_bomb_2 + xml_path: assets/xml/objects/object_gi_bomb_2.xml +- name: objects/object_gi_bombpouch + xml_path: assets/xml/objects/object_gi_bombpouch.xml +- name: objects/object_gi_boomerang + xml_path: assets/xml/objects/object_gi_boomerang.xml +- name: objects/object_gi_boots_2 + xml_path: assets/xml/objects/object_gi_boots_2.xml +- name: objects/object_gi_bosskey + xml_path: assets/xml/objects/object_gi_bosskey.xml +- name: objects/object_gi_bottle + xml_path: assets/xml/objects/object_gi_bottle.xml +- name: objects/object_gi_bottle_letter + xml_path: assets/xml/objects/object_gi_bottle_letter.xml +- name: objects/object_gi_bow + xml_path: assets/xml/objects/object_gi_bow.xml +- name: objects/object_gi_bracelet + xml_path: assets/xml/objects/object_gi_bracelet.xml +- name: objects/object_gi_brokensword + xml_path: assets/xml/objects/object_gi_brokensword.xml +- name: objects/object_gi_butterfly + xml_path: assets/xml/objects/object_gi_butterfly.xml +- name: objects/object_gi_clothes + xml_path: assets/xml/objects/object_gi_clothes.xml +- name: objects/object_gi_coin + xml_path: assets/xml/objects/object_gi_coin.xml +- name: objects/object_gi_compass + xml_path: assets/xml/objects/object_gi_compass.xml +- name: objects/object_gi_dekupouch + xml_path: assets/xml/objects/object_gi_dekupouch.xml +- name: objects/object_gi_egg + xml_path: assets/xml/objects/object_gi_egg.xml +- name: objects/object_gi_eye_lotion + xml_path: assets/xml/objects/object_gi_eye_lotion.xml +- name: objects/object_gi_fire + xml_path: assets/xml/objects/object_gi_fire.xml +- name: objects/object_gi_fish + xml_path: assets/xml/objects/object_gi_fish.xml +- name: objects/object_gi_frog + xml_path: assets/xml/objects/object_gi_frog.xml +- name: objects/object_gi_gerudo + xml_path: assets/xml/objects/object_gi_gerudo.xml +- name: objects/object_gi_gerudomask + xml_path: assets/xml/objects/object_gi_gerudomask.xml +- name: objects/object_gi_ghost + xml_path: assets/xml/objects/object_gi_ghost.xml +- name: objects/object_gi_glasses + xml_path: assets/xml/objects/object_gi_glasses.xml +- name: objects/object_gi_gloves + xml_path: assets/xml/objects/object_gi_gloves.xml +- name: objects/object_gi_goddess + xml_path: assets/xml/objects/object_gi_goddess.xml +- name: objects/object_gi_golonmask + xml_path: assets/xml/objects/object_gi_golonmask.xml +- name: objects/object_gi_grass + xml_path: assets/xml/objects/object_gi_grass.xml +- name: objects/object_gi_hammer + xml_path: assets/xml/objects/object_gi_hammer.xml +- name: objects/object_gi_heart + xml_path: assets/xml/objects/object_gi_heart.xml +- name: objects/object_gi_hearts + xml_path: assets/xml/objects/object_gi_hearts.xml +- name: objects/object_gi_hookshot + xml_path: assets/xml/objects/object_gi_hookshot.xml +- name: objects/object_gi_hoverboots + xml_path: assets/xml/objects/object_gi_hoverboots.xml +- name: objects/object_gi_insect + xml_path: assets/xml/objects/object_gi_insect.xml +- name: objects/object_gi_jewel + xml_path: assets/xml/objects/object_gi_jewel.xml +- name: objects/object_gi_key + xml_path: assets/xml/objects/object_gi_key.xml +- name: objects/object_gi_ki_tan_mask + xml_path: assets/xml/objects/object_gi_ki_tan_mask.xml +- name: objects/object_gi_letter + xml_path: assets/xml/objects/object_gi_letter.xml +- name: objects/object_gi_liquid + xml_path: assets/xml/objects/object_gi_liquid.xml +- name: objects/object_gi_longsword + xml_path: assets/xml/objects/object_gi_longsword.xml +- name: objects/object_gi_m_arrow + xml_path: assets/xml/objects/object_gi_m_arrow.xml +- name: objects/object_gi_magicpot + xml_path: assets/xml/objects/object_gi_magicpot.xml +- name: objects/object_gi_map + xml_path: assets/xml/objects/object_gi_map.xml +- name: objects/object_gi_medal + xml_path: assets/xml/objects/object_gi_medal.xml +- name: objects/object_gi_melody + xml_path: assets/xml/objects/object_gi_melody.xml +- name: objects/object_gi_milk + xml_path: assets/xml/objects/object_gi_milk.xml +- name: objects/object_gi_mushroom + xml_path: assets/xml/objects/object_gi_mushroom.xml +- name: objects/object_gi_niwatori + xml_path: assets/xml/objects/object_gi_niwatori.xml +- name: objects/object_gi_nuts + xml_path: assets/xml/objects/object_gi_nuts.xml +- name: objects/object_gi_ocarina + xml_path: assets/xml/objects/object_gi_ocarina.xml +- name: objects/object_gi_ocarina_0 + xml_path: assets/xml/objects/object_gi_ocarina_0.xml +- name: objects/object_gi_pachinko + xml_path: assets/xml/objects/object_gi_pachinko.xml +- name: objects/object_gi_powder + xml_path: assets/xml/objects/object_gi_powder.xml +- name: objects/object_gi_prescription + xml_path: assets/xml/objects/object_gi_prescription.xml +- name: objects/object_gi_purse + xml_path: assets/xml/objects/object_gi_purse.xml +- name: objects/object_gi_rabit_mask + xml_path: assets/xml/objects/object_gi_rabit_mask.xml +- name: objects/object_gi_redead_mask + xml_path: assets/xml/objects/object_gi_redead_mask.xml +- name: objects/object_gi_rupy + xml_path: assets/xml/objects/object_gi_rupy.xml +- name: objects/object_gi_saw + xml_path: assets/xml/objects/object_gi_saw.xml +- name: objects/object_gi_scale + xml_path: assets/xml/objects/object_gi_scale.xml +- name: objects/object_gi_seed + xml_path: assets/xml/objects/object_gi_seed.xml +- name: objects/object_gi_shield_1 + xml_path: assets/xml/objects/object_gi_shield_1.xml +- name: objects/object_gi_shield_2 + xml_path: assets/xml/objects/object_gi_shield_2.xml +- name: objects/object_gi_shield_3 + xml_path: assets/xml/objects/object_gi_shield_3.xml +- name: objects/object_gi_skj_mask + xml_path: assets/xml/objects/object_gi_skj_mask.xml +- name: objects/object_gi_soldout + xml_path: assets/xml/objects/object_gi_soldout.xml +- name: objects/object_gi_soul + xml_path: assets/xml/objects/object_gi_soul.xml +- name: objects/object_gi_stick + xml_path: assets/xml/objects/object_gi_stick.xml +- name: objects/object_gi_sutaru + xml_path: assets/xml/objects/object_gi_sutaru.xml +- name: objects/object_gi_sword_1 + xml_path: assets/xml/objects/object_gi_sword_1.xml +- name: objects/object_gi_ticketstone + xml_path: assets/xml/objects/object_gi_ticketstone.xml +- name: objects/object_gi_truth_mask + xml_path: assets/xml/objects/object_gi_truth_mask.xml +- name: objects/object_gi_zoramask + xml_path: assets/xml/objects/object_gi_zoramask.xml +- name: objects/object_gj + xml_path: assets/xml/objects/object_gj.xml +- name: objects/object_gjyo_objects + xml_path: assets/xml/objects/object_gjyo_objects.xml +- name: objects/object_gla + xml_path: assets/xml/objects/object_gla.xml +- name: objects/object_gm + xml_path: assets/xml/objects/object_gm.xml +- name: objects/object_gnd + xml_path: assets/xml/objects/object_gnd.xml +- name: objects/object_gnd_magic + xml_path: assets/xml/objects/object_gnd_magic.xml +- name: objects/object_gndd + xml_path: assets/xml/objects/object_gndd.xml +- name: objects/object_god_lgt + xml_path: assets/xml/objects/object_god_lgt.xml +- name: objects/object_gol + xml_path: assets/xml/objects/object_gol.xml +- name: objects/object_goma + xml_path: assets/xml/objects/object_goma.xml +- name: objects/object_goroiwa + xml_path: assets/xml/objects/object_goroiwa.xml +- name: objects/object_gr + xml_path: assets/xml/objects/object_gr.xml +- name: objects/object_gs + xml_path: assets/xml/objects/object_gs.xml +- name: objects/object_gt + xml_path: assets/xml/objects/object_gt.xml +- name: objects/object_haka + xml_path: assets/xml/objects/object_haka.xml +- name: objects/object_haka_door + xml_path: assets/xml/objects/object_haka_door.xml +- name: objects/object_haka_objects + xml_path: assets/xml/objects/object_haka_objects.xml +- name: objects/object_hakach_objects + xml_path: assets/xml/objects/object_hakach_objects.xml +- name: objects/object_hata + xml_path: assets/xml/objects/object_hata.xml +- name: objects/object_heavy_object + xml_path: assets/xml/objects/object_heavy_object.xml +- name: objects/object_hidan_objects + xml_path: assets/xml/objects/object_hidan_objects.xml +- name: objects/object_hintnuts + xml_path: assets/xml/objects/object_hintnuts.xml +- name: objects/object_hni + xml_path: assets/xml/objects/object_hni.xml +- name: objects/object_horse + xml_path: assets/xml/objects/object_horse.xml +- name: objects/object_horse_ganon + xml_path: assets/xml/objects/object_horse_ganon.xml +- name: objects/object_horse_link_child + xml_path: assets/xml/objects/object_horse_link_child.xml +- name: objects/object_horse_normal + xml_path: assets/xml/objects/object_horse_normal.xml +- name: objects/object_horse_zelda + xml_path: assets/xml/objects/object_horse_zelda.xml +- name: objects/object_hs + xml_path: assets/xml/objects/object_hs.xml +- name: objects/object_human + xml_path: assets/xml/objects/object_human.xml +- name: objects/object_ice_objects + xml_path: assets/xml/objects/object_ice_objects.xml +- name: objects/object_ik + xml_path: assets/xml/objects/object_ik.xml +- name: objects/object_im + xml_path: assets/xml/objects/object_im.xml +- name: objects/object_in + xml_path: assets/xml/objects/object_in.xml +- name: objects/object_ingate + xml_path: assets/xml/objects/object_ingate.xml +- name: objects/object_jj + xml_path: assets/xml/objects/object_jj.xml +- name: objects/object_js + xml_path: assets/xml/objects/object_js.xml +- name: objects/object_jya_door + xml_path: assets/xml/objects/object_jya_door.xml +- name: objects/object_jya_iron + xml_path: assets/xml/objects/object_jya_iron.xml +- name: objects/object_jya_obj + xml_path: assets/xml/objects/object_jya_obj.xml +- name: objects/object_ka + xml_path: assets/xml/objects/object_ka.xml +- name: objects/object_kanban + xml_path: assets/xml/objects/object_kanban.xml +- name: objects/object_kibako2 + xml_path: assets/xml/objects/object_kibako2.xml +- name: objects/object_kingdodongo + xml_path: assets/xml/objects/object_kingdodongo.xml +- name: objects/object_km1 + xml_path: assets/xml/objects/object_km1.xml +- name: objects/object_kusa + xml_path: assets/xml/objects/object_kusa.xml +- name: objects/object_kw1 + xml_path: assets/xml/objects/object_kw1.xml +- name: objects/object_kz + xml_path: assets/xml/objects/object_kz.xml +- name: objects/object_light_ring + xml_path: assets/xml/objects/object_light_ring.xml +- name: objects/object_lightbox + xml_path: assets/xml/objects/object_lightbox.xml +- name: objects/object_lightswitch + xml_path: assets/xml/objects/object_lightswitch.xml +- name: objects/object_link_boy + xml_path: assets/xml/objects/object_link_boy.xml +- name: objects/object_link_child + xml_path: assets/xml/objects/object_link_child.xml +- name: objects/object_ma1 + xml_path: assets/xml/objects/object_ma1.xml +- name: objects/object_ma2 + xml_path: assets/xml/objects/object_ma2.xml +- name: objects/object_mag + xml_path: assets/xml/objects/object_mag_ique.xml +- name: objects/object_mamenoki + xml_path: assets/xml/objects/object_mamenoki.xml +- name: objects/object_mastergolon + xml_path: assets/xml/objects/object_mastergolon.xml +- name: objects/object_masterkokiri + xml_path: assets/xml/objects/object_masterkokiri.xml +- name: objects/object_masterkokirihead + xml_path: assets/xml/objects/object_masterkokirihead.xml +- name: objects/object_masterzoora + xml_path: assets/xml/objects/object_masterzoora.xml +- name: objects/object_mb + xml_path: assets/xml/objects/object_mb.xml +- name: objects/object_md + xml_path: assets/xml/objects/object_md.xml +- name: objects/object_medal + xml_path: assets/xml/objects/object_medal.xml +- name: objects/object_menkuri_objects + xml_path: assets/xml/objects/object_menkuri_objects.xml +- name: objects/object_mir_ray + xml_path: assets/xml/objects/object_mir_ray.xml +- name: objects/object_mizu_objects + xml_path: assets/xml/objects/object_mizu_objects.xml +- name: objects/object_mjin + xml_path: assets/xml/objects/object_mjin.xml +- name: objects/object_mjin_dark + xml_path: assets/xml/objects/object_mjin_dark.xml +- name: objects/object_mjin_flame + xml_path: assets/xml/objects/object_mjin_flame.xml +- name: objects/object_mjin_flash + xml_path: assets/xml/objects/object_mjin_flash.xml +- name: objects/object_mjin_ice + xml_path: assets/xml/objects/object_mjin_ice.xml +- name: objects/object_mjin_oka + xml_path: assets/xml/objects/object_mjin_oka.xml +- name: objects/object_mjin_soul + xml_path: assets/xml/objects/object_mjin_soul.xml +- name: objects/object_mjin_wind + xml_path: assets/xml/objects/object_mjin_wind.xml +- name: objects/object_mk + xml_path: assets/xml/objects/object_mk.xml +- name: objects/object_mm + xml_path: assets/xml/objects/object_mm.xml +- name: objects/object_mo + xml_path: assets/xml/objects/object_mo.xml +- name: objects/object_mori_hineri1 + xml_path: assets/xml/objects/object_mori_hineri1.xml +- name: objects/object_mori_hineri1a + xml_path: assets/xml/objects/object_mori_hineri1a.xml +- name: objects/object_mori_hineri2 + xml_path: assets/xml/objects/object_mori_hineri2.xml +- name: objects/object_mori_hineri2a + xml_path: assets/xml/objects/object_mori_hineri2a.xml +- name: objects/object_mori_objects + xml_path: assets/xml/objects/object_mori_objects.xml +- name: objects/object_mori_tex + xml_path: assets/xml/objects/object_mori_tex.xml +- name: objects/object_ms + xml_path: assets/xml/objects/object_ms.xml +- name: objects/object_mu + xml_path: assets/xml/objects/object_mu.xml +- name: objects/object_nb + xml_path: assets/xml/objects/object_nb.xml +- name: objects/object_niw + xml_path: assets/xml/objects/object_niw.xml +- name: objects/object_nwc + xml_path: assets/xml/objects/object_nwc.xml +- name: objects/object_ny + xml_path: assets/xml/objects/object_ny.xml +- name: objects/object_o_anime + xml_path: assets/xml/objects/object_o_anime.xml +- name: objects/object_oA1 + xml_path: assets/xml/objects/object_oA1.xml +- name: objects/object_oA2 + xml_path: assets/xml/objects/object_oA2.xml +- name: objects/object_oA3 + xml_path: assets/xml/objects/object_oA3.xml +- name: objects/object_oA4 + xml_path: assets/xml/objects/object_oA4.xml +- name: objects/object_oA5 + xml_path: assets/xml/objects/object_oA5.xml +- name: objects/object_oA6 + xml_path: assets/xml/objects/object_oA6.xml +- name: objects/object_oA7 + xml_path: assets/xml/objects/object_oA7.xml +- name: objects/object_oA8 + xml_path: assets/xml/objects/object_oA8.xml +- name: objects/object_oA9 + xml_path: assets/xml/objects/object_oA9.xml +- name: objects/object_oA10 + xml_path: assets/xml/objects/object_oA10.xml +- name: objects/object_oA11 + xml_path: assets/xml/objects/object_oA11.xml +- name: objects/object_oB1 + xml_path: assets/xml/objects/object_oB1.xml +- name: objects/object_oB2 + xml_path: assets/xml/objects/object_oB2.xml +- name: objects/object_oB3 + xml_path: assets/xml/objects/object_oB3.xml +- name: objects/object_oB4 + xml_path: assets/xml/objects/object_oB4.xml +- name: objects/object_oE1 + xml_path: assets/xml/objects/object_oE1.xml +- name: objects/object_oE1s + xml_path: assets/xml/objects/object_oE1s.xml +- name: objects/object_oE2 + xml_path: assets/xml/objects/object_oE2.xml +- name: objects/object_oE3 + xml_path: assets/xml/objects/object_oE3.xml +- name: objects/object_oE4 + xml_path: assets/xml/objects/object_oE4.xml +- name: objects/object_oE4s + xml_path: assets/xml/objects/object_oE4s.xml +- name: objects/object_oE5 + xml_path: assets/xml/objects/object_oE5.xml +- name: objects/object_oE6 + xml_path: assets/xml/objects/object_oE6.xml +- name: objects/object_oE7 + xml_path: assets/xml/objects/object_oE7.xml +- name: objects/object_oE8 + xml_path: assets/xml/objects/object_oE8.xml +- name: objects/object_oE9 + xml_path: assets/xml/objects/object_oE9.xml +- name: objects/object_oE10 + xml_path: assets/xml/objects/object_oE10.xml +- name: objects/object_oE11 + xml_path: assets/xml/objects/object_oE11.xml +- name: objects/object_oE12 + xml_path: assets/xml/objects/object_oE12.xml +- name: objects/object_oE_anime + xml_path: assets/xml/objects/object_oE_anime.xml +- name: objects/object_oF1d_map + xml_path: assets/xml/objects/object_oF1d_map.xml +- name: objects/object_oF1s + xml_path: assets/xml/objects/object_oF1s.xml +- name: objects/object_okuta + xml_path: assets/xml/objects/object_okuta.xml +- name: objects/object_opening_demo1 + xml_path: assets/xml/objects/object_opening_demo1.xml +- name: objects/object_os + xml_path: assets/xml/objects/object_os.xml +- name: objects/object_os_anime + xml_path: assets/xml/objects/object_os_anime.xml +- name: objects/object_ossan + xml_path: assets/xml/objects/object_ossan.xml +- name: objects/object_ouke_haka + xml_path: assets/xml/objects/object_ouke_haka.xml +- name: objects/object_owl + xml_path: assets/xml/objects/object_owl.xml +- name: objects/object_peehat + xml_path: assets/xml/objects/object_peehat.xml +- name: objects/object_po_composer + xml_path: assets/xml/objects/object_po_composer.xml +- name: objects/object_po_field + xml_path: assets/xml/objects/object_po_field.xml +- name: objects/object_po_sisters + xml_path: assets/xml/objects/object_po_sisters.xml +- name: objects/object_poh + xml_path: assets/xml/objects/object_poh.xml +- name: objects/object_ps + xml_path: assets/xml/objects/object_ps.xml +- name: objects/object_pu_box + xml_path: assets/xml/objects/object_pu_box.xml +- name: objects/object_rd + xml_path: assets/xml/objects/object_rd.xml +- name: objects/object_reeba + xml_path: assets/xml/objects/object_reeba.xml +- name: objects/object_relay_objects + xml_path: assets/xml/objects/object_relay_objects.xml +- name: objects/object_rl + xml_path: assets/xml/objects/object_rl.xml +- name: objects/object_rr + xml_path: assets/xml/objects/object_rr.xml +- name: objects/object_rs + xml_path: assets/xml/objects/object_rs.xml +- name: objects/object_ru1 + xml_path: assets/xml/objects/object_ru1.xml +- name: objects/object_ru2 + xml_path: assets/xml/objects/object_ru2.xml +- name: objects/object_sa + xml_path: assets/xml/objects/object_sa.xml +- name: objects/object_sb + xml_path: assets/xml/objects/object_sb.xml +- name: objects/object_sd + xml_path: assets/xml/objects/object_sd.xml +- name: objects/object_shop_dungen + xml_path: assets/xml/objects/object_shop_dungen.xml +- name: objects/object_shopnuts + xml_path: assets/xml/objects/object_shopnuts.xml +- name: objects/object_siofuki + xml_path: assets/xml/objects/object_siofuki.xml +- name: objects/object_sk2 + xml_path: assets/xml/objects/object_sk2.xml +- name: objects/object_skb + xml_path: assets/xml/objects/object_skb.xml +- name: objects/object_skj + xml_path: assets/xml/objects/object_skj.xml +- name: objects/object_spot00_break + xml_path: assets/xml/objects/object_spot00_break.xml +- name: objects/object_spot00_objects + xml_path: assets/xml/objects/object_spot00_objects.xml +- name: objects/object_spot01_matoya + xml_path: assets/xml/objects/object_spot01_matoya.xml +- name: objects/object_spot01_matoyab + xml_path: assets/xml/objects/object_spot01_matoyab.xml +- name: objects/object_spot01_objects + xml_path: assets/xml/objects/object_spot01_objects.xml +- name: objects/object_spot01_objects2 + xml_path: assets/xml/objects/object_spot01_objects2.xml +- name: objects/object_spot02_objects + xml_path: assets/xml/objects/object_spot02_objects.xml +- name: objects/object_spot03_object + xml_path: assets/xml/objects/object_spot03_object.xml +- name: objects/object_spot04_objects + xml_path: assets/xml/objects/object_spot04_objects.xml +- name: objects/object_spot05_objects + xml_path: assets/xml/objects/object_spot05_objects.xml +- name: objects/object_spot06_objects + xml_path: assets/xml/objects/object_spot06_objects.xml +- name: objects/object_spot07_object + xml_path: assets/xml/objects/object_spot07_object.xml +- name: objects/object_spot08_obj + xml_path: assets/xml/objects/object_spot08_obj.xml +- name: objects/object_spot09_obj + xml_path: assets/xml/objects/object_spot09_obj.xml +- name: objects/object_spot11_obj + xml_path: assets/xml/objects/object_spot11_obj.xml +- name: objects/object_spot12_obj + xml_path: assets/xml/objects/object_spot12_obj.xml +- name: objects/object_spot15_obj + xml_path: assets/xml/objects/object_spot15_obj.xml +- name: objects/object_spot16_obj + xml_path: assets/xml/objects/object_spot16_obj.xml +- name: objects/object_spot17_obj + xml_path: assets/xml/objects/object_spot17_obj.xml +- name: objects/object_spot18_obj + xml_path: assets/xml/objects/object_spot18_obj.xml +- name: objects/object_ssh + xml_path: assets/xml/objects/object_ssh.xml +- name: objects/object_sst + xml_path: assets/xml/objects/object_sst.xml +- name: objects/object_st + xml_path: assets/xml/objects/object_st.xml +- name: objects/object_stream + xml_path: assets/xml/objects/object_stream.xml +- name: objects/object_syokudai + xml_path: assets/xml/objects/object_syokudai.xml +- name: objects/object_ta + xml_path: assets/xml/objects/object_ta.xml +- name: objects/object_timeblock + xml_path: assets/xml/objects/object_timeblock.xml +- name: objects/object_tite + xml_path: assets/xml/objects/object_tite.xml +- name: objects/object_tk + xml_path: assets/xml/objects/object_tk.xml +- name: objects/object_toki_objects + xml_path: assets/xml/objects/object_toki_objects.xml +- name: objects/object_torch2 + xml_path: assets/xml/objects/object_torch2.xml +- name: objects/object_toryo + xml_path: assets/xml/objects/object_toryo.xml +- name: objects/object_tp + xml_path: assets/xml/objects/object_tp.xml +- name: objects/object_tr + xml_path: assets/xml/objects/object_tr.xml +- name: objects/object_trap + xml_path: assets/xml/objects/object_trap.xml +- name: objects/object_triforce_spot + xml_path: assets/xml/objects/object_triforce_spot.xml +- name: objects/object_ts + xml_path: assets/xml/objects/object_ts.xml +- name: objects/object_tsubo + xml_path: assets/xml/objects/object_tsubo.xml +- name: objects/object_tw + xml_path: assets/xml/objects/object_tw.xml +- name: objects/object_umajump + xml_path: assets/xml/objects/object_umajump.xml +- name: objects/object_vali + xml_path: assets/xml/objects/object_vali.xml +- name: objects/object_vase + xml_path: assets/xml/objects/object_vase.xml +- name: objects/object_vm + xml_path: assets/xml/objects/object_vm.xml +- name: objects/object_wallmaster + xml_path: assets/xml/objects/object_wallmaster.xml +- name: objects/object_warp1 + xml_path: assets/xml/objects/object_warp1.xml +- name: objects/object_warp2 + xml_path: assets/xml/objects/object_warp2.xml +- name: objects/object_wf + xml_path: assets/xml/objects/object_wf.xml +- name: objects/object_wood02 + xml_path: assets/xml/objects/object_wood02.xml +- name: objects/object_xc + xml_path: assets/xml/objects/object_xc.xml +- name: objects/object_yabusame_point + xml_path: assets/xml/objects/object_yabusame_point.xml +- name: objects/object_ydan_objects + xml_path: assets/xml/objects/object_ydan_objects.xml +- name: objects/object_yukabyun + xml_path: assets/xml/objects/object_yukabyun.xml +- name: objects/object_zf + xml_path: assets/xml/objects/object_zf.xml +- name: objects/object_zg + xml_path: assets/xml/objects/object_zg.xml +- name: objects/object_zl1 + xml_path: assets/xml/objects/object_zl1.xml +- name: objects/object_zl2 + xml_path: assets/xml/objects/object_zl2.xml +- name: objects/object_zl2_anime1 + xml_path: assets/xml/objects/object_zl2_anime1.xml +- name: objects/object_zl2_anime2 + xml_path: assets/xml/objects/object_zl2_anime2.xml +- name: objects/object_zl4 + xml_path: assets/xml/objects/object_zl4.xml +- name: objects/object_zo + xml_path: assets/xml/objects/object_zo.xml +- name: overlays/ovl_Arrow_Fire + xml_path: assets/xml/overlays/ovl_Arrow_Fire.xml + start_offset: 0x980 + end_offset: 0x1DA0 +- name: overlays/ovl_Arrow_Ice + xml_path: assets/xml/overlays/ovl_Arrow_Ice.xml + start_offset: 0x9A0 + end_offset: 0x1DC0 +- name: overlays/ovl_Arrow_Light + xml_path: assets/xml/overlays/ovl_Arrow_Light.xml + start_offset: 0x9B0 + end_offset: 0x1DD0 +- name: overlays/ovl_Bg_Ganon_Otyuka + xml_path: assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml + start_offset: 0x1100 + end_offset: 0x24DC +- name: overlays/ovl_Bg_Jya_Cobra + xml_path: assets/xml/overlays/ovl_Bg_Jya_Cobra.xml + start_offset: 0x1850 + end_offset: 0x18C8 +- name: overlays/ovl_Boss_Dodongo + xml_path: assets/xml/overlays/ovl_Boss_Dodongo.xml + start_offset: 0x61E8 + end_offset: 0x91E8 +- name: overlays/ovl_Boss_Ganon + xml_path: assets/xml/overlays/ovl_Boss_Ganon.xml + start_offset: 0xE3C8 + end_offset: 0x20EE8 +- name: overlays/ovl_Boss_Ganon2 + xml_path: assets/xml/overlays/ovl_Boss_Ganon2.xml + start_offset: 0x9F88 + end_offset: 0x10438 +- name: overlays/ovl_Boss_Sst + xml_path: assets/xml/overlays/ovl_Boss_Sst.xml + start_offset: 0xA380 + end_offset: 0xAD30 +- name: overlays/ovl_Demo_Shd + xml_path: assets/xml/overlays/ovl_Demo_Shd.xml + start_offset: 0x410 + end_offset: 0x2390 +- name: overlays/ovl_Effect_Ss_Fhg_Flash + xml_path: assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml + start_offset: 0x9F0 + end_offset: 0xEA8 +- name: overlays/ovl_En_Bili + xml_path: assets/xml/overlays/ovl_En_Bili.xml + start_offset: 0x1E40 + end_offset: 0x1E60 +- name: overlays/ovl_En_Clear_Tag + xml_path: assets/xml/overlays/ovl_En_Clear_Tag.xml + start_offset: 0x2600 + end_offset: 0x8900 +- name: overlays/ovl_En_Ganon_Mant + xml_path: assets/xml/overlays/ovl_En_Ganon_Mant.xml + start_offset: 0x11F8 + end_offset: 0x40F8 +- name: overlays/ovl_En_Ganon_Organ + xml_path: assets/xml/overlays/ovl_En_Ganon_Organ.xml + start_offset: 0x368 + end_offset: 0x6EF0 +- name: overlays/ovl_En_Holl + xml_path: assets/xml/overlays/ovl_En_Holl.xml + start_offset: 0xE68 + end_offset: 0xED0 +- name: overlays/ovl_En_Jsjutan + xml_path: assets/xml/overlays/ovl_En_Jsjutan.xml + start_offset: 0x12C8 + end_offset: 0x4C60 +- name: overlays/ovl_En_Kanban + xml_path: assets/xml/overlays/ovl_En_Kanban.xml + start_offset: 0x2E70 + end_offset: 0x2F30 +- name: overlays/ovl_En_Sda + xml_path: assets/xml/overlays/ovl_En_Sda.xml + start_offset: 0x1498 + end_offset: 0x1528 +- name: overlays/ovl_En_Ssh + xml_path: assets/xml/overlays/ovl_En_Ssh.xml + start_offset: 0x2150 + end_offset: 0x21E0 +- name: overlays/ovl_En_St + xml_path: assets/xml/overlays/ovl_En_St.xml + start_offset: 0x26A0 + end_offset: 0x2730 +- name: overlays/ovl_En_Sth + xml_path: assets/xml/overlays/ovl_En_Sth.xml + start_offset: 0xE70 + end_offset: 0x3E44 +- name: overlays/ovl_End_Title + xml_path: assets/xml/overlays/ovl_End_Title_ique.xml + start_offset: 0x750 + end_offset: 0x59D0 +- name: overlays/ovl_file_choose + xml_path: assets/xml/overlays/ovl_file_choose.xml + start_offset: 0xEC40 + end_offset: 0xF320 +- name: overlays/ovl_Magic_Dark + xml_path: assets/xml/overlays/ovl_Magic_Dark.xml + start_offset: 0xC90 + end_offset: 0x16C0 +- name: overlays/ovl_Magic_Fire + xml_path: assets/xml/overlays/ovl_Magic_Fire.xml + start_offset: 0xB50 + end_offset: 0x21A0 +- name: overlays/ovl_Magic_Wind + xml_path: assets/xml/overlays/ovl_Magic_Wind.xml + start_offset: 0x6A0 + end_offset: 0x1BB8 +- name: overlays/ovl_Oceff_Spot + xml_path: assets/xml/overlays/ovl_Oceff_Spot.xml + start_offset: 0x780 + end_offset: 0xE58 +- name: overlays/ovl_Oceff_Storm + xml_path: assets/xml/overlays/ovl_Oceff_Storm.xml + start_offset: 0x750 + end_offset: 0x1AE0 +- name: overlays/ovl_Oceff_Wipe + xml_path: assets/xml/overlays/ovl_Oceff_Wipe.xml + start_offset: 0x520 + end_offset: 0xCE0 +- name: overlays/ovl_Oceff_Wipe2 + xml_path: assets/xml/overlays/ovl_Oceff_Wipe2.xml + start_offset: 0x430 + end_offset: 0x1698 +- name: overlays/ovl_Oceff_Wipe3 + xml_path: assets/xml/overlays/ovl_Oceff_Wipe3.xml + start_offset: 0x430 + end_offset: 0x1678 +- name: overlays/ovl_Oceff_Wipe4 + xml_path: assets/xml/overlays/ovl_Oceff_Wipe4.xml + start_offset: 0x410 + end_offset: 0xEF8 +- name: scenes/dungeons/bdan + xml_path: assets/xml/scenes/dungeons/bdan.xml +- name: scenes/dungeons/bdan_boss + xml_path: assets/xml/scenes/dungeons/bdan_boss.xml +- name: scenes/dungeons/Bmori1 + xml_path: assets/xml/scenes/dungeons/Bmori1.xml +- name: scenes/dungeons/ddan + xml_path: assets/xml/scenes/dungeons/ddan.xml +- name: scenes/dungeons/ddan_boss + xml_path: assets/xml/scenes/dungeons/ddan_boss_v2.xml +- name: scenes/dungeons/FIRE_bs + xml_path: assets/xml/scenes/dungeons/FIRE_bs.xml +- name: scenes/dungeons/ganon + xml_path: assets/xml/scenes/dungeons/ganon.xml +- name: scenes/dungeons/ganon_boss + xml_path: assets/xml/scenes/dungeons/ganon_boss.xml +- name: scenes/dungeons/ganon_demo + xml_path: assets/xml/scenes/dungeons/ganon_demo.xml +- name: scenes/dungeons/ganon_final + xml_path: assets/xml/scenes/dungeons/ganon_final.xml +- name: scenes/dungeons/ganon_sonogo + xml_path: assets/xml/scenes/dungeons/ganon_sonogo.xml +- name: scenes/dungeons/ganontika + xml_path: assets/xml/scenes/dungeons/ganontika.xml +- name: scenes/dungeons/ganontikasonogo + xml_path: assets/xml/scenes/dungeons/ganontikasonogo.xml +- name: scenes/dungeons/gerudoway + xml_path: assets/xml/scenes/dungeons/gerudoway.xml +- name: scenes/dungeons/HAKAdan + xml_path: assets/xml/scenes/dungeons/HAKAdan.xml +- name: scenes/dungeons/HAKAdan_bs + xml_path: assets/xml/scenes/dungeons/HAKAdan_bs.xml +- name: scenes/dungeons/HAKAdanCH + xml_path: assets/xml/scenes/dungeons/HAKAdanCH.xml +- name: scenes/dungeons/HIDAN + xml_path: assets/xml/scenes/dungeons/HIDAN.xml +- name: scenes/dungeons/ice_doukutu + xml_path: assets/xml/scenes/dungeons/ice_doukutu_v2.xml +- name: scenes/dungeons/jyasinboss + xml_path: assets/xml/scenes/dungeons/jyasinboss.xml +- name: scenes/dungeons/jyasinzou + xml_path: assets/xml/scenes/dungeons/jyasinzou.xml +- name: scenes/dungeons/men + xml_path: assets/xml/scenes/dungeons/men.xml +- name: scenes/dungeons/MIZUsin + xml_path: assets/xml/scenes/dungeons/MIZUsin.xml +- name: scenes/dungeons/MIZUsin_bs + xml_path: assets/xml/scenes/dungeons/MIZUsin_bs.xml +- name: scenes/dungeons/moribossroom + xml_path: assets/xml/scenes/dungeons/moribossroom.xml +- name: scenes/dungeons/ydan + xml_path: assets/xml/scenes/dungeons/ydan.xml +- name: scenes/dungeons/ydan_boss + xml_path: assets/xml/scenes/dungeons/ydan_boss.xml +- name: scenes/indoors/bowling + xml_path: assets/xml/scenes/indoors/bowling.xml +- name: scenes/indoors/daiyousei_izumi + xml_path: assets/xml/scenes/indoors/daiyousei_izumi.xml +- name: scenes/indoors/hairal_niwa + xml_path: assets/xml/scenes/indoors/hairal_niwa.xml +- name: scenes/indoors/hairal_niwa_n + xml_path: assets/xml/scenes/indoors/hairal_niwa_n.xml +- name: scenes/indoors/hakasitarelay + xml_path: assets/xml/scenes/indoors/hakasitarelay.xml +- name: scenes/indoors/hut + xml_path: assets/xml/scenes/indoors/hut.xml +- name: scenes/indoors/hylia_labo + xml_path: assets/xml/scenes/indoors/hylia_labo.xml +- name: scenes/indoors/impa + xml_path: assets/xml/scenes/indoors/impa.xml +- name: scenes/indoors/kakariko + xml_path: assets/xml/scenes/indoors/kakariko.xml +- name: scenes/indoors/kenjyanoma + xml_path: assets/xml/scenes/indoors/kenjyanoma.xml +- name: scenes/indoors/kokiri_home + xml_path: assets/xml/scenes/indoors/kokiri_home.xml +- name: scenes/indoors/kokiri_home3 + xml_path: assets/xml/scenes/indoors/kokiri_home3.xml +- name: scenes/indoors/kokiri_home4 + xml_path: assets/xml/scenes/indoors/kokiri_home4.xml +- name: scenes/indoors/kokiri_home5 + xml_path: assets/xml/scenes/indoors/kokiri_home5.xml +- name: scenes/indoors/labo + xml_path: assets/xml/scenes/indoors/labo.xml +- name: scenes/indoors/link_home + xml_path: assets/xml/scenes/indoors/link_home.xml +- name: scenes/indoors/mahouya + xml_path: assets/xml/scenes/indoors/mahouya.xml +- name: scenes/indoors/malon_stable + xml_path: assets/xml/scenes/indoors/malon_stable.xml +- name: scenes/indoors/miharigoya + xml_path: assets/xml/scenes/indoors/miharigoya.xml +- name: scenes/indoors/nakaniwa + xml_path: assets/xml/scenes/indoors/nakaniwa.xml +- name: scenes/indoors/souko + xml_path: assets/xml/scenes/indoors/souko.xml +- name: scenes/indoors/syatekijyou + xml_path: assets/xml/scenes/indoors/syatekijyou.xml +- name: scenes/indoors/takaraya + xml_path: assets/xml/scenes/indoors/takaraya.xml +- name: scenes/indoors/tent + xml_path: assets/xml/scenes/indoors/tent.xml +- name: scenes/indoors/tokinoma + xml_path: assets/xml/scenes/indoors/tokinoma.xml +- name: scenes/indoors/yousei_izumi_tate + xml_path: assets/xml/scenes/indoors/yousei_izumi_tate.xml +- name: scenes/indoors/yousei_izumi_yoko + xml_path: assets/xml/scenes/indoors/yousei_izumi_yoko.xml +- name: scenes/misc/enrui + xml_path: assets/xml/scenes/misc/enrui.xml +- name: scenes/misc/entra + xml_path: assets/xml/scenes/misc/entra.xml +- name: scenes/misc/entra_n + xml_path: assets/xml/scenes/misc/entra_n.xml +- name: scenes/misc/hakaana + xml_path: assets/xml/scenes/misc/hakaana.xml +- name: scenes/misc/hakaana2 + xml_path: assets/xml/scenes/misc/hakaana2.xml +- name: scenes/misc/hakaana_ouke + xml_path: assets/xml/scenes/misc/hakaana_ouke.xml +- name: scenes/misc/hiral_demo + xml_path: assets/xml/scenes/misc/hiral_demo.xml +- name: scenes/misc/kakariko3 + xml_path: assets/xml/scenes/misc/kakariko3.xml +- name: scenes/misc/kakusiana + xml_path: assets/xml/scenes/misc/kakusiana.xml +- name: scenes/misc/kinsuta + xml_path: assets/xml/scenes/misc/kinsuta.xml +- name: scenes/misc/market_alley + xml_path: assets/xml/scenes/misc/market_alley.xml +- name: scenes/misc/market_alley_n + xml_path: assets/xml/scenes/misc/market_alley_n.xml +- name: scenes/misc/market_day + xml_path: assets/xml/scenes/misc/market_day.xml +- name: scenes/misc/market_night + xml_path: assets/xml/scenes/misc/market_night.xml +- name: scenes/misc/market_ruins + xml_path: assets/xml/scenes/misc/market_ruins.xml +- name: scenes/misc/shrine + xml_path: assets/xml/scenes/misc/shrine.xml +- name: scenes/misc/shrine_n + xml_path: assets/xml/scenes/misc/shrine_n.xml +- name: scenes/misc/shrine_r + xml_path: assets/xml/scenes/misc/shrine_r.xml +- name: scenes/misc/turibori + xml_path: assets/xml/scenes/misc/turibori.xml +- name: scenes/overworld/ganon_tou + xml_path: assets/xml/scenes/overworld/ganon_tou.xml +- name: scenes/overworld/spot00 + xml_path: assets/xml/scenes/overworld/spot00.xml +- name: scenes/overworld/spot01 + xml_path: assets/xml/scenes/overworld/spot01.xml +- name: scenes/overworld/spot02 + xml_path: assets/xml/scenes/overworld/spot02.xml +- name: scenes/overworld/spot03 + xml_path: assets/xml/scenes/overworld/spot03.xml +- name: scenes/overworld/spot04 + xml_path: assets/xml/scenes/overworld/spot04.xml +- name: scenes/overworld/spot05 + xml_path: assets/xml/scenes/overworld/spot05.xml +- name: scenes/overworld/spot06 + xml_path: assets/xml/scenes/overworld/spot06.xml +- name: scenes/overworld/spot07 + xml_path: assets/xml/scenes/overworld/spot07.xml +- name: scenes/overworld/spot08 + xml_path: assets/xml/scenes/overworld/spot08.xml +- name: scenes/overworld/spot09 + xml_path: assets/xml/scenes/overworld/spot09.xml +- name: scenes/overworld/spot10 + xml_path: assets/xml/scenes/overworld/spot10.xml +- name: scenes/overworld/spot11 + xml_path: assets/xml/scenes/overworld/spot11.xml +- name: scenes/overworld/spot12 + xml_path: assets/xml/scenes/overworld/spot12.xml +- name: scenes/overworld/spot13 + xml_path: assets/xml/scenes/overworld/spot13.xml +- name: scenes/overworld/spot15 + xml_path: assets/xml/scenes/overworld/spot15.xml +- name: scenes/overworld/spot16 + xml_path: assets/xml/scenes/overworld/spot16_v2.xml +- name: scenes/overworld/spot17 + xml_path: assets/xml/scenes/overworld/spot17.xml +- name: scenes/overworld/spot18 + xml_path: assets/xml/scenes/overworld/spot18.xml +- name: scenes/overworld/spot20 + xml_path: assets/xml/scenes/overworld/spot20.xml +- name: scenes/shops/alley_shop + xml_path: assets/xml/scenes/shops/alley_shop.xml +- name: scenes/shops/drag + xml_path: assets/xml/scenes/shops/drag.xml +- name: scenes/shops/face_shop + xml_path: assets/xml/scenes/shops/face_shop.xml +- name: scenes/shops/golon + xml_path: assets/xml/scenes/shops/golon.xml +- name: scenes/shops/kokiri_shop + xml_path: assets/xml/scenes/shops/kokiri_shop.xml +- name: scenes/shops/night_shop + xml_path: assets/xml/scenes/shops/night_shop.xml +- name: scenes/shops/shop1 + xml_path: assets/xml/scenes/shops/shop1.xml +- name: scenes/shops/zoora + xml_path: assets/xml/scenes/shops/zoora.xml +- name: textures/backgrounds + xml_path: assets/xml/textures/backgrounds.xml +- name: textures/do_action_static + xml_path: assets/xml/textures/do_action_static.xml +- name: textures/icon_item_24_static + xml_path: assets/xml/textures/icon_item_24_static.xml +- name: textures/icon_item_dungeon_static + xml_path: assets/xml/textures/icon_item_dungeon_static.xml +- name: textures/icon_item_field_static + xml_path: assets/xml/textures/icon_item_field_static.xml +- name: textures/icon_item_gameover_static + xml_path: assets/xml/textures/icon_item_gameover_static.xml +- name: textures/icon_item_jpn_static + xml_path: assets/xml/textures/icon_item_jpn_static.xml +- name: textures/icon_item_nes_static + xml_path: assets/xml/textures/icon_item_nes_static.xml +- name: textures/icon_item_static + xml_path: assets/xml/textures/icon_item_static.xml +- name: textures/item_name_static + xml_path: assets/xml/textures/item_name_static.xml +- name: textures/kanji + xml_path: assets/xml/textures/kanji.xml +- name: textures/map_48x85_static + xml_path: assets/xml/textures/map_48x85_static.xml +- name: textures/map_grand_static + xml_path: assets/xml/textures/map_grand_static.xml +- name: textures/map_i_static + xml_path: assets/xml/textures/map_i_static.xml +- name: textures/map_name_static + xml_path: assets/xml/textures/map_name_static.xml +- name: textures/message_static + xml_path: assets/xml/textures/message_static.xml +- name: textures/message_texture_static + xml_path: assets/xml/textures/message_texture_static.xml +- name: textures/nes_font_static + xml_path: assets/xml/textures/nes_font_static_ique_cn.xml +- name: textures/nintendo_rogo_static + xml_path: assets/xml/textures/nintendo_rogo_static_v2.xml +- name: textures/parameter_static + xml_path: assets/xml/textures/parameter_static.xml +- name: textures/place_title_cards + xml_path: assets/xml/textures/place_title_cards.xml +- name: textures/skyboxes + xml_path: assets/xml/textures/skyboxes.xml +- name: textures/title_static + xml_path: assets/xml/textures/title_static.xml diff --git a/baseroms/ique-cn/segments.csv b/baseroms/ique-cn/segments.csv new file mode 100644 index 0000000000..e06853b6c2 --- /dev/null +++ b/baseroms/ique-cn/segments.csv @@ -0,0 +1,1510 @@ +Name,VRAM start +makerom,80000000 +boot,80000450 +dmadata, +Audiobank, +Audioseq, +Audiotable, +kanji, +link_animetion, +icon_item_static, +icon_item_24_static, +icon_item_field_static, +icon_item_dungeon_static, +icon_item_gameover_static, +icon_item_jpn_static, +icon_item_nes_static, +item_name_static, +map_name_static, +do_action_static, +message_static, +message_texture_static, +nes_font_static, +jpn_message_data_static, +nes_message_data_static, +staff_message_data_static, +map_grand_static, +map_48x85_static, +map_i_static, +code,80018FA0 +ovl_title,80800000 +ovl_select,80800930 +ovl_opening,808035B0 +ovl_file_choose,80803700 +ovl_kaleido_scope,808141F0 +ovl_player_actor,80830290 +ovl_map_mark_data,80856A70 +ovl_En_Test,8085D5D0 +ovl_En_GirlA,80862E80 +ovl_En_Part,808657A0 +ovl_En_Light,80866E00 +ovl_En_Door,80867C00 +ovl_En_Box,80868A40 +ovl_En_Poh,8086A5A0 +ovl_En_Okuta,8086E790 +ovl_En_Bom,80870D70 +ovl_En_Wallmas,80871C40 +ovl_En_Dodongo,80873650 +ovl_En_Firefly,808763F0 +ovl_En_Horse,80878560 +ovl_En_Arrow,808847C0 +ovl_En_Elf,80885EC0 +ovl_En_Niw,8088A880 +ovl_En_Tite,8088DBB0 +ovl_En_Reeba,80890950 +ovl_En_Peehat,808923C0 +ovl_En_Holl,80895AC0 +ovl_En_Scene_Change,80896A90 +ovl_En_Zf,80896BC0 +ovl_En_Hata,8089D6B0 +ovl_Boss_Dodongo,8089DC40 +ovl_Boss_Goma,808A7740 +ovl_En_Zl1,808AD6E0 +ovl_En_Viewer,808B14F0 +ovl_En_Goma,808B43B0 +ovl_Bg_Pushbox,808B7060 +ovl_En_Bubble,808B7360 +ovl_Door_Shutter,808B8780 +ovl_En_Dodojr,808BAA40 +ovl_En_Bdfire,808BC8E0 +ovl_En_Boom,808BD480 +ovl_En_Torch2,808BDD50 +ovl_En_Bili,808C04F0 +ovl_En_Tp,808C27C0 +ovl_En_St,808C4630 +ovl_En_Bw,808C72A0 +ovl_En_Eiyer,808CA630 +ovl_En_River_Sound,808CC290 +ovl_En_Horse_Normal,808CCC20 +ovl_En_Ossan,808CF240 +ovl_Bg_Treemouth,808D5820 +ovl_Bg_Dodoago,808D6E80 +ovl_Bg_Hidan_Dalm,808D7C30 +ovl_Bg_Hidan_Hrock,808D8480 +ovl_En_Horse_Ganon,808D8CB0 +ovl_Bg_Hidan_Rock,808D9A30 +ovl_Bg_Hidan_Rsekizou,808DAB30 +ovl_Bg_Hidan_Sekizou,808DB710 +ovl_Bg_Hidan_Sima,808DCB60 +ovl_Bg_Hidan_Syoku,808DDA60 +ovl_En_Xc,808DDEC0 +ovl_Bg_Hidan_Curtain,808E4650 +ovl_Bg_Spot00_Hanebasi,808E50F0 +ovl_En_Mb,808E6200 +ovl_En_Bombf,808EA430 +ovl_Bg_Hidan_Firewall,808EB8C0 +ovl_Bg_Dy_Yoseizo,808EC020 +ovl_En_Zl2,808EEE10 +ovl_Bg_Hidan_Fslift,808F3510 +ovl_En_OE2,808F39E0 +ovl_Bg_Ydan_Hasi,808F3AC0 +ovl_Bg_Ydan_Maruta,808F4270 +ovl_Boss_Ganondrof,808F4950 +ovl_En_Am,808F96E0 +ovl_En_Dekubaba,808FBAE0 +ovl_En_M_Fire1,808FF590 +ovl_En_M_Thunder,808FF730 +ovl_Bg_Ddan_Jd,80900D30 +ovl_Bg_Breakwall,80901380 +ovl_En_Jj,809021F0 +ovl_En_Horse_Zelda,809037C0 +ovl_Bg_Ddan_Kd,809042B0 +ovl_Door_Warp1,80904BA0 +ovl_Obj_Syokudai,80908EB0 +ovl_Item_B_Heart,80909B00 +ovl_En_Dekunuts,80909F10 +ovl_Bg_Menkuri_Kaiten,8090B710 +ovl_Bg_Menkuri_Eye,8090B8A0 +ovl_En_Vali,8090BD40 +ovl_Bg_Mizu_Movebg,8090E400 +ovl_Bg_Mizu_Water,8090F590 +ovl_Arms_Hook,80910260 +ovl_En_fHG,80910FD0 +ovl_Bg_Mori_Hineri,80913900 +ovl_En_Bb,80914650 +ovl_Bg_Toki_Hikari,80918330 +ovl_En_Yukabyun,809190D0 +ovl_Bg_Toki_Swd,809196E0 +ovl_En_Fhg_Fire,8091AD30 +ovl_Bg_Mjin,8091D3D0 +ovl_Bg_Hidan_Kousi,8091D7C0 +ovl_Door_Toki,8091DD50 +ovl_Bg_Hidan_Hamstep,8091DEB0 +ovl_En_Bird,8091ED60 +ovl_En_Wood02,8091F220 +ovl_En_Lightbox,80920400 +ovl_En_Pu_box,80920880 +ovl_En_Trap,80920BC0 +ovl_En_Arow_Trap,80921E60 +ovl_En_Vase,80921FB0 +ovl_En_Ta,809220B0 +ovl_En_Tk,80925A70 +ovl_Bg_Mori_Bigst,809278A0 +ovl_Bg_Mori_Elevator,809281D0 +ovl_Bg_Mori_Kaitenkabe,80928CC0 +ovl_Bg_Mori_Rakkatenjo,80929330 +ovl_En_Vm,80929CB0 +ovl_Demo_Effect,8092B570 +ovl_Demo_Kankyo,80931110 +ovl_Bg_Hidan_Fwbig,80934E00 +ovl_En_Floormas,80935AE0 +ovl_En_Heishi1,80938EC0 +ovl_En_Rd,8093A3D0 +ovl_En_Po_Sisters,8093CC90 +ovl_Bg_Heavy_Block,80941980 +ovl_Bg_Po_Event,80943270 +ovl_Obj_Mure,809450B0 +ovl_En_Sw,809460C0 +ovl_Boss_Fd,809498B0 +ovl_Object_Kankyo,80950C10 +ovl_En_Du,80953E90 +ovl_En_Fd,80955920 +ovl_En_Horse_Link_Child,809585C0 +ovl_Door_Ana,8095A3C0 +ovl_Bg_Spot02_Objects,8095AA30 +ovl_Bg_Haka,8095BD90 +ovl_Magic_Wind,8095C450 +ovl_Magic_Fire,8095E150 +ovl_En_Ru1,80960450 +ovl_Boss_Fd2,80967AF0 +ovl_En_Fd_Fire,8096B820 +ovl_En_Dh,8096C530 +ovl_En_Dha,8096E010 +ovl_En_Rl,8096F010 +ovl_En_Encount1,8096FEF0 +ovl_Demo_Du,80970A50 +ovl_Demo_Im,80974230 +ovl_Demo_Tre_Lgt,809781A0 +ovl_En_Fw,809788B0 +ovl_Bg_Vb_Sima,8097A070 +ovl_En_Vb_Ball,8097A790 +ovl_Bg_Haka_Megane,8097B940 +ovl_Bg_Haka_MeganeBG,8097BD40 +ovl_Bg_Haka_Ship,8097C400 +ovl_Bg_Haka_Sgami,8097CE50 +ovl_En_Heishi2,8097DA70 +ovl_En_Encount2,8097FC70 +ovl_En_Fire_Rock,80980EA0 +ovl_En_Brob,80981FB0 +ovl_Mir_Ray,809830A0 +ovl_Bg_Spot09_Obj,80984950 +ovl_Bg_Spot18_Obj,80984E70 +ovl_Boss_Va,80985740 +ovl_Bg_Haka_Tubo,8099C9D0 +ovl_Bg_Haka_Trap,8099D3F0 +ovl_Bg_Haka_Huta,8099E9C0 +ovl_Bg_Haka_Zou,8099F460 +ovl_Bg_Spot17_Funen,809A0650 +ovl_En_Syateki_Itm,809A08A0 +ovl_En_Syateki_Man,809A1640 +ovl_En_Tana,809A2400 +ovl_En_Nb,809A26B0 +ovl_Boss_Mo,809A6C80 +ovl_En_Sb,809B7260 +ovl_En_Bigokuta,809B86A0 +ovl_En_Karebaba,809BB1A0 +ovl_Bg_Bdan_Objects,809BCA90 +ovl_Demo_Sa,809BDD60 +ovl_Demo_Go,809C0880 +ovl_En_In,809C15D0 +ovl_En_Tr,809C4370 +ovl_Bg_Spot16_Bombstone,809C5C70 +ovl_Bg_Hidan_Kowarerukabe,809C71C0 +ovl_Bg_Bombwall,809C80A0 +ovl_En_Ru2,809C8960 +ovl_Obj_Dekujr,809CB6E0 +ovl_Bg_Mizu_Uzu,809CBD20 +ovl_Bg_Spot06_Objects,809CBEF0 +ovl_Bg_Ice_Objects,809CD2F0 +ovl_Bg_Haka_Water,809CE230 +ovl_En_Ma2,809CEA30 +ovl_En_Bom_Chu,809CFA90 +ovl_En_Horse_Game_Check,809D1130 +ovl_Boss_Tw,809D2200 +ovl_En_Rr,809E7DD0 +ovl_En_Ba,809EA300 +ovl_En_Bx,809EC1D0 +ovl_En_Anubice,809ECCD0 +ovl_En_Anubice_Fire,809EDF80 +ovl_Bg_Mori_Hashigo,809EED40 +ovl_Bg_Mori_Hashira4,809EF600 +ovl_Bg_Mori_Idomizu,809EFB90 +ovl_Bg_Spot16_Doughnut,809F01D0 +ovl_Bg_Bdan_Switch,809F0790 +ovl_En_Ma1,809F1BC0 +ovl_Boss_Ganon,809F2EA0 +ovl_Boss_Sst,80A18CD0 +ovl_En_Ny,80A252A0 +ovl_En_Fr,80A26BE0 +ovl_Item_Shield,80A29670 +ovl_Bg_Ice_Shelter,80A2A080 +ovl_En_Ice_Hono,80A2B2C0 +ovl_Item_Ocarina,80A2C4B0 +ovl_Magic_Dark,80A2CC80 +ovl_Demo_6K,80A2E4D0 +ovl_En_Anubice_Tag,80A31230 +ovl_Bg_Haka_Gate,80A31500 +ovl_Bg_Spot15_Saku,80A325A0 +ovl_Bg_Jya_Goroiwa,80A328E0 +ovl_Bg_Jya_Zurerukabe,80A33060 +ovl_Bg_Jya_Cobra,80A33710 +ovl_Bg_Jya_Kanaami,80A35450 +ovl_Fishing,80A35800 +ovl_Obj_Oshihiki,80A4ED40 +ovl_Bg_Gate_Shutter,80A507F0 +ovl_Eff_Dust,80A50C80 +ovl_Bg_Spot01_Fusya,80A52050 +ovl_Bg_Spot01_Idohashira,80A522F0 +ovl_Bg_Spot01_Idomizu,80A52EF0 +ovl_Bg_Po_Syokudai,80A53210 +ovl_Bg_Ganon_Otyuka,80A53B80 +ovl_Bg_Spot15_Rrbox,80A561C0 +ovl_Bg_Umajump,80A56FA0 +ovl_En_Insect,80A57130 +ovl_En_Butte,80A59650 +ovl_En_Fish,80A5AC20 +ovl_Bg_Spot08_Iceblock,80A5CD30 +ovl_Item_Etcetera,80A5DD70 +ovl_Arrow_Fire,80A5E640 +ovl_Arrow_Ice,80A60520 +ovl_Arrow_Light,80A62420 +ovl_Obj_Kibako,80A64330 +ovl_Obj_Tsubo,80A65030 +ovl_En_Wonder_Item,80A66020 +ovl_En_Ik,80A66D50 +ovl_Demo_Ik,80A6B3B0 +ovl_En_Skj,80A6C8C0 +ovl_En_Skjneedle,80A70210 +ovl_En_G_Switch,80A70520 +ovl_Demo_Ext,80A71D40 +ovl_Demo_Shd,80A72690 +ovl_En_Dns,80A74AA0 +ovl_Elf_Msg,80A75E30 +ovl_En_Honotrap,80A76420 +ovl_En_Tubo_Trap,80A77980 +ovl_Obj_Ice_Poly,80A78620 +ovl_Bg_Spot03_Taki,80A78FD0 +ovl_Bg_Spot07_Taki,80A798F0 +ovl_En_Fz,80A79EE0 +ovl_En_Po_Relay,80A7BEF0 +ovl_Bg_Relay_Objects,80A7D600 +ovl_En_Diving_Game,80A7DDB0 +ovl_En_Kusa,80A7F760 +ovl_Obj_Bean,80A80C40 +ovl_Obj_Bombiwa,80A833D0 +ovl_Obj_Switch,80A83940 +ovl_Obj_Elevator,80A85720 +ovl_Obj_Lift,80A85AE0 +ovl_Obj_Hsblock,80A86500 +ovl_En_Okarina_Tag,80A86AD0 +ovl_En_Yabusame_Mark,80A87FD0 +ovl_En_Goroiwa,80A886A0 +ovl_En_Ex_Ruppy,80A8AA60 +ovl_En_Toryo,80A8BB20 +ovl_En_Daiku,80A8C7B0 +ovl_En_Nwc,80A8DEF0 +ovl_En_Blkobj,80A8E910 +ovl_Item_Inbox,80A8EE70 +ovl_En_Ge1,80A8EFD0 +ovl_Obj_Blockstop,80A91000 +ovl_En_Sda,80A911A0 +ovl_En_Clear_Tag,80A92890 +ovl_En_Niw_Lady,80A9DE30 +ovl_En_Gm,80A9F730 +ovl_En_Ms,80AA0460 +ovl_En_Hs,80AA0B50 +ovl_Bg_Ingate,80AA16F0 +ovl_En_Kanban,80AA1A80 +ovl_En_Heishi3,80AA4BD0 +ovl_En_Syateki_Niw,80AA55A0 +ovl_En_Attack_Niw,80AA7630 +ovl_Bg_Spot01_Idosoko,80AA8890 +ovl_En_Sa,80AA8AA0 +ovl_En_Wonder_Talk,80AAAD10 +ovl_Bg_Gjyo_Bridge,80AAB3A0 +ovl_En_Ds,80AAB890 +ovl_En_Mk,80AAC4B0 +ovl_En_Bom_Bowl_Man,80AAD340 +ovl_En_Bom_Bowl_Pit,80AAE880 +ovl_En_Owl,80AAF1F0 +ovl_En_Ishi,80AB2D90 +ovl_Obj_Hana,80ABBEE0 +ovl_Obj_Lightswitch,80ABC1F0 +ovl_Obj_Mure2,80ABD620 +ovl_En_Go,80ABE040 +ovl_En_Fu,80AC2680 +ovl_En_Changer,80AC33D0 +ovl_Bg_Jya_Megami,80AC3DB0 +ovl_Bg_Jya_Lift,80AC4FA0 +ovl_Bg_Jya_Bigmirror,80AC54F0 +ovl_Bg_Jya_Bombchuiwa,80AC5D40 +ovl_Bg_Jya_Amishutter,80AC6880 +ovl_Bg_Jya_Bombiwa,80AC6C10 +ovl_Bg_Spot18_Basket,80AC71D0 +ovl_En_Ganon_Organ,80AC81C0 +ovl_En_Siofuki,80ACF200 +ovl_En_Stream,80ACFFB0 +ovl_En_Mm,80AD0540 +ovl_En_Ko,80AD1BA0 +ovl_En_Kz,80AD5CE0 +ovl_En_Weather_Tag,80AD7280 +ovl_Bg_Sst_Floor,80AD8170 +ovl_En_Ani,80AD86D0 +ovl_En_Ex_Item,80AD9440 +ovl_Bg_Jya_Ironobj,80ADA5C0 +ovl_En_Js,80ADB370 +ovl_En_Jsjutan,80ADBD40 +ovl_En_Cs,80AE1670 +ovl_En_Md,80AE28A0 +ovl_En_Hy,80AE4F10 +ovl_En_Ganon_Mant,80AE8850 +ovl_En_Okarina_Effect,80AECA80 +ovl_En_Mag,80AECE40 +ovl_Door_Gerudo,80AF1E80 +ovl_Elf_Msg2,80AF2470 +ovl_Demo_Gt,80AF28E0 +ovl_En_Po_Field,80AF7EF0 +ovl_Efc_Erupc,80AFB980 +ovl_Bg_Zg,80AFC470 +ovl_En_Heishi4,80AFC8C0 +ovl_En_Zl3,80AFD7C0 +ovl_Boss_Ganon2,80B05610 +ovl_En_Kakasi,80B18480 +ovl_En_Takara_Man,80B191C0 +ovl_Obj_Makeoshihiki,80B19A80 +ovl_Oceff_Spot,80B19F10 +ovl_End_Title,80B1AE40 +ovl_En_Torch,80B20880 +ovl_Demo_Ec,80B20970 +ovl_Shot_Sun,80B241D0 +ovl_En_Dy_Extra,80B24890 +ovl_En_Wonder_Talk2,80B24E30 +ovl_En_Ge2,80B254D0 +ovl_Obj_Roomtimer,80B26E70 +ovl_En_Ssh,80B270C0 +ovl_En_Sth,80B296B0 +ovl_Oceff_Wipe,80B2D770 +ovl_Effect_Ss_Dust,80B2E4F0 +ovl_Effect_Ss_KiraKira,80B2ED30 +ovl_Effect_Ss_Bomb,80B2F3A0 +ovl_Effect_Ss_Bomb2,80B2F7D0 +ovl_Effect_Ss_Blast,80B300D0 +ovl_Effect_Ss_G_Spk,80B30460 +ovl_Effect_Ss_D_Fire,80B30A10 +ovl_Effect_Ss_Bubble,80B30F00 +ovl_Effect_Ss_G_Ripple,80B31380 +ovl_Effect_Ss_G_Splash,80B318E0 +ovl_Effect_Ss_G_Magma,80B31D90 +ovl_Effect_Ss_G_Fire,80B31FF0 +ovl_Effect_Ss_Lightning,80B32280 +ovl_Effect_Ss_Dt_Bubble,80B32950 +ovl_Effect_Ss_Hahen,80B32EE0 +ovl_Effect_Ss_Stick,80B33520 +ovl_Effect_Ss_Sibuki,80B338C0 +ovl_Effect_Ss_Sibuki2,80B33F90 +ovl_Effect_Ss_G_Magma2,80B342C0 +ovl_Effect_Ss_Stone1,80B347D0 +ovl_Effect_Ss_HitMark,80B34B50 +ovl_Effect_Ss_Fhg_Flash,80B350A0 +ovl_Effect_Ss_K_Fire,80B36020 +ovl_Effect_Ss_Solder_Srch_Ball,80B36460 +ovl_Effect_Ss_Kakera,80B36610 +ovl_Effect_Ss_Ice_Piece,80B376A0 +ovl_Effect_Ss_En_Ice,80B37AE0 +ovl_Effect_Ss_Fire_Tail,80B383A0 +ovl_Effect_Ss_En_Fire,80B38AA0 +ovl_Effect_Ss_Extra,80B391F0 +ovl_Effect_Ss_Fcircle,80B395B0 +ovl_Effect_Ss_Dead_Db,80B39A60 +ovl_Effect_Ss_Dead_Dd,80B39F40 +ovl_Effect_Ss_Dead_Ds,80B3A4D0 +ovl_Effect_Ss_Dead_Sound,80B3A950 +ovl_Oceff_Storm,80B3AA90 +ovl_En_Weiyer,80B3C640 +ovl_Bg_Spot05_Soko,80B3E040 +ovl_Bg_Jya_1flift,80B3E360 +ovl_Bg_Jya_Haheniron,80B3E9F0 +ovl_Bg_Spot12_Gate,80B3F1E0 +ovl_Bg_Spot12_Saku,80B3F5F0 +ovl_En_Hintnuts,80B3FAB0 +ovl_En_Nutsball,80B414E0 +ovl_Bg_Spot00_Break,80B41B00 +ovl_En_Shopnuts,80B41CA0 +ovl_En_It,80B42BB0 +ovl_En_GeldB,80B42D40 +ovl_Oceff_Wipe2,80B480F0 +ovl_Oceff_Wipe3,80B49860 +ovl_En_Niw_Girl,80B4AFB0 +ovl_En_Dog,80B4BA80 +ovl_En_Si,80B4CC30 +ovl_Bg_Spot01_Objects2,80B4D130 +ovl_Obj_Comb,80B4D5F0 +ovl_Bg_Spot11_Bakudankabe,80B4DE50 +ovl_Obj_Kibako2,80B4E490 +ovl_En_Dnt_Demo,80B4EB50 +ovl_En_Dnt_Jiji,80B4F870 +ovl_En_Dnt_Nomal,80B50D90 +ovl_En_Guest,80B53B90 +ovl_Bg_Bom_Guard,80B54530 +ovl_En_Hs2,80B54750 +ovl_Demo_Kekkai,80B54D30 +ovl_Bg_Spot08_Bakudankabe,80B56020 +ovl_Bg_Spot17_Bakudankabe,80B566C0 +ovl_Obj_Mure3,80B56DB0 +ovl_En_Tg,80B57580 +ovl_En_Mu,80B57C60 +ovl_En_Go2,80B58580 +ovl_En_Wf,80B5E5C0 +ovl_En_Skb,80B628D0 +ovl_Demo_Gj,80B641C0 +ovl_Demo_Geff,80B67E70 +ovl_Bg_Gnd_Firemeiro,80B68690 +ovl_Bg_Gnd_Darkmeiro,80B68BE0 +ovl_Bg_Gnd_Soulmeiro,80B693A0 +ovl_Bg_Gnd_Nisekabe,80B69C00 +ovl_Bg_Gnd_Iceblock,80B69D70 +ovl_Bg_Ydan_Sp,80B6AE70 +ovl_En_Gb,80B6C590 +ovl_En_Gs,80B6DCC0 +ovl_Bg_Mizu_Bwall,80B6FB30 +ovl_Bg_Mizu_Shutter,80B71000 +ovl_En_Daiku_Kakariko,80B71800 +ovl_Bg_Bowl_Wall,80B72BC0 +ovl_En_Wall_Tubo,80B73540 +ovl_En_Po_Desert,80B73A30 +ovl_En_Crow,80B747F0 +ovl_Door_Killer,80B75E90 +ovl_Bg_Spot11_Oasis,80B77400 +ovl_Bg_Spot18_Futa,80B77B30 +ovl_Bg_Spot18_Shutter,80B77CD0 +ovl_En_Ma3,80B78220 +ovl_En_Cow,80B791D0 +ovl_Bg_Ice_Turara,80B7A630 +ovl_Bg_Ice_Shutter,80B7AE60 +ovl_En_Kakasi2,80B7B2D0 +ovl_En_Kakasi3,80B7B9F0 +ovl_Oceff_Wipe4,80B7CAD0 +ovl_En_Eg,80B7DAB0 +ovl_Bg_Menkuri_Nisekabe,80B7DC60 +ovl_En_Zo,80B7DDB0 +ovl_Effect_Ss_Ice_Smoke,80B80370 +ovl_Obj_Makekinsuta,80B80850 +ovl_En_Ge3,80B809A0 +ovl_Obj_Timeblock,80B815E0 +ovl_Obj_Hamishi,80B82230 +ovl_En_Zl4,80B82A80 +ovl_En_Mm2,80B874B0 +ovl_Bg_Jya_Block,80B88270 +ovl_Obj_Warp2block,80B884E0 +gameplay_keep, +gameplay_field_keep, +gameplay_dangeon_keep, +gameplay_object_exchange_static, +object_link_boy, +object_link_child, +object_box, +object_human, +object_okuta, +object_poh, +object_wallmaster, +object_dy_obj, +object_firefly, +object_dodongo, +object_fire, +object_niw, +object_tite, +object_reeba, +object_peehat, +object_kingdodongo, +object_horse, +object_zf, +object_goma, +object_zl1, +object_gol, +object_bubble, +object_dodojr, +object_torch2, +object_bl, +object_tp, +object_oA1, +object_st, +object_bw, +object_ei, +object_horse_normal, +object_oB1, +object_o_anime, +object_spot04_objects, +object_ddan_objects, +object_hidan_objects, +object_horse_ganon, +object_oA2, +object_spot00_objects, +object_mb, +object_bombf, +object_sk2, +object_oE1, +object_oE_anime, +object_oE2, +object_ydan_objects, +object_gnd, +object_am, +object_dekubaba, +object_oA3, +object_oA4, +object_oA5, +object_oA6, +object_oA7, +object_jj, +object_oA8, +object_oA9, +object_oB2, +object_oB3, +object_oB4, +object_horse_zelda, +object_opening_demo1, +object_warp1, +object_b_heart, +object_dekunuts, +object_oE3, +object_oE4, +object_menkuri_objects, +object_oE5, +object_oE6, +object_oE7, +object_oE8, +object_oE9, +object_oE10, +object_oE11, +object_oE12, +object_vali, +object_oA10, +object_oA11, +object_mizu_objects, +object_fhg, +object_ossan, +object_mori_hineri1, +object_Bb, +object_toki_objects, +object_yukabyun, +object_zl2, +object_mjin, +object_mjin_flash, +object_mjin_dark, +object_mjin_flame, +object_mjin_ice, +object_mjin_soul, +object_mjin_wind, +object_mjin_oka, +object_haka_objects, +object_spot06_objects, +object_ice_objects, +object_relay_objects, +object_mori_hineri1a, +object_mori_hineri2, +object_mori_hineri2a, +object_mori_objects, +object_mori_tex, +object_spot08_obj, +object_warp2, +object_hata, +object_bird, +object_wood02, +object_lightbox, +object_pu_box, +object_trap, +object_vase, +object_im, +object_ta, +object_tk, +object_xc, +object_vm, +object_bv, +object_hakach_objects, +object_efc_crystal_light, +object_efc_fire_ball, +object_efc_flash, +object_efc_lgt_shower, +object_efc_star_field, +object_god_lgt, +object_light_ring, +object_triforce_spot, +object_medal, +object_bdan_objects, +object_sd, +object_rd, +object_po_sisters, +object_heavy_object, +object_gndd, +object_fd, +object_du, +object_fw, +object_horse_link_child, +object_spot02_objects, +object_haka, +object_ru1, +object_syokudai, +object_fd2, +object_dh, +object_rl, +object_efc_tw, +object_demo_tre_lgt, +object_gi_key, +object_mir_ray, +object_brob, +object_gi_jewel, +object_spot09_obj, +object_spot18_obj, +object_bdoor, +object_spot17_obj, +object_shop_dungen, +object_nb, +object_mo, +object_sb, +object_gi_melody, +object_gi_heart, +object_gi_compass, +object_gi_bosskey, +object_gi_medal, +object_gi_nuts, +object_sa, +object_gi_hearts, +object_gi_arrowcase, +object_gi_bombpouch, +object_in, +object_tr, +object_spot16_obj, +object_oE1s, +object_oE4s, +object_os_anime, +object_gi_bottle, +object_gi_stick, +object_gi_map, +object_oF1d_map, +object_ru2, +object_gi_shield_1, +object_dekujr, +object_gi_magicpot, +object_gi_bomb_1, +object_oF1s, +object_ma2, +object_gi_purse, +object_hni, +object_tw, +object_rr, +object_bxa, +object_anubice, +object_gi_gerudo, +object_gi_arrow, +object_gi_bomb_2, +object_gi_egg, +object_gi_scale, +object_gi_shield_2, +object_gi_hookshot, +object_gi_ocarina, +object_gi_milk, +object_ma1, +object_ganon, +object_sst, +object_ny, +object_fr, +object_gi_pachinko, +object_gi_boomerang, +object_gi_bow, +object_gi_glasses, +object_gi_liquid, +object_ani, +object_demo_6k, +object_gi_shield_3, +object_gi_letter, +object_spot15_obj, +object_jya_obj, +object_gi_clothes, +object_gi_bean, +object_gi_fish, +object_gi_saw, +object_gi_hammer, +object_gi_grass, +object_gi_longsword, +object_spot01_objects, +object_md, +object_km1, +object_kw1, +object_zo, +object_kz, +object_umajump, +object_masterkokiri, +object_masterkokirihead, +object_mastergolon, +object_masterzoora, +object_aob, +object_ik, +object_ahg, +object_cne, +object_gi_niwatori, +object_skj, +object_gi_bottle_letter, +object_bji, +object_bba, +object_gi_ocarina_0, +object_ds, +object_ane, +object_boj, +object_spot03_object, +object_spot07_object, +object_fz, +object_bob, +object_ge1, +object_yabusame_point, +object_gi_boots_2, +object_gi_seed, +object_gnd_magic, +object_d_elevator, +object_d_hsblock, +object_d_lift, +object_mamenoki, +object_goroiwa, +object_toryo, +object_daiku, +object_nwc, +object_blkobj, +object_gm, +object_ms, +object_hs, +object_ingate, +object_lightswitch, +object_kusa, +object_tsubo, +object_gi_gloves, +object_gi_coin, +object_kanban, +object_gjyo_objects, +object_owl, +object_mk, +object_fu, +object_gi_ki_tan_mask, +object_gi_redead_mask, +object_gi_skj_mask, +object_gi_rabit_mask, +object_gi_truth_mask, +object_ganon_objects, +object_siofuki, +object_stream, +object_mm, +object_fa, +object_os, +object_gi_eye_lotion, +object_gi_powder, +object_gi_mushroom, +object_gi_ticketstone, +object_gi_brokensword, +object_js, +object_cs, +object_gi_prescription, +object_gi_bracelet, +object_gi_soldout, +object_gi_frog, +object_mag, +object_door_gerudo, +object_gt, +object_efc_erupc, +object_zl2_anime1, +object_zl2_anime2, +object_gi_golonmask, +object_gi_zoramask, +object_gi_gerudomask, +object_ganon2, +object_ka, +object_ts, +object_zg, +object_gi_hoverboots, +object_gi_m_arrow, +object_ds2, +object_ec, +object_fish, +object_gi_sutaru, +object_gi_goddess, +object_ssh, +object_bigokuta, +object_bg, +object_spot05_objects, +object_spot12_obj, +object_bombiwa, +object_hintnuts, +object_rs, +object_spot00_break, +object_gla, +object_shopnuts, +object_geldb, +object_gr, +object_dog, +object_jya_iron, +object_jya_door, +object_spot01_objects2, +object_spot11_obj, +object_kibako2, +object_dns, +object_dnk, +object_gi_fire, +object_gi_insect, +object_gi_butterfly, +object_gi_ghost, +object_gi_soul, +object_bowl, +object_po_field, +object_demo_kekkai, +object_efc_doughnut, +object_gi_dekupouch, +object_ganon_anime1, +object_ganon_anime2, +object_ganon_anime3, +object_gi_rupy, +object_spot01_matoya, +object_spot01_matoyab, +object_po_composer, +object_mu, +object_wf, +object_skb, +object_gj, +object_geff, +object_haka_door, +object_gs, +object_ps, +object_bwall, +object_crow, +object_cow, +object_cob, +object_gi_sword_1, +object_door_killer, +object_ouke_haka, +object_timeblock, +object_zl4, +g_pn_01, +g_pn_02, +g_pn_03, +g_pn_04, +g_pn_05, +g_pn_06, +g_pn_07, +g_pn_08, +g_pn_09, +g_pn_10, +g_pn_11, +g_pn_12, +g_pn_13, +g_pn_14, +g_pn_15, +g_pn_16, +g_pn_17, +g_pn_18, +g_pn_19, +g_pn_20, +g_pn_21, +g_pn_22, +g_pn_23, +g_pn_24, +g_pn_25, +g_pn_26, +g_pn_27, +g_pn_28, +g_pn_29, +g_pn_30, +g_pn_31, +g_pn_32, +g_pn_33, +g_pn_34, +g_pn_35, +g_pn_36, +g_pn_37, +g_pn_38, +g_pn_39, +g_pn_40, +g_pn_41, +g_pn_42, +g_pn_43, +g_pn_44, +g_pn_45, +g_pn_46, +g_pn_47, +g_pn_48, +g_pn_49, +g_pn_50, +g_pn_51, +g_pn_52, +g_pn_53, +g_pn_54, +g_pn_55, +g_pn_56, +g_pn_57, +z_select_static, +nintendo_rogo_static, +title_static, +parameter_static, +vr_fine0_static, +vr_fine0_pal_static, +vr_fine1_static, +vr_fine1_pal_static, +vr_fine2_static, +vr_fine2_pal_static, +vr_fine3_static, +vr_fine3_pal_static, +vr_cloud0_static, +vr_cloud0_pal_static, +vr_cloud1_static, +vr_cloud1_pal_static, +vr_cloud2_static, +vr_cloud2_pal_static, +vr_cloud3_static, +vr_cloud3_pal_static, +vr_holy0_static, +vr_holy0_pal_static, +vr_holy1_static, +vr_holy1_pal_static, +vr_MDVR_static, +vr_MDVR_pal_static, +vr_MNVR_static, +vr_MNVR_pal_static, +vr_RUVR_static, +vr_RUVR_pal_static, +vr_LHVR_static, +vr_LHVR_pal_static, +vr_KHVR_static, +vr_KHVR_pal_static, +vr_K3VR_static, +vr_K3VR_pal_static, +vr_K4VR_static, +vr_K4VR_pal_static, +vr_K5VR_static, +vr_K5VR_pal_static, +vr_SP1a_static, +vr_SP1a_pal_static, +vr_MLVR_static, +vr_MLVR_pal_static, +vr_KKRVR_static, +vr_KKRVR_pal_static, +vr_KR3VR_static, +vr_KR3VR_pal_static, +vr_IPVR_static, +vr_IPVR_pal_static, +vr_KSVR_static, +vr_KSVR_pal_static, +vr_GLVR_static, +vr_GLVR_pal_static, +vr_ZRVR_static, +vr_ZRVR_pal_static, +vr_DGVR_static, +vr_DGVR_pal_static, +vr_ALVR_static, +vr_ALVR_pal_static, +vr_NSVR_static, +vr_NSVR_pal_static, +vr_LBVR_static, +vr_LBVR_pal_static, +vr_TTVR_static, +vr_TTVR_pal_static, +vr_FCVR_static, +vr_FCVR_pal_static, +elf_message_field, +elf_message_ydan, +ydan_scene, +ydan_room_0, +ydan_room_1, +ydan_room_2, +ydan_room_3, +ydan_room_4, +ydan_room_5, +ydan_room_6, +ydan_room_7, +ydan_room_8, +ydan_room_9, +ydan_room_10, +ydan_room_11, +ddan_scene, +ddan_room_0, +ddan_room_1, +ddan_room_2, +ddan_room_3, +ddan_room_4, +ddan_room_5, +ddan_room_6, +ddan_room_7, +ddan_room_8, +ddan_room_9, +ddan_room_10, +ddan_room_11, +ddan_room_12, +ddan_room_13, +ddan_room_14, +ddan_room_15, +ddan_room_16, +bdan_scene, +bdan_room_0, +bdan_room_1, +bdan_room_2, +bdan_room_3, +bdan_room_4, +bdan_room_5, +bdan_room_6, +bdan_room_7, +bdan_room_8, +bdan_room_9, +bdan_room_10, +bdan_room_11, +bdan_room_12, +bdan_room_13, +bdan_room_14, +bdan_room_15, +Bmori1_scene, +Bmori1_room_0, +Bmori1_room_1, +Bmori1_room_2, +Bmori1_room_3, +Bmori1_room_4, +Bmori1_room_5, +Bmori1_room_6, +Bmori1_room_7, +Bmori1_room_8, +Bmori1_room_9, +Bmori1_room_10, +Bmori1_room_11, +Bmori1_room_12, +Bmori1_room_13, +Bmori1_room_14, +Bmori1_room_15, +Bmori1_room_16, +Bmori1_room_17, +Bmori1_room_18, +Bmori1_room_19, +Bmori1_room_20, +Bmori1_room_21, +Bmori1_room_22, +HIDAN_scene, +HIDAN_room_0, +HIDAN_room_1, +HIDAN_room_2, +HIDAN_room_3, +HIDAN_room_4, +HIDAN_room_5, +HIDAN_room_6, +HIDAN_room_7, +HIDAN_room_8, +HIDAN_room_9, +HIDAN_room_10, +HIDAN_room_11, +HIDAN_room_12, +HIDAN_room_13, +HIDAN_room_14, +HIDAN_room_15, +HIDAN_room_16, +HIDAN_room_17, +HIDAN_room_18, +HIDAN_room_19, +HIDAN_room_20, +HIDAN_room_21, +HIDAN_room_22, +HIDAN_room_23, +HIDAN_room_24, +HIDAN_room_25, +HIDAN_room_26, +MIZUsin_scene, +MIZUsin_room_0, +MIZUsin_room_1, +MIZUsin_room_2, +MIZUsin_room_3, +MIZUsin_room_4, +MIZUsin_room_5, +MIZUsin_room_6, +MIZUsin_room_7, +MIZUsin_room_8, +MIZUsin_room_9, +MIZUsin_room_10, +MIZUsin_room_11, +MIZUsin_room_12, +MIZUsin_room_13, +MIZUsin_room_14, +MIZUsin_room_15, +MIZUsin_room_16, +MIZUsin_room_17, +MIZUsin_room_18, +MIZUsin_room_19, +MIZUsin_room_20, +MIZUsin_room_21, +MIZUsin_room_22, +jyasinzou_scene, +jyasinzou_room_0, +jyasinzou_room_1, +jyasinzou_room_2, +jyasinzou_room_3, +jyasinzou_room_4, +jyasinzou_room_5, +jyasinzou_room_6, +jyasinzou_room_7, +jyasinzou_room_8, +jyasinzou_room_9, +jyasinzou_room_10, +jyasinzou_room_11, +jyasinzou_room_12, +jyasinzou_room_13, +jyasinzou_room_14, +jyasinzou_room_15, +jyasinzou_room_16, +jyasinzou_room_17, +jyasinzou_room_18, +jyasinzou_room_19, +jyasinzou_room_20, +jyasinzou_room_21, +jyasinzou_room_22, +jyasinzou_room_23, +jyasinzou_room_24, +jyasinzou_room_25, +jyasinzou_room_26, +jyasinzou_room_27, +jyasinzou_room_28, +HAKAdan_scene, +HAKAdan_room_0, +HAKAdan_room_1, +HAKAdan_room_2, +HAKAdan_room_3, +HAKAdan_room_4, +HAKAdan_room_5, +HAKAdan_room_6, +HAKAdan_room_7, +HAKAdan_room_8, +HAKAdan_room_9, +HAKAdan_room_10, +HAKAdan_room_11, +HAKAdan_room_12, +HAKAdan_room_13, +HAKAdan_room_14, +HAKAdan_room_15, +HAKAdan_room_16, +HAKAdan_room_17, +HAKAdan_room_18, +HAKAdan_room_19, +HAKAdan_room_20, +HAKAdan_room_21, +HAKAdan_room_22, +HAKAdanCH_scene, +HAKAdanCH_room_0, +HAKAdanCH_room_1, +HAKAdanCH_room_2, +HAKAdanCH_room_3, +HAKAdanCH_room_4, +HAKAdanCH_room_5, +HAKAdanCH_room_6, +ice_doukutu_scene, +ice_doukutu_room_0, +ice_doukutu_room_1, +ice_doukutu_room_2, +ice_doukutu_room_3, +ice_doukutu_room_4, +ice_doukutu_room_5, +ice_doukutu_room_6, +ice_doukutu_room_7, +ice_doukutu_room_8, +ice_doukutu_room_9, +ice_doukutu_room_10, +ice_doukutu_room_11, +men_scene, +men_room_0, +men_room_1, +men_room_2, +men_room_3, +men_room_4, +men_room_5, +men_room_6, +men_room_7, +men_room_8, +men_room_9, +men_room_10, +ganontika_scene, +ganontika_room_0, +ganontika_room_1, +ganontika_room_2, +ganontika_room_3, +ganontika_room_4, +ganontika_room_5, +ganontika_room_6, +ganontika_room_7, +ganontika_room_8, +ganontika_room_9, +ganontika_room_10, +ganontika_room_11, +ganontika_room_12, +ganontika_room_13, +ganontika_room_14, +ganontika_room_15, +ganontika_room_16, +ganontika_room_17, +ganontika_room_18, +ganontika_room_19, +spot00_scene, +spot00_room_0, +spot01_scene, +spot01_room_0, +spot02_scene, +spot02_room_0, +spot02_room_1, +spot03_scene, +spot03_room_0, +spot03_room_1, +spot04_scene, +spot04_room_0, +spot04_room_1, +spot04_room_2, +spot05_scene, +spot05_room_0, +spot06_scene, +spot06_room_0, +spot07_scene, +spot07_room_0, +spot07_room_1, +spot08_scene, +spot08_room_0, +spot09_scene, +spot09_room_0, +spot10_scene, +spot10_room_0, +spot10_room_1, +spot10_room_2, +spot10_room_3, +spot10_room_4, +spot10_room_5, +spot10_room_6, +spot10_room_7, +spot10_room_8, +spot10_room_9, +spot11_scene, +spot11_room_0, +spot12_scene, +spot12_room_0, +spot12_room_1, +spot13_scene, +spot13_room_0, +spot13_room_1, +spot15_scene, +spot15_room_0, +spot16_scene, +spot16_room_0, +spot17_scene, +spot17_room_0, +spot17_room_1, +spot18_scene, +spot18_room_0, +spot18_room_1, +spot18_room_2, +spot18_room_3, +market_day_scene, +market_day_room_0, +market_night_scene, +market_night_room_0, +kenjyanoma_scene, +kenjyanoma_room_0, +tokinoma_scene, +tokinoma_room_0, +tokinoma_room_1, +link_home_scene, +link_home_room_0, +kokiri_shop_scene, +kokiri_shop_room_0, +kokiri_home_scene, +kokiri_home_room_0, +kakusiana_scene, +kakusiana_room_0, +kakusiana_room_1, +kakusiana_room_2, +kakusiana_room_3, +kakusiana_room_4, +kakusiana_room_5, +kakusiana_room_6, +kakusiana_room_7, +kakusiana_room_8, +kakusiana_room_9, +kakusiana_room_10, +kakusiana_room_11, +kakusiana_room_12, +kakusiana_room_13, +entra_scene, +entra_room_0, +moribossroom_scene, +moribossroom_room_0, +moribossroom_room_1, +syatekijyou_scene, +syatekijyou_room_0, +shop1_scene, +shop1_room_0, +hairal_niwa_scene, +hairal_niwa_room_0, +ganon_tou_scene, +ganon_tou_room_0, +market_alley_scene, +market_alley_room_0, +spot20_scene, +spot20_room_0, +market_ruins_scene, +market_ruins_room_0, +entra_n_scene, +entra_n_room_0, +enrui_scene, +enrui_room_0, +market_alley_n_scene, +market_alley_n_room_0, +hiral_demo_scene, +hiral_demo_room_0, +kokiri_home3_scene, +kokiri_home3_room_0, +malon_stable_scene, +malon_stable_room_0, +kakariko_scene, +kakariko_room_0, +bdan_boss_scene, +bdan_boss_room_0, +bdan_boss_room_1, +FIRE_bs_scene, +FIRE_bs_room_0, +FIRE_bs_room_1, +hut_scene, +hut_room_0, +daiyousei_izumi_scene, +daiyousei_izumi_room_0, +hakaana_scene, +hakaana_room_0, +yousei_izumi_tate_scene, +yousei_izumi_tate_room_0, +yousei_izumi_yoko_scene, +yousei_izumi_yoko_room_0, +golon_scene, +golon_room_0, +zoora_scene, +zoora_room_0, +drag_scene, +drag_room_0, +alley_shop_scene, +alley_shop_room_0, +night_shop_scene, +night_shop_room_0, +impa_scene, +impa_room_0, +labo_scene, +labo_room_0, +tent_scene, +tent_room_0, +nakaniwa_scene, +nakaniwa_room_0, +ddan_boss_scene, +ddan_boss_room_0, +ddan_boss_room_1, +ydan_boss_scene, +ydan_boss_room_0, +ydan_boss_room_1, +HAKAdan_bs_scene, +HAKAdan_bs_room_0, +HAKAdan_bs_room_1, +MIZUsin_bs_scene, +MIZUsin_bs_room_0, +MIZUsin_bs_room_1, +ganon_scene, +ganon_room_0, +ganon_room_1, +ganon_room_2, +ganon_room_3, +ganon_room_4, +ganon_room_5, +ganon_room_6, +ganon_room_7, +ganon_room_8, +ganon_room_9, +ganon_boss_scene, +ganon_boss_room_0, +jyasinboss_scene, +jyasinboss_room_0, +jyasinboss_room_1, +jyasinboss_room_2, +jyasinboss_room_3, +kokiri_home4_scene, +kokiri_home4_room_0, +kokiri_home5_scene, +kokiri_home5_room_0, +ganon_final_scene, +ganon_final_room_0, +kakariko3_scene, +kakariko3_room_0, +hakasitarelay_scene, +hakasitarelay_room_0, +hakasitarelay_room_1, +hakasitarelay_room_2, +hakasitarelay_room_3, +hakasitarelay_room_4, +hakasitarelay_room_5, +hakasitarelay_room_6, +shrine_scene, +shrine_room_0, +turibori_scene, +turibori_room_0, +shrine_n_scene, +shrine_n_room_0, +shrine_r_scene, +shrine_r_room_0, +hakaana2_scene, +hakaana2_room_0, +gerudoway_scene, +gerudoway_room_0, +gerudoway_room_1, +gerudoway_room_2, +gerudoway_room_3, +gerudoway_room_4, +gerudoway_room_5, +hairal_niwa_n_scene, +hairal_niwa_n_room_0, +bowling_scene, +bowling_room_0, +hakaana_ouke_scene, +hakaana_ouke_room_0, +hakaana_ouke_room_1, +hakaana_ouke_room_2, +hylia_labo_scene, +hylia_labo_room_0, +souko_scene, +souko_room_0, +souko_room_1, +souko_room_2, +miharigoya_scene, +miharigoya_room_0, +mahouya_scene, +mahouya_room_0, +takaraya_scene, +takaraya_room_0, +takaraya_room_1, +takaraya_room_2, +takaraya_room_3, +takaraya_room_4, +takaraya_room_5, +takaraya_room_6, +ganon_sonogo_scene, +ganon_sonogo_room_0, +ganon_sonogo_room_1, +ganon_sonogo_room_2, +ganon_sonogo_room_3, +ganon_sonogo_room_4, +ganon_demo_scene, +ganon_demo_room_0, +face_shop_scene, +face_shop_room_0, +kinsuta_scene, +kinsuta_room_0, +ganontikasonogo_scene, +ganontikasonogo_room_0, +ganontikasonogo_room_1, +bump_texture_static, +anime_model_1_static, +anime_model_2_static, +anime_model_3_static, +anime_model_4_static, +anime_model_5_static, +anime_model_6_static, +anime_texture_1_static, +anime_texture_2_static, +anime_texture_3_static, +anime_texture_4_static, +anime_texture_5_static, +anime_texture_6_static, +softsprite_matrix_static, diff --git a/baseroms/ntsc-1.0/config.yml b/baseroms/ntsc-1.0/config.yml index 072aebec3d..2bdf99411a 100644 --- a/baseroms/ntsc-1.0/config.yml +++ b/baseroms/ntsc-1.0/config.yml @@ -2,7 +2,7 @@ checksums: - checksum-JP - checksum-US dmadata_start: 0x7430 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/ntsc-1.1/config.yml b/baseroms/ntsc-1.1/config.yml index 6726cc59f6..1b110a84c8 100644 --- a/baseroms/ntsc-1.1/config.yml +++ b/baseroms/ntsc-1.1/config.yml @@ -2,7 +2,7 @@ checksums: - checksum-JP - checksum-US dmadata_start: 0x7430 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/ntsc-1.2/config.yml b/baseroms/ntsc-1.2/config.yml index f9293586f9..a631ca5511 100644 --- a/baseroms/ntsc-1.2/config.yml +++ b/baseroms/ntsc-1.2/config.yml @@ -2,7 +2,7 @@ checksums: - checksum-JP - checksum-US dmadata_start: 0x7960 -text_lang_pal: false +text_lang: NTSC incbins: - name: ipl3 segment: makerom diff --git a/baseroms/pal-1.0/config.yml b/baseroms/pal-1.0/config.yml index 1a80071bbb..a8ea60b79d 100644 --- a/baseroms/pal-1.0/config.yml +++ b/baseroms/pal-1.0/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7950 -text_lang_pal: true +text_lang: PAL incbins: - name: ipl3 segment: makerom diff --git a/baseroms/pal-1.1/config.yml b/baseroms/pal-1.1/config.yml index 57f037b350..4811f1cb93 100644 --- a/baseroms/pal-1.1/config.yml +++ b/baseroms/pal-1.1/config.yml @@ -1,5 +1,5 @@ dmadata_start: 0x7950 -text_lang_pal: true +text_lang: PAL incbins: - name: ipl3 segment: makerom diff --git a/docs/BUILDING_MACOS.md b/docs/BUILDING_MACOS.md index 9fe0e1b11b..d34035fcec 100644 --- a/docs/BUILDING_MACOS.md +++ b/docs/BUILDING_MACOS.md @@ -43,10 +43,9 @@ cd ~/binutils-tmp Get and extract binutils source ```bash -wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2 +curl -O https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2 tar xjf binutils-2.35.tar.bz2 ``` -(You may find this command does not work: if so, just access the URL in a browser and save it to `~/binutils-tmp`.) Create and enter a build directory ```bash @@ -65,9 +64,9 @@ make -j sudo make install ``` -Edit your `~/.bash_profile`/`~/.zsh_profile` (or whichever shell you use) to add the new binutils binaries to the system PATH +Edit your `~/.bash_profile`/`~/.zprofile` (or whichever shell you use) to add the new binutils binaries to the system PATH ```bash -echo "export PATH=$PATH:/opt/cross/bin" >> ~/.bash_profile +echo 'export PATH="$PATH:/opt/cross/bin"' >> ~/.bash_profile ``` Reload `~/.bash_profile` (or just launch a new terminal tab) diff --git a/include/attributes.h b/include/attributes.h index c3154cac7b..3276c84325 100644 --- a/include/attributes.h +++ b/include/attributes.h @@ -8,12 +8,22 @@ #endif #define UNUSED __attribute__((unused)) -#define FALLTHROUGH __attribute__((fallthrough)) -#define NORETURN __attribute__((noreturn)) #define NO_REORDER __attribute__((no_reorder)) #define SECTION_DATA __attribute__((section(".data"))) -#ifdef __GNUC__ +#if __GNUC__ >= 7 +#define FALLTHROUGH __attribute__((fallthrough)) +#else +#define FALLTHROUGH +#endif + +#if defined(__GNUC__) && defined(NON_MATCHING) +#define NORETURN __attribute__((noreturn)) +#else +#define NORETURN +#endif + +#if defined(__GNUC__) && defined(NON_MATCHING) #define UNREACHABLE() __builtin_unreachable() #else #define UNREACHABLE() diff --git a/include/fault.h b/include/fault.h index a95ae59064..8f1979520f 100644 --- a/include/fault.h +++ b/include/fault.h @@ -5,7 +5,7 @@ #include "attributes.h" #include "padmgr.h" -#if PLATFORM_GC +#if !PLATFORM_N64 // These are the same as the 3-bit ansi color codes #define FAULT_COLOR_BLACK 0 #define FAULT_COLOR_RED 1 @@ -33,7 +33,7 @@ typedef struct FaultClient { /* 0x0C */ void* arg1; } FaultClient; // size = 0x10 -#if PLATFORM_GC +#if !PLATFORM_N64 typedef struct FaultAddrConvClient { /* 0x00 */ struct FaultAddrConvClient* next; /* 0x04 */ void* callback; @@ -78,7 +78,7 @@ void func_800AE1F8(void); #define Fault_SetFontColor(color) (void)0 #define Fault_SetCharPad(padW, padH) (void)0 -#elif PLATFORM_GC +#else void Fault_InitDrawer(void); void Fault_SetForeColor(u16 color); @@ -98,7 +98,7 @@ extern volatile OSThread* gFaultFaultedThread; #define FAULT_MSG_ID gFaultMsgId -#elif PLATFORM_GC +#else typedef struct FaultMgr { /* 0x000 */ OSThread thread; diff --git a/include/functions.h b/include/functions.h index 7a114f73c5..f89ce3a0af 100644 --- a/include/functions.h +++ b/include/functions.h @@ -9,10 +9,11 @@ void Main_ThreadEntry(void* arg); void Idle_ThreadEntry(void* arg); void ViConfig_UpdateVi(u32 black); void ViConfig_UpdateBlack(void); -void* Yaz0_FirstDMA(void); -void* Yaz0_NextDMA(u8* curSrcPos); -void Yaz0_DecompressImpl(u8* src, u8* dst); +#if !PLATFORM_IQUE void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size); +#else +void gzip_decompress(uintptr_t romStart, u8* dst, size_t size); +#endif void Locale_Init(void); void Locale_ResetRegion(void); #if DEBUG_FEATURES diff --git a/include/libc/assert.h b/include/libc/assert.h index dae8aeb651..de54b8a79c 100644 --- a/include/libc/assert.h +++ b/include/libc/assert.h @@ -29,7 +29,7 @@ __attribute__((noreturn)) void __assert(const char* assertion, const char* file, // Static/compile-time assertions -#if !defined(__sgi) && (defined(__GNUC__) || (__STDC_VERSION__ >= 201112L)) +#if !defined(__sgi) && (__GNUC__ >= 5 || __STDC_VERSION__ >= 201112L) # define static_assert(cond, msg) _Static_assert(cond, msg) #else # ifndef GLUE diff --git a/include/libc/math.h b/include/libc/math.h index b46b6cd911..4389b576ef 100644 --- a/include/libc/math.h +++ b/include/libc/math.h @@ -61,6 +61,10 @@ f64 sqrt(f64 f); #endif #if !PLATFORM_N64 +extern float gPositiveInfinity; +extern float gNegativeInfinity; +extern float gPositiveZero; +extern float gNegativeZero; extern float qNaN0x3FFFFF; extern float qNaN0x10000; extern float sNaN0x3FFFFF; diff --git a/include/libc/stdarg.h b/include/libc/stdarg.h index 35ce4f944e..7c7d2800e5 100644 --- a/include/libc/stdarg.h +++ b/include/libc/stdarg.h @@ -1,16 +1,16 @@ #ifndef STDARG_H #define STDARG_H -// When building with GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. +// When building with modern GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. -#ifdef __GNUC__ +#if __GNUC__ >= 3 #define va_list __builtin_va_list #define va_start __builtin_va_start #define va_arg __builtin_va_arg #define va_end __builtin_va_end -#else +#elif defined(__sgi) /* IDO */ #ifndef _VA_LIST_ # define _VA_LIST_ @@ -52,6 +52,29 @@ typedef char* va_list; /* No cleanup processing is required for the end of a varargs list: */ #define va_end(__list) -#endif /* __GNUC__ */ +#else /* EGCS */ + +typedef char * __gnuc_va_list; + +#define __va_rounded_size(__TYPE) \ + (((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) + +#define va_start(__AP, __LASTARG) \ + (__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG)) + +#define va_end(__AP) ((void)0) + +/* We cast to void * and then to TYPE * because this avoids + a warning about increasing the alignment requirement. */ +#define va_arg(__AP, __type) \ + ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \ + ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \ + : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \ + + __va_rounded_size (__type))), \ + *(__type *) (void *) (__AP - __va_rounded_size (__type))) + +typedef __gnuc_va_list va_list; + +#endif #endif diff --git a/include/libc/stddef.h b/include/libc/stddef.h index 45620895ee..0c0926ba6b 100644 --- a/include/libc/stddef.h +++ b/include/libc/stddef.h @@ -15,7 +15,7 @@ typedef unsigned long size_t; #endif -#ifdef __GNUC__ +#if __GNUC__ >= 4 #define offsetof(structure, member) __builtin_offsetof (structure, member) #else #define offsetof(structure, member) ((size_t)&(((structure*)0)->member)) diff --git a/include/libc64/os_malloc.h b/include/libc64/os_malloc.h index 91b0d93c47..fcd4da1e14 100644 --- a/include/libc64/os_malloc.h +++ b/include/libc64/os_malloc.h @@ -11,7 +11,7 @@ typedef struct Arena { #if PLATFORM_N64 /* 0x08 */ u32 size; /* 0x0C */ u8 allocFailures; -#elif PLATFORM_GC +#else /* 0x08 */ OSMesgQueue lockQueue; /* 0x20 */ u8 allocFailures; // only used in non-debug builds /* 0x21 */ u8 isInit; diff --git a/include/line_numbers.h b/include/line_numbers.h index 20df4e1534..bc11d555db 100644 --- a/include/line_numbers.h +++ b/include/line_numbers.h @@ -5,31 +5,35 @@ // The "LN" macros defined here are not meant to be used directly. See the wrapper macros below. #if OOT_VERSION == NTSC_1_0 -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (ntsc_1_0) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_0) #elif OOT_VERSION == NTSC_1_1 -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (ntsc_1_1) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_1) #elif OOT_VERSION == PAL_1_0 -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (pal_1_0) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_0) #elif OOT_VERSION == NTSC_1_2 -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (ntsc_1_2) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_2) #elif OOT_VERSION == PAL_1_1 -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (pal_1_1) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_1) #elif OOT_VERSION == GC_JP -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_jp) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp) #elif OOT_VERSION == GC_JP_MQ -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_jp_mq) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_mq) #elif OOT_VERSION == GC_US -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_us) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us) #elif OOT_VERSION == GC_US_MQ -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_us_mq) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us_mq) #elif OOT_VERSION == GC_EU_MQ_DBG -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_eu_mq_dbg) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq_dbg) #elif OOT_VERSION == GC_EU -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_eu) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu) #elif OOT_VERSION == GC_EU_MQ -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_eu_mq) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq) #elif OOT_VERSION == GC_JP_CE -#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce) (gc_jp_ce) +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_ce) +#elif OOT_VERSION == IQUE_CN +#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ique_cn) +#else +#error "Unsupported OOT version" #endif /** @@ -42,22 +46,22 @@ // NTSC 1.0 and all the other versions #define LN1(ntsc_1_0, other) \ - LN(ntsc_1_0, other, other, other, other, other, other, other, other, other, other, other, other) + LN(ntsc_1_0, other, other, other, other, other, other, other, other, other, other, other, other, other) // NTSC 1.0, NTSC 1.1, and all the other versions #define LN2(ntsc_1_0, ntsc_1_1, other) \ - LN(ntsc_1_0, ntsc_1_1, other, other, other, other, other, other, other, other, other, other, other) + LN(ntsc_1_0, ntsc_1_1, other, other, other, other, other, other, other, other, other, other, other, other) -// NTSC 1.0, Gamecube, and all the other versions -#define LN3(ntsc_1_0, other, gc) \ - LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc) +// NTSC 1.0, iQue, GameCube, and all the other versions +#define LN3(ntsc_1_0, other, ique, gc) \ + LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, ique) -// NTSC 1.0, NTSC 1.1, Gamecube, and all the other versions -#define LN4(ntsc_1_0, ntsc_1_1, other, gc) \ - LN(ntsc_1_0, ntsc_1_1, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc) +// NTSC 1.0, NTSC 1.1, iQue, GameCube, and all the other versions +#define LN4(ntsc_1_0, ntsc_1_1, other, ique, gc) \ + LN(ntsc_1_0, ntsc_1_1, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, ique) -// NTSC 1.0, NTSC 1.1, NTSC 1.2/PAL 1.0, Gamecube US/JP, Gamecube EU, and Gamecube CE -#define LN5(ntsc_1_0, ntsc_1_1, other, pal_1_1, gc_ntsc, gc_eu, gc_jp_ce) \ - LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_jp_ce) +// NTSC 1.0, NTSC 1.1, NTSC 1.2/PAL 1.0, iQue, Gamecube US/JP, Gamecube EU, and Gamecube CE +#define LN5(ntsc_1_0, ntsc_1_1, other, pal_1_1, ique, gc_ntsc, gc_eu, gc_jp_ce) \ + LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_jp_ce, ique) #endif diff --git a/include/macros.h b/include/macros.h index 59360541d0..d7547482c0 100644 --- a/include/macros.h +++ b/include/macros.h @@ -1,6 +1,7 @@ #ifndef MACROS_H #define MACROS_H +#include "terminal.h" #include "versions.h" #ifndef AVOID_UB @@ -53,10 +54,38 @@ #define PRINTF osSyncPrintf #elif IDO_PRINTF_WORKAROUND #define PRINTF(args) (void)0 +#elif defined(__GNUC__) && __GNUC__ < 3 +#define PRINTF(format, args...) while (0) osSyncPrintf(format, ##args) #else #define PRINTF(format, ...) (void)0 #endif +#if DEBUG_FEATURES +#define PRINTF_COLOR_BLACK() PRINTF(VT_FGCOL(BLACK)) +#define PRINTF_COLOR_RED() PRINTF(VT_FGCOL(RED)) +#define PRINTF_COLOR_GREEN() PRINTF(VT_FGCOL(GREEN)) +#define PRINTF_COLOR_YELLOW() PRINTF(VT_FGCOL(YELLOW)) +#define PRINTF_COLOR_BLUE() PRINTF(VT_FGCOL(BLUE)) +#define PRINTF_COLOR_MAGENTA() PRINTF(VT_FGCOL(MAGENTA)) +#define PRINTF_COLOR_CYAN() PRINTF(VT_FGCOL(CYAN)) +#define PRINTF_COLOR_WHITE() PRINTF(VT_FGCOL(WHITE)) +#define PRINTF_COLOR_WARNING() PRINTF(VT_COL(YELLOW, BLACK)) +#define PRINTF_COLOR_ERROR() PRINTF(VT_COL(RED, WHITE)) +#define PRINTF_RST() PRINTF(VT_RST) +#else +#define PRINTF_COLOR_BLACK() (void)0 +#define PRINTF_COLOR_RED() (void)0 +#define PRINTF_COLOR_GREEN() (void)0 +#define PRINTF_COLOR_YELLOW() (void)0 +#define PRINTF_COLOR_BLUE() (void)0 +#define PRINTF_COLOR_MAGENTA() (void)0 +#define PRINTF_COLOR_CYAN() (void)0 +#define PRINTF_COLOR_WHITE() (void)0 +#define PRINTF_COLOR_WARNING() (void)0 +#define PRINTF_COLOR_ERROR() (void)0 +#define PRINTF_RST() (void)0 +#endif + #if DEBUG_FEATURES #define LOG(exp, value, format, file, line) \ do { \ diff --git a/include/ultra64/R4300.h b/include/ultra64/R4300.h index 6398ea17c4..1c2da84f12 100644 --- a/include/ultra64/R4300.h +++ b/include/ultra64/R4300.h @@ -4,13 +4,11 @@ #ifdef _LANGUAGE_C #include "ultratypes.h" #define U32(x) ((u32)x) -#define C_REG(x) (x) #else #define U32(x) (x) -#define C_REG(x) $x #endif -// Segment base addresses and sizes +/* Segment base addresses and sizes */ #define KUBASE 0 #define KUSIZE 0x80000000 #define K0BASE 0x80000000 @@ -20,24 +18,24 @@ #define K2BASE 0xC0000000 #define K2SIZE 0x20000000 -// Exception vectors -#define SIZE_EXCVEC 0x80 // Size of an exc. vec -#define UT_VEC K0BASE // utlbmiss vector -#define R_VEC (K1BASE + 0x1FC00000) // reset vector -#define XUT_VEC (K0BASE + 0x80) // extended address tlbmiss -#define ECC_VEC (K0BASE + 0x100) // Ecc exception vector -#define E_VEC (K0BASE + 0x180) // Gen. exception vector +/* Exception vectors */ +#define SIZE_EXCVEC 0x80 /* Size of an exc. vec */ +#define UT_VEC K0BASE /* utlbmiss vector */ +#define R_VEC (K1BASE + 0x1FC00000) /* reset vector */ +#define XUT_VEC (K0BASE + 0x80) /* extended address tlbmiss */ +#define ECC_VEC (K0BASE + 0x100) /* Ecc exception vector */ +#define E_VEC (K0BASE + 0x180) /* Gen. exception vector */ -// Address conversion macros -#define K0_TO_K1(x) (U32(x) | 0xA0000000) // kseg0 to kseg1 -#define K1_TO_K0(x) (U32(x) & 0x9FFFFFFF) // kseg1 to kseg0 -#define K0_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) // kseg0 to physical -#define K1_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) // kseg1 to physical -#define KDM_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) // direct mapped to physical -#define PHYS_TO_K0(x) (U32(x) | 0x80000000) // physical to kseg0 -#define PHYS_TO_K1(x) (U32(x) | 0xA0000000) // physical to kseg1 +/* Address conversion macros */ +#define K0_TO_K1(x) (U32(x) | 0xA0000000) /* kseg0 to kseg1 */ +#define K1_TO_K0(x) (U32(x) & 0x9FFFFFFF) /* kseg1 to kseg0 */ +#define K0_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) /* kseg0 to physical */ +#define K1_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) /* kseg1 to physical */ +#define KDM_TO_PHYS(x) (U32(x) & 0x1FFFFFFF) /* direct mapped to physical */ +#define PHYS_TO_K0(x) (U32(x) | 0x80000000) /* physical to kseg0 */ +#define PHYS_TO_K1(x) (U32(x) | 0xA0000000) /* physical to kseg1 */ -// Address predicates +/* Address predicates */ #define IS_KSEG0(x) (U32(x) >= K0BASE && U32(x) < K1BASE) #define IS_KSEG1(x) (U32(x) >= K1BASE && U32(x) < K2BASE) #define IS_KSEGDM(x) (U32(x) >= K0BASE && U32(x) < K2BASE) @@ -45,25 +43,25 @@ #define IS_KPTESEG(x) (U32(x) >= KPTE_SHDUBASE) #define IS_KUSEG(x) (U32(x) < K0BASE) -// TLB size constants +/* TLB size constants */ #define NTLBENTRIES 31 /* entry 31 is reserved by rdb */ #define TLBHI_VPN2MASK 0xFFFFE000 #define TLBHI_VPN2SHIFT 13 #define TLBHI_PIDMASK 0xFF #define TLBHI_PIDSHIFT 0 -#define TLBHI_NPID 255 // 255 to fit in 8 bits +#define TLBHI_NPID 255 /* 255 to fit in 8 bits */ #define TLBLO_PFNMASK 0x3FFFFFC0 #define TLBLO_PFNSHIFT 6 -#define TLBLO_CACHMASK 0x38 // cache coherency algorithm +#define TLBLO_CACHMASK 0x38 /* cache coherency algorithm */ #define TLBLO_CACHSHIFT 3 -#define TLBLO_UNCACHED 0x10 // not cached -#define TLBLO_NONCOHRNT 0x18 // Cacheable non-coherent -#define TLBLO_EXLWR 0x28 // Exclusive write -#define TLBLO_D 0x4 // writeable -#define TLBLO_V 0x2 // valid bit -#define TLBLO_G 0x1 // global access bit +#define TLBLO_UNCACHED 0x10 /* not cached */ +#define TLBLO_NONCOHRNT 0x18 /* Cacheable non-coherent */ +#define TLBLO_EXLWR 0x28 /* Exclusive write */ +#define TLBLO_D 0x4 /* writeable */ +#define TLBLO_V 0x2 /* valid bit */ +#define TLBLO_G 0x1 /* global access bit */ #define TLBINX_PROBE 0x80000000 #define TLBINX_INXMASK 0x3F @@ -88,104 +86,104 @@ /* * Status register */ -#define SR_CUMASK 0xF0000000 // coproc usable bits +#define SR_CUMASK 0xF0000000 /* coproc usable bits */ -#define SR_CU3 0x80000000 // Coprocessor 3 usable -#define SR_CU2 0x40000000 // Coprocessor 2 usable -#define SR_CU1 0x20000000 // Coprocessor 1 usable -#define SR_CU0 0x10000000 // Coprocessor 0 usable -#define SR_RP 0x08000000 // Reduced power (quarter speed) -#define SR_FR 0x04000000 // MIPS III FP register mode -#define SR_RE 0x02000000 // Reverse endian -#define SR_ITS 0x01000000 // Instruction trace support -#define SR_BEV 0x00400000 // Use boot exception vectors -#define SR_TS 0x00200000 // TLB shutdown -#define SR_SR 0x00100000 // Soft reset occured -#define SR_CH 0x00040000 // Cache hit for last 'cache' op -#define SR_CE 0x00020000 // Create ECC -#define SR_DE 0x00010000 // ECC of parity does not cause error +#define SR_CU3 0x80000000 /* Coprocessor 3 usable */ +#define SR_CU2 0x40000000 /* Coprocessor 2 usable */ +#define SR_CU1 0x20000000 /* Coprocessor 1 usable */ +#define SR_CU0 0x10000000 /* Coprocessor 0 usable */ +#define SR_RP 0x08000000 /* Reduced power (quarter speed) */ +#define SR_FR 0x04000000 /* MIPS III FP register mode */ +#define SR_RE 0x02000000 /* Reverse endian */ +#define SR_ITS 0x01000000 /* Instruction trace support */ +#define SR_BEV 0x00400000 /* Use boot exception vectors */ +#define SR_TS 0x00200000 /* TLB shutdown */ +#define SR_SR 0x00100000 /* Soft reset occured */ +#define SR_CH 0x00040000 /* Cache hit for last 'cache' op */ +#define SR_CE 0x00020000 /* Create ECC */ +#define SR_DE 0x00010000 /* ECC of parity does not cause error */ -// Interrupt enable bits -// (NOTE: bits set to 1 enable the corresponding level interrupt) -#define SR_IMASK 0x0000FF00 // Interrupt mask -#define SR_IMASK8 0x00000000 // mask level 8 -#define SR_IMASK7 0x00008000 // mask level 7 -#define SR_IMASK6 0x0000C000 // mask level 6 -#define SR_IMASK5 0x0000E000 // mask level 5 -#define SR_IMASK4 0x0000F000 // mask level 4 -#define SR_IMASK3 0x0000F800 // mask level 3 -#define SR_IMASK2 0x0000FC00 // mask level 2 -#define SR_IMASK1 0x0000FE00 // mask level 1 -#define SR_IMASK0 0x0000FF00 // mask level 0 +/* Interrupt enable bits */ +/* (NOTE: bits set to 1 enable the corresponding level interrupt) */ +#define SR_IMASK 0x0000FF00 /* Interrupt mask */ +#define SR_IMASK8 0x00000000 /* mask level 8 */ +#define SR_IMASK7 0x00008000 /* mask level 7 */ +#define SR_IMASK6 0x0000C000 /* mask level 6 */ +#define SR_IMASK5 0x0000E000 /* mask level 5 */ +#define SR_IMASK4 0x0000F000 /* mask level 4 */ +#define SR_IMASK3 0x0000F800 /* mask level 3 */ +#define SR_IMASK2 0x0000FC00 /* mask level 2 */ +#define SR_IMASK1 0x0000FE00 /* mask level 1 */ +#define SR_IMASK0 0x0000FF00 /* mask level 0 */ -#define SR_IBIT8 0x00008000 // bit level 8 -#define SR_IBIT7 0x00004000 // bit level 7 -#define SR_IBIT6 0x00002000 // bit level 6 -#define SR_IBIT5 0x00001000 // bit level 5 -#define SR_IBIT4 0x00000800 // bit level 4 -#define SR_IBIT3 0x00000400 // bit level 3 -#define SR_IBIT2 0x00000200 // bit level 2 -#define SR_IBIT1 0x00000100 // bit level 1 +#define SR_IBIT8 0x00008000 /* bit level 8 */ +#define SR_IBIT7 0x00004000 /* bit level 7 */ +#define SR_IBIT6 0x00002000 /* bit level 6 */ +#define SR_IBIT5 0x00001000 /* bit level 5 */ +#define SR_IBIT4 0x00000800 /* bit level 4 */ +#define SR_IBIT3 0x00000400 /* bit level 3 */ +#define SR_IBIT2 0x00000200 /* bit level 2 */ +#define SR_IBIT1 0x00000100 /* bit level 1 */ #define SR_IMASKSHIFT 8 -#define SR_KX 0x00000080 // extended-addr TLB vec in kernel -#define SR_SX 0x00000040 // xtended-addr TLB vec supervisor -#define SR_UX 0x00000020 // xtended-addr TLB vec in user mode -#define SR_KSU_MASK 0x00000018 // mode mask -#define SR_KSU_USR 0x00000010 // user mode -#define SR_KSU_SUP 0x00000008 // supervisor mode -#define SR_KSU_KER 0x00000000 // kernel mode -#define SR_ERL 0x00000004 // Error level, 1=>cache error -#define SR_EXL 0x00000002 // Exception level, 1=>exception -#define SR_IE 0x00000001 // interrupt enable, 1=>enable +#define SR_KX 0x00000080 /* extended-addr TLB vec in kernel */ +#define SR_SX 0x00000040 /* xtended-addr TLB vec supervisor */ +#define SR_UX 0x00000020 /* xtended-addr TLB vec in user mode */ +#define SR_KSU_MASK 0x00000018 /* mode mask */ +#define SR_KSU_USR 0x00000010 /* user mode */ +#define SR_KSU_SUP 0x00000008 /* supervisor mode */ +#define SR_KSU_KER 0x00000000 /* kernel mode */ +#define SR_ERL 0x00000004 /* Error level, 1=>cache error */ +#define SR_EXL 0x00000002 /* Exception level, 1=>exception */ +#define SR_IE 0x00000001 /* interrupt enable, 1=>enable */ -// Cause Register -#define CAUSE_BD 0x80000000 // Branch delay slot -#define CAUSE_CEMASK 0x30000000 // coprocessor error +/* Cause Register */ +#define CAUSE_BD 0x80000000 /* Branch delay slot */ +#define CAUSE_CEMASK 0x30000000 /* coprocessor error */ #define CAUSE_CESHIFT 28 -// Interrupt pending bits -#define CAUSE_IP8 0x00008000 // External level 8 pending - COMPARE -#define CAUSE_IP7 0x00004000 // External level 7 pending - INT4 -#define CAUSE_IP6 0x00002000 // External level 6 pending - INT3 -#define CAUSE_IP5 0x00001000 // External level 5 pending - INT2 -#define CAUSE_IP4 0x00000800 // External level 4 pending - INT1 -#define CAUSE_IP3 0x00000400 // External level 3 pending - INT0 -#define CAUSE_SW2 0x00000200 // Software level 2 pending -#define CAUSE_SW1 0x00000100 // Software level 1 pending +/* Interrupt pending bits */ +#define CAUSE_IP8 0x00008000 /* External level 8 pending - COMPARE */ +#define CAUSE_IP7 0x00004000 /* External level 7 pending - INT4 */ +#define CAUSE_IP6 0x00002000 /* External level 6 pending - INT3 */ +#define CAUSE_IP5 0x00001000 /* External level 5 pending - INT2 */ +#define CAUSE_IP4 0x00000800 /* External level 4 pending - INT1 */ +#define CAUSE_IP3 0x00000400 /* External level 3 pending - INT0 */ +#define CAUSE_SW2 0x00000200 /* Software level 2 pending */ +#define CAUSE_SW1 0x00000100 /* Software level 1 pending */ -#define CAUSE_IPMASK 0x0000FF00 // Pending interrupt mask +#define CAUSE_IPMASK 0x0000FF00 /* Pending interrupt mask */ #define CAUSE_IPSHIFT 8 -#define CAUSE_EXCMASK 0x0000007C // Cause code bits +#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */ #define CAUSE_EXCSHIFT 2 -// Cause register exception codes +/* Cause register exception codes */ #define EXC_CODE(x) ((x) << 2) -// Hardware exception codes -#define EXC_INT EXC_CODE(0) // interrupt -#define EXC_MOD EXC_CODE(1) // TLB mod -#define EXC_RMISS EXC_CODE(2) // Read TLB Miss -#define EXC_WMISS EXC_CODE(3) // Write TLB Miss -#define EXC_RADE EXC_CODE(4) // Read Address Error -#define EXC_WADE EXC_CODE(5) // Write Address Error -#define EXC_IBE EXC_CODE(6) // Instruction Bus Error -#define EXC_DBE EXC_CODE(7) // Data Bus Error -#define EXC_SYSCALL EXC_CODE(8) // SYSCALL -#define EXC_BREAK EXC_CODE(9) // BREAKpoint -#define EXC_II EXC_CODE(10) // Illegal Instruction -#define EXC_CPU EXC_CODE(11) // CoProcessor Unusable -#define EXC_OV EXC_CODE(12) // OVerflow -#define EXC_TRAP EXC_CODE(13) // Trap exception -#define EXC_VCEI EXC_CODE(14) // Virt. Coherency on Inst. fetch -#define EXC_FPE EXC_CODE(15) // Floating Point Exception -#define EXC_WATCH EXC_CODE(23) // Watchpoint reference -#define EXC_VCED EXC_CODE(31) // Virt. Coherency on data read +/* Hardware exception codes */ +#define EXC_INT EXC_CODE(0) /* interrupt */ +#define EXC_MOD EXC_CODE(1) /* TLB mod */ +#define EXC_RMISS EXC_CODE(2) /* Read TLB Miss */ +#define EXC_WMISS EXC_CODE(3) /* Write TLB Miss */ +#define EXC_RADE EXC_CODE(4) /* Read Address Error */ +#define EXC_WADE EXC_CODE(5) /* Write Address Error */ +#define EXC_IBE EXC_CODE(6) /* Instruction Bus Error */ +#define EXC_DBE EXC_CODE(7) /* Data Bus Error */ +#define EXC_SYSCALL EXC_CODE(8) /* SYSCALL */ +#define EXC_BREAK EXC_CODE(9) /* BREAKpoint */ +#define EXC_II EXC_CODE(10) /* Illegal Instruction */ +#define EXC_CPU EXC_CODE(11) /* CoProcessor Unusable */ +#define EXC_OV EXC_CODE(12) /* OVerflow */ +#define EXC_TRAP EXC_CODE(13) /* Trap exception */ +#define EXC_VCEI EXC_CODE(14) /* Virt. Coherency on Inst. fetch */ +#define EXC_FPE EXC_CODE(15) /* Floating Point Exception */ +#define EXC_WATCH EXC_CODE(23) /* Watchpoint reference */ +#define EXC_VCED EXC_CODE(31) /* Virt. Coherency on data read */ -// C0_PRID Defines +/* C0_PRID Defines */ #define C0_IMPMASK 0xFF00 #define C0_IMPSHIFT 8 #define C0_REVMASK 0xFF @@ -193,106 +191,106 @@ #define C0_MAJREVSHIFT 4 #define C0_MINREVMASK 0xF -// Coprocessor 0 operations -#define C0_READI 0x1 // read ITLB entry addressed by C0_INDEX -#define C0_WRITEI 0x2 // write ITLB entry addressed by C0_INDEX -#define C0_WRITER 0x6 // write ITLB entry addressed by C0_RAND -#define C0_PROBE 0x8 // probe for ITLB entry addressed by TLBHI -#define C0_RFE 0x10 // restore for exception +/* Coprocessor 0 operations */ +#define C0_READI 0x1 /* read ITLB entry addressed by C0_INDEX */ +#define C0_WRITEI 0x2 /* write ITLB entry addressed by C0_INDEX */ +#define C0_WRITER 0x6 /* write ITLB entry addressed by C0_RAND */ +#define C0_PROBE 0x8 /* probe for ITLB entry addressed by TLBHI */ +#define C0_RFE 0x10 /* restore for exception */ -// 'cache' instruction definitions +/* 'cache' instruction definitions */ -// Target cache -#define CACH_PI 0x0 // specifies primary inst. cache -#define CACH_PD 0x1 // primary data cache -#define CACH_SI 0x2 // secondary instruction cache -#define CACH_SD 0x3 // secondary data cache +/* Target cache */ +#define CACH_PI 0x0 /* specifies primary inst. cache */ +#define CACH_PD 0x1 /* primary data cache */ +#define CACH_SI 0x2 /* secondary instruction cache */ +#define CACH_SD 0x3 /* secondary data cache */ -// Cache operations -#define C_IINV 0x0 // index invalidate (inst, 2nd inst) -#define C_IWBINV 0x0 // index writeback inval (d, sd) -#define C_ILT 0x4 // index load tag (all) -#define C_IST 0x8 // index store tag (all) -#define C_CDX 0xC // create dirty exclusive (d, sd) -#define C_HINV 0x10 // hit invalidate (all) -#define C_HWBINV 0x14 // hit writeback inv. (d, sd) -#define C_FILL 0x14 // fill (i) -#define C_HWB 0x18 // hit writeback (i, d, sd) -#define C_HSV 0x1C // hit set virt. (si, sd) +/* Cache operations */ +#define C_IINV 0x0 /* index invalidate (inst, 2nd inst) */ +#define C_IWBINV 0x0 /* index writeback inval (d, sd) */ +#define C_ILT 0x4 /* index load tag (all) */ +#define C_IST 0x8 /* index store tag (all) */ +#define C_CDX 0xC /* create dirty exclusive (d, sd) */ +#define C_HINV 0x10 /* hit invalidate (all) */ +#define C_HWBINV 0x14 /* hit writeback inv. (d, sd) */ +#define C_FILL 0x14 /* fill (i) */ +#define C_HWB 0x18 /* hit writeback (i, d, sd) */ +#define C_HSV 0x1C /* hit set virt. (si, sd) */ -// Cache size definitions -#define ICACHE_SIZE 0x4000 // 16K -#define ICACHE_LINESIZE 32 // 8 words +/* Cache size definitions */ +#define ICACHE_SIZE 0x4000 /* 16K */ +#define ICACHE_LINESIZE 32 /* 8 words */ #define ICACHE_LINEMASK (ICACHE_LINESIZE - 1) -#define DCACHE_SIZE 0x2000 // 8K -#define DCACHE_LINESIZE 16 // 4 words +#define DCACHE_SIZE 0x2000 /* 8K */ +#define DCACHE_LINESIZE 16 /* 4 words */ #define DCACHE_LINEMASK (DCACHE_LINESIZE - 1) -// C0_CONFIG register definitions -#define CONFIG_CM 0x80000000 // 1 == Master-Checker enabled -#define CONFIG_EC 0x70000000 // System Clock ratio -#define CONFIG_EC_1_1 0x6 // System Clock ratio 1 :1 -#define CONFIG_EC_3_2 0x7 // System Clock ratio 1.5 :1 -#define CONFIG_EC_2_1 0x0 // System Clock ratio 2 :1 -#define CONFIG_EC_3_1 0x1 // System Clock ratio 3 :1 -#define CONFIG_EP 0x0F000000 // Transmit Data Pattern -#define CONFIG_SB 0x00C00000 // Secondary cache block size +/* C0_CONFIG register definitions */ +#define CONFIG_CM 0x80000000 /* 1 == Master-Checker enabled */ +#define CONFIG_EC 0x70000000 /* System Clock ratio */ +#define CONFIG_EC_1_1 0x6 /* System Clock ratio 1 :1 */ +#define CONFIG_EC_3_2 0x7 /* System Clock ratio 1.5 :1 */ +#define CONFIG_EC_2_1 0x0 /* System Clock ratio 2 :1 */ +#define CONFIG_EC_3_1 0x1 /* System Clock ratio 3 :1 */ +#define CONFIG_EP 0x0F000000 /* Transmit Data Pattern */ +#define CONFIG_SB 0x00C00000 /* Secondary cache block size */ -#define CONFIG_SS 0x00200000 // Split scache: 0 == I&D combined -#define CONFIG_SW 0x00100000 // scache port: 0==128, 1==64 -#define CONFIG_EW 0x000C0000 // System Port width: 0==64, 1==32 -#define CONFIG_SC 0x00020000 // 0 -> 2nd cache present -#define CONFIG_SM 0x00010000 // 0 -> Dirty Shared Coherency enable -#define CONFIG_BE 0x00008000 // Endian-ness: 1 --> BE -#define CONFIG_EM 0x00004000 // 1 -> ECC mode, 0 -> parity -#define CONFIG_EB 0x00002000 // Block order:1->sequent,0->subblock +#define CONFIG_SS 0x00200000 /* Split scache: 0 == I&D combined */ +#define CONFIG_SW 0x00100000 /* scache port: 0==128, 1==64 */ +#define CONFIG_EW 0x000C0000 /* System Port width: 0==64, 1==32 */ +#define CONFIG_SC 0x00020000 /* 0 -> 2nd cache present */ +#define CONFIG_SM 0x00010000 /* 0 -> Dirty Shared Coherency enable */ +#define CONFIG_BE 0x00008000 /* Endian-ness: 1 --> BE */ +#define CONFIG_EM 0x00004000 /* 1 -> ECC mode, 0 -> parity */ +#define CONFIG_EB 0x00002000 /* Block order:1->sequent,0->subblock */ -#define CONFIG_IC 0x00000E00 // Primary Icache size -#define CONFIG_DC 0x000001C0 // Primary Dcache size -#define CONFIG_IB 0x00000020 // Icache block size -#define CONFIG_DB 0x00000010 // Dcache block size -#define CONFIG_CU 0x00000008 // Update on Store-conditional -#define CONFIG_K0 0x00000007 // K0SEG Coherency algorithm +#define CONFIG_IC 0x00000E00 /* Primary Icache size */ +#define CONFIG_DC 0x000001C0 /* Primary Dcache size */ +#define CONFIG_IB 0x00000020 /* Icache block size */ +#define CONFIG_DB 0x00000010 /* Dcache block size */ +#define CONFIG_CU 0x00000008 /* Update on Store-conditional */ +#define CONFIG_K0 0x00000007 /* K0SEG Coherency algorithm */ -#define CONFIG_UNCACHED 0x00000002 // K0 is uncached +#define CONFIG_UNCACHED 0x00000002 /* K0 is uncached */ #define CONFIG_NONCOHRNT 0x00000003 #define CONFIG_COHRNT_EXLWR 0x00000005 -#define CONFIG_SB_SHFT 22 // shift SB to bit position 0 -#define CONFIG_IC_SHFT 9 // shift IC to bit position 0 -#define CONFIG_DC_SHFT 6 // shift DC to bit position 0 -#define CONFIG_BE_SHFT 15 // shift BE to bit position 0 +#define CONFIG_SB_SHFT 22 /* shift SB to bit position 0 */ +#define CONFIG_IC_SHFT 9 /* shift IC to bit position 0 */ +#define CONFIG_DC_SHFT 6 /* shift DC to bit position 0 */ +#define CONFIG_BE_SHFT 15 /* shift BE to bit position 0 */ -// C0_TAGLO definitions for setting/getting cache states and physaddr bits -#define SADDRMASK 0xFFFFE000 // 31..13 -> scache paddr bits 35..17 -#define SVINDEXMASK 0x00000380 // 9..7: prim virt index bits 14..12 -#define SSTATEMASK 0x00001C00 // bits 12..10 hold scache line state -#define SINVALID 0x00000000 // invalid --> 000 == state 0 -#define SCLEANEXCL 0x00001000 // clean exclusive --> 100 == state 4 -#define SDIRTYEXCL 0x00001400 // dirty exclusive --> 101 == state 5 -#define SECC_MASK 0x0000007F // low 7 bits are ecc for the tag -#define SADDR_SHIFT 4 // shift STagLo (31..13) to 35..17 +/* C0_TAGLO definitions for setting/getting cache states and physaddr bits */ +#define SADDRMASK 0xFFFFE000 /* 31..13 -> scache paddr bits 35..17 */ +#define SVINDEXMASK 0x00000380 /* 9..7: prim virt index bits 14..12 */ +#define SSTATEMASK 0x00001C00 /* bits 12..10 hold scache line state */ +#define SINVALID 0x00000000 /* invalid --> 000 == state 0 */ +#define SCLEANEXCL 0x00001000 /* clean exclusive --> 100 == state 4 */ +#define SDIRTYEXCL 0x00001400 /* dirty exclusive --> 101 == state 5 */ +#define SECC_MASK 0x0000007F /* low 7 bits are ecc for the tag */ +#define SADDR_SHIFT 4 /* shift STagLo (31..13) to 35..17 */ -#define PADDRMASK 0xFFFFFF00 // PTagLo31..8->prim paddr bits35..12 -#define PADDR_SHIFT 4 // roll bits 35..12 down to 31..8 -#define PSTATEMASK 0x00C0 // bits 7..6 hold primary line state -#define PINVALID 0x0000 // invalid --> 000 == state 0 -#define PCLEANEXCL 0x0080 // clean exclusive --> 10 == state 2 -#define PDIRTYEXCL 0x00C0 // dirty exclusive --> 11 == state 3 -#define PPARITY_MASK 0x0001 // low bit is parity bit (even). +#define PADDRMASK 0xFFFFFF00 /* PTagLo31..8->prim paddr bits35..12 */ +#define PADDR_SHIFT 4 /* roll bits 35..12 down to 31..8 */ +#define PSTATEMASK 0x00C0 /* bits 7..6 hold primary line state */ +#define PINVALID 0x0000 /* invalid --> 000 == state 0 */ +#define PCLEANEXCL 0x0080 /* clean exclusive --> 10 == state 2 */ +#define PDIRTYEXCL 0x00C0 /* dirty exclusive --> 11 == state 3 */ +#define PPARITY_MASK 0x0001 /* low bit is parity bit (even). */ -// C0_CACHE_ERR definitions. -#define CACHERR_ER 0x80000000 // 0: inst ref, 1: data ref -#define CACHERR_EC 0x40000000 // 0: primary, 1: secondary -#define CACHERR_ED 0x20000000 // 1: data error -#define CACHERR_ET 0x10000000 // 1: tag error -#define CACHERR_ES 0x08000000 // 1: external ref, e.g. snoo -#define CACHERR_EE 0x04000000 // error on SysAD bus -#define CACHERR_EB 0x02000000 // complicated, see spec. -#define CACHERR_EI 0x01000000 // complicated, see spec. -#define CACHERR_SIDX_MASK 0x003FFFF8 // secondary cache index -#define CACHERR_PIDX_MASK 0x00000007 // primary cache index -#define CACHERR_PIDX_SHIFT 12 // bits 2..0 are paddr14..12 +/* C0_CACHE_ERR definitions. */ +#define CACHERR_ER 0x80000000 /* 0: inst ref, 1: data ref */ +#define CACHERR_EC 0x40000000 /* 0: primary, 1: secondary */ +#define CACHERR_ED 0x20000000 /* 1: data error */ +#define CACHERR_ET 0x10000000 /* 1: tag error */ +#define CACHERR_ES 0x08000000 /* 1: external ref, e.g. snoo */ +#define CACHERR_EE 0x04000000 /* error on SysAD bus */ +#define CACHERR_EB 0x02000000 /* complicated, see spec. */ +#define CACHERR_EI 0x01000000 /* complicated, see spec. */ +#define CACHERR_SIDX_MASK 0x003FFFF8 /* secondary cache index */ +#define CACHERR_PIDX_MASK 0x00000007 /* primary cache index */ +#define CACHERR_PIDX_SHIFT 12 /* bits 2..0 are paddr14..12 */ /* * R4000 family supports hardware watchpoints: @@ -311,57 +309,88 @@ #define WATCHLO_VALIDMASK 0xFFFFFFFB #define WATCHHI_VALIDMASK 0x0000000F -// Coprocessor 0 registers -#define C0_INX C_REG(0) -#define C0_RAND C_REG(1) -#define C0_ENTRYLO0 C_REG(2) -#define C0_ENTRYLO1 C_REG(3) -#define C0_CONTEXT C_REG(4) -#define C0_PAGEMASK C_REG(5) // page mask -#define C0_WIRED C_REG(6) // # wired entries in tlb -#define C0_BADVADDR C_REG(8) -#define C0_COUNT C_REG(9) // free-running counter -#define C0_ENTRYHI C_REG(10) -#define C0_COMPARE C_REG(11) // counter comparison reg. -#define C0_SR C_REG(12) -#define C0_CAUSE C_REG(13) -#define C0_EPC C_REG(14) -#define C0_PRID C_REG(15) // revision identifier -#define C0_CONFIG C_REG(16) // hardware configuration -#define C0_LLADDR C_REG(17) // load linked address -#define C0_WATCHLO C_REG(18) // watchpoint -#define C0_WATCHHI C_REG(19) // watchpoint -#define C0_ECC C_REG(26) // S-cache ECC and primary parity -#define C0_CACHE_ERR C_REG(27) // cache error status -#define C0_TAGLO C_REG(28) // cache operations -#define C0_TAGHI C_REG(29) // cache operations -#define C0_ERROR_EPC C_REG(30) // ECC error prg. counter +/* Coprocessor 0 registers */ +#ifdef _LANGUAGE_C +#define C0_INX 0 +#define C0_RAND 1 +#define C0_ENTRYLO0 2 +#define C0_ENTRYLO1 3 +#define C0_CONTEXT 4 +#define C0_PAGEMASK 5 /* page mask */ +#define C0_WIRED 6 /* # wired entries in tlb */ +#define C0_BADVADDR 8 +#define C0_COUNT 9 /* free-running counter */ +#define C0_ENTRYHI 10 +#define C0_COMPARE 11 /* counter comparison reg. */ +#define C0_SR 12 +#define C0_CAUSE 13 +#define C0_EPC 14 +#define C0_PRID 15 /* revision identifier */ +#define C0_CONFIG 16 /* hardware configuration */ +#define C0_LLADDR 17 /* load linked address */ +#define C0_WATCHLO 18 /* watchpoint */ +#define C0_WATCHHI 19 /* watchpoint */ +#define C0_ECC 26 /* S-cache ECC and primary parity */ +#define C0_CACHE_ERR 27 /* cache error status */ +#define C0_TAGLO 28 /* cache operations */ +#define C0_TAGHI 29 /* cache operations */ +#define C0_ERROR_EPC 30 /* ECC error prg. counter */ +#else +#define C0_INX $0 +#define C0_RAND $1 +#define C0_ENTRYLO0 $2 +#define C0_ENTRYLO1 $3 +#define C0_CONTEXT $4 +#define C0_PAGEMASK $5 /* page mask */ +#define C0_WIRED $6 /* # wired entries in tlb */ +#define C0_BADVADDR $8 +#define C0_COUNT $9 /* free-running counter */ +#define C0_ENTRYHI $10 +#define C0_COMPARE $11 /* counter comparison reg. */ +#define C0_SR $12 +#define C0_CAUSE $13 +#define C0_EPC $14 +#define C0_PRID $15 /* revision identifier */ +#define C0_CONFIG $16 /* hardware configuration */ +#define C0_LLADDR $17 /* load linked address */ +#define C0_WATCHLO $18 /* watchpoint */ +#define C0_WATCHHI $19 /* watchpoint */ +#define C0_ECC $26 /* S-cache ECC and primary parity */ +#define C0_CACHE_ERR $27 /* cache error status */ +#define C0_TAGLO $28 /* cache operations */ +#define C0_TAGHI $29 /* cache operations */ +#define C0_ERROR_EPC $30 /* ECC error prg. counter */ +#endif -// floating-point status register -#define C1_FPCSR C_REG(31) +/* floating-point status register */ +#ifdef _LANGUAGE_C +#define C1_FPCSR 31 +#else +#define C1_FPCSR $31 +#endif -#define FPCSR_FS 0x01000000 // flush denorm to zero -#define FPCSR_C 0x00800000 // condition bit -#define FPCSR_CE 0x00020000 // cause: unimplemented operation -#define FPCSR_CV 0x00010000 // cause: invalid operation -#define FPCSR_CZ 0x00008000 // cause: division by zero -#define FPCSR_CO 0x00004000 // cause: overflow -#define FPCSR_CU 0x00002000 // cause: underflow -#define FPCSR_CI 0x00001000 // cause: inexact operation -#define FPCSR_EV 0x00000800 // enable: invalid operation -#define FPCSR_EZ 0x00000400 // enable: division by zero -#define FPCSR_EO 0x00000200 // enable: overflow -#define FPCSR_EU 0x00000100 // enable: underflow -#define FPCSR_EI 0x00000080 // enable: inexact operation -#define FPCSR_FV 0x00000040 // flag: invalid operation -#define FPCSR_FZ 0x00000020 // flag: division by zero -#define FPCSR_FO 0x00000010 // flag: overflow -#define FPCSR_FU 0x00000008 // flag: underflow -#define FPCSR_FI 0x00000004 // flag: inexact operation -#define FPCSR_RM_MASK 0x00000003 // rounding mode mask -#define FPCSR_RM_RN 0x00000000 // round to nearest -#define FPCSR_RM_RZ 0x00000001 // round to zero -#define FPCSR_RM_RP 0x00000002 // round to positive infinity -#define FPCSR_RM_RM 0x00000003 // round to negative infinity +#define FPCSR_FS 0x01000000 /* flush denorm to zero */ +#define FPCSR_C 0x00800000 /* condition bit */ +#define FPCSR_CE 0x00020000 /* cause: unimplemented operation */ +#define FPCSR_CV 0x00010000 /* cause: invalid operation */ +#define FPCSR_CZ 0x00008000 /* cause: division by zero */ +#define FPCSR_CO 0x00004000 /* cause: overflow */ +#define FPCSR_CU 0x00002000 /* cause: underflow */ +#define FPCSR_CI 0x00001000 /* cause: inexact operation */ +#define FPCSR_EV 0x00000800 /* enable: invalid operation */ +#define FPCSR_EZ 0x00000400 /* enable: division by zero */ +#define FPCSR_EO 0x00000200 /* enable: overflow */ +#define FPCSR_EU 0x00000100 /* enable: underflow */ +#define FPCSR_EI 0x00000080 /* enable: inexact operation */ +#define FPCSR_FV 0x00000040 /* flag: invalid operation */ +#define FPCSR_FZ 0x00000020 /* flag: division by zero */ +#define FPCSR_FO 0x00000010 /* flag: overflow */ +#define FPCSR_FU 0x00000008 /* flag: underflow */ +#define FPCSR_FI 0x00000004 /* flag: inexact operation */ +#define FPCSR_RM_MASK 0x00000003 /* rounding mode mask */ +#define FPCSR_RM_RN 0x00000000 /* round to nearest */ +#define FPCSR_RM_RZ 0x00000001 /* round to zero */ +#define FPCSR_RM_RP 0x00000002 /* round to positive infinity */ +#define FPCSR_RM_RM 0x00000003 /* round to negative infinity */ #endif diff --git a/include/ultra64/asm.h b/include/ultra64/asm.h index 2a2536bdaa..d887673fa6 100644 --- a/include/ultra64/asm.h +++ b/include/ultra64/asm.h @@ -6,55 +6,107 @@ #define _MIPS_ISA_MIPS2 2 #define _MIPS_ISA_MIPS3 3 #define _MIPS_ISA_MIPS4 4 + +#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ +#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ + /* NABI32 is 64bit calling convention but 32bit type sizes) */ +#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ #endif #ifndef _LANGUAGE_C +#ifdef __GNUC__ +#define TYPE(x, t) .type x, @t +#define SIZE(x) .size x, . - x +#else +#define TYPE(x, t) +#define SIZE(x) +#endif + #define LEAF(x) \ - .balign 4 ;\ + .align 2 ;\ .globl x ;\ - .type x, @function ;\ + TYPE(x, function) ;\ + .ent x, 0 ;\ x: ;\ - .ent x, 0 ;\ - .frame $sp, 0, $ra + .frame sp, 0, ra #define XLEAF(x) \ - .balign 4 ;\ + .align 2 ;\ .globl x ;\ - .type x, @function ;\ - x: ;\ - .aent x, 0 + TYPE(x, function) ;\ + .aent x, 0 ;\ + x: #define NESTED(x, fsize, ra) \ .globl x ;\ + .ent x, 0 ;\ x: ;\ - .ent x, 0 ;\ - .frame $sp, fsize, ra + .frame sp, fsize, ra #define XNESTED(x) \ .globl x ;\ - x: ;\ - .aent x, 0 + .aent x, 0 ;\ + x: #define END(x) \ - .size x, . - x ;\ + SIZE(x) ;\ .end x -#define IMPORT(x, size) \ - .extern x, size - #define EXPORT(x) \ .globl x ;\ x: +#ifdef __sgi +#define IMPORT(sym, size) \ + .extern sym, size +#else +#define IMPORT(sym, size) +#endif + #define DATA(x) \ - .balign 4 ;\ + .align 2 ;\ .globl x ;\ - .type x, @object ;\ + TYPE(x, object) ;\ x: #define ENDDATA(x) \ - .size x, . - x + SIZE(x) + +#define MFC0(dst, src) \ + .set noreorder; mfc0 dst, src; .set reorder +#define MTC0(dst, src) \ + .set noreorder; mtc0 dst, src; .set reorder + +#define CACHE(op, base) \ + .set noreorder; cache op, base; .set reorder + +#define CFC1(dst, src) \ + .set noreorder; cfc1 dst, src; .set reorder +#define CTC1(src, dst) \ + .set noreorder; ctc1 src, dst; .set reorder + +#define NOP \ + .set noreorder; nop; .set reorder + +#define TLBWI \ + .set noreorder; tlbwi; .set reorder + +#define TLBR \ + .set noreorder; tlbr; .set reorder + +#define TLBP \ + .set noreorder; tlbp; .set reorder + +#ifndef __GNUC__ +#define ABS(x, y) \ + .globl x; \ + x = y +#else +#define ABS(x, y) \ + .globl x; \ + .set x, y +#endif #endif @@ -62,11 +114,11 @@ * Stack Alignment */ #if (_MIPS_SIM == _ABIO32) -#define NARGSAVE 4 // space for 4 args must be allocated +#define NARGSAVE 4 /* space for 4 args must be allocated */ #define ALSZ (8-1) #define ALMASK ~(8-1) #elif (_MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64) -#define NARGSAVE 0 // no caller responsibilities +#define NARGSAVE 0 /* no caller responsibilities */ #define ALSZ (16-1) #define ALMASK ~(16-1) #endif diff --git a/include/ultra64/bbskapi.h b/include/ultra64/bbskapi.h new file mode 100644 index 0000000000..7918975475 --- /dev/null +++ b/include/ultra64/bbskapi.h @@ -0,0 +1,272 @@ +/** + * @file bbskapi.h + * + * This file contains the external API for the iQue Player's Secure Kernel Calls. + * + * Applications require permission to call particular Secure Kernel Calls, defined in the associated Ticket. + * Most are not callable by games. + */ +#ifndef BB_SKAPI_H +#define BB_SKAPI_H + +#include "ultratypes.h" + +#define SKC_OK 0 +#define SKC_RECRYPT_INVALID 1 +#define SKC_RECRYPT_2 2 // Complete? +#define SKC_RECRYPT_3 3 // Partial? +#define SKC_RECRYPT_4 4 // Beginning? +#define SKC_INVALID_ARGS -1 +#define SKC_INVALID_TSRL -2 +#define SKC_INVALID_CARL -3 +#define SKC_INVALID_CPRL -4 +#define SKC_INVALID_CERT -9 +#define SKC_NO_PERMISSION -11 + +typedef struct BbAppLaunchCrls BbAppLaunchCrls; +typedef struct BbCertBase BbCertBase; +typedef struct BbEccSig BbEccSig; +typedef struct BbRecryptList BbRecryptList; +typedef struct BbShaHash BbShaHash; +typedef struct BbTicketBundle BbTicketBundle; + +/** + * Retrieves the console's unique BBID. + * + * @param bbId Location to write the BBID to. Must be a pointer to cached DRAM with 4-byte alignment. + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_INVALID_ARGS If the supplied pointer is not valid. + * SKC_OK Otherwise. + */ +s32 skGetId(u32* bbId); + +/** + * Prepares to launch an application. + * The provided ticket bundle is verified and made the active ticket bundle. + * The AES decryption hardware is prepared. + * + * @param bundle Ticket Bundle associated with this application. + * @param crls Application Certificate Revocation Lists to check when verifying the ticket bundle. + * The ticket bundle must be signed by the Root signature without going through any + * revoked certificates. + * @param recryptList System Recrypt List (encrypted and digitally signed) + * @return + * SKC_INVALID_ARGS If any inputs are or contain invalid pointers, + * or the ticket is not for this console, + * or the ticket is for a trial that has expired. + * SKC_INVALID_TSRL If the provided TSRL revocation list is invalid. + * SKC_INVALID_CARL If the provided CARL revocation list is invalid. + * SKC_INVALID_CPRL If the provided CPRL revocation list is invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_RECRYPT_3 If the recrypt state for this app is not in an acceptable state to be launched. + * SKC_RECRYPT_4 If the recrypt state for this app is not in an acceptable state to be launched. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skLaunchSetup(BbTicketBundle* bundle, BbAppLaunchCrls* crls, BbRecryptList* recryptList); + +/** + * Launches a prepared application that is assumed to have been loaded into memory at the entrypoint between calling + * skLaunchSetup and calling this. skLaunchSetup must have been called prior to set the active ticket bundle. + * + * @param entrypoint The entrypoint address of the app to launch. + * + * @return + * SKC_INVALID_ARGS If the entrypoint is an invalid pointer, + * or if content failed a hash check for non-recrypted apps, + * or if the content is an expired trial. + * SKC_NO_PERMISSION If called with insufficient permission. + * @note Does not return if the call is successful. + */ +s32 skLaunch(void* entrypoint); + +/** + * Verifies whether a provided Recrypt List is valid. + * + * @param recryptList Pointer to the (encrypted and digitally signed) recrypt list to verify. + * @return + * SKC_OK If the recrypt list is valid + * SKC_INVALID_ARGS If the recrypt list is invalid + * (e.g. contains invalid pointers or its ECDSA signature fails to verify) + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skRecryptListValid(BbRecryptList* recryptList); + +/** + * Begins a new recryption task. Content downloaded is initially encrypted with the Common Key but may be re-encrypted + * with a new randomly generated AES key if the recrypt flag is set in the content metadata. Like with skLaunchSetup, + * the provided ticket bundle is first verified before being made the active ticket bundle. + * + * @param bundle The ticket bundle associated with the content that will be recrypted. + * @param crls Application Certificate Revocation Lists to check when verifying the ticket bundle. + * The ticket bundle must be signed by the Root signature without going through any + * revoked certificates. + * @param recryptList The recrypt list that the AES key will be saved to, after being encrypted with the + * console-specific recrypt list key. + * @return + * SKC_RECRYPT_INVALID If called on a ticket bundle that does not have the recrypt flag set. + * SKC_INVALID_ARGS If any inputs are or contain invalid pointers, + * or the ticket is not for this console, + * or the ticket is for a trial that has expired. + * SKC_INVALID_TSRL If the provided TSRL revocation list is invalid. + * SKC_INVALID_CARL If the provided CARL revocation list is invalid. + * SKC_INVALID_CPRL If the provided CPRL revocation list is invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_NO_PERMISSION If called with insufficient permission. + * Otherwise, one of SKC_RECRYPT_* will be returned communicating the initial state of the recryption process. + */ +s32 skRecryptBegin(BbTicketBundle* bundle, BbAppLaunchCrls* crls, BbRecryptList* recryptList); + +/** + * Recrypts the provided data, using the previously set context. + * Must be called following skRecryptBegin. + * + * @param buf Pointer to app content to encrypt and hash. + * @param size Amount of data to process in this buffer. + * @return + * SKC_INVALID_ARGS If the provided buffer is not fully contained in RAM or is otherwise invalid. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skRecryptData(u8* buf, u32 size); + +/** + * Resumes a partially-complete recryption. The last chunk of successfully-recrypted data must be provided in order to + * set the AES-128-CBC Initialization Vector to continue recryption of the next chunk. + * Must be called following skRecryptBegin. + * + * @param buf Pointer to last chunk of successfully-recrypted content. + * @param size Amount of data available. + * @return + * SKC_INVALID_ARGS If the provided buffer is not fully contained in RAM or is otherwise invalid. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skRecryptComputeState(u8* buf, u32 size); + +/** + * Concludes the recryption process. The SHA-1 hash of the content, computed during recryption, is checked against the + * hash in the active ticket bundle; if it passes, the recrypt list entry for the active content is updated to indicate + * that recryption is complete and was successful. + * + * @param recryptList The (encrypted and digitally signed) recrypt list to update. + * @return + * SKC_OK If recryption succeeded. + * SKC_INVALID_ARGS If recryption failed (e.g. if the hash of the content did not match the hash in the ticket bundle) + * or if the provided recrypt list is invalid or cannot find the entry for the content. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skRecryptEnd(BbRecryptList* recryptList); + +/** + * Generates a digital signature for the provided SHA-1 hash (treated as a message) using the Elliptic Curve Digital + * Signature Algorithm (ECDSA) on the curve sect233r1 with the console's ECDSA Private Key. Appends an identity of 1 to + * the end of the message prior to signing. + * + * @param hash The SHA-1 hash to sign. + * @param outSignature The resulting ECDSA digital signature. + * @return + * SKC_INVALID_ARGS If either of the arguments is an invalid pointer. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skSignHash(BbShaHash* hash, BbEccSig* outSignature); + +/** + * Verifies a SHA-1 hash (treated as a message) against a digital signature using either the Elliptic Curve Digital + * Signature Algorithm (ECDSA) or the RSA Digital Signature Algorithm. For RSA, either 2048-bit or 4096-bit signatures + * can be recognized. + * + * For verifying self-signed (e.g. via skSignHash) ECDSA signatures the certificate chain and revocation lists are not + * required and may be passed as NULL, the public key is the console's own ECDSA public key. For verifying other types + * of signatures, a valid certificate chain and certificate revocation lists must be provided, in which case the + * signature must be signed by the Root certificate without going through any revoked certificates. + * + * This can only verify hashes signed with an identity of 1, such as those signed via skSignHash. + * + * @param hash The SHA-1 hash to check the signature of. + * @param signature The signature to compare against. May be an ECDSA, RSA2048 or RSA4096 signature. + * @param certChain Certificate Chain, NULL-terminated list of certificate pointers. + * Not required for self-signed ECDSA signatures and must be NULL in that case. + * Should not be more than 5 certificates long. + * Should end on the Root signature. + * @param crls Certificate Revocation Lists to check certificates against. Not required for self-signed ECDSA signatures. + * @return + * SKC_OK If the hash was successfully verified against the signature. + * SKC_INVALID_ARGS If any arguments are invalid pointers, + * or the hash could not be verified against the digital signature, + * or the certificate chain was invalid, + * or if any certificate revocation lists were invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skVerifyHash(BbShaHash* hash, u32* signature, BbCertBase** certChain, BbAppLaunchCrls* crls); + +/** + * Retrieves the consumption counters for all currently-tracked applications and the Ticket ID (TID) Window. + * + * The TID Window determines the TID for the first counter (cc[0]), the other counters (cc[i]) are associated with + * tidWindow + i. + * + * The consumption counters track either the number of minutes that a trial app has been played for, or the number of + * times a trial app has been launched. + * + * @param tidWindow The location to save the TID window to. + * @param cc An array of 26 u16s to save the consumption counters into. + * @return + * SKC_INVALID_ARGS If either pointer is invalid or there is not enough room to save all the consumption counters. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skGetConsumption(u16* tidWindow, u16 cc[26]); + +/** + * Increments the Ticket ID Window by 1 and moves all consumption counters down by 1 slot to match the new window. The + * counter previously at position 0 is forgotten. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_INVALID_ARGS If the resulting state could not be saved internally. + * SKC_OK If success. + */ +s32 skAdvanceTicketWindow(void); + +/** + * Overrides the trial limit and trial type stored in the currently loaded ticket. + * + * @param limit The new trial limit. Either a length of time or the number of allowed launches, depending on trial type. + * @param code The new trial type + * 0 = Time-limited in minutes, call skKeepAlive periodically + * 1 = Limited by number of launches + * 2 = Time-limited in minutes, no need to call skKeepAlive (TOVERIFY) + * @return + * SKC_OK If success. + * SKC_INVALID_ARGS If no ticket is currently loaded. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skSetLimit(u16 limit, u16 code); + +/** + * Returns to the system menu. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * @note Does not return if called with permission. + */ +s32 skExit(void); + +/** + * Keeps trial applications alive. + * + * The hardware trial timer does not have a very long period so must be refreshed periodically by calling this function. + * This function updates the timer and checks for an expiry. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + * @note This function may not return if it detects the trial has expired. + */ +s32 skKeepAlive(void); + +#endif diff --git a/include/ultra64/bcp.h b/include/ultra64/bcp.h new file mode 100644 index 0000000000..f66fee2f02 --- /dev/null +++ b/include/ultra64/bcp.h @@ -0,0 +1,275 @@ +#ifndef BCP_H +#define BCP_H + +#include "rcp.h" + +/****************************************************************************** + * Additional MIPS Interface (MI) Registers + */ + +/** + * Accesses to this register outside of Secure Mode cause an NMI to transfer control + * to the Secure Kernel. + * + * [25] ?: System software writes to this bit when launching an app or game + * [24] SK RAM Access: Set to 1 to enable access to 0x8000 bytes at 0x1FC40000 + * [7] Secure Trap Cause: Memory card removed + * [6] Secure Trap Cause: Power button pressed + * [5] Secure Trap Cause: MI Error + * [4] Secure Trap Cause: PI Error + * [3] Secure Trap Cause: Timer expired + * [2] Secure Trap Cause: Syscall via read of this register outside of secure mode + * [1] Boot ROM Swap: 0 = SK mapped at 0x1FC00000, Boot ROM mapped at 0x1FC20000 + * 1 = Boot ROM mapped at 0x1FC00000, SK mapped at 0x1FC20000 + * [0] Secure Mode: 0 = not in secure mode + * 1 = in secure mode + */ +#define MI_SECURE_EXCEPTION_REG (MI_BASE_REG + 0x14) + +/** + * Read: + * [25] MD (active, 1 if card is currently disconnected else 0) + * [24] Power Button (active, 1 if button is currently pressed else 0) + * [13] MD (pending interrupt) + * [12] Power Button (pending interrupt) + * [11] USB1 + * [10] USB0 + * [ 9] PI_ERR + * [ 8] IDE + * [ 7] AES + * [ 6] FLASH + * [ 5] DP + * [ 4] PI + * [ 3] VI + * [ 2] AI + * [ 1] SI + * [ 0] SP + * + * Write: + * [13] Clear MD Interrupt + */ +#define MI_EX_INTR_REG (MI_BASE_REG + 0x38) + +/* + * MI_EX_INTR_REG: read bits + */ +#define MI_EX_INTR_SP (1 << 0) +#define MI_EX_INTR_SI (1 << 1) +#define MI_EX_INTR_AI (1 << 2) +#define MI_EX_INTR_VI (1 << 3) +#define MI_EX_INTR_PI (1 << 4) +#define MI_EX_INTR_DP (1 << 5) +#define MI_EX_INTR_FLASH (1 << 6) +#define MI_EX_INTR_AES (1 << 7) +#define MI_EX_INTR_IDE (1 << 8) +#define MI_EX_INTR_PI_ERR (1 << 9) +#define MI_EX_INTR_USB0 (1 << 10) +#define MI_EX_INTR_USB1 (1 << 11) +#define MI_EX_INTR_PWR_BTN (1 << 12) +#define MI_EX_INTR_MD (1 << 13) +#define MI_EX_INTR_PWR_BTN_PRESSED (1 << 24) /* updated in real-time, unrelated to interrupt */ +#define MI_EX_INTR_CARD_NOT_PRESENT (1 << 25) /* updated in real-time, unrelated to interrupt */ + +#define MI_EX_INTR_ALL \ + (MI_EX_INTR_FLASH | MI_EX_INTR_AES | MI_EX_INTR_IDE | MI_EX_INTR_PI_ERR | \ + MI_EX_INTR_USB0 | MI_EX_INTR_USB1 | MI_EX_INTR_PWR_BTN | MI_EX_INTR_MD) + +/* + * MI_EX_INTR_REG: write bits + */ +#define MI_EX_INTR_CLR_MD (1 << 13) + +/** + * Write: + * [27:26] Set/Clear MD + * [25:24] Set/Clear BUTTON + * [23:22] Set/Clear USB1 + * [21:20] Set/Clear USB0 + * [19:18] Set/Clear PI_ERR + * [17:16] Set/Clear IDE + * [15:14] Set/Clear AES + * [13:12] Set/Clear FLASH + * [11:10] Set/Clear DP + * [ 9: 8] Set/Clear PI + * [ 7: 6] Set/Clear VI + * [ 5: 4] Set/Clear AI + * [ 3: 2] Set/Clear SI + * [ 1: 0] Set/Clear SP + * + * Read: + * [13] MD + * [12] BUTTON + * [11] USB1 + * [10] USB0 + * [ 9] PI_ERR + * [ 8] IDE + * [ 7] AES + * [ 6] FLASH + * [ 5] DP + * [ 4] PI + * [ 3] VI + * [ 2] AI + * [ 1] SI + * [ 0] SP + */ +#define MI_EX_INTR_MASK_REG (MI_BASE_REG + 0x3C) + +/* + * MI_EX_INTR_MASK_REG: write bits + */ +#define MI_EX_INTR_MASK_CLR_SP (1 << 0) /* clear SP mask */ +#define MI_EX_INTR_MASK_SET_SP (1 << 1) /* set SP mask */ +#define MI_EX_INTR_MASK_CLR_SI (1 << 2) /* clear SI mask */ +#define MI_EX_INTR_MASK_SET_SI (1 << 3) /* set SI mask */ +#define MI_EX_INTR_MASK_CLR_AI (1 << 4) /* clear AI mask */ +#define MI_EX_INTR_MASK_SET_AI (1 << 5) /* set AI mask */ +#define MI_EX_INTR_MASK_CLR_VI (1 << 6) /* clear VI mask */ +#define MI_EX_INTR_MASK_SET_VI (1 << 7) /* set VI mask */ +#define MI_EX_INTR_MASK_CLR_PI (1 << 8) /* clear PI mask */ +#define MI_EX_INTR_MASK_SET_PI (1 << 9) /* set PI mask */ +#define MI_EX_INTR_MASK_CLR_DP (1 << 10) /* clear DP mask */ +#define MI_EX_INTR_MASK_SET_DP (1 << 11) /* set DP mask */ +#define MI_EX_INTR_MASK_CLR_FLASH (1 << 12) /* clear FLASH mask */ +#define MI_EX_INTR_MASK_SET_FLASH (1 << 13) /* set FLASH mask */ +#define MI_EX_INTR_MASK_CLR_AES (1 << 14) /* clear AES mask */ +#define MI_EX_INTR_MASK_SET_AES (1 << 15) /* set AES mask */ +#define MI_EX_INTR_MASK_CLR_IDE (1 << 16) /* clear IDE mask */ +#define MI_EX_INTR_MASK_SET_IDE (1 << 17) /* set IDE mask */ +#define MI_EX_INTR_MASK_CLR_PI_ERR (1 << 18) /* clear PI_ERR mask */ +#define MI_EX_INTR_MASK_SET_PI_ERR (1 << 19) /* set PI_ERR mask */ +#define MI_EX_INTR_MASK_CLR_USB0 (1 << 20) /* clear USB0 mask */ +#define MI_EX_INTR_MASK_SET_USB0 (1 << 21) /* set USB0 mask */ +#define MI_EX_INTR_MASK_CLR_USB1 (1 << 22) /* clear USB1 mask */ +#define MI_EX_INTR_MASK_SET_USB1 (1 << 23) /* set USB1 mask */ +#define MI_EX_INTR_MASK_CLR_PWR_BTN (1 << 24) /* clear PWR_BTN mask */ +#define MI_EX_INTR_MASK_SET_PWR_BTN (1 << 25) /* set PWR_BTN mask */ +#define MI_EX_INTR_MASK_CLR_MD (1 << 26) /* clear MD mask */ +#define MI_EX_INTR_MASK_SET_MD (1 << 27) /* set MD mask */ + +/* + * MI_EX_INTR_MASK_REG: read bits + */ +#define MI_EX_INTR_MASK_SP (1 << 0) /* SP intr mask */ +#define MI_EX_INTR_MASK_SI (1 << 1) /* SI intr mask */ +#define MI_EX_INTR_MASK_AI (1 << 2) /* AI intr mask */ +#define MI_EX_INTR_MASK_VI (1 << 3) /* VI intr mask */ +#define MI_EX_INTR_MASK_PI (1 << 4) /* PI intr mask */ +#define MI_EX_INTR_MASK_DP (1 << 5) /* DP intr mask */ +#define MI_EX_INTR_MASK_FLASH (1 << 6) /* FLASH intr mask */ +#define MI_EX_INTR_MASK_AES (1 << 7) /* AES intr mask */ +#define MI_EX_INTR_MASK_IDE (1 << 8) /* IDE intr mask */ +#define MI_EX_INTR_MASK_PI_ERR (1 << 9) /* PI_ERR intr mask */ +#define MI_EX_INTR_MASK_USB0 (1 << 10) /* USB0 intr mask */ +#define MI_EX_INTR_MASK_USB1 (1 << 11) /* USB1 intr mask */ +#define MI_EX_INTR_MASK_PWR_BTN (1 << 12) /* PWR_BTN intr mask */ +#define MI_EX_INTR_MASK_MD (1 << 13) /* MD intr mask */ + +/****************************************************************************** + * Additional Parallel Interface (PI) Registers + */ + +/** + * Write: + * [31] Execute command after write + * [30] Interrupt when done + * [29:24] ? + * [23:16] NAND Command + * [15] ? + * [14] Buffer Select + * [13:12] Device Select + * [11] Do Error Correction + * [10] NAND Command is Multi-Cycle + * [ 9: 0] Data Transfer Length in Bytes + * + * Writing 0 to this register clears the interrupt + * + * Read: + * [31] Busy + * [11] Single-Bit Error Corrected + * [10] Double-Bit Error Uncorrectable + */ +#define PI_NAND_CTRL_REG (PI_BASE_REG + 0x48) + +/** + * PI internal buffer DMA read length. Writes initiate a DMA from RDRAM to the PI buffer. + */ +#define PI_EX_RD_LEN_REG (PI_BASE_REG + 0x58) + +/** + * PI internal buffer DMA write length. Writes initiate a DMA from the PI buffer to RDRAM. + */ +#define PI_EX_WR_LEN_REG (PI_BASE_REG + 0x5C) + +/** + * [31:16] Box ID + * [31:30] Hardware Revision? (osInitialize checks this and sets __osBbIsBb to 2 if != 0) + * [29:27] ?? (not seen) + * [26:25] ?? (system clock speed identifier?) + * [24:22] ?? (bootrom, checked against MI_10_REG and copied there if mismatch) + * [21:16] ?? (not seen) + * [ 7: 4] GPIO direction control + * [7] RTC Data output enable + * [6] RTC Clock output enable + * [5] Error LED output enable + * [4] Power Control output enable + * [ 3: 0] GPIO in/out value + * [3] RTC Data output value (0=low, 1=high) + * [2] RTC Clock output value (0=low, 1=high) + * [1] Error LED (0=on, 1=off) + * [0] Power Control (0=off, 1=on) + */ +#define PI_GPIO_REG (PI_BASE_REG + 0x60) + +/* Box ID */ +#define PI_GPIO_GET_BOXID(reg) ((reg) >> 16) +#define PI_GPIO_IS_HW_V2(reg) ((reg) & (3 << 30)) + +/* GPIO: Input/Output enables */ +#define PI_GPIO_I_PWR ((0 << 0) << 4) +#define PI_GPIO_O_PWR ((1 << 0) << 4) +#define PI_GPIO_I_LED ((0 << 1) << 4) +#define PI_GPIO_O_LED ((1 << 1) << 4) +#define PI_GPIO_I_RTC_CLK ((0 << 2) << 4) +#define PI_GPIO_O_RTC_CLK ((1 << 2) << 4) +#define PI_GPIO_I_RTC_DAT ((0 << 3) << 4) +#define PI_GPIO_O_RTC_DAT ((1 << 3) << 4) + +/* GPIO: Output controls */ +/* Power */ +#define PI_GPIO_PWR_OFF (0 << 0) +#define PI_GPIO_PWR_ON (1 << 0) +/* LED */ +#define PI_GPIO_LED_ON (0 << 1) +#define PI_GPIO_LED_OFF (1 << 1) +/* RTC */ +#define PI_GPIO_RTC_CLK_LO (0 << 2) +#define PI_GPIO_RTC_CLK_HI (1 << 2) +#define PI_GPIO_RTC_DAT_LO (0 << 3) +#define PI_GPIO_RTC_DAT_HI (1 << 3) + +/* GPIO: Input getters */ +#define PI_GPIO_GET_PWR(reg) (((reg) >> 0) & 1) +#define PI_GPIO_GET_LED(reg) (((reg) >> 1) & 1) +#define PI_GPIO_GET_RTC_CLK(reg) (((reg) >> 2) & 1) +#define PI_GPIO_GET_RTC_DAT(reg) (((reg) >> 3) & 1) + +/** + * [31] ? + */ +#define PI_64_REG (PI_BASE_REG + 0x64) + +/****************************************************************************** + * Additional Serial Interface (SI) Registers + */ + +/** + * ? + */ +#define SI_0C_REG (SI_BASE_REG + 0x0C) + +/** + * ? + */ +#define SI_1C_REG (SI_BASE_REG + 0x1C) + +#endif diff --git a/include/ultra64/controller.h b/include/ultra64/controller.h index 4ce047a201..1b6d0cf323 100644 --- a/include/ultra64/controller.h +++ b/include/ultra64/controller.h @@ -17,6 +17,7 @@ #define CONT_CMD_WRITE_MEMPACK 3 #define CONT_CMD_READ_EEPROM 4 #define CONT_CMD_WRITE_EEPROM 5 +#define CONT_CMD_CHANNEL_RESET 0xFD #define CONT_CMD_RESET 0xFF #define CONT_CMD_REQUEST_STATUS_TX 1 diff --git a/include/ultra64/exception.h b/include/ultra64/exception.h index 886a3b9096..d4368da166 100644 --- a/include/ultra64/exception.h +++ b/include/ultra64/exception.h @@ -1,7 +1,7 @@ #ifndef ULTRA64_EXCEPTION_H #define ULTRA64_EXCEPTION_H -// Interrupt masks +/* Interrupt masks */ #define OS_IM_NONE 0x00000001 #define OS_IM_RCP 0x00000401 #define OS_IM_SW1 0x00000501 @@ -23,7 +23,7 @@ #define RCP_IMASK 0x003F0000 #define RCP_IMASKSHIFT 16 -// OSHWIntr values +/* OSHWIntr values */ #define OS_INTR_CART 1 #ifdef _LANGUAGE_C @@ -51,11 +51,11 @@ extern __osHwInt __osHwIntTable[]; #else -// __osHwInt struct member offsets +/* __osHwInt struct member offsets */ #define HWINT_CALLBACK 0x00 #define HWINT_SP 0x04 -// __osHwInt struct size +/* __osHwInt struct size */ #define HWINT_SIZE 0x8 #endif diff --git a/include/ultra64/libc.h b/include/ultra64/libc.h index e71cb879d7..3480f101ad 100644 --- a/include/ultra64/libc.h +++ b/include/ultra64/libc.h @@ -5,7 +5,7 @@ void osSyncPrintf(const char* fmt, ...); -#ifdef __GNUC__ +#if defined(__GNUC__) && defined(NON_MATCHING) void bzero(void* __s, unsigned int __n); int bcmp(const void* __sl, const void* __s2, unsigned int __n); void bcopy(const void* __src, void* __dest, unsigned int __n); diff --git a/include/ultra64/message.h b/include/ultra64/message.h index bf93c524c9..dc89dc48ed 100644 --- a/include/ultra64/message.h +++ b/include/ultra64/message.h @@ -21,6 +21,16 @@ #define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */ #define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */ #define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */ +#ifdef BBPLAYER +#define OS_EVENT_FLASH 23 /* NAND flash operation complete */ +#define OS_EVENT_AES 24 /* AES decryption complete */ +#define OS_EVENT_IDE 25 /* IDE transfer complete */ +#define OS_EVENT_PI_ERR 26 /* PI Error? */ +#define OS_EVENT_USB0 27 /* USB Controller 0 */ +#define OS_EVENT_USB1 28 /* USB Controller 1 */ +#define OS_EVENT_UNK_29 29 /* ? */ +#define OS_EVENT_MD 30 /* Memory card removed */ +#endif #ifdef _LANGUAGE_C @@ -47,7 +57,7 @@ typedef struct OSMesgQueue { #else -// OSMesgQueue struct member offsets +/* OSMesgQueue struct member offsets */ #define MQ_MTQUEUE 0x00 #define MQ_FULLQUEUE 0x04 diff --git a/include/ultra64/rcp.h b/include/ultra64/rcp.h index 9c97e8bd9f..8fb8a523e9 100644 --- a/include/ultra64/rcp.h +++ b/include/ultra64/rcp.h @@ -114,13 +114,13 @@ /** * External device info */ -#define DEVICE_TYPE_CART 0 // ROM cartridge -#define DEVICE_TYPE_BULK 1 // ROM bulk -#define DEVICE_TYPE_64DD 2 // 64 Disk Drive -#define DEVICE_TYPE_SRAM 3 // SRAM -// 4-6 are reserved -#define DEVICE_TYPE_INIT 7 // initial value -// 8-14 are reserved +#define DEVICE_TYPE_CART 0 /* ROM cartridge */ +#define DEVICE_TYPE_BULK 1 /* ROM bulk */ +#define DEVICE_TYPE_64DD 2 /* 64 Disk Drive */ +#define DEVICE_TYPE_SRAM 3 /* SRAM */ +/* 4-6 are reserved */ +#define DEVICE_TYPE_INIT 7 /* initial value */ +/* 8-14 are reserved */ /** @@ -138,31 +138,31 @@ #define SP_BASE_REG 0x04040000 -// SP memory address (R/W): [12] 0=DMEM,1=IMEM, [11:0] DMEM/IMEM address +/* SP memory address (R/W): [12] 0=DMEM,1=IMEM, [11:0] DMEM/IMEM address */ #define SP_MEM_ADDR_REG (SP_BASE_REG + 0x00) -// SP DRAM DMA address (R/W): [23:0] RDRAM address +/* SP DRAM DMA address (R/W): [23:0] RDRAM address */ #define SP_DRAM_ADDR_REG (SP_BASE_REG + 0x04) -// SP read DMA length (R/W): [31:20] skip, [19:12] count, [11:0] length; RDRAM -> I/DMEM +/* SP read DMA length (R/W): [31:20] skip, [19:12] count, [11:0] length; RDRAM -> I/DMEM */ #define SP_RD_LEN_REG (SP_BASE_REG + 0x08) -// SP write DMA length (R/W): [31:20] skip, [19:12] count, [11:0] length; I/DMEM -> RDRAM +/* SP write DMA length (R/W): [31:20] skip, [19:12] count, [11:0] length; I/DMEM -> RDRAM */ #define SP_WR_LEN_REG (SP_BASE_REG + 0x0C) -// SP status (R/W): [14:0] valid bits; see below for write/read mode +/* SP status (R/W): [14:0] valid bits; see below for write/read mode */ #define SP_STATUS_REG (SP_BASE_REG + 0x10) -// SP DMA full (R): [0] dma full +/* SP DMA full (R): [0] dma full */ #define SP_DMA_FULL_REG (SP_BASE_REG + 0x14) -// SP DMA busy (R): [0] dma busy +/* SP DMA busy (R): [0] dma busy */ #define SP_DMA_BUSY_REG (SP_BASE_REG + 0x18) -// SP semaphore (R/W): Read: [0] acquire semaphore; Write: [] release semaphore +/* SP semaphore (R/W): Read: [0] acquire semaphore; Write: [] release semaphore */ #define SP_SEMAPHORE_REG (SP_BASE_REG + 0x1C) -// SP PC (R/W): [11:0] program counter +/* SP PC (R/W): [11:0] program counter */ #define SP_PC_REG 0x04080000 /* @@ -174,31 +174,31 @@ /* * SP_STATUS_REG: write bits */ -#define SP_CLR_HALT (1 << 0) // clear halt -#define SP_SET_HALT (1 << 1) // set halt -#define SP_CLR_BROKE (1 << 2) // clear broke -#define SP_CLR_INTR (1 << 3) // clear interrupt -#define SP_SET_INTR (1 << 4) // set interrupt -#define SP_CLR_SSTEP (1 << 5) // clear sstep -#define SP_SET_SSTEP (1 << 6) // set sstep -#define SP_CLR_INTR_BREAK (1 << 7) // clear interrupt on break -#define SP_SET_INTR_BREAK (1 << 8) // set interrupt on break -#define SP_CLR_SIG0 (1 << 9) // clear signal 0 -#define SP_SET_SIG0 (1 << 10) // set signal 0 -#define SP_CLR_SIG1 (1 << 11) // clear signal 1 -#define SP_SET_SIG1 (1 << 12) // set signal 1 -#define SP_CLR_SIG2 (1 << 13) // clear signal 2 -#define SP_SET_SIG2 (1 << 14) // set signal 2 -#define SP_CLR_SIG3 (1 << 15) // clear signal 3 -#define SP_SET_SIG3 (1 << 16) // set signal 3 -#define SP_CLR_SIG4 (1 << 17) // clear signal 4 -#define SP_SET_SIG4 (1 << 18) // set signal 4 -#define SP_CLR_SIG5 (1 << 19) // clear signal 5 -#define SP_SET_SIG5 (1 << 20) // set signal 5 -#define SP_CLR_SIG6 (1 << 21) // clear signal 6 -#define SP_SET_SIG6 (1 << 22) // set signal 6 -#define SP_CLR_SIG7 (1 << 23) // clear signal 7 -#define SP_SET_SIG7 (1 << 24) // set signal 7 +#define SP_CLR_HALT (1 << 0) /* clear halt */ +#define SP_SET_HALT (1 << 1) /* set halt */ +#define SP_CLR_BROKE (1 << 2) /* clear broke */ +#define SP_CLR_INTR (1 << 3) /* clear interrupt */ +#define SP_SET_INTR (1 << 4) /* set interrupt */ +#define SP_CLR_SSTEP (1 << 5) /* clear sstep */ +#define SP_SET_SSTEP (1 << 6) /* set sstep */ +#define SP_CLR_INTR_BREAK (1 << 7) /* clear interrupt on break */ +#define SP_SET_INTR_BREAK (1 << 8) /* set interrupt on break */ +#define SP_CLR_SIG0 (1 << 9) /* clear signal 0 */ +#define SP_SET_SIG0 (1 << 10) /* set signal 0 */ +#define SP_CLR_SIG1 (1 << 11) /* clear signal 1 */ +#define SP_SET_SIG1 (1 << 12) /* set signal 1 */ +#define SP_CLR_SIG2 (1 << 13) /* clear signal 2 */ +#define SP_SET_SIG2 (1 << 14) /* set signal 2 */ +#define SP_CLR_SIG3 (1 << 15) /* clear signal 3 */ +#define SP_SET_SIG3 (1 << 16) /* set signal 3 */ +#define SP_CLR_SIG4 (1 << 17) /* clear signal 4 */ +#define SP_SET_SIG4 (1 << 18) /* set signal 4 */ +#define SP_CLR_SIG5 (1 << 19) /* clear signal 5 */ +#define SP_SET_SIG5 (1 << 20) /* set signal 5 */ +#define SP_CLR_SIG6 (1 << 21) /* clear signal 6 */ +#define SP_SET_SIG6 (1 << 22) /* set signal 6 */ +#define SP_CLR_SIG7 (1 << 23) /* clear signal 7 */ +#define SP_SET_SIG7 (1 << 24) /* set signal 7 */ /* * SP_STATUS_REG: read bits @@ -238,22 +238,22 @@ #define SP_SET_CPUSIGNAL SP_SET_SIG4 #define SP_STATUS_CPUSIGNAL SP_STATUS_SIG4 -// SP IMEM BIST REG (R/W): [6:0] BIST status bits; see below for detail +/* SP IMEM BIST REG (R/W): [6:0] BIST status bits; see below for detail */ #define SP_IBIST_REG 0x04080004 /* * SP_IBIST_REG: write bits */ -#define SP_IBIST_CHECK (1 << 0) // BIST check -#define SP_IBIST_GO (1 << 1) // BIST go -#define SP_IBIST_CLEAR (1 << 2) // BIST clear +#define SP_IBIST_CHECK (1 << 0) /* BIST check */ +#define SP_IBIST_GO (1 << 1) /* BIST go */ +#define SP_IBIST_CLEAR (1 << 2) /* BIST clear */ /* * SP_BIST_REG: read bits * First 2 bits are same as in write mode */ #define SP_IBIST_DONE (1 << 2) -#define SP_IBIST_FAILED 0x78 // bits [6:3], BIST fail +#define SP_IBIST_FAILED 0x78 /* bits [6:3], BIST fail */ /** @@ -261,28 +261,28 @@ */ #define DPC_BASE_REG 0x04100000 -// DP CMD DMA start (R/W): [23:0] DMEM/RDRAM start address +/* DP CMD DMA start (R/W): [23:0] DMEM/RDRAM start address */ #define DPC_START_REG (DPC_BASE_REG + 0x00) -// DP CMD DMA end (R/W): [23:0] DMEM/RDRAM end address +/* DP CMD DMA end (R/W): [23:0] DMEM/RDRAM end address */ #define DPC_END_REG (DPC_BASE_REG + 0x04) -// DP CMD DMA end (R): [23:0] DMEM/RDRAM current address +/* DP CMD DMA end (R): [23:0] DMEM/RDRAM current address */ #define DPC_CURRENT_REG (DPC_BASE_REG + 0x08) -// DP CMD status (R/W): [9:0] valid bits - see below for definitions +/* DP CMD status (R/W): [9:0] valid bits - see below for definitions */ #define DPC_STATUS_REG (DPC_BASE_REG + 0x0C) -// DP clock counter (R): [23:0] clock counter +/* DP clock counter (R): [23:0] clock counter */ #define DPC_CLOCK_REG (DPC_BASE_REG + 0x10) -// DP buffer busy counter (R): [23:0] clock counter +/* DP buffer busy counter (R): [23:0] clock counter */ #define DPC_BUFBUSY_REG (DPC_BASE_REG + 0x14) -// DP pipe busy counter (R): [23:0] clock counter +/* DP pipe busy counter (R): [23:0] clock counter */ #define DPC_PIPEBUSY_REG (DPC_BASE_REG + 0x18) -// DP TMEM load counter (R): [23:0] clock counter +/* DP TMEM load counter (R): [23:0] clock counter */ #define DPC_TMEM_REG (DPC_BASE_REG + 0x1C) /* @@ -320,16 +320,16 @@ */ #define DPS_BASE_REG 0x04200000 -// DP tmem built-in self-test (R/W): [10:0] BIST status bits +/* DP tmem built-in self-test (R/W): [10:0] BIST status bits */ #define DPS_TBIST_REG (DPS_BASE_REG + 0x00) -// DP span test mode (R/W): [0] Span buffer test access enable +/* DP span test mode (R/W): [0] Span buffer test access enable */ #define DPS_TEST_MODE_REG (DPS_BASE_REG + 0x04) -// DP span buffer test address (R/W): [6:0] bits +/* DP span buffer test address (R/W): [6:0] bits */ #define DPS_BUFTEST_ADDR_REG (DPS_BASE_REG + 0x08) -// DP span buffer test data (R/W): [31:0] span buffer data +/* DP span buffer test data (R/W): [31:0] span buffer data */ #define DPS_BUFTEST_DATA_REG (DPS_BASE_REG + 0x0C) /* @@ -344,7 +344,7 @@ * First 2 bits are same as in write mode */ #define DPS_TBIST_DONE (1 << 2) -#define DPS_TBIST_FAILED 0x7F8 // bits [10:3], BIST fail +#define DPS_TBIST_FAILED 0x7F8 /* bits [10:3], BIST fail */ /** @@ -352,22 +352,22 @@ */ #define MI_BASE_REG 0x04300000 -// MI init mode (W): [11] clear DP interrupt, [9/10] clear/set ebus test mode -// [8] set init mode, [7] clear init mode, [6:0] init length -// (R): [8] ebus test mode, [7] init mode, [6:0] init length +/* MI init mode (W): [11] clear DP interrupt, [9/10] clear/set ebus test mode */ +/* [8] set init mode, [7] clear init mode, [6:0] init length */ +/* (R): [8] ebus test mode, [7] init mode, [6:0] init length */ #define MI_INIT_MODE_REG (MI_BASE_REG + 0x00) #define MI_MODE_REG MI_INIT_MODE_REG /* * MI_MODE_REG: write bits */ -#define MI_CLR_INIT (1 << 7) // clear init mode -#define MI_SET_INIT (1 << 8) // set init mode -#define MI_CLR_EBUS (1 << 9) // clear ebus test -#define MI_SET_EBUS (1 << 10) // set ebus test mode -#define MI_CLR_DP_INTR (1 << 11) // clear dp interrupt -#define MI_CLR_RDRAM (1 << 12) // clear RDRAM reg -#define MI_SET_RDRAM (1 << 13) // set RDRAM reg mode +#define MI_CLR_INIT (1 << 7) /* clear init mode */ +#define MI_SET_INIT (1 << 8) /* set init mode */ +#define MI_CLR_EBUS (1 << 9) /* clear ebus test */ +#define MI_SET_EBUS (1 << 10) /* set ebus test mode */ +#define MI_CLR_DP_INTR (1 << 11) /* clear dp interrupt */ +#define MI_CLR_RDRAM (1 << 12) /* clear RDRAM reg */ +#define MI_SET_RDRAM (1 << 13) /* set RDRAM reg mode */ /* * MI_MODE_REG: read bits @@ -376,52 +376,52 @@ #define MI_MODE_EBUS (1 << 8) /* ebus test mode */ #define MI_MODE_RDRAM (1 << 9) /* RDRAM reg mode */ -// MI version (R): [31:24] rsp, [23:16] rdp, [15:8] rac, [7:0] io +/* MI version (R): [31:24] rsp, [23:16] rdp, [15:8] rac, [7:0] io */ #define MI_VERSION_REG (MI_BASE_REG + 0x04) #define MI_NOOP_REG MI_VERSION_REG -// MI interrupt (R): [5:0] valid bits - see below for bit patterns +/* MI interrupt (R): [5:0] valid bits - see below for bit patterns */ #define MI_INTR_REG (MI_BASE_REG + 0x08) -// MI interrupt mask (R): [5:0] valid bits - see below for bit patterns -// (W): [11:0] valid bits - see below for bit patterns +/* MI interrupt mask (R): [5:0] valid bits - see below for bit patterns */ +/* (W): [11:0] valid bits - see below for bit patterns */ #define MI_INTR_MASK_REG (MI_BASE_REG + 0x0C) /* * MI_INTR_REG: read bits */ -#define MI_INTR_SP (1 << 0) // SP intr -#define MI_INTR_SI (1 << 1) // SI intr -#define MI_INTR_AI (1 << 2) // AI intr -#define MI_INTR_VI (1 << 3) // VI intr -#define MI_INTR_PI (1 << 4) // PI intr -#define MI_INTR_DP (1 << 5) // DP intr +#define MI_INTR_SP (1 << 0) /* SP intr */ +#define MI_INTR_SI (1 << 1) /* SI intr */ +#define MI_INTR_AI (1 << 2) /* AI intr */ +#define MI_INTR_VI (1 << 3) /* VI intr */ +#define MI_INTR_PI (1 << 4) /* PI intr */ +#define MI_INTR_DP (1 << 5) /* DP intr */ /* * MI_INTR_MASK_REG: write bits */ -#define MI_INTR_MASK_CLR_SP (1 << 0) // clear SP mask -#define MI_INTR_MASK_SET_SP (1 << 1) // set SP mask -#define MI_INTR_MASK_CLR_SI (1 << 2) // clear SI mask -#define MI_INTR_MASK_SET_SI (1 << 3) // set SI mask -#define MI_INTR_MASK_CLR_AI (1 << 4) // clear AI mask -#define MI_INTR_MASK_SET_AI (1 << 5) // set AI mask -#define MI_INTR_MASK_CLR_VI (1 << 6) // clear VI mask -#define MI_INTR_MASK_SET_VI (1 << 7) // set VI mask -#define MI_INTR_MASK_CLR_PI (1 << 8) // clear PI mask -#define MI_INTR_MASK_SET_PI (1 << 9) // set PI mask -#define MI_INTR_MASK_CLR_DP (1 << 10) // clear DP mask -#define MI_INTR_MASK_SET_DP (1 << 11) // set DP mask +#define MI_INTR_MASK_CLR_SP (1 << 0) /* clear SP mask */ +#define MI_INTR_MASK_SET_SP (1 << 1) /* set SP mask */ +#define MI_INTR_MASK_CLR_SI (1 << 2) /* clear SI mask */ +#define MI_INTR_MASK_SET_SI (1 << 3) /* set SI mask */ +#define MI_INTR_MASK_CLR_AI (1 << 4) /* clear AI mask */ +#define MI_INTR_MASK_SET_AI (1 << 5) /* set AI mask */ +#define MI_INTR_MASK_CLR_VI (1 << 6) /* clear VI mask */ +#define MI_INTR_MASK_SET_VI (1 << 7) /* set VI mask */ +#define MI_INTR_MASK_CLR_PI (1 << 8) /* clear PI mask */ +#define MI_INTR_MASK_SET_PI (1 << 9) /* set PI mask */ +#define MI_INTR_MASK_CLR_DP (1 << 10) /* clear DP mask */ +#define MI_INTR_MASK_SET_DP (1 << 11) /* set DP mask */ /* * MI_INTR_MASK_REG: read bits */ -#define MI_INTR_MASK_SP (1 << 0) // SP intr mask -#define MI_INTR_MASK_SI (1 << 1) // SI intr mask -#define MI_INTR_MASK_AI (1 << 2) // AI intr mask -#define MI_INTR_MASK_VI (1 << 3) // VI intr mask -#define MI_INTR_MASK_PI (1 << 4) // PI intr mask -#define MI_INTR_MASK_DP (1 << 5) // DP intr mask +#define MI_INTR_MASK_SP (1 << 0) /* SP intr mask */ +#define MI_INTR_MASK_SI (1 << 1) /* SI intr mask */ +#define MI_INTR_MASK_AI (1 << 2) /* AI intr mask */ +#define MI_INTR_MASK_VI (1 << 3) /* VI intr mask */ +#define MI_INTR_MASK_PI (1 << 4) /* PI intr mask */ +#define MI_INTR_MASK_DP (1 << 5) /* DP intr mask */ /** @@ -454,90 +454,90 @@ #define VI_CONTROL_REG (VI_BASE_REG + 0x00) #define VI_STATUS_REG VI_CONTROL_REG -// VI origin (R/W): [23:0] frame buffer origin in bytes +/* VI origin (R/W): [23:0] frame buffer origin in bytes */ #define VI_ORIGIN_REG (VI_BASE_REG + 0x04) #define VI_DRAM_ADDR_REG VI_ORIGIN_REG -// VI width (R/W): [11:0] frame buffer line width in pixels +/* VI width (R/W): [11:0] frame buffer line width in pixels */ #define VI_WIDTH_REG (VI_BASE_REG + 0x08) #define VI_H_WIDTH_REG VI_WIDTH_REG -// VI vertical intr (R/W): [9:0] interrupt when current half-line = V_INTR +/* VI vertical intr (R/W): [9:0] interrupt when current half-line = V_INTR */ #define VI_INTR_REG (VI_BASE_REG + 0x0C) #define VI_V_INTR_REG VI_INTR_REG -// VI current vertical line (R/W): [9:0] current half line, sampled once per -// line (the lsb of V_CURRENT is constant within a field, and in interlaced -// modes gives the field number - which is constant for non-interlaced modes) -// - Any write to this register will clear interrupt line +/* VI current vertical line (R/W): [9:0] current half line, sampled once per */ +/* line (the lsb of V_CURRENT is constant within a field, and in interlaced */ +/* modes gives the field number - which is constant for non-interlaced modes) */ +/* - Any write to this register will clear interrupt line */ #define VI_CURRENT_REG (VI_BASE_REG + 0x10) #define VI_V_CURRENT_LINE_REG VI_CURRENT_REG -// VI video timing (R/W): [29:20] start of color burst in pixels from h-sync -// [19:16] vertical sync width in half lines, -// [15: 8] color burst width in pixels, -// [ 7: 0] horizontal sync width in pixels, +/* VI video timing (R/W): [29:20] start of color burst in pixels from h-sync */ +/* [19:16] vertical sync width in half lines, */ +/* [15: 8] color burst width in pixels, */ +/* [ 7: 0] horizontal sync width in pixels, */ #define VI_BURST_REG (VI_BASE_REG + 0x14) #define VI_TIMING_REG VI_BURST_REG -// VI vertical sync (R/W): [9:0] number of half-lines per field +/* VI vertical sync (R/W): [9:0] number of half-lines per field */ #define VI_V_SYNC_REG (VI_BASE_REG + 0x18) -// VI horizontal sync (R/W): [20:16] a 5-bit leap pattern used for PAL only (h_sync_period) -// [11: 0] total duration of a line in 1/4 pixel +/* VI horizontal sync (R/W): [20:16] a 5-bit leap pattern used for PAL only (h_sync_period) */ +/* [11: 0] total duration of a line in 1/4 pixel */ #define VI_H_SYNC_REG (VI_BASE_REG + 0x1C) -// VI horizontal sync leap (R/W): [27:16] identical to h_sync_period -// [11: 0] identical to h_sync_period +/* VI horizontal sync leap (R/W): [27:16] identical to h_sync_period */ +/* [11: 0] identical to h_sync_period */ #define VI_LEAP_REG (VI_BASE_REG + 0x20) #define VI_H_SYNC_LEAP_REG VI_LEAP_REG -// VI horizontal video (R/W): [25:16] start of active video in screen pixels -// [ 9: 0] end of active video in screen pixels +/* VI horizontal video (R/W): [25:16] start of active video in screen pixels */ +/* [ 9: 0] end of active video in screen pixels */ #define VI_H_START_REG (VI_BASE_REG + 0x24) #define VI_H_VIDEO_REG VI_H_START_REG -// VI vertical video (R/W): [25:16] start of active video in screen half-lines -// [ 9: 0] end of active video in screen half-lines +/* VI vertical video (R/W): [25:16] start of active video in screen half-lines */ +/* [ 9: 0] end of active video in screen half-lines */ #define VI_V_START_REG (VI_BASE_REG + 0x28) #define VI_V_VIDEO_REG VI_V_START_REG -// VI vertical burst (R/W): [25:16] start of color burst enable in half-lines -// [ 9: 0] end of color burst enable in half-lines +/* VI vertical burst (R/W): [25:16] start of color burst enable in half-lines */ +/* [ 9: 0] end of color burst enable in half-lines */ #define VI_V_BURST_REG (VI_BASE_REG + 0x2C) -// VI x-scale (R/W): [27:16] horizontal subpixel offset (2.10 format) -// [11: 0] 1/horizontal scale up factor (2.10 format) +/* VI x-scale (R/W): [27:16] horizontal subpixel offset (2.10 format) */ +/* [11: 0] 1/horizontal scale up factor (2.10 format) */ #define VI_X_SCALE_REG (VI_BASE_REG + 0x30) -// VI y-scale (R/W): [27:16] vertical subpixel offset (2.10 format) -// [11: 0] 1/vertical scale up factor (2.10 format) +/* VI y-scale (R/W): [27:16] vertical subpixel offset (2.10 format) */ +/* [11: 0] 1/vertical scale up factor (2.10 format) */ #define VI_Y_SCALE_REG (VI_BASE_REG + 0x34) /* * VI_CONTROL_REG: read bits */ -#define VI_CTRL_TYPE_16 0x00002 // [1:0] pixel size: 16 bit -#define VI_CTRL_TYPE_32 0x00003 // [1:0] pixel size: 32 bit -#define VI_CTRL_GAMMA_DITHER_ON 0x00004 // 2: default = on -#define VI_CTRL_GAMMA_ON 0x00008 // 3: default = on -#define VI_CTRL_DIVOT_ON 0x00010 // 4: default = on -#define VI_CTRL_SERRATE_ON 0x00040 // 6: on if interlaced -#define VI_CTRL_ANTIALIAS_MASK 0x00300 // [9:8] anti-alias mode -#define VI_CTRL_ANTIALIAS_MODE_0 0x00000 // Bit [9:8] anti-alias mode: AA enabled, resampling enabled, always fetch extra lines -#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 // Bit [9:8] anti-alias mode: AA enabled, resampling enabled, fetch extra lines as-needed -#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 // Bit [9:8] anti-alias mode: AA disabled, resampling enabled, operate as if everything is covered -#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 // Bit [9:8] anti-alias mode: AA disabled, resampling disabled, replicate pixels -#define VI_CTRL_PIXEL_ADV_MASK 0x0F000 // [15:12] pixel advance mode -#define VI_CTRL_PIXEL_ADV_3 0x03000 // Bit [15:12] pixel advance mode: Always 3 on N64 -#define VI_CTRL_DITHER_FILTER_ON 0x10000 // 16: dither-filter mode +#define VI_CTRL_TYPE_16 0x00002 /* [1:0] pixel size: 16 bit */ +#define VI_CTRL_TYPE_32 0x00003 /* [1:0] pixel size: 32 bit */ +#define VI_CTRL_GAMMA_DITHER_ON 0x00004 /* 2: default = on */ +#define VI_CTRL_GAMMA_ON 0x00008 /* 3: default = on */ +#define VI_CTRL_DIVOT_ON 0x00010 /* 4: default = on */ +#define VI_CTRL_SERRATE_ON 0x00040 /* 6: on if interlaced */ +#define VI_CTRL_ANTIALIAS_MASK 0x00300 /* [9:8] anti-alias mode */ +#define VI_CTRL_ANTIALIAS_MODE_0 0x00000 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, always fetch extra lines */ +#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 /* Bit [9:8] anti-alias mode: AA enabled, resampling enabled, fetch extra lines as-needed */ +#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 /* Bit [9:8] anti-alias mode: AA disabled, resampling enabled, operate as if everything is covered */ +#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 /* Bit [9:8] anti-alias mode: AA disabled, resampling disabled, replicate pixels */ +#define VI_CTRL_PIXEL_ADV_MASK 0x0F000 /* [15:12] pixel advance mode */ +#define VI_CTRL_PIXEL_ADV(n) (((n) << 12) & VI_CTRL_PIXEL_ADV_MASK) /* Bit [15:12] pixel advance mode: Always 3 on N64 */ +#define VI_CTRL_DITHER_FILTER_ON 0x10000 /* 16: dither-filter mode */ /* * Possible video clocks (NTSC or PAL) */ -#define VI_NTSC_CLOCK 48681812 // Hz = 48.681812 MHz -#define VI_PAL_CLOCK 49656530 // Hz = 49.656530 MHz -#define VI_MPAL_CLOCK 48628316 // Hz = 48.628316 MHz +#define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */ +#define VI_PAL_CLOCK 49656530 /* Hz = 49.656530 MHz */ +#define VI_MPAL_CLOCK 48628316 /* Hz = 48.628316 MHz */ /** @@ -549,25 +549,25 @@ */ #define AI_BASE_REG 0x04500000 -// AI DRAM address (W): [23:0] starting RDRAM address (8B-aligned) +/* AI DRAM address (W): [23:0] starting RDRAM address (8B-aligned) */ #define AI_DRAM_ADDR_REG (AI_BASE_REG + 0x00) -// AI length (R/W): [14:0] transfer length (v1.0) - Bottom 3 bits are ignored -// [17:0] transfer length (v2.0) - Bottom 3 bits are ignored +/* AI length (R/W): [14:0] transfer length (v1.0) - Bottom 3 bits are ignored */ +/* [17:0] transfer length (v2.0) - Bottom 3 bits are ignored */ #define AI_LEN_REG (AI_BASE_REG + 0x04) -// AI control (W): [0] DMA enable - if LSB == 1, DMA is enabled +/* AI control (W): [0] DMA enable - if LSB == 1, DMA is enabled */ #define AI_CONTROL_REG (AI_BASE_REG + 0x08) /* * AI_CONTROL_REG: write bits */ -#define AI_CONTROL_DMA_ON 1 // LSB = 1: DMA enable -#define AI_CONTROL_DMA_OFF 0 // LSB = 1: DMA enable +#define AI_CONTROL_DMA_ON 1 /* LSB = 1: DMA enable */ +#define AI_CONTROL_DMA_OFF 0 /* LSB = 1: DMA enable */ -// AI status (R): [31]/[0] ai_full (addr & len buffer full), [30] ai_busy -// Note that a 1->0 transition in ai_full will set interrupt -// (W): clear audio interrupt +/* AI status (R): [31]/[0] ai_full (addr & len buffer full), [30] ai_busy */ +/* Note that a 1->0 transition in ai_full will set interrupt */ +/* (W): clear audio interrupt */ #define AI_STATUS_REG (AI_BASE_REG + 0x0C) /* @@ -576,23 +576,23 @@ #define AI_STATUS_FIFO_FULL (1 << 31) #define AI_STATUS_DMA_BUSY (1 << 30) -// AI DAC sample period register (W): [13:0] dac rate -// - vid_clock/(dperiod + 1) is the DAC sample rate -// - (dperiod + 1) >= 66 * (aclockhp + 1) must be true +/* AI DAC sample period register (W): [13:0] dac rate */ +/* - vid_clock/(dperiod + 1) is the DAC sample rate */ +/* - (dperiod + 1) >= 66 * (aclockhp + 1) must be true */ #define AI_DACRATE_REG (AI_BASE_REG + 0x10) -// DAC rate = video clock / audio frequency -// - DAC rate >= (66 * Bit rate) must be true -#define AI_MAX_DAC_RATE 16384 // 14-bit+1 +/* DAC rate = video clock / audio frequency */ +/* - DAC rate >= (66 * Bit rate) must be true */ +#define AI_MAX_DAC_RATE 16384 /* 14-bit+1 */ #define AI_MIN_DAC_RATE 132 -// AI bit rate (W): [3:0] bit rate (abus clock half period register - aclockhp) -// - vid_clock/(2 * (aclockhp + 1)) is the DAC clock rate -// - The abus clock stops if aclockhp is zero +/* AI bit rate (W): [3:0] bit rate (abus clock half period register - aclockhp) */ +/* - vid_clock/(2 * (aclockhp + 1)) is the DAC clock rate */ +/* - The abus clock stops if aclockhp is zero */ #define AI_BITRATE_REG (AI_BASE_REG + 0x14) -// Bit rate <= (DAC rate / 66) -#define AI_MAX_BIT_RATE 16 // 4-bit+1 +/* Bit rate <= (DAC rate / 66) */ +#define AI_MAX_BIT_RATE 16 /* 4-bit+1 */ #define AI_MIN_BIT_RATE 2 /* @@ -600,14 +600,14 @@ * max frequency = (video clock / min dac rate) * min frequency = (video clock / max dac rate) */ -#define AI_NTSC_MAX_FREQ 368000 // 368 KHz -#define AI_NTSC_MIN_FREQ 3000 // 3 KHz ~ 2971 Hz +#define AI_NTSC_MAX_FREQ 368000 /* 368 KHz */ +#define AI_NTSC_MIN_FREQ 3000 /* 3 KHz ~ 2971 Hz */ -#define AI_PAL_MAX_FREQ 376000 // 376 KHz -#define AI_PAL_MIN_FREQ 3050 // 3 KHz ~ 3031 Hz +#define AI_PAL_MAX_FREQ 376000 /* 376 KHz */ +#define AI_PAL_MIN_FREQ 3050 /* 3 KHz ~ 3031 Hz */ -#define AI_MPAL_MAX_FREQ 368000 // 368 KHz -#define AI_MPAL_MIN_FREQ 3000 // 3 KHz ~ 2968 Hz +#define AI_MPAL_MAX_FREQ 368000 /* 368 KHz */ +#define AI_MPAL_MIN_FREQ 3000 /* 3 KHz ~ 2968 Hz */ /** @@ -615,44 +615,44 @@ */ #define PI_BASE_REG 0x04600000 -// PI DRAM address (R/W): [23:0] starting RDRAM address +/* PI DRAM address (R/W): [23:0] starting RDRAM address */ #define PI_DRAM_ADDR_REG (PI_BASE_REG + 0x00) -// PI pbus (cartridge) address (R/W): [31:0] starting AD16 address +/* PI pbus (cartridge) address (R/W): [31:0] starting AD16 address */ #define PI_CART_ADDR_REG (PI_BASE_REG + 0x04) -// PI read length (R/W): [23:0] read data length +/* PI read length (R/W): [23:0] read data length */ #define PI_RD_LEN_REG (PI_BASE_REG + 0x08) -// PI write length (R/W): [23:0] write data length +/* PI write length (R/W): [23:0] write data length */ #define PI_WR_LEN_REG (PI_BASE_REG + 0x0C) -// PI status (R): [3] interrupt flag, [2] error, [1] IO busy, [0] DMA busy -// (W): [1] clear intr, [0] reset controller (and abort current op) +/* PI status (R): [3] interrupt flag, [2] error, [1] IO busy, [0] DMA busy */ +/* (W): [1] clear intr, [0] reset controller (and abort current op) */ #define PI_STATUS_REG (PI_BASE_REG + 0x10) -// PI dom1 latency (R/W): [7:0] domain 1 device latency +/* PI dom1 latency (R/W): [7:0] domain 1 device latency */ #define PI_BSD_DOM1_LAT_REG (PI_BASE_REG + 0x14) -// PI dom1 pulse width (R/W): [7:0] domain 1 device R/W strobe pulse width +/* PI dom1 pulse width (R/W): [7:0] domain 1 device R/W strobe pulse width */ #define PI_BSD_DOM1_PWD_REG (PI_BASE_REG + 0x18) -// PI dom1 page size (R/W): [3:0] domain 1 device page size +/* PI dom1 page size (R/W): [3:0] domain 1 device page size */ #define PI_BSD_DOM1_PGS_REG (PI_BASE_REG + 0x1C) -// PI dom1 release (R/W): [1:0] domain 1 device R/W release duration +/* PI dom1 release (R/W): [1:0] domain 1 device R/W release duration */ #define PI_BSD_DOM1_RLS_REG (PI_BASE_REG + 0x20) -// PI dom2 latency (R/W): [7:0] domain 2 device latency +/* PI dom2 latency (R/W): [7:0] domain 2 device latency */ #define PI_BSD_DOM2_LAT_REG (PI_BASE_REG + 0x24) -// PI dom2 pulse width (R/W): [7:0] domain 2 device R/W strobe pulse width +/* PI dom2 pulse width (R/W): [7:0] domain 2 device R/W strobe pulse width */ #define PI_BSD_DOM2_PWD_REG (PI_BASE_REG + 0x28) -// PI dom2 page size (R/W): [3:0] domain 2 device page size +/* PI dom2 page size (R/W): [3:0] domain 2 device page size */ #define PI_BSD_DOM2_PGS_REG (PI_BASE_REG + 0x2C) -// PI dom2 release (R/W): [1:0] domain 2 device R/W release duration +/* PI dom2 release (R/W): [1:0] domain 2 device R/W release duration */ #define PI_BSD_DOM2_RLS_REG (PI_BASE_REG + 0x30) #define PI_DOMAIN1_REG PI_BSD_DOM1_LAT_REG @@ -719,30 +719,30 @@ */ #define RI_BASE_REG 0x04700000 -// RI mode (R/W): [3] stop R active, [2] stop T active, [1:0] operating mode +/* RI mode (R/W): [3] stop R active, [2] stop T active, [1:0] operating mode */ #define RI_MODE_REG (RI_BASE_REG + 0x00) -// RI config (R/W): [6] current control enable, [5:0] current control input +/* RI config (R/W): [6] current control enable, [5:0] current control input */ #define RI_CONFIG_REG (RI_BASE_REG + 0x04) -// RI current load (W): [] any write updates current control register +/* RI current load (W): [] any write updates current control register */ #define RI_CURRENT_LOAD_REG (RI_BASE_REG + 0x08) -// RI select (R/W): [3:2] receive select, [1:0] transmit select +/* RI select (R/W): [3:2] receive select, [1:0] transmit select */ #define RI_SELECT_REG (RI_BASE_REG + 0x0C) -// RI refresh (R/W): [16] refresh bank, [17] refresh enable, [18] refresh optimize -// [7:0] clean refresh delay, [15:8] dirty refresh dela +/* RI refresh (R/W): [16] refresh bank, [17] refresh enable, [18] refresh optimize */ +/* [7:0] clean refresh delay, [15:8] dirty refresh dela */ #define RI_REFRESH_REG (RI_BASE_REG + 0x10) #define RI_COUNT_REG RI_REFRESH_REG -// RI latency (R/W): [3:0] DMA latency/overlap +/* RI latency (R/W): [3:0] DMA latency/overlap */ #define RI_LATENCY_REG (RI_BASE_REG + 0x14) -// RI error (R): [1] ack error, [0] nack error +/* RI error (R): [1] ack error, [0] nack error */ #define RI_RERROR_REG (RI_BASE_REG + 0x18) -// RI error (W): [] any write clears all error bits +/* RI error (W): [] any write clears all error bits */ #define RI_WERROR_REG (RI_BASE_REG + 0x1C) @@ -751,27 +751,27 @@ */ #define SI_BASE_REG 0x04800000 -// SI DRAM address (R/W): [23:0] starting RDRAM address +/* SI DRAM address (R/W): [23:0] starting RDRAM address */ #define SI_DRAM_ADDR_REG (SI_BASE_REG + 0x00) -// SI address read 64B (W): [] write begins a 64B DMA write PIF RAM -> RDRAM +/* SI address read 64B (W): [] write begins a 64B DMA write PIF RAM -> RDRAM */ #define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG + 0x04) -// Address SI_BASE_REG + (0x08, 0x0C, 0x14) are reserved +/* Address SI_BASE_REG + (0x08, 0x0C, 0x14) are reserved */ -// SI address write 64B (W): [] write begins a 64B DMA read RDRAM -> PIF RAM */ +/* SI address write 64B (W): [] write begins a 64B DMA read RDRAM -> PIF RAM */ #define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG + 0x10) -// SI status (R/W): [] any write clears interrupt +/* SI status (R/W): [] any write clears interrupt */ #define SI_STATUS_REG (SI_BASE_REG + 0x18) /* * SI_STATUS_REG: read bits */ -#define SI_STATUS_DMA_BUSY (1 << 0) // DMA in progress -#define SI_STATUS_RD_BUSY (1 << 1) // IO access in progress -#define SI_STATUS_DMA_ERROR (1 << 3) // Overlapping DMA requests -#define SI_STATUS_INTERRUPT (1 << 12) // Interrupt is set +#define SI_STATUS_DMA_BUSY (1 << 0) /* DMA in progress */ +#define SI_STATUS_RD_BUSY (1 << 1) /* IO access in progress */ +#define SI_STATUS_DMA_ERROR (1 << 3) /* Overlapping DMA requests */ +#define SI_STATUS_INTERRUPT (1 << 12) /* Interrupt is set */ /** @@ -780,13 +780,13 @@ #define GIO_BASE_REG 0x18000000 -// Game to Host Interrupt +/* Game to Host Interrupt */ #define GIO_GIO_INTR_REG (GIO_BASE_REG+0x000) -// Game to Host SYNC +/* Game to Host SYNC */ #define GIO_GIO_SYNC_REG (GIO_BASE_REG+0x400) -// Host to Game Interrupt +/* Host to Game Interrupt */ #define GIO_CART_INTR_REG (GIO_BASE_REG+0x800) diff --git a/include/ultra64/regdef.h b/include/ultra64/regdef.h new file mode 100644 index 0000000000..a3b2832180 --- /dev/null +++ b/include/ultra64/regdef.h @@ -0,0 +1,164 @@ +#ifndef REGDEF_H +#define REGDEF_H + +#ifdef __GNUC__ +#define _MIPS_SIM_ABI32 _ABIO32 +#define _MIPS_SIM_NABI32 _ABIN32 +#define _MIPS_SIM_ABI64 _ABI64 +#endif + +#if (_MIPS_SIM == _MIPS_SIM_ABI32) +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define ta0 $12 +#define t5 $13 +#define ta1 $13 +#define t6 $14 +#define ta2 $14 +#define t7 $15 +#define ta3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 +#endif + +#if (_MIPS_SIM == _MIPS_SIM_ABI64) +#define zero $0 +#define AT $at +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 +#define ta0 $8 +#define a5 $9 +#define ta1 $9 +#define a6 $10 +#define ta2 $10 +#define a7 $11 +#define ta3 $11 +#define t0 $12 +#define t1 $13 +#define t2 $14 +#define t3 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define jp $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 +#endif + +#if (_MIPS_SIM == _MIPS_SIM_ABI32) +#define fv0 $f0 +#define fv0f $f1 +#define fv1 $f2 +#define fv1f $f3 +#define fa0 $f12 +#define fa0f $f13 +#define fa1 $f14 +#define fa1f $f15 +#define ft0 $f4 +#define ft0f $f5 +#define ft1 $f6 +#define ft1f $f7 +#define ft2 $f8 +#define ft2f $f9 +#define ft3 $f10 +#define ft3f $f11 +#define ft4 $f16 +#define ft4f $f17 +#define ft5 $f18 +#define ft5f $f19 +#define fs0 $f20 +#define fs0f $f21 +#define fs1 $f22 +#define fs1f $f23 +#define fs2 $f24 +#define fs2f $f25 +#define fs3 $f26 +#define fs3f $f27 +#define fs4 $f28 +#define fs4f $f29 +#define fs5 $f30 +#define fs5f $f31 +#endif + +#if (_MIPS_SIM == _MIPS_SIM_ABI64) +#define fv0 $f0 +#define fv1 $f2 +#define fa0 $f12 +#define fa1 $f13 +#define fa2 $f14 +#define fa3 $f15 +#define fa4 $f16 +#define fa5 $f17 +#define fa6 $f18 +#define fa7 $f19 +#define ft0 $f4 +#define ft1 $f5 +#define ft2 $f6 +#define ft3 $f7 +#define ft4 $f8 +#define ft5 $f9 +#define ft6 $f10 +#define ft7 $f11 +#define ft8 $f20 +#define ft9 $f21 +#define ft10 $f22 +#define ft11 $f23 +#define ft12 $f1 +#define ft13 $f3 +#define fs0 $f24 +#define fs1 $f25 +#define fs2 $f26 +#define fs3 $f27 +#define fs4 $f28 +#define fs5 $f29 +#define fs6 $f30 +#define fs7 $f31 +#endif + +#define fcr31 $31 + +#endif diff --git a/include/ultra64/thread.h b/include/ultra64/thread.h index 813fefaa97..3c2733f150 100644 --- a/include/ultra64/thread.h +++ b/include/ultra64/thread.h @@ -73,7 +73,7 @@ typedef struct __OSThreadTail { #else -// OSThread struct member offsets +/* OSThread struct member offsets */ #define THREAD_NEXT 0x00 #define THREAD_PRI 0x04 diff --git a/include/ultra64/viint.h b/include/ultra64/viint.h index 6fbdb023df..2df9936405 100644 --- a/include/ultra64/viint.h +++ b/include/ultra64/viint.h @@ -35,5 +35,12 @@ #define ORIGIN(v) (v) #define VINTR(v) (v) #define HSTART(start, end) START(start, end) +#define VSTART(start, end) START(start, end) + +#ifdef BBPLAYER +#define VI_CTRL_PIXEL_ADV_DEFAULT VI_CTRL_PIXEL_ADV(1) +#else +#define VI_CTRL_PIXEL_ADV_DEFAULT VI_CTRL_PIXEL_ADV(3) +#endif #endif diff --git a/include/variables.h b/include/variables.h index 7ba7a69ef0..f5f4599e7a 100644 --- a/include/variables.h +++ b/include/variables.h @@ -9,11 +9,24 @@ extern Mtx D_01000000; extern void* osRomBase; extern s32 osTvType; +extern u32 osRomType; +extern u32 osVersion; extern s32 osResetType; extern s32 osCicId; extern u32 osMemSize; extern u8 osAppNMIBuffer[0x40]; +extern u32 __osBbIsBb; +extern u32 __osBbEepromSize; +extern u32 __osBbPakSize; +extern u32 __osBbFlashSize; +extern u32 __osBbEepromAddress; +extern u32 __osBbPakAddress[4]; +extern u32 __osBbFlashAddress; +extern u32 __osBbSramSize; +extern u32 __osBbSramAddress; +extern u32 __osBbHackFlags; + extern s8 D_80009430; extern vu8 gViConfigBlack; extern u8 gViConfigAdditionalScanLines; @@ -133,8 +146,8 @@ extern s32 gSystemArenaLogSeverity; extern u8 __osPfsInodeCacheBank; extern s32 __osPfsLastChannel; -extern const TempoData gTempoData; -extern const AudioHeapInitSizes gAudioHeapInitSizes; +extern TempoData gTempoData; +extern AudioHeapInitSizes gAudioHeapInitSizes; extern s16 gOcarinaSongItemMap[]; extern AudioTable gSoundFontTable; extern u8 gSequenceFontTable[]; diff --git a/include/versions.h b/include/versions.h index 96ae716f06..620b27999e 100644 --- a/include/versions.h +++ b/include/versions.h @@ -15,6 +15,7 @@ #define GC_EU 11 #define GC_EU_MQ 12 #define GC_JP_CE 13 +#define IQUE_CN 14 // NTSC/PAL #if OOT_VERSION == PAL_1_0 || OOT_VERSION == PAL_1_1 || OOT_VERSION == GC_EU || OOT_VERSION == GC_EU_MQ || OOT_VERSION == GC_EU_MQ_DBG diff --git a/include/z64audio.h b/include/z64audio.h index 86e2860db6..d60a6aaeb7 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -201,11 +201,9 @@ typedef struct AdpcmBookHeader { * The procedure used to design the codeBook is based on an adaptive clustering algorithm. * The size of the codeBook is (8 * order * numPredictors) and is 8-byte aligned */ -typedef s16 AdpcmBookData[]; - typedef struct AdpcmBook { /* 0x00 */ AdpcmBookHeader header; - /* 0x08 */ AdpcmBookData book; // size 8 * order * numPredictors. 8-byte aligned + /* 0x08 */ s16 book[1]; // size 8 * order * numPredictors. 8-byte aligned } AdpcmBook; // size >= 0x8 typedef struct Sample { diff --git a/include/z64save.h b/include/z64save.h index c31d144557..b52e08ada5 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -465,6 +465,17 @@ typedef enum LinkAge { * SaveContext.eventChkInf */ +#define EVENTCHKINF_INDEX(flag) ((flag) >> 4) +#define EVENTCHKINF_MASK(flag) (1 << ((flag) & 0xF)) + +#define GET_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX(flag)] & EVENTCHKINF_MASK(flag)) +#define SET_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX(flag)] |= EVENTCHKINF_MASK(flag)) +#define CLEAR_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX(flag)] &= ~EVENTCHKINF_MASK(flag)) + +// EVENTCHKINF 0x00-0x0F +#define EVENTCHKINF_INDEX_0 0 +#define EVENTCHKINF_00_UNUSED 0x00 // flag is set in the debug save, but has no functionality +#define EVENTCHKINF_01_UNUSED 0x01 // flag is set in the debug save, but has no functionality #define EVENTCHKINF_MIDO_DENIED_DEKU_TREE_ACCESS 0x02 #define EVENTCHKINF_03 0x03 #define EVENTCHKINF_04 0x04 @@ -508,11 +519,9 @@ typedef enum LinkAge { #define EVENTCHKINF_3B 0x3B #define EVENTCHKINF_DEFEATED_NABOORU_KNUCKLE 0x3C -// 0x40 -#define EVENTCHKINF_40_INDEX 4 -#define EVENTCHKINF_40_SHIFT 0 -#define EVENTCHKINF_40_MASK (1 << EVENTCHKINF_40_SHIFT) -#define EVENTCHKINF_40 ((EVENTCHKINF_40_INDEX << 4) | EVENTCHKINF_40_SHIFT) +// EVENTCHKINF 0x40 +#define EVENTCHKINF_INDEX_40 EVENTCHKINF_INDEX(EVENTCHKINF_40) +#define EVENTCHKINF_40 0x40 #define EVENTCHKINF_41 0x41 #define EVENTCHKINF_42 0x42 @@ -541,11 +550,9 @@ typedef enum LinkAge { #define EVENTCHKINF_RESTORED_LAKE_HYLIA 0x69 #define EVENTCHKINF_TALON_WOKEN_IN_KAKARIKO 0x6A -// 0x6B -#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX 6 -#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT 11 -#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK (1 << EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT) -#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO ((EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX << 4) | EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT) +// EVENTCHKINF 0x6B +#define EVENTCHKINF_INDEX_TALON_RETURNED_FROM_KAKARIKO EVENTCHKINF_INDEX(EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO) +#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO 0x6B #define EVENTCHKINF_6E 0x6E #define EVENTCHKINF_6F 0x6F @@ -565,19 +572,39 @@ typedef enum LinkAge { #define EVENTCHKINF_PAID_BACK_SPOOKY_MASK 0x8E #define EVENTCHKINF_PAID_BACK_BUNNY_HOOD 0x8F -// 0x90-0x93 -// carpenters freed from the gerudo -#define EVENTCHKINF_CARPENTERS_FREE_INDEX 9 -#define EVENTCHKINF_CARPENTERS_FREE_SHIFT(n) (0 + (n)) -#define EVENTCHKINF_CARPENTERS_FREE_MASK(n) (1 << EVENTCHKINF_CARPENTERS_FREE_SHIFT(n)) -#define EVENTCHKINF_CARPENTERS_FREE(n) ((EVENTCHKINF_CARPENTERS_FREE_INDEX << 4) | EVENTCHKINF_CARPENTERS_FREE_SHIFT(n)) -#define EVENTCHKINF_CARPENTERS_FREE_MASK_ALL (\ - EVENTCHKINF_CARPENTERS_FREE_MASK(0) \ - | EVENTCHKINF_CARPENTERS_FREE_MASK(1) \ - | EVENTCHKINF_CARPENTERS_FREE_MASK(2) \ - | EVENTCHKINF_CARPENTERS_FREE_MASK(3) ) -#define GET_EVENTCHKINF_CARPENTERS_FREE_ALL() \ - CHECK_FLAG_ALL(gSaveContext.save.info.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX], EVENTCHKINF_CARPENTERS_FREE_MASK_ALL) +// EVENTCHKINF 0x90-0x93 +// Carpenters rescued from Gerudo Fortress +#define EVENTCHKINF_INDEX_CARPENTERS_RESCUED 0x9 +#define EVENTCHKINF_CARPENTER_0_RESCUED 0x90 +#define EVENTCHKINF_CARPENTER_1_RESCUED 0x91 +#define EVENTCHKINF_CARPENTER_2_RESCUED 0x92 +#define EVENTCHKINF_CARPENTER_3_RESCUED 0x93 + +#define EVENTCHKINF_CARPENTERS_ALL_RESCUED_MASK \ + (EVENTCHKINF_MASK(EVENTCHKINF_CARPENTER_0_RESCUED) | EVENTCHKINF_MASK(EVENTCHKINF_CARPENTER_1_RESCUED) | \ + EVENTCHKINF_MASK(EVENTCHKINF_CARPENTER_2_RESCUED) | EVENTCHKINF_MASK(EVENTCHKINF_CARPENTER_3_RESCUED)) + +#define GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED() \ + CHECK_FLAG_ALL(gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_CARPENTERS_RESCUED], \ + EVENTCHKINF_CARPENTERS_ALL_RESCUED_MASK) + +#define GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED2() \ + CHECK_FLAG_ALL(gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_CARPENTERS_RESCUED] & \ + (EVENTCHKINF_CARPENTERS_ALL_RESCUED_MASK | 0xF0), \ + EVENTCHKINF_CARPENTERS_ALL_RESCUED_MASK) + +#define ENDAIKU_CARPENTER_RESCUED_MASK(carpenterType) (1 << (carpenterType)) + +#define ENDAIKU_IS_CARPENTER_RESCUED(carpenterType) \ + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_CARPENTERS_RESCUED] & \ + ENDAIKU_CARPENTER_RESCUED_MASK(carpenterType) + +#define ENDAIKU_SET_CARPENTER_RESCUED(carpenterType) \ + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_CARPENTERS_RESCUED] |= \ + ENDAIKU_CARPENTER_RESCUED_MASK((carpenterType)) + +#define GET_EVENTCHKINF_CARPENTERS_RESCUED_FLAGS() \ + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_CARPENTERS_RESCUED] & EVENTCHKINF_CARPENTERS_ALL_RESCUED_MASK #define EVENTCHKINF_94 0x94 #define EVENTCHKINF_95 0x95 @@ -621,48 +648,35 @@ typedef enum LinkAge { #define EVENTCHKINF_C8 0xC8 #define EVENTCHKINF_C9 0xC9 -// 0xD0-0xD6 -#define EVENTCHKINF_SONGS_FOR_FROGS_INDEX 13 -#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT 0 -#define EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT 1 -#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT 2 -#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT 3 -#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT 4 -#define EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT 5 -#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT 6 -#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_ZL_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SOT_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_ZL ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_SOT ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT) -#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT) +// EVENTCHKINF 0xD0-0xD6 +#define EVENTCHKINF_INDEX_SONGS_FOR_FROGS EVENTCHKINF_INDEX(EVENTCHKINF_SONGS_FOR_FROGS_CHOIR) +#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR 0xD0 +#define EVENTCHKINF_SONGS_FOR_FROGS_ZL 0xD1 +#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA 0xD2 +#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS 0xD3 +#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA 0xD4 +#define EVENTCHKINF_SONGS_FOR_FROGS_SOT 0xD5 +#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS 0xD6 -// 0xDA-0xDE -#define EVENTCHKINF_DA_DB_DC_DD_DE_INDEX 13 -#define EVENTCHKINF_DA_MASK (1 << 10) -#define EVENTCHKINF_DB_MASK (1 << 11) -#define EVENTCHKINF_DC_MASK (1 << 12) -#define EVENTCHKINF_DD_MASK (1 << 13) -#define EVENTCHKINF_DE_MASK (1 << 14) - - -#define GET_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[(flag) >> 4] & (1 << ((flag) & 0xF))) -#define SET_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[(flag) >> 4] |= (1 << ((flag) & 0xF))) -#define CLEAR_EVENTCHKINF(flag) (gSaveContext.save.info.eventChkInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF))) +// EVENTCHKINF 0xDA-0xDE +#define EVENTCHKINF_INDEX_SKULLTULA_REWARD 0xD +#define EVENTCHKINF_SKULLTULA_REWARD_10 0xDA +#define EVENTCHKINF_SKULLTULA_REWARD_20 0xDB +#define EVENTCHKINF_SKULLTULA_REWARD_30 0xDC +#define EVENTCHKINF_SKULLTULA_REWARD_40 0xDD +#define EVENTCHKINF_SKULLTULA_REWARD_50 0xDE /* * SaveContext.itemGetInf */ +#define ITEMGETINF_INDEX(flag) ((flag) >> 4) +#define ITEMGETINF_MASK(flag) (1 << ((flag) & 0xF)) + +#define GET_ITEMGETINF(flag) (gSaveContext.save.info.itemGetInf[ITEMGETINF_INDEX(flag)] & ITEMGETINF_MASK(flag)) +#define SET_ITEMGETINF(flag) (gSaveContext.save.info.itemGetInf[ITEMGETINF_INDEX(flag)] |= ITEMGETINF_MASK(flag)) + #define ITEMGETINF_TALON_BOTTLE 0x02 #define ITEMGETINF_03 0x03 #define ITEMGETINF_04 0x04 @@ -685,17 +699,11 @@ typedef enum LinkAge { #define ITEMGETINF_16 0x16 #define ITEMGETINF_17 0x17 -// 0x18-0x1A -#define ITEMGETINF_18_19_1A_INDEX 1 -#define ITEMGETINF_18_SHIFT 8 -#define ITEMGETINF_19_SHIFT 9 -#define ITEMGETINF_1A_SHIFT 10 -#define ITEMGETINF_18_MASK (1 << ITEMGETINF_18_SHIFT) -#define ITEMGETINF_19_MASK (1 << ITEMGETINF_19_SHIFT) -#define ITEMGETINF_1A_MASK (1 << ITEMGETINF_1A_SHIFT) -#define ITEMGETINF_18 ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_18_SHIFT) -#define ITEMGETINF_19 ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_19_SHIFT) -#define ITEMGETINF_1A ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_1A_SHIFT) +// ITEMGETINF 0x18-0x1A +#define ITEMGETINF_INDEX_18_19_1A 1 +#define ITEMGETINF_18 0x18 +#define ITEMGETINF_19 0x19 +#define ITEMGETINF_1A 0x1A #define ITEMGETINF_1B 0x1B #define ITEMGETINF_1C 0x1C @@ -721,14 +729,19 @@ typedef enum LinkAge { #define ITEMGETINF_3F 0x3F -#define GET_ITEMGETINF(flag) (gSaveContext.save.info.itemGetInf[(flag) >> 4] & (1 << ((flag) & 0xF))) -#define SET_ITEMGETINF(flag) (gSaveContext.save.info.itemGetInf[(flag) >> 4] |= (1 << ((flag) & 0xF))) - - /* * SaveContext.infTable */ +#define INFTABLE_INDEX(flag) ((flag) >> 4) +#define INFTABLE_MASK(flag) (1 << ((flag) & 0xF)) + +#define GET_INFTABLE(flag) (gSaveContext.save.info.infTable[INFTABLE_INDEX(flag)] & INFTABLE_MASK(flag)) +#define SET_INFTABLE(flag) (gSaveContext.save.info.infTable[INFTABLE_INDEX(flag)] |= INFTABLE_MASK(flag)) +#define CLEAR_INFTABLE(flag) (gSaveContext.save.info.infTable[INFTABLE_INDEX(flag)] &= ~INFTABLE_MASK(flag)) + +// INFTABLE 0x0-0xF +#define INFTABLE_INDEX_0 0 #define INFTABLE_00 0x00 #define INFTABLE_01 0x01 #define INFTABLE_03 0x03 @@ -856,18 +869,18 @@ typedef enum LinkAge { #define INFTABLE_197 0x197 #define INFTABLE_198 0x198 -// 0x199-0x19F -#define INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX 25 -#define INFTABLE_199_MASK (1 << 9) -#define INFTABLE_19A_MASK (1 << 10) -#define INFTABLE_19B_MASK (1 << 11) -#define INFTABLE_19C_MASK (1 << 12) -#define INFTABLE_19D_MASK (1 << 13) -#define INFTABLE_19E_MASK (1 << 14) -#define INFTABLE_19F_MASK (1 << 15) +// INFTABLE 0x199-0x19F +#define INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F 25 +#define INFTABLE_199 0x199 +#define INFTABLE_19A 0x19A +#define INFTABLE_19B 0x19B +#define INFTABLE_19C 0x19C +#define INFTABLE_19D 0x19D +#define INFTABLE_19E 0x19E +#define INFTABLE_19F 0x19F -// 0x1A0-0x1AF -#define INFTABLE_1AX_INDEX 26 +// INFTABLE 0x1A0-0x1AF +#define INFTABLE_INDEX_1AX 26 #define INFTABLE_1A0_SHIFT 0 #define INFTABLE_1A1_SHIFT 1 #define INFTABLE_1A2_SHIFT 2 @@ -881,24 +894,27 @@ typedef enum LinkAge { #define INFTABLE_1AB_SHIFT 11 #define INFTABLE_1AD_SHIFT 13 -// 0x1D0-0x1DF -#define INFTABLE_1DX_INDEX 29 - - -#define GET_INFTABLE(flag) (gSaveContext.save.info.infTable[(flag) >> 4] & (1 << ((flag) & 0xF))) -#define SET_INFTABLE(flag) (gSaveContext.save.info.infTable[(flag) >> 4] |= (1 << ((flag) & 0xF))) -#define CLEAR_INFTABLE(flag) (gSaveContext.save.info.infTable[(flag) >> 4] &= ~(1 << ((flag) & 0xF))) +// INFTABLE 0x1D0-0x1DF +#define INFTABLE_INDEX_1DX INFTABLE_INDEX(INFTABLE_1D0) +#define INFTABLE_1D0 0x1D0 /* * SaveContext.eventInf */ +#define EVENTINF_INDEX(flag) ((flag) >> 4) +#define EVENTINF_MASK(flag) (1 << ((flag) & 0xF)) + +#define GET_EVENTINF(flag) (gSaveContext.eventInf[EVENTINF_INDEX(flag)] & EVENTINF_MASK(flag)) +#define SET_EVENTINF(flag) (gSaveContext.eventInf[EVENTINF_INDEX(flag)] |= EVENTINF_MASK(flag)) +#define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[EVENTINF_INDEX(flag)] &= ~EVENTINF_MASK(flag)) + // EVENTINF 0x00-0x0F // Ingo Race, Lon Lon Ranch minigames, and Horseback Archery minigame flags -#define EVENTINF_HORSES_INDEX 0 +#define EVENTINF_INDEX_HORSES 0 // EVENTINF 0x00-0x03 reserved for IngoRaceState -#define EVENTINF_INGO_RACE_STATE_MASK (0xF << 0) +#define EVENTINF_INGO_RACE_STATE_MASK (0xF << 0x00) typedef enum IngoRaceState { /* 0 */ INGO_RACE_STATE_OFFER_RENTAL, /* 1 */ INGO_RACE_STATE_HORSE_RENTAL_PERIOD, @@ -910,39 +926,35 @@ typedef enum IngoRaceState { /* 7 */ INGO_RACE_STATE_REMATCH } IngoRaceState; -#define EVENTINF_INGO_RACE_HORSETYPE 4 -#define EVENTINF_INGO_RACE_HORSETYPE_MASK (1 << EVENTINF_INGO_RACE_HORSETYPE) -#define EVENTINF_INGO_RACE_LOST_ONCE 5 -#define EVENTINF_INGO_RACE_LOST_ONCE_MASK (1 << EVENTINF_INGO_RACE_LOST_ONCE) -#define EVENTINF_INGO_RACE_SECOND_RACE 6 -#define EVENTINF_INGO_RACE_SECOND_RACE_MASK (1 << EVENTINF_INGO_RACE_SECOND_RACE) +#define EVENTINF_INGO_RACE_HORSETYPE 0x04 +#define EVENTINF_INGO_RACE_LOST_ONCE 0x05 +#define EVENTINF_INGO_RACE_SECOND_RACE 0x06 // Used in z_en_ta (Talon) to store Cucco game winning status // and in z_en_ge1 (Gerudo) to store archery in-progress status -#define EVENTINF_HORSES_08 8 +#define EVENTINF_HORSES_08 0x08 #define EVENTINF_CUCCO_GAME_WON EVENTINF_HORSES_08 // Used in z_en_ta (Talon) and z_en_ma3 (Malon) to store minigame finishing status -#define EVENTINF_HORSES_0A 10 +#define EVENTINF_HORSES_0A 0x0A #define EVENTINF_CUCCO_GAME_FINISHED EVENTINF_HORSES_0A -#define EVENTINF_INGO_RACE_0F 15 // unused? -#define EVENTINF_INGO_RACE_0F_MASK (1 << EVENTINF_INGO_RACE_0F) +#define EVENTINF_INGO_RACE_0F 0x0F // unused? // "InRaceSeq" -#define GET_EVENTINF_INGO_RACE_STATE() (gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & EVENTINF_INGO_RACE_STATE_MASK) +#define GET_EVENTINF_INGO_RACE_STATE() (gSaveContext.eventInf[EVENTINF_INDEX_HORSES] & EVENTINF_INGO_RACE_STATE_MASK) #define SET_EVENTINF_INGO_RACE_STATE(v) \ - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \ - (gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_INGO_RACE_STATE_MASK) | (v) + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] = \ + (gSaveContext.eventInf[EVENTINF_INDEX_HORSES] & ~EVENTINF_INGO_RACE_STATE_MASK) | (v) #define GET_EVENTINF_INGO_RACE_FLAG(flag) \ - ((gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & (1 << ((flag) & 0xF))) >> ((flag) & 0xF)) + ((gSaveContext.eventInf[EVENTINF_INDEX_HORSES] & EVENTINF_MASK(flag)) >> ((flag) & 0xF)) #define SET_EVENTINF_INGO_RACE_FLAG(flag) \ - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \ - (gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & 0xFFFF) | (1 << ((flag) & 0xF)) + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] = \ + (gSaveContext.eventInf[EVENTINF_INDEX_HORSES] & 0xFFFF) | EVENTINF_MASK(flag) #define WRITE_EVENTINF_INGO_RACE_FLAG(flag, v) \ - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \ - (gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~(1 << ((flag) & 0xF))) | ((v) << ((flag) & 0xF)) + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] = \ + (gSaveContext.eventInf[EVENTINF_INDEX_HORSES] & ~EVENTINF_MASK(flag)) | ((v) << ((flag) & 0xF)) #define GET_EVENTINF_INGO_RACE_HORSETYPE() GET_EVENTINF_INGO_RACE_FLAG(EVENTINF_INGO_RACE_HORSETYPE) #define WRITE_EVENTINF_INGO_RACE_HORSETYPE(v) WRITE_EVENTINF_INGO_RACE_FLAG(EVENTINF_INGO_RACE_HORSETYPE, v) @@ -953,7 +965,7 @@ typedef enum IngoRaceState { #define EVENTINF_MARATHON_ACTIVE 0x10 // EVENTINF 0x20-0x24 -#define EVENTINF_20_21_22_23_24_INDEX 2 +#define EVENTINF_INDEX_20_21_22_23_24 2 #define EVENTINF_20_MASK (1 << 0) #define EVENTINF_21_MASK (1 << 1) #define EVENTINF_22_MASK (1 << 2) @@ -962,10 +974,6 @@ typedef enum IngoRaceState { #define EVENTINF_30 0x30 -#define GET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] & (1 << ((flag) & 0xF))) -#define SET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] |= (1 << ((flag) & 0xF))) -#define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF))) - extern SaveContext gSaveContext; diff --git a/linker_scripts/makerom.ld b/linker_scripts/makerom.ld new file mode 100644 index 0000000000..a898c6b34f --- /dev/null +++ b/linker_scripts/makerom.ld @@ -0,0 +1,13 @@ +#include "boot.h" + +/* These are only here due to iQue entry.s using ori to load the lower halves of symbols + * rather than addiu, so the usual relocation operators %hi() and %lo() can't be used. */ + +_bootSegmentBssStart_HI = _bootSegmentBssStart >> 16; + +_bootSegmentBssSize_HI = _bootSegmentBssSize >> 16; + +bootproc_HI = bootproc >> 16; + +BOOT_STACK_TOP = (sBootThreadStack + BOOT_STACK_SIZE); +BOOT_STACK_TOP_HI = BOOT_STACK_TOP >> 16; diff --git a/requirements.txt b/requirements.txt index 45c122f0ec..c9c4afed64 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Setup and compression -crunch64>=0.3.1,<1.0.0 +crunch64>=0.5.1,<1.0.0 ipl3checksum>=1.2.0,<2.0.0 pyyaml>=6.0.1,<7.0.0 diff --git a/retail_progress.py b/retail_progress.py index ec1095330e..cf6a623c4a 100755 --- a/retail_progress.py +++ b/retail_progress.py @@ -192,7 +192,9 @@ def get_section_hex_dump(path: Path, section: str) -> List[str]: def parse_hex_dump(lines: List[str]) -> bytes: result = bytearray() for line in lines: - data = line[6:41].replace(" ", "") + # strip offset + line = " ".join(line.strip().split(" ", 1)[1]) + data = line[:35].replace(" ", "") result.extend(bytes.fromhex(data)) # pad to 0x10-byte alignment @@ -391,7 +393,7 @@ if __name__ == "__main__": "--version", dest="oot_version", help="version to compare", - default="ntsc-1.2", + default="ique-cn", ) parser.add_argument( "--data", diff --git a/spec b/spec index c5c437cafd..69476bd4e9 100644 --- a/spec +++ b/spec @@ -6,6 +6,9 @@ beginseg name "makerom" + // We set the address of the makerom segment as 0x80000400 - 0x1000, since the ROM header and IPL3 together + // are 0x1000 bytes long and we want the entry code to end up at address 0x80000400. + address 0x7FFFF400 include "$(BUILD_DIR)/src/makerom/rom_header.o" include "$(BUILD_DIR)/src/makerom/ipl3.o" include "$(BUILD_DIR)/src/makerom/entry.o" @@ -13,7 +16,6 @@ endseg beginseg name "boot" - address 0x80000460 include "$(BUILD_DIR)/src/boot/boot_main.o" include "$(BUILD_DIR)/src/boot/idle.o" #if OOT_VERSION >= PAL_1_0 @@ -21,7 +23,11 @@ beginseg #endif include "$(BUILD_DIR)/src/boot/carthandle.o" include "$(BUILD_DIR)/src/boot/z_std_dma.o" +#if !PLATFORM_IQUE include "$(BUILD_DIR)/src/boot/yaz0.o" +#else + include "$(BUILD_DIR)/src/boot/inflate.o" +#endif include "$(BUILD_DIR)/src/boot/z_locale.o" #if PLATFORM_N64 include "$(BUILD_DIR)/src/boot/cic6105.o" @@ -29,7 +35,11 @@ beginseg #if DEBUG_FEATURES include "$(BUILD_DIR)/src/boot/assert.o" #endif +#if !PLATFORM_IQUE include "$(BUILD_DIR)/src/boot/is_debug.o" +#else + include "$(BUILD_DIR)/src/boot/is_debug_ique.o" +#endif include "$(BUILD_DIR)/src/boot/driverominit.o" include "$(BUILD_DIR)/src/boot/mio0.o" include "$(BUILD_DIR)/src/libu64/stackcheck.o" @@ -166,6 +176,21 @@ beginseg include "$(BUILD_DIR)/src/boot/build.o" include "$(BUILD_DIR)/data/rsp_boot.text.o" include "$(BUILD_DIR)/data/cic6105.text.o" + +#if PLATFORM_IQUE && !defined(COMPILER_GCC) + include "$(BUILD_DIR)/src/libgcc/__divdi3.o" + include "$(BUILD_DIR)/src/libgcc/__moddi3.o" + include "$(BUILD_DIR)/src/libgcc/__udivdi3.o" + include "$(BUILD_DIR)/src/libgcc/__umoddi3.o" + include "$(BUILD_DIR)/src/libgcc/__cmpdi2.o" + include "$(BUILD_DIR)/src/libgcc/__floatdidf.o" + include "$(BUILD_DIR)/src/libgcc/__floatdisf.o" + include "$(BUILD_DIR)/src/libgcc/__fixunsdfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixdfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixunssfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixsfdi.o" +#endif + #ifdef COMPILER_GCC include "$(BUILD_DIR)/src/libc/memset.o" include "$(BUILD_DIR)/src/libc/memmove.o" @@ -740,6 +765,7 @@ beginseg include "$(BUILD_DIR)/src/audio/sequence.o" include "$(BUILD_DIR)/src/audio/data.o" include "$(BUILD_DIR)/src/audio/session_config.o" + include "$(BUILD_DIR)/src/audio/session_init.o" #if PLATFORM_N64 include "$(BUILD_DIR)/src/libu64/gfxprint.o" include "$(BUILD_DIR)/src/libu64/rcp_utils.o" @@ -805,6 +831,7 @@ beginseg include "$(BUILD_DIR)/src/libultra/gu/perspective.o" include "$(BUILD_DIR)/src/libultra/io/sprawdma.o" include "$(BUILD_DIR)/src/libultra/io/sirawdma.o" + include "$(BUILD_DIR)/src/libultra/bb/sk/skapi.o" // TODO temporary include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" #if DEBUG_FEATURES include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" @@ -889,7 +916,7 @@ beginseg include "$(BUILD_DIR)/src/libultra/mgu/translate.o" #endif include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" -#if OOT_VERSION == NTSC_1_2 || (PLATFORM_GC && !DEBUG_FEATURES) +#if OOT_VERSION >= PAL_1_0 && !(OOT_PAL_N64 || DEBUG_FEATURES) include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" #endif #if !DEBUG_FEATURES diff --git a/src/audio/general.c b/src/audio/general.c index cbbb0c0709..cb87548fa8 100644 --- a/src/audio/general.c +++ b/src/audio/general.c @@ -8,6 +8,8 @@ #define AUDIO_PRINTF osSyncPrintf #elif IDO_PRINTF_WORKAROUND #define AUDIO_PRINTF(args) (void)0 +#elif defined(__GNUC__) && __GNUC__ < 3 +#define AUDIO_PRINTF(format, args...) (void)0 #else #define AUDIO_PRINTF(format, ...) (void)0 #endif @@ -1188,7 +1190,7 @@ u8 D_8016B9F3; u8 sFanfareStartTimer; u16 sFanfareSeqId; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) u16 sPrevAmbienceSeqId; #endif @@ -1706,7 +1708,7 @@ void AudioOcarina_PlayControllerInput(u8 unused) { } else { // no bending or vibrato for recording state OCARINA_RECORD_SCARECROW_SPAWN sCurOcarinaBendIndex = 0; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) sCurOcarinaVibrato = 0; #endif sCurOcarinaBendFreq = 1.0f; // No bend @@ -1853,7 +1855,7 @@ void AudioOcarina_PlaybackSong(void) { } // Update vibrato -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 if (sNotePlaybackVibrato != sPlaybackSong[sPlaybackNotePos].vibrato) { sNotePlaybackVibrato = sPlaybackSong[sPlaybackNotePos].vibrato; // Sets vibrato to io port 6 @@ -2144,7 +2146,7 @@ void AudioOcarina_RecordSong(void) { } else if (sRecordOcarinaVolume != sCurOcarinaVolume) { noteChanged = true; } else if (sRecordOcarinaVibrato != sCurOcarinaVibrato) { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (sRecordingState != OCARINA_RECORD_SCARECROW_SPAWN) { noteChanged = true; } @@ -2152,7 +2154,7 @@ void AudioOcarina_RecordSong(void) { noteChanged = true; #endif } else if (sRecordOcarinaBendIndex != sCurOcarinaBendIndex) { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (sRecordingState != OCARINA_RECORD_SCARECROW_SPAWN) { noteChanged = true; } @@ -2493,7 +2495,7 @@ f32 Audio_ComputeSfxFreqScale(u8 bankId, u8 entryIdx) { switch (bankId) { case BANK_VOICE: -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (((entry->sfxId & 0xFF) < 0x40) && (sAudioBaseFilter2 != 0)) { phi_v0 = true; } else if (((entry->sfxId & 0xFF) >= 0x40) && (sAudioExtraFilter2 != 0)) { @@ -2614,7 +2616,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIndex) { f32 behindScreenZ; u8 baseFilter = 0; SfxBankEntry* entry = &gSfxBanks[bankId][entryIdx]; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) s32 pad; #endif @@ -2655,7 +2657,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIndex) { } } if (sAudioBaseFilter != 0) { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if ((bankId == BANK_PLAYER) || (bankId == BANK_ITEM) || ((bankId == BANK_VOICE) && ((entry->sfxId & 0xFF) < 0x40))) #else @@ -3239,7 +3241,7 @@ void Audio_PlaySceneSequence(u16 seqId) { AUDIOCMD_GLOBAL_STOP_AUDIOCMDS(); } -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_DISABLED) { Audio_StopSequence(SEQ_PLAYER_BGM_MAIN, 0); AUDIOCMD_GLOBAL_STOP_AUDIOCMDS(); @@ -3383,7 +3385,7 @@ void func_800F5B58(void) { if (sPrevMainBgmSeqId == NA_BGM_DISABLED) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0); } else { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (sPrevMainBgmSeqId == NA_BGM_NATURE_AMBIENCE) { sPrevMainBgmSeqId = sPrevAmbienceSeqId; } @@ -3519,7 +3521,7 @@ void Audio_SetSequenceMode(u8 seqMode) { volumeFadeInTimer); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_SUB, 10, 8, NA_BGM_ENEMY); -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 if (seqId != NA_BGM_NATURE_AMBIENCE) #else if (seqId > NA_BGM_NATURE_AMBIENCE) @@ -3544,7 +3546,7 @@ void Audio_SetSequenceMode(u8 seqMode) { sPrevSeqMode = seqMode + 0x80; } else { -#if OOT_VERSION < NTSC_1_1 || PLATFORM_GC +#if OOT_VERSION < NTSC_1_1 || !PLATFORM_N64 // Empty #elif OOT_VERSION < PAL_1_0 if ((seqMode == SEQ_MODE_ENEMY) && (seqId != NA_BGM_FIELD_LOGIC) && @@ -3600,7 +3602,7 @@ void Audio_SetBgmEnemyVolume(f32 dist) { sAudioEnemyVol = ((350.0f - adjDist) * 127.0f) / 350.0f; Audio_SetVolumeScale(SEQ_PLAYER_BGM_SUB, VOL_SCALE_INDEX_BGM_SUB, sAudioEnemyVol, 10); -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 if (gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId != NA_BGM_NATURE_AMBIENCE) #else if (gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId > NA_BGM_NATURE_AMBIENCE) @@ -3610,7 +3612,7 @@ void Audio_SetBgmEnemyVolume(f32 dist) { } } -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 if (gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId != NA_BGM_NATURE_AMBIENCE) #else if (gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId > NA_BGM_NATURE_AMBIENCE) @@ -3928,7 +3930,7 @@ void func_800F6C34(void) { sFanfareStartTimer = 0; D_8016B9F3 = 1; sMalonSingingDisabled = false; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) sPrevAmbienceSeqId = NA_BGM_DISABLED; #endif } @@ -3989,7 +3991,7 @@ void Audio_StartNatureAmbienceSequence(u16 playerIO, u16 channelMask) { } #endif -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if ((Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_DISABLED) && (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_NATURE_AMBIENCE)) { Audio_StopSequence(SEQ_PLAYER_BGM_MAIN, 0); @@ -4023,7 +4025,7 @@ void Audio_PlayNatureAmbienceSequence(u8 natureAmbienceId) { if ((gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId == NA_BGM_DISABLED) || !(sSeqFlags[gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId & 0xFF & 0xFF] & SEQ_FLAG_NO_AMBIENCE)) { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId != NA_BGM_NATURE_AMBIENCE) { sPrevAmbienceSeqId = gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId; } diff --git a/src/audio/lib/load.c b/src/audio/lib/load.c index 3e66c79329..0aa3324d73 100644 --- a/src/audio/lib/load.c +++ b/src/audio/lib/load.c @@ -1250,8 +1250,7 @@ void AudioLoad_Init(void* heap, u32 heapSize) { ramAddr = AudioHeap_Alloc(&gAudioCtx.initPool, gAudioHeapInitSizes.permanentPoolSize); if (ramAddr == NULL) { - // cast away const from gAudioHeapInitSizes - *((u32*)&gAudioHeapInitSizes.permanentPoolSize) = 0; + gAudioHeapInitSizes.permanentPoolSize = 0; } AudioHeap_InitPool(&gAudioCtx.permanentPool, ramAddr, gAudioHeapInitSizes.permanentPoolSize); diff --git a/src/audio/lib/seqplayer.c b/src/audio/lib/seqplayer.c index 71132797e2..a7091b24b3 100644 --- a/src/audio/lib/seqplayer.c +++ b/src/audio/lib/seqplayer.c @@ -437,7 +437,7 @@ void AudioSeq_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer) { void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) { s32 finished = 0; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (seqPlayer->finished == 1) { finished = 1; } @@ -457,7 +457,7 @@ void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) { } if (AudioLoad_IsFontLoadComplete(seqPlayer->defaultFont)) { -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (finished == 1) { AudioHeap_ReleaseNotesForFont(seqPlayer->defaultFont); } diff --git a/src/audio/lib/synthesis.c b/src/audio/lib/synthesis.c index d19ed4ae5f..85fb8d2610 100644 --- a/src/audio/lib/synthesis.c +++ b/src/audio/lib/synthesis.c @@ -644,7 +644,7 @@ Acmd* AudioSynth_DoOneAudioUpdate(s16* aiBuf, s32 aiBufLen, Acmd* cmd, s32 updat // Leak reverb between the left and right channels -#if OOT_VERSION < NTSC_1_1 || PLATFORM_GC +#if OOT_VERSION < NTSC_1_1 || !PLATFORM_N64 if ((reverb->leakRtl != 0) || (reverb->leakLtr != 0)) #else if (((reverb->leakRtl != 0) || (reverb->leakLtr != 0)) && (gAudioCtx.soundMode != SOUNDMODE_MONO)) @@ -785,7 +785,7 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSubEu, NoteSynthesisS samplesLenFixedPoint = (resamplingRateFixedPoint * aiBufLen * 2) + synthState->samplePosFrac; numSamplesToLoad = samplesLenFixedPoint >> 16; -#if !(OOT_VERSION < NTSC_1_1 || PLATFORM_GC) +#if !(OOT_VERSION < NTSC_1_1 || !PLATFORM_N64) if (numSamplesToLoad == 0) { skipBytes = false; } diff --git a/src/audio/lib/thread.c b/src/audio/lib/thread.c index c074f596a1..f47dbade7e 100644 --- a/src/audio/lib/thread.c +++ b/src/audio/lib/thread.c @@ -17,7 +17,7 @@ AudioTask* AudioThread_Update(void) { return AudioThread_UpdateImpl(); } -#if !(OOT_VERSION < PAL_1_0 || PLATFORM_GC) +#if !(OOT_VERSION < PAL_1_0 || !PLATFORM_N64) static s32 sMaxAbiCmdCnt = 0x80; static AudioTask* sWaitingAudioTask = NULL; #endif @@ -26,7 +26,7 @@ static AudioTask* sWaitingAudioTask = NULL; * This is Audio_Update for the audio thread */ AudioTask* AudioThread_UpdateImpl(void) { -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 static s32 sMaxAbiCmdCnt = 0x80; static AudioTask* sWaitingAudioTask = NULL; #endif diff --git a/src/audio/session_config.c b/src/audio/session_config.c index 27771515a2..a531d6c27b 100644 --- a/src/audio/session_config.c +++ b/src/audio/session_config.c @@ -1,33 +1,9 @@ #include "global.h" -#include "assets/audio/sequence_sizes.h" -#include "assets/audio/soundfont_sizes.h" -#define SFX_SEQ_SIZE Sequence_0_SIZE -#define SFX_SOUNDFONTS_SIZE (Soundfont_0_SIZE + Soundfont_1_SIZE) AudioContext gAudioCtx; AudioCustomUpdateFunction gAudioCustomUpdateFunction; s32 D_801755D8[3]; // unused -const TempoData gTempoData = { - 0x1C00, // unk_00 - SEQTICKS_PER_BEAT, // seqTicksPerBeat -}; - -// Sizes of everything on the init pool -#define AI_BUFFERS_SIZE (AIBUF_SIZE * ARRAY_COUNT(gAudioCtx.aiBuffers)) -#define SOUNDFONT_LIST_SIZE (NUM_SOUNDFONTS * sizeof(SoundFont)) -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC -#define PERMANENT_POOL_SIZE (SFX_SEQ_SIZE + SFX_SOUNDFONTS_SIZE) -#else -#define PERMANENT_POOL_SIZE (SFX_SEQ_SIZE + SFX_SOUNDFONTS_SIZE + 0x10) -#endif - -const AudioHeapInitSizes gAudioHeapInitSizes = { - ALIGN16(sizeof(gAudioHeap) - 0x100), // audio heap size - ALIGN16(PERMANENT_POOL_SIZE + AI_BUFFERS_SIZE + SOUNDFONT_LIST_SIZE), // init pool size - ALIGN16(PERMANENT_POOL_SIZE), // permanent pool size -}; - #define DEFAULT_REVERB_SETTINGS \ { 1, 0x30, 0x3000, 0, 0, 0x7FFF, 0x0000, 0x0000, 0xFF, 0x3000, 0x0, 0x0 } diff --git a/src/audio/session_init.c b/src/audio/session_init.c new file mode 100644 index 0000000000..a6e67f40d4 --- /dev/null +++ b/src/audio/session_init.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "assets/audio/sequence_sizes.h" +#include "assets/audio/soundfont_sizes.h" + +#define SFX_SEQ_SIZE Sequence_0_SIZE +#define SFX_SOUNDFONTS_SIZE (Soundfont_0_SIZE + Soundfont_1_SIZE) + +TempoData gTempoData = { + 0x1C00, // unk_00 + SEQTICKS_PER_BEAT, // seqTicksPerBeat +}; + +// Sizes of everything on the init pool +#define AI_BUFFERS_SIZE (AIBUF_SIZE * ARRAY_COUNT(gAudioCtx.aiBuffers)) +#define SOUNDFONT_LIST_SIZE (NUM_SOUNDFONTS * sizeof(SoundFont)) +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 +#define PERMANENT_POOL_SIZE (SFX_SEQ_SIZE + SFX_SOUNDFONTS_SIZE) +#else +#define PERMANENT_POOL_SIZE (SFX_SEQ_SIZE + SFX_SOUNDFONTS_SIZE + 0x10) +#endif + +AudioHeapInitSizes gAudioHeapInitSizes = { + ALIGN16(sizeof(gAudioHeap) - 0x100), // audio heap size + ALIGN16(PERMANENT_POOL_SIZE + AI_BUFFERS_SIZE + SOUNDFONT_LIST_SIZE), // init pool size + ALIGN16(PERMANENT_POOL_SIZE), // permanent pool size +}; diff --git a/src/audio/sfx.c b/src/audio/sfx.c index ce94cf5483..1c743e95ba 100644 --- a/src/audio/sfx.c +++ b/src/audio/sfx.c @@ -342,7 +342,7 @@ void Audio_ChooseActiveSfx(u8 bankId) { entry->sfxId, entry->posX, entry->posZ, *entry->posX, *entry->posY, *entry->posZ); } entry->priority = (u32)entry->dist + (SQ(0xFF - sfxImportance) * SQ(76)); -#if OOT_VERSION < NTSC_1_1 || PLATFORM_GC +#if OOT_VERSION < NTSC_1_1 || !PLATFORM_N64 temp3 = entry->sfxId; // fake entry->priority = entry->priority + temp3 - temp3; #endif diff --git a/src/boot/driverominit.c b/src/boot/driverominit.c index 7d1441cdd9..5ed69abe07 100644 --- a/src/boot/driverominit.c +++ b/src/boot/driverominit.c @@ -3,7 +3,14 @@ OSPiHandle __DriveRomHandle; OSPiHandle* osDriveRomInit(void) { +#if PLATFORM_IQUE && defined(NON_MATCHING) + // On iQue, the compiled output of this file is patched so that the + // `!first` check is always taken. For non-matching builds, we edit the + // source code instead. + static u32 first = false; +#else static u32 first = true; +#endif register s32 status; register u32 value; register u32 prevInt; diff --git a/src/boot/idle.c b/src/boot/idle.c index ce1eaa9b5c..508fd16c4e 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -57,7 +57,7 @@ void Idle_ThreadEntry(void* arg) { PRINTF(T("作製者 : %s\n", "Created by: %s\n"), gBuildCreator); PRINTF(T("作成日時 : %s\n", "Created : %s\n"), gBuildDate); PRINTF("MAKEOPTION: %s\n", gBuildMakeOption); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("RAMサイズは %d キロバイトです(osMemSize/osGetMemSize)\n", "RAM size is %d kilobytes (osMemSize/osGetMemSize)\n"), (s32)osMemSize / 1024); @@ -70,7 +70,7 @@ void Idle_ThreadEntry(void* arg) { PRINTF(T("YIELDバッファのサイズは %d キロバイトです\n", "YIELD buffer size is %d kilobytes\n"), 3); PRINTF(T("オーディオヒープのサイズは %d キロバイトです\n", "Audio heap size is %d kilobytes\n"), ((intptr_t)&gAudioHeap[ARRAY_COUNT(gAudioHeap)] - (intptr_t)gAudioHeap) / 1024); - PRINTF(VT_RST); + PRINTF_RST(); osCreateViManager(OS_PRIORITY_VIMGR); diff --git a/src/boot/inflate.c b/src/boot/inflate.c new file mode 100644 index 0000000000..c0467dd38c --- /dev/null +++ b/src/boot/inflate.c @@ -0,0 +1,1003 @@ +/* Not copyrighted 1992 by Mark Adler + version c10p1, 10 January 1993 */ + +/* You can do whatever you like with this source file, though I would + prefer that if you modify it and redistribute it that you include + comments to that effect with your name and the date. Thank you. + [The history has been moved to the file ChangeLog.] + */ + +/* + Inflate deflated (PKZIP's method 8 compressed) data. The compression + method searches for as much of the current string of bytes (up to a + length of 258) in the previous 32K bytes. If it doesn't find any + matches (of at least length 3), it codes the next byte. Otherwise, it + codes the length of the matched string and its distance backwards from + the current position. There is a single Huffman code that codes both + single bytes (called "literals") and match lengths. A second Huffman + code codes the distance information, which follows a length code. Each + length or distance code actually represents a base value and a number + of "extra" (sometimes zero) bits to get to add to the base value. At + the end of each deflated block is a special end-of-block (EOB) literal/ + length code. The decoding process is basically: get a literal/length + code; if EOB then done; if a literal, emit the decoded byte; if a + length then get the distance and emit the referred-to bytes from the + sliding window of previously emitted data. + + There are (currently) three kinds of inflate blocks: stored, fixed, and + dynamic. The compressor deals with some chunk of data at a time, and + decides which method to use on a chunk-by-chunk basis. A chunk might + typically be 32K or 64K. If the chunk is uncompressible, then the + "stored" method is used. In this case, the bytes are simply stored as + is, eight bits per byte, with none of the above coding. The bytes are + preceded by a count, since there is no longer an EOB code. + + If the data is compressible, then either the fixed or dynamic methods + are used. In the dynamic method, the compressed data is preceded by + an encoding of the literal/length and distance Huffman codes that are + to be used to decode this block. The representation is itself Huffman + coded, and so is preceded by a description of that code. These code + descriptions take up a little space, and so for small blocks, there is + a predefined set of codes, called the fixed codes. The fixed method is + used if the block codes up smaller that way (usually for quite small + chunks), otherwise the dynamic method is used. In the latter case, the + codes are customized to the probabilities in the current block, and so + can code it much better than the pre-determined fixed codes. + + The Huffman codes themselves are decoded using a multi-level table + lookup, in order to maximize the speed of decoding plus the speed of + building the decoding tables. See the comments below that precede the + lbits and dbits tuning parameters. + */ + +/* + Notes beyond the 1.93a appnote.txt: + + 1. Distance pointers never point before the beginning of the output + stream. + 2. Distance pointers can point back across blocks, up to 32k away. + 3. There is an implied maximum of 7 bits for the bit length table and + 15 bits for the actual data. + 4. If only one code exists, then it is encoded using one bit. (Zero + would be more efficient, but perhaps a little confusing.) If two + codes exist, they are coded using one bit each (0 and 1). + 5. There is no way of sending zero distance codes--a dummy must be + sent if there are none. (History: a pre 2.0 version of PKZIP would + store blocks with no distance codes, but this was discovered to be + too harsh a criterion.) Valid only for 1.93a. 2.04c does allow + zero distance codes, which is sent as one code of zero bits in + length. + 6. There are up to 286 literal/length codes. Code 256 represents the + end-of-block. Note however that the static length tree defines + 288 codes just to fill out the Huffman codes. Codes 286 and 287 + cannot be used though, since there is no length base or extra bits + defined for them. Similarly, there are up to 30 distance codes. + However, static trees define 32 codes (all 5 bits) to fill out the + Huffman codes, but the last two had better not show up in the data. + 7. Unzip can check dynamic Huffman blocks for complete code sets. + The exception is that a single code would not be complete (see #4). + 8. The five bits following the block type is really the number of + literal codes sent minus 257. + 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits + (1+6+6). Therefore, to output three times the length, you output + three codes (1+1+1), whereas to output four times the same length, + you only need two codes (1+3). Hmm. + 10. In the tree reconstruction algorithm, Code = Code + Increment + only if BitLength(i) is not zero. (Pretty obvious.) + 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19) + 12. Note: length code 284 can represent 227-258, but length code 285 + really is 258. The last length deserves its own, short code + since it gets used a lot in very redundant files. The length + 258 is special since 258 - 3 (the min match length) is 255. + 13. The literal/length and distance code bit lengths are read as a + single stream of lengths. It is possible (and advantageous) for + a repeat code (16, 17, or 18) to go across the boundary between + the two sets of lengths. + */ + +#include "ultra64/ultratypes.h" +#include "libc/stddef.h" +#include "libc/stdint.h" +#include "alignment.h" +#include "attributes.h" +#include "z64dma.h" + +typedef u8 uch; +typedef u16 ush; +typedef u32 ulg; + +#define Trace(x) +#define Tracev(x) +#define Tracevv(x) +#define Tracecv(c, x) + +#define EOF -1 + +#define WSIZE 0x8000 +#define INBUFSIZ 0x1000 + +typedef struct GzipFileDescriptor { + uintptr_t addr; + s32 size; +} GzipFileDescriptor; + +GzipFileDescriptor ifd; + +unsigned insize; +unsigned inptr; +unsigned outcnt; + +static u8 inbuf[INBUFSIZ]; +static u8* output_ptr; + +int fill_inbuf(int eof_ok); +void flush_window(void); + +/* Huffman code lookup table entry--this entry is four bytes for machines + that have 16-bit pointers (e.g. PC's in the small or medium model). + Valid extra bits are 0..13. e == 15 is EOB (end of block), e == 16 + means that v is a literal, 16 < e < 32 means that v is a pointer to + the next table, which codes e - 16 bits, and lastly e == 99 indicates + an unused code. If a code with e == 99 is looked up, this implies an + error in the data. */ +struct huft { + uch e; /* number of extra bits or operation */ + uch b; /* number of bits in this code or subcode */ + union { + ush n; /* literal, length base, or distance base */ + struct huft* t; /* pointer to next level of table */ + } v; +}; + +/* Function prototypes */ +int huft_free(struct huft*); + +/* The inflate algorithm uses a sliding 32K byte window on the uncompressed + stream to find repeated byte strings. This is implemented here as a + circular buffer. The index is updated simply by incrementing and then + and'ing with 0x7fff (32K-1). */ +/* It is left to other modules to supply the 32K area. It is assumed + to be usable as if it were declared "uch slide[32768];" or as just + "uch *slide;" and then malloc'ed in the latter case. The definition + must be in unzip.h, included above. */ +/* unsigned wp; current position in slide */ +#define wp outcnt +#define flush_output(w) (wp = (w), flush_window()) + +/* Tables for deflate from PKZIP's appnote.txt. */ +static unsigned border[] = { /* Order of the bit length code lengths */ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 +}; +static ush cplens[] = { /* Copy lengths for literal codes 257..285 */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +}; +/* note: see note #13 above about the 258 in this list. */ +static ush cplext[] = { /* Extra bits for literal codes 257..285 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99 +}; /* 99==invalid */ +static ush cpdist[] = { /* Copy offsets for distance codes 0..29 */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, + 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 +}; +static ush cpdext[] = { /* Extra bits for distance codes */ + 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 +}; + +/* Macros for inflate() bit peeking and grabbing. + The usage is: + + NEEDBITS(j) + x = b & mask_bits[j]; + DUMPBITS(j) + + where NEEDBITS makes sure that b has at least j bits in it, and + DUMPBITS removes the bits from b. The macros use the variable k + for the number of bits in b. Normally, b and k are register + variables for speed, and are initialized at the beginning of a + routine that uses these macros from a global bit buffer and count. + The macros also use the variable w, which is a cached copy of wp. + + If we assume that EOB will be the longest code, then we will never + ask for bits with NEEDBITS that are beyond the end of the stream. + So, NEEDBITS should not read any more bytes than are needed to + meet the request. Then no bytes need to be "returned" to the buffer + at the end of the last block. + + However, this assumption is not true for fixed blocks--the EOB code + is 7 bits, but the other literal/length codes can be 8 or 9 bits. + (The EOB code is shorter than other codes because fixed blocks are + generally short. So, while a block always has an EOB, many other + literal/length codes have a significantly lower probability of + showing up at all.) However, by making the first table have a + lookup of seven bits, the EOB code will be found in that first + lookup, and so will not require that too many bits be pulled from + the stream. + */ + +ulg bb; /* bit buffer */ +unsigned bk; /* bits in bit buffer */ + +static ush mask_bits[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, + 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff }; + +#define GETBYTE() (inptr < insize ? inbuf[inptr++] : fill_inbuf(0)) + +#define NEXTBYTE() (uch) GETBYTE() +#define NEEDBITS(n) \ + { \ + while (k < (n)) { \ + b |= ((ulg)NEXTBYTE()) << k; \ + k += 8; \ + } \ + } +#define DUMPBITS(n) \ + { \ + b >>= (n); \ + k -= (n); \ + } + +/* + Huffman code decoding is performed using a multi-level table lookup. + The fastest way to decode is to simply build a lookup table whose + size is determined by the longest code. However, the time it takes + to build this table can also be a factor if the data being decoded + is not very long. The most common codes are necessarily the + shortest codes, so those codes dominate the decoding time, and hence + the speed. The idea is you can have a shorter table that decodes the + shorter, more probable codes, and then point to subsidiary tables for + the longer codes. The time it costs to decode the longer codes is + then traded against the time it takes to make longer tables. + + This results of this trade are in the variables lbits and dbits + below. lbits is the number of bits the first level table for literal/ + length codes can decode in one step, and dbits is the same thing for + the distance codes. Subsequent tables are also less than or equal to + those sizes. These values may be adjusted either when all of the + codes are shorter than that, in which case the longest code length in + bits is used, or when the shortest code is *longer* than the requested + table size, in which case the length of the shortest code in bits is + used. + + There are two different values for the two tables, since they code a + different number of possibilities each. The literal/length table + codes 286 possible values, or in a flat code, a little over eight + bits. The distance table codes 30 possible values, or a little less + than five bits, flat. The optimum values for speed end up being + about one bit more than those, so lbits is 8+1 and dbits is 5+1. + The optimum values may differ though from machine to machine, and + possibly even between compilers. Your mileage may vary. + */ + +static int lbits = 9; /* bits in base literal/length lookup table */ +static int dbits = 6; /* bits in base distance lookup table */ + +/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */ +#define BMAX 16 /* maximum bit length of any code (16 for explode) */ +#define N_MAX 288 /* maximum number of codes in any set */ + +unsigned hufts; /* track memory usage */ + +#define MEMBUFSIZ 0x2000 + +static u8 gzip_mem_buff[MEMBUFSIZ]; +void* gzip_malloc_addr = gzip_mem_buff; +s32 gzip_malloc_tmp = 0; + +void* gzip_malloc(size_t size) { + void* ret; + + gzip_malloc_tmp += size; + if (gzip_malloc_tmp > MEMBUFSIZ) { + return NULL; + } + + ret = gzip_malloc_addr; + gzip_malloc_addr = (void*)(((uintptr_t)gzip_malloc_addr) + size); + return ret; +} + +void gzip_free(void* ptr) { + gzip_malloc_tmp = 0; + gzip_malloc_addr = gzip_mem_buff; +} + +/* Given a list of code lengths and a maximum table size, make a set of + tables to decode that set of codes. Return zero on success, one if + the given code set is incomplete (the tables are still built in this + case), two if the input is invalid (all zero length codes or an + oversubscribed set of lengths), and three if not enough memory. */ +int huft_build(unsigned* b, /* code lengths in bits (all assumed <= BMAX) */ + unsigned n, /* number of codes (assumed <= N_MAX) */ + unsigned s, /* number of simple-valued codes (0..s-1) */ + ush* d, /* list of base values for non-simple codes */ + ush* e, /* list of extra bits for non-simple codes */ + struct huft** t, /* result: starting table */ + int* m /* maximum lookup bits, returns actual */ +) { + unsigned a; /* counter for codes of length k */ + unsigned c[BMAX + 1]; /* bit length count table */ + unsigned f; /* i repeats in table every f entries */ + int g; /* maximum code length */ + int h; /* table level */ + register unsigned i; /* counter, current code */ + register unsigned j; /* counter */ + register int k; /* number of bits in current code */ + int l; /* bits per table (returned in m) */ + register unsigned* p; /* pointer into c[], b[], or v[] */ + register struct huft* q; /* points to current table */ + struct huft r; /* table entry for structure assignment */ + struct huft* u[BMAX]; /* table stack */ + static unsigned v[N_MAX]; /* values in order of bit length */ + register int w; /* bits before this table == (l * h) */ + unsigned x[BMAX + 1]; /* bit offsets, then code stack */ + unsigned* xp; /* pointer into x */ + int y; /* number of dummy codes added */ + unsigned z; /* number of entries in current table */ + + /* Generate counts for each bit length */ + for (j = 0; j < BMAX + 1; j++) { + c[j] = 0; + } + + p = b; + i = n; + do { + Tracecv(*p, (stderr, (n - i >= ' ' && n - i <= '~' ? "%c %d\n" : "0x%x %d\n"), n - i, *p)); + c[*p]++; /* assume all entries <= BMAX */ + p++; /* Can't combine with above line (Solaris bug) */ + } while (--i); + if (c[0] == n) { /* null input--all zero length codes */ + *t = NULL; + *m = 0; + return 0; + } + + /* Find minimum and maximum length, bound *m by those */ + l = *m; + for (j = 1; j <= BMAX; j++) { + if (c[j]) { + break; + } + } + k = j; /* minimum code length */ + if ((unsigned)l < j) { + l = j; + } + for (i = BMAX; i; i--) { + if (c[i]) { + break; + } + } + g = i; /* maximum code length */ + if ((unsigned)l > i) { + l = i; + } + *m = l; + + /* Adjust last length count to fill out codes, if needed */ + for (y = 1 << j; j < i; j++, y <<= 1) { + if ((y -= c[j]) < 0) { + return 2; /* bad input: more codes than bits */ + } + } + if ((y -= c[i]) < 0) { + return 2; + } + c[i] += y; + + /* Generate starting offsets into the value table for each length */ + x[1] = j = 0; + p = c + 1; + xp = x + 2; + while (--i) { /* note that i == g from above */ + *xp++ = (j += *p++); + } + + /* Make a table of values in order of bit lengths */ + p = b; + i = 0; + do { + if ((j = *p++) != 0) { + v[x[j]++] = i; + } + } while (++i < n); + + /* Generate the Huffman codes and for each, make the table entries */ + x[0] = i = 0; /* first Huffman code is zero */ + p = v; /* grab values in bit order */ + h = -1; /* no tables yet--level -1 */ + w = -l; /* bits decoded == (l * h) */ + u[0] = (struct huft*)NULL; /* just to keep compilers happy */ + q = (struct huft*)NULL; /* ditto */ + z = 0; /* ditto */ + + /* go through the bit lengths (k already is bits in shortest code) */ + for (; k <= g; k++) { + a = c[k]; + while (a--) { + /* here i is the Huffman code of length k bits for value *p */ + /* make tables up to required level */ + while (k > w + l) { + h++; + w += l; /* previous table always l bits */ + + /* compute minimum size table less than or equal to l bits */ + z = (z = g - w) > (unsigned)l ? l : z; /* upper limit on table size */ + if ((f = 1 << (j = k - w)) > a + 1) { /* try a k-w bit table */ + /* too few codes for k-w bit table */ + f -= a + 1; /* deduct codes from patterns left */ + xp = c + k; + while (++j < z) { /* try smaller tables up to z bits */ + if ((f <<= 1) <= *++xp) { + break; /* enough codes to use up j bits */ + } + f -= *xp; /* else deduct codes from patterns */ + } + } + z = 1 << j; /* table entries for j-bit table */ + + /* allocate and link in new table */ + if ((q = (struct huft*)gzip_malloc((z + 1) * sizeof(struct huft))) == (struct huft*)NULL) { + if (h) { + huft_free(u[0]); + } + return 3; /* not enough memory */ + } + hufts += z + 1; /* track memory usage */ + *t = q + 1; /* link to list for huft_free() */ + *(t = &(q->v.t)) = (struct huft*)NULL; + u[h] = ++q; /* table starts after link */ + + /* connect to last table, if there is one */ + if (h) { + x[h] = i; /* save pattern for backing up */ + r.b = (uch)l; /* bits to dump before this table */ + r.e = (uch)(16 + j); /* bits in this table */ + r.v.t = q; /* pointer to this table */ + j = i >> (w - l); /* (get around Turbo C bug) */ + u[h - 1][j] = r; /* connect to last table */ + } + } + + /* set up table entry in r */ + r.b = (uch)(k - w); + if (p >= v + n) { + r.e = 99; /* out of values--invalid code */ + } else if (*p < s) { + r.e = (uch)(*p < 256 ? 16 : 15); /* 256 is end-of-block code */ + r.v.n = (ush)(*p); /* simple code is just the value */ + p++; /* one compiler does not like *p++ */ + } else { + r.e = (uch)e[*p - s]; /* non-simple--look up in lists */ + r.v.n = d[*p++ - s]; + } + + /* fill code-like entries with r */ + f = 1 << (k - w); + for (j = i >> w; j < z; j += f) { + q[j] = r; + } + + /* backwards increment the k-bit code i */ + for (j = 1 << (k - 1); i & j; j >>= 1) { + i ^= j; + } + i ^= j; + + /* backup over finished tables */ + while ((i & ((1 << w) - 1)) != x[h]) { + h--; /* don't need to update q */ + w -= l; + } + } + } + + /* Return true (1) if we were given an incomplete table */ + return y != 0 && g != 1; +} + +/* Free the malloc'ed tables T built by huft_build(), which makes a linked + list of the tables it made, with the links in a dummy first entry of + each table. */ +int huft_free(struct huft* t) { + register struct huft *p, *q; + + /* Go through linked list, freeing from the malloced (t[-1]) address. */ + p = t; + while (p != (struct huft*)NULL) { + q = (--p)->v.t; + gzip_free(p); + p = q; + } + return 0; +} + +/* tl, td: literal/length and distance decoder tables */ +/* bl, bd: number of bits decoded by tl[] and td[] */ +/* inflate (decompress) the codes in a deflated (compressed) block. + Return an error code or zero if it all goes ok. */ +int inflate_codes(struct huft* tl, struct huft* td, int bl, int bd) { + register unsigned e; /* table entry flag/number of extra bits */ + unsigned n, d; /* length and index for copy */ + unsigned w; /* current window position */ + struct huft* t; /* pointer to table entry */ + unsigned ml, md; /* masks for bl and bd bits */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + unsigned char* p; + + /* make local copies of globals */ + b = bb; /* initialize bit buffer */ + k = bk; + w = wp; /* initialize window position */ + + /* inflate the coded data */ + ml = mask_bits[bl]; /* precompute masks for speed */ + md = mask_bits[bd]; + for (;;) { /* do until end of block */ + NEEDBITS((unsigned)bl) + if ((e = (t = tl + ((unsigned)b & ml))->e) > 16) { + do { + if (e == 99) { + return 1; + } + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + } + DUMPBITS(t->b) + if (e == 16) { /* then it's a literal */ + *output_ptr++ = (uch)t->v.n; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + } else { /* it's an EOB or a length */ + /* exit if end of block */ + if (e == 15) { + break; + } + + /* get length of block to copy */ + NEEDBITS(e) + n = t->v.n + ((unsigned)b & mask_bits[e]); + DUMPBITS(e); + + /* decode distance of block to copy */ + NEEDBITS((unsigned)bd) + if ((e = (t = td + ((unsigned)b & md))->e) > 16) { + do { + if (e == 99) { + return 1; + } + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + } + DUMPBITS(t->b) + NEEDBITS(e) + d = w - t->v.n - ((unsigned)b & mask_bits[e]); + DUMPBITS(e) + Tracevv((stderr, "\\[%d,%d]", w - d, n)); + + /* do the copy */ + p = output_ptr + d - w; + do { + *output_ptr++ = *p++; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + d++; + n--; + } while (n != 0); + } + } + + /* restore the globals from the locals */ + wp = w; /* restore global window pointer */ + bb = b; /* restore global bit buffer */ + bk = k; + + /* done */ + return 0; +} + +/* "decompress" an inflated type 0 (stored) block. */ +int inflate_stored(void) { + unsigned n; /* number of bytes in block */ + unsigned w; /* current window position */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local copies of globals */ + b = bb; /* initialize bit buffer */ + k = bk; + w = wp; /* initialize window position */ + + /* go to byte boundary */ + n = k & 7; + DUMPBITS(n); + + /* get the length and its complement */ + NEEDBITS(16) + n = ((unsigned)b & 0xffff); + DUMPBITS(16) + NEEDBITS(16) + if (n != (unsigned)((~b) & 0xffff)) { + return 1; /* error in compressed data */ + } + DUMPBITS(16) + + /* read and output the compressed data */ + while (n--) { + NEEDBITS(8) + *output_ptr++ = (uch)b; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + DUMPBITS(8) + } + + /* restore the globals from the locals */ + wp = w; /* restore global window pointer */ + bb = b; /* restore global bit buffer */ + bk = k; + return 0; +} + +/* decompress an inflated type 1 (fixed Huffman codes) block. We should + either replace this with a custom decoder, or at least precompute the + Huffman tables. */ +int inflate_fixed(void) { + int i; /* temporary variable */ + struct huft* tl; /* literal/length code table */ + struct huft* td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + static unsigned l[288]; /* length list for huft_build */ + + /* set up literal table */ + for (i = 0; i < 144; i++) { + l[i] = 8; + } + for (; i < 256; i++) { + l[i] = 9; + } + for (; i < 280; i++) { + l[i] = 7; + } + for (; i < 288; i++) { /* make a complete, but wrong code set */ + l[i] = 8; + } + bl = 7; + if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0) { + return i; + } + + /* set up distance table */ + for (i = 0; i < 30; i++) { /* make an incomplete code set */ + l[i] = 5; + } + bd = 5; + if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1) { + huft_free(tl); + return i; + } + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd)) { + return 1; + } + + /* free the decoding tables, return */ + huft_free(td); + huft_free(tl); + return 0; +} + +/* decompress an inflated type 2 (dynamic Huffman codes) block. */ +int inflate_dynamic(void) { + int i; /* temporary variables */ + unsigned j; + unsigned l; /* last length */ + unsigned m; /* mask for bit lengths table */ + unsigned n; /* number of lengths to get */ + UNUSED unsigned w; /* current window position */ + struct huft* tl; /* literal/length code table */ + struct huft* td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + unsigned nb; /* number of bit length codes */ + unsigned nl; /* number of literal/length codes */ + unsigned nd; /* number of distance codes */ + static unsigned ll[288 + 32]; /* literal/length and distance code lengths */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local bit buffer */ + b = bb; + k = bk; + w = wp; + + /* read in table lengths */ + NEEDBITS(5) + nl = 257 + ((unsigned)b & 0x1f); /* number of literal/length codes */ + DUMPBITS(5) + NEEDBITS(5) + nd = 1 + ((unsigned)b & 0x1f); /* number of distance codes */ + DUMPBITS(5) + NEEDBITS(4) + nb = 4 + ((unsigned)b & 0xf); /* number of bit length codes */ + DUMPBITS(4) + if (nl > 288 || nd > 32) { + return 1; /* bad lengths */ + } + + /* read in bit-length-code lengths */ + for (j = 0; j < nb; j++) { + NEEDBITS(3) + ll[border[j]] = (unsigned)b & 7; + DUMPBITS(3) + } + for (; j < 19; j++) { + ll[border[j]] = 0; + } + + /* build decoding table for trees--single level, 7 bit lookup */ + bl = 7; + if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0) { + if (i == 1) { + huft_free(tl); + } + return i; /* incomplete code set */ + } + + /* read in literal and distance code lengths */ + n = nl + nd; + m = mask_bits[bl]; + i = l = 0; + while ((unsigned)i < n) { + NEEDBITS((unsigned)bl) + j = (td = tl + ((unsigned)b & m))->b; + DUMPBITS(j) + j = td->v.n; + if (j < 16) { /* length of code in bits (0..15) */ + ll[i++] = l = j; /* save last length in l */ + } else if (j == 16) { /* repeat last length 3 to 6 times */ + NEEDBITS(2) + j = 3 + ((unsigned)b & 3); + DUMPBITS(2) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = l; + } + } else if (j == 17) { /* 3 to 10 zero length codes */ + NEEDBITS(3) + j = 3 + ((unsigned)b & 7); + DUMPBITS(3) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = 0; + } + l = 0; + } else { /* j == 18: 11 to 138 zero length codes */ + NEEDBITS(7) + j = 11 + ((unsigned)b & 0x7f); + DUMPBITS(7) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = 0; + } + l = 0; + } + } + + /* free decoding table for trees */ + huft_free(tl); + + /* restore the global bit buffer */ + bb = b; + bk = k; + + /* build the decoding tables for literal/length and distance codes */ + bl = lbits; + if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) { + if (i == 1) { + Trace((stderr, " incomplete literal tree\n")); + huft_free(tl); + } + return i; /* incomplete code set */ + } + bd = dbits; + if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) { + if (i == 1) { + Trace((stderr, " incomplete distance tree\n")); + i = 0; + } + } + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd) != 0) { + return 1; + } + + /* free the decoding tables */ + huft_free(td); + huft_free(tl); + + return 0; +} + +/* decompress an inflated block */ +/* E is the last block flag */ +int inflate_block(int* e) { + unsigned t; /* block type */ + UNUSED unsigned w; /* current window position */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local bit buffer */ + b = bb; + k = bk; + w = wp; + + /* read in last block bit */ + NEEDBITS(1) + *e = (int)b & 1; + DUMPBITS(1) + + /* read in block type */ + NEEDBITS(2) + t = (unsigned)b & 3; + DUMPBITS(2) + + /* restore the global bit buffer */ + bb = b; + bk = k; + + /* inflate that block type */ + if (t == 2) { + return inflate_dynamic(); + } + if (t == 0) { + return inflate_stored(); + } + if (t == 1) { + return inflate_fixed(); + } + + /* bad block type */ + return 2; +} + +/* decompress an inflated entry */ +int inflate(void) { + int e; /* last block flag */ + int r; /* result code */ + unsigned h; /* maximum struct huft's malloc'ed */ + + /* initialize window, bit buffer */ + wp = 0; + bk = 0; + bb = 0; + + gzip_malloc_tmp = 0; + gzip_malloc_addr = gzip_mem_buff; + + /* decompress until the last block */ + h = 0; + do { + hufts = 0; + if ((r = inflate_block(&e)) != 0) { + return r; + } + if (hufts > h) { + h = hufts; + } + } while (!e); + + /* Undo too much lookahead. The next read will be byte aligned so we + * can discard unused bits in the last meaningful byte. + */ + while (bk >= 8) { + bk -= 8; + inptr--; + } + + /* flush out slide */ + flush_output(wp); + + /* return success */ + Trace((stderr, "<%u> ", h)); + return 0; +} + +size_t gzip_read(GzipFileDescriptor* romInput, void* dst, size_t blockSize) { + size_t alignedSize; + + if (blockSize > (size_t)romInput->size) { + blockSize = romInput->size; + } + + alignedSize = ALIGN8(blockSize); + if (alignedSize > 0) { + DmaMgr_DmaRomToRam(romInput->addr, dst, alignedSize); + } + + romInput->size -= alignedSize; + romInput->addr += alignedSize; + if (romInput->size < 0) { + romInput->size = 0; + } + + return blockSize; +} + +int unzip(void) { + int ret = inflate(); + + if (ret == 3) { + return -1; + } + + if (ret != 0) { + return -1; + } + + return 0; +} + +void clear_bufs(void) { + insize = inptr = 0; +} + +int fill_inbuf(int eof_ok) { + int len; + + /* Read as much as possible */ + insize = 0; + do { + len = gzip_read(&ifd, (char*)inbuf + insize, INBUFSIZ - insize); + if (len == 0 || len == -1) { + break; + } + insize += len; + } while (insize < INBUFSIZ); + + if (insize == 0) { + if (eof_ok) { + return EOF; + } + } + + inptr = 1; + return inbuf[0]; +} + +void flush_window(void) { + outcnt = 0; +} + +void gzip_decompress(uintptr_t romStart, u8* dst, size_t size) { + ifd.addr = romStart; + ifd.size = size; + + output_ptr = dst; + + clear_bufs(); + unzip(); +} diff --git a/src/boot/is_debug_ique.c b/src/boot/is_debug_ique.c new file mode 100644 index 0000000000..a78fef8235 --- /dev/null +++ b/src/boot/is_debug_ique.c @@ -0,0 +1,8 @@ +void osSyncPrintfUnused() { +} + +void osSyncPrintf() { +} + +void rmonPrintf() { +} diff --git a/src/boot/mio0.s b/src/boot/mio0.s index a3fb8eba26..a6c2eee6bc 100644 --- a/src/boot/mio0.s +++ b/src/boot/mio0.s @@ -1,10 +1,7 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noreorder - -.section .text - -.balign 16 +.text /** * void Mio0_Decompress(void* src, void* dst); @@ -12,53 +9,56 @@ * Decompress Mio0 chunk */ LEAF(Mio0_Decompress) - lw $a3, 8($a0) // compressed offset - lw $t9, 0xC($a0) // uncompressed offset - lw $t8, 4($a0) // decompressed length - add $a3, $a3, $a0 // compressed start - add $t9, $t9, $a0 // uncompressed start - move $a2, $zero // 0 - addi $a0, $a0, 0x10 // move past header - add $t8, $t8, $a1 // dst + decompressed length = end + lw a3, 0x08(a0) /* compressed offset */ + lw t9, 0x0C(a0) /* uncompressed offset */ + lw t8, 0x04(a0) /* decompressed length */ + add a3, a3, a0 /* compressed start */ + add t9, t9, a0 /* uncompressed start */ + move a2, zero /* 0 */ + addi a0, a0, 0x10 /* move past header */ + add t8, t8, a1 /* dst + decompressed length = end */ mainloop: - bnez $a2, 1f - nop - lw $t0, ($a0) - li $a2, 32 - addi $a0, $a0, 4 + bnez a2, 1f + + lw t0, (a0) + li a2, 32 + addi a0, a0, 4 1: - slt $t1, $t0, $zero - beqz $t1, read_comp - nop - lb $t2, ($t9) // read 1 byte from uncompressed data - addi $t9, $t9, 1 // advance uncompressed start - addi $a1, $a1, 1 + slt t1, t0, zero + beqz t1, read_comp + + lb t2, (t9) /* read 1 byte from uncompressed data */ + sb t2, (a1) /* store uncompressed byte */ + addi t9, t9, 1 /* advance uncompressed start */ + addi a1, a1, 1 b next_iter - sb $t2, -1($a1) // store uncompressed byte + read_comp: - lhu $t2, ($a3) // read 2 bytes from compressed data - addi $a3, $a3, 2 // advance compressed start - srl $t3, $t2, 0xC - andi $t2, $t2, 0xFFF - beqz $t3, 3f - sub $t1, $a1, $t2 - addi $t3, $t3, 2 + lhu t2, (a3) /* read 2 bytes from compressed data */ + addi a3, a3, 2 /* advance compressed start */ + srl t3, t2, 0xC + andi t2, t2, 0xFFF + sub t1, a1, t2 + beqz t3, 3f + + addi t3, t3, 2 2: - lb $t2, -1($t1) - addi $t3, $t3, -1 - addi $t1, $t1, 1 - addi $a1, $a1, 1 - bnez $t3, 2b - sb $t2, -1($a1) + lb t2, -1(t1) + addi t3, t3, -1 + addi t1, t1, 1 + sb t2, (a1) + addi a1, a1, 1 + bnez t3, 2b + next_iter: - sll $t0, $t0, 1 - bne $a1, $t8, mainloop // continue until decompressed length is reached - addi $a2, $a2, -1 - jr $ra - nop + sll t0, t0, 1 + addi a2, a2, -1 + bne a1, t8, mainloop /* continue until decompressed length is reached */ + + jr ra 3: - lbu $t3, ($t9) - addi $t9, $t9, 1 + lbu t3, (t9) + addi t9, t9, 1 + addi t3, t3, 0x12 b 2b - addi $t3, $t3, 0x12 END(Mio0_Decompress) diff --git a/src/boot/z_locale.c b/src/boot/z_locale.c index 41c6ea00c4..f320f1e0f4 100644 --- a/src/boot/z_locale.c +++ b/src/boot/z_locale.c @@ -7,7 +7,7 @@ s32 gCurrentRegion = 0; void Locale_Init(void) { -#if PLATFORM_N64 +#if !PLATFORM_GC ALIGNED(4) u8 regionInfo[4]; u8 countryCode; @@ -24,6 +24,7 @@ void Locale_Init(void) { countryCode = sCartInfo.countryCode; #endif +#if !PLATFORM_IQUE switch (countryCode) { case 'J': // "NTSC-J (Japan)" gCurrentRegion = REGION_JP; @@ -37,16 +38,19 @@ void Locale_Init(void) { break; #endif default: - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF(T("z_locale_init: 日本用かアメリカ用か判別できません\n", "z_locale_init: Can't tell if it's for Japan or America\n")); - LogUtils_HungupThread("../z_locale.c", LN4(86, 92, 101, 118)); + LogUtils_HungupThread("../z_locale.c", LN4(86, 92, 101, UNK_LINE, 118)); PRINTF(VT_RST); break; } PRINTF(T("z_locale_init:日本用かアメリカ用か3コンで判断させる\n", "z_locale_init: Determine whether it is for Japan or America using 3 controls\n")); +#else + gCurrentRegion = REGION_US; +#endif } void Locale_ResetRegion(void) { diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index d962f67889..8fe2982e7b 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.2:82 pal-1.0:80 pal-1.1:80" + "ntsc-1.2:70 pal-1.0:68 pal-1.1:68" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; @@ -53,11 +53,20 @@ const char* sDmaMgrFileNames[] = { #include "tables/dmadata_table.h" }; -#endif - #undef DEFINE_DMA_ENTRY -#if PLATFORM_N64 || DEBUG_FEATURES +#endif + +#define SET_IOMSG(ioMsg, queue, rom, ram, buffSize) \ + do { \ + (ioMsg).hdr.pri = OS_MESG_PRI_NORMAL; \ + (ioMsg).hdr.retQueue = (queue); \ + (ioMsg).devAddr = (rom); \ + (ioMsg).dramAddr = (ram); \ + (ioMsg).size = (buffSize); \ + } while (0) + +#if !PLATFORM_GC || DEBUG_FEATURES /** * Compares `str1` and `str2`. * @@ -103,6 +112,9 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { OSMesg msg; s32 ret; size_t buffSize = gDmaMgrDmaBuffSize; +#if DEBUG_FEATURES + UNUSED s32 pad; +#endif if (buffSize == 0) { buffSize = DMAMGR_DEFAULT_BUFSIZE; @@ -116,13 +128,7 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { // The system avoids large DMAs as these would stall the PI for too long, potentially causing issues with // audio. To allow audio to continue to DMA whenever it needs to, other DMAs are split into manageable chunks. - if (1) {} // Necessary to match - - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.hdr.retQueue = &queue; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = buffSize; + SET_IOMSG(ioMsg, &queue, rom, ram, buffSize); if (gDmaMgrVerbose == 10) { PRINTF(T("%10lld ノーマルDMA %08x %08x %08x (%d)\n", "%10lld Normal DMA %08x %08x %08x (%d)\n"), @@ -151,15 +157,9 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { ram = (u8*)ram + buffSize; } - if (1) { // Also necessary to match - s32 pad[2]; - } + SET_IOMSG(ioMsg, &queue, rom, ram, size); - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.hdr.retQueue = &queue; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = size; + { UNUSED s32 pad2; } if (gDmaMgrVerbose == 10) { PRINTF(T("%10lld ノーマルDMA %08x %08x %08x (%d)\n", "%10lld Normal DMA %08x %08x %08x (%d)\n"), @@ -242,11 +242,7 @@ void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, size_t size) { osInvalDCache(ram, size); osCreateMesgQueue(&queue, &msg, 1); - ioMsg.hdr.retQueue = &queue; - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = size; + SET_IOMSG(ioMsg, &queue, rom, ram, size); handle->transferInfo.cmdType = 2; osEPiStartDma(handle, &ioMsg, OS_READ); @@ -272,7 +268,7 @@ NORETURN void DmaMgr_Error(DmaRequest* req, const char* filename, const char* er char buff2[80]; PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DMA致命的エラー(%s)\nROM:%X RAM:%X SIZE:%X %s\n", "DMA Fatal Error (%s)\nROM:%X RAM:%X SIZE:%X %s\n"), errorDesc != NULL ? errorDesc : (errorName != NULL ? errorName : "???"), vrom, ram, size, filename != NULL ? filename : "???"); @@ -283,7 +279,7 @@ NORETURN void DmaMgr_Error(DmaRequest* req, const char* filename, const char* er PRINTF("DMA ERROR: %s %d", sDmaMgrCurFileName, sDmaMgrCurFileLine); } - PRINTF(VT_RST); + PRINTF_RST(); if (req->filename != NULL) { sprintf(buff1, "DMA ERROR: %s %d", req->filename, req->line); @@ -350,7 +346,7 @@ const char* DmaMgr_GetFileName(uintptr_t vrom) { return ret; #elif PLATFORM_GC return ""; -#elif PLATFORM_N64 +#else return "??"; #endif } @@ -380,19 +376,16 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { if (vrom >= iter->file.vromStart && vrom < iter->file.vromEnd) { // Found the region this request falls into -#if PLATFORM_N64 - // Based on the MM Debug ROM, these strings are part of the condition for the empty if statement below, - // as `... && DmaMgr_StrCmp("", "kanji") != 0 && DmaMgr_StrCmp("", "link_animetion") != 0` - (void)""; - (void)"kanji"; - (void)""; - (void)"link_animetion"; -#endif - if (0) { - // The string is defined in .rodata of debug builds but not used, suggesting a debug print is here - // but was optimized out in some way. - PRINTF("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n", vrom, ram, size, filename); +#if !PLATFORM_GC + // Based on the MM Debug ROM, these strings are part of the condition for the empty if statement below + if (DmaMgr_StrCmp("", "kanji") != 0 && DmaMgr_StrCmp("", "link_animetion") != 0) +#endif + { + // The string is defined in .rodata of debug builds but not used, suggesting a debug print is here + // but was optimized out in some way. + PRINTF("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n", vrom, ram, size, filename); + } } if (iter->romEnd == 0) { @@ -405,10 +398,10 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, filename, "Segment Alignment Error", T("セグメント境界をまたがってDMA転送することはできません", "DMA transfers cannot cross segment boundaries"), - "../z_std_dma.c", LN3(575, 578, 726)); + "../z_std_dma.c", LN3(575, 578, 595, 726)); } - DmaMgr_DmaRomToRam(iter->romStart + (vrom - iter->file.vromStart), ram, size); + DmaMgr_DmaRomToRam(iter->romStart + vrom - iter->file.vromStart, ram, size); found = true; if (0) { @@ -417,16 +410,16 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { } else { // File is compressed. Files that are stored compressed must be loaded into RAM all at once. - romStart = iter->romStart; romSize = iter->romEnd - iter->romStart; + romStart = iter->romStart; - if (vrom != iter->file.vromStart) { + if (iter->file.vromStart != vrom) { // Error, requested vrom is not the start of a file DMA_ERROR(req, filename, "Can't Transfer Segment", T("圧縮されたセグメントの途中からはDMA転送することはできません", "DMA transfer cannot be performed from the middle of a compressed segment"), - "../z_std_dma.c", LN3(595, 598, 746)); + "../z_std_dma.c", LN3(595, 598, 615, 746)); } if (size != iter->file.vromEnd - iter->file.vromStart) { @@ -435,13 +428,19 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, filename, "Can't Transfer Segment", T("圧縮されたセグメントの一部だけをDMA転送することはできません", "It is not possible to DMA only part of a compressed segment"), - "../z_std_dma.c", LN3(601, 604, 752)); + "../z_std_dma.c", LN3(601, 604, 621, 752)); } // Reduce the thread priority and decompress the file, the decompression routine handles the DMA // in chunks. Restores the thread priority when done. osSetThreadPri(NULL, THREAD_PRI_DMAMGR_LOW); + +#if !PLATFORM_IQUE Yaz0_Decompress(romStart, ram, romSize); +#else + gzip_decompress(romStart, ram, romSize); +#endif + osSetThreadPri(NULL, THREAD_PRI_DMAMGR); found = true; @@ -452,7 +451,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { break; } -#if PLATFORM_N64 +#if !PLATFORM_GC if (i != 0) { i += 4; } @@ -469,11 +468,12 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, NULL, "DATA DON'T EXIST", T("該当するデータが存在しません", "Corresponding data does not exist"), "../z_std_dma.c", - LN3(621, 624, 771)); + LN3(621, 624, 641, 771)); return; } else { // ROM is uncompressed, allow arbitrary DMA even if the region is not marked in the filesystem - DmaMgr_DmaRomToRam(vrom, ram, size); + romStart = vrom; + DmaMgr_DmaRomToRam(romStart, ram, size); if (0) { PRINTF(T("No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n", @@ -534,6 +534,10 @@ s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, OSMesg msg) { static s32 sDmaMgrQueueFullLogged = 0; +#if PLATFORM_IQUE + PRINTF("dmacopy_bg(%x, %x, %x, %x, %x, %x, %x)\n", req, ram, vrom, size, unk, queue, msg); +#endif + #if DEBUG_FEATURES if ((ram == NULL) || (osMemSize < OS_K0_TO_PHYSICAL(ram) + size) || (vrom & 1) || (vrom > 0x4000000) || (size == 0) || (size & 1)) { @@ -562,12 +566,12 @@ s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, if (1 && (sDmaMgrQueueFullLogged == 0) && MQ_IS_FULL(&sDmaMgrMsgQueue)) { sDmaMgrQueueFullLogged++; PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("dmaEntryMsgQが一杯です。キューサイズの再検討をおすすめします。", "dmaEntryMsgQ is full. Reconsider your queue size.")); LOG_NUM("(sizeof(dmaEntryMsgBufs) / sizeof(dmaEntryMsgBufs[0]))", ARRAY_COUNT(sDmaMgrMsgBuf), "../z_std_dma.c", 952); - PRINTF(VT_RST); + PRINTF_RST(); } #endif @@ -608,9 +612,10 @@ void DmaMgr_Init(void) { // DMA the dma data table to RAM DmaMgr_DmaRomToRam((uintptr_t)_dmadataSegmentRomStart, _dmadataSegmentStart, (u32)(_dmadataSegmentRomEnd - _dmadataSegmentRomStart)); - PRINTF("dma_rom_ad[]\n"); #if DEBUG_FEATURES + PRINTF("dma_rom_ad[]\n"); + name = sDmaMgrFileNames; iter = gDmaDataTable; idx = 0; @@ -641,7 +646,7 @@ void DmaMgr_Init(void) { PRINTF("_bootSegmentRomStart(%08x) != dma_rom_ad[0].rom_b(%08x)\n", _bootSegmentRomStart, gDmaDataTable[0].file.vromEnd); //! @bug The main code file where fault.c resides is not yet loaded - Fault_AddHungupAndCrash("../z_std_dma.c", LN3(837, 840, 1055)); + Fault_AddHungupAndCrash("../z_std_dma.c", LN3(837, 840, 859, 1055)); } // Start the DMA manager diff --git a/src/boot/zlib.c b/src/boot/zlib.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/boot/zlib.c @@ -0,0 +1 @@ + diff --git a/src/code/db_camera.c b/src/code/db_camera.c index 7721a28bcf..1045df9ca2 100644 --- a/src/code/db_camera.c +++ b/src/code/db_camera.c @@ -1,7 +1,5 @@ #include "global.h" -#if DEBUG_FEATURES - #define DEBUG_CAM_CONTROLLER_PORT 2 static PlayState* sPlay; @@ -2368,5 +2366,3 @@ void func_800BB060(void) { int func_800BB06C(void) { return sDebugCamPtr->unk_00 == 2 && sDebugCamAnim.unk_0A != 0; } - -#endif diff --git a/src/code/fault_gc.c b/src/code/fault_gc.c index af69321590..059162c162 100644 --- a/src/code/fault_gc.c +++ b/src/code/fault_gc.c @@ -40,10 +40,8 @@ * DPad-Up may be pressed to enable sending fault pages over osSyncPrintf as well as displaying them on-screen. * DPad-Down disables sending fault pages over osSyncPrintf. */ -#if PLATFORM_GC - -#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:176 gc-jp-ce:176 gc-jp-mq:176 gc-us:176" \ - "gc-us-mq:176" +#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160" \ + "gc-us-mq:160" #include "global.h" #include "alloca.h" @@ -1340,5 +1338,3 @@ NORETURN void Fault_AddHungupAndCrash(const char* file, int line) { sprintf(msg, "HungUp %s:%d", file, line); Fault_AddHungupAndCrashImpl(msg, NULL); } - -#endif diff --git a/src/code/fault_gc_drawer.c b/src/code/fault_gc_drawer.c index 808b258497..9d3478a48f 100644 --- a/src/code/fault_gc_drawer.c +++ b/src/code/fault_gc_drawer.c @@ -9,8 +9,6 @@ #include "terminal.h" #pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" -#if PLATFORM_GC - typedef struct FaultDrawer { /* 0x00 */ u16* fb; /* 0x04 */ u16 w; @@ -344,5 +342,3 @@ void Fault_InitDrawer(void) { bcopy(&sFaultDrawerDefault, &sFaultDrawer, sizeof(FaultDrawer)); sFaultDrawer.fb = (u16*)(PHYS_TO_K0(osMemSize) - sizeof(u16[SCREEN_HEIGHT][SCREEN_WIDTH])); } - -#endif diff --git a/src/code/fault_n64.c b/src/code/fault_n64.c index 7ea68abeb8..720307c0a1 100644 --- a/src/code/fault_n64.c +++ b/src/code/fault_n64.c @@ -1,5 +1,3 @@ -#if PLATFORM_N64 - #pragma increment_block_number "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" #include "global.h" @@ -849,5 +847,3 @@ NORETURN void Fault_AddHungupAndCrash(const char* file, int line) { sprintf(msg, "HungUp %s:%d", file, line); Fault_AddHungupAndCrashImpl(msg, NULL); } - -#endif diff --git a/src/code/game.c b/src/code/game.c index 2bed93e965..4367839528 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -391,7 +391,7 @@ void GameState_InitArena(GameState* gameState, size_t size) { } else { THA_Init(&gameState->tha, NULL, 0); PRINTF(T("ハイラル確保失敗\n", "Failure to secure Hyrule\n")); - HUNGUP_AND_CRASH("../game.c", LN4(895, 898, 985, 999)); + HUNGUP_AND_CRASH("../game.c", LN4(895, 898, 985, 999, 999)); } } @@ -409,12 +409,12 @@ void GameState_Realloc(GameState* gameState, size_t size) { SystemArena_GetSizes(&systemMaxFree, &systemFree, &systemAlloc); if ((systemMaxFree - 0x10) < size) { PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("メモリが足りません。ハイラルサイズを可能な最大値に変更します\n", "Not enough memory. Change Hyrule size to maximum possible value\n")); PRINTF("(hyral=%08x max=%08x free=%08x alloc=%08x)\n", size, systemMaxFree, systemFree, systemAlloc); - PRINTF(VT_RST); + PRINTF_RST(); size = systemMaxFree - 0x10; } @@ -432,7 +432,7 @@ void GameState_Realloc(GameState* gameState, size_t size) { SystemArena_Display(); #endif - HUNGUP_AND_CRASH("../game.c", LN4(940, 943, 1030, 1044)); + HUNGUP_AND_CRASH("../game.c", LN4(940, 943, 1030, 1044, 1044)); } } @@ -557,9 +557,9 @@ void* GameState_Alloc(GameState* gameState, size_t size, const char* file, int l } } if (ret != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("game_alloc(%08x) %08x-%08x [%s:%d]\n", size, ret, (uintptr_t)ret + size, file, line); - PRINTF(VT_RST); + PRINTF_RST(); } return ret; } diff --git a/src/code/graph.c b/src/code/graph.c index 84186386e3..046e04d374 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -188,9 +188,9 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { if (msg == (OSMesg)666) { #if DEBUG_FEATURES - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("RCPが帰ってきませんでした。", "RCP did not return.")); - PRINTF(VT_RST); + PRINTF_RST(); LogUtils_LogHexDump((void*)PHYS_TO_K1(SP_BASE_REG), 0x20); LogUtils_LogHexDump((void*)PHYS_TO_K1(DPC_BASE_REG), 0x20); @@ -380,7 +380,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { PRINTF("%c", BEL); PRINTF(VT_COL(RED, WHITE) T("ダイナミック領域先頭が破壊されています\n", "Dynamic area head is destroyed\n") VT_RST); - Fault_AddHungupAndCrash("../graph.c", LN4(937, 940, 951, 1070)); + Fault_AddHungupAndCrash("../graph.c", LN4(937, 940, 951, 1067, 1070)); } if (pool->tailMagic != GFXPOOL_TAIL_MAGIC) { @@ -388,7 +388,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { PRINTF("%c", BEL); PRINTF(VT_COL(RED, WHITE) T("ダイナミック領域末尾が破壊されています\n", "Dynamic region tail is destroyed\n") VT_RST); - Fault_AddHungupAndCrash("../graph.c", LN4(943, 946, 957, 1076)); + Fault_AddHungupAndCrash("../graph.c", LN4(943, 946, 957, 1073, 1076)); } } @@ -481,7 +481,7 @@ void Graph_ThreadEntry(void* arg0) { sprintf(faultMsg, "CLASS SIZE= %d bytes", size); Fault_AddHungupAndCrashImpl("GAME CLASS MALLOC FAILED", faultMsg); #else - Fault_AddHungupAndCrash("../graph.c", LN4(1067, 1070, 1081, 1200)); + Fault_AddHungupAndCrash("../graph.c", LN4(1067, 1070, 1081, 1197, 1200)); #endif } diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 3a1e3cdf55..59d7a41cfa 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -185,11 +185,11 @@ void IrqMgr_CheckStacks(void) { PRINTF(T("スタックは大丈夫みたいです\n", "The stack looks ok\n")); } else { PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("スタックがオーバーフローしたか危険な状態です\n", "Stack overflow or dangerous\n")); PRINTF(T("早々にスタックサイズを増やすか、スタックを消費しないようにしてください\n", "Increase stack size early or don't consume stack\n")); - PRINTF(VT_RST); + PRINTF_RST(); } } diff --git a/src/code/kanread.s b/src/code/kanread.s index a163f9ead7..fdf69ed9be 100644 --- a/src/code/kanread.s +++ b/src/code/kanread.s @@ -1,11 +1,7 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * s32 Kanji_OffsetFromShiftJIS(s32 sjis); @@ -26,64 +22,57 @@ * @remark Almost identical to "LeoGetKadr" from libleo. */ LEAF(Kanji_OffsetFromShiftJIS) - // Characters with codepoints >= 0x8800 are kanji. Arrangement is regular, - // so convert index directly. - li $at, 0x8800 - slt $at, $a0, $at - bnez $at, .nonkanji - // 0xBC is number of glyphs in one block in the `kanji` file: - // 0x100 possible codepoints with the same byte1 - // - 0x40 unused at beginning - // - 1 unused at 0x7F - // - 3 unused at 0xFD, 0xFE, 0xFF - li $a2, 0xBC - // Get byte1 and adjust so starts at 0 - srl $a1, $a0, 8 - addi $a1, $a1, -0x88 - multu $a2, $a1 - // Get byte2 and adjust so starts at 0 - andi $a3, $a0, 0xFF - addi $a3, $a3, -0x40 - slti $at, $a3, (0x80 - 0x40) - mflo $a2 - // 0x__7F is always empty and elided in the file, so decrement if larger - bnezl $at, .kanji_lower_halfblock - mflo $a2 - addi $a3, $a3, -1 - mflo $a2 -.kanji_lower_halfblock: - addi $a3, $a3, 0x30A - add $a3, $a3, $a2 - jr $ra - sll $v0, $a3, 7 - // returns (0x30A + (adjusted byte2) + (adjusted byte1) * 0xBC) * FONT_CHAR_TEX_SIZE + /* Characters with codepoints >= 0x8800 are kanji. Arrangement is regular, */ + /* so convert index directly. */ + li a2, 0xBC + blt a0, 0x8800, .nonkanji + /* 0xBC is number of glyphs in one block in the `kanji` file: */ + /* 0x100 possible codepoints with the same byte1 */ + /* - 0x40 unused at beginning */ + /* - 1 unused at 0x7F */ + /* - 3 unused at 0xFD, 0xFE, 0xFF */ + /* Get byte1 and adjust so starts at 0 */ + srl a1, a0, 8 + addi a1, a1, -0x88 + /* Get byte2 and adjust so starts at 0 */ + andi a3, a0, 0xFF + addi a3, a3, -0x40 + mul a2, a2, a1 + blt a3, 0x40, .kanji_lower_halfblock -// Non-kanji are arranged with irregular gaps, use the lookup table. + /* 0x__7F is always empty and elided in the file, so decrement if larger */ + addi a3, a3, -1 +.kanji_lower_halfblock: + mflo a2 /* Unncessary mflo: the pseudo-op `mul` already performs mflo */ + addi a3, a3, 0x30A + add a3, a3, a2 + /* returns (0x30A + (adjusted byte2) + (adjusted byte1) * 0xBC) * FONT_CHAR_TEX_SIZE */ + sll v0, a3, 7 + jr ra + +/* Non-kanji are arranged with irregular gaps, use the lookup table. */ .nonkanji: - // Get byte1 and adjust so starts at 0 - srl $a1, $a0, 8 - addi $a1, $a1, -0x81 - multu $a2, $a1 - // Get byte2 and adjust so starts at 0 - andi $a3, $a0, 0xFF - addi $a3, $a3, -0x40 - slti $at, $a3, (0x80 - 0x40) - mflo $a2 - // 0x__7F is always empty and elided in the file, so decrement if larger - bnezl $at, .nonkanji_lower_halfblock - mflo $a2 - addi $a3, $a3, -1 - mflo $a2 + /* Get byte1 and adjust so starts at 0 */ + srl a1, a0, 8 + addi a1, a1, -0x81 + /* Get byte2 and adjust so starts at 0 */ + andi a3, a0, 0xFF + addi a3, a3, -0x40 + mul a2, a2, a1 + blt a3, 0x40, .nonkanji_lower_halfblock + + /* 0x__7F is always empty and elided in the file, so decrement if larger */ + addi a3, a3, -1 .nonkanji_lower_halfblock: - add $a3, $a3, $a2 - lui $a2, %hi(sNonKanjiIndices) - sll $a3, $a3, 1 - addiu $a2, %lo(sNonKanjiIndices) - add $a3, $a3, $a2 - lh $a2, ($a3) - jr $ra - sll $v0, $a2, 7 - // returns sNonKanjiIndices[(adjusted byte2) + (adjusted byte1) * 0xBC] * FONT_CHAR_TEX_SIZE + mflo a2 /* Unncessary mflo: the pseudo-op `mul` already performs mflo */ + add a3, a3, a2 + sll a3, a3, 1 + la a2, sNonKanjiIndices + add a3, a3, a2 + lh a2, (a3) + /* returns sNonKanjiIndices[(adjusted byte2) + (adjusted byte1) * 0xBC] * FONT_CHAR_TEX_SIZE */ + sll v0, a2, 7 + jr ra END(Kanji_OffsetFromShiftJIS) /** @@ -116,7 +105,7 @@ END(Kanji_OffsetFromShiftJIS) * into blocks by high byte. */ DATA(sNonKanjiIndices) -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x814_ */ .half 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F /* 0x815_ */ .half 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F /* 0x816_ */ .half 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F @@ -130,7 +119,7 @@ DATA(sNonKanjiIndices) /* 0x81E_ */ .half 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x81F_ */ .half 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0000, 0x0000, 0x0000, 0x0000, 0x0091 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x824_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0092 /* 0x825_ */ .half 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x826_ */ .half 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB @@ -144,7 +133,7 @@ DATA(sNonKanjiIndices) /* 0x82E_ */ .half 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011A, 0x011B, 0x011C, 0x011D, 0x011E, 0x011F, 0x0120 /* 0x82F_ */ .half 0x0121, 0x0122, 0x0123, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x834_ */ .half 0x0124, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129, 0x012A, 0x012B, 0x012C, 0x012D, 0x012E, 0x012F, 0x0130, 0x0131, 0x0132, 0x0133 /* 0x835_ */ .half 0x0134, 0x0135, 0x0136, 0x0137, 0x0138, 0x0139, 0x013A, 0x013B, 0x013C, 0x013D, 0x013E, 0x013F, 0x0140, 0x0141, 0x0142, 0x0143 /* 0x836_ */ .half 0x0144, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149, 0x014A, 0x014B, 0x014C, 0x014D, 0x014E, 0x014F, 0x0150, 0x0151, 0x0152, 0x0153 @@ -158,7 +147,7 @@ DATA(sNonKanjiIndices) /* 0x83E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x83F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x844_ */ .half 0x01AB, 0x01AC, 0x01AD, 0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2, 0x01B3, 0x01B4, 0x01B5, 0x01B6, 0x01B7, 0x01B8, 0x01B9, 0x01BA /* 0x845_ */ .half 0x01BB, 0x01BC, 0x01BD, 0x01BE, 0x01BF, 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9, 0x01CA /* 0x846_ */ .half 0x01CB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 @@ -172,7 +161,7 @@ DATA(sNonKanjiIndices) /* 0x84E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x84F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x854_ */ .half 0x020E, 0x020F, 0x0210, 0x0211, 0x0212, 0x0213, 0x0214, 0x0215, 0x0216, 0x0217, 0x0218, 0x0219, 0x021A, 0x021B, 0x021C, 0x021D /* 0x855_ */ .half 0x021E, 0x021F, 0x0220, 0x0221, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0222, 0x0223 /* 0x856_ */ .half 0x0224, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229, 0x022A, 0x022B, 0x022C, 0x022D, 0x022E, 0x022F, 0x0230, 0x0231, 0x0232, 0x0233 @@ -186,7 +175,7 @@ DATA(sNonKanjiIndices) /* 0x85E_ */ .half 0x026C, 0x026D, 0x026E, 0x026F, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, 0x0278, 0x0279, 0x027A, 0x027B /* 0x85F_ */ .half 0x027C, 0x027D, 0x027E, 0x027F, 0x0280, 0x0281, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x864_ */ .half 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x028A, 0x028B, 0x028C, 0x028D, 0x028E, 0x028F, 0x0290, 0x0291 /* 0x865_ */ .half 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x0000, 0x0000 /* 0x866_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 @@ -200,7 +189,7 @@ DATA(sNonKanjiIndices) /* 0x86E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x86F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x874_ */ .half 0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7, 0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF /* 0x875_ */ .half 0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7, 0x02D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x876_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 diff --git a/src/code/main.c b/src/code/main.c index 8ad00b52bd..d2c3c9f8bc 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -23,8 +23,8 @@ extern struct IrqMgr gIrqMgr; #include "n64dd.h" #endif -#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160" \ - "ntsc-1.0:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" +#pragma increment_block_number "gc-eu:144 gc-eu-mq:144 gc-jp:144 gc-jp-ce:144 gc-jp-mq:144 gc-us:144 gc-us-mq:144" \ + "ntsc-1.0:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" extern u8 _buffersSegmentEnd[]; @@ -59,11 +59,11 @@ OSMesg sSerialMsgBuf[1]; #if DEBUG_FEATURES void Main_LogSystemHeap(void) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF( T("システムヒープサイズ %08x(%dKB) 開始アドレス %08x\n", "System heap size %08x (%dKB) Start address %08x\n"), gSystemHeapSize, gSystemHeapSize / 1024, _buffersSegmentEnd); - PRINTF(VT_RST); + PRINTF_RST(); } #endif diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 33a5056639..b5f76b7217 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -35,9 +35,9 @@ #define PADMGR_LOG(controllerNum, msg) \ if (DEBUG_FEATURES) { \ - PRINTF(VT_FGCOL(YELLOW)); \ + PRINTF_COLOR_YELLOW(); \ PRINTF(T("padmgr: %dコン: %s\n", "padmgr: Controller %d: %s\n"), (controllerNum) + 1, (msg)); \ - PRINTF(VT_RST); \ + PRINTF_RST(); \ } \ (void)0 @@ -327,7 +327,7 @@ void PadMgr_UpdateInputs(PadMgr* padMgr) { default: // Unknown error response LOG_HEX("padnow1->errno", pad->errno, "../padmgr.c", 396); - Fault_AddHungupAndCrash("../padmgr.c", LN3(379, 382, 397)); + Fault_AddHungupAndCrash("../padmgr.c", LN3(379, 382, 397, 397)); break; } diff --git a/src/code/sched.c b/src/code/sched.c index b22f38b402..58aa627a71 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -62,6 +62,8 @@ vs32 sSchedDebugPrintfEnabled = false; PRINTF #elif IDO_PRINTF_WORKAROUND #define SCHED_DEBUG_PRINTF(args) (void)0 +#elif defined(__GNUC__) && __GNUC__ < 3 +#define SCHED_DEBUG_PRINTF(format, args...) (void)0 #else #define SCHED_DEBUG_PRINTF(format, ...) (void)0 #endif diff --git a/src/code/speed_meter.c b/src/code/speed_meter.c index d325099a89..d282e34953 100644 --- a/src/code/speed_meter.c +++ b/src/code/speed_meter.c @@ -185,9 +185,9 @@ void SpeedMeter_DrawAllocEntry(SpeedMeterAllocEntry* this, GraphicsContext* gfxC Gfx* gfx; if (this->maxval == 0) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); LOG_NUM("this->maxval", this->maxval, "../speed_meter.c", 313); - PRINTF(VT_RST); + PRINTF_RST(); } else { OPEN_DISPS(gfxCtx, "../speed_meter.c", 318); diff --git a/src/code/sys_cfb.c b/src/code/sys_cfb.c index 9ad789176b..c3b29d7ac5 100644 --- a/src/code/sys_cfb.c +++ b/src/code/sys_cfb.c @@ -34,7 +34,7 @@ void SysCfb_Init(s32 n64dd) { PRINTF("RAM4M mode\n"); sSysCfbEnd = 0x80400000; } else { - LogUtils_HungupThread("../sys_cfb.c", LN4(305, 308, 322, 354)); + LogUtils_HungupThread("../sys_cfb.c", LN4(305, 308, 322, 341, 354)); } screenSize = SCREEN_WIDTH * SCREEN_HEIGHT; diff --git a/src/code/sys_math3d.c b/src/code/sys_math3d.c index 96b352d693..203b9f2e2a 100644 --- a/src/code/sys_math3d.c +++ b/src/code/sys_math3d.c @@ -5,7 +5,7 @@ #include "macros.h" #include "sys_math3d.h" -#pragma increment_block_number "gc-eu:103 gc-eu-mq:103 gc-jp:103 gc-jp-ce:103 gc-jp-mq:103 gc-us:103 gc-us-mq:103" \ +#pragma increment_block_number "gc-eu:99 gc-eu-mq:99 gc-jp:99 gc-jp-ce:99 gc-jp-mq:99 gc-us:99 gc-us-mq:99" \ "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:79 pal-1.0:80 pal-1.1:80" s32 Math3D_LineVsLineClosestTwoPoints(Vec3f* lineAPointA, Vec3f* lineAPointB, Vec3f* lineBPointA, Vec3f* lineBPointB, @@ -127,11 +127,11 @@ void Math3D_LineClosestToPoint(InfiniteLine* line, Vec3f* pos, Vec3f* closestPoi dirVectorLengthSq = Math3D_Vec3fMagnitudeSq(&line->dir); if (IS_ZERO(dirVectorLengthSq)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3D_lineVsPosSuisenCross():直線の長さがありません\n", "Math3D_lineVsPosSuisenCross(): No straight line length\n")); PRINTF(T("cross = pos を返します。\n", "Returns cross = pos.\n")); - PRINTF(VT_RST); + PRINTF_RST(); Math_Vec3f_Copy(closestPoint, pos); //! @bug Missing early return } @@ -930,11 +930,11 @@ f32 Math3D_Plane(Plane* plane, Vec3f* pointOnPlane) { */ f32 Math3D_UDistPlaneToPos(f32 nx, f32 ny, f32 nz, f32 originDist, Vec3f* p) { if (DEBUG_FEATURES && IS_ZERO(sqrtf(SQ(nx) + SQ(ny) + SQ(nz)))) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3DLengthPlaneAndPos():法線size がゼロ近いです%f %f %f\n", "Math3DLengthPlaneAndPos(): Normal size is near zero %f %f %f\n"), nx, ny, nz); - PRINTF(VT_RST); + PRINTF_RST(); return 0.0f; } return fabsf(Math3D_DistPlaneToPos(nx, ny, nz, originDist, p)); @@ -949,11 +949,11 @@ f32 Math3D_DistPlaneToPos(f32 nx, f32 ny, f32 nz, f32 originDist, Vec3f* p) { normMagnitude = sqrtf(SQ(nx) + SQ(ny) + SQ(nz)); if (IS_ZERO(normMagnitude)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3DSignedLengthPlaneAndPos():法線size がゼロ近いです%f %f %f\n", "Math3DSignedLengthPlaneAndPos(): Normal size is close to zero %f %f %f\n"), nx, ny, nz); - PRINTF(VT_RST); + PRINTF_RST(); return 0.0f; } return Math3D_Planef(nx, ny, nz, originDist, p) / normMagnitude; diff --git a/src/code/z_DLF.c b/src/code/z_DLF.c index 547dc4bbbd..f56fcc742b 100644 --- a/src/code/z_DLF.c +++ b/src/code/z_DLF.c @@ -18,12 +18,12 @@ void Overlay_LoadGameState(GameStateOverlay* overlayEntry) { return; } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(d):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, (u32)overlayEntry->loadedRamAddr + (u32)overlayEntry->vramEnd - (u32)overlayEntry->vramStart, (u32)overlayEntry->vramStart - (u32)overlayEntry->loadedRamAddr, ""); - PRINTF(VT_RST); + PRINTF_RST(); if (overlayEntry->unk_14 != NULL) { overlayEntry->unk_14 = (void*)((u32)overlayEntry->unk_14 - diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 66b9601e56..c0633747fc 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -24,6 +24,8 @@ static s32 sCurCeilingBgId; PRINTF #elif IDO_PRINTF_WORKAROUND #define ACTOR_DEBUG_PRINTF(args) (void)0 +#elif defined(__GNUC__) && __GNUC__ < 3 +#define ACTOR_DEBUG_PRINTF(format, args...) (void)0 #else #define ACTOR_DEBUG_PRINTF(format, ...) (void)0 #endif @@ -3055,7 +3057,7 @@ Actor* Actor_RemoveFromCategory(PlayState* play, ActorContext* actorCtx, Actor* } void Actor_FreeOverlay(ActorOverlay* actorOverlay) { - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); if (actorOverlay->numLoaded == 0) { ACTOR_DEBUG_PRINTF(T("アクタークライアントが0になりました\n", "Actor clients are now 0\n")); @@ -3078,7 +3080,7 @@ void Actor_FreeOverlay(ActorOverlay* actorOverlay) { actorOverlay->numLoaded); } - PRINTF(VT_RST); + PRINTF_RST(); } Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, @@ -3144,13 +3146,13 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(a):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, (uintptr_t)overlayEntry->loadedRamAddr + (uintptr_t)overlayEntry->vramEnd - (uintptr_t)overlayEntry->vramStart, (uintptr_t)overlayEntry->vramStart - (uintptr_t)overlayEntry->loadedRamAddr, name); - PRINTF(VT_RST); + PRINTF_RST(); overlayEntry->numLoaded = 0; } diff --git a/src/code/z_bg_collect.c b/src/code/z_bg_collect.c index 2bdfc6bcdc..bd349765de 100644 --- a/src/code/z_bg_collect.c +++ b/src/code/z_bg_collect.c @@ -40,14 +40,14 @@ void DynaPolyActor_UpdateCarriedActorPos(CollisionContext* colCtx, s32 bgId, Act if (BGCHECK_XYZ_ABSMAX <= pos.x || pos.x <= -BGCHECK_XYZ_ABSMAX || BGCHECK_XYZ_ABSMAX <= pos.y || pos.y <= -BGCHECK_XYZ_ABSMAX || BGCHECK_XYZ_ABSMAX <= pos.z || pos.z <= -BGCHECK_XYZ_ABSMAX) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); //! @bug file and line are not passed to PRINTF PRINTF(T("BGCheckCollection_typicalActorPos():位置が妥当ではありません。\n" "pos (%f,%f,%f) file:%s line:%d\n", "BGCheckCollection_typicalActorPos(): Position is not valid. \n" "pos (%f,%f,%f) file:%s line:%d\n"), pos.x, pos.y, pos.z); - PRINTF(VT_RST); + PRINTF_RST(); } #endif } diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index c8b0e491dc..57a2c80289 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -2,7 +2,7 @@ #include "terminal.h" #include "line_numbers.h" -#pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128" +#pragma increment_block_number "ntsc-1.0:112 ntsc-1.1:112 ntsc-1.2:112" u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* nodeList); void BgCheck_GetStaticLookupIndicesFromPos(CollisionContext* colCtx, Vec3f* pos, Vec3i* sector); @@ -89,11 +89,11 @@ u16 sSurfaceMaterialToSfxOffset[SURFACE_MATERIAL_MAX] = { s32 BgCheck_PosErrorCheck(Vec3f* pos, const char* file, int line) { if (pos->x >= BGCHECK_XYZ_ABSMAX || pos->x <= -BGCHECK_XYZ_ABSMAX || pos->y >= BGCHECK_XYZ_ABSMAX || pos->y <= -BGCHECK_XYZ_ABSMAX || pos->z >= BGCHECK_XYZ_ABSMAX || pos->z <= -BGCHECK_XYZ_ABSMAX) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("T_BGCheck_PosErrorCheck():位置が妥当ではありません。pos (%f,%f,%f) file:%s line:%d\n", "T_BGCheck_PosErrorCheck(): Position is invalid. pos (%f,%f,%f) file:%s line:%d\n"), pos->x, pos->y, pos->z, file, line); - PRINTF(VT_RST); + PRINTF_RST(); return true; } return false; @@ -307,11 +307,11 @@ void CollisionPoly_GetVerticesByBgId(CollisionPoly* poly, s32 bgId, CollisionCon Vec3s* vtxList; if (poly == NULL || bgId > BG_ACTOR_MAX || dest == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF(T("T_Polygon_GetVertex_bg_ai(): Error %d %d %d 引数が適切ではありません。処理を終了します。\n", "T_Polygon_GetVertex_bg_ai(): Error %d %d %d Argument not appropriate. Processing terminated.\n"), poly == NULL, bgId > BG_ACTOR_MAX, dest == NULL); - PRINTF(VT_RST); + PRINTF_RST(); if (dest != NULL) { //! @bug: dest[2] x and y are not set to 0 @@ -1648,10 +1648,10 @@ void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader SSNodeList_Alloc(play, &colCtx->polyNodes, tblMax, colCtx->colHeader->numPolygons); lookupTblMemSize = BgCheck_InitializeStaticLookup(colCtx, play, colCtx->lookupTbl); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("/*---結局 BG使用サイズ %dbyte---*/\n", "/*---BG size used in the end %dbyte---*/\n"), memSize + lookupTblMemSize); - PRINTF(VT_RST); + PRINTF_RST(); DynaPoly_Init(play, &colCtx->dyna); DynaPoly_Alloc(play, &colCtx->dyna); @@ -1669,10 +1669,10 @@ CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId) return NULL; } if (!(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("T_BGCheck_getBGDataInfo():そのbg_actor_indexは使われておりません。index=%d\n", "T_BGCheck_getBGDataInfo(): That bg_actor_index is not in use. index=%d\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } return colCtx->dyna.bgActors[bgId].colHeader; @@ -2738,10 +2738,10 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto } if (!foundSlot) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_setActor():ダイナミックポリゴン 空きインデックスはありません\n", "DynaPolyInfo_setActor(): Dynamic polygon no free indexes\n")); - PRINTF(VT_RST); + PRINTF_RST(); return BG_ACTOR_MAX; } @@ -2749,9 +2749,9 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bgActorFlags[bgId] &= ~BGACTOR_1; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("DynaPolyInfo_setActor():index %d\n", bgId); - PRINTF(VT_RST); + PRINTF_RST(); return bgId; } @@ -2801,27 +2801,27 @@ void DynaPoly_EnableCeilingCollision(PlayState* play, DynaCollisionContext* dyna void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { DynaPolyActor* actor; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("DynaPolyInfo_delReserve():index %d\n", bgId); - PRINTF(VT_RST); + PRINTF_RST(); if (!DynaPoly_IsBgIdBgActor(bgId)) { #if DEBUG_FEATURES if (bgId == -1) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_delReserve():削除されているはずの(?)\n" "インデックス(== -1)のため,処理を中止します。\n", "DynaPolyInfo_delReserve():The index that should have been deleted(?)\n" " was(== -1), processing aborted.\n")); - PRINTF(VT_RST); + PRINTF_RST(); } else { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_delReserve():" "確保していない/出来なかったインデックスの解放のため、処理を中止します。index == %d\n", "DynaPolyInfo_delReserve():" " Unable to deallocate index / index unallocated, processing aborted. index == %d\n"), bgId); - PRINTF(VT_RST); + PRINTF_RST(); } #endif @@ -2880,14 +2880,14 @@ void DynaPoly_AddBgActorToLookup(PlayState* play, DynaCollisionContext* dyna, s3 #if DEBUG_FEATURES if (!(dyna->polyListMax >= *polyStartIndex + pbgdata->numPolygons)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_expandSRT():polygon over %dが%dを越えるとダメ\n", "DynaPolyInfo_expandSRT():polygon over do not use if %d exceeds %d\n"), *polyStartIndex + pbgdata->numPolygons, dyna->polyListMax); } if (!(dyna->vtxListMax >= *vtxStartIndex + pbgdata->numVertices)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_expandSRT():vertex over %dが%dを越えるとダメ\n", "DynaPolyInfo_expandSRT():vertex over do not use if %d exceeds %d\n"), *vtxStartIndex + pbgdata->numVertices, dyna->vtxListMax); @@ -3067,9 +3067,9 @@ void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna) { for (i = 0; i < BG_ACTOR_MAX; i++) { if (dyna->bgActorFlags[i] & BGACTOR_1) { // Initialize BgActor - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_setup():削除 index=%d\n", "DynaPolyInfo_setup(): Delete index=%d\n"), i); - PRINTF(VT_RST); + PRINTF_RST(); dyna->bgActorFlags[i] = 0; BgActor_Initialize(play, &dyna->bgActors[i]); @@ -3077,9 +3077,9 @@ void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna) { } if (dyna->bgActors[i].actor != NULL && dyna->bgActors[i].actor->update == NULL) { // Delete BgActor - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_setup():削除 index=%d\n", "DynaPolyInfo_setup(): Delete index=%d\n"), i); - PRINTF(VT_RST); + PRINTF_RST(); actor = DynaPoly_GetActor(&play->colCtx, i); if (actor == NULL) { return; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index e4090d484e..cb59ef55e9 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -4,7 +4,7 @@ #include "terminal.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags); @@ -3639,7 +3639,7 @@ s32 Camera_KeepOn3(Camera* camera) { } #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.0:144 ntsc-1.1:144 ntsc-1.2:144 pal-1.0:142 pal-1.1:142" + "ntsc-1.0:133 ntsc-1.1:133 ntsc-1.2:133 pal-1.0:131 pal-1.1:131" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 0567fd15a1..aa83c5e532 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -367,9 +367,9 @@ s32 Collider_SetJntSphToActor(PlayState* play, ColliderJntSph* dest, ColliderJnt if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set():zelda_malloc()出来ません。\n", "ClObjJntSph_set():zelda_malloc() Can not.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } @@ -395,9 +395,9 @@ s32 Collider_SetJntSphAllocType1(PlayState* play, ColliderJntSph* dest, Actor* a if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set3():zelda_malloc_出来ません。\n", "ClObjJntSph_set3():zelda_malloc_ Can not.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } @@ -423,9 +423,9 @@ s32 Collider_SetJntSphAlloc(PlayState* play, ColliderJntSph* dest, Actor* actor, if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set5():zelda_malloc出来ません\n", "ClObjJntSph_set5():zelda_malloc Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } for (destElem = dest->elements, srcElem = src->elements; destElem < dest->elements + dest->count; @@ -729,9 +729,9 @@ s32 Collider_SetTrisAllocType1(PlayState* play, ColliderTris* dest, Actor* actor dest->elements = ZELDA_ARENA_MALLOC(dest->count * sizeof(ColliderTrisElement), "../z_collision_check.c", 2156); if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjTris_set3():zelda_malloc()出来ません\n", "ClObjTris_set3():zelda_malloc() Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } for (destElem = dest->elements, srcElem = src->elements; destElem < dest->elements + dest->count; @@ -755,9 +755,9 @@ s32 Collider_SetTrisAlloc(PlayState* play, ColliderTris* dest, Actor* actor, Col dest->elements = ZELDA_ARENA_MALLOC(dest->count * sizeof(ColliderTrisElement), "../z_collision_check.c", 2207); if (dest->elements == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjTris_set5():zelda_malloc出来ません\n", "ClObjTris_set5():zelda_malloc Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); dest->count = 0; return false; } diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 5dbf19588d..d84dc5b208 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -3,7 +3,7 @@ #include "versions.h" #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" + "ntsc-1.0:176 ntsc-1.1:176 ntsc-1.2:176 pal-1.0:160 pal-1.1:160" ALIGNED(16) SaveContext gSaveContext; u32 D_8015FA88; diff --git a/src/code/z_eff_shield_particle.c b/src/code/z_eff_shield_particle.c index c66934a4ff..74cd6a435a 100644 --- a/src/code/z_eff_shield_particle.c +++ b/src/code/z_eff_shield_particle.c @@ -18,10 +18,10 @@ void EffectShieldParticle_Init(void* thisx, void* initParamsx) { if ((this != NULL) && (initParams != NULL)) { this->numElements = initParams->numElements; if (this->numElements > ARRAY_COUNT(this->elements)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectShieldParticle_ct():パーティクル数がオーバしてます。\n", "EffectShieldParticle_ct(): Number of particles exceeded.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } diff --git a/src/code/z_eff_ss_dead.c b/src/code/z_eff_ss_dead.c index 3c1adf4cb6..2a64a23f4a 100644 --- a/src/code/z_eff_ss_dead.c +++ b/src/code/z_eff_ss_dead.c @@ -30,7 +30,7 @@ void func_80026400(PlayState* play, Color_RGBA8* color, s16 arg2, s16 arg3) { Gfx* displayListHead; f32 cos; -#if !PLATFORM_N64 +#if PLATFORM_GC if (arg3 == 0) { return; } diff --git a/src/code/z_effect_soft_sprite.c b/src/code/z_effect_soft_sprite.c index 4041426b41..9a3df7eef3 100644 --- a/src/code/z_effect_soft_sprite.c +++ b/src/code/z_effect_soft_sprite.c @@ -197,7 +197,7 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { overlayEntry->loadedRamAddr = ZELDA_ARENA_MALLOC_R(overlaySize, "../z_effect_soft_sprite.c", 585); if (overlayEntry->loadedRamAddr == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectSoftSprite2_makeEffect():zelda_malloc_r()により,%dbyteのメモリ確保ができま\n" "せん。そのため、プログラムのロードも\n" "出来ません。ただいま危険な状態です!\n" @@ -207,18 +207,18 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { "cannot be loaded. What a dangerous situation!\n" "Naturally, effects will not be produced either.\n"), overlaySize); - PRINTF(VT_RST); + PRINTF_RST(); return; } Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("EFFECT SS OVL:SegRom %08x %08x, Seg %08x %08x, RamStart %08x, type: %d\n", overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, type); - PRINTF(VT_RST); + PRINTF_RST(); } profile = (void*)(uintptr_t)((overlayEntry->profile != NULL) @@ -246,14 +246,14 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { sEffectSsInfo.table[index].priority = priority; if (profile->init(play, index, &sEffectSsInfo.table[index], initParams) == 0) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("EffectSoftSprite2_makeEffect():" "何らかの理由でコンストラクト失敗。コンストラクターがエラーを返しました。" "エフェクトの追加を中止します。\n", "EffectSoftSprite2_makeEffect(): " "Construction failed for some reason. The constructor returned an error. " "Ceasing effect addition.\n")); - PRINTF(VT_RST); + PRINTF_RST(); EffectSs_Reset(&sEffectSsInfo.table[index]); } } @@ -313,7 +313,7 @@ void EffectSs_DrawAll(PlayState* play) { if ((sEffectSsInfo.table[i].pos.x > 32000.0f) || (sEffectSsInfo.table[i].pos.x < -32000.0f) || (sEffectSsInfo.table[i].pos.y > 32000.0f) || (sEffectSsInfo.table[i].pos.y < -32000.0f) || (sEffectSsInfo.table[i].pos.z > 32000.0f) || (sEffectSsInfo.table[i].pos.z < -32000.0f)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectSoftSprite2_disp():位置が領域外のため " "削除します。エフェクトラベルNo.%d:プログラムの方で対応をお願いします。ここです ==> " "pos(%f, %f, %f)で、ラベルはz_effect_soft_sprite_dlftbls.declにあります。\n", @@ -322,10 +322,10 @@ void EffectSs_DrawAll(PlayState* play) { "pos(%f, %f, %f) and the label is in z_effect_soft_sprite_dlftbls.decl.\n"), sEffectSsInfo.table[i].type, sEffectSsInfo.table[i].pos.x, sEffectSsInfo.table[i].pos.y, sEffectSsInfo.table[i].pos.z); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("もし、posを別のことに使っている場合相談に応じます。\n", "If you are using pos for something else, consult me.\n")); - PRINTF(VT_RST); + PRINTF_RST(); EffectSs_Delete(&sEffectSsInfo.table[i]); } else { diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 64021830da..31386556c5 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -3,7 +3,7 @@ #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-eu-mq-dbg:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128" \ +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-eu-mq-dbg:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128" \ "gc-us-mq:128 ntsc-1.2:128" #define FLAGS 0 diff --git a/src/code/z_horse.c b/src/code/z_horse.c index 5f8b700ba2..fd3eb1747c 100644 --- a/src/code/z_horse.c +++ b/src/code/z_horse.c @@ -115,11 +115,11 @@ void Horse_SetupInGameplay(PlayState* play, Player* player) { horseActor->room = -1; } } else { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF( T("Horse_SetNormal():%d セットスポットまずいです。\n", "Horse_SetNormal():%d set spot is no good.\n"), gSaveContext.save.info.horseData.sceneId); - PRINTF(VT_RST); + PRINTF_RST(); Horse_ResetHorseData(play); } } else if ((play->sceneId == SCENE_LON_LON_RANCH) && @@ -291,11 +291,11 @@ void Horse_SetupInCutscene(PlayState* play, Player* player) { void Horse_InitPlayerHorse(PlayState* play, Player* player) { if (LINK_IS_ADULT) { if (!Horse_CanSpawn(gSaveContext.save.info.horseData.sceneId)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF( T("Horse_Set_Check():%d セットスポットまずいです。\n", "Horse_Set_Check():%d set spot is no good.\n"), gSaveContext.save.info.horseData.sceneId); - PRINTF(VT_RST); + PRINTF_RST(); Horse_ResetHorseData(play); } diff --git a/src/code/z_inventory.c b/src/code/z_inventory.c index b452a92e16..2f89c0565b 100644 --- a/src/code/z_inventory.c +++ b/src/code/z_inventory.c @@ -299,7 +299,7 @@ u8 Inventory_DeleteEquipment(PlayState* play, s16 equipment) { if (equipment == EQUIP_TYPE_SWORD) { gSaveContext.save.info.equips.buttonItems[0] = ITEM_NONE; - gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] = 1; + gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] = 1; } Player_SetEquipmentData(play, player); diff --git a/src/code/z_jpeg.c b/src/code/z_jpeg.c index 83ec5aafd6..86a97183aa 100644 --- a/src/code/z_jpeg.c +++ b/src/code/z_jpeg.c @@ -337,9 +337,9 @@ s32 Jpeg_Decode(void* data, void* zbuffer, void* work, u32 workSize) { x = y = 0; for (i = 0; i < 300; i += 4) { if (JpegDecoder_Decode(&decoder, (u16*)workBuff->data, 4, i != 0, &state)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : Can't decode jpeg\n"); - PRINTF(VT_RST); + PRINTF_RST(); } else { Jpeg_ScheduleDecoderTask(&ctx); osInvalDCache(&workBuff->data, sizeof(workBuff->data[0])); diff --git a/src/code/z_kaleido_manager.c b/src/code/z_kaleido_manager.c index 761d1fb9ec..42ec59fd0a 100644 --- a/src/code/z_kaleido_manager.c +++ b/src/code/z_kaleido_manager.c @@ -19,11 +19,11 @@ void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl) { ovl->loadedRamAddr = sKaleidoAreaPtr; Overlay_Load(ovl->file.vromStart, ovl->file.vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(k):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr, (uintptr_t)ovl->loadedRamAddr + (uintptr_t)ovl->vramEnd - (uintptr_t)ovl->vramStart, (uintptr_t)ovl->vramStart - (uintptr_t)ovl->loadedRamAddr, ovl->name); - PRINTF(VT_RST); + PRINTF_RST(); ovl->offset = (uintptr_t)ovl->loadedRamAddr - (uintptr_t)ovl->vramStart; gKaleidoMgrCurOvl = ovl; @@ -50,17 +50,17 @@ void KaleidoManager_Init(PlayState* play) { } } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("KaleidoArea の最大サイズは %d バイトを確保します\n", "The maximum size of KaleidoArea is %d bytes\n"), largestSize); - PRINTF(VT_RST); + PRINTF_RST(); sKaleidoAreaPtr = GAME_STATE_ALLOC(&play->state, largestSize, "../z_kaleido_manager.c", 150); LOG_UTILS_CHECK_NULL_POINTER("KaleidoArea_allocp", sKaleidoAreaPtr, "../z_kaleido_manager.c", 151); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("KaleidoArea %08x - %08x\n", sKaleidoAreaPtr, (uintptr_t)sKaleidoAreaPtr + largestSize); - PRINTF(VT_RST); + PRINTF_RST(); gKaleidoMgrCurOvl = NULL; } diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 69d2b2d9ba..10fff2bb07 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,4 +1,4 @@ -#pragma increment_block_number "gc-eu:224 gc-eu-mq:224 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:224 pal-1.1:224" #include "global.h" @@ -18,16 +18,16 @@ void KaleidoScopeCall_LoadPlayer(void) { if (gKaleidoMgrCurOvl != playerActorOvl) { if (gKaleidoMgrCurOvl != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 強制排除\n", "Kaleido area forced exclusion\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(gKaleidoMgrCurOvl); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("プレイヤーアクター搬入\n", "Player actor import\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_LoadOvl(playerActorOvl); } @@ -90,16 +90,16 @@ void KaleidoScopeCall_Update(PlayState* play) { } else if (pauseCtx->state != PAUSE_STATE_OFF) { if (gKaleidoMgrCurOvl != kaleidoScopeOvl) { if (gKaleidoMgrCurOvl != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 プレイヤー 強制排除\n", "Kaleido area Player Forced Elimination\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(gKaleidoMgrCurOvl); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 カレイドスコープ搬入\n", "Kaleido area Kaleidoscope loading\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_LoadOvl(kaleidoScopeOvl); } @@ -108,9 +108,9 @@ void KaleidoScopeCall_Update(PlayState* play) { sKaleidoScopeUpdateFunc(play); if (!IS_PAUSED(&play->pauseCtx)) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 カレイドスコープ排出\n", "Kaleido area Kaleidoscope Emission\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(kaleidoScopeOvl); KaleidoScopeCall_LoadPlayer(); diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 00d7b79710..91e168ecde 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#pragma increment_block_number "gc-eu:232 gc-eu-mq:232 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ - "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:240 pal-1.1:240" +#pragma increment_block_number "gc-eu:220 gc-eu-mq:220 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ + "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:228 pal-1.1:228" #include "global.h" #include "ultra64.h" diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 1c82288b7a..c658775da3 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -30,12 +30,12 @@ void Map_SetPaletteData(PlayState* play, s16 room) { interfaceCtx->mapPaletteIndex = paletteIndex; } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("PALETEセット 【 i=%x : room=%x 】Room_Inf[%d][4]=%x ( map_palete_no = %d )\n", "PALETE Set 【 i=%x : room=%x 】Room_Inf[%d][4]=%x ( map_palete_no = %d )\n"), paletteIndex, room, mapIndex, gSaveContext.save.info.sceneFlags[mapIndex].rooms, interfaceCtx->mapPaletteIndex); - PRINTF(VT_RST); + PRINTF_RST(); interfaceCtx->mapPalette[paletteIndex * 2] = 2; interfaceCtx->mapPalette[paletteIndex * 2 + 1] = 0xBF; @@ -122,17 +122,17 @@ void Map_InitData(PlayState* play, s16 room) { extendedMapIndex = 0x15; } } else if (play->sceneId == SCENE_GERUDO_VALLEY) { - if ((LINK_AGE_IN_YEARS == YEARS_ADULT) && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if ((LINK_AGE_IN_YEARS == YEARS_ADULT) && !GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { extendedMapIndex = 0x16; } } else if (play->sceneId == SCENE_GERUDOS_FORTRESS) { - if (GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { extendedMapIndex = 0x17; } } - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("KKK=%d\n", extendedMapIndex); - PRINTF(VT_RST); + PRINTF_RST(); sEntranceIconMapIndex = extendedMapIndex; DMA_REQUEST_SYNC(interfaceCtx->mapSegment, (uintptr_t)_map_grand_staticSegmentRomStart + @@ -158,11 +158,11 @@ void Map_InitData(PlayState* play, s16 room) { case SCENE_WATER_TEMPLE_BOSS: case SCENE_SPIRIT_TEMPLE_BOSS: case SCENE_SHADOW_TEMPLE_BOSS: - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("デクの樹ダンジョンMAP テクスチャDMA(%x) scene_id_offset=%d VREG(30)=%d\n", "Deku Tree Dungeon MAP Texture DMA(%x) scene_id_offset=%d VREG(30)=%d\n"), room, mapIndex, VREG(30)); - PRINTF(VT_RST); + PRINTF_RST(); #if PLATFORM_N64 if ((B_80121220 != NULL) && (B_80121220->unk_28 != NULL) && B_80121220->unk_28(play)) { @@ -219,9 +219,9 @@ void Map_InitRoomData(PlayState* play, s16 room) { interfaceCtx->mapRoomNum = room; interfaceCtx->unk_25A = mapIndex; Map_SetPaletteData(play, room); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("部屋部屋=%d\n", "Room Room = %d\n"), room); - PRINTF(VT_RST); + PRINTF_RST(); Map_InitData(play, room); break; } @@ -496,7 +496,7 @@ void Minimap_Draw(PlayState* play) { (LINK_AGE_IN_YEARS != YEARS_ADULT)) { if ((gMapData->owEntranceFlag[sEntranceIconMapIndex] == 0xFFFF) || ((gMapData->owEntranceFlag[sEntranceIconMapIndex] != 0xFFFF) && - (gSaveContext.save.info.infTable[INFTABLE_1AX_INDEX] & + (gSaveContext.save.info.infTable[INFTABLE_INDEX_1AX] & gBitFlags[gMapData->owEntranceFlag[mapIndex]]))) { gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, @@ -513,7 +513,7 @@ void Minimap_Draw(PlayState* play) { } if ((play->sceneId == SCENE_ZORAS_FOUNTAIN) && - (gSaveContext.save.info.infTable[INFTABLE_1AX_INDEX] & gBitFlags[INFTABLE_1A9_SHIFT])) { + (gSaveContext.save.info.infTable[INFTABLE_INDEX_1AX] & gBitFlags[INFTABLE_1A9_SHIFT])) { gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -600,9 +600,9 @@ void Map_Update(PlayState* play) { if ((interfaceCtx->mapRoomNum == gMapData->switchFromRoom[mapIndex][i]) && (floor == gMapData->switchFromFloor[mapIndex][i])) { interfaceCtx->mapRoomNum = gMapData->switchToRoom[mapIndex][i]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("階層切替=%x\n", "Layer switching = %x\n"), interfaceCtx->mapRoomNum); - PRINTF(VT_RST); + PRINTF_RST(); Map_InitData(play, interfaceCtx->mapRoomNum); gSaveContext.sunsSongState = SUNSSONG_INACTIVE; Map_SavePlayerInitialInfo(play); diff --git a/src/code/z_message.c b/src/code/z_message.c index bef5387eed..b6e24c1d62 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -8,7 +8,7 @@ #endif #pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.0:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:128 pal-1.1:128" + "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:80 pal-1.0:128 pal-1.1:128" #if !PLATFORM_GC #define OCARINA_BUTTON_A_PRIM_1_R 80 @@ -2515,9 +2515,9 @@ void Message_OpenText(PlayState* play, u16 textId) { msgCtx->textId = textId; if (textId == 0x2030) { // Talking to Ingo as adult in Lon Lon Ranch for the first time before freeing Epona - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("???????????????? z_message.c ??????????????????\n"); - PRINTF(VT_RST); + PRINTF_RST(); gSaveContext.eventInf[0] = gSaveContext.eventInf[1] = gSaveContext.eventInf[2] = gSaveContext.eventInf[3] = 0; } @@ -2657,9 +2657,9 @@ void Message_OpenText(PlayState* play, u16 textId) { void Message_StartTextbox(PlayState* play, u16 textId, Actor* actor) { MessageContext* msgCtx = &play->msgCtx; - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF(T("めっせーじ=%x(%d)\n", "Message=%x(%d)\n"), textId, actor); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->ocarinaAction = 0xFFFF; Message_OpenText(play, textId); @@ -2677,9 +2677,9 @@ void Message_ContinueTextbox(PlayState* play, u16 textId) { s32 pad2[3]; #endif - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("めっせーじ=%x message->msg_data\n", "Message=%x message->msg_data\n"), textId, msgCtx->msgLength); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->msgLength = 0; Message_OpenText(play, textId); @@ -2719,7 +2719,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { s16 noStopDoAction; s32 k; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); for (i = sOcarinaSongBitFlags = 0; i <= (QUEST_SONG_STORMS - QUEST_SONG_MINUET); i++) { if (CHECK_QUEST_ITEM(QUEST_SONG_MINUET + i)) { @@ -2731,7 +2731,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { sOcarinaSongBitFlags |= (1 << OCARINA_SONG_SCARECROW_SPAWN); } PRINTF("ocarina_bit = %x\n", sOcarinaSongBitFlags); - PRINTF(VT_RST); + PRINTF_RST(); sHasSunsSong = CHECK_QUEST_ITEM(QUEST_SONG_SUN); msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff(); @@ -3352,11 +3352,11 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->stateTimer--; if (msgCtx->stateTimer == 0) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Na_StopOcarinaMode();\n"); PRINTF("Na_StopOcarinaMode();\n"); PRINTF("Na_StopOcarinaMode();\n"); - PRINTF(VT_RST); + PRINTF_RST(); Message_Decode(play); msgCtx->msgMode = MSGMODE_SETUP_DISPLAY_SONG_PLAYED; msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); @@ -3456,7 +3456,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { if (msgCtx->lastPlayedSong == OCARINA_SONG_EPONAS) { R_EPONAS_SONG_PLAYED = true; } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("☆☆☆ocarina=%d message->ocarina_no=%d ", msgCtx->lastPlayedSong, msgCtx->ocarinaAction); if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY_DONE) { @@ -3465,7 +3465,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = OCARINA_MODE_0B; } } else if (msgCtx->ocarinaAction >= OCARINA_ACTION_CHECK_MINUET) { - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("Ocarina_PC_Wind=%d(%d) ☆☆☆ ", OCARINA_ACTION_CHECK_MINUET, msgCtx->ocarinaAction - OCARINA_ACTION_CHECK_MINUET); if (msgCtx->lastPlayedSong == (msgCtx->ocarinaAction - OCARINA_ACTION_CHECK_MINUET)) { @@ -3474,7 +3474,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = msgCtx->lastPlayedSong - 1; } } else { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Ocarina_C_Wind=%d(%d) ☆☆☆ ", OCARINA_ACTION_PLAYBACK_MINUET, msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET); if (msgCtx->lastPlayedSong == (msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET)) { @@ -3483,7 +3483,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = OCARINA_MODE_04; } } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("→ OCARINA_MODE=%d\n", play->msgCtx.ocarinaMode); } } @@ -3529,10 +3529,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->lastPlayedSong = msgCtx->ocarinaStaff->state; msgCtx->msgMode = MSGMODE_SONG_PLAYBACK_SUCCESS; Item_Give(play, ITEM_SONG_MINUET + gOcarinaSongItemMap[msgCtx->ocarinaStaff->state]); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("z_message.c 取得メロディ=%d\n", "z_message.c Song Acquired = %d\n"), ITEM_SONG_MINUET + msgCtx->ocarinaStaff->state); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->stateTimer = 20; Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -3600,14 +3600,14 @@ void Message_DrawMain(PlayState* play, Gfx** p) { Message_CloseTextbox(play); PRINTF( T("録音終了!!!!!!!!!録音終了\n", "Recording complete!!!!!!!!! Recording Complete\n")); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("\n====================================================================\n"); MemCpy(gSaveContext.save.info.scarecrowLongSong, gScarecrowLongSongPtr, sizeof(gSaveContext.save.info.scarecrowLongSong)); for (i = 0; i < ARRAY_COUNT(gSaveContext.save.info.scarecrowLongSong); i++) { PRINTF("%d, ", gSaveContext.save.info.scarecrowLongSong[i]); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("\n====================================================================\n"); } DRAW_TEXT(play, &gfx, false); @@ -3665,14 +3665,14 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->msgMode = MSGMODE_SCARECROW_SPAWN_RECORDING_DONE; Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("\n====================================================================\n"); MemCpy(gSaveContext.save.info.scarecrowSpawnSong, gScarecrowSpawnSongPtr, sizeof(gSaveContext.save.info.scarecrowSpawnSong)); for (i = 0; i < ARRAY_COUNT(gSaveContext.save.info.scarecrowSpawnSong); i++) { PRINTF("%d, ", gSaveContext.save.info.scarecrowSpawnSong[i]); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("\n====================================================================\n"); } else if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_REJECTED || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { @@ -4289,7 +4289,7 @@ void Message_Update(PlayState* play) { gSaveContext.prevHudVisibilityMode = HUD_VISIBILITY_ALL; } if (play->csCtx.state == 0) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("day_time=%x active_camera=%d ", gSaveContext.save.cutsceneIndex, play->activeCamId); if (msgCtx->textId != 0x2061 && msgCtx->textId != 0x2025 && msgCtx->textId != 0x208C && @@ -4307,7 +4307,7 @@ void Message_Update(PlayState* play) { } } } - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->msgLength = 0; msgCtx->msgMode = MSGMODE_NONE; interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 2697d39857..fd780e2a52 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -852,7 +852,7 @@ void func_80083108(PlayState* play) { (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE)) { if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || - (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + (gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] == 0)) { gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; sp28 = true; @@ -876,7 +876,7 @@ void func_80083108(PlayState* play) { (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE)) { if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || - (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + (gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] == 0)) { gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; sp28 = true; @@ -1135,7 +1135,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { interfaceCtx->restrictions.dinsNayrus = (sRestrictionFlags[i].flags3 & 0x0C) >> 2; interfaceCtx->restrictions.all = (sRestrictionFlags[i].flags3 & 0x03) >> 0; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("parameter->button_status = %x,%x,%x\n", sRestrictionFlags[i].flags1, sRestrictionFlags[i].flags2, sRestrictionFlags[i].flags3); PRINTF("h_gage=%d, b_button=%d, a_button=%d, c_bottle=%d\n", interfaceCtx->restrictions.hGauge, @@ -1147,7 +1147,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { PRINTF("c_sunmoon=%d, m_wind=%d, m_magic=%d, another=%d\n", interfaceCtx->restrictions.sunsSong, interfaceCtx->restrictions.farores, interfaceCtx->restrictions.dinsNayrus, interfaceCtx->restrictions.all); - PRINTF(VT_RST); + PRINTF_RST(); return; } i++; @@ -1346,7 +1346,7 @@ void func_80084BF4(PlayState* play, u16 flag) { } } else if (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE) { if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || - (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + (gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] == 0)) { gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; Interface_LoadItemIcon1(play, 0); } @@ -1376,16 +1376,16 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(sExtraItemBases[item - ITEM_DEKU_STICKS_5]); } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); - PRINTF(VT_RST); + PRINTF_RST(); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("封印 = %x\n", "Seals = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); if (item == ITEM_MEDALLION_WATER) { Horse_FixLakeHyliaPosition(play); @@ -1395,38 +1395,38 @@ u8 Item_Give(PlayState* play, u8 item) { } else if ((item >= ITEM_SONG_MINUET) && (item <= ITEM_SONG_STORMS)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("楽譜 = %x\n", "Musical scores = %x\n"), gSaveContext.save.info.inventory.questItems); PRINTF(T("楽譜 = %x (%x) (%x)\n", "Musical scores = %x (%x) (%x)\n"), gSaveContext.save.info.inventory.questItems, gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET], gBitFlags[item - ITEM_SONG_MINUET]); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item >= ITEM_KOKIRI_EMERALD) && (item <= ITEM_ZORA_SAPPHIRE)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("精霊石 = %x\n", "Spiritual Stones = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item == ITEM_STONE_OF_AGONY) || (item == ITEM_GERUDOS_CARD)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("アイテム = %x\n", "Items = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if (item == ITEM_SKULL_TOKEN) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; gSaveContext.save.info.inventory.gsTokens++; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("Nコイン = %x(%d)\n", "N Coins = %x(%d)\n"), gSaveContext.save.info.inventory.questItems, gSaveContext.save.info.inventory.gsTokens); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_BIGGORON)) { @@ -1869,9 +1869,9 @@ u8 Item_CheckObtainability(u8 item) { slot = SLOT(sExtraItemBases[item - ITEM_DEKU_STICKS_5]); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); - PRINTF(VT_RST); + PRINTF_RST(); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { return ITEM_NONE; @@ -3545,11 +3545,11 @@ void Interface_Draw(PlayState* play) { for (svar1 = 0; svar1 < ARRAY_COUNT(gSpoilingItems); svar1++) { if (INV_CONTENT(ITEM_TRADE_ADULT) == gSpoilingItems[svar1]) { #if OOT_VERSION >= NTSC_1_1 - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] &= - (u16) ~(EVENTINF_INGO_RACE_STATE_MASK | EVENTINF_INGO_RACE_HORSETYPE_MASK | - EVENTINF_INGO_RACE_LOST_ONCE_MASK | EVENTINF_INGO_RACE_SECOND_RACE_MASK | - EVENTINF_INGO_RACE_0F_MASK); - PRINTF("EVENT_INF=%x\n", gSaveContext.eventInf[EVENTINF_HORSES_INDEX]); + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] &= + (u16) ~(EVENTINF_INGO_RACE_STATE_MASK | EVENTINF_MASK(EVENTINF_INGO_RACE_HORSETYPE) | + EVENTINF_MASK(EVENTINF_INGO_RACE_LOST_ONCE) | + EVENTINF_MASK(EVENTINF_INGO_RACE_SECOND_RACE) | EVENTINF_MASK(EVENTINF_INGO_RACE_0F)); + PRINTF("EVENT_INF=%x\n", gSaveContext.eventInf[EVENTINF_INDEX_HORSES]); #endif play->nextEntranceIndex = spoilingItemEntrances[svar1]; INV_CONTENT(gSpoilingItemReverts[svar1]) = gSpoilingItemReverts[svar1]; @@ -4277,13 +4277,13 @@ void Interface_Update(PlayState* play) { if (gSaveContext.save.info.playerData.isMagicAcquired && (gSaveContext.save.info.playerData.magicLevel == 0)) { gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.isDoubleMagicAcquired + 1; gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("魔法スター─────ト!!!!!!!!!\n", "Magic Start!!!!!!!!!\n")); PRINTF("MAGIC_MAX=%d\n", gSaveContext.save.info.playerData.magicLevel); PRINTF("MAGIC_NOW=%d\n", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget); PRINTF("Z_MAGIC_NOW_MAX=%d\n", gSaveContext.magicCapacity); - PRINTF(VT_RST); + PRINTF_RST(); } Magic_Update(play); diff --git a/src/code/z_play.c b/src/code/z_play.c index 08f5d2de29..a04391aa89 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -176,7 +176,7 @@ void Play_SetupTransition(PlayState* this, s32 transitionType) { break; default: - HUNGUP_AND_CRASH("../z_play.c", LN5(2263, 2266, 2269, 2272, 2287, 2290, 2293)); + HUNGUP_AND_CRASH("../z_play.c", LN5(2263, 2266, 2269, 2272, 2282, 2287, 2290, 2293)); break; } } diff --git a/src/code/z_room.c b/src/code/z_room.c index 67d99eb214..0c5d37f551 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -458,7 +458,7 @@ RoomShapeImageMultiBgEntry* Room_GetImageMultiBgEntry(RoomShapeImageMulti* roomS "z_room.c: Data consistent with camera id does not exist camid=%d\n") VT_RST, bgCamIndex); -#if PLATFORM_GC +#if !PLATFORM_N64 LogUtils_HungupThread("../z_room.c", 726); #else Fault_AddHungupAndCrash("../z_room.c", LN2(724, 727, 721)); @@ -545,7 +545,7 @@ void Room_DrawImage(PlayState* play, Room* room, u32 flags) { } else if (roomShape->amountType == ROOM_SHAPE_IMAGE_AMOUNT_MULTI) { Room_DrawImageMulti(play, room, flags); } else { -#if PLATFORM_GC +#if !PLATFORM_N64 LogUtils_HungupThread("../z_room.c", 841); #else Fault_AddHungupAndCrash("../z_room.c", LN2(849, 852, 836)); @@ -611,14 +611,14 @@ u32 Room_SetupFirstRoom(PlayState* play, RoomContext* roomCtx) { } } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("部屋バッファサイズ=%08x(%5.1fK)\n", "Room buffer size=%08x(%5.1fK)\n"), roomBufferSize, roomBufferSize / 1024.0f); roomCtx->bufPtrs[0] = GAME_STATE_ALLOC(&play->state, roomBufferSize, "../z_room.c", 946); PRINTF(T("部屋バッファ開始ポインタ=%08x\n", "Room buffer initial pointer=%08x\n"), roomCtx->bufPtrs[0]); roomCtx->bufPtrs[1] = (void*)((uintptr_t)roomCtx->bufPtrs[0] + roomBufferSize); PRINTF(T("部屋バッファ終了ポインタ=%08x\n", "Room buffer end pointer=%08x\n"), roomCtx->bufPtrs[1]); - PRINTF(VT_RST); + PRINTF_RST(); roomCtx->activeBufPage = 0; roomCtx->status = 0; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index d162fb740b..bcb4c5ba9b 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -87,9 +87,9 @@ void Object_InitContext(PlayState* play, ObjectContext* objectCtx) { objectCtx->slots[i].id = OBJECT_INVALID; } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("オブジェクト入れ替えバンク情報 %8.3fKB\n", "Object exchange bank data %8.3fKB\n"), spaceSize / 1024.0f); - PRINTF(VT_RST); + PRINTF_RST(); objectCtx->spaceStart = objectCtx->slots[0].segment = GAME_STATE_ALLOC(&play->state, spaceSize, "../z_scene.c", 219); @@ -195,9 +195,9 @@ s32 Scene_ExecuteCommands(PlayState* play, SceneCmd* sceneCmd) { if (cmdCode < ARRAY_COUNT(sSceneCmdHandlers)) { sSceneCmdHandlers[cmdCode](play, sceneCmd); } else { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("code の値が異常です\n", "code variable is abnormal\n")); - PRINTF(VT_RST); + PRINTF_RST(); } sceneCmd++; diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index a953bdb214..49502f4ec9 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -71,9 +71,9 @@ void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable, Over Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_Lod_draw():skelがNULLです。\n", "Si2_Lod_draw(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -184,9 +184,9 @@ void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable, Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_Lod_draw_SV():skelがNULLです。\n", "Si2_Lod_draw_SV(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -287,9 +287,9 @@ void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable, Over Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw():skelがNULLです。\n", "Si2_draw(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -400,9 +400,9 @@ void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw_SV():skelがNULLです。\n", "Si2_draw_SV(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -553,9 +553,9 @@ Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, Overrid Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw2():skelがNULLです。NULLを返します。\n", "Si2_draw2(): skel is NULL. Returns NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } @@ -661,9 +661,9 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(*mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw2_SV():skelがNULLです。NULLを返します。\n", "Si2_draw2_SV(): skel is NULL. Returns NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } @@ -849,7 +849,7 @@ AnimTask* AnimTaskQueue_NewTask(AnimTaskQueue* animTaskQueue, s32 type) { return task; } -#if PLATFORM_N64 +#if !PLATFORM_GC #define LINK_ANIMATION_OFFSET(addr, offset) \ (((uintptr_t)_link_animetionSegmentRomStart) + SEGMENT_OFFSET(addr) + (offset)) #else @@ -1129,10 +1129,10 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info_Rom_SV_ct メモリアロケーションエラー\n", "Skeleton_Info_Rom_SV_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); @@ -1443,9 +1443,9 @@ BAD_RETURN(s32) SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHe skelAnime->morphTable = morphTable; } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info2_ct メモリアロケーションエラー\n", "Skeleton_Info2_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { @@ -1476,10 +1476,10 @@ BAD_RETURN(s32) SkelAnime_InitFlex(PlayState* play, SkelAnime* skelAnime, FlexSk skelAnime->morphTable = morphTable; } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info_Rom_SV_ct メモリアロケーションエラー\n", "Skeleton_Info_Rom_SV_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { @@ -1501,10 +1501,10 @@ BAD_RETURN(s32) SkelAnime_InitSkin(PlayState* play, SkelAnime* skelAnime, Skelet skelAnime->morphTable = ZELDA_ARENA_MALLOC(skelAnime->limbCount * sizeof(*skelAnime->morphTable), "../z_skelanime.c", 3121); if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info2_skin2_ct メモリアロケーションエラー\n", "Skeleton_Info2_skin2_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { diff --git a/src/code/z_skin_matrix.c b/src/code/z_skin_matrix.c index e5d0dfe99b..689fe67107 100644 --- a/src/code/z_skin_matrix.c +++ b/src/code/z_skin_matrix.c @@ -252,10 +252,10 @@ s32 SkinMatrix_Invert(MtxF* src, MtxF* dest) { // Reaching row = 4 means the column is either all 0 or a duplicate column. // Therefore src is a singular matrix (0 determinant). - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Skin_Matrix_InverseMatrix():逆行列つくれません\n", "Skin_Matrix_InverseMatrix(): Cannot create inverse matrix\n")); - PRINTF(VT_RST); + PRINTF_RST(); return 2; } diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 114c9f60e1..28871572c4 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -162,7 +162,7 @@ void Sram_InitNewSave(void) { gSaveContext.save.info.horseData.pos.z = 5497; gSaveContext.save.info.horseData.angle = -0x6AD9; gSaveContext.save.info.playerData.magicLevel = 0; - gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] = 1; + gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] = 1; gSaveContext.save.info.sceneFlags[SCENE_WATER_TEMPLE].swch = 0x40000000; } @@ -325,8 +325,15 @@ void Sram_InitDebugSave(void) { gSaveContext.save.info.horseData.pos.y = 72; gSaveContext.save.info.horseData.pos.z = 5497; gSaveContext.save.info.horseData.angle = -0x6AD9; - gSaveContext.save.info.infTable[0] |= 0x5009; - gSaveContext.save.info.eventChkInf[0] |= 0x123F; + gSaveContext.save.info.infTable[INFTABLE_INDEX_0] |= INFTABLE_MASK(INFTABLE_00) | INFTABLE_MASK(INFTABLE_03) | + INFTABLE_MASK(INFTABLE_0C) | INFTABLE_MASK(INFTABLE_0E); + + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_0] |= + EVENTCHKINF_MASK(EVENTCHKINF_00_UNUSED) | EVENTCHKINF_MASK(EVENTCHKINF_01_UNUSED) | + EVENTCHKINF_MASK(EVENTCHKINF_MIDO_DENIED_DEKU_TREE_ACCESS) | EVENTCHKINF_MASK(EVENTCHKINF_03) | + EVENTCHKINF_MASK(EVENTCHKINF_04) | EVENTCHKINF_MASK(EVENTCHKINF_05) | EVENTCHKINF_MASK(EVENTCHKINF_09) | + EVENTCHKINF_MASK(EVENTCHKINF_0C); + SET_EVENTCHKINF(EVENTCHKINF_80); SET_EVENTCHKINF(EVENTCHKINF_C4); @@ -385,7 +392,7 @@ void Sram_OpenSave(SramContext* sramCtx) { MemCpy(&gSaveContext, sramCtx->readBuff + i, sizeof(Save)); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("SCENE_DATA_ID = %d SceneNo = %d\n", gSaveContext.save.info.playerData.savedSceneId, ((void)0, gSaveContext.save.entranceIndex)); @@ -458,14 +465,14 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("scene_no = %d\n", gSaveContext.save.entranceIndex); - PRINTF(VT_RST); + PRINTF_RST(); if (gSaveContext.save.info.playerData.health < 0x30) { gSaveContext.save.info.playerData.health = 0x30; } if (gSaveContext.save.info.scarecrowLongSongSet) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("\n====================================================================\n"); MemCpy(gScarecrowLongSongPtr, gSaveContext.save.info.scarecrowLongSong, @@ -477,11 +484,11 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("\n====================================================================\n"); - PRINTF(VT_RST); + PRINTF_RST(); } if (gSaveContext.save.info.scarecrowSpawnSongSet) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("\n====================================================================\n"); MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.info.scarecrowSpawnSong, @@ -493,13 +500,13 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("\n====================================================================\n"); - PRINTF(VT_RST); + PRINTF_RST(); } // if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter if (GET_EVENTCHKINF(EVENTCHKINF_40) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) { - i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_40_INDEX] & ~EVENTCHKINF_40_MASK; - gSaveContext.save.info.eventChkInf[EVENTCHKINF_40_INDEX] = i; + i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] & ~EVENTCHKINF_MASK(EVENTCHKINF_40); + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] = i; INV_CONTENT(ITEM_ZELDAS_LETTER) = ITEM_CHICKEN; @@ -986,11 +993,11 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { PRINTF(T("GOOD!GOOD! サイズ=%d + %d = %d\n", "GOOD! GOOD! Size = %d + %d = %d\n"), sizeof(SaveInfo), 4, sizeof(SaveInfo) + 4); - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF(VT_RST); + PRINTF_RST(); func_800F6700(gSaveContext.audioSetting); } diff --git a/src/code/z_view.c b/src/code/z_view.c index 37e8ac9b00..5b68f00bf4 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -647,11 +647,11 @@ s32 View_ErrorCheckEyePosition(f32 eyeX, f32 eyeY, f32 eyeZ) { } if (error != 0) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("eye が大きすぎます eye=[%8.3f %8.3f %8.3f] error=%d\n", "eye is too large eye=[%8.3f %8.3f %8.3f] error=%d\n"), eyeX, eyeY, eyeZ, error); - PRINTF(VT_RST); + PRINTF_RST(); } return error; diff --git a/src/code/z_vimode.c b/src/code/z_vimode.c index 59fa5df2d0..0d2f5716fa 100644 --- a/src/code/z_vimode.c +++ b/src/code/z_vimode.c @@ -86,7 +86,7 @@ void ViMode_Configure(ViMode* viMode, s32 type, s32 tvType, s32 loRes, s32 antia yScaleHiOddField = modeF ? (loResInterlaced ? (F210(0.75) << 16) : (F210(0.5) << 16)) : 0; viMode->customViMode.type = type; - viMode->customViMode.comRegs.ctrl = VI_CTRL_PIXEL_ADV_3 | VI_CTRL_GAMMA_ON | VI_CTRL_GAMMA_DITHER_ON | + viMode->customViMode.comRegs.ctrl = VI_CTRL_PIXEL_ADV(3) | VI_CTRL_GAMMA_ON | VI_CTRL_GAMMA_DITHER_ON | (!loResDeinterlaced ? VI_CTRL_SERRATE_ON : 0) | (antialiasOn ? VI_CTRL_DIVOT_ON : 0) | (fb32Bit ? VI_CTRL_TYPE_32 : VI_CTRL_TYPE_16); diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index d2aac8c1f3..2e7953362b 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -1030,7 +1030,7 @@ void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { // Precompute vertices and display lists for drawing the skybox if (skyboxId != SKYBOX_NONE) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); if (skyboxCtx->drawType != SKYBOX_DRAW_128) { skyboxCtx->dListBuf = GAME_STATE_ALLOC(state, 8 * 150 * sizeof(Gfx), "../z_vr_box.c", 1636); @@ -1056,6 +1056,6 @@ void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { Skybox_Calculate128(skyboxCtx, 5); // compute 5 faces, excludes the bottom face } } - PRINTF(VT_RST); + PRINTF_RST(); } } diff --git a/src/libc/absf.s b/src/libc/absf.s index b423334614..58450e7791 100644 --- a/src/libc/absf.s +++ b/src/libc/absf.s @@ -1,15 +1,9 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -#if DEBUG_FEATURES -.set noreorder -#endif - -.section .text - -.balign 16 +.text LEAF(absf) - abs.s $f0, $f12 - jr $ra - nop + abs.s fv0, fa0 + jr ra END(absf) diff --git a/src/libc/sqrt.s b/src/libc/sqrt.s index 6ffb2b7085..1d69d3adb2 100644 --- a/src/libc/sqrt.s +++ b/src/libc/sqrt.s @@ -1,15 +1,9 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -#if DEBUG_FEATURES -.set noreorder -#endif - -.section .text - -.balign 16 +.text LEAF(sqrt) - sqrt.d $f0, $f12 - jr $ra - nop + sqrt.d fv0, fa0 + jr ra END(sqrt) diff --git a/src/libc64/__osMalloc_gc.c b/src/libc64/__osMalloc_gc.c index f2770767fa..025c21bff9 100644 --- a/src/libc64/__osMalloc_gc.c +++ b/src/libc64/__osMalloc_gc.c @@ -3,8 +3,6 @@ #include "libc64/os_malloc.h" #include "terminal.h" -#if PLATFORM_GC - #define FILL_ALLOC_BLOCK_FLAG (1 << 0) #define FILL_FREE_BLOCK_FLAG (1 << 1) #define CHECK_FREE_BLOCK_FLAG (1 << 2) @@ -891,5 +889,3 @@ u8 ArenaImpl_GetAllocFailures(Arena* arena) { return arena->allocFailures; } #endif - -#endif diff --git a/src/libc64/__osMalloc_n64.c b/src/libc64/__osMalloc_n64.c index 8efb4ec6c8..56996feac9 100644 --- a/src/libc64/__osMalloc_n64.c +++ b/src/libc64/__osMalloc_n64.c @@ -2,8 +2,6 @@ #include "fault.h" #include "libc64/os_malloc.h" -#if PLATFORM_N64 - #define NODE_MAGIC 0x7373 #define NODE_IS_VALID(node) ((node)->magic == NODE_MAGIC) @@ -470,5 +468,3 @@ s32 __osCheckArena(Arena* arena) { u8 ArenaImpl_GetAllocFailures(Arena* arena) { return arena->allocFailures; } - -#endif diff --git a/src/libc64/fp.s b/src/libc64/fp.s index d5b42094a3..32c084ef56 100644 --- a/src/libc64/fp.s +++ b/src/libc64/fp.s @@ -1,12 +1,26 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noreorder - -.section .data - -.balign 16 +.data #if !PLATFORM_N64 + +DATA(gPositiveInfinity) + .word 0x7F800000 +ENDDATA(gPositiveInfinity) + +DATA(gNegativeInfinity) + .word 0xFF800000 +ENDDATA(gNegativeInfinity) + +DATA(gPositiveZero) + .word 0x00000000 +ENDDATA(gPositiveZero) + +DATA(gNegativeZero) + .word 0x80000000 +ENDDATA(gNegativeZero) + DATA(qNaN0x3FFFFF) .word 0x7FBFFFFF ENDDATA(qNaN0x3FFFFF) @@ -18,150 +32,135 @@ ENDDATA(qNaN0x10000) DATA(sNaN0x3FFFFF) .word 0x7FFFFFFF ENDDATA(sNaN0x3FFFFF) + #endif -.section .text - -.balign 16 +.text LEAF(floorf) - floor.w.s $f12, $f12 - jr $ra - cvt.s.w $f0, $f12 + floor.w.s fa0, fa0 + cvt.s.w fv0, fa0 + jr ra END(floorf) LEAF(floor) - floor.w.d $f12, $f12 - jr $ra - cvt.d.w $f0, $f12 + floor.w.d fa0, fa0 + cvt.d.w fv0, fa0 + jr ra END(floor) LEAF(lfloorf) - floor.w.s $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + floor.w.s ft0, fa0 + mfc1 v0, ft0 + jr ra END(lfloorf) LEAF(lfloor) - floor.w.d $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + floor.w.d ft0, fa0 + mfc1 v0, ft0 + jr ra END(lfloor) LEAF(ceilf) - ceil.w.s $f12, $f12 - jr $ra - cvt.s.w $f0, $f12 + ceil.w.s fa0, fa0 + cvt.s.w fv0, fa0 + jr ra END(ceilf) LEAF(ceil) - ceil.w.d $f12, $f12 - jr $ra - cvt.d.w $f0, $f12 + ceil.w.d fa0, fa0 + cvt.d.w fv0, fa0 + jr ra END(ceil) LEAF(lceilf) - ceil.w.s $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + ceil.w.s ft0, fa0 + mfc1 v0, ft0 + jr ra END(lceilf) LEAF(lceil) - ceil.w.d $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + ceil.w.d ft0, fa0 + mfc1 v0, ft0 + jr ra END(lceil) LEAF(truncf) - trunc.w.s $f12, $f12 - jr $ra - cvt.s.w $f0, $f12 + trunc.w.s fa0, fa0 + cvt.s.w fv0, fa0 + jr ra END(truncf) LEAF(trunc) - trunc.w.d $f12, $f12 - jr $ra - cvt.d.w $f0, $f12 + trunc.w.d fa0, fa0 + cvt.d.w fv0, fa0 + jr ra END(trunc) LEAF(ltruncf) - trunc.w.s $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + trunc.w.s ft0, fa0 + mfc1 v0, ft0 + jr ra END(ltruncf) LEAF(ltrunc) - trunc.w.d $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + trunc.w.d ft0, fa0 + mfc1 v0, ft0 + jr ra END(ltrunc) LEAF(nearbyintf) - round.w.s $f12, $f12 - jr $ra - cvt.s.w $f0, $f12 + round.w.s fa0, fa0 + cvt.s.w fv0, fa0 + jr ra END(nearbyintf) LEAF(nearbyint) - round.w.d $f12, $f12 - jr $ra - cvt.d.w $f0, $f12 + round.w.d fa0, fa0 + cvt.d.w fv0, fa0 + jr ra END(nearbyint) LEAF(lnearbyintf) - round.w.s $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + round.w.s ft0, fa0 + mfc1 v0, ft0 + jr ra END(lnearbyintf) LEAF(lnearbyint) - round.w.d $f4, $f12 - mfc1 $v0, $f4 - jr $ra - nop + round.w.d ft0, fa0 + mfc1 v0, ft0 + jr ra END(lnearbyint) LEAF(roundf) - li.s $f4, 0.5 - nop - add.s $f0, $f12, $f4 - floor.w.s $f0, $f0 - jr $ra - cvt.s.w $f0, $f0 + li.s ft0, 0.5 + add.s fv0, fa0, ft0 + floor.w.s fv0, fv0 + cvt.s.w fv0, fv0 + jr ra END(roundf) LEAF(round) - li.d $f4, 0.5 - nop - add.d $f0, $f12, $f4 - floor.w.d $f0, $f0 - jr $ra - cvt.d.w $f0, $f0 + li.d ft0, 0.5 + add.d fv0, fa0, ft0 + floor.w.d fv0, fv0 + cvt.d.w fv0, fv0 + jr ra END(round) LEAF(lroundf) - li.s $f4, 0.5 - nop - add.s $f0, $f12, $f4 - floor.w.s $f0, $f0 - mfc1 $v0, $f0 - jr $ra - nop + li.s ft0, 0.5 + add.s fv0, fa0, ft0 + floor.w.s fv0, fv0 + mfc1 v0, fv0 + jr ra END(lroundf) LEAF(lround) - li.d $f4, 0.5 - nop - add.d $f0, $f12, $f4 - floor.w.d $f0, $f0 - mfc1 $v0, $f0 - jr $ra - nop + li.d ft0, 0.5 + add.d fv0, fa0, ft0 + floor.w.d fv0, fv0 + mfc1 v0, fv0 + jr ra END(lround) diff --git a/src/libgcc/__cmpdi2.c b/src/libgcc/__cmpdi2.c new file mode 100644 index 0000000000..4c477f8263 --- /dev/null +++ b/src/libgcc/__cmpdi2.c @@ -0,0 +1,2 @@ +#define L_cmpdi2 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__divdi3.c b/src/libgcc/__divdi3.c new file mode 100644 index 0000000000..26cc049c2f --- /dev/null +++ b/src/libgcc/__divdi3.c @@ -0,0 +1,2 @@ +#define L_divdi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixdfdi.c b/src/libgcc/__fixdfdi.c new file mode 100644 index 0000000000..a0c73d0b8f --- /dev/null +++ b/src/libgcc/__fixdfdi.c @@ -0,0 +1,2 @@ +#define L_fixdfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixsfdi.c b/src/libgcc/__fixsfdi.c new file mode 100644 index 0000000000..4e6d6baf7b --- /dev/null +++ b/src/libgcc/__fixsfdi.c @@ -0,0 +1,2 @@ +#define L_fixsfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixunsdfdi.c b/src/libgcc/__fixunsdfdi.c new file mode 100644 index 0000000000..9940267102 --- /dev/null +++ b/src/libgcc/__fixunsdfdi.c @@ -0,0 +1,2 @@ +#define L_fixunsdfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixunssfdi.c b/src/libgcc/__fixunssfdi.c new file mode 100644 index 0000000000..34b123e48f --- /dev/null +++ b/src/libgcc/__fixunssfdi.c @@ -0,0 +1,2 @@ +#define L_fixunssfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__floatdidf.c b/src/libgcc/__floatdidf.c new file mode 100644 index 0000000000..996973fe0f --- /dev/null +++ b/src/libgcc/__floatdidf.c @@ -0,0 +1,2 @@ +#define L_floatdidf +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__floatdisf.c b/src/libgcc/__floatdisf.c new file mode 100644 index 0000000000..433988fa63 --- /dev/null +++ b/src/libgcc/__floatdisf.c @@ -0,0 +1,2 @@ +#define L_floatdisf +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__moddi3.c b/src/libgcc/__moddi3.c new file mode 100644 index 0000000000..f40a11ec73 --- /dev/null +++ b/src/libgcc/__moddi3.c @@ -0,0 +1,2 @@ +#define L_moddi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__udivdi3.c b/src/libgcc/__udivdi3.c new file mode 100644 index 0000000000..7c2e52eb78 --- /dev/null +++ b/src/libgcc/__udivdi3.c @@ -0,0 +1,2 @@ +#define L_udivdi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__umoddi3.c b/src/libgcc/__umoddi3.c new file mode 100644 index 0000000000..4cb7dec926 --- /dev/null +++ b/src/libgcc/__umoddi3.c @@ -0,0 +1,2 @@ +#define L_umoddi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/libgcc2.inc.c b/src/libgcc/libgcc2.inc.c new file mode 100644 index 0000000000..d8b89b75ef --- /dev/null +++ b/src/libgcc/libgcc2.inc.c @@ -0,0 +1,464 @@ +/* More subroutines needed by GCC output code on some machines. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1989, 92-97, 1998 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable + to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +/* Modified by ZeldaRET to keep only the parts that are relevant to the iQue build of OoT. */ + +#include "ultra64/ultratypes.h" + +typedef u8 UQItype; +typedef s32 SItype; +typedef u32 USItype; +typedef s64 DItype; +typedef u64 UDItype; + +typedef f32 SFtype; +typedef f64 DFtype; + +typedef s32 word_type; + +#define SI_TYPE_SIZE 32 + +#define DI_SIZE 64 +#define DF_SIZE 53 +#define SF_SIZE 24 + +#define WORD_SIZE 32 +#define HIGH_HALFWORD_COEFF (((UDItype)1) << (WORD_SIZE / 2)) +#define HIGH_WORD_COEFF (((UDItype)1) << WORD_SIZE) + +/* DIstructs are pairs of SItype values in big-endian order. */ + +struct DIstruct { + SItype high, low; +}; + +/* We need this union to unpack/pack DImode values, since we don't have + any arithmetic yet. Incoming DImode parameters are stored into the + `ll' field, and the unpacked result is read from the struct `s'. */ + +typedef union { + struct DIstruct s; + DItype ll; +} DIunion; + +extern DItype __fixunssfdi(SFtype original_a); +extern DItype __fixunsdfdi(DFtype a); + +#if defined(L_divdi3) || defined(L_moddi3) +static inline DItype __negdi2(DItype u) { + DIunion w; + DIunion uu; + + uu.ll = u; + + w.s.low = -uu.s.low; + w.s.high = -uu.s.high - ((USItype)w.s.low > 0); + + return w.ll; +} +#endif + +#if defined(L_udivdi3) || defined(L_divdi3) || defined(L_umoddi3) || defined(L_moddi3) +static const UQItype __clz_tab[] = { + 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, +}; + +#include "src/libgcc/longlong.h" + +static inline UDItype __udivmoddi4(UDItype n, UDItype d, UDItype* rp) { + DIunion ww; + DIunion nn, dd; + DIunion rr; + USItype d0, d1, n0, n1, n2; + USItype q0, q1; + USItype b, bm; + + nn.ll = n; + dd.ll = d; + + d0 = dd.s.low; + d1 = dd.s.high; + n0 = nn.s.low; + n1 = nn.s.high; + + if (d1 == 0) { + if (d0 > n1) { + /* 0q = nn / 0D */ + + count_leading_zeros(bm, d0); + + if (bm != 0) { + /* Normalize, i.e. make the most significant bit of the + denominator set. */ + + d0 = d0 << bm; + n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm)); + n0 = n0 << bm; + } + + udiv_qrnnd(q0, n0, n1, n0, d0); + q1 = 0; + + /* Remainder in n0 >> bm. */ + } else { + /* qq = NN / 0d */ + + if (d0 == 0) { + d0 = 1 / d0; /* Divide intentionally by zero. */ + } + + count_leading_zeros(bm, d0); + + if (bm == 0) { + /* From (n1 >= d0) /\ (the most significant bit of d0 is set), + conclude (the most significant bit of n1 is set) /\ (the + leading quotient digit q1 = 1). + + This special case is necessary, not an optimization. + (Shifts counts of SI_TYPE_SIZE are undefined.) */ + + n1 -= d0; + q1 = 1; + } else { + /* Normalize. */ + + b = SI_TYPE_SIZE - bm; + + d0 = d0 << bm; + n2 = n1 >> b; + n1 = (n1 << bm) | (n0 >> b); + n0 = n0 << bm; + + udiv_qrnnd(q1, n1, n2, n1, d0); + } + + /* n1 != d0... */ + + udiv_qrnnd(q0, n0, n1, n0, d0); + + /* Remainder in n0 >> bm. */ + } + + if (rp != 0) { + rr.s.low = n0 >> bm; + rr.s.high = 0; + *rp = rr.ll; + } + } else { + if (d1 > n1) { + /* 00 = nn / DD */ + + q0 = 0; + q1 = 0; + + /* Remainder in n1n0. */ + if (rp != 0) { + rr.s.low = n0; + rr.s.high = n1; + *rp = rr.ll; + } + } else { + /* 0q = NN / dd */ + + count_leading_zeros(bm, d1); + if (bm == 0) { + /* From (n1 >= d1) /\ (the most significant bit of d1 is set), + conclude (the most significant bit of n1 is set) /\ (the + quotient digit q0 = 0 or 1). + + This special case is necessary, not an optimization. */ + + /* The condition on the next line takes advantage of that + n1 >= d1 (true due to program flow). */ + if (n1 > d1 || n0 >= d0) { + q0 = 1; + sub_ddmmss(n1, n0, n1, n0, d1, d0); + } else { + q0 = 0; + } + + q1 = 0; + + if (rp != 0) { + rr.s.low = n0; + rr.s.high = n1; + *rp = rr.ll; + } + } else { + USItype m1, m0; + /* Normalize. */ + + b = SI_TYPE_SIZE - bm; + + d1 = (d1 << bm) | (d0 >> b); + d0 = d0 << bm; + n2 = n1 >> b; + n1 = (n1 << bm) | (n0 >> b); + n0 = n0 << bm; + + udiv_qrnnd(q0, n1, n2, n1, d1); + umul_ppmm(m1, m0, q0, d0); + + if (m1 > n1 || (m1 == n1 && m0 > n0)) { + q0--; + sub_ddmmss(m1, m0, m1, m0, d1, d0); + } + + q1 = 0; + + /* Remainder in (n1n0 - m1m0) >> bm. */ + if (rp != 0) { + sub_ddmmss(n1, n0, n1, n0, m1, m0); + rr.s.low = (n1 << b) | (n0 >> bm); + rr.s.high = n1 >> bm; + *rp = rr.ll; + } + } + } + } + + ww.s.low = q0; + ww.s.high = q1; + return ww.ll; +} +#endif + +#ifdef L_divdi3 +DItype __divdi3(DItype u, DItype v) { + word_type c = 0; + DIunion uu, vv; + DItype w; + + uu.ll = u; + vv.ll = v; + + if (uu.s.high < 0) { + c = ~c, uu.ll = __negdi2(uu.ll); + } + if (vv.s.high < 0) { + c = ~c, vv.ll = __negdi2(vv.ll); + } + + w = __udivmoddi4(uu.ll, vv.ll, (UDItype*)0); + if (c) { + w = __negdi2(w); + } + + return w; +} +#endif + +#ifdef L_moddi3 +DItype __moddi3(DItype u, DItype v) { + word_type c = 0; + DIunion uu, vv; + DItype w; + + uu.ll = u; + vv.ll = v; + + if (uu.s.high < 0) { + c = ~c, uu.ll = __negdi2(uu.ll); + } + if (vv.s.high < 0) { + vv.ll = __negdi2(vv.ll); + } + + (void)__udivmoddi4(uu.ll, vv.ll, (UDItype*)&w); + if (c) { + w = __negdi2(w); + } + + return w; +} +#endif + +#ifdef L_umoddi3 +UDItype __umoddi3(UDItype u, UDItype v) { + UDItype w; + + (void)__udivmoddi4(u, v, &w); + + return w; +} +#endif + +#ifdef L_udivdi3 +UDItype __udivdi3(UDItype n, UDItype d) { + return __udivmoddi4(n, d, (UDItype*)0); +} +#endif + +#ifdef L_cmpdi2 +word_type __cmpdi2(DItype a, DItype b) { + DIunion au, bu; + + au.ll = a, bu.ll = b; + + if (au.s.high < bu.s.high) { + return 0; + } else if (au.s.high > bu.s.high) { + return 2; + } + if ((USItype)au.s.low < (USItype)bu.s.low) { + return 0; + } else if ((USItype)au.s.low > (USItype)bu.s.low) { + return 2; + } + return 1; +} +#endif + +#ifdef L_fixunsdfdi +DItype __fixunsdfdi(DFtype a) { + DFtype b; + UDItype v; + + if (a < 0) { + return 0; + } + + /* Compute high word of result, as a flonum. */ + b = (a / HIGH_WORD_COEFF); + /* Convert that to fixed (but not to DItype!), + and shift it into the high word. */ + v = (USItype)b; + v <<= WORD_SIZE; + /* Remove high part from the DFtype, leaving the low part as flonum. */ + a -= (DFtype)v; + /* Convert that to fixed (but not to DItype!) and add it in. + Sometimes A comes out negative. This is significant, since + A has more bits than a long int does. */ + if (a < 0) { + v -= (USItype)(-a); + } else { + v += (USItype)a; + } + return v; +} +#endif + +#ifdef L_fixdfdi +DItype __fixdfdi(DFtype a) { + if (a < 0) { + return -__fixunsdfdi(-a); + } + return __fixunsdfdi(a); +} +#endif + +#ifdef L_fixunssfdi +DItype __fixunssfdi(SFtype original_a) { + /* Convert the SFtype to a DFtype, because that is surely not going + to lose any bits. Some day someone else can write a faster version + that avoids converting to DFtype, and verify it really works right. */ + DFtype a = original_a; + DFtype b; + UDItype v; + + if (a < 0) { + return 0; + } + + /* Compute high word of result, as a flonum. */ + b = (a / HIGH_WORD_COEFF); + /* Convert that to fixed (but not to DItype!), + and shift it into the high word. */ + v = (USItype)b; + v <<= WORD_SIZE; + /* Remove high part from the DFtype, leaving the low part as flonum. */ + a -= (DFtype)v; + /* Convert that to fixed (but not to DItype!) and add it in. + Sometimes A comes out negative. This is significant, since + A has more bits than a long int does. */ + if (a < 0) { + v -= (USItype)(-a); + } else { + v += (USItype)a; + } + return v; +} +#endif + +#ifdef L_fixsfdi +DItype __fixsfdi(SFtype a) { + if (a < 0) { + return -__fixunssfdi(-a); + } + return __fixunssfdi(a); +} +#endif + +#ifdef L_floatdidf +DFtype __floatdidf(DItype u) { + DFtype d; + + d = (SItype)(u >> WORD_SIZE); + d *= HIGH_HALFWORD_COEFF; + d *= HIGH_HALFWORD_COEFF; + d += (USItype)(u & (HIGH_WORD_COEFF - 1)); + + return d; +} +#endif + +#ifdef L_floatdisf +SFtype __floatdisf(DItype u) { + /* Do the calculation in DFmode + so that we don't lose any of the precision of the high word + while multiplying it. */ + DFtype f; + + /* Protect against double-rounding error. + Represent any low-order bits, that might be truncated in DFmode, + by a bit that won't be lost. The bit can go in anywhere below the + rounding position of the SFmode. A fixed mask and bit position + handles all usual configurations. It doesn't handle the case + of 128-bit DImode, however. */ + if (DF_SIZE < DI_SIZE && DF_SIZE > (DI_SIZE - DF_SIZE + SF_SIZE)) { +#define REP_BIT ((USItype)1 << (DI_SIZE - DF_SIZE)) + if (!(-((DItype)1 << DF_SIZE) < u && u < ((DItype)1 << DF_SIZE))) { + if ((USItype)u & (REP_BIT - 1)) { + u |= REP_BIT; + } + } + } + f = (SItype)(u >> WORD_SIZE); + f *= HIGH_HALFWORD_COEFF; + f *= HIGH_HALFWORD_COEFF; + f += (USItype)(u & (HIGH_WORD_COEFF - 1)); + + return (SFtype)f; +} +#endif diff --git a/src/libgcc/longlong.h b/src/libgcc/longlong.h new file mode 100644 index 0000000000..403a7f6fa9 --- /dev/null +++ b/src/libgcc/longlong.h @@ -0,0 +1,149 @@ +/* longlong.h -- definitions for mixed size 32/64 bit arithmetic. + Copyright (C) 1991, 92, 94, 95, 96, 1997 Free Software Foundation, Inc. + + This definition file is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2, or (at your option) any later version. + + This definition file is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* Modified by ZeldaRET to keep only the parts that are relevant to the iQue build of OoT. */ + +#define __BITS4 (SI_TYPE_SIZE / 4) +#define __ll_B (1L << (SI_TYPE_SIZE / 2)) +#define __ll_lowpart(t) ((USItype)(t) % __ll_B) +#define __ll_highpart(t) ((USItype)(t) / __ll_B) + +/* Define auxiliary asm macros. + + 1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) + multiplies two USItype integers MULTIPLER and MULTIPLICAND, + and generates a two-part USItype product in HIGH_PROD and + LOW_PROD. + + 2) __umulsidi3(a,b) multiplies two USItype integers A and B, + and returns a UDItype product. This is just a variant of umul_ppmm. + + 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, + denominator) divides a two-word unsigned integer, composed by the + integers HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and + places the quotient in QUOTIENT and the remainder in REMAINDER. + HIGH_NUMERATOR must be less than DENOMINATOR for correct operation. + If, in addition, the most significant bit of DENOMINATOR must be 1, + then the pre-processor symbol UDIV_NEEDS_NORMALIZATION is defined to 1. + + 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator, + denominator). Like udiv_qrnnd but the numbers are signed. The + quotient is rounded towards 0. + + 5) count_leading_zeros(count, x) counts the number of zero-bits from + the msb to the first non-zero bit. This is the number of steps X + needs to be shifted left to set the msb. Undefined for X == 0. + + 6) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, + high_addend_2, low_addend_2) adds two two-word unsigned integers, + composed by HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and + LOW_ADDEND_2 respectively. The result is placed in HIGH_SUM and + LOW_SUM. Overflow (i.e. carry out) is not stored anywhere, and is + lost. + + 7) sub_ddmmss(high_difference, low_difference, high_minuend, + low_minuend, high_subtrahend, low_subtrahend) subtracts two + two-word unsigned integers, composed by HIGH_MINUEND_1 and + LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and LOW_SUBTRAHEND_2 + respectively. The result is placed in HIGH_DIFFERENCE and + LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere, + and is lost. + + If any of these macros are left undefined for a particular CPU, + C macros are used. */ + +#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ + do { \ + USItype __x; \ + __x = (al) + (bl); \ + (sh) = (ah) + (bh) + (__x < (al)); \ + (sl) = __x; \ + } while (0) + +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + do { \ + USItype __x; \ + __x = (al) - (bl); \ + (sh) = (ah) - (bh) - (__x > (al)); \ + (sl) = __x; \ + } while (0) + +#if __GNUC__ < 3 +#define umul_ppmm(w1, w0, u, v) \ + __asm__("multu %2,%3" : "=l"((USItype)(w0)), "=h"((USItype)(w1)) : "d"((USItype)(u)), "d"((USItype)(v))) +#else +#define umul_ppmm(w1, w0, u, v) \ + __asm__("multu %2,%3\n\t" \ + "mflo %0\n\t" \ + "mfhi %1" \ + : "=d"(w0), "=d"(w1) \ + : "d"((USItype)(u)), "d"((USItype)(v))) +#endif + +#define udiv_qrnnd(q, r, n1, n0, d) \ + do { \ + USItype __d1, __d0, __q1, __q0; \ + USItype __r1, __r0, __m; \ + __d1 = __ll_highpart(d); \ + __d0 = __ll_lowpart(d); \ + \ + __r1 = (n1) % __d1; \ + __q1 = (n1) / __d1; \ + __m = (USItype)__q1 * __d0; \ + __r1 = __r1 * __ll_B | __ll_highpart(n0); \ + if (__r1 < __m) { \ + __q1--, __r1 += (d); \ + if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */ \ + if (__r1 < __m) \ + __q1--, __r1 += (d); \ + } \ + __r1 -= __m; \ + \ + __r0 = __r1 % __d1; \ + __q0 = __r1 / __d1; \ + __m = (USItype)__q0 * __d0; \ + __r0 = __r0 * __ll_B | __ll_lowpart(n0); \ + if (__r0 < __m) { \ + __q0--, __r0 += (d); \ + if (__r0 >= (d)) \ + if (__r0 < __m) \ + __q0--, __r0 += (d); \ + } \ + __r0 -= __m; \ + \ + (q) = (USItype)__q1 * __ll_B | __q0; \ + (r) = __r0; \ + } while (0) + +#define count_leading_zeros(count, x) \ + do { \ + USItype __xr = (x); \ + USItype __a; \ + \ + if (SI_TYPE_SIZE <= 32) { \ + __a = __xr < ((USItype)1 << 2 * __BITS4) \ + ? (__xr < ((USItype)1 << __BITS4) ? 0 : __BITS4) \ + : (__xr < ((USItype)1 << 3 * __BITS4) ? 2 * __BITS4 : 3 * __BITS4); \ + } else { \ + for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \ + if (((__xr >> __a) & 0xff) != 0) \ + break; \ + } \ + \ + (count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \ + } while (0) diff --git a/src/libleo/api/getaadr.s b/src/libleo/api/getaadr.s index a36d27a5b3..95c1cfb14d 100644 --- a/src/libleo/api/getaadr.s +++ b/src/libleo/api/getaadr.s @@ -1,42 +1,33 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(LeoGetAAdr) - bltz $a0, .out_of_range - slti $at, $a0, 0x908 - beqz $at, .out_of_range - nop - lui $v1, %hi(asc2tbl) - sll $t0, $a0, 2 - addiu $v1, %lo(asc2tbl) - add $t1, $t0, $v1 - lbu $t8, 2($t1) - lhu $t9, 0($t1) - li $at, 0x70000 - andi $t2, $t8, 0xF - addi $t3, $t2, 1 - sw $t3, ($a2) - lb $t0, 3($t1) - srl $t4, $t8, 4 - ori $at, $at, 0xEE80 - andi $t5, $t0, 1 - sll $t6, $t5, 4 - or $t7, $t6, $t4 - sw $t7, ($a1) - sll $v0, $t9, 1 - sra $v1, $t0, 1 - sw $v1, ($a3) - jr $ra - add $v0, $v0, $at + bltz a0, .out_of_range + bge a0, 0x908, .out_of_range + sll t0, a0, 2 + la v1, asc2tbl + add t1, t0, v1 + lbu t8, 2(t1) + lhu t9, 0(t1) + andi t2, t8, 0xF + addi t3, t2, 1 + sw t3, (a2) + lb t0, 3(t1) + srl t4, t8, 4 + andi t5, t0, 1 + sll t6, t5, 4 + or t7, t6, t4 + sw t7, (a1) + sll v0, t9, 1 + sra v1, t0, 1 + sw v1, (a3) + add v0, v0, 0x7EE80 + jr ra .out_of_range: - jr $ra - li $v0, -1 + li v0, -1 + jr ra END(LeoGetAAdr) DATA(asc2tbl) diff --git a/src/libleo/api/getaadr2.s b/src/libleo/api/getaadr2.s index e3ea0868bb..cac52cd90b 100644 --- a/src/libleo/api/getaadr2.s +++ b/src/libleo/api/getaadr2.s @@ -1,33 +1,25 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(LeoGetAAdr2) - li $at, 0x10000 - srl $t8, $a0, 0xF - ori $at, $at, 0xFFFE - and $v1, $t8, $at - li $at, 0x70000 - ori $at, $at, 0xEE80 - srl $t2, $a0, 0x8 - add $v0, $v1, $at - andi $t3, $t2, 0xF - andi $t5, $a0, 0xFE - addi $t4, $t3, 1 - sll $t6, $t5, 0x18 - andi $t9, $a0, 0x1 - srl $v1, $a0, 0xC - sw $t4, ($a2) - sra $t7, $t6, 0x19 - sll $t8, $t9, 0x4 - andi $t1, $v1, 0xF - sw $t7, ($a3) - or $t2, $t1, $t8 - jr $ra - sw $t2, ($a1) + srl t8, a0, 15 + and v1, t8, 0x1FFFE + add v0, v1, 0x7EE80 + srl t2, a0, 8 + andi t3, t2, 0xF + andi t5, a0, 0xFE + addi t4, t3, 1 + sll t6, t5, 24 + andi t9, a0, 1 + srl v1, a0, 12 + sw t4, (a2) + sra t7, t6, 25 + sll t8, t9, 4 + andi t1, v1, 0xF + sw t7, (a3) + or t2, t1, t8 + sw t2, (a1) + jr ra END(LeoGetAAdr2) diff --git a/src/libleo/api/getkadr.s b/src/libleo/api/getkadr.s index 22d85cb593..d71719525a 100644 --- a/src/libleo/api/getkadr.s +++ b/src/libleo/api/getkadr.s @@ -1,11 +1,7 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * int LeoGetKAdr(int sjis); @@ -22,74 +18,61 @@ * @return int Storage offset address into the N64 Disk Drive mask ROM. */ LEAF(LeoGetKAdr) - // Check if the codepoint is in the range 0x8140 to 0x9872. - li $at, 0x8140 - slt $at, $a0, $at - bnez $at, .out_of_range - li $at, 0x9873 - slt $at, $a0, $at - beqz $at, .out_of_range - // Characters with codepoints >= 0x8800 are kanji. Arrangement is regular, - // so convert index directly. - li $at, 0x8800 - slt $at, $a0, $at - bnez $at, .nonkanji - // 0xBC is number of glyphs in one block in the `kanji` file: - // 0x100 possible codepoints with the same byte1 - // - 0x40 unused at beginning - // - 1 unused at 0x7F - // - 3 unused at 0xFD, 0xFE, 0xFF - li $a2, 0xBC - // Get byte1 and adjust so starts at 0 - srl $a1, $a0, 8 - addi $a1, $a1, -0x88 - multu $a2, $a1 - // Get byte2 and adjust so starts at 0 - andi $a3, $a0, 0xFF - addi $a3, $a3, -0x40 - slti $at, $a3, (0x80 - 0x40) - mflo $a2 - // 0x__7F is always empty and elided in the file, so decrement if larger - bnezl $at, .kanji_lower_halfblock - mflo $a2 - addi $a3, $a3, -1 - mflo $a2 + /* Check if the codepoint is in the range 0x8140 to 0x9872. */ + blt a0, 0x8140, .out_of_range + bge a0, 0x9873, .out_of_range + /* Characters with codepoints >= 0x8800 are kanji. Arrangement is regular, + * so convert index directly. */ + li a2, 0xBC + blt a0, 0x8800, .nonkanji + /* 0xBC is number of glyphs in one block in the `kanji` file: + * 0x100 possible codepoints with the same byte1 + * - 0x40 unused at beginning + * - 1 unused at 0x7F + * - 3 unused at 0xFD, 0xFE, 0xFF */ + /* Get byte1 and adjust so starts at 0 */ + srl a1, a0, 8 + addi a1, a1, -0x88 + mul a2, a2, a1 + /* Get byte2 and adjust so starts at 0 */ + andi a3, a0, 0xFF + addi a3, a3, -0x40 + /* 0x__7F is always empty and elided in the file, so decrement if larger */ + blt a3, 0x40, .kanji_lower_halfblock + addi a3, a3, -1 .kanji_lower_halfblock: - addi $a3, $a3, 0x30A - add $a3, $a3, $a2 - jr $ra - sll $v0, $a3, 7 - // returns (0x30A + (adjusted byte2) + (adjusted byte1) * 0xBC) * FONT_CHAR_TEX_SIZE + mflo a2 + addi a3, a3, 0x30A + add a3, a3, a2 + sll v0, a3, 7 + jr ra + /* returns (0x30A + (adjusted byte2) + (adjusted byte1) * 0xBC) * FONT_CHAR_TEX_SIZE */ -// Non-kanji are arranged with irregular gaps, use the lookup table. +/* Non-kanji are arranged with irregular gaps, use the lookup table. */ .nonkanji: - // Get byte1 and adjust so starts at 0 - srl $a1, $a0, 8 - addi $a1, $a1, -0x81 - multu $a2, $a1 - // Get byte2 and adjust so starts at 0 - andi $a3, $a0, 0xFF - addi $a3, $a3, -0x40 - slti $at, $a3, (0x80 - 0x40) - mflo $a2 - // 0x__7F is always empty and elided in the file, so decrement if larger - bnezl $at, .nonkanji_lower_halfblock - mflo $a2 - addi $a3, $a3, -1 - mflo $a2 + /* Get byte1 and adjust so starts at 0 */ + srl a1, a0, 8 + addi a1, a1, -0x81 + mul a2, a2, a1 + /* Get byte2 and adjust so starts at 0 */ + andi a3, a0, 0xFF + addi a3, a3, -0x40 + /* 0x__7F is always empty and elided in the file, so decrement if larger */ + blt a3, 0x40, .nonkanji_lower_halfblock + addi a3, a3, -1 .nonkanji_lower_halfblock: - add $a3, $a3, $a2 - lui $a2, %hi(kantbl) - sll $a3, $a3, 1 - addiu $a2, %lo(kantbl) - add $a3, $a3, $a2 - lh $a2, ($a3) - jr $ra - sll $v0, $a2, 7 - // returns kantbl[(adjusted byte2) + (adjusted byte1) * 0xBC] * FONT_CHAR_TEX_SIZE + mflo a2 + add a3, a3, a2 + sll a3, a3, 1 + la a2, kantbl + add a3, a3, a2 + lh a2, (a3) + sll v0, a2, 7 + jr ra + /* returns kantbl[(adjusted byte2) + (adjusted byte1) * 0xBC] * FONT_CHAR_TEX_SIZE */ .out_of_range: - jr $ra - li $v0, -1 + li v0, -1 + jr ra END(LeoGetKAdr) /** @@ -129,7 +112,7 @@ END(LeoGetKAdr) * into blocks by high byte. */ DATA(kantbl) -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x814_ */ .half 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F /* 0x815_ */ .half 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F /* 0x816_ */ .half 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F @@ -143,7 +126,7 @@ DATA(kantbl) /* 0x81E_ */ .half 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x81F_ */ .half 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0000, 0x0000, 0x0000, 0x0000, 0x0091 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x824_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0092 /* 0x825_ */ .half 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x826_ */ .half 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB @@ -157,7 +140,7 @@ DATA(kantbl) /* 0x82E_ */ .half 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011A, 0x011B, 0x011C, 0x011D, 0x011E, 0x011F, 0x0120 /* 0x82F_ */ .half 0x0121, 0x0122, 0x0123, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x834_ */ .half 0x0124, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129, 0x012A, 0x012B, 0x012C, 0x012D, 0x012E, 0x012F, 0x0130, 0x0131, 0x0132, 0x0133 /* 0x835_ */ .half 0x0134, 0x0135, 0x0136, 0x0137, 0x0138, 0x0139, 0x013A, 0x013B, 0x013C, 0x013D, 0x013E, 0x013F, 0x0140, 0x0141, 0x0142, 0x0143 /* 0x836_ */ .half 0x0144, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149, 0x014A, 0x014B, 0x014C, 0x014D, 0x014E, 0x014F, 0x0150, 0x0151, 0x0152, 0x0153 @@ -171,7 +154,7 @@ DATA(kantbl) /* 0x83E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x83F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x844_ */ .half 0x01AB, 0x01AC, 0x01AD, 0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2, 0x01B3, 0x01B4, 0x01B5, 0x01B6, 0x01B7, 0x01B8, 0x01B9, 0x01BA /* 0x845_ */ .half 0x01BB, 0x01BC, 0x01BD, 0x01BE, 0x01BF, 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9, 0x01CA /* 0x846_ */ .half 0x01CB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 @@ -185,7 +168,7 @@ DATA(kantbl) /* 0x84E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x84F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x854_ */ .half 0x020E, 0x020F, 0x0210, 0x0211, 0x0212, 0x0213, 0x0214, 0x0215, 0x0216, 0x0217, 0x0218, 0x0219, 0x021A, 0x021B, 0x021C, 0x021D /* 0x855_ */ .half 0x021E, 0x021F, 0x0220, 0x0221, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0222, 0x0223 /* 0x856_ */ .half 0x0224, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229, 0x022A, 0x022B, 0x022C, 0x022D, 0x022E, 0x022F, 0x0230, 0x0231, 0x0232, 0x0233 @@ -199,7 +182,7 @@ DATA(kantbl) /* 0x85E_ */ .half 0x026C, 0x026D, 0x026E, 0x026F, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, 0x0278, 0x0279, 0x027A, 0x027B /* 0x85F_ */ .half 0x027C, 0x027D, 0x027E, 0x027F, 0x0280, 0x0281, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x864_ */ .half 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x028A, 0x028B, 0x028C, 0x028D, 0x028E, 0x028F, 0x0290, 0x0291 /* 0x865_ */ .half 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x0000, 0x0000 /* 0x866_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 @@ -213,7 +196,7 @@ DATA(kantbl) /* 0x86E_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x86F_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -// 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F +/* 0x___0 0x___1 0x___2 0x___3 0x___4 0x___5 0x___6 0x___7 0x___8 0x___9 0x___A 0x___B 0x___C 0x___D 0x___E 0x___F */ /* 0x874_ */ .half 0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7, 0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF /* 0x875_ */ .half 0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7, 0x02D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 /* 0x876_ */ .half 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 diff --git a/src/libu64/stackcheck.c b/src/libu64/stackcheck.c index a8b32ffcee..787eb1c3e5 100644 --- a/src/libu64/stackcheck.c +++ b/src/libu64/stackcheck.c @@ -158,12 +158,12 @@ u32 StackCheck_GetState(StackEntry* entry) { if (free == 0) { ret = STACK_STATUS_OVERFLOW; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); } else if (free < (u32)entry->minSpace && entry->minSpace != -1) { ret = STACK_STATUS_WARNING; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); } else { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); ret = STACK_STATUS_OK; } @@ -174,7 +174,7 @@ u32 StackCheck_GetState(StackEntry* entry) { PRINTF("head=%08x tail=%08x last=%08x used=%08x free=%08x [%s]\n", entry->head, entry->tail, last, used, free, entry->name != NULL ? entry->name : "(null)"); - PRINTF(VT_RST); + PRINTF_RST(); #if DEBUG_FEATURES if (ret != STACK_STATUS_OK) { diff --git a/src/libu64/system_heap.c b/src/libu64/system_heap.c index 94926d838e..1ae93e868c 100644 --- a/src/libu64/system_heap.c +++ b/src/libu64/system_heap.c @@ -20,13 +20,6 @@ char sNew[] = "new"; char sNew[] = ""; #endif -#if !PLATFORM_N64 -char D_80134488[0x18] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -#endif - // possibly some kind of new() function void* func_800FC800(u32 size) { DECLARE_INTERRUPT_MASK diff --git a/src/libultra/audio/auxbus.c b/src/libultra/audio/auxbus.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/auxbus.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/copy.c b/src/libultra/audio/copy.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/copy.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/drvrnew.c b/src/libultra/audio/drvrnew.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/drvrnew.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/env.c b/src/libultra/audio/env.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/env.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/filter.c b/src/libultra/audio/filter.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/filter.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/heapalloc.c b/src/libultra/audio/heapalloc.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/heapalloc.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/load.c b/src/libultra/audio/load.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/load.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/mainbus.c b/src/libultra/audio/mainbus.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/mainbus.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/resample.c b/src/libultra/audio/resample.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/resample.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/reverb.c b/src/libultra/audio/reverb.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/reverb.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/save.c b/src/libultra/audio/save.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/save.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/sl.c b/src/libultra/audio/sl.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/sl.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/synallocfx.c b/src/libultra/audio/synallocfx.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/synallocfx.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/syndelete.c b/src/libultra/audio/syndelete.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/syndelete.c @@ -0,0 +1 @@ + diff --git a/src/libultra/audio/synthesizer.c b/src/libultra/audio/synthesizer.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/audio/synthesizer.c @@ -0,0 +1 @@ + diff --git a/src/libultra/bb/sa/common.c b/src/libultra/bb/sa/common.c new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/libultra/bb/sa/common.c @@ -0,0 +1 @@ + diff --git a/src/libultra/bb/sk/skapi.s b/src/libultra/bb/sk/skapi.s new file mode 100644 index 0000000000..3e80adfcd1 --- /dev/null +++ b/src/libultra/bb/sk/skapi.s @@ -0,0 +1,48 @@ +#ifdef BBPLAYER +#include "ultra64/asm.h" +#include "ultra64/regdef.h" +#include "ultra64/bcp.h" + +.text + +#define SKC(name, num) \ + LEAF(name) ;\ + .set noreorder ;\ + /* Load syscall number into v0 */ ;\ + li v0, num ;\ + /* Read from MI_SECURE_EXCEPTION_REG to */ ;\ + /* transfer control to the Secure Kernel */ ;\ + li t0, PHYS_TO_K1(MI_SECURE_EXCEPTION_REG) ;\ + lw t1, (t0) ;\ + nop ;\ + jr ra ;\ + nop ;\ + .set reorder ;\ + END(name) + +SKC(skGetId, 0) +SKC(skLaunchSetup, 1) +SKC(skLaunch, 2) +SKC(skRecryptListValid, 3) +SKC(skRecryptBegin, 4) +SKC(skRecryptData, 5) +SKC(skRecryptComputeState, 6) +SKC(skRecryptEnd, 7) +SKC(skSignHash, 8) +SKC(skVerifyHash, 9) +SKC(skGetConsumption, 10) +SKC(skAdvanceTicketWindow, 11) +SKC(skSetLimit, 12) +SKC(skExit, 13) +SKC(skKeepAlive, 14) + +/* These are not valid for a retail Secure Kernel, their usage pattern is unknown. */ + +SKC(skGetRandomKeyData, 15) +SKC(skDumpVirage, 16) +SKC(skTest2, 17) +SKC(skTest3, 18) +SKC(skResetWindow, 19) +SKC(skValidateRls, 20) + +#endif diff --git a/src/libultra/gu/libm_vals.s b/src/libultra/gu/libm_vals.s index 18de1ae4f2..91f2cadb37 100644 --- a/src/libultra/gu/libm_vals.s +++ b/src/libultra/gu/libm_vals.s @@ -1,8 +1,6 @@ #include "ultra64/asm.h" -.section .rodata - -.balign 16 +.rdata DATA(__libm_qnan_f) .word 0x7F810000 diff --git a/src/libultra/gu/rotate.c b/src/libultra/gu/rotate.c index 7d495e98ef..dc50aba3c5 100644 --- a/src/libultra/gu/rotate.c +++ b/src/libultra/gu/rotate.c @@ -1,7 +1,7 @@ #include "global.h" void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { - static f32 D_80134D10 = M_PI / 180.0f; + static f32 dtor = M_PI / 180.0f; f32 sine; f32 cosine; f32 ab; @@ -16,14 +16,15 @@ void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { guNormalize(&x, &y, &z); - a *= D_80134D10; + a *= dtor; sine = sinf(a); cosine = cosf(a); - ab = x * y * (1 - cosine); - bc = y * z * (1 - cosine); - ca = z * x * (1 - cosine); + t = 1.0f - cosine; + ab = x * y * t; + bc = y * z * t; + ca = z * x * t; guMtxIdentF(m); @@ -38,15 +39,15 @@ void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { #endif t = x * x; - m[0][0] = (1 - t) * cosine + t; + m[0][0] = t + cosine * (1.0f - t); m[2][1] = bc - xs; m[1][2] = bc + xs; t = y * y; - m[1][1] = (1 - t) * cosine + t; + m[1][1] = t + cosine * (1.0f - t); m[2][0] = ca + ys; m[0][2] = ca - ys; t = z * z; - m[2][2] = (1 - t) * cosine + t; + m[2][2] = t + cosine * (1.0f - t); m[1][0] = ab - zs; m[0][1] = ab + zs; } diff --git a/src/libultra/gu/sqrtf.c b/src/libultra/gu/sqrtf.c deleted file mode 100644 index 5e5fa233cc..0000000000 --- a/src/libultra/gu/sqrtf.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "global.h" - -#ifndef __GNUC__ -#define __builtin_sqrtf sqrtf -#endif - -f32 sqrtf(f32 f) { - return __builtin_sqrtf(f); -} diff --git a/src/libultra/gu/sqrtf.s b/src/libultra/gu/sqrtf.s new file mode 100644 index 0000000000..aaf5023593 --- /dev/null +++ b/src/libultra/gu/sqrtf.s @@ -0,0 +1,9 @@ +#include "ultra64/asm.h" +#include "ultra64/regdef.h" + +.text + +LEAF(sqrtf) + sqrt.s fv0, fa0 + j ra +END(sqrtf) diff --git a/src/libultra/gu/us2dex.c b/src/libultra/gu/us2dex.c index d2e5a2b043..b8708c086c 100644 --- a/src/libultra/gu/us2dex.c +++ b/src/libultra/gu/us2dex.c @@ -1,25 +1,25 @@ #include "global.h" void guS2DInitBg(uObjBg* bg) { - u32 size; - s32 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200; - u16 shift = (6 - bg->b.imageSiz); + u16 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200; + u16 shift = 6 - bg->b.imageSiz; + u32 tsize; if (bg->b.imageLoad == G_BGLT_LOADBLOCK) { bg->b.tmemW = bg->b.imageW >> shift; - bg->b.tmemH = (tmem / bg->b.tmemW) * 4; - bg->b.tmemSizeW = bg->b.tmemW * 2; + bg->b.tmemH = (tmem / bg->b.tmemW) << 2; + bg->b.tmemSizeW = bg->b.tmemW << 1; bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1; - bg->b.tmemLoadTH = (0x7FF / bg->b.tmemW) + 1; + bg->b.tmemLoadTH = GS_CALC_DXT(bg->b.tmemW); } else { // G_BGLT_LOADTILE bg->b.tmemW = (bg->b.frameW >> shift) + 3; - bg->b.tmemH = (tmem / bg->b.tmemW) * 4; - bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; + bg->b.tmemH = (tmem / bg->b.tmemW) << 2; + bg->b.tmemSizeW = (bg->b.imageW >> shift) << 1; - size = bg->b.tmemH * bg->b.tmemSizeW; - bg->b.tmemSize = (size >> 16); - bg->b.tmemLoadSH = (size >> 0) & 0xFFFF; + tsize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemSize = tsize >> 16; + bg->b.tmemLoadSH = tsize & 0xFFFF; bg->b.tmemLoadTH = bg->b.tmemH - 1; } } diff --git a/src/libultra/io/contquery.c b/src/libultra/io/contquery.c index 660e2dcd42..9a8370af31 100644 --- a/src/libultra/io/contquery.c +++ b/src/libultra/io/contquery.c @@ -15,7 +15,11 @@ s32 osContStartQuery(OSMesgQueue* mq) { osRecvMesg(mq, NULL, OS_MESG_BLOCK); } ret = __osSiRawStartDma(OS_READ, &__osContPifRam); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_REQUEST_STATUS; +#endif __osSiRelAccess(); return ret; } diff --git a/src/libultra/io/contramread.c b/src/libultra/io/contramread.c index 058f58e80f..01e0703da6 100644 --- a/src/libultra/io/contramread.c +++ b/src/libultra/io/contramread.c @@ -2,9 +2,12 @@ #define BLOCKSIZE 32 +#ifndef BBPLAYER s32 __osPfsLastChannel = -1; +#endif s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* data) { +#ifndef BBPLAYER s32 ret; s32 i; u8* ptr; @@ -60,4 +63,26 @@ s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* data) { __osSiRelAccess(); return ret; +#else + s32 ret; + + __osSiGetAccess(); + + ret = 0; + if (__osBbPakAddress[channel] != 0) { + if (__osBbPakSize - 0x20 >= addr * 0x20) { + s32 i; + + for (i = 0; i < 0x20; i++) { + data[i] = *(u8*)(__osBbPakAddress[channel] + addr * 0x20 + i); + } + } + } else { + ret = PFS_ERR_NOPACK; + } + + __osSiRelAccess(); + + return ret; +#endif } diff --git a/src/libultra/io/contramwrite.c b/src/libultra/io/contramwrite.c index 6a776a13b8..4bd8ffaa30 100644 --- a/src/libultra/io/contramwrite.c +++ b/src/libultra/io/contramwrite.c @@ -2,6 +2,7 @@ #include "global.h" s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force) { +#ifndef BBPLAYER s32 ret = 0; s32 i; u8* ptr; @@ -65,4 +66,28 @@ s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 __osSiRelAccess(); return ret; +#else + s32 ret = 0; + + if ((force != true) && (address < PFS_LABEL_AREA) && (address != 0)) { + return 0; + } + + __osSiGetAccess(); + + if (__osBbPakAddress[channel] != 0) { + if (__osBbPakSize - 0x20 >= address * 0x20) { + s32 i; + + for (i = 0; i < 0x20; i++) { + *(u8*)(__osBbPakAddress[channel] + address * 0x20 + i) = buffer[i]; + } + } + } else { + ret = 1; + } + + __osSiRelAccess(); + return ret; +#endif } diff --git a/src/libultra/io/contreaddata.c b/src/libultra/io/contreaddata.c index ff44bc15b8..f1f250e965 100644 --- a/src/libultra/io/contreaddata.c +++ b/src/libultra/io/contreaddata.c @@ -10,7 +10,11 @@ s32 osContStartReadData(OSMesgQueue* mq) { osRecvMesg(mq, NULL, OS_MESG_BLOCK); } ret = __osSiRawStartDma(OS_READ, &__osContPifRam); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_READ_BUTTON; +#endif __osSiRelAccess(); return ret; } @@ -29,7 +33,18 @@ void osContGetReadData(OSContPad* contData) { contData->stick_x = read.joyX; contData->stick_y = read.joyY; } - }; + } + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContPad tmp; + contData -= __osMaxControllers; + + tmp = contData[0]; + contData[0] = contData[__osBbHackFlags]; + contData[__osBbHackFlags] = tmp; + } +#endif } void __osPackReadData(void) { diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 290f1b5854..c6c8d83ca3 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -41,7 +41,11 @@ s32 osContInit(OSMesgQueue* mq, u8* ctlBitfield, OSContStatus* status) { osRecvMesg(mq, &msg, OS_MESG_BLOCK); __osContGetInitData(ctlBitfield, status); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_REQUEST_STATUS; +#endif __osSiCreateAccessQueue(); osCreateMesgQueue(&__osEepromTimerMsgQueue, &__osEepromTimerMsg, 1); @@ -52,7 +56,7 @@ void __osContGetInitData(u8* ctlBitfield, OSContStatus* data) { u8* ptr; __OSContRequesFormat req; s32 i; - u8 bitfieldTemp = 0; + u8 bits = 0; ptr = (u8*)&__osContPifRam; @@ -63,10 +67,30 @@ void __osContGetInitData(u8* ctlBitfield, OSContStatus* data) { continue; } data->type = req.typel << 8 | req.typeh; +#ifdef BBPLAYER + data->status = __osBbPakAddress[i] != 0; +#else data->status = req.status; - bitfieldTemp |= 1 << i; +#endif + bits |= 1 << i; } - *ctlBitfield = bitfieldTemp; + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContStatus tmp; + + bits = (bits & ~((1 << __osBbHackFlags) | 1)) | ((bits & 1) << __osBbHackFlags) | + ((bits & (1 << __osBbHackFlags)) >> __osBbHackFlags); + + data -= __osMaxControllers; + + tmp = data[0]; + data[0] = data[__osBbHackFlags]; + data[__osBbHackFlags] = tmp; + } +#endif + + *ctlBitfield = bits; } void __osPackRequestData(u8 poll) { diff --git a/src/libultra/io/devmgr.c b/src/libultra/io/devmgr.c index d0e7d5289a..05dcb99519 100644 --- a/src/libultra/io/devmgr.c +++ b/src/libultra/io/devmgr.c @@ -2,6 +2,8 @@ #include "ultra64/internal.h" #include "ultra64/leodrive.h" +#define TEMP_BUFFER ((void*)0x80600000) + // os.h #define LEO_BLOCK_MODE 1 #define LEO_TRACK_MODE 2 @@ -14,6 +16,9 @@ void __osDevMgrMain(void* arg) { s32 ret; OSDevMgr* dm = (OSDevMgr*)arg; s32 messageSend; +#ifdef BBPLAYER + s32 check = false; +#endif while (true) { osRecvMesg(dm->cmdQueue, (OSMesg*)&ioMesg, OS_MESG_BLOCK); @@ -78,6 +83,13 @@ void __osDevMgrMain(void* arg) { switch (ioMesg->hdr.type) { case OS_MESG_TYPE_DMAREAD: osRecvMesg(dm->acsQueue, &dummy, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && ((u32)ioMesg->dramAddr & 0x7F) >= 0x60) { + check = true; + ret = dm->dma(OS_READ, ioMesg->devAddr, TEMP_BUFFER, ioMesg->size); + break; + } +#endif ret = dm->dma(OS_READ, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); break; case OS_MESG_TYPE_DMAWRITE: @@ -86,6 +98,13 @@ void __osDevMgrMain(void* arg) { break; case OS_MESG_TYPE_EDMAREAD: osRecvMesg(dm->acsQueue, &dummy, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && ((u32)ioMesg->dramAddr & 0x7F) >= 0x60) { + check = true; + ret = dm->edma(ioMesg->piHandle, OS_READ, ioMesg->devAddr, TEMP_BUFFER, ioMesg->size); + break; + } +#endif ret = dm->edma(ioMesg->piHandle, OS_READ, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); break; case OS_MESG_TYPE_EDMAWRITE: @@ -103,6 +122,14 @@ void __osDevMgrMain(void* arg) { if (ret == 0) { osRecvMesg(dm->evtQueue, &em, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && check) { + osInvalDCache(TEMP_BUFFER, (ioMesg->size + DCACHE_LINEMASK) & ~DCACHE_LINEMASK); + bcopy(TEMP_BUFFER, ioMesg->dramAddr, ioMesg->size); + check = false; + osWritebackDCache(ioMesg->dramAddr, ioMesg->size); + } +#endif osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); osSendMesg(dm->acsQueue, NULL, OS_MESG_NOBLOCK); } diff --git a/src/libultra/io/epirawdma.c b/src/libultra/io/epirawdma.c index ff6bb9a653..dbc072fbb2 100644 --- a/src/libultra/io/epirawdma.c +++ b/src/libultra/io/epirawdma.c @@ -1,8 +1,18 @@ #include "global.h" +#include "ultra64/bcp.h" s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size) { - s32 status; +#ifdef BBPLAYER + u64 dummybuf[2]; +#endif + u32 status; OSPiHandle* curHandle; +#ifdef BBPLAYER + u32 buffer; + u32 pgsize; + u16* adr; + u32 i; +#endif status = IO_READ(PI_STATUS_REG); while (status & (PI_STATUS_DMA_BUSY | PI_STATUS_IO_BUSY)) { @@ -53,9 +63,102 @@ s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dr curHandle->pulse = handle->pulse; } +#ifdef BBPLAYER + if (direction == OS_READ) { + // Device page size in bytes + pgsize = 1; + for (i = 1; i <= (u32)handle->pageSize + 2; i++) { + pgsize *= 2; + } + + // If the initial cart address mod pgsize is at the last u16 in the page, + // need to do some manual DMAs? + if ((cartAddr & (pgsize - 1)) == pgsize - sizeof(u16)) { + // Read 32 bits starting 2 bytes before the target DMA address, + // so that the lower 16 bits of the result are the first 2 bytes + // of the requested data. + __osEPiRawReadIo(handle, cartAddr - sizeof(u16), &buffer); + + // Poke the lower 16 bits into the destination address + adr = (u16*)PHYS_TO_K1(dramAddr); + *(adr++) = (u16)buffer; + + // Update DMA parameters + cartAddr += sizeof(u16); + dramAddr = adr; + size -= sizeof(u16); + + // If the remaining size is >= 4 + if (size >= sizeof(u32)) { + // Read another 32 bits at the cart addr + __osEPiRawReadIo(handle, cartAddr, &buffer); + + // Store all 32 bits to RAM + adr = (u16*)dramAddr; + *(adr++) = buffer >> 16; + *(adr++) = (u16)buffer; + + // Update DMA parameters again + cartAddr += sizeof(u32); + dramAddr = adr; + size -= sizeof(u32); + + // If we're not at the end of the DMA + if (size != 0) { + // Read 32 bits again + __osEPiRawReadIo(handle, cartAddr, &buffer); + + // Store just the upper 16 bits + adr = (u16*)PHYS_TO_K1(dramAddr); + *(adr++) = buffer >> 16; + + // Update DMA parameters once more + cartAddr += sizeof(u16); + dramAddr = adr; + size -= sizeof(u16); + } + } + } + + // If the end cart address mod pgsize is just 2 bytes into a page or the remaining data size is just 1x u16 + if (((((cartAddr + size) & (pgsize - 1)) == sizeof(u16)) | (size == sizeof(u16))) != 0) { + if ((cartAddr + size) & 2) { + // Read 32 bits at end - 2, store the upper 16 bits + __osEPiRawReadIo(handle, cartAddr + size - sizeof(u16), &buffer); + adr = (u16*)PHYS_TO_K1(dramAddr) + (size - sizeof(u16)) / sizeof(u16); + *adr = buffer >> 16; + } else { + // Read 32 bits at end - 4, store the lower 16 bits + __osEPiRawReadIo(handle, cartAddr + size - sizeof(u32), &buffer); + adr = (u16*)PHYS_TO_K1(dramAddr) + (size - sizeof(u16)) / sizeof(u16); + *adr = (u16)buffer; + } + size -= sizeof(u16); + } + + if (size == 0) { + // If size ended up 0 following the adjustments, run an 8-byte dummy DMA anyway + size = 8; + dramAddr = (void*)dummybuf; + cartAddr = 0; + } + } +#endif + IO_WRITE(PI_DRAM_ADDR_REG, osVirtualToPhysical(dramAddr)); IO_WRITE(PI_CART_ADDR_REG, K1_TO_PHYS(handle->baseAddress | cartAddr)); +#ifdef BBPLAYER + if (direction != OS_READ && direction != OS_WRITE) { + return -1; + } + + if ((handle->baseAddress | cartAddr) <= 0x400) { + IO_WRITE((direction == OS_READ) ? PI_EX_WR_LEN_REG : PI_EX_RD_LEN_REG, size - 1); + } else { + IO_WRITE((direction == OS_READ) ? PI_WR_LEN_REG : PI_RD_LEN_REG, size - 1); + } +#else switch (direction) { case OS_READ: IO_WRITE(PI_WR_LEN_REG, size - 1); @@ -66,5 +169,6 @@ s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dr default: return -1; } +#endif return 0; } diff --git a/src/libultra/io/pfsgetstatus.c b/src/libultra/io/pfsgetstatus.c index 0ec3bd7b4d..aa9851e6e7 100644 --- a/src/libultra/io/pfsgetstatus.c +++ b/src/libultra/io/pfsgetstatus.c @@ -2,6 +2,7 @@ #include "global.h" s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel) { +#ifndef BBPLAYER s32 ret = 0; OSMesg msg; OSContStatus data; @@ -24,6 +25,12 @@ s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel) { return PFS_ERR_CONTRFAIL; } return ret; +#else + if (__osBbPakAddress[channel] != 0) { + return 0; + } + return PFS_ERR_NOPACK; +#endif } void __osPfsRequestOneChannel(s32 channel, u8 cmd) { diff --git a/src/libultra/io/pfsisplug.c b/src/libultra/io/pfsisplug.c index d5630fccc5..9a144d0cb5 100644 --- a/src/libultra/io/pfsisplug.c +++ b/src/libultra/io/pfsisplug.c @@ -88,8 +88,28 @@ void __osPfsGetInitData(u8* pattern, OSContStatus* contData) { } contData->type = ((req.typel << 8) | req.typeh); +#ifdef BBPLAYER + contData->status = __osBbPakAddress[i] != 0; +#else contData->status = req.status; +#endif bits |= (1 << i); } + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContStatus tmp; + + bits = (bits & ~((1 << __osBbHackFlags) | 1)) | ((bits & 1) << __osBbHackFlags) | + ((bits & (1 << __osBbHackFlags)) >> __osBbHackFlags); + + contData -= __osMaxControllers; + + tmp = contData[0]; + contData[0] = contData[__osBbHackFlags]; + contData[__osBbHackFlags] = tmp; + } +#endif + *pattern = bits; } diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c index e8aa98d01b..7a0b68f8dc 100644 --- a/src/libultra/io/pimgr.c +++ b/src/libultra/io/pimgr.c @@ -40,8 +40,8 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmd prevInt = __osDisableInt(); __osPiDevMgr.active = true; - __osPiDevMgr.cmdQueue = cmdQueue; __osPiDevMgr.thread = &piThread; + __osPiDevMgr.cmdQueue = cmdQueue; __osPiDevMgr.evtQueue = &piEventQueue; __osPiDevMgr.acsQueue = &__osPiAccessQueue; __osPiDevMgr.dma = __osPiRawStartDma; diff --git a/src/libultra/io/sirawdma.c b/src/libultra/io/sirawdma.c index 9bf499cc6a..0aa2f86942 100644 --- a/src/libultra/io/sirawdma.c +++ b/src/libultra/io/sirawdma.c @@ -1,4 +1,5 @@ #include "global.h" +#include "ultra64/bbskapi.h" #define PIF_RAM_SIZE (PIF_RAM_END + 1 - PIF_RAM_START) @@ -11,6 +12,13 @@ s32 __osSiRawStartDma(s32 dir, void* addr) { } IO_WRITE(SI_DRAM_ADDR_REG, osVirtualToPhysical(addr)); if (dir == OS_READ) { +#ifdef BBPLAYER + if (__osBbIsBb) { + register u32 mask = __osDisableInt(); + skKeepAlive(); + __osRestoreInt(mask); + } +#endif IO_WRITE(SI_PIF_ADDR_RD64B_REG, PIF_RAM_START); } else { IO_WRITE(SI_PIF_ADDR_WR64B_REG, PIF_RAM_START); diff --git a/src/libultra/io/sptaskyielded.c b/src/libultra/io/sptaskyielded.c index d04f673c54..8be0556c33 100644 --- a/src/libultra/io/sptaskyielded.c +++ b/src/libultra/io/sptaskyielded.c @@ -2,18 +2,13 @@ u32 osSpTaskYielded(OSTask* task) { u32 status = __osSpGetStatus(); - u32 ret; + u32 result; - if (status & SP_STATUS_YIELDED) { - ret = OS_TASK_YIELDED; - } else { - ret = 0; - } + result = (status & SP_STATUS_YIELDED) ? OS_TASK_YIELDED : 0; if (status & SP_STATUS_YIELD) { - task->t.flags |= ret; + task->t.flags |= result; task->t.flags &= ~OS_TASK_DP_WAIT; } - - return ret; + return result; } diff --git a/src/libultra/io/vimodefpalhaf1.c b/src/libultra/io/vimodefpalhaf1.c new file mode 100644 index 0000000000..6444c97a4d --- /dev/null +++ b/src/libultra/io/vimodefpalhaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhaf1.c + * + * FPAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHaf1 = { + OS_VI_FPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhan1.c b/src/libultra/io/vimodefpalhan1.c new file mode 100644 index 0000000000..e6243a01f6 --- /dev/null +++ b/src/libultra/io/vimodefpalhan1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhan1.c + * + * FPAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHan1 = { + OS_VI_FPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpf1.c b/src/libultra/io/vimodefpalhpf1.c new file mode 100644 index 0000000000..af827fa466 --- /dev/null +++ b/src/libultra/io/vimodefpalhpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhpf1.c + * + * FPAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHpf1 = { + OS_VI_FPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpf2.c b/src/libultra/io/vimodefpalhpf2.c new file mode 100644 index 0000000000..3ce09602ab --- /dev/null +++ b/src/libultra/io/vimodefpalhpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhpf2.c + * + * FPAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHpf2 = { + OS_VI_FPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpn1.c b/src/libultra/io/vimodefpalhpn1.c new file mode 100644 index 0000000000..f789c3baf0 --- /dev/null +++ b/src/libultra/io/vimodefpalhpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhpn1.c + * + * FPAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHpn1 = { + OS_VI_FPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpn2.c b/src/libultra/io/vimodefpalhpn2.c new file mode 100644 index 0000000000..483dbd8f74 --- /dev/null +++ b/src/libultra/io/vimodefpalhpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpalhpn2.c + * + * FPAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalHpn2 = { + OS_VI_FPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallaf1.c b/src/libultra/io/vimodefpallaf1.c new file mode 100644 index 0000000000..cd508f053b --- /dev/null +++ b/src/libultra/io/vimodefpallaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallaf1.c + * + * FPAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLaf1 = { + OS_VI_FPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallaf2.c b/src/libultra/io/vimodefpallaf2.c new file mode 100644 index 0000000000..5dd7b99b29 --- /dev/null +++ b/src/libultra/io/vimodefpallaf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallaf2.c + * + * FPAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLaf2 = { + OS_VI_FPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallan1.c b/src/libultra/io/vimodefpallan1.c index 37cb5ff557..aad8d8a5ff 100644 --- a/src/libultra/io/vimodefpallan1.c +++ b/src/libultra/io/vimodefpallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeFpalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeFpalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(47, 617), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(47, 617), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodefpallan2.c b/src/libultra/io/vimodefpallan2.c new file mode 100644 index 0000000000..a1224f5e73 --- /dev/null +++ b/src/libultra/io/vimodefpallan2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallan2.c + * + * FPAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLan2 = { + OS_VI_FPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpf1.c b/src/libultra/io/vimodefpallpf1.c new file mode 100644 index 0000000000..ed14626d8c --- /dev/null +++ b/src/libultra/io/vimodefpallpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallpf1.c + * + * FPAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLpf1 = { + OS_VI_FPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpf2.c b/src/libultra/io/vimodefpallpf2.c new file mode 100644 index 0000000000..9603b26192 --- /dev/null +++ b/src/libultra/io/vimodefpallpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallpf2.c + * + * FPAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLpf2 = { + OS_VI_FPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpn1.c b/src/libultra/io/vimodefpallpn1.c new file mode 100644 index 0000000000..2aa76cfff4 --- /dev/null +++ b/src/libultra/io/vimodefpallpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallpn1.c + * + * FPAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLpn1 = { + OS_VI_FPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpn2.c b/src/libultra/io/vimodefpallpn2.c new file mode 100644 index 0000000000..7f6938a323 --- /dev/null +++ b/src/libultra/io/vimodefpallpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodefpallpn2.c + * + * FPAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeFpalLpn2 = { + OS_VI_FPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhaf1.c b/src/libultra/io/vimodempalhaf1.c new file mode 100644 index 0000000000..7eb17048e0 --- /dev/null +++ b/src/libultra/io/vimodempalhaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhaf1.c + * + * MPAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHaf1 = { + OS_VI_MPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + //[0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + //[1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhan1.c b/src/libultra/io/vimodempalhan1.c new file mode 100644 index 0000000000..57e594b3d9 --- /dev/null +++ b/src/libultra/io/vimodempalhan1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhan1.c + * + * MPAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHan1 = { + OS_VI_MPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpf1.c b/src/libultra/io/vimodempalhpf1.c new file mode 100644 index 0000000000..6441ef2800 --- /dev/null +++ b/src/libultra/io/vimodempalhpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhpf1.c + * + * MPAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHpf1 = { + OS_VI_MPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpf2.c b/src/libultra/io/vimodempalhpf2.c new file mode 100644 index 0000000000..e853874fb4 --- /dev/null +++ b/src/libultra/io/vimodempalhpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhpf2.c + * + * MPAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHpf2 = { + OS_VI_MPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpn1.c b/src/libultra/io/vimodempalhpn1.c new file mode 100644 index 0000000000..4a4c22e229 --- /dev/null +++ b/src/libultra/io/vimodempalhpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhpn1.c + * + * MPAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHpn1 = { + OS_VI_MPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpn2.c b/src/libultra/io/vimodempalhpn2.c new file mode 100644 index 0000000000..fe8f7f6f30 --- /dev/null +++ b/src/libultra/io/vimodempalhpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempalhpn2.c + * + * MPAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalHpn2 = { + OS_VI_MPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallaf1.c b/src/libultra/io/vimodempallaf1.c new file mode 100644 index 0000000000..29f35cd454 --- /dev/null +++ b/src/libultra/io/vimodempallaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallaf1.c + * + * MPAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLaf1 = { + OS_VI_MPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallaf2.c b/src/libultra/io/vimodempallaf2.c new file mode 100644 index 0000000000..783440a4ed --- /dev/null +++ b/src/libultra/io/vimodempallaf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallaf2.c + * + * MPAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLaf2 = { + OS_VI_MPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallan1.c b/src/libultra/io/vimodempallan1.c index bcc4273afb..5140c50e55 100644 --- a/src/libultra/io/vimodempallan1.c +++ b/src/libultra/io/vimodempallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeMpalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeMpalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodempallan2.c b/src/libultra/io/vimodempallan2.c new file mode 100644 index 0000000000..b3717e6c74 --- /dev/null +++ b/src/libultra/io/vimodempallan2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallan2.c + * + * MPAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLan2 = { + OS_VI_MPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpf1.c b/src/libultra/io/vimodempallpf1.c new file mode 100644 index 0000000000..52e927bfab --- /dev/null +++ b/src/libultra/io/vimodempallpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallpf1.c + * + * MPAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLpf1 = { + OS_VI_MPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpf2.c b/src/libultra/io/vimodempallpf2.c new file mode 100644 index 0000000000..14a918a53d --- /dev/null +++ b/src/libultra/io/vimodempallpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallpf2.c + * + * MPAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLpf2 = { + OS_VI_MPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpn1.c b/src/libultra/io/vimodempallpn1.c new file mode 100644 index 0000000000..ce35838b9e --- /dev/null +++ b/src/libultra/io/vimodempallpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallpn1.c + * + * MPAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLpn1 = { + OS_VI_MPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpn2.c b/src/libultra/io/vimodempallpn2.c new file mode 100644 index 0000000000..1f35696e82 --- /dev/null +++ b/src/libultra/io/vimodempallpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodempallpn2.c + * + * MPAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeMpalLpn2 = { + OS_VI_MPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschaf1.c b/src/libultra/io/vimodentschaf1.c new file mode 100644 index 0000000000..79b3987a0f --- /dev/null +++ b/src/libultra/io/vimodentschaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschaf1.c + * + * NTSC HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHaf1 = { + OS_VI_NTSC_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschan1.c b/src/libultra/io/vimodentschan1.c new file mode 100644 index 0000000000..994937aa75 --- /dev/null +++ b/src/libultra/io/vimodentschan1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschan1.c + * + * NTSC HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHan1 = { + OS_VI_NTSC_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpf1.c b/src/libultra/io/vimodentschpf1.c new file mode 100644 index 0000000000..a91addf6e2 --- /dev/null +++ b/src/libultra/io/vimodentschpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschpf1.c + * + * NTSC HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHpf1 = { + OS_VI_NTSC_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpf2.c b/src/libultra/io/vimodentschpf2.c new file mode 100644 index 0000000000..54b15f31be --- /dev/null +++ b/src/libultra/io/vimodentschpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschpf2.c + * + * NTSC HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHpf2 = { + OS_VI_NTSC_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpn1.c b/src/libultra/io/vimodentschpn1.c new file mode 100644 index 0000000000..83ffa0fd54 --- /dev/null +++ b/src/libultra/io/vimodentschpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschpn1.c + * + * NTSC HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHpn1 = { + OS_VI_NTSC_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpn2.c b/src/libultra/io/vimodentschpn2.c new file mode 100644 index 0000000000..5f3fbdf2d9 --- /dev/null +++ b/src/libultra/io/vimodentschpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentschpn2.c + * + * NTSC HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscHpn2 = { + OS_VI_NTSC_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclaf1.c b/src/libultra/io/vimodentsclaf1.c new file mode 100644 index 0000000000..236200044d --- /dev/null +++ b/src/libultra/io/vimodentsclaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclaf1.c + * + * NTSC LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLaf1 = { + OS_VI_NTSC_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclaf2.c b/src/libultra/io/vimodentsclaf2.c new file mode 100644 index 0000000000..5b8d9194f1 --- /dev/null +++ b/src/libultra/io/vimodentsclaf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclaf2.c + * + * NTSC LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLaf2 = { + OS_VI_NTSC_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclan1.c b/src/libultra/io/vimodentsclan1.c index a29d15129f..44f038a02c 100644 --- a/src/libultra/io/vimodentsclan1.c +++ b/src/libultra/io/vimodentsclan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeNtscLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeNtscLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodentsclan2.c b/src/libultra/io/vimodentsclan2.c new file mode 100644 index 0000000000..a34f8ec300 --- /dev/null +++ b/src/libultra/io/vimodentsclan2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclan2.c + * + * NTSC LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLan2 = { + OS_VI_NTSC_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpf1.c b/src/libultra/io/vimodentsclpf1.c new file mode 100644 index 0000000000..0824a29184 --- /dev/null +++ b/src/libultra/io/vimodentsclpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclpf1.c + * + * NTSC LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLpf1 = { + OS_VI_NTSC_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpf2.c b/src/libultra/io/vimodentsclpf2.c new file mode 100644 index 0000000000..fccfcbbd33 --- /dev/null +++ b/src/libultra/io/vimodentsclpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclpf2.c + * + * NTSC LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLpf2 = { + OS_VI_NTSC_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpn1.c b/src/libultra/io/vimodentsclpn1.c new file mode 100644 index 0000000000..aabe7af792 --- /dev/null +++ b/src/libultra/io/vimodentsclpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclpn1.c + * + * NTSC LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLpn1 = { + OS_VI_NTSC_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpn2.c b/src/libultra/io/vimodentsclpn2.c new file mode 100644 index 0000000000..ce05176c3e --- /dev/null +++ b/src/libultra/io/vimodentsclpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodentsclpn2.c + * + * NTSC LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeNtscLpn2 = { + OS_VI_NTSC_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhaf1.c b/src/libultra/io/vimodepalhaf1.c new file mode 100644 index 0000000000..af4d5de616 --- /dev/null +++ b/src/libultra/io/vimodepalhaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhaf1.c + * + * PAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHaf1 = { + OS_VI_PAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhan1.c b/src/libultra/io/vimodepalhan1.c new file mode 100644 index 0000000000..7831490814 --- /dev/null +++ b/src/libultra/io/vimodepalhan1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhan1.c + * + * PAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHan1 = { + OS_VI_PAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpf1.c b/src/libultra/io/vimodepalhpf1.c new file mode 100644 index 0000000000..954c3a1199 --- /dev/null +++ b/src/libultra/io/vimodepalhpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhpf1.c + * + * PAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHpf1 = { + OS_VI_PAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpf2.c b/src/libultra/io/vimodepalhpf2.c new file mode 100644 index 0000000000..e87290f306 --- /dev/null +++ b/src/libultra/io/vimodepalhpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhpf2.c + * + * PAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHpf2 = { + OS_VI_PAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpn1.c b/src/libultra/io/vimodepalhpn1.c new file mode 100644 index 0000000000..680e48bea8 --- /dev/null +++ b/src/libultra/io/vimodepalhpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhpn1.c + * + * PAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHpn1 = { + OS_VI_PAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpn2.c b/src/libultra/io/vimodepalhpn2.c new file mode 100644 index 0000000000..ca4d33c2c6 --- /dev/null +++ b/src/libultra/io/vimodepalhpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepalhpn2.c + * + * PAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalHpn2 = { + OS_VI_PAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallaf1.c b/src/libultra/io/vimodepallaf1.c new file mode 100644 index 0000000000..de645b2919 --- /dev/null +++ b/src/libultra/io/vimodepallaf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallaf1.c + * + * PAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLaf1 = { + OS_VI_PAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallaf2.c b/src/libultra/io/vimodepallaf2.c new file mode 100644 index 0000000000..a1a4d8c9d3 --- /dev/null +++ b/src/libultra/io/vimodepallaf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallaf2.c + * + * PAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLaf2 = { + OS_VI_PAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallan1.c b/src/libultra/io/vimodepallan1.c index d656dc4f94..f129073406 100644 --- a/src/libultra/io/vimodepallan1.c +++ b/src/libultra/io/vimodepallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModePalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModePalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV_3, // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(95, 569), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(95, 569), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodepallan2.c b/src/libultra/io/vimodepallan2.c new file mode 100644 index 0000000000..310ab266c9 --- /dev/null +++ b/src/libultra/io/vimodepallan2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallan2.c + * + * PAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLan2 = { + OS_VI_PAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpf1.c b/src/libultra/io/vimodepallpf1.c new file mode 100644 index 0000000000..5d10214ac9 --- /dev/null +++ b/src/libultra/io/vimodepallpf1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallpf1.c + * + * PAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLpf1 = { + OS_VI_PAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpf2.c b/src/libultra/io/vimodepallpf2.c new file mode 100644 index 0000000000..076b3199c3 --- /dev/null +++ b/src/libultra/io/vimodepallpf2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallpf2.c + * + * PAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLpf2 = { + OS_VI_PAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpn1.c b/src/libultra/io/vimodepallpn1.c new file mode 100644 index 0000000000..7eeb37f9e2 --- /dev/null +++ b/src/libultra/io/vimodepallpn1.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallpn1.c + * + * PAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLpn1 = { + OS_VI_PAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpn2.c b/src/libultra/io/vimodepallpn2.c new file mode 100644 index 0000000000..e460b87234 --- /dev/null +++ b/src/libultra/io/vimodepallpn2.c @@ -0,0 +1,48 @@ +/** + * @file vimodepallpn2.c + * + * PAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModePalLpn2 = { + OS_VI_PAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/visetmode.c b/src/libultra/io/visetmode.c index ab5b3b0e18..8c34a4ee31 100644 --- a/src/libultra/io/visetmode.c +++ b/src/libultra/io/visetmode.c @@ -4,6 +4,12 @@ void osViSetMode(OSViMode* mode) { register u32 prevInt = __osDisableInt(); +#ifdef BBPLAYER + if (__osBbIsBb) { + mode->comRegs.ctrl &= ~VI_CTRL_PIXEL_ADV(2); + } +#endif + __osViNext->modep = mode; __osViNext->state = VI_STATE_MODE_SET; __osViNext->features = __osViNext->modep->comRegs.ctrl; diff --git a/src/libultra/io/vitbl.c b/src/libultra/io/vitbl.c new file mode 100644 index 0000000000..8779396bbc --- /dev/null +++ b/src/libultra/io/vitbl.c @@ -0,0 +1,1967 @@ +#include "ultra64.h" +#include "ultra64/viint.h" + +OSViMode osViModeTable[] = { + { + OS_VI_NTSC_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + //[0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + //[1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, +#if BUILD_VERSION >= VERSION_J + { + OS_VI_FPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, +#endif +}; diff --git a/src/libultra/libc/bcmp.s b/src/libultra/libc/bcmp.s index df6692feb5..9ef0746cf3 100644 --- a/src/libultra/libc/bcmp.s +++ b/src/libultra/libc/bcmp.s @@ -1,93 +1,89 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(bcmp) - slti $at, $a2, 0x10 - bnez $at, bytecmp - xor $v0, $a0, $a1 - andi $v0, $v0, 3 - bnez $v0, unaligncmp - negu $t8, $a0 - andi $t8, $t8, 3 - beqz $t8, wordcmp - subu $a2, $a2, $t8 - move $v0, $v1 - lwl $v0, ($a0) - lwl $v1, ($a1) - addu $a0, $a0, $t8 - addu $a1, $a1, $t8 - bne $v0, $v1, cmpne + xor v0, a0, a1 + blt a2, 0x10, bytecmp + + and v0, v0, 3 + negu t8, a0 + bnez v0, unaligncmp + + and t8, t8, 3 + subu a2, a2, t8 + beqz t8, wordcmp + + move v0, v1 + lwl v0, (a0) + lwl v1, (a1) + addu a0, a0, t8 + addu a1, a1, t8 + bne v0, v1, cmpne + wordcmp: - li $at, ~3 - and $a3, $a2, $at - beqz $a3, bytecmp - subu $a2, $a2, $a3 - addu $a3, $a3, $a0 - lw $v0, ($a0) + and a3, a2, ~3 + subu a2, a2, a3 + beqz a3, bytecmp + + addu a3, a3, a0 1: - lw $v1, ($a1) - addiu $a0, $a0, 4 - addiu $a1, $a1, 4 - bne $v0, $v1, cmpne - nop - bnel $a0, $a3, 1b - lw $v0, ($a0) + lw v0, (a0) + lw v1, (a1) + addu a0, a0, 4 + addu a1, a1, 4 + bne v0, v1, cmpne + bne a0, a3, 1b + b bytecmp - nop + unaligncmp: - negu $a3, $a1 - andi $a3, $a3, 3 - beqz $a3, partaligncmp - subu $a2, $a2, $a3 - addu $a3, $a3, $a0 - lbu $v0, ($a0) + negu a3, a1 + and a3, a3, 3 + subu a2, a2, a3 + beqz a3, partaligncmp + + addu a3, a3, a0 1: - lbu $v1, ($a1) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - bne $v0, $v1, cmpne - nop - bnel $a0, $a3, 1b - lbu $v0, ($a0) + lbu v0, (a0) + lbu v1, (a1) + addu a0, a0, 1 + addu a1, a1, 1 + bne v0, v1, cmpne + bne a0, a3, 1b + partaligncmp: - li $at, ~3 - and $a3, $a2, $at - beqz $a3, bytecmp - subu $a2, $a2, $a3 - addu $a3, $a3, $a0 - lwl $v0, ($a0) + and a3, a2, ~3 + subu a2, a2, a3 + beqz a3, bytecmp + + addu a3, a3, a0 1: - lw $v1, ($a1) - lwr $v0, 3($a0) - addiu $a0, $a0, 4 - addiu $a1, $a1, 4 - bne $v0, $v1, cmpne - nop - bnel $a0, $a3, 1b - lwl $v0, ($a0) + lwl v0, (a0) + lwr v0, 3(a0) + lw v1, (a1) + addu a0, a0, 4 + addu a1, a1, 4 + bne v0, v1, cmpne + bne a0, a3, 1b + bytecmp: - blez $a2, cmpdone - addu $a3, $a2, $a0 - lbu $v0, ($a0) + addu a3, a2, a0 + blez a2, cmpdone 1: - lbu $v1, ($a1) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - bne $v0, $v1, cmpne - nop - bnel $a0, $a3, 1b - lbu $v0, ($a0) + lbu v0, (a0) + lbu v1, (a1) + addu a0, a0, 1 + addu a1, a1, 1 + bne v0, v1, cmpne + bne a0, a3, 1b + cmpdone: - jr $ra - move $v0, $zero + move v0, zero + jr ra cmpne: - jr $ra - li $v0, 1 + li v0, 1 + jr ra END(bcmp) diff --git a/src/libultra/libc/bcopy.s b/src/libultra/libc/bcopy.s index e1240f113a..dcb6ad13c3 100644 --- a/src/libultra/libc/bcopy.s +++ b/src/libultra/libc/bcopy.s @@ -1,233 +1,211 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(bcopy) - beqz $a2, ret - move $a3, $a1 - beq $a0, $a1, ret - slt $at, $a1, $a0 - bnezl $at, goforwards - slti $at, $a2, 0x10 - add $v0, $a0, $a2 - slt $at, $a1, $v0 - beql $at, $zero, goforwards - slti $at, $a2, 0x10 + move a3, a1 + beqz a2, ret + beq a0, a1, ret + blt a1, a0, goforwards + add v0, a0, a2 + bge a1, v0, goforwards b gobackwards - slti $at, $a2, 0x10 - slti $at, $a2, 0x10 + goforwards: - bnez $at, forwards_bytecopy - nop - andi $v0, $a0, 3 - andi $v1, $a1, 3 - beq $v0, $v1, forwalignable - nop + blt a2, 0x10, forwards_bytecopy + and v0, a0, 3 + and v1, a1, 3 + beq v0, v1, forwalignable + forwards_bytecopy: - beqz $a2, ret - nop - addu $v1, $a0, $a2 + beqz a2, ret + addu v1, a0, a2 99: - lb $v0, ($a0) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - bne $a0, $v1, 99b - sb $v0, -1($a1) + lb v0, (a0) + addu a0, a0, 1 + sb v0, (a1) + addu a1, a1, 1 + bne a0, v1, 99b ret: - jr $ra - move $v0, $a3 + move v0, a3 + jr ra forwalignable: - beqz $v0, forwards_32 - li $at, 1 - beq $v0, $at, forw_copy3 - li $at, 2 - beql $v0, $at, forw_copy2 - lh $v0, ($a0) - lb $v0, ($a0) - addiu $a0, $a0, 1 - addiu $a1, $a1, 1 - addiu $a2, $a2, -1 + beqz v0, forwards_32 + beq v0, 1, forw_copy3 + beq v0, 2, forw_copy2 + + lb v0, (a0) + addu a0, a0, 1 + sb v0, (a1) + addu a1, a1, 1 + addu a2, a2, -1 b forwards_32 - sb $v0, -1($a1) - lh $v0, ($a0) + forw_copy2: - addiu $a0, $a0, 2 - addiu $a1, $a1, 2 - addiu $a2, $a2, -2 + lh v0, (a0) + addu a0, a0, 2 + sh v0, (a1) + addu a1, a1, 2 + addu a2, a2, -2 b forwards_32 - sh $v0, -2($a1) + forw_copy3: - lb $v0, ($a0) - lh $v1, 1($a0) - addiu $a0, $a0, 3 - addiu $a1, $a1, 3 - addiu $a2, $a2, -3 - sb $v0, -3($a1) - sh $v1, -2($a1) + lb v0, (a0) + lh v1, 1(a0) + addiu a0, a0, 3 + sb v0, (a1) + sh v1, 1(a1) + addiu a1, a1, 3 + addiu a2, a2, -3 forwards: forwards_32: - slti $at, $a2, 0x20 - bnezl $at, forwards_16_ - slti $at, $a2, 0x10 - lw $v0, ($a0) - lw $v1, 4($a0) - lw $t0, 8($a0) - lw $t1, 0xC($a0) - lw $t2, 0x10($a0) - lw $t3, 0x14($a0) - lw $t4, 0x18($a0) - lw $t5, 0x1C($a0) - addiu $a0, $a0, 0x20 - addiu $a1, $a1, 0x20 - addiu $a2, $a2, -0x20 - sw $v0, -0x20($a1) - sw $v1, -0x1C($a1) - sw $t0, -0x18($a1) - sw $t1, -0x14($a1) - sw $t2, -0x10($a1) - sw $t3, -0xC($a1) - sw $t4, -8($a1) + blt a2, 32, forwards_16 + lw v0, 0(a0) + lw v1, 4(a0) + lw t0, 8(a0) + lw t1, 12(a0) + lw t2, 16(a0) + lw t3, 20(a0) + lw t4, 24(a0) + lw t5, 28(a0) + addiu a0, a0, 32 + sw v0, 0(a1) + sw v1, 4(a1) + sw t0, 8(a1) + sw t1, 12(a1) + sw t2, 16(a1) + sw t3, 20(a1) + sw t4, 24(a1) + sw t5, 28(a1) + addiu a1, a1, 32 + addiu a2, a2, -32 b forwards_32 - sw $t5, -4($a1) + forwards_16: - slti $at, $a2, 0x10 -forwards_16_: // fake label due to branch likely optimization - bnezl $at, forwards_4_ - slti $at, $a2, 4 - lw $v0, ($a0) - lw $v1, 4($a0) - lw $t0, 8($a0) - lw $t1, 0xC($a0) - addiu $a0, $a0, 0x10 - addiu $a1, $a1, 0x10 - addiu $a2, $a2, -0x10 - sw $v0, -0x10($a1) - sw $v1, -0xC($a1) - sw $t0, -8($a1) + blt a2, 16, forwards_4 + lw v0, 0(a0) + lw v1, 4(a0) + lw t0, 8(a0) + lw t1, 12(a0) + addiu a0, a0, 16 + sw v0, 0(a1) + sw v1, 4(a1) + sw t0, 8(a1) + sw t1, 12(a1) + addiu a1, a1, 16 + addiu a2, a2, -16 b forwards_16 - sw $t1, -4($a1) + forwards_4: - slti $at, $a2, 4 -forwards_4_: // fake label due to branch likely optimization - bnez $at, forwards_bytecopy - nop - lw $v0, ($a0) - addiu $a0, $a0, 4 - addiu $a1, $a1, 4 - addiu $a2, $a2, -4 + blt a2, 4, forwards_bytecopy + + lw v0, 0(a0) + addiu a0, a0, 4 + sw v0, 0(a1) + addiu a1, a1, 4 + addiu a2, a2, -4 b forwards_4 - sw $v0, -4($a1) - slti $at, $a2, 0x10 + gobackwards: - add $a0, $a0, $a2 - bnez $at, backwards_bytecopy - add $a1, $a1, $a2 - andi $v0, $a0, 3 - andi $v1, $a1, 3 - beq $v0, $v1, backalignable - nop + add a0, a0,a2 + add a1, a1,a2 + blt a2, 16, backwards_bytecopy + + andi v0, a0, 0x3 + andi v1, a1, 0x3 + beq v0, v1, backalignable + backwards_bytecopy: - beqz $a2, ret - nop - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - subu $v1, $a0, $a2 + beqz a2, ret + addiu a0, a0, -1 + addiu a1, a1, -1 + subu v1, a0,a2 99: - lb $v0, ($a0) - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - bne $a0, $v1, 99b - sb $v0, 1($a1) - jr $ra - move $v0, $a3 + lb v0, 0(a0) + addiu a0, a0, -1 + sb v0, 0(a1) + addiu a1, a1, -1 + bne a0, v1,99b + + move v0, a3 + jr ra backalignable: - beqz $v0, backwards_32 - li $at, 3 - beq $v0, $at, back_copy3 - li $at, 2 - beql $v0, $at, back_copy2 - lh $v0, -2($a0) - lb $v0, -1($a0) - addiu $a0, $a0, -1 - addiu $a1, $a1, -1 - addiu $a2, $a2, -1 - b backwards_32 - sb $v0, ($a1) - lh $v0, -2($a0) + beqz v0, backwards + beq v0, 3, back_copy3 + beq v0, 2, back_copy2 + lb v0, -1(a0) + addiu a0, a0, -1 + sb v0, -1(a1) + addiu a1, a1, -1 + addiu a2, a2, -1 + b backwards + back_copy2: - addiu $a0, $a0, -2 - addiu $a1, $a1, -2 - addiu $a2, $a2, -2 - b backwards_32 - sh $v0, ($a1) + lh v0, -2(a0) + addiu a0, a0, -2 + sh v0, -2(a1) + addiu a1, a1, -2 + addiu a2, a2, -2 + b backwards + back_copy3: - lb $v0, -1($a0) - lh $v1, -3($a0) - addiu $a0, $a0, -3 - addiu $a1, $a1, -3 - addiu $a2, $a2, -3 - sb $v0, 2($a1) - sh $v1, ($a1) + lb v0, -1(a0) + lh v1, -3(a0) + addiu a0, a0, -3 + sb v0, -1(a1) + sh v1, -3(a1) + addiu a1, a1, -3 + addiu a2, a2, -3 backwards: backwards_32: - slti $at, $a2, 0x20 - bnezl $at, backwards_16_ - slti $at, $a2, 0x10 - lw $v0, -4($a0) - lw $v1, -8($a0) - lw $t0, -0xc($a0) - lw $t1, -0x10($a0) - lw $t2, -0x14($a0) - lw $t3, -0x18($a0) - lw $t4, -0x1c($a0) - lw $t5, -0x20($a0) - addiu $a0, $a0, -0x20 - addiu $a1, $a1, -0x20 - addiu $a2, $a2, -0x20 - sw $v0, 0x1C($a1) - sw $v1, 0x18($a1) - sw $t0, 0x14($a1) - sw $t1, 0x10($a1) - sw $t2, 0xC($a1) - sw $t3, 8($a1) - sw $t4, 4($a1) + blt a2, 32, backwards_16 + lw v0, -4(a0) + lw v1, -8(a0) + lw t0, -12(a0) + lw t1, -16(a0) + lw t2, -20(a0) + lw t3, -24(a0) + lw t4, -28(a0) + lw t5, -32(a0) + addiu a0, a0, -32 + sw v0, -4(a1) + sw v1, -8(a1) + sw t0, -12(a1) + sw t1, -16(a1) + sw t2, -20(a1) + sw t3, -24(a1) + sw t4, -28(a1) + sw t5, -32(a1) + addiu a1, a1, -32 + addiu a2, a2, -32 b backwards_32 - sw $t5, ($a1) + backwards_16: - slti $at, $a2, 0x10 -backwards_16_: // fake label due to branch likely optimization - bnezl $at, backwards_4_ - slti $at, $a2, 4 - lw $v0, -4($a0) - lw $v1, -8($a0) - lw $t0, -0xC($a0) - lw $t1, -0x10($a0) - addiu $a0, $a0, -0x10 - addiu $a1, $a1, -0x10 - addiu $a2, $a2, -0x10 - sw $v0, 0xC($a1) - sw $v1, 8($a1) - sw $t0, 4($a1) + blt a2, 16, backwards_4 + lw v0, -4(a0) + lw v1, -8(a0) + lw t0, -12(a0) + lw t1, -16(a0) + addiu a0, a0, -16 + sw v0, -4(a1) + sw v1, -8(a1) + sw t0, -12(a1) + sw t1, -16(a1) + addiu a1, a1, -16 + addiu a2, a2, -16 b backwards_16 - sw $t1, ($a1) + backwards_4: - slti $at, $a2, 4 -backwards_4_: // fake label due to branch likely optimization - bnez $at, backwards_bytecopy - nop - lw $v0, -4($a0) - addiu $a0, $a0, -4 - addiu $a1, $a1, -4 - addiu $a2, $a2, -4 + blt a2, 4, backwards_bytecopy + lw v0, -4(a0) + addiu a0, a0, -4 + sw v0, -4(a1) + addiu a1, a1, -4 + addiu a2, a2, -4 b backwards_4 - sw $v0, ($a1) END(bcopy) diff --git a/src/libultra/libc/bzero.s b/src/libultra/libc/bzero.s index 5323a92d7d..e1ee69e89a 100644 --- a/src/libultra/libc/bzero.s +++ b/src/libultra/libc/bzero.s @@ -1,65 +1,59 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(bzero) - slti $at, $a1, 0xC - bnez $at, bytezero - negu $v1, $a0 - andi $v1, $v1, 3 - beqz $v1, blkzero - subu $a1, $a1, $v1 - swl $zero, ($a0) - addu $a0, $a0, $v1 + negu v1, a0 + blt a1, 0xC, bytezero + + and v1, v1, 3 + subu a1, a1, v1 + beqz v1, blkzero + + swl zero, (a0) + addu a0, a0, v1 blkzero: - // align backwards to 0x20 - li $at, ~0x1F - and $a3, $a1, $at - // If the result is zero, the amount to zero is less than 0x20 bytes - beqz $a3, wordzero - subu $a1, $a1, $a3 - // zero in blocks of 0x20 at a time - addu $a3, $a3, $a0 + /* align backwards to 0x20 */ + and a3, a1, ~(0x20 - 1) + /* If the result is zero, the amount to zero is less than 0x20 bytes */ + subu a1, a1, a3 + beqz a3, wordzero + /* zero in blocks of 0x20 at a time */ + addu a3, a3, a0 1: - addiu $a0, $a0, 0x20 - sw $zero, -0x20($a0) - sw $zero, -0x1C($a0) - sw $zero, -0x18($a0) - sw $zero, -0x14($a0) - sw $zero, -0x10($a0) - sw $zero, -0xC($a0) - sw $zero, -8($a0) - bne $a0, $a3, 1b - sw $zero, -4($a0) + sw zero, 0(a0) + sw zero, 4(a0) + sw zero, 8(a0) + sw zero, 12(a0) + addiu a0, a0, 0x20 + sw zero, -16(a0) + sw zero, -12(a0) + sw zero, -8(a0) + sw zero, -4(a0) + bne a0, a3, 1b + wordzero: - // align backwards to 0x4 - li $at, ~3 - and $a3, $a1, $at - // If the result is zero, the amount to zero is less than 0x4 bytes - beqz $a3, bytezero - subu $a1, $a1, $a3 - // zero one word at a time - addu $a3, $a3, $a0 + /* align backwards to 0x4 */ + and a3, a1, ~3 + /* If the result is zero, the amount to zero is less than 0x4 bytes */ + subu a1, a1, a3 + beqz a3, bytezero + /* zero one word at a time */ + addu a3, a3, a0 1: - addiu $a0, $a0, 4 - bne $a0, $a3, 1b - sw $zero, -4($a0) + addu a0, a0, 4 + sw zero, -4(a0) + bne a0, a3, 1b bytezero: - // test if nothing left to zero - blez $a1, zerodone - nop - // zero one byte at a time - addu $a1, $a1, $a0 + /* test if nothing left to zero */ + blez a1, zerodone + /* zero one byte at a time */ + addu a1, a1, a0 1: - addiu $a0, $a0, 1 - bne $a0, $a1, 1b - sb $zero, -1($a0) + addiu a0, a0, 1 + sb zero, -1(a0) + bne a0, a1, 1b zerodone: - jr $ra - nop + jr ra END(bzero) diff --git a/src/libultra/libc/xldtob.c b/src/libultra/libc/xldtob.c index a0ebe5d2d8..1a64baf041 100644 --- a/src/libultra/libc/xldtob.c +++ b/src/libultra/libc/xldtob.c @@ -56,7 +56,7 @@ void _Ldtob(_Pft* args, char code) { } else if (args->prec == 0 && (code == 'g' || code == 'G')) { args->prec = 1; } - err = _Ldunscale(&exp, (_Pft*)args); + err = _Ldunscale(&exp, args); if (err > 0) { memcpy(args->s, err == 2 ? "NaN" : "Inf", args->n1 = 3); return; @@ -76,7 +76,7 @@ void _Ldtob(_Pft* args, char code) { exp = exp * 30103 / 100000 - 4; if (exp < 0) { - n = (3 - exp) & ~3; + n = (-exp + 3) & ~3; exp = -n; for (i = 0; n > 0; n >>= 1, i++) { if ((n & 1) != 0) { @@ -95,7 +95,7 @@ void _Ldtob(_Pft* args, char code) { val /= factor; } - gen = ((code == 'f') ? exp + 10 : 6) + args->prec; + gen = args->prec + ((code == 'f') ? exp + 10 : 6); if (gen > 0x13) { gen = 0x13; } @@ -128,20 +128,14 @@ void _Ldtob(_Pft* args, char code) { --gen, --exp; } - nsig = ((code == 'f') ? exp + 1 : ((code == 'e' || code == 'E') ? 1 : 0)) + args->prec; + nsig = args->prec + ((code == 'f') ? exp + 1 : ((code == 'e' || code == 'E') ? 1 : 0)); if (gen < nsig) { nsig = gen; } if (nsig > 0) { - char drop; + char drop = (nsig < gen && ptr[nsig] > '4') ? '9' : '0'; int n2; - if (nsig < gen && ptr[nsig] > '4') { - drop = '9'; - } else { - drop = '0'; - } - for (n2 = nsig; ptr[--n2] == drop;) { nsig--; } diff --git a/src/libultra/libc/xprintf.c b/src/libultra/libc/xprintf.c index 7fba40b4c4..32a25d383c 100644 --- a/src/libultra/libc/xprintf.c +++ b/src/libultra/libc/xprintf.c @@ -11,7 +11,7 @@ #define ATOI(i, a) \ for (i = 0; isdigit(*a); a++) \ if (i < 999) \ - i = *a + i * 10 - '0'; + i = i * 10 + *a - '0'; #define PUT(fmt, _size) \ if (_size > 0) { \ @@ -93,11 +93,7 @@ int _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap) { } } - if (strchr("hlL", *s) != NULL) { - x.qual = *s++; - } else { - x.qual = '\0'; - } + x.qual = (strchr("hlL", *s) != NULL) ? *s++ : '\0'; if (x.qual == 'l' && *s == 'l') { x.qual = 'L'; @@ -126,7 +122,7 @@ static void _Putfld(_Pft* px, va_list* pap, char code, char* ac) { switch (code) { case 'c': - ac[px->n0++] = va_arg(*pap, unsigned int); + ac[px->n0++] = va_arg(*pap, int); break; case 'd': diff --git a/src/libultra/mgu/mtxf2l.s b/src/libultra/mgu/mtxf2l.s index edbb675a8e..0268a323ef 100644 --- a/src/libultra/mgu/mtxf2l.s +++ b/src/libultra/mgu/mtxf2l.s @@ -1,40 +1,36 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 #define MTX_INTPART 0 #define MTX_FRACPART 0x20 LEAF(guMtxF2L) - li $at, 0x47800000 // 65536.0f - mtc1 $at, $f0 - li $t9, 0xFFFF0000 - addiu $t8, $a1, MTX_FRACPART + li.s fv0, 65536.0 + li t9, 0xFFFF0000 + addu t8, a1, MTX_FRACPART 1: - lwc1 $f4, ($a0) - lwc1 $f10, 4($a0) - addiu $a1, $a1, 4 - mul.s $f6, $f4, $f0 - addiu $a0, $a0, 8 - mul.s $f16, $f10, $f0 - trunc.w.s $f8, $f6 - trunc.w.s $f18, $f16 - mfc1 $t0, $f8 - mfc1 $t1, $f18 - and $t2, $t0, $t9 - sll $t5, $t0, 0x10 - srl $t3, $t1, 0x10 - andi $t6, $t1, 0xFFFF - or $t4, $t2, $t3 - or $t7, $t5, $t6 - sw $t4, (MTX_INTPART-4)($a1) - bne $a1, $t8, 1b - sw $t7, (MTX_FRACPART-4)($a1) - jr $ra - nop + lwc1 ft0, 0(a0) + mul.s ft1, ft0, fv0 + trunc.w.s ft2, ft1 + lwc1 ft3, 4(a0) + mul.s ft4, ft3, fv0 + trunc.w.s ft5, ft4 + mfc1 t0, ft2 + mfc1 t1, ft5 + and t2, t0, t9 + srl t3, t1, 0x10 + or t4, t2, t3 + sw t4, (MTX_INTPART)(a1) + sll t5, t0, 0x10 + and t6, t1, 0xFFFF + or t7, t5, t6 + sw t7, (MTX_FRACPART)(a1) + addu a1, a1, 4 + addu a0, a0, 8 + bne a1, t8, 1b + + jr ra END(guMtxF2L) diff --git a/src/libultra/mgu/mtxident.s b/src/libultra/mgu/mtxident.s index fb0e4c44ad..7f074a5526 100644 --- a/src/libultra/mgu/mtxident.s +++ b/src/libultra/mgu/mtxident.s @@ -1,29 +1,27 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 LEAF(guMtxIdent) - addi $t0, $zero, 1 - sll $t1, $t0, 0x10 - sw $t1, ($a0) - sw $zero, 4($a0) - sw $t0, 8($a0) - sw $zero, 0xc($a0) - sw $zero, 0x10($a0) - sw $t1, 0x14($a0) - sw $zero, 0x18($a0) - sw $t0, 0x1C($a0) - sw $zero, 0x20($a0) - sw $zero, 0x24($a0) - sw $zero, 0x28($a0) - sw $zero, 0x2c($a0) - sw $zero, 0x30($a0) - sw $zero, 0x34($a0) - sw $zero, 0x38($a0) - jr $ra - sw $zero, 0x3C($a0) + add t0, zero, 1 + sll t1, t0, 0x10 + sw t1, 0x00(a0) + sw zero, 0x04(a0) + sw t0, 0x08(a0) + sw zero, 0x0C(a0) + sw zero, 0x10(a0) + sw t1, 0x14(a0) + sw zero, 0x18(a0) + sw t0, 0x1C(a0) + sw zero, 0x20(a0) + sw zero, 0x24(a0) + sw zero, 0x28(a0) + sw zero, 0x2c(a0) + sw zero, 0x30(a0) + sw zero, 0x34(a0) + sw zero, 0x38(a0) + sw zero, 0x3C(a0) + jr ra END(guMtxIdent) diff --git a/src/libultra/mgu/mtxidentf.s b/src/libultra/mgu/mtxidentf.s index 583fc22184..490b79e4b4 100644 --- a/src/libultra/mgu/mtxidentf.s +++ b/src/libultra/mgu/mtxidentf.s @@ -1,28 +1,26 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 LEAF(guMtxIdentF) - li $t0, 0x3F800000 // 1.0f - sw $t0, ($a0) - sw $zero, 4($a0) - sw $zero, 8($a0) - sw $zero, 0xC($a0) - sw $zero, 0x10($a0) - sw $t0, 0x14($a0) - sw $zero, 0x18($a0) - sw $zero, 0x1C($a0) - sw $zero, 0x20($a0) - sw $zero, 0x24($a0) - sw $t0, 0x28($a0) - sw $zero, 0x2C($a0) - sw $zero, 0x30($a0) - sw $zero, 0x34($a0) - sw $zero, 0x38($a0) - jr $ra - sw $t0, 0x3C($a0) + li.s t0, 1.0 + sw t0, 0x00(a0) + sw zero, 0x04(a0) + sw zero, 0x08(a0) + sw zero, 0x0C(a0) + sw zero, 0x10(a0) + sw t0, 0x14(a0) + sw zero, 0x18(a0) + sw zero, 0x1C(a0) + sw zero, 0x20(a0) + sw zero, 0x24(a0) + sw t0, 0x28(a0) + sw zero, 0x2C(a0) + sw zero, 0x30(a0) + sw zero, 0x34(a0) + sw zero, 0x38(a0) + sw t0, 0x3C(a0) + jr ra END(guMtxIdentF) diff --git a/src/libultra/mgu/mtxl2f.s b/src/libultra/mgu/mtxl2f.s index 9298da37cc..b95e3aca7f 100644 --- a/src/libultra/mgu/mtxl2f.s +++ b/src/libultra/mgu/mtxl2f.s @@ -1,41 +1,43 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 #define MTX_INTPART 0 #define MTX_FRACPART 0x20 +#define FIXTOF 0.0000152587890625 /* 1.0f / 65536.0f */ + LEAF(guMtxL2F) - li $at, 0x37800000 // 1.0f / 65536.0f - mtc1 $at, $f0 - li $t9, 0xFFFF0000 - addiu $t8, $a1, MTX_FRACPART + li.s fv0, FIXTOF + li t9, 0xFFFF0000 + addiu t8, a1, MTX_FRACPART 1: - lw $t0, MTX_INTPART($a1) - lw $t1, MTX_FRACPART($a1) - addiu $a1, $a1, 4 - and $t2, $t0, $t9 - srl $t3, $t1, 0x10 - or $t4, $t2, $t3 - mtc1 $t4, $f4 - sll $t5, $t0, 0x10 - andi $t6, $t1, 0xFFFF - or $t7, $t5, $t6 - cvt.s.w $f6, $f4 - mtc1 $t7, $f10 - addiu $a0, $a0, 8 - cvt.s.w $f16, $f10 - mul.s $f8, $f6, $f0 - nop - mul.s $f18, $f16, $f0 - swc1 $f8, -8($a0) - bne $a1, $t8, 1b - swc1 $f18, -4($a0) - jr $ra - nop + lw t0, MTX_INTPART(a1) + lw t1, MTX_FRACPART(a1) + + and t2, t0, t9 + srl t3, t1, 0x10 + or t4, t2, t3 + + sll t5, t0, 0x10 + and t6, t1, 0xFFFF + or t7, t5, t6 + + mtc1 t4, ft0 + cvt.s.w ft1, ft0 + mul.s ft2, ft1, fv0 + + mtc1 t7, ft3 + cvt.s.w ft4, ft3 + mul.s ft5, ft4, fv0 + + swc1 ft2, 0(a0) + swc1 ft5, 4(a0) + addu a0, a0, 8 + addu a1, a1, 4 + bne a1, t8, 1b + + jr ra END(guMtxL2F) diff --git a/src/libultra/mgu/normalize.s b/src/libultra/mgu/normalize.s index 7686317ea2..8174527f2c 100644 --- a/src/libultra/mgu/normalize.s +++ b/src/libultra/mgu/normalize.s @@ -1,31 +1,29 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 LEAF(guNormalize) - lwc1 $f4, ($a0) - lwc1 $f6, ($a1) - lwc1 $f8, ($a2) - mul.s $f10, $f4, $f4 - li $t0, 0x3F800000 // 1.0f - mul.s $f16, $f6, $f6 - add.s $f18, $f10, $f16 - mul.s $f16, $f8, $f8 - add.s $f10, $f16, $f18 - mtc1 $t0, $f18 - sqrt.s $f16, $f10 - div.s $f10, $f18, $f16 - mul.s $f16, $f4, $f10 + lwc1 ft0, (a0) + lwc1 ft1, (a1) + lwc1 ft2, (a2) + mul.s ft3, ft0, ft0 + li.s t0, 1.0 + mul.s ft4, ft1, ft1 + add.s ft5, ft3, ft4 + mul.s ft4, ft2, ft2 + add.s ft3, ft4, ft5 + mtc1 t0, ft5 + sqrt.s ft4, ft3 + div.s ft3, ft5, ft4 + mul.s ft4, ft0, ft3 nop - mul.s $f18, $f6, $f10 + mul.s ft5, ft1, ft3 nop - mul.s $f4, $f8, $f10 - swc1 $f16, ($a0) - swc1 $f18, ($a1) - jr $ra - swc1 $f4, ($a2) + mul.s ft0, ft2, ft3 + swc1 ft4, (a0) + swc1 ft5, (a1) + swc1 ft0, (a2) + jr ra END(guNormalize) diff --git a/src/libultra/mgu/scale.s b/src/libultra/mgu/scale.s index 80199c0621..5661b940cc 100644 --- a/src/libultra/mgu/scale.s +++ b/src/libultra/mgu/scale.s @@ -1,52 +1,56 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 LEAF(guScale) - li $at, 0x47800000 // 65536.0f - mtc1 $at, $f4 - mtc1 $a1, $f6 - sw $zero, 4($a0) - sw $zero, 0xC($a0) - mul.s $f8, $f6, $f4 - mtc1 $a2, $f6 - sw $zero, 0x10($a0) - sw $zero, 0x18($a0) - sw $zero, 0x24($a0) - sw $zero, 0x2C($a0) - sw $zero, 0x30($a0) - trunc.w.s $f10, $f8 - mul.s $f8, $f6, $f4 - mtc1 $a3, $f6 - sw $zero, 0x38($a0) - mfc1 $t1, $f10 - sw $zero, 0x3C($a0) - srl $t2, $t1, 0x10 - trunc.w.s $f10, $f8 - mul.s $f8, $f6, $f4 - sll $t0, $t2, 0x10 - sll $t2, $t1, 0x10 - mfc1 $t1, $f10 - sw $t0, ($a0) - sw $t2, 0x20($a0) - srl $t0, $t1, 0x10 - trunc.w.s $f10, $f8 - andi $t2, $t1, 0xFFFF - sw $t2, 0x28($a0) - sw $t0, 8($a0) - mfc1 $t1, $f10 - nop - srl $t2, $t1, 0x10 - sll $t0, $t2, 0x10 - sw $t0, 0x14($a0) - li $t0, 1 - sll $t2, $t1, 0x10 - sw $t2, 0x34($a0) - jr $ra - sw $t0, 0x1C($a0) + li.s ft0, 65536.0 + + mtc1 a1, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t1, ft3 + + srl t2, t1, 0x10 + sll t0, t2, 0x10 + sw t0, 0x00(a0) + sll t2, t1, 0x10 + sw t2, 0x20(a0) + + mtc1 a2, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t1, ft3 + + srl t0, t1, 0x10 + sw t0, 0x08(a0) + andi t2, t1, 0xFFFF + sw t2, 0x28(a0) + + mtc1 a3, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t1, ft3 + + srl t2, t1, 0x10 + sll t0, t2, 0x10 + sw t0, 0x14(a0) + sll t2, t1, 0x10 + sw t2, 0x34(a0) + + li t0, 1 + sw t0, 0x1C(a0) + + sw zero, 0x04(a0) + sw zero, 0x0C(a0) + sw zero, 0x10(a0) + sw zero, 0x18(a0) + sw zero, 0x24(a0) + sw zero, 0x2C(a0) + sw zero, 0x30(a0) + sw zero, 0x38(a0) + sw zero, 0x3C(a0) + + jr ra END(guScale) diff --git a/src/libultra/mgu/translate.s b/src/libultra/mgu/translate.s index d059ad5692..cf2d246434 100644 --- a/src/libultra/mgu/translate.s +++ b/src/libultra/mgu/translate.s @@ -1,61 +1,68 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" -.set noat -.set noreorder - -.section .text - -.balign 32 +.text +.align 5 LEAF(guTranslate) - li $at, 0x47800000 // 65536.0f - mtc1 $at, $f4 - mtc1 $a1, $f6 - sw $zero, ($a0) - sw $zero, 0x14($a0) - mul.s $f8, $f6, $f4 - mtc1 $a2, $f6 - sw $zero, 8($a0) - sw $zero, 4($a0) - sw $zero, 0xC($a0) - sw $zero, 0x10($a0) - sw $zero, 0x20($a0) - trunc.w.s $f10, $f8 - mul.s $f8, $f6, $f4 - mtc1 $a3, $f6 - sw $zero, 0x24($a0) - mfc1 $t1, $f10 - sw $zero, 0x28($a0) - sw $zero, 0x2C($a0) - srl $t2, $t1, 0x10 - trunc.w.s $f10, $f8 - mul.s $f8, $f6, $f4 - sll $t0, $t2, 0x10 - sw $zero, 0x30($a0) - mfc1 $t3, $f10 - sw $zero, 0x34($a0) - srl $t2, $t3, 0x10 - trunc.w.s $f10, $f8 - or $t0, $t0, $t2 - sw $t0, 0x18($a0) - sll $t0, $t1, 0x10 - sll $t2, $t3, 0x10 - mfc1 $t1, $f10 - srl $t2, $t2, 0x10 - or $t0, $t0, $t2 - sw $t0, 0x38($a0) - srl $t2, $t1, 0x10 - sll $t0, $t2, 0x10 - addiu $t0, $t0, 1 - sw $t0, 0x1C($a0) - lui $t0, 1 - ori $t0, $t0, 0 - sw $t0, ($a0) - sw $t0, 0x14($a0) - lui $t0, (0x00000001 >> 16) - ori $t0, (0x00000001 & 0xFFFF) - sll $t2, $t1, 0x10 - sw $t2, 0x3C($a0) - jr $ra - sw $t0, 8($a0) + li.s ft0, 65536.0 + + mtc1 a1, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t1, ft3 + + mtc1 a2, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t3, ft3 + + srl t2, t1, 0x10 + sll t0, t2, 0x10 + srl t2, t3, 0x10 + or t0, t0, t2 + sw t0, 0x18(a0) + + sll t0, t1, 0x10 + sll t2, t3, 0x10 + srl t2, t2, 0x10 + or t0, t0, t2 + sw t0, 0x38(a0) + + mtc1 a3, ft1 + mul.s ft2, ft1, ft0 + trunc.w.s ft3, ft2 + mfc1 t1, ft3 + + srl t2, t1, 0x10 + sll t0, t2, 0x10 + addiu t0, t0, 1 + sw t0, 0x1C(a0) + + sll t2, t1, 0x10 + sw t2, 0x3C(a0) + + sw zero, 0x00(a0) + sw zero, 0x04(a0) + sw zero, 0x08(a0) + sw zero, 0x0C(a0) + sw zero, 0x10(a0) + sw zero, 0x14(a0) + sw zero, 0x20(a0) + sw zero, 0x24(a0) + sw zero, 0x28(a0) + sw zero, 0x2C(a0) + sw zero, 0x30(a0) + sw zero, 0x34(a0) + + lui t0, (0x00010000 >> 16) + ori t0, (0x00010000 & 0xFFFF) + sw t0, (a0) + sw t0, 0x14(a0) + + lui t0, (0x00000001 >> 16) + ori t0, (0x00000001 & 0xFFFF) + sw t0, 8(a0) + + jr ra END(guTranslate) diff --git a/src/libultra/os/exceptasm.s b/src/libultra/os/exceptasm.s index 3c55d66ac8..cdadef1f7f 100644 --- a/src/libultra/os/exceptasm.s +++ b/src/libultra/os/exceptasm.s @@ -1,22 +1,24 @@ +#ifdef __GNUC__ +.set gp=64 +#endif #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/rcp.h" +#include "ultra64/bcp.h" #include "ultra64/message.h" #include "ultra64/thread.h" #include "ultra64/exception.h" #include "ultra64/version.h" -.set noat -.set noreorder -.set gp=64 +#define MESG(x) ((x) << 3) -.section .data - -.balign 16 +.data +.align 2 DATA(__osHwIntTable) .word 0, 0 - .word 0, 0 // cart + .word 0, 0 /* cart */ .word 0, 0 .word 0, 0 .word 0, 0 @@ -26,9 +28,8 @@ DATA(__osPiIntTable) .word 0, 0 ENDDATA(__osPiIntTable) -.section .rodata - -.balign 16 +.rdata +.align 2 __osIntOffTable: .byte 0x00 /* redispatch */ @@ -75,215 +76,197 @@ __osIntTable: .word IP7_Hdlr .word counter -.section .text - -.balign 16 +.text /** - * The exception preamble is copied to the exception vectors at + * The 16-byte exception preamble is copied to the exception vectors at * UT_VEC, XUT_VEC, ECC_VEC, E_VEC, to direct execution to __osException */ LEAF(__osExceptionPreamble) - lui $k0, %hi(__osException) - addiu $k0, %lo(__osException) - jr $k0 - nop + la k0, __osException + jr k0 END(__osExceptionPreamble) LEAF(__osException) - // Load scratch space for thread saving - lui $k0, %hi(__osThreadSave) - addiu $k0, %lo(__osThreadSave) - // Save $at - sd $at, THREAD_AT($k0) - // Save sr - mfc0 $k1, C0_SR - sw $k1, THREAD_SR($k0) - // Disable interrupts - li $at, ~(SR_IE | SR_EXL) - and $k1, $k1, $at - mtc0 $k1, C0_SR - // Save some temp registers for use in the following - sd $t0, THREAD_T0($k0) - sd $t1, THREAD_T1($k0) - sd $t2, THREAD_T2($k0) - // Mark FPU as unused - sw $zero, THREAD_FP($k0) - // Left over from misplaced ifdef, immediately overwritten on next instruction - mfc0 $t0, C0_CAUSE +.set noat + /* Load scratch space for thread saving */ + la k0, __osThreadSave + /* Save at */ + sd AT, THREAD_AT(k0) +.set at + /* Save sr */ + MFC0( k1, C0_SR) + sw k1, THREAD_SR(k0) + /* Disable interrupts */ + and k1, k1, ~(SR_IE | SR_EXL) + MTC0( k1, C0_SR) + /* Save some temp registers for use in the following */ + sd t0, THREAD_T0(k0) + sd t1, THREAD_T1(k0) + sd t2, THREAD_T2(k0) + /* Mark FPU as unused */ + sw zero, THREAD_FP(k0) + /* Left over from misplaced ifdef, immediately overwritten on next instruction */ + MFC0( t0, C0_CAUSE) savecontext: - // Save the previously running thread's context to be restored when it resumes - move $t0, $k0 - lui $k0, %hi(__osRunningThread) - lw $k0, %lo(__osRunningThread)($k0) - ld $t1, THREAD_AT($t0) - sd $t1, THREAD_AT($k0) - ld $t1, THREAD_SR($t0) - sd $t1, THREAD_SR($k0) - ld $t1, THREAD_T0($t0) - sd $t1, THREAD_T0($k0) - ld $t1, THREAD_T1($t0) - sd $t1, THREAD_T1($k0) - ld $t1, THREAD_T2($t0) - sd $t1, THREAD_T2($k0) - lw $k1, THREAD_SR($k0) - mflo $t0 - sd $t0, THREAD_LO($k0) - mfhi $t0 - andi $t1, $k1, SR_IMASK - sd $v0, THREAD_V0($k0) - sd $v1, THREAD_V1($k0) - sd $a0, THREAD_A0($k0) - sd $a1, THREAD_A1($k0) - sd $a2, THREAD_A2($k0) - sd $a3, THREAD_A3($k0) - sd $t3, THREAD_T3($k0) - sd $t4, THREAD_T4($k0) - sd $t5, THREAD_T5($k0) - sd $t6, THREAD_T6($k0) - sd $t7, THREAD_T7($k0) - sd $s0, THREAD_S0($k0) - sd $s1, THREAD_S1($k0) - sd $s2, THREAD_S2($k0) - sd $s3, THREAD_S3($k0) - sd $s4, THREAD_S4($k0) - sd $s5, THREAD_S5($k0) - sd $s6, THREAD_S6($k0) - sd $s7, THREAD_S7($k0) - sd $t8, THREAD_T8($k0) - sd $t9, THREAD_T9($k0) - sd $gp, THREAD_GP($k0) - sd $sp, THREAD_SP($k0) - sd $fp, THREAD_S8($k0) - sd $ra, THREAD_RA($k0) - beqz $t1, savercp - sd $t0, THREAD_HI($k0) - // If any CPU interrupts are enabled in the previous thread's SR, bitwise-OR in the - // disabled CPU interrupts from the global interrupt mask. - // This is an attempt at reverting the effect of masking the thread's SR with the - // global interrupt mask. This is however broken, see comments for osSetIntMask. - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, ($t0) - li $at, ~0 - xor $t2, $t0, $at - lui $at, ((~SR_IMASK) >> 0x10) & 0xFFFF - andi $t2, $t2, SR_IMASK - ori $at, (~SR_IMASK) & 0xFFFF - or $t4, $t1, $t2 - and $t3, $k1, $at - andi $t0, $t0, SR_IMASK - or $t3, $t3, $t4 - and $t1, $t1, $t0 - and $k1, $k1, $at - sw $t3, THREAD_SR($k0) - or $k1, $k1, $t1 +.set noreorder + /* Save the previously running thread's context to be restored when it resumes */ + move t0, k0 + lw k0, __osRunningThread + ld t1, THREAD_AT(t0) + sd t1, THREAD_AT(k0) + ld t1, THREAD_SR(t0) + sd t1, THREAD_SR(k0) + ld t1, THREAD_T0(t0) + sd t1, THREAD_T0(k0) + ld t1, THREAD_T1(t0) + sd t1, THREAD_T1(k0) + ld t1, THREAD_T2(t0) + sd t1, THREAD_T2(k0) +.set reorder + sd $2, THREAD_V0(k0) + sd $3, THREAD_V1(k0) + sd $4, THREAD_A0(k0) + sd $5, THREAD_A1(k0) + sd $6, THREAD_A2(k0) + sd $7, THREAD_A3(k0) + sd $11, THREAD_T3(k0) + sd $12, THREAD_T4(k0) + sd $13, THREAD_T5(k0) + sd $14, THREAD_T6(k0) + sd $15, THREAD_T7(k0) + sd $16, THREAD_S0(k0) + sd $17, THREAD_S1(k0) + sd $18, THREAD_S2(k0) + sd $19, THREAD_S3(k0) + sd $20, THREAD_S4(k0) + sd $21, THREAD_S5(k0) + sd $22, THREAD_S6(k0) + sd $23, THREAD_S7(k0) + sd $24, THREAD_T8(k0) + sd $25, THREAD_T9(k0) + sd $28, THREAD_GP(k0) + sd $29, THREAD_SP(k0) + sd $30, THREAD_S8(k0) + sd $31, THREAD_RA(k0) + mflo t0 + sd t0, THREAD_LO(k0) + mfhi t0 + sd t0, THREAD_HI(k0) + lw k1, THREAD_SR(k0) + andi t1, k1, SR_IMASK + beqz t1, savercp + /* If any CPU interrupts are enabled in the previous thread's SR, bitwise-OR in the */ + /* disabled CPU interrupts from the global interrupt mask. */ + /* This is an attempt at reverting the effect of masking the thread's SR with the */ + /* global interrupt mask. This is however broken, see comments for osSetIntMask. */ + la t0, __OSGlobalIntMask + lw t0, (t0) + xor t2, t0, 0xFFFFFFFF + andi t2, t2, SR_IMASK + or t4, t1, t2 + and t3, k1, ~SR_IMASK + or t3, t3, t4 + sw t3, THREAD_SR(k0) + andi t0, t0, SR_IMASK + and t1, t1, t0 + and k1, k1, ~SR_IMASK + or k1, k1, t1 savercp: - // Save the currently masked RCP interrupts. - lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1) - beqz $t1, endrcp - nop - // Similar to the above comment, but for RCP interrupt enable bits rather than CPU. - // This suffers from the same problem as above. - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, ($t0) - lw $t4, THREAD_RCP($k0) - li $at, ~0 - srl $t0, $t0, RCP_IMASKSHIFT - xor $t0, $t0, $at - andi $t0, $t0, (RCP_IMASK >> RCP_IMASKSHIFT) - and $t0, $t0, $t4 - or $t1, $t1, $t0 + /* Save the currently masked RCP interrupts. */ + lw t1, PHYS_TO_K1(MI_INTR_MASK_REG) + beqz t1, endrcp + /* Similar to the above comment, but for RCP interrupt enable bits rather than CPU. */ + /* This suffers from the same problem as above. */ + la t0, __OSGlobalIntMask + lw t0, (t0) + srl t0, t0, RCP_IMASKSHIFT + xor t0, t0, 0xFFFFFFFF + andi t0, t0, (RCP_IMASK >> RCP_IMASKSHIFT) + lw t4, THREAD_RCP(k0) + and t0, t0, t4 + or t1, t1, t0 endrcp: - sw $t1, THREAD_RCP($k0) - mfc0 $t0, C0_EPC - sw $t0, THREAD_PC($k0) - lw $t0, THREAD_FP($k0) - beqz $t0, handle_interrupt - nop - // Save FP Registers if FPU was used by the thread - cfc1 $t0, C1_FPCSR + sw t1, THREAD_RCP(k0) + MFC0( t0, C0_EPC) + sw t0, THREAD_PC(k0) + lw t0, THREAD_FP(k0) + beqz t0, handle_interrupt + /* Save FP Registers if FPU was used by the thread */ +.set noreorder + cfc1 t0, C1_FPCSR nop - sw $t0, THREAD_FPCSR($k0) - sdc1 $f0, THREAD_FP0($k0) - sdc1 $f2, THREAD_FP2($k0) - sdc1 $f4, THREAD_FP4($k0) - sdc1 $f6, THREAD_FP6($k0) - sdc1 $f8, THREAD_FP8($k0) - sdc1 $f10, THREAD_FP10($k0) - sdc1 $f12, THREAD_FP12($k0) - sdc1 $f14, THREAD_FP14($k0) - sdc1 $f16, THREAD_FP16($k0) - sdc1 $f18, THREAD_FP18($k0) - sdc1 $f20, THREAD_FP20($k0) - sdc1 $f22, THREAD_FP22($k0) - sdc1 $f24, THREAD_FP24($k0) - sdc1 $f26, THREAD_FP26($k0) - sdc1 $f28, THREAD_FP28($k0) - sdc1 $f30, THREAD_FP30($k0) + sw t0, THREAD_FPCSR(k0) +.set reorder + sdc1 $f0, THREAD_FP0(k0) + sdc1 $f2, THREAD_FP2(k0) + sdc1 $f4, THREAD_FP4(k0) + sdc1 $f6, THREAD_FP6(k0) + sdc1 $f8, THREAD_FP8(k0) + sdc1 $f10, THREAD_FP10(k0) + sdc1 $f12, THREAD_FP12(k0) + sdc1 $f14, THREAD_FP14(k0) + sdc1 $f16, THREAD_FP16(k0) + sdc1 $f18, THREAD_FP18(k0) + sdc1 $f20, THREAD_FP20(k0) + sdc1 $f22, THREAD_FP22(k0) + sdc1 $f24, THREAD_FP24(k0) + sdc1 $f26, THREAD_FP26(k0) + sdc1 $f28, THREAD_FP28(k0) + sdc1 $f30, THREAD_FP30(k0) handle_interrupt: - // Determine the cause of the exception or interrupt and - // enter appropriate handling routine - mfc0 $t0, C0_CAUSE - sw $t0, THREAD_CAUSE($k0) - li $t1, OS_STATE_RUNNABLE - sh $t1, THREAD_STATE($k0) - andi $t1, $t0, CAUSE_EXCMASK - // Test for break exception - li $t2, EXC_BREAK - beq $t1, $t2, handle_break - nop - // Test for CpU (coprocessor unusable) exception - li $t2, EXC_CPU - beq $t1, $t2, handle_CpU - nop - // Test for interrupt, if it's not an interrupt, panic - li $t2, EXC_INT - bne $t1, $t2, panic - nop - and $s0, $k1, $t0 + /* Determine the cause of the exception or interrupt and */ + /* enter appropriate handling routine */ + MFC0( t0, C0_CAUSE) + sw t0, THREAD_CAUSE(k0) +label: + li t1, OS_STATE_RUNNABLE + sh t1, THREAD_STATE(k0) + andi t1, t0, CAUSE_EXCMASK + /* Test for break exception */ + li t2, EXC_BREAK + beq t1, t2, handle_break + /* Test for CpU (coprocessor unusable) exception */ + li t2, EXC_CPU + beq t1, t2, handle_CpU + /* Test for interrupt, if it's not an interrupt, panic */ + li t2, EXC_INT + bne t1, t2, panic + + and s0, k1, t0 next_interrupt: - // Handle external interrupt causes, using a jump table - // to enter into the appropriate handler - andi $t1, $s0, CAUSE_IPMASK - srl $t2, $t1, CAUSE_IPSHIFT + 4 - bnez $t2, 1f - nop - srl $t2, $t1, CAUSE_IPSHIFT - addi $t2, $t2, 0x10 + /* Handle external interrupt causes, using a jump table */ + /* to enter into the appropriate handler */ + andi t1, s0, CAUSE_IPMASK + srl t2, t1, CAUSE_IPSHIFT + 4 + bnez t2, 1f + + srl t2, t1, CAUSE_IPSHIFT + addi t2, t2, 0x10 1: - lui $at, %hi(__osIntOffTable) - addu $at, $at, $t2 - lbu $t2, %lo(__osIntOffTable)($at) - lui $at, %hi(__osIntTable) - addu $at, $at, $t2 - lw $t2, %lo(__osIntTable)($at) - jr $t2 - nop + lbu t2, __osIntOffTable(t2) + lw t2, __osIntTable(t2) + jr t2 /** * IP6 Interrupt * Only signalled by development hardware */ IP6_Hdlr: - // Mask out interrupt and continue - li $at, ~CAUSE_IP6 + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_IP6 b next_interrupt - and $s0, $s0, $at /** * IP7 Interrupt * Only signalled by development hardware */ IP7_Hdlr: - // Mask out interrupt and continue - li $at, ~CAUSE_IP7 + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_IP7 b next_interrupt - and $s0, $s0, $at /** * IP8/Counter Interrupt @@ -291,435 +274,473 @@ IP7_Hdlr: * cop0 compare register, this interrupt is triggered */ counter: - mfc0 $t1, C0_COMPARE - mtc0 $t1, C0_COMPARE - // Post counter message + MFC0( t1, C0_COMPARE) + MTC0( t1, C0_COMPARE) + /* Post counter message */ + li a0, MESG(OS_EVENT_COUNTER) jal send_mesg - li $a0, OS_EVENT_COUNTER*8 - // Mask out interrupt and continue - li $at, ~CAUSE_IP8 + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_IP8 b next_interrupt - and $s0, $s0, $at /** - * IP4/Cartridge Interrupt - * Signalled by the N64 Disk Drive + * N64: + * IP4/Cartridge Interrupt + * Signalled by the N64 Disk Drive + * iQue: + * IP4/BCP Interrupt + * New RCP Interrupts */ cart: - // Load cart callback set by __osSetHWIntrRoutine - lui $t1, %hi(__osHwIntTable) - addiu $t1, %lo(__osHwIntTable) - lw $t2, (OS_INTR_CART*HWINT_SIZE+HWINT_CALLBACK)($t1) - // Mask out interrupt - li $at, ~CAUSE_IP4 - and $s0, $s0, $at - // If the callback is NULL, handling is done - beqz $t2, send_cart_mesg - addi $t1, $t1, (OS_INTR_CART*HWINT_SIZE) - // Set up a stack and run the callback - jalr $t2 - lw $sp, HWINT_SP($t1) - beqz $v0, send_cart_mesg - nop - // Redispatch immediately if the callback returned nonzero + /* Mask out interrupt */ + and s0, s0, ~CAUSE_IP4 + /* Load cart callback set by __osSetHWIntrRoutine */ + la t1, __osHwIntTable + addi t1, t1, (OS_INTR_CART * HWINT_SIZE) + lw t2, HWINT_CALLBACK(t1) + /* If the callback is NULL, handling is done */ + beqz t2, 1f + /* Set up a stack and run the callback */ + lw sp, HWINT_SP(t1) + jalr t2 + beqz v0, 1f + /* Redispatch immediately if the callback returned nonzero */ b redispatch - nop -send_cart_mesg: - // Post a cart event message +1: +#ifndef BBPLAYER + /* Post a cart event message */ + li a0, MESG(OS_EVENT_CART) jal send_mesg - li $a0, OS_EVENT_CART*8 - // Continue +#else + /* On the iQue Player the CART interrupt no longer exists. New RCP interrupts are vectored here */ + lw s1, PHYS_TO_K1(MI_EX_INTR_REG) + +flash: + /* Check for FLASH interrupt */ + andi t1, s1, MI_EX_INTR_FLASH + beqz t1, flashx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_FLASH + /* Clear it */ + li t1, 0 + sw t1, PHYS_TO_K1(PI_NAND_CTRL_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_FLASH) + jal send_mesg +flashx: +md: + /* Check for MD interrupt */ + andi t1, s1, MI_EX_INTR_MD + beqz t1, mdx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_MD + /* Clear it */ + li t1, MI_EX_INTR_CLR_MD + sw t1, PHYS_TO_K1(MI_EX_INTR_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_MD) + jal send_mesg +mdx: +aes: + /* Check for AES interrupt */ + andi t1, s1, MI_EX_INTR_AES + beqz t1, aesx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_AES + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_AES + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_AES) + jal send_mesg +aesx: +ide: + /* Check for IDE interrupt */ + andi t1, s1, MI_EX_INTR_IDE + beqz t1, idex + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_IDE + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_IDE + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_IDE) + jal send_mesg +idex: +pi_err: + /* Check for PI_ERR Interrupt */ + andi t1, s1, MI_EX_INTR_PI_ERR + beqz t1, pi_errx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_PI_ERR + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_PI_ERR + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_PI_ERR) + jal send_mesg +pi_errx: +usb0: + /* Check for USB0 Interrupt */ + andi t1, s1, MI_EX_INTR_USB0 + beqz t1, usb0x + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_USB0 + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_USB0 + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_USB0) + jal send_mesg +usb0x: +usb1: + /* Check for USB1 Interrupt */ + andi t1, s1, MI_EX_INTR_USB1 + beqz t1, usb1x + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_USB1 + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_USB1 + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_USB1) + jal send_mesg +usb1x: +#endif + /* Continue */ b next_interrupt - nop /** * IP3/RCP Interrupt * Signalled by the RCP for various reasons, described below */ rcp: - // Load the MI interrupts and mask with the RCP bits in the global interrupt mask - //! @bug this clobbers the t0 register which is expected to hold the value of the - //! C0_CAUSE register in the sw1 and sw2 handlers. If the sw1 or sw2 handler runs - //! after this, the interrupt will not be cleared properly. - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, ($t0) - lui $s1, %hi(PHYS_TO_K1(MI_INTR_REG)) - lw $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1) - srl $t0, $t0, RCP_IMASKSHIFT - and $s1, $s1, $t0 + /* Load the MI interrupts and mask with the RCP bits in the global interrupt mask */ + /*! @bug this clobbers the t0 register which is expected to hold the value of the */ + /*! C0_CAUSE register in the sw1 and sw2 handlers. If the sw1 or sw2 handler runs */ + /*! after this, the interrupt will not be cleared properly. */ + lw s1, PHYS_TO_K1(MI_INTR_REG) + la t0, __OSGlobalIntMask + lw t0, (t0) + srl t0, t0, RCP_IMASKSHIFT + and s1, s1, t0 /** * Signal Processor (SP) Interrupt */ -sp: - // Test for sp interrupt - andi $t1, $s1, MI_INTR_SP - beqz $t1, vi - nop - // Test for yielded or done signals in particular - lui $t4, %hi(PHYS_TO_K1(SP_STATUS_REG)) - lw $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4) - li $t1, (SP_CLR_INTR | SP_CLR_SIG3) - lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG)) - andi $t4, $t4, (SP_STATUS_YIELDED | SP_STATUS_TASKDONE) - // Mask out SP interrupt - andi $s1, $s1, (MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) - beqz $t4, sp_other_break - // Clear interrupt and signal 3 - sw $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at) - // Post an SP event message + /* Test for sp interrupt */ + andi t1, s1, MI_INTR_SP + beqz t1, vi + /* Mask out SP interrupt */ + andi s1, s1, (MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) + lw t4, PHYS_TO_K1(SP_STATUS_REG) + /* Clear interrupt and signal 3 */ + li t1, (SP_CLR_INTR | SP_CLR_SIG3) + sw t1, PHYS_TO_K1(SP_STATUS_REG) + /* Test for yielded or done signals in particular */ + andi t4, t4, (SP_STATUS_YIELDED | SP_STATUS_TASKDONE) + beqz t4, sp_other_break + /* Post an SP event message */ + li a0, MESG(OS_EVENT_SP) jal send_mesg - li $a0, OS_EVENT_SP*8 - beqz $s1, NoMoreRcpInts - nop - // Step over sp_other_break handler + beqz s1, NoMoreRcpInts + /* Step over sp_other_break handler */ b vi - nop sp_other_break: - // An sp signal that is not due to yielding or task completion, such as - // an sp breakpoint. Post a different event message + /* An sp signal that is not due to yielding or task completion, such as */ + /* an sp breakpoint. Post a different event message */ + li a0, MESG(OS_EVENT_SP_BREAK) jal send_mesg - li $a0, OS_EVENT_SP_BREAK*8 - beqz $s1, NoMoreRcpInts - nop + beqz s1, NoMoreRcpInts /** * Video Interface (VI) Interrupt */ vi: - // Test for vi interrupt - andi $t1, $s1, MI_INTR_VI - beqz $t1, ai - lui $at, %hi(PHYS_TO_K1(VI_CURRENT_REG)) - // Mask out vi interrupt - andi $s1, $s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_PI | MI_INTR_DP) - // Clear interrupt - sw $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at) - // Post vi event message + /* Test for vi interrupt */ + andi t1, s1, MI_INTR_VI + beqz t1, ai + /* Mask out vi interrupt */ + andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_PI | MI_INTR_DP) + /* Clear interrupt */ + sw zero, PHYS_TO_K1(VI_CURRENT_REG) + /* Post vi event message */ + li a0, MESG(OS_EVENT_VI) jal send_mesg - li $a0, OS_EVENT_VI*8 - beqz $s1, NoMoreRcpInts - nop + beqz s1, NoMoreRcpInts /** * Audio Interface (AI) Interrupt */ ai: - // Test for ai interrupt - andi $t1, $s1, MI_INTR_AI - beqz $t1, si - nop - li $t1, 1 - lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG)) - // Mask out ai interrupt - andi $s1, $s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) - // Clear interrupt - sw $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at) - // Post ai event message + /* Test for ai interrupt */ + andi t1, s1, MI_INTR_AI + beqz t1, si + + /* Mask out ai interrupt */ + andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) + /* Clear interrupt */ + li t1, 1 + sw t1, PHYS_TO_K1(AI_STATUS_REG) + /* Post ai event message */ + li a0, MESG(OS_EVENT_AI) jal send_mesg - li $a0, OS_EVENT_AI*8 - beqz $s1, NoMoreRcpInts - nop + beqz s1, NoMoreRcpInts /** * Serial Interface (SI) Interrupt */ si: - // Test for si interrupt - andi $t1, $s1, MI_INTR_SI - beqz $t1, pi - lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG)) - // Mask out si interrupt - andi $s1, $s1, (MI_INTR_SP | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) - // Clear interrupt - sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at) - // Post si event message + /* Test for si interrupt */ + andi t1, s1, MI_INTR_SI + beqz t1, pi + + /* Mask out si interrupt */ + andi s1, s1, (MI_INTR_SP | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) + /* Clear interrupt */ + sw zero, PHYS_TO_K1(SI_STATUS_REG) + /* Post si event message */ + li a0, MESG(OS_EVENT_SI) jal send_mesg - li $a0, OS_EVENT_SI*8 - beqz $s1, NoMoreRcpInts - nop + beqz s1, NoMoreRcpInts /** * Parallel Interface (PI) Interrupt */ pi: - // Test for pi interrupt - andi $t1, $s1, MI_INTR_PI - beqz $t1, dp - nop -#if LIBULTRA_VERSION < LIBULTRA_VERSION_J - // Clear interrupt and mask out pi interrupt - li $t1, PI_STATUS_CLR_INTR - lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG)) - andi $s1, $s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_DP) - sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at) -#else - // Clear interrupt - li $t1, PI_STATUS_CLR_INTR - lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG)) - sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at) - // Load pi callback - lui $t1, %hi(__osPiIntTable) - addiu $t1, %lo(__osPiIntTable) - lw $t2, HWINT_CALLBACK($t1) - // Mask out pi interrupt - andi $s1, $s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_DP) - // Skip callback if NULL - beqz $t2, no_pi_callback - nop - // Set up a stack and run the callback - lw $sp, HWINT_SP($t1) - jalr $t2 - move $a0, $v0 - // If the callback returns non-zero, don't post a pi event message - bnez $v0, skip_pi_mesg - nop + /* Test for pi interrupt */ + andi t1, s1, MI_INTR_PI + beqz t1, dp + + /* Mask out pi interrupt */ + andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_DP) + /* Clear the interrupt */ + li t1, PI_STATUS_CLR_INTR + sw t1, PHYS_TO_K1(PI_STATUS_REG) +#if LIBULTRA_VERSION >= LIBULTRA_VERSION_J + /* Load pi callback */ + la t1, __osPiIntTable + lw t2, HWINT_CALLBACK(t1) + /* Skip callback if NULL */ + beqz t2, no_pi_callback + /* Set up a stack and run the callback */ + lw sp, HWINT_SP(t1) + move a0, v0 + jalr t2 + /* If the callback returns non-zero, don't post a pi event message */ + bnez v0, skip_pi_mesg #endif no_pi_callback: - // Post pi event message + /* Post pi event message */ + li a0, MESG(OS_EVENT_PI) jal send_mesg - li $a0, OS_EVENT_PI*8 skip_pi_mesg: - beqz $s1, NoMoreRcpInts - nop + beqz s1, NoMoreRcpInts /** * Display Processor (DP) Interrupt */ dp: - // Test for dp interrupt - andi $t1, $s1, MI_INTR_DP - beqz $t1, NoMoreRcpInts - nop - // Clear dp interrupt - li $t1, MI_CLR_DP_INTR - lui $at, %hi(PHYS_TO_K1(MI_INIT_MODE_REG)) - // Mask out dp interrupt - andi $s1, $s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI) - sw $t1, %lo(PHYS_TO_K1(MI_INIT_MODE_REG))($at) - // Post dp event message + /* Test for dp interrupt */ + andi t1, s1, MI_INTR_DP + beqz t1, NoMoreRcpInts + + /* Mask out dp interrupt */ + andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI) + /* Clear dp interrupt */ + li t1, MI_CLR_DP_INTR + sw t1, PHYS_TO_K1(MI_INIT_MODE_REG) + /* Post dp event message */ + li a0, MESG(OS_EVENT_DP) jal send_mesg - li $a0, OS_EVENT_DP*8 NoMoreRcpInts: - // Mask out interrupt and continue - li $at, ~CAUSE_IP3 + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_IP3 b next_interrupt - and $s0, $s0, $at /** * IP5/PreNMI Interrupt * Reset button has been pressed */ prenmi: - // Disable IP5/PreNMI interrupt for the previously running thread - lw $k1, THREAD_SR($k0) - li $at, ~SR_IBIT5 - lui $t1, %hi(__osShutdown) - and $k1, $k1, $at - sw $k1, THREAD_SR($k0) - addiu $t1, %lo(__osShutdown) - // Test __osShutdown for first PreNMI event - lw $t2, ($t1) - beqz $t2, firstnmi - li $at, ~CAUSE_IP5 - // Mask out interrupt and redispatch immediately + /* Disable IP5/PreNMI interrupt for the previously running thread */ + lw k1, THREAD_SR(k0) + and k1, k1, ~SR_IBIT5 + sw k1, THREAD_SR(k0) + /* Test __osShutdown for first PreNMI event */ + la t1, __osShutdown + lw t2, (t1) + beqz t2, firstnmi + /* Mask out interrupt and redispatch immediately */ + and s0, s0, ~CAUSE_IP5 b redispatch - and $s0, $s0, $at firstnmi: - // Set __osShutdown - li $t2, 1 - sw $t2, ($t1) - // Post a PreNMI event message + /* Set __osShutdown */ + li t2, 1 + sw t2, (t1) + /* Post a PreNMI event message */ + li a0, MESG(OS_EVENT_PRENMI) jal send_mesg - li $a0, OS_EVENT_PRENMI*8 - // Mask out and disable IP5/PreNMI interrupt for the highest priority thread - lui $t2, %hi(__osRunQueue) - lw $t2, %lo(__osRunQueue)($t2) - li $at, ~SR_IBIT5 - and $s0, $s0, $at - lw $k1, THREAD_SR($t2) - and $k1, $k1, $at - // Redispatch immediately + /* Mask out and disable IP5/PreNMI interrupt for the highest priority thread */ + and s0, s0, ~SR_IBIT5 + lw t2, __osRunQueue + lw k1, THREAD_SR(t2) + and k1, k1, ~SR_IBIT5 + sw k1, THREAD_SR(t2) + /* Redispatch immediately */ b redispatch - sw $k1, THREAD_SR($t2) sw2: - // Mask out interrupt - li $at, ~CAUSE_SW2 - and $t0, $t0, $at - mtc0 $t0, C0_CAUSE - // Post sw2 event message + /* Mask out interrupt */ + and t0, t0, ~CAUSE_SW2 + MTC0( t0, C0_CAUSE) + /* Post sw2 event message */ + li a0, MESG(OS_EVENT_SW2) jal send_mesg - li $a0, OS_EVENT_SW2*8 - li $at, ~CAUSE_SW2 - // Mask out interrupt and continue + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_SW2 b next_interrupt - and $s0, $s0, $at sw1: - // Mask out interrupt - li $at, ~CAUSE_SW1 - and $t0, $t0, $at - mtc0 $t0, C0_CAUSE - // Post sw1 event message + /* Mask out interrupt */ + and t0, t0, ~CAUSE_SW1 + MTC0( t0, C0_CAUSE) + /* Post sw1 event message */ + li a0, MESG(OS_EVENT_SW1) jal send_mesg - li $a0, OS_EVENT_SW1*8 - li $at, ~CAUSE_SW1 - // Mask out interrupt and continue + /* Mask out interrupt and continue */ + and s0, s0, ~CAUSE_SW1 b next_interrupt - and $s0, $s0, $at handle_break: - // Set last thread as having hit a break exception - li $t1, OS_FLAG_CPU_BREAK - sh $t1, THREAD_FLAGS($k0) - // Post a cpu break event message + /* Set last thread as having hit a break exception */ + li t1, OS_FLAG_CPU_BREAK + sh t1, THREAD_FLAGS(k0) + /* Post a cpu break event message */ + li a0, MESG(OS_EVENT_CPU_BREAK) jal send_mesg - li $a0, OS_EVENT_CPU_BREAK*8 - // Redispatch + /* Redispatch */ b redispatch - nop redispatch: - lui $t2, %hi(__osRunQueue) - lw $t2, %lo(__osRunQueue)($t2) - // Get priority of previously running thread - lw $t1, THREAD_PRI($k0) - // Get highest priority from waiting threads - lw $t3, THREAD_PRI($t2) - slt $at, $t1, $t3 - beqz $at, enqueueRunning - nop - // The previously running thread is no longer the highest priority, - // enqueue it to the run queue to wait its turn again - lui $a0, %hi(__osRunQueue) - move $a1, $k0 + /* Get priority of previously running thread */ + lw t1, THREAD_PRI(k0) + lw t2, __osRunQueue + /* Get highest priority from waiting threads */ + lw t3, THREAD_PRI(t2) + bge t1, t3, enqueueRunning + /* The previously running thread is no longer the highest priority, */ + /* enqueue it to the run queue to wait its turn again */ + move a1, k0 + la a0, __osRunQueue jal __osEnqueueThread - addiu $a0, $a0, %lo(__osRunQueue) + j __osDispatchThread - nop /** * Resume the previously running thread by placing it at the top of * the run queue and dispatching it */ enqueueRunning: - lui $t1, %hi(__osRunQueue) - addiu $t1, $t1, %lo(__osRunQueue) - lw $t2, ($t1) - sw $t2, THREAD_NEXT($k0) + la t1, __osRunQueue + lw t2, (t1) + sw t2, THREAD_NEXT(k0) + sw k0, (t1) j __osDispatchThread - sw $k0, ($t1) /** * Unhandled exceptions & interrupts end up here, * trap to software by posting a fault message */ panic: - // Mark the thread as having faulted - lui $at, %hi(__osFaultedThread) - sw $k0, %lo(__osFaultedThread)($at) - li $t1, OS_STATE_STOPPED - sh $t1, THREAD_STATE($k0) - li $t1, OS_FLAG_FAULT - sh $t1, THREAD_FLAGS($k0) - // Save C0_BADVADDR - mfc0 $t2, C0_BADVADDR - sw $t2, THREAD_BADVADDR($k0) - // Post the fault message + /* Mark the thread as having faulted */ + sw k0, __osFaultedThread + li t1, OS_STATE_STOPPED + sh t1, THREAD_STATE(k0) + li t1, OS_FLAG_FAULT + sh t1, THREAD_FLAGS(k0) + /* Save C0_BADVADDR */ + MFC0( t2, C0_BADVADDR) + sw t2, THREAD_BADVADDR(k0) + /* Post the fault message */ + li a0, MESG(OS_EVENT_FAULT) jal send_mesg - li $a0, OS_EVENT_FAULT*8 - // Dispatch next thread + /* Dispatch next thread */ j __osDispatchThread - nop /** * Handles posting event messages to the listening message queue, if there is one */ send_mesg: - // Load pointer to listening message queue - lui $t2, %hi(__osEventStateTab) - addiu $t2, %lo(__osEventStateTab) - addu $t2, $t2, $a0 - lw $t1, ($t2) - // Save return address - move $s2, $ra - // If there is no listening message queue, done - beqz $t1, send_done - nop - // Test if the message queue is full, if so don't post the message - lw $t3, MQ_VALIDCOUNT($t1) - lw $t4, MQ_MSGCOUNT($t1) - slt $at, $t3, $t4 - beqz $at, send_done - nop - // Add validcount to first and modulo with msgcount - lw $t5, MQ_FIRST($t1) - addu $t5, $t5, $t3 - // Modulo - div $zero, $t5, $t4 - bnez $t4, 1f - nop - break 7 // div0 -1: - li $at, -1 - bne $t4, $at, 2f - li $at, -0x80000000 - bne $t5, $at, 2f - nop - break 6 // overflow -2: - // End Modulo - lw $t4, MQ_MSG($t1) - mfhi $t5 - sll $t5, $t5, 2 - addu $t4, $t4, $t5 - // Fetch the message to post - lw $t5, 4($t2) - addiu $t2, $t3, 1 - // Post the message to the message queue - sw $t5, ($t4) - // Increment the validCount - sw $t2, MQ_VALIDCOUNT($t1) - // If there was a thread blocked on this message queue, - // wake it up - lw $t2, MQ_MTQUEUE($t1) - lw $t3, ($t2) - beqz $t3, send_done - nop + /* Save return address */ + move s2, ra + /* Load pointer to listening message queue */ + la t2, __osEventStateTab + addu t2, t2, a0 + lw t1, (t2) + /* If there is no listening message queue, done */ + beqz t1, send_done + + /* Test if the message queue is full, if so don't post the message */ + lw t3, MQ_VALIDCOUNT(t1) + lw t4, MQ_MSGCOUNT(t1) + bge t3, t4, send_done + + /* Add validcount to first and modulo with msgcount */ + lw t5, MQ_FIRST(t1) + addu t5, t5, t3 + rem t5, t5, t4 + lw t4, MQ_MSG(t1) + mul t5, t5, 4 + addu t4, t4, t5 + /* Post the message to the message queue */ + lw t5, 4(t2) + sw t5, (t4) + /* Increment the validCount */ + addiu t2, t3, 1 + sw t2, MQ_VALIDCOUNT(t1) + /* If there was a thread blocked on this message queue, */ + /* wake it up */ + lw t2, MQ_MTQUEUE(t1) + lw t3, (t2) + beqz t3, send_done + move a0, t1 jal __osPopThread - move $a0, $t1 - move $t2, $v0 - lui $a0, %hi(__osRunQueue) - move $a1, $t2 + move t2, v0 + move a1, t2 + la a0, __osRunQueue jal __osEnqueueThread - addiu $a0, %lo(__osRunQueue) send_done: - jr $s2 - nop + jr s2 /** * Handle coprocessor unusable exception */ handle_CpU: - li $at, CAUSE_CEMASK - and $t1, $t0, $at - srl $t1, $t1, CAUSE_CESHIFT - li $t2, 1 // if not coprocessor 1, panic - bne $t1, $t2, panic - nop - // Mark cop1 as usable for previous thread - lw $k1, THREAD_SR($k0) - li $at, SR_CU1 - li $t1, 1 - or $k1, $k1, $at - sw $t1, THREAD_FP($k0) + and t1, t0, CAUSE_CEMASK + srl t1, t1, CAUSE_CESHIFT + li t2, 1 /* if not coprocessor 1, panic */ + bne t1, t2, panic + /* Mark cop1 as usable for previous thread */ + li t1, 1 + sw t1, THREAD_FP(k0) + lw k1, THREAD_SR(k0) + or k1, k1, SR_CU1 + sw k1, THREAD_SR(k0) b enqueueRunning - sw $k1, THREAD_SR($k0) END(__osException) /** @@ -731,83 +752,71 @@ END(__osException) * unblocked runnable thread. */ LEAF(__osEnqueueAndYield) - lui $a1, %hi(__osRunningThread) - lw $a1, %lo(__osRunningThread)($a1) - // Save SR - mfc0 $t0, C0_SR - lw $k1, THREAD_FP($a1) - ori $t0, $t0, SR_EXL - sw $t0, THREAD_SR($a1) - // Save callee-saved registers - sd $s0, THREAD_S0($a1) - sd $s1, THREAD_S1($a1) - sd $s2, THREAD_S2($a1) - sd $s3, THREAD_S3($a1) - sd $s4, THREAD_S4($a1) - sd $s5, THREAD_S5($a1) - sd $s6, THREAD_S6($a1) - sd $s7, THREAD_S7($a1) - sd $gp, THREAD_GP($a1) - sd $sp, THREAD_SP($a1) - sd $fp, THREAD_S8($a1) - sd $ra, THREAD_RA($a1) - // Save FPU callee-saved registers if the current thread has used the FPU - beqz $k1, 1f - sw $ra, THREAD_PC($a1) - cfc1 $k1, C1_FPCSR - sdc1 $f20, THREAD_FP20($a1) - sdc1 $f22, THREAD_FP22($a1) - sdc1 $f24, THREAD_FP24($a1) - sdc1 $f26, THREAD_FP26($a1) - sdc1 $f28, THREAD_FP28($a1) - sdc1 $f30, THREAD_FP30($a1) - sw $k1, THREAD_FPCSR($a1) + lw a1, __osRunningThread + /* Save SR */ + MFC0( t0, C0_SR) + ori t0, t0, SR_EXL + sw t0, THREAD_SR(a1) + /* Save callee-saved registers */ + sd s0, THREAD_S0(a1) + sd s1, THREAD_S1(a1) + sd s2, THREAD_S2(a1) + sd s3, THREAD_S3(a1) + sd s4, THREAD_S4(a1) + sd s5, THREAD_S5(a1) + sd s6, THREAD_S6(a1) + sd s7, THREAD_S7(a1) + sd gp, THREAD_GP(a1) + sd sp, THREAD_SP(a1) + sd fp, THREAD_S8(a1) + sd ra, THREAD_RA(a1) + sw ra, THREAD_PC(a1) + /* Save FPU callee-saved registers if the current thread has used the FPU */ + lw k1, THREAD_FP(a1) + beqz k1, 1f + cfc1 k1, C1_FPCSR + sw k1, THREAD_FPCSR(a1) + sdc1 $f20, THREAD_FP20(a1) + sdc1 $f22, THREAD_FP22(a1) + sdc1 $f24, THREAD_FP24(a1) + sdc1 $f26, THREAD_FP26(a1) + sdc1 $f28, THREAD_FP28(a1) + sdc1 $f30, THREAD_FP30(a1) 1: - lw $k1, THREAD_SR($a1) - andi $t1, $k1, SR_IMASK - beqz $t1, 2f - nop - // This code does the same thing as the block just above the `savercp` label. - // See the comment there for more about this. - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, ($t0) - li $at, ~0 - xor $t0, $t0, $at - lui $at, ((~SR_IMASK) >> 0x10) & 0xFFFF - andi $t0, $t0, SR_IMASK - ori $at, (~SR_IMASK) & 0xFFFF - or $t1, $t1, $t0 - and $k1, $k1, $at - or $k1, $k1, $t1 - sw $k1, THREAD_SR($a1) + lw k1, THREAD_SR(a1) + andi t1, k1, SR_IMASK + beqz t1, 2f + /* This code does the same thing as the block just above the `savercp` label. */ + /* See the comment there for more about this. */ + la t0, __OSGlobalIntMask + lw t0, (t0) + xor t0, t0, 0xFFFFFFFF + andi t0, t0, SR_IMASK + or t1, t1, t0 + and k1, k1, ~SR_IMASK + or k1, k1, t1 + sw k1, THREAD_SR(a1) 2: - lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - lw $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1) - beqz $k1, 3f - nop - // This code does the same thing as the block just below the `savercp` label. - // See the comment there for more about this. - lui $k0, %hi(__OSGlobalIntMask) - addiu $k0, %lo(__OSGlobalIntMask) - lw $k0, ($k0) - lw $t0, THREAD_RCP($a1) - li $at, ~0 - srl $k0, $k0, RCP_IMASKSHIFT - xor $k0, $k0, $at - andi $k0, $k0, (RCP_IMASK >> RCP_IMASKSHIFT) - and $k0, $k0, $t0 - or $k1, $k1, $k0 + lw k1, PHYS_TO_K1(MI_INTR_MASK_REG) + beqz k1, 3f + /* This code does the same thing as the block just below the `savercp` label. */ + /* See the comment there for more about this. */ + la k0, __OSGlobalIntMask + lw k0, (k0) + srl k0, k0, RCP_IMASKSHIFT + xor k0, k0, 0xFFFFFFFF + andi k0, k0, (RCP_IMASK >> RCP_IMASKSHIFT) + lw t0, THREAD_RCP(a1) + and k0, k0, t0 + or k1, k1, k0 3: - // If the specified thread queue is null, skip - // straight to dispatching - beqz $a0, no_enqueue - sw $k1, THREAD_RCP($a1) + /* If the specified thread queue is null, skip */ + /* straight to dispatching */ + sw k1, THREAD_RCP(a1) + beqz a0, no_enqueue jal __osEnqueueThread - nop no_enqueue: j __osDispatchThread - nop END(__osEnqueueAndYield) /** @@ -816,31 +825,27 @@ END(__osEnqueueAndYield) * Enqueues `thread` to the thread queue `threadQueue`, inserted by priority */ LEAF(__osEnqueueThread) - lw $t8, ($a0) - lw $t7, THREAD_PRI($a1) - move $t9, $a0 - lw $t6, THREAD_PRI($t8) - slt $at, $t6, $t7 - // If the current highest priority thread is a lower priority than - // the new thread, skip searching the queue - bnez $at, 2f - nop + move t9, a0 + lw t8, (a0) + lw t7, THREAD_PRI(a1) + lw t6, THREAD_PRI(t8) + /* If the current highest priority thread is a lower priority than */ + /* the new thread, skip searching the queue */ + blt t6, t7, 2f 1: - // Search the queue for the position to insert the thread to maintain - // ordering by priority - move $t9, $t8 - lw $t8, THREAD_NEXT($t8) - lw $t6, THREAD_PRI($t8) - slt $at, $t6, $t7 - beqz $at, 1b - nop + /* Search the queue for the position to insert the thread to maintain */ + /* ordering by priority */ + move t9, t8 + lw t8, THREAD_NEXT(t8) + lw t6, THREAD_PRI(t8) + bge t6, t7, 1b 2: - // Insert the thread into the queue - lw $t8, ($t9) - sw $t8, THREAD_NEXT($a1) - sw $a1, ($t9) - jr $ra - sw $a0, THREAD_QUEUE($a1) + /* Insert the thread into the queue */ + lw t8, (t9) + sw t8, THREAD_NEXT(a1) + sw a1, (t9) + sw a0, THREAD_QUEUE(a1) + jr ra END(__osEnqueueThread) /** @@ -850,16 +855,15 @@ END(__osEnqueueThread) * thread queue `threadQueue` and returns it */ LEAF(__osPopThread) - lw $v0, ($a0) - lw $t9, THREAD_NEXT($v0) - jr $ra - sw $t9, ($a0) + lw v0, (a0) + lw t9, THREAD_NEXT(v0) + sw t9, (a0) + jr ra END(__osPopThread) #if LIBULTRA_VERSION >= LIBULTRA_VERSION_K LEAF(__osNop) - jr $ra - nop + jr ra END(__osNop) #endif @@ -869,113 +873,111 @@ END(__osNop) * Dispatches the next thread to run after restoring the context */ LEAF(__osDispatchThread) - // Obtain highest priority thread from the active run queue - lui $a0, %hi(__osRunQueue) + /* Obtain highest priority thread from the active run queue */ + la a0, __osRunQueue jal __osPopThread - addiu $a0, $a0, %lo(__osRunQueue) - // Set thread as running - lui $at, %hi(__osRunningThread) - sw $v0, %lo(__osRunningThread)($at) - li $t0, OS_STATE_RUNNING - sh $t0, THREAD_STATE($v0) - // Restore SR, masking out any interrupts that are not also - // enabled in the global interrupt mask - move $k0, $v0 - lui $t0, %hi(__OSGlobalIntMask) - lw $k1, THREAD_SR($k0) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, ($t0) - lui $at, ((~SR_IMASK) >> 0x10) & 0xFFFF - andi $t1, $k1, SR_IMASK - ori $at, (~SR_IMASK) & 0xFFFF - andi $t0, $t0, SR_IMASK - and $t1, $t1, $t0 - and $k1, $k1, $at - or $k1, $k1, $t1 - mtc0 $k1, C0_SR - // Restore GPRs - ld $k1, THREAD_LO($k0) - ld $at, THREAD_AT($k0) - ld $v0, THREAD_V0($k0) - mtlo $k1 - ld $k1, THREAD_HI($k0) - ld $v1, THREAD_V1($k0) - ld $a0, THREAD_A0($k0) - ld $a1, THREAD_A1($k0) - ld $a2, THREAD_A2($k0) - ld $a3, THREAD_A3($k0) - ld $t0, THREAD_T0($k0) - ld $t1, THREAD_T1($k0) - ld $t2, THREAD_T2($k0) - ld $t3, THREAD_T3($k0) - ld $t4, THREAD_T4($k0) - ld $t5, THREAD_T5($k0) - ld $t6, THREAD_T6($k0) - ld $t7, THREAD_T7($k0) - ld $s0, THREAD_S0($k0) - ld $s1, THREAD_S1($k0) - ld $s2, THREAD_S2($k0) - ld $s3, THREAD_S3($k0) - ld $s4, THREAD_S4($k0) - ld $s5, THREAD_S5($k0) - ld $s6, THREAD_S6($k0) - ld $s7, THREAD_S7($k0) - ld $t8, THREAD_T8($k0) - ld $t9, THREAD_T9($k0) - ld $gp, THREAD_GP($k0) - mthi $k1 - ld $sp, THREAD_SP($k0) - ld $fp, THREAD_S8($k0) - ld $ra, THREAD_RA($k0) - // Move thread pc to EPC so that eret will return execution to where the thread left off - lw $k1, THREAD_PC($k0) - mtc0 $k1, C0_EPC - // Check if the FPU was used by this thread and if so also restore the FPU registers - lw $k1, THREAD_FP($k0) - beqz $k1, 1f - nop - lw $k1, THREAD_FPCSR($k0) - ctc1 $k1, C1_FPCSR - ldc1 $f0, THREAD_FP0($k0) - ldc1 $f2, THREAD_FP2($k0) - ldc1 $f4, THREAD_FP4($k0) - ldc1 $f6, THREAD_FP6($k0) - ldc1 $f8, THREAD_FP8($k0) - ldc1 $f10, THREAD_FP10($k0) - ldc1 $f12, THREAD_FP12($k0) - ldc1 $f14, THREAD_FP14($k0) - ldc1 $f16, THREAD_FP16($k0) - ldc1 $f18, THREAD_FP18($k0) - ldc1 $f20, THREAD_FP20($k0) - ldc1 $f22, THREAD_FP22($k0) - ldc1 $f24, THREAD_FP24($k0) - ldc1 $f26, THREAD_FP26($k0) - ldc1 $f28, THREAD_FP28($k0) - ldc1 $f30, THREAD_FP30($k0) + /* Set thread as running */ + sw v0, __osRunningThread + li t0, OS_STATE_RUNNING + sh t0, THREAD_STATE(v0) + /* Restore SR, masking out any interrupts that are not also */ + /* enabled in the global interrupt mask */ + move k0, v0 + lw k1, THREAD_SR(k0) + la t0, __OSGlobalIntMask + lw t0, (t0) + andi t0, t0, SR_IMASK + andi t1, k1, SR_IMASK + and t1, t1, t0 + and k1, k1, ~SR_IMASK + or k1, k1, t1 + MTC0( k1, C0_SR) + /* Restore GPRs */ +.set noat + ld AT, THREAD_AT(k0) + ld v0, THREAD_V0(k0) + ld v1, THREAD_V1(k0) + ld a0, THREAD_A0(k0) + ld a1, THREAD_A1(k0) + ld a2, THREAD_A2(k0) + ld a3, THREAD_A3(k0) + ld t0, THREAD_T0(k0) + ld t1, THREAD_T1(k0) + ld t2, THREAD_T2(k0) + ld t3, THREAD_T3(k0) + ld t4, THREAD_T4(k0) + ld t5, THREAD_T5(k0) + ld t6, THREAD_T6(k0) + ld t7, THREAD_T7(k0) + ld s0, THREAD_S0(k0) + ld s1, THREAD_S1(k0) + ld s2, THREAD_S2(k0) + ld s3, THREAD_S3(k0) + ld s4, THREAD_S4(k0) + ld s5, THREAD_S5(k0) + ld s6, THREAD_S6(k0) + ld s7, THREAD_S7(k0) + ld t8, THREAD_T8(k0) + ld t9, THREAD_T9(k0) + ld gp, THREAD_GP(k0) + ld sp, THREAD_SP(k0) + ld fp, THREAD_S8(k0) + ld ra, THREAD_RA(k0) + ld k1, THREAD_LO(k0) + mtlo k1 + ld k1, THREAD_HI(k0) + mthi k1 + /* Move thread pc to EPC so that eret will return execution to where the thread left off */ + lw k1, THREAD_PC(k0) + MTC0( k1, C0_EPC) + /* Check if the FPU was used by this thread and if so also restore the FPU registers */ + lw k1, THREAD_FP(k0) + beqz k1, 1f + +.set noreorder + lw k1, THREAD_FPCSR(k0) + ctc1 k1, C1_FPCSR +.set reorder + ldc1 $f0, THREAD_FP0(k0) + ldc1 $f2, THREAD_FP2(k0) + ldc1 $f4, THREAD_FP4(k0) + ldc1 $f6, THREAD_FP6(k0) + ldc1 $f8, THREAD_FP8(k0) + ldc1 $f10, THREAD_FP10(k0) + ldc1 $f12, THREAD_FP12(k0) + ldc1 $f14, THREAD_FP14(k0) + ldc1 $f16, THREAD_FP16(k0) + ldc1 $f18, THREAD_FP18(k0) + ldc1 $f20, THREAD_FP20(k0) + ldc1 $f22, THREAD_FP22(k0) + ldc1 $f24, THREAD_FP24(k0) + ldc1 $f26, THREAD_FP26(k0) + ldc1 $f28, THREAD_FP28(k0) + ldc1 $f30, THREAD_FP30(k0) 1: - // Restore RCP interrupt mask, masking out any RCP interrupts that - // are not also enabled in the global interrupt mask - lw $k1, THREAD_RCP($k0) - lui $k0, %hi(__OSGlobalIntMask) - addiu $k0, %lo(__OSGlobalIntMask) - lw $k0, ($k0) - srl $k0, $k0, RCP_IMASKSHIFT - and $k1, $k1, $k0 - sll $k1, $k1, 1 - lui $k0, %hi(__osRcpImTable) - addiu $k0, %lo(__osRcpImTable) - addu $k1, $k1, $k0 - lhu $k1, ($k1) - lui $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - addiu $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG)) - sw $k1, ($k0) - // Empty pipeline + /* Restore RCP interrupt mask, masking out any RCP interrupts that */ + /* are not also enabled in the global interrupt mask */ +.set noreorder + lw k1, THREAD_RCP(k0) + la k0, __OSGlobalIntMask + lw k0, (k0) + srl k0, k0, RCP_IMASKSHIFT + and k1, k1, k0 + sll k1, k1, 1 + la k0, __osRcpImTable + addu k1, k1, k0 + lhu k1, (k1) + la k0, PHYS_TO_K1(MI_INTR_MASK_REG) + sw k1, (k0) + /* Empty pipeline */ nop nop nop nop - // Resume thread execution + /* Resume thread execution */ eret +.set reorder +.set at END(__osDispatchThread) /** @@ -986,7 +988,7 @@ END(__osDispatchThread) * current thread to be destroyed. */ LEAF(__osCleanupThread) + move a0, zero jal osDestroyThread - move $a0, $zero - // Despite being a jal, this function does not return as the thread will have been destroyed + /* Despite being a jal, this function does not return as the thread will have been destroyed */ END(__osCleanupThread) diff --git a/src/libultra/os/getcause.s b/src/libultra/os/getcause.s index a621e97363..b59c5c6801 100644 --- a/src/libultra/os/getcause.s +++ b/src/libultra/os/getcause.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osGetCause) - mfc0 $v0, C0_CAUSE - jr $ra - nop + MFC0( v0, C0_CAUSE) + jr ra END(__osGetCause) diff --git a/src/libultra/os/getcount.s b/src/libultra/os/getcount.s index 242c9da692..84552adb00 100644 --- a/src/libultra/os/getcount.s +++ b/src/libultra/os/getcount.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(osGetCount) - mfc0 $v0, C0_COUNT - jr $ra - nop + MFC0( v0, C0_COUNT) + jr ra END(osGetCount) diff --git a/src/libultra/os/getfpccsr.s b/src/libultra/os/getfpccsr.s index 93d4e51b8e..37c0e8c3b2 100644 --- a/src/libultra/os/getfpccsr.s +++ b/src/libultra/os/getfpccsr.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osGetFpcCsr) - cfc1 $v0, C1_FPCSR - jr $ra - nop + CFC1( v0, C1_FPCSR) + jr ra END(__osGetFpcCsr) diff --git a/src/libultra/os/getintmask.s b/src/libultra/os/getintmask.s index 2c6ddc86ed..f734103938 100644 --- a/src/libultra/os/getintmask.s +++ b/src/libultra/os/getintmask.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/rcp.h" #include "ultra64/exception.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * OSIntMask osGetIntMask(void); @@ -23,38 +19,35 @@ * See the comment for osSetIntMask for more details. */ LEAF(osGetIntMask) - // Extract interrupt enable bits from current SR - mfc0 $v0, C0_SR - andi $v0, $v0, (SR_IMASK | SR_IE) - // Get value of __OSGlobalIntMask - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t1, 0($t0) - // Bitwise-OR in the disabled CPU bits of __OSGlobalIntMask - li $at, ~0 - xor $t0, $t1, $at - andi $t0, $t0, SR_IMASK - or $v0, $v0, $t0 - // Fetch MI_INTR_MASK_REG - lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1) - // If there are RCP interrupts masked - beqz $t1, 1f - // Get value of __OSGlobalIntMask - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t0, 0($t0) - // Bitwise-OR in the disabled RCP bits of __OSGlobalIntMask - srl $t0, $t0, RCP_IMASKSHIFT - li $at, ~0 - xor $t0, $t0, $at - andi $t0, $t0, (RCP_IMASK >> RCP_IMASKSHIFT) - or $t1, $t1, $t0 +.set noreorder + /* Extract interrupt enable bits from current SR */ + mfc0 v0, C0_SR + andi v0, v0, (SR_IMASK | SR_IE) + /* Get value of __OSGlobalIntMask */ + la t0, __OSGlobalIntMask + lw t1, (t0) + /* Bitwise-OR in the disabled CPU bits of __OSGlobalIntMask */ + xor t0, t1, ~0 + andi t0, t0, SR_IMASK + or v0, v0, t0 + /* Fetch MI_INTR_MASK_REG */ + lw t1, PHYS_TO_K1(MI_INTR_MASK_REG) + /* If there are RCP interrupts masked */ + beqz t1, 1f + /* Get value of __OSGlobalIntMask */ + la t0, __OSGlobalIntMask /* Note: macro expansion in delay slot */ + lw t0, (t0) + /* Bitwise-OR in the disabled RCP bits of __OSGlobalIntMask */ + srl t0, t0, RCP_IMASKSHIFT + xor t0, t0, ~0 + andi t0, t0, (RCP_IMASK >> RCP_IMASKSHIFT) + or t1, t1, t0 1: - // Shift the RCP bits to not conflict with the CPU bits - sll $t2, $t1, RCP_IMASKSHIFT - // OR the CPU and RCP bits together - or $v0, $v0, $t2 - jr $ra + /* Shift the RCP bits to not conflict with the CPU bits */ + sll t2, t1, RCP_IMASKSHIFT + /* OR the CPU and RCP bits together */ + or v0, v0, t2 + jr ra nop +.set reorder END(osGetIntMask) diff --git a/src/libultra/os/getmemsize.c b/src/libultra/os/getmemsize.c index 787346de63..1adbd66ff4 100644 --- a/src/libultra/os/getmemsize.c +++ b/src/libultra/os/getmemsize.c @@ -3,6 +3,7 @@ #define STEP 0x100000 u32 osGetMemSize(void) { +#ifndef BBPLAYER vu32* ptr; u32 size = 0x400000; u32 data0; @@ -28,4 +29,7 @@ u32 osGetMemSize(void) { } return size; +#else + return osMemSize; +#endif } diff --git a/src/libultra/os/getsr.s b/src/libultra/os/getsr.s index dc6901b982..709075a7b7 100644 --- a/src/libultra/os/getsr.s +++ b/src/libultra/os/getsr.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osGetSR) - mfc0 $v0, C0_SR - jr $ra - nop + MFC0( v0, C0_SR) + jr ra END(__osGetSR) diff --git a/src/libultra/os/gettime.c b/src/libultra/os/gettime.c index 2ca90b0df9..e8943cd9e0 100644 --- a/src/libultra/os/gettime.c +++ b/src/libultra/os/gettime.c @@ -11,5 +11,5 @@ OSTime osGetTime(void) { t = __osCurrentTime; __osRestoreInt(prevInt); - return base + t; + return t + base; } diff --git a/src/libultra/os/initialize.c b/src/libultra/os/initialize.c index 427a517710..300f2743dc 100644 --- a/src/libultra/os/initialize.c +++ b/src/libultra/os/initialize.c @@ -1,4 +1,5 @@ #include "global.h" +#include "ultra64/bcp.h" typedef struct __osExceptionVector { u32 inst1; // lui $k0, %hi(__osException) @@ -59,13 +60,50 @@ void OSINITIALIZE_FUNC(void) { __osSetWatchLo(0x04900000); #endif - while (__osSiRawReadIo((void*)(PIF_RAM_END - 3), &pifdata)) { - ; +#ifdef BBPLAYER + { + u32 x, y; + + // Check for iQue Player hardware by enabling and disabling FLASH and IDE interrupts and checking if the + // register gives the correct response. + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_SET_FLASH | MI_EX_INTR_MASK_SET_IDE); + x = IO_READ(MI_EX_INTR_MASK_REG); + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_CLR_FLASH | MI_EX_INTR_MASK_CLR_IDE); + y = IO_READ(MI_EX_INTR_MASK_REG); + + __osBbIsBb = + ((x & (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) == (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) && + ((y & (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) == 0); } - while (__osSiRawWriteIo((void*)(PIF_RAM_END - 3), pifdata | 8)) { - ; + + //! @bug Most games do not have permission to use GPIO, so they often cannot correctly tell if they are running on + //! HW V1 or V2. + if (__osBbIsBb && PI_GPIO_IS_HW_V2(IO_READ(PI_GPIO_REG))) { + __osBbIsBb = 2; } + if (__osBbIsBb) { + // Set IPL boot parameters + osTvType = OS_TV_NTSC; + osRomType = 0; + osResetType = 0; + osVersion = 1; + osMemSize = 0x400000; + } + + if (!__osBbIsBb) { + // The PIF doesn't exist on iQue, no need to enable NMI from PIF +#endif + while (__osSiRawReadIo((void*)(PIF_RAM_END - 3), &pifdata)) { + ; + } + while (__osSiRawWriteIo((void*)(PIF_RAM_END - 3), pifdata | 8)) { + ; + } +#ifdef BBPLAYER + } +#endif + *(__osExceptionVector*)UT_VEC = __osExceptionPreamble; // TLB miss *(__osExceptionVector*)XUT_VEC = __osExceptionPreamble; // XTLB miss *(__osExceptionVector*)ECC_VEC = __osExceptionPreamble; // cache errors @@ -102,6 +140,31 @@ void OSINITIALIZE_FUNC(void) { } #endif +#ifdef BBPLAYER + if (!__osBbIsBb) { + // In a real iQue Player environment (that is, real hardware + app launched from the system menu) + // these are set on app launch by the system menu based on the contents of the game's associated + // ticket. Set some dummy values if not running on iQue Player hardware. + __osBbEepromSize = 0x200; + __osBbPakSize = 0x8000; + __osBbFlashSize = 0x20000; + __osBbEepromAddress = 0x80400000 - 0x200; + __osBbPakAddress[0] = 0x80400000 - 0x8200; + __osBbPakAddress[1] = 0; + __osBbPakAddress[2] = 0; + __osBbPakAddress[3] = 0; + __osBbFlashAddress = 0x80400000 - 0x20000; + __osBbSramSize = __osBbFlashSize; + __osBbSramAddress = __osBbFlashAddress; + } + if (__osBbIsBb) { + IO_WRITE(PI_64_REG, IO_READ(PI_64_REG) & ~0x80000000); + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_SET_IDE); + IO_WRITE(SI_0C_REG, 0); + IO_WRITE(SI_1C_REG, (IO_READ(SI_1C_REG) & ~0x7F000000) | 0x2F400000); + } +#endif + IO_WRITE(AI_CONTROL_REG, AI_CONTROL_DMA_ON); IO_WRITE(AI_DACRATE_REG, AI_MAX_DAC_RATE - 1); IO_WRITE(AI_BITRATE_REG, AI_MAX_BIT_RATE - 1); diff --git a/src/libultra/os/interrupt.s b/src/libultra/os/interrupt.s index 829377bb0e..3a9102c579 100644 --- a/src/libultra/os/interrupt.s +++ b/src/libultra/os/interrupt.s @@ -1,53 +1,45 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/thread.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osDisableInt) - lui $t2, %hi(__OSGlobalIntMask) - addiu $t2, $t2, %lo(__OSGlobalIntMask) - lw $t3, ($t2) - andi $t3, $t3, SR_IMASK - mfc0 $t0, C0_SR - li $at, ~SR_IE - and $t1, $t0, $at - mtc0 $t1, C0_SR - andi $v0, $t0, SR_IE - lw $t0, ($t2) - andi $t0, $t0, SR_IMASK - beq $t0, $t3, No_Change_Global_Int - lui $t2, %hi(__osRunningThread) - //! @bug this addiu should be lw, it may never come up in practice as to reach this code - //! the CPU bits of __OSGlobalIntMask must have changed while this function is running. - addiu $t2, $t2, %lo(__osRunningThread) - lw $t1, THREAD_SR($t2) - andi $t2, $t1, SR_IMASK - and $t2, $t2, $t0 - li $at, ~SR_IMASK - and $t1, $t1, $at - or $t1, $t1, $t2 - li $at, ~SR_IE - and $t1, $t1, $at - mtc0 $t1, C0_SR - nop - nop + la t2, __OSGlobalIntMask + lw t3, (t2) + and t3, t3, SR_IMASK + MFC0( t0, C0_SR) + and t1, t0, ~SR_IE + MTC0( t1, C0_SR) + and v0, t0, SR_IE + lw t0, (t2) + and t0, t0, SR_IMASK +.set noreorder + beq t0, t3, No_Change_Global_Int + /*! @bug this la should be lw, it may never come up in practice as to reach this code + *! the CPU bits of __OSGlobalIntMask must have changed while this function is running. + */ + la t2, __osRunningThread + lw t1, THREAD_SR(t2) + and t2, t1, SR_IMASK + and t2, t2, t0 +.set reorder + and t1, t1, ~SR_IMASK + or t1, t1, t2 + and t1, t1, ~SR_IE + MTC0( t1, C0_SR) + NOP + NOP No_Change_Global_Int: - jr $ra - nop + jr ra END(__osDisableInt) LEAF(__osRestoreInt) - mfc0 $t0, C0_SR - or $t0, $t0, $a0 - mtc0 $t0, C0_SR - nop - nop - jr $ra - nop + MFC0( t0, C0_SR) + or t0, t0, a0 + MTC0( t0, C0_SR) + NOP + NOP + jr ra END(__osRestoreInt) diff --git a/src/libultra/os/invaldcache.s b/src/libultra/os/invaldcache.s index 9464a24da6..9cf3d82e05 100644 --- a/src/libultra/os/invaldcache.s +++ b/src/libultra/os/invaldcache.s @@ -1,12 +1,8 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * void osInvalDCache(void* vaddr, s32 nbytes); @@ -24,71 +20,61 @@ * the entire data cache is invalidated. */ LEAF(osInvalDCache) - // If the amount to invalidate is less than or equal to 0, return immediately - blez $a1, 3f - nop - // If the amount to invalidate is as large as or larger than - // the data cache size, invalidate all - li $t3, DCACHE_SIZE - sltu $at, $a1, $t3 - beqz $at, 4f - nop - // Ensure end address doesn't wrap around and end up smaller - // than the start address - move $t0, $a0 - addu $t1, $a0, $a1 - sltu $at, $t0, $t1 - beqz $at, 3f - nop - // Mask start with cache line - andi $t2, $t0, DCACHE_LINEMASK - // If mask is not zero, the start is not cache aligned - beqz $t2, 1f - addiu $t1, $t1, -DCACHE_LINESIZE - // Subtract mask result to align to cache line - subu $t0, $t0, $t2 - // Hit-Writeback-Invalidate unaligned part - cache (CACH_PD | C_HWBINV), ($t0) - sltu $at, $t0, $t1 - // If that's all there is to do, return early - beqz $at, 3f - nop - addiu $t0, $t0, DCACHE_LINESIZE + /* If the amount to invalidate is less than or equal to 0, return immediately */ + blez a1, 3f + /* If the amount to invalidate is as large as or larger than + * the data cache size, invalidate all */ + li t3, DCACHE_SIZE + bgeu a1, t3, 4f + /* Ensure end address doesn't wrap around and end up smaller + * than the start address */ + move t0, a0 + addu t1, a0, a1 + bgeu t0, t1, 3f + /* Mask start with cache line */ + addiu t1, t1, -DCACHE_LINESIZE + andi t2, t0, DCACHE_LINEMASK + /* If mask is not zero, the start is not cache aligned */ + beqz t2, 1f + /* Subtract mask result to align to cache line */ + subu t0, t0, t2 + /* Hit-Writeback-Invalidate unaligned part */ + CACHE( (CACH_PD | C_HWBINV), (t0)) + /* If that's all there is to do, return early */ + bgeu t0, t1, 3f + addiu t0, t0, DCACHE_LINESIZE 1: - // Mask end with cache line - andi $t2, $t1, DCACHE_LINEMASK - // If mask is not zero, the end is not cache aligned - beqz $t2, 1f - nop - // Subtract mask result to align to cache line - subu $t1, $t1, $t2 - // Hit-Writeback-Invalidate unaligned part - cache (CACH_PD | C_HWBINV), DCACHE_LINESIZE($t1) - sltu $at, $t1, $t0 - // If that's all there is to do, return early - bnez $at, 3f - nop - // Invalidate the rest -1: - // Hit-Invalidate - cache (CACH_PD | C_HINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 1b - addiu $t0, $t0, DCACHE_LINESIZE + /* Mask end with cache line */ + andi t2, t1, DCACHE_LINEMASK + /* If mask is not zero, the end is not cache aligned */ + beqz t2, 2f + /* Subtract mask result to align to cache line */ + subu t1, t1, t2 + /* Hit-Writeback-Invalidate unaligned part */ + CACHE( (CACH_PD | C_HWBINV), DCACHE_LINESIZE(t1)) + /* If that's all there is to do, return early */ + bltu t1, t0, 3f + /* Invalidate the rest */ +2: + /* Hit-Invalidate */ + CACHE( (CACH_PD | C_HINV), (t0)) +.set noreorder + bltu t0, t1, 2b + addiu t0, t0, DCACHE_LINESIZE +.set reorder 3: - jr $ra - nop + jr ra 4: - li $t0, K0BASE - addu $t1, $t0, $t3 - addiu $t1, $t1, -DCACHE_LINESIZE + li t0, K0BASE + addu t1, t0, t3 + addiu t1, t1, -DCACHE_LINESIZE 5: - // Index-Writeback-Invalidate - cache (CACH_PD | C_IWBINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 5b - addiu $t0, DCACHE_LINESIZE - jr $ra - nop + /* Index-Writeback-Invalidate */ + CACHE( (CACH_PD | C_IWBINV), (t0)) +.set noreorder + bltu t0, t1, 5b + addiu t0, DCACHE_LINESIZE +.set reorder + jr ra END(osInvalDCache) diff --git a/src/libultra/os/invalicache.s b/src/libultra/os/invalicache.s index 55f8312380..ef92d4cb08 100644 --- a/src/libultra/os/invalicache.s +++ b/src/libultra/os/invalicache.s @@ -1,52 +1,44 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(osInvalICache) - // If the amount to invalidate is less than or equal to 0, return immediately - blez $a1, 2f - nop - // If the amount to invalidate is as large as or larger than - // the instruction cache size, invalidate all - li $t3, ICACHE_SIZE - sltu $at, $a1, $t3 - beqz $at, 3f - nop - // ensure end address doesn't wrap around and end up smaller - // than the start address - move $t0, $a0 - addu $t1, $a0, $a1 - sltu $at, $t0, $t1 - beqz $at, 2f - nop - // Mask and subtract to align to cache line - andi $t2, $t0, ICACHE_LINEMASK - addiu $t1, $t1, -ICACHE_LINESIZE - subu $t0, $t0, $t2 + /* If the amount to invalidate is less than or equal to 0, return immediately */ + blez a1, 2f + /* If the amount to invalidate is as large as or larger than */ + /* the instruction cache size, invalidate all */ + li t3, ICACHE_SIZE + bgeu a1, t3, 3f + /* ensure end address doesn't wrap around and end up smaller */ + /* than the start address */ + move t0, a0 + addu t1, a0, a1 + bgeu t0, t1, 2f + /* Mask and subtract to align to cache line */ + addiu t1, t1, -ICACHE_LINESIZE + andi t2, t0, ICACHE_LINEMASK + subu t0, t0, t2 1: - cache (CACH_PI | C_HINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 1b - addiu $t0, $t0, ICACHE_LINESIZE + CACHE( (CACH_PI | C_HINV), (t0)) +.set noreorder + bltu t0, t1, 1b + addiu t0, t0, ICACHE_LINESIZE +.set reorder 2: - jr $ra - nop + jr ra 3: - li $t0, K0BASE - addu $t1, $t0, $t3 - addiu $t1, $t1, -ICACHE_LINESIZE + li t0, K0BASE + addu t1, t0, t3 + addiu t1, t1, -ICACHE_LINESIZE 4: - cache (CACH_PI | C_IINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 4b - addiu $t0, ICACHE_LINESIZE - jr $ra - nop + CACHE( (CACH_PI | C_IINV), (t0)) +.set noreorder + bltu t0, t1, 4b + addiu t0, ICACHE_LINESIZE +.set reorder + jr ra +.set reorder END(osInvalICache) diff --git a/src/libultra/os/maptlbrdb.s b/src/libultra/os/maptlbrdb.s index c3ac20948b..43e7cc93a3 100644 --- a/src/libultra/os/maptlbrdb.s +++ b/src/libultra/os/maptlbrdb.s @@ -1,36 +1,31 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/rdb.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(osMapTLBRdb) - mfc0 $t0, C0_ENTRYHI - li $t1, NTLBENTRIES - mtc0 $t1, C0_INX - mtc0 $zero, C0_PAGEMASK - li $t2, (TLBLO_UNCACHED | TLBLO_D | TLBLO_V | TLBLO_G) - li $t1, (RDB_BASE_REG & TLBHI_VPN2MASK) - mtc0 $t1, C0_ENTRYHI - // Possible bug? Virtual address instead of physical address - // set as page frame number - li $t1, RDB_BASE_VIRTUAL_ADDR - srl $t3, $t1, TLBLO_PFNSHIFT - or $t3, $t3, $t2 - mtc0 $t3, C0_ENTRYLO0 - li $t1, TLBLO_G - mtc0 $t1, C0_ENTRYLO1 - nop - tlbwi - nop - nop - nop - nop - mtc0 $t0, C0_ENTRYHI - jr $ra - nop + MFC0( t0, C0_ENTRYHI) + li t1, NTLBENTRIES + MTC0( t1, C0_INX) + MTC0( zero, C0_PAGEMASK) + li t2, (TLBLO_UNCACHED | TLBLO_D | TLBLO_V | TLBLO_G) + li t1, (RDB_BASE_REG & TLBHI_VPN2MASK) + MTC0( t1, C0_ENTRYHI) + /* Possible bug? Virtual address instead of physical address set as page frame number */ + li t1, RDB_BASE_VIRTUAL_ADDR + srl t3, t1, TLBLO_PFNSHIFT + or t3, t3, t2 + MTC0( t3, C0_ENTRYLO0) + li t1, TLBLO_G + MTC0( t1, C0_ENTRYLO1) + NOP + TLBWI + NOP + NOP + NOP + NOP + MTC0( t0, C0_ENTRYHI) + jr ra END(osMapTLBRdb) diff --git a/src/libultra/os/parameters.s b/src/libultra/os/parameters.s index c0020ddbed..8fb324d240 100644 --- a/src/libultra/os/parameters.s +++ b/src/libultra/os/parameters.s @@ -1,22 +1,48 @@ #include "ultra64/asm.h" -.section .text +.text -.macro IPL_SYMBOL name, address, size - .global \name - .set \name, \address - .type \name, @object - .size \name, \size -.endm +#ifdef __sgi +#define IPL_SYMBOL(name, address, size) \ + ABS(name, address) +#else +#define IPL_SYMBOL(name, address, sz) \ + ABS(name, address) ;\ + .type name, @object ;\ + .size name, sz +#endif -IPL_SYMBOL leoBootID, 0x800001A0, 4 -IPL_SYMBOL osTvType, 0x80000300, 4 -IPL_SYMBOL osRomType, 0x80000304, 4 -IPL_SYMBOL osRomBase, 0x80000308, 4 -IPL_SYMBOL osResetType, 0x8000030C, 4 -IPL_SYMBOL osCicId, 0x80000310, 4 -IPL_SYMBOL osVersion, 0x80000314, 4 -IPL_SYMBOL osMemSize, 0x80000318, 4 -IPL_SYMBOL osAppNMIBuffer, 0x8000031C, 0x40 -.fill 0x60 +IPL_SYMBOL(leoBootID, 0x800001A0, 4) +IPL_SYMBOL(osTvType, 0x80000300, 4) +IPL_SYMBOL(osRomType, 0x80000304, 4) +IPL_SYMBOL(osRomBase, 0x80000308, 4) +IPL_SYMBOL(osResetType, 0x8000030C, 4) +IPL_SYMBOL(osCicId, 0x80000310, 4) +IPL_SYMBOL(osVersion, 0x80000314, 4) +IPL_SYMBOL(osMemSize, 0x80000318, 4) +IPL_SYMBOL(osAppNMIBuffer, 0x8000031C, 0x40) + +#ifdef BBPLAYER + +IPL_SYMBOL(__osBbEepromAddress, 0x8000035C, 4) +IPL_SYMBOL(__osBbEepromSize, 0x80000360, 4) +IPL_SYMBOL(__osBbFlashAddress, 0x80000364, 4) +IPL_SYMBOL(__osBbFlashSize, 0x80000368, 4) +IPL_SYMBOL(__osBbSramAddress, 0x8000036C, 4) +IPL_SYMBOL(__osBbSramSize, 0x80000370, 4) +IPL_SYMBOL(__osBbPakAddress, 0x80000374, 0x10) +IPL_SYMBOL(__osBbPakSize, 0x80000384, 4) +IPL_SYMBOL(__osBbIsBb, 0x80000388, 4) +IPL_SYMBOL(__osBbHackFlags, 0x8000038C, 4) +IPL_SYMBOL(__osBbStashMagic, 0x80000390, 4) +IPL_SYMBOL(__osBbPakBindings, 0x80000394, 0x10) +IPL_SYMBOL(__osBbStateName, 0x800003A4, 0x10) +IPL_SYMBOL(__osBbStateDirty, 0x800003B4, 4) +IPL_SYMBOL(__osBbAuxDataLimit, 0x800003B8, 4) + +.space 0x30 + +#endif + +.space 0x60 diff --git a/src/libultra/os/probetlb.s b/src/libultra/os/probetlb.s index 7bc7856e13..4fa8abc38e 100644 --- a/src/libultra/os/probetlb.s +++ b/src/libultra/os/probetlb.s @@ -1,12 +1,8 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * u32 __osProbeTLB(void* vaddr); @@ -17,70 +13,71 @@ * Returns the physical address if found, or -1 if not found. */ LEAF(__osProbeTLB) - // Set C0_ENTRYHI based on supplied vaddr - mfc0 $t0, C0_ENTRYHI - andi $t1, $t0, TLBHI_PIDMASK - li $at, TLBHI_VPN2MASK - and $t2, $a0, $at - or $t1, $t1, $t2 - mtc0 $t1, C0_ENTRYHI +.set noreorder + /* Set C0_ENTRYHI based on supplied vaddr */ + mfc0 t0, C0_ENTRYHI + and t1, t0, TLBHI_PIDMASK + and t2, a0, TLBHI_VPN2MASK + or t1, t1, t2 + mtc0 t1, C0_ENTRYHI nop nop nop - // TLB probe, sets C0_INX to a value matching C0_ENTRYHI. - // If no match is found the TLBINX_PROBE bit is set to indicate this. + /* TLB probe, sets C0_INX to a value matching C0_ENTRYHI. */ + /* If no match is found the TLBINX_PROBE bit is set to indicate this. */ tlbp nop nop - // Read result - mfc0 $t3, C0_INX - li $at, TLBINX_PROBE - and $t3, $t3, $at - // Branch if no match was found - bnez $t3, 3f + /* Read result */ + mfc0 t3, C0_INX + and t3, t3, TLBINX_PROBE + /* Branch if no match was found */ + bnez t3, 3f nop - // Read TLB, sets C0_ENTRYHI, C0_ENTRYLO0, C0_ENTRYLO1 and C0_PAGEMASK for the TLB - // entry indicated by C0_INX + + /* Read TLB, sets C0_ENTRYHI, C0_ENTRYLO0, C0_ENTRYLO1 and C0_PAGEMASK for the TLB */ + /* entry indicated by C0_INX */ tlbr nop nop nop - // Calculate page size = (page mask + 0x2000) >> 1 - mfc0 $t3, C0_PAGEMASK - addi $t3, $t3, 0x2000 - srl $t3, $t3, 1 - // & with vaddr - and $t4, $t3, $a0 - // Select C0_ENTRYLO0 or C0_ENTRYLO1 - bnez $t4, 1f - addi $t3, $t3, -1 // make bitmask out of page size - mfc0 $v0, C0_ENTRYLO0 + /* Calculate page size = (page mask + 0x2000) >> 1 */ + mfc0 t3, C0_PAGEMASK + add t3, t3, 0x2000 + srl t3, t3, 1 + /* & with vaddr */ + and t4, t3, a0 + /* Select C0_ENTRYLO0 or C0_ENTRYLO1 */ + bnez t4, 1f + add t3, t3, -1 /* make bitmask out of page size */ + mfc0 v0, C0_ENTRYLO0 b 2f nop 1: - mfc0 $v0, C0_ENTRYLO1 + mfc0 v0, C0_ENTRYLO1 2: - // Check valid bit and branch if not valid - andi $t5, $v0, TLBLO_V - beqz $t5, 3f + /* Check valid bit and branch if not valid */ + and t5, v0, TLBLO_V + beqz t5, 3f nop - // Extract the Page Frame Number from the entry - li $at, TLBLO_PFNMASK - and $v0, $v0, $at - sll $v0, $v0, TLBLO_PFNSHIFT - // Mask vaddr with page size mask - and $t5, $a0, $t3 - // Add masked vaddr to pfn to obtain the physical address - add $v0, $v0, $t5 + + /* Extract the Page Frame Number from the entry */ + and v0, v0, TLBLO_PFNMASK + sll v0, v0, TLBLO_PFNSHIFT + /* Mask vaddr with page size mask */ + and t5, a0, t3 + /* Add masked vaddr to pfn to obtain the physical address */ + add v0, v0, t5 b 4f nop 3: - // No physical address for the supplied virtual address was found, - // return -1 - li $v0, -1 + /* No physical address for the supplied virtual address was found, */ + /* return -1 */ + li v0, -1 4: - // Restore original C0_ENTRYHI value before returning - mtc0 $t0, C0_ENTRYHI - jr $ra + /* Restore original C0_ENTRYHI value before returning */ + mtc0 t0, C0_ENTRYHI + jr ra nop +.set reorder END(__osProbeTLB) diff --git a/src/libultra/os/recvmesg.c b/src/libultra/os/recvmesg.c index f065188cd0..3254867cce 100644 --- a/src/libultra/os/recvmesg.c +++ b/src/libultra/os/recvmesg.c @@ -7,9 +7,10 @@ s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag) { if (flag == OS_MESG_NOBLOCK) { __osRestoreInt(prevInt); return -1; + } else { + __osRunningThread->state = OS_STATE_WAITING; + __osEnqueueAndYield(&mq->mtqueue); } - __osRunningThread->state = OS_STATE_WAITING; - __osEnqueueAndYield(&mq->mtqueue); } if (msg != NULL) { diff --git a/src/libultra/os/setcompare.s b/src/libultra/os/setcompare.s index bd16533774..3c175c4943 100644 --- a/src/libultra/os/setcompare.s +++ b/src/libultra/os/setcompare.s @@ -1,14 +1,10 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osSetCompare) - mtc0 $a0, C0_COMPARE - jr $ra - nop + MTC0( a0, C0_COMPARE) + jr ra END(__osSetCompare) diff --git a/src/libultra/os/setfpccsr.s b/src/libultra/os/setfpccsr.s index 1aa0e7d298..e333550844 100644 --- a/src/libultra/os/setfpccsr.s +++ b/src/libultra/os/setfpccsr.s @@ -1,15 +1,11 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osSetFpcCsr) - cfc1 $v0, C1_FPCSR - ctc1 $a0, C1_FPCSR - jr $ra - nop + CFC1( v0, C1_FPCSR) + CTC1( a0, C1_FPCSR) + jr ra END(__osSetFpcCsr) diff --git a/src/libultra/os/setintmask.s b/src/libultra/os/setintmask.s index e48c1b376f..7b2f5be2f5 100644 --- a/src/libultra/os/setintmask.s +++ b/src/libultra/os/setintmask.s @@ -1,14 +1,11 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/rcp.h" #include "ultra64/exception.h" -.set noat -.set noreorder - -.section .rodata - -.balign 16 +.rdata +.align 2 /** * LUT to convert between an interrupt mask value and a value for MI_INTR_MASK_REG. @@ -82,9 +79,7 @@ DATA(__osRcpImTable) .half MI_INTR_MASK_SET_SP | MI_INTR_MASK_SET_SI | MI_INTR_MASK_SET_AI | MI_INTR_MASK_SET_VI | MI_INTR_MASK_SET_PI | MI_INTR_MASK_SET_DP ENDDATA(__osRcpImTable) -.section .text - -.balign 16 +.text /** * OSIntMask osSetIntMask(OSIntMask); @@ -113,56 +108,47 @@ ENDDATA(__osRcpImTable) * OS_IM_ALL, so the operation is usually simply (SR | 0). */ LEAF(osSetIntMask) - // Extract interrupt enable bits from current SR - mfc0 $t4, C0_SR - andi $v0, $t4, (SR_IMASK | SR_IE) - // Get value of __OSGlobalIntMask - lui $t0, %hi(__OSGlobalIntMask) - addiu $t0, %lo(__OSGlobalIntMask) - lw $t3, ($t0) - // Bitwise-OR in the disabled CPU bits of __OSGlobalIntMask - li $at, ~0 - xor $t0, $t3, $at - andi $t0, $t0, SR_IMASK - or $v0, $v0, $t0 - // Fetch MI_INTR_MASK_REG - lui $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - lw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2) - // If there are RCP interrupts masked - beqz $t2, 1f - srl $t1, $t3, RCP_IMASKSHIFT - // Bitwise-OR in the disabled RCP bits of __OSGlobalIntMask - li $at, ~0 - xor $t1, $t1, $at - andi $t1, $t1, (RCP_IMASK >> RCP_IMASKSHIFT) - or $t2, $t2, $t1 + /* Extract interrupt enable bits from current SR */ + MFC0( t4, C0_SR) +.set noreorder + and v0, t4, (SR_IMASK | SR_IE) + /* Get value of __OSGlobalIntMask */ + la t0, __OSGlobalIntMask + lw t3, (t0) + /* Bitwise-OR in the disabled CPU bits of __OSGlobalIntMask */ + xor t0, t3, 0xFFFFFFFF + and t0, t0, SR_IMASK + or v0, v0, t0 + /* Fetch MI_INTR_MASK_REG */ + lw t2, PHYS_TO_K1(MI_INTR_MASK_REG) + /* If there are RCP interrupts masked */ + beqz t2, 1f + srl t1, t3, RCP_IMASKSHIFT + /* Bitwise-OR in the disabled RCP bits of __OSGlobalIntMask */ + xor t1, t1, 0xFFFFFFFF + and t1, t1, (RCP_IMASK >> RCP_IMASKSHIFT) + or t2, t2, t1 1: - // Shift the RCP bits to not conflict with the CPU bits - sll $t2, $t2, RCP_IMASKSHIFT - // OR the CPU and RCP bits together - or $v0, $v0, $t2 - // Extract RCP interrupt enable bits from requested mask and mask with __OSGlobalIntMask - li $at, RCP_IMASK - and $t0, $a0, $at - and $t0, $t0, $t3 - // Convert to a value for MI_INTR_MASK_REG and set it - srl $t0, $t0, (RCP_IMASKSHIFT-1) - lui $t2, %hi(__osRcpImTable) - addu $t2, $t2, $t0 - lhu $t2, %lo(__osRcpImTable)($t2) - lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) - sw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at) - // Extract CPU interrupt enable bits from requested mask and mask with __OSGlobalIntMask - andi $t0, $a0, OS_IM_CPU - andi $t1, $t3, SR_IMASK - and $t0, $t0, $t1 - li $at, ~SR_IMASK - and $t4, $t4, $at - // Bitwise OR in the remaining bits of SR and set new SR - or $t4, $t4, $t0 - mtc0 $t4, C0_SR - nop - nop - jr $ra - nop + /* Shift the RCP bits to not conflict with the CPU bits */ + sll t2, t2, RCP_IMASKSHIFT + /* OR the CPU and RCP bits together */ + or v0, v0, t2 + /* Extract RCP interrupt enable bits from requested mask and mask with __OSGlobalIntMask */ + and t0, a0, RCP_IMASK + and t0, t0, t3 + /* Convert to a value for MI_INTR_MASK_REG and set it */ + srl t0, t0, (RCP_IMASKSHIFT-1) + lhu t2, __osRcpImTable(t0) + sw t2, PHYS_TO_K1(MI_INTR_MASK_REG) + /* Extract CPU interrupt enable bits from requested mask and mask with __OSGlobalIntMask */ + and t0, a0, OS_IM_CPU + and t1, t3, SR_IMASK + and t0, t0, t1 + and t4, t4, ~SR_IMASK + /* Bitwise OR in the remaining bits of SR and set new SR */ + or t4, t4, t0 + MTC0( t4, C0_SR) + NOP + NOP + jr ra END(osSetIntMask) diff --git a/src/libultra/os/setsr.s b/src/libultra/os/setsr.s index b754359eae..fb7a1586d4 100644 --- a/src/libultra/os/setsr.s +++ b/src/libultra/os/setsr.s @@ -1,15 +1,11 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osSetSR) - mtc0 $a0, C0_SR - nop - jr $ra - nop + MTC0( a0, C0_SR) + NOP + jr ra END(__osSetSR) diff --git a/src/libultra/os/settimer.c b/src/libultra/os/settimer.c index a876641e88..c5632e82c2 100644 --- a/src/libultra/os/settimer.c +++ b/src/libultra/os/settimer.c @@ -12,20 +12,14 @@ s32 osSetTimer(OSTimer* timer, OSTime countdown, OSTime interval, OSMesgQueue* m timer->next = NULL; timer->prev = NULL; timer->interval = interval; - - if (countdown != 0) { - timer->value = countdown; - } else { - timer->value = interval; - } + timer->value = (countdown != 0) ? countdown : interval; timer->mq = mq; timer->msg = msg; #if LIBULTRA_VERSION >= LIBULTRA_VERSION_K prevInt = __osDisableInt(); - if (__osTimerList->next != __osTimerList) { - if (1) {} - + if (__osTimerList->next == __osTimerList) { + } else { next = __osTimerList->next; count = osGetCount(); value = count - __osTimerCounter; diff --git a/src/libultra/os/setwatchlo.s b/src/libultra/os/setwatchlo.s index aee3ad4d6d..962513a480 100644 --- a/src/libultra/os/setwatchlo.s +++ b/src/libultra/os/setwatchlo.s @@ -1,15 +1,11 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(__osSetWatchLo) - mtc0 $a0, C0_WATCHLO - nop - jr $ra - nop + MTC0( a0, C0_WATCHLO) + NOP + jr ra END(__osSetWatchLo) diff --git a/src/libultra/os/stopthread.c b/src/libultra/os/stopthread.c index 54a236b49b..53aecd940a 100644 --- a/src/libultra/os/stopthread.c +++ b/src/libultra/os/stopthread.c @@ -2,13 +2,7 @@ void osStopThread(OSThread* thread) { register u32 prevInt = __osDisableInt(); - register u32 state; - - if (thread == NULL) { - state = OS_STATE_RUNNING; - } else { - state = thread->state; - } + register u16 state = (thread == NULL) ? OS_STATE_RUNNING : thread->state; switch (state) { case OS_STATE_RUNNING: diff --git a/src/libultra/os/thread.c b/src/libultra/os/thread.c index c78a34e4ec..0263acb454 100644 --- a/src/libultra/os/thread.c +++ b/src/libultra/os/thread.c @@ -6,16 +6,16 @@ OSThread* __osActiveQueue = (OSThread*)&__osThreadTail; OSThread* __osRunningThread = NULL; OSThread* __osFaultedThread = NULL; -void __osDequeueThread(OSThread** queue, OSThread* thread) { - register OSThread** a2 = queue; - register OSThread* a3 = *a2; +void __osDequeueThread(register OSThread** queue, register OSThread* thread) { + register OSThread* pred = (OSThread*)queue; + register OSThread* succ = pred->next; - while (a3 != NULL) { - if (a3 == thread) { - *a2 = thread->next; + while (succ != NULL) { + if (succ == thread) { + pred->next = thread->next; return; } - a2 = &a3->next; - a3 = *a2; + pred = succ; + succ = pred->next; } } diff --git a/src/libultra/os/timerintr.c b/src/libultra/os/timerintr.c index ce5c12fc5f..3f94368b20 100644 --- a/src/libultra/os/timerintr.c +++ b/src/libultra/os/timerintr.c @@ -11,10 +11,8 @@ void __osTimerServicesInit(void) { __osCurrentTime = 0; __osBaseCounter = 0; __osViIntrCount = 0; - __osTimerList->prev = __osTimerList; - __osTimerList->next = __osTimerList->prev; - __osTimerList->value = 0; - __osTimerList->interval = __osTimerList->value; + __osTimerList->next = __osTimerList->prev = __osTimerList; + __osTimerList->interval = __osTimerList->value = 0; __osTimerList->mq = NULL; __osTimerList->msg = NULL; } @@ -28,7 +26,7 @@ void __osTimerInterrupt(void) { return; } - while (true) { + for (;;) { timer = __osTimerList->next; if (timer == __osTimerList) { __osSetCompare(0); @@ -72,7 +70,7 @@ void __osSetTimerIntr(OSTime time) { prevInt = __osDisableInt(); __osTimerCounter = osGetCount(); - newTime = time + __osTimerCounter; + newTime = __osTimerCounter + time; __osSetCompare((u32)newTime); __osRestoreInt(prevInt); } diff --git a/src/libultra/os/unmaptlball.s b/src/libultra/os/unmaptlball.s index e1a03b1a23..8cd79984ec 100644 --- a/src/libultra/os/unmaptlball.s +++ b/src/libultra/os/unmaptlball.s @@ -1,29 +1,25 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noreorder - -.section .text - -.balign 16 +.text LEAF(osUnmapTLBAll) - mfc0 $t0, C0_ENTRYHI - li $t1, (NTLBENTRIES - 1) - li $t2, (K0BASE & TLBHI_VPN2MASK) - mtc0 $t2, C0_ENTRYHI - mtc0 $zero, C0_ENTRYLO0 - mtc0 $zero, C0_ENTRYLO1 + MFC0( t0, C0_ENTRYHI) + li t1, (NTLBENTRIES - 1) + li t2, (K0BASE & TLBHI_VPN2MASK) + MTC0( t2, C0_ENTRYHI) + MTC0( zero, C0_ENTRYLO0) + MTC0( zero, C0_ENTRYLO1) 1: - mtc0 $t1, C0_INX - nop - tlbwi - nop - nop - addi $t1, $t1, -1 - bgez $t1, 1b - nop - mtc0 $t0, C0_ENTRYHI - jr $ra - nop + MTC0( t1, C0_INX) + NOP + TLBWI + NOP + NOP + addi t1, t1, -1 + bgez t1, 1b + + MTC0( t0, C0_ENTRYHI) + jr ra END(osUnmapTLBAll) diff --git a/src/libultra/os/virtualtophysical.c b/src/libultra/os/virtualtophysical.c index 5f8f79d83c..0037572232 100644 --- a/src/libultra/os/virtualtophysical.c +++ b/src/libultra/os/virtualtophysical.c @@ -3,11 +3,9 @@ u32 osVirtualToPhysical(void* vaddr) { if (IS_KSEG0(vaddr)) { return K0_TO_PHYS(vaddr); - } - - if (IS_KSEG1(vaddr)) { + } else if (IS_KSEG1(vaddr)) { return K1_TO_PHYS(vaddr); + } else { + return __osProbeTLB(vaddr); } - - return __osProbeTLB(vaddr); } diff --git a/src/libultra/os/writebackdcache.s b/src/libultra/os/writebackdcache.s index 829f6f4a05..7b2af1b459 100644 --- a/src/libultra/os/writebackdcache.s +++ b/src/libultra/os/writebackdcache.s @@ -1,12 +1,8 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text /** * void osWritebackDCache(void* vaddr, s32 nbytes); @@ -16,45 +12,43 @@ * written back. */ LEAF(osWritebackDCache) - // If the amount to write back is less than or equal to 0, return immediately - blez $a1, .ret - nop - // If the amount to write back is as large as or larger than - // the data cache size, write back all - li $t3, DCACHE_SIZE - sltu $at, $a1, $t3 - beqz $at, .all - nop - // ensure end address doesn't wrap around and end up smaller - // than the start address - move $t0, $a0 - addu $t1, $a0, $a1 - sltu $at, $t0, $t1 - beqz $at, .ret - nop - // Mask and subtract to align to cache line - andi $t2, $t0, DCACHE_LINEMASK - addiu $t1, $t1, -DCACHE_LINESIZE - subu $t0, $t0, $t2 -1: - cache (CACH_PD | C_HWB), ($t0) - sltu $at, $t0, $t1 - bnez $at, 1b - addiu $t0, $t0, DCACHE_LINESIZE -.ret: - jr $ra - nop + /* If the amount to write back is less than or equal to 0, return immediately */ + blez a1, 2f -// same as osWritebackDCacheAll in operation -.all: - li $t0, K0BASE - addu $t1, $t0, $t3 - addiu $t1, $t1, -DCACHE_LINESIZE + /* If the amount to write back is as large as or larger than */ + /* the data cache size, write back all */ + li t3, DCACHE_SIZE + bgeu a1, t3, 3f + + /* ensure end address doesn't wrap around and end up smaller */ + /* than the start address */ + move t0, a0 + addu t1, a0, a1 + bgeu t0, t1, 2f + + /* Mask and subtract to align to cache line */ + addiu t1, t1, -DCACHE_LINESIZE + andi t2, t0, DCACHE_LINEMASK + subu t0, t0, t2 1: - cache (CACH_PD | C_IWBINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 1b - addiu $t0, DCACHE_LINESIZE - jr $ra - nop + CACHE( (CACH_PD | C_HWB), (t0)) +.set noreorder + bltu t0, t1, 1b + addiu t0, t0, DCACHE_LINESIZE +.set reorder +2: + jr ra + +/* same as osWritebackDCacheAll in operation */ +3: + li t0, K0BASE + addu t1, t0, t3 + addiu t1, t1, -DCACHE_LINESIZE +4: + CACHE( (CACH_PD | C_IWBINV), (t0)) +.set noreorder + bltu t0, t1, 4b + addiu t0, DCACHE_LINESIZE +.set reorder + jr ra END(osWritebackDCache) diff --git a/src/libultra/os/writebackdcacheall.s b/src/libultra/os/writebackdcacheall.s index 54a58dff8a..a15ef4554f 100644 --- a/src/libultra/os/writebackdcacheall.s +++ b/src/libultra/os/writebackdcacheall.s @@ -1,23 +1,19 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "ultra64/R4300.h" -.set noat -.set noreorder - -.section .text - -.balign 16 +.text LEAF(osWritebackDCacheAll) - li $t0, K0BASE - li $t2, DCACHE_SIZE - addu $t1, $t0, $t2 - addiu $t1, $t1, -DCACHE_LINESIZE + li t0, K0BASE + li t2, DCACHE_SIZE + addu t1, t0, t2 + addiu t1, t1, -DCACHE_LINESIZE 1: - cache (CACH_PD | C_IWBINV), ($t0) - sltu $at, $t0, $t1 - bnez $at, 1b - addiu $t0, DCACHE_LINESIZE - jr $ra - nop +.set noreorder + cache (CACH_PD | C_IWBINV), (t0) + bltu t0, t1, 1b + addiu t0, DCACHE_LINESIZE +.set reorder + jr ra END(osWritebackDCacheAll) diff --git a/src/libultra/reg/_getcount.c b/src/libultra/reg/_getcount.c new file mode 100644 index 0000000000..53073df994 --- /dev/null +++ b/src/libultra/reg/_getcount.c @@ -0,0 +1,32 @@ +#ifdef BBPLAYER +#include "ultra64.h" + +u32 __osBbLastRCount; +u32 __osBbRCountWraps; +u32 __osBbLastVCount; +u32 __osBbVCountWraps; + +u32 osGetCount(void) { + u32 count; + u32 mask = __osDisableInt(); + + __asm__("mfc0 %0, $%1" : "=r"(count) : "i"(C0_COUNT)); + + if (count < __osBbLastRCount) { + __osBbRCountWraps++; + } + __osBbLastRCount = count; + + count = (((u64)__osBbRCountWraps << 32) | count) * 125ull / 192ull; + + if (count < __osBbLastVCount) { + __osBbVCountWraps++; + } + __osBbLastVCount = count; + + __osRestoreInt(mask); + + return count; +} + +#endif diff --git a/src/libultra/reg/_setcompare.c b/src/libultra/reg/_setcompare.c new file mode 100644 index 0000000000..810afcd8fb --- /dev/null +++ b/src/libultra/reg/_setcompare.c @@ -0,0 +1,20 @@ +#ifdef BBPLAYER +#include "ultra64.h" + +extern u32 __osBbLastRCount; +extern u32 __osBbRCountWraps; +extern u32 __osBbLastVCount; +extern u32 __osBbVCountWraps; + +void __osSetCompare(u32 v) { + if (v != 0) { + u32 mask = __osDisableInt(); + u32 wraps = (v < __osBbLastVCount) ? (__osBbVCountWraps + 1) : __osBbVCountWraps; + + v = (((u64)wraps << 32) | v) * 192ull / 125ull; + + __osRestoreInt(mask); + } + __asm__("mtc0 %0, $%1" ::"r"(v), "i"(C0_COMPARE)); +} +#endif diff --git a/src/makerom/entry.s b/src/makerom/entry.s index 6be493e6b6..870b979d69 100644 --- a/src/makerom/entry.s +++ b/src/makerom/entry.s @@ -1,34 +1,59 @@ #include "ultra64/asm.h" +#include "ultra64/regdef.h" #include "boot.h" -.set noreorder +.text -.section .text +#if defined(NON_MATCHING) || defined(__sgi) +/* Non-matching builds or IDO */ +#define PAD_TO 0x60 +#define LA(reg, sym) la reg, sym +#define BOOT_STACK_TOP sBootThreadStack + BOOT_STACK_SIZE +#else +/* EGCS */ +#define PAD_TO 0x50 +#define LA(reg, sym) \ + lui reg, %lo(sym##_HI); \ + ori reg, %lo(sym) +#endif -.balign 16 +#if !defined(AVOID_UB) +/* Old assembler workarounds: The makerom tool in the N64 SDK was given the bss segment size as a const + * literal, and since this literal was < 0x10000 it was loaded in one instruction. We don't have access + * to the bss segment size until we link everything so we cannot do the same thing. Instead we must load + * only the lower 16 bits of the bss size for matching. + * When AVOID_UB is enabled, don't do this and instead load the full symbol value, otherwise not all of + * bss may be cleared. */ +#if defined(__sgi) +#define LOAD_BSS_SIZE(reg) li reg, %half(_bootSegmentBssSize) +#else +#define LOAD_BSS_SIZE(reg) ori reg, zero, %lo(_bootSegmentBssSize) +#endif +#else +#define LOAD_BSS_SIZE(reg) LA(reg, _bootSegmentBssSize) +#endif LEAF(entrypoint) - // Clear boot segment .bss - la $t0, _bootSegmentBssStart -#ifndef AVOID_UB - // UB: li only loads the lower 16 bits of _bootSegmentBssSize when it may be larger than this, - // so not all of bss may be cleared if it is too large - li $t1, _bootSegmentBssSize -#else - la $t1, _bootSegmentBssSize -#endif + /* Clear boot segment .bss */ + LA( t0, _bootSegmentBssStart) + LOAD_BSS_SIZE(t1) .clear_bss: - addi $t1, $t1, -8 - sw $zero, ($t0) - sw $zero, 4($t0) - bnez $t1, .clear_bss - addi $t0, $t0, 8 - // Set up stack and enter program code - lui $t2, %hi(bootproc) - lui $sp, %hi(sBootThreadStack + BOOT_STACK_SIZE) - addiu $t2, %lo(bootproc) - jr $t2 - addiu $sp, %lo(sBootThreadStack + BOOT_STACK_SIZE) + sw zero, 0(t0) + sw zero, 4(t0) + addi t0, t0, 8 + addi t1, t1, -8 + bnez t1, .clear_bss + + /* Set up stack and enter program code */ + LA( sp, BOOT_STACK_TOP) + LA( t2, bootproc) + jr t2 END(entrypoint) -.fill 0x60 - (. - entrypoint) +#ifdef __sgi +/* IDO can't take absolute differences of symbols so the size of the above is hardcoded */ +.space PAD_TO - 0x34 +#else +/* Pad to a total size taking into account the size of the above */ +.space PAD_TO - (. - entrypoint) +#endif diff --git a/src/makerom/ipl3.s b/src/makerom/ipl3.s deleted file mode 100644 index 45f1c8e6f8..0000000000 --- a/src/makerom/ipl3.s +++ /dev/null @@ -1,4 +0,0 @@ - -.section .text - -.incbin "incbin/ipl3" diff --git a/src/makerom/rom_header.s b/src/makerom/rom_header.s index d3d938cda3..2edf871c40 100644 --- a/src/makerom/rom_header.s +++ b/src/makerom/rom_header.s @@ -6,9 +6,12 @@ /* 0x00 */ ENDIAN_IDENTIFIER /* 0x01 */ PI_DOMAIN_1_CFG(64, 18, 7, 3) /* 0x04 */ SYSTEM_CLOCK_RATE_SETTING(0xF) -/* 0x08 */ ENTRYPOINT(0x80000400) +/* 0x08 */ ENTRYPOINT(entrypoint) /* 0x0C */ OS_VERSION(2, 0, LIBULTRA_VERSION) /* 0x10 */ CHECKSUM() + +#if !PLATFORM_IQUE + /* 0x18 */ PADDING(8) /* 0x20 */ ROM_NAME("THE LEGEND OF ZELDA") /* 0x34 */ PADDING(7) @@ -26,3 +29,9 @@ /* 0x3E */ REGION(PAL) #endif /* 0x3F */ GAME_REVISION(OOT_REVISION) + +#else + + .fill 0x40 - 0x18 + +#endif diff --git a/src/n64dd/n64dd_error_textures.c b/src/n64dd/n64dd_error_textures.c index 037ed7835b..d115fdd6ef 100644 --- a/src/n64dd/n64dd_error_textures.c +++ b/src/n64dd/n64dd_error_textures.c @@ -1,7 +1,5 @@ #include "ultra64.h" -#if PLATFORM_N64 - u64 gN64DDError41Texs[2][0x600 / sizeof(u64)] = { { #include "assets/n64dd/error_textures/n64dd_error_41_jpn.i4.inc.c" @@ -19,5 +17,3 @@ u64 gN64DDPleaseReadManualTexs[2][0x2800 / sizeof(u64)] = { #include "assets/n64dd/error_textures/n64dd_please_read_manual_eng.i4.inc.c" }, }; - -#endif diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c index 9ec48c5084..c8877e0e64 100644 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c +++ b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c @@ -696,7 +696,8 @@ static s16 sDemoEffectLightColors[] = { DEMO_EFFECT_LIGHT_GREEN, DEMO_EFFECT_LIG static s16 sExItemTypes[] = { EXITEM_MAGIC_WIND, EXITEM_MAGIC_FIRE, EXITEM_MAGIC_DARK }; -static s16 sItemGetFlags[] = { ITEMGETINF_18_MASK, ITEMGETINF_19_MASK, ITEMGETINF_1A_MASK }; +static s16 sItemGetFlagMasks[] = { ITEMGETINF_MASK(ITEMGETINF_18), ITEMGETINF_MASK(ITEMGETINF_19), + ITEMGETINF_MASK(ITEMGETINF_1A) }; static u8 sItemIds[] = { ITEM_FARORES_WIND, ITEM_DINS_FIRE, ITEM_NAYRUS_LOVE }; @@ -808,7 +809,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) { this->itemSpawned = true; gSaveContext.healthAccumulator = 0x140; Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_HEARTS_MAGIC); - gSaveContext.save.info.itemGetInf[ITEMGETINF_18_19_1A_INDEX] |= sItemGetFlags[cueIdTemp]; + gSaveContext.save.info.itemGetInf[ITEMGETINF_INDEX_18_19_1A] |= sItemGetFlagMasks[cueIdTemp]; Item_Give(play, sItemIds[cueIdTemp]); } } else { diff --git a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c index 51450109de..5db5debc6a 100644 --- a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c +++ b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c @@ -89,9 +89,9 @@ void BgGanonOtyuka_Destroy(Actor* thisx, PlayState* play2) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("WHY !!!!!!!!!!!!!!!!\n"); - PRINTF(VT_RST); + PRINTF_RST(); } void BgGanonOtyuka_WaitToFall(BgGanonOtyuka* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c index 691e2adbe2..c94ee924b1 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c +++ b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c @@ -92,12 +92,12 @@ void BgJyaBombiwa_Init(Actor* thisx, PlayState* play) { BgJyaBombiwa* this = (BgJyaBombiwa*)thisx; if (PARAMS_GET_U(this->dyna.actor.params, 0, 6) != 0x29) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Warning: Switch Number changed (%s %d)(SW %d)" PRINTF("Warning : Switch Number が変更された(%s %d)(SW %d)\n", "../z_bg_jya_bombiwa.c", 218, PARAMS_GET_U(this->dyna.actor.params, 0, 6)); - PRINTF(VT_RST); + PRINTF_RST(); } BgJyaBombiwa_SetupDynaPoly(this, play, &gBombiwaCol, 0); BgJyaBombiwa_InitCollider(this, play); diff --git a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c index 3b418afec1..c32bd92896 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c +++ b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c @@ -140,10 +140,10 @@ void BgJyaCobra_SpawnRay(BgJyaCobra* this, PlayState* play) { #if DEBUG_FEATURES if (this->dyna.actor.child == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); // "Error : Mir Ray occurrence failure" PRINTF("Error : Mir Ray 発生失敗 (%s %d)\n", "../z_bg_jya_cobra.c", 270); - PRINTF(VT_RST); + PRINTF_RST(); } #endif } diff --git a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c index 66875ae85b..bbdc93c2f8 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c +++ b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c @@ -125,10 +125,10 @@ void BgJyaZurerukabe_Init(Actor* thisx, PlayState* play) { } if (i == ARRAY_COUNT(D_8089B9F0)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("home pos が変更されたみたい(%s %d)(arg_data 0x%04x)\n", "../z_bg_jya_zurerukabe.c", 299, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); } this->unk_16E = D_8089B9F8[this->unk_168]; diff --git a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c index 2839607d85..00ca47644f 100644 --- a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c +++ b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c @@ -63,7 +63,7 @@ s32 func_808B1AE0(BgSpot09Obj* this, PlayState* play) { return this->dyna.actor.params == 0; } - carpentersRescued = GET_EVENTCHKINF_CARPENTERS_FREE_ALL(); + carpentersRescued = GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED(); if (LINK_AGE_IN_YEARS == YEARS_ADULT) { switch (this->dyna.actor.params) { @@ -138,8 +138,7 @@ void BgSpot09Obj_Init(Actor* thisx, PlayState* play) { BgSpot09Obj* this = (BgSpot09Obj*)thisx; PRINTF("Spot09 Object [arg_data : 0x%04x](大工救出フラグ 0x%x)\n", this->dyna.actor.params, - gSaveContext.save.info.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX] & - EVENTCHKINF_CARPENTERS_FREE_MASK_ALL); + GET_EVENTCHKINF_CARPENTERS_RESCUED_FLAGS()); this->dyna.actor.params &= 0xFF; if ((this->dyna.actor.params < 0) || (this->dyna.actor.params >= 5)) { PRINTF("Error : Spot 09 object の arg_data が判別出来ない(%s %d)(arg_data 0x%04x)\n", "../z_bg_spot09_obj.c", diff --git a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c index 95aecef7ff..566d4342b5 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c +++ b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c @@ -155,9 +155,9 @@ void BgSpot18Basket_Init(Actor* thisx, PlayState* play) { this->dyna.actor.shape.rot.y + 0x1555, this->dyna.actor.shape.rot.z, -1); if (this->dyna.actor.child == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : 変化壷蓋発生失敗(%s %d)\n", "../z_bg_spot18_basket.c", 351); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); } } diff --git a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c index 9b9fd17c75..bf270508c4 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c @@ -877,10 +877,10 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) { } if (((s8)bossFd->actor.colChkInfo.health > 2) || canKill) { bossFd->actor.colChkInfo.health -= damage; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("damage %d\n", damage); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("hp %d\n", bossFd->actor.colChkInfo.health); if ((s8)bossFd->actor.colChkInfo.health <= 0) { diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c index 3ad6c417b7..fc82d8000e 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c @@ -1747,7 +1747,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) { s16 i; Player* player = GET_PLAYER(play); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("Core_Damage_check START\n"); if (this->coreCollider.base.atFlags & AT_HIT) { this->coreCollider.base.atFlags &= ~AT_HIT; @@ -1843,7 +1843,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) { } // "end !!" PRINTF("Core_Damage_check 終わり !!\n"); - PRINTF(VT_RST); + PRINTF_RST(); } void BossMo_Core(BossMo* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 2fac588608..64b3cc1088 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -4,6 +4,8 @@ #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) +#define ENDAIKU_GET_TYPE(thisx) PARAMS_GET_U((thisx)->params, 0, 2) + typedef struct EnDaikuEscapeSubCamParam { Vec3f eyePosDeltaLocal; s32 maxFramesActive; @@ -150,21 +152,21 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { EnDaiku* this = (EnDaiku*)thisx; s32 pad; s32 noKill = true; - s32 isFree = false; + s32 isRescued = false; - if (PARAMS_GET_U(this->actor.params, 0, 2) == 0 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(0))) { - isFree = true; - } else if (PARAMS_GET_U(this->actor.params, 0, 2) == 1 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(1))) { - isFree = true; - } else if (PARAMS_GET_U(this->actor.params, 0, 2) == 2 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(2))) { - isFree = true; - } else if (PARAMS_GET_U(this->actor.params, 0, 2) == 3 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(3))) { - isFree = true; + if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE0 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_0_RESCUED)) { + isRescued = true; + } else if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE1 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_1_RESCUED)) { + isRescued = true; + } else if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE2 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_2_RESCUED)) { + isRescued = true; + } else if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE3 && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_3_RESCUED)) { + isRescued = true; } - if (isFree == true && play->sceneId == SCENE_THIEVES_HIDEOUT) { + if (isRescued == true && play->sceneId == SCENE_THIEVES_HIDEOUT) { noKill = false; - } else if (!isFree && play->sceneId == SCENE_CARPENTERS_TENT) { + } else if (!isRescued && play->sceneId == SCENE_CARPENTERS_TENT) { noKill = false; } @@ -200,7 +202,7 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2; this->actionFunc = EnDaiku_Jailed; } else { - if (PARAMS_GET_U(this->actor.params, 0, 2) == 1 || PARAMS_GET_U(this->actor.params, 0, 2) == 3) { + if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE1 || ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE3) { EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_SIT, &this->currentAnimIndex); this->stateFlags |= ENDAIKU_STATEFLAG_1; } else { @@ -254,7 +256,7 @@ s32 EnDaiku_UpdateTalking(EnDaiku* this, PlayState* play) { void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { s32 carpenterType; - s32 freedCount; + s32 rescuedCount; s16 sp2E; s16 sp2C; @@ -268,15 +270,14 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { Actor_OfferTalk(&this->actor, play, 100.0f) == 1) { if (play->sceneId == SCENE_THIEVES_HIDEOUT) { if (this->stateFlags & ENDAIKU_STATEFLAG_GERUDODEFEATED) { - freedCount = 0; + rescuedCount = 0; for (carpenterType = 0; carpenterType < 4; carpenterType++) { - if (gSaveContext.save.info.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX] & - EVENTCHKINF_CARPENTERS_FREE_MASK(carpenterType)) { - freedCount++; + if (ENDAIKU_IS_CARPENTER_RESCUED(carpenterType)) { + rescuedCount++; } } - switch (freedCount) { + switch (rescuedCount) { case 0: this->actor.textId = 0x605B; break; @@ -295,15 +296,15 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { this->actor.textId = 0x6007; } } else if (play->sceneId == SCENE_CARPENTERS_TENT) { - switch (PARAMS_GET_U(this->actor.params, 0, 2)) { - case 0: + switch (ENDAIKU_GET_TYPE(&this->actor)) { + case ENDAIKU_TYPE0: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { this->actor.textId = 0x6060; } else { this->actor.textId = 0x605F; } break; - case 1: + case ENDAIKU_TYPE1: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { this->actor.textId = 0x6063; } else { @@ -314,7 +315,7 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { } } break; - case 2: + case ENDAIKU_TYPE2: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { this->actor.textId = 0x6066; } else { @@ -325,7 +326,7 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { } } break; - case 3: + case ENDAIKU_TYPE3: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { this->actor.textId = 0x6068; } else { @@ -385,7 +386,7 @@ void EnDaiku_WaitFreedom(EnDaiku* this, PlayState* play) { } /** - * The carpenter is free, initializes his running away animation + * The carpenter is rescued, initializes his running away animation */ void EnDaiku_InitEscape(EnDaiku* this, PlayState* play) { Path* path; @@ -399,11 +400,10 @@ void EnDaiku_InitEscape(EnDaiku* this, PlayState* play) { EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_RUN, &this->currentAnimIndex); this->stateFlags &= ~(ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2); - gSaveContext.save.info.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX] |= - EVENTCHKINF_CARPENTERS_FREE_MASK(PARAMS_GET_U(this->actor.params, 0, 2)); + ENDAIKU_SET_CARPENTER_RESCUED(ENDAIKU_GET_TYPE(&this->actor)); this->actor.gravity = -1.0f; - this->escapeSubCamTimer = sEscapeSubCamParams[PARAMS_GET_U(this->actor.params, 0, 2)].maxFramesActive; + this->escapeSubCamTimer = sEscapeSubCamParams[ENDAIKU_GET_TYPE(&this->actor)].maxFramesActive; EnDaiku_InitSubCamera(this, play); exitLoop = false; @@ -444,11 +444,11 @@ void EnDaiku_InitSubCamera(EnDaiku* this, PlayState* play) { Vec3f eyePosDeltaWorld; this->subCamActive = true; - this->escapeSubCamTimer = sEscapeSubCamParams[PARAMS_GET_U(this->actor.params, 0, 2)].maxFramesActive; + this->escapeSubCamTimer = sEscapeSubCamParams[ENDAIKU_GET_TYPE(&this->actor)].maxFramesActive; - eyePosDeltaLocal.x = sEscapeSubCamParams[PARAMS_GET_U(this->actor.params, 0, 2)].eyePosDeltaLocal.x; - eyePosDeltaLocal.y = sEscapeSubCamParams[PARAMS_GET_U(this->actor.params, 0, 2)].eyePosDeltaLocal.y; - eyePosDeltaLocal.z = sEscapeSubCamParams[PARAMS_GET_U(this->actor.params, 0, 2)].eyePosDeltaLocal.z; + eyePosDeltaLocal.x = sEscapeSubCamParams[ENDAIKU_GET_TYPE(&this->actor)].eyePosDeltaLocal.x; + eyePosDeltaLocal.y = sEscapeSubCamParams[ENDAIKU_GET_TYPE(&this->actor)].eyePosDeltaLocal.y; + eyePosDeltaLocal.z = sEscapeSubCamParams[ENDAIKU_GET_TYPE(&this->actor)].eyePosDeltaLocal.z; Matrix_RotateY(BINANG_TO_RAD(this->actor.world.rot.y), MTXMODE_NEW); Matrix_MultVec3f(&eyePosDeltaLocal, &eyePosDeltaWorld); @@ -493,7 +493,7 @@ void EnDaiku_EscapeSuccess(EnDaiku* this, PlayState* play) { Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE); this->subCamActive = false; - if (GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { Actor* gerudoGuard; Vec3f vec; @@ -594,13 +594,13 @@ void EnDaiku_Draw(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); - if (PARAMS_GET_U(thisx->params, 0, 2) == 0) { + if (ENDAIKU_GET_TYPE(thisx) == ENDAIKU_TYPE0) { gDPSetEnvColor(POLY_OPA_DISP++, 170, 10, 70, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == 1) { + } else if (ENDAIKU_GET_TYPE(thisx) == ENDAIKU_TYPE1) { gDPSetEnvColor(POLY_OPA_DISP++, 170, 200, 255, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == 2) { + } else if (ENDAIKU_GET_TYPE(thisx) == ENDAIKU_TYPE2) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 230, 70, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == 3) { + } else if (ENDAIKU_GET_TYPE(thisx) == ENDAIKU_TYPE3) { gDPSetEnvColor(POLY_OPA_DISP++, 200, 0, 150, 255); } @@ -637,7 +637,7 @@ void EnDaiku_PostLimbDraw(PlayState* play, s32 limb, Gfx** dList, Vec3s* rot, vo if (limb == 15) { // head Matrix_MultVec3f(&targetPosHeadLocal, &this->actor.focus.pos); - gSPDisplayList(POLY_OPA_DISP++, hairDLists[PARAMS_GET_U(this->actor.params, 0, 2)]); + gSPDisplayList(POLY_OPA_DISP++, hairDLists[ENDAIKU_GET_TYPE(&this->actor)]); } CLOSE_DISPS(play->state.gfxCtx, "../z_en_daiku.c", 1330); diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h index 82b7a06346..69136f6a92 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h @@ -8,6 +8,13 @@ struct EnDaiku; typedef void (*EnDaikuActionFunc)(struct EnDaiku*, PlayState*); +typedef enum EnDaikuType { + ENDAIKU_TYPE0, + ENDAIKU_TYPE1, + ENDAIKU_TYPE2, + ENDAIKU_TYPE3 +} EnDaikuType; + typedef struct EnDaiku { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.c b/src/overlays/actors/ovl_En_Fish/z_en_fish.c index 7f16563730..8ef16187f3 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c @@ -384,10 +384,10 @@ void EnFish_Dropped_Fall(EnFish* this, PlayState* play) { EnFish_Dropped_SetupSwimAway(this); } else if ((this->timer <= 0) && (this->actor.params == FISH_DROPPED) && (this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "BG missing? Running Actor_delete" PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_sakana.c", 822); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Fr/z_en_fr.c b/src/overlays/actors/ovl_En_Fr/z_en_fr.c index b683415f80..ee133164c2 100644 --- a/src/overlays/actors/ovl_En_Fr/z_en_fr.c +++ b/src/overlays/actors/ovl_En_Fr/z_en_fr.c @@ -108,22 +108,22 @@ static EnFrPointers sEnFrPointers = { }; #define FROG_HAS_SONG_BEEN_PLAYED(frogSongIndex) \ - (gSaveContext.save.info.eventChkInf[EVENTCHKINF_SONGS_FOR_FROGS_INDEX] & \ + (gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_SONGS_FOR_FROGS] & \ sFrogSongIndexToEventChkInfSongsForFrogsMask[frogSongIndex]) #define FROG_SET_SONG_PLAYED(frogSongIndex) \ - gSaveContext.save.info.eventChkInf[EVENTCHKINF_SONGS_FOR_FROGS_INDEX] |= \ + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_SONGS_FOR_FROGS] |= \ sFrogSongIndexToEventChkInfSongsForFrogsMask[frogSongIndex]; static u16 sFrogSongIndexToEventChkInfSongsForFrogsMask[] = { - EVENTCHKINF_SONGS_FOR_FROGS_ZL_MASK, // FROG_ZL - EVENTCHKINF_SONGS_FOR_FROGS_EPONA_MASK, // FROG_EPONA - EVENTCHKINF_SONGS_FOR_FROGS_SARIA_MASK, // FROG_SARIA - EVENTCHKINF_SONGS_FOR_FROGS_SUNS_MASK, // FROG_SUNS - EVENTCHKINF_SONGS_FOR_FROGS_SOT_MASK, // FROG_SOT - EVENTCHKINF_SONGS_FOR_FROGS_STORMS_MASK, // FROG_STORMS - EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_MASK, // FROG_CHOIR_SONG - 0, // FROG_NO_SONG + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_ZL), // FROG_ZL + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_EPONA), // FROG_EPONA + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_SARIA), // FROG_SARIA + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_SUNS), // FROG_SUNS + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_SOT), // FROG_SOT + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_STORMS), // FROG_STORMS + EVENTCHKINF_MASK(EVENTCHKINF_SONGS_FOR_FROGS_CHOIR), // FROG_CHOIR_SONG + 0, // FROG_NO_SONG }; static u8 sFrogToFrogSongIndex[] = { @@ -245,20 +245,20 @@ void EnFr_Init(Actor* thisx, PlayState* play) { this->actionFunc = EnFr_Idle; } else { if ((this->actor.params >= 6) || (this->actor.params < 0)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "The argument is wrong!!" PRINTF("%s[%d] : 引数が間違っている!!(%d)\n", "../z_en_fr.c", 370, this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_fr.c", 372); } this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_GAMEPLAY_FIELD_KEEP); if (this->requiredObjectSlot < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There is no bank!!" PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_fr.c", 380); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_fr.c", 382); } } @@ -980,10 +980,10 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) { EnFr* frog = sEnFrPointers.frogs[frogIndex]; if (frog == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There are no frogs!?" PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1604); - PRINTF(VT_RST); + PRINTF_RST(); return; } else if (frog->isDeactivating != true) { return; @@ -994,10 +994,10 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) { EnFr* frog = sEnFrPointers.frogs[frogIndex]; if (frog == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There are no frogs!?" PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1618); - PRINTF(VT_RST); + PRINTF_RST(); return; } frog->isDeactivating = false; diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c index d4fd63c0e4..6f526c242e 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c @@ -27,7 +27,7 @@ void EnGe1_Destroy(Actor* thisx, PlayState* play); void EnGe1_Update(Actor* thisx, PlayState* play); void EnGe1_Draw(Actor* thisx, PlayState* play); -s32 EnGe1_CheckCarpentersFreed(void); +s32 EnGe1_CheckAllCarpentersRescued(void); void EnGe1_WatchForPlayerFrontOnly(EnGe1* this, PlayState* play); void EnGe1_SetNormalText(EnGe1* this, PlayState* play); void EnGe1_WatchForAndSensePlayer(EnGe1* this, PlayState* play); @@ -114,7 +114,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) { case GE1_TYPE_GATE_OPERATOR: this->hairstyle = GE1_HAIR_STRAIGHT; - if (EnGe1_CheckCarpentersFreed()) { + if (EnGe1_CheckAllCarpentersRescued()) { this->actionFunc = EnGe1_CheckGate_GateOp; } else { this->actionFunc = EnGe1_WatchForPlayerFrontOnly; @@ -124,7 +124,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) { case GE1_TYPE_NORMAL: this->hairstyle = GE1_HAIR_STRAIGHT; - if (EnGe1_CheckCarpentersFreed()) { + if (EnGe1_CheckAllCarpentersRescued()) { this->actionFunc = EnGe1_SetNormalText; } else { this->actionFunc = EnGe1_WatchForAndSensePlayer; @@ -154,7 +154,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) { if (GET_EVENTINF(EVENTINF_HORSES_08)) { this->actionFunc = EnGe1_TalkAfterGame_Archery; - } else if (EnGe1_CheckCarpentersFreed()) { + } else if (EnGe1_CheckAllCarpentersRescued()) { this->actionFunc = EnGe1_Wait_Archery; } else { this->actionFunc = EnGe1_WatchForPlayerFrontOnly; @@ -164,7 +164,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) { case GE1_TYPE_TRAINING_GROUNDS_GUARD: this->hairstyle = GE1_HAIR_STRAIGHT; - if (EnGe1_CheckCarpentersFreed()) { + if (EnGe1_CheckAllCarpentersRescued()) { this->actionFunc = EnGe1_CheckForCard_GTGGuard; } else { this->actionFunc = EnGe1_WatchForPlayerFrontOnly; @@ -208,9 +208,9 @@ void EnGe1_SetAnimationIdle(EnGe1* this) { this->animFunc = EnGe1_CueUpAnimation; } -s32 EnGe1_CheckCarpentersFreed(void) { - if (!(GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(0)) && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(1)) && - GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(2)) && GET_EVENTCHKINF(EVENTCHKINF_CARPENTERS_FREE(3)))) { +s32 EnGe1_CheckAllCarpentersRescued(void) { + if (!(GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_0_RESCUED) && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_1_RESCUED) && + GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_2_RESCUED) && GET_EVENTCHKINF(EVENTCHKINF_CARPENTER_3_RESCUED))) { return false; } return true; diff --git a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c index 8c466a25f7..0df133fe4f 100644 --- a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c +++ b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c @@ -39,7 +39,7 @@ void EnGe2_Destroy(Actor* thisx, PlayState* play); void EnGe2_Update(Actor* thisx, PlayState* play); void EnGe2_Draw(Actor* thisx, PlayState* play); -s32 EnGe2_CheckCarpentersFreed(void); +s32 EnGe2_CheckAllCarpentersRescued(void); void EnGe2_CaptureClose(EnGe2* this, PlayState* play); void EnGe2_CaptureCharge(EnGe2* this, PlayState* play); void EnGe2_CaptureTurn(EnGe2* this, PlayState* play); @@ -137,14 +137,14 @@ void EnGe2_Init(Actor* thisx, PlayState* play) { switch (PARAMS_GET_S(thisx->params, 0, 8)) { case GE2_TYPE_PATROLLING: EnGe2_ChangeAction(this, GE2_ACTION_WALK); - if (EnGe2_CheckCarpentersFreed()) { + if (EnGe2_CheckAllCarpentersRescued()) { this->actor.update = EnGe2_UpdateFriendly; this->actor.attentionRangeType = ATTENTION_RANGE_6; } break; case GE2_TYPE_STATIONARY: EnGe2_ChangeAction(this, GE2_ACTION_STAND); - if (EnGe2_CheckCarpentersFreed()) { + if (EnGe2_CheckAllCarpentersRescued()) { this->actor.update = EnGe2_UpdateFriendly; this->actor.attentionRangeType = ATTENTION_RANGE_6; } @@ -224,13 +224,11 @@ s32 Ge2_DetectPlayerInUpdate(PlayState* play, EnGe2* this, Vec3f* pos, s16 yRot, return 1; } -s32 EnGe2_CheckCarpentersFreed(void) { - if (CHECK_FLAG_ALL(gSaveContext.save.info.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX] & - (EVENTCHKINF_CARPENTERS_FREE_MASK_ALL | 0xF0), - EVENTCHKINF_CARPENTERS_FREE_MASK_ALL)) { - return 1; +s32 EnGe2_CheckAllCarpentersRescued(void) { + if (GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED2()) { + return true; } - return 0; + return false; } // Actions @@ -594,7 +592,7 @@ void EnGe2_Update(Actor* thisx, PlayState* play) { } EnGe2_MoveAndBlink(this, play); - if (EnGe2_CheckCarpentersFreed() && !(this->stateFlags & GE2_STATE_KO)) { + if (EnGe2_CheckAllCarpentersRescued() && !(this->stateFlags & GE2_STATE_KO)) { this->actor.update = EnGe2_UpdateFriendly; this->actor.attentionRangeType = ATTENTION_RANGE_6; } @@ -620,7 +618,7 @@ void EnGe2_UpdateStunned(Actor* thisx, PlayState* play2) { } CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); - if (EnGe2_CheckCarpentersFreed()) { + if (EnGe2_CheckAllCarpentersRescued()) { this->actor.update = EnGe2_UpdateFriendly; this->actor.attentionRangeType = ATTENTION_RANGE_6; this->actor.colorFilterTimer = 0; diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 4261af7b18..4ad132c690 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -382,9 +382,9 @@ void EnGirlA_InitItem(EnGirlA* this, PlayState* play) { if ((params >= SI_MAX) && (params < 0)) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_girlA.c", 1421); return; } @@ -393,9 +393,9 @@ void EnGirlA_InitItem(EnGirlA* this, PlayState* play) { if (this->requiredObjectSlot < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("バンクが無いよ!!(%s)\n", sShopItemDescriptions[params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_girlA.c", 1434); return; } diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index 55c10f147d..3ed42e5119 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -73,10 +73,10 @@ void EnGm_Init(Actor* thisx, PlayState* play) { this->gmObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_GM); if (this->gmObjectSlot < 0) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There is no model bank! !! (Medi Goron)" PRINTF("モデル バンクが無いよ!!(中ゴロン)\n"); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_gm.c", 145); } diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c index 923d4e3e70..56f7b6d975 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c @@ -610,9 +610,9 @@ void EnGoroiwa_Roll(EnGoroiwa* this, PlayState* play) { } } Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, this->actor.yawTowardsPlayer, 0.0f, 0); - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF("Player ぶっ飛ばし\n"); // "Player knocked down" - PRINTF(VT_RST); + PRINTF_RST(); onHitSetupFuncs[PARAMS_GET_U(this->actor.params, 10, 1)](this); Player_PlaySfx(GET_PLAYER(play), NA_SE_PL_BODY_HIT); if ((this->actor.home.rot.z & 1) == 1) { diff --git a/src/overlays/actors/ovl_En_Guest/z_en_guest.c b/src/overlays/actors/ovl_En_Guest/z_en_guest.c index 9bb3cb6783..5c0a14f9d0 100644 --- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c +++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c @@ -57,10 +57,10 @@ void EnGuest_Init(Actor* thisx, PlayState* play) { } else { this->osAnimeObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_OS_ANIME); if (this->osAnimeObjectSlot < 0) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "No such bank!!" PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_guest.c", 129); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_guest.c", 132); } } diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 67e3dd162e..cf678bf1bc 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -457,7 +457,7 @@ s32 EnHorse_BgCheckBridgeJumpPoint(EnHorse* this, PlayState* play) { if (this->actor.speed < 12.8f) { return false; } - if (GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { return false; } @@ -3595,7 +3595,7 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) { this->stateFlags &= ~ENHORSE_FLAG_24; } - if (play->sceneId == SCENE_GERUDO_VALLEY && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (play->sceneId == SCENE_GERUDO_VALLEY && !GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { EnHorse_CheckBridgeJumps(this, play); } diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/src/overlays/actors/ovl_En_Hy/z_en_hy.c index 2c20a18560..2aa163d0fb 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -605,7 +605,7 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { switch (ENHY_GET_TYPE(&this->actor)) { case ENHY_TYPE_DOG_LADY: if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { - return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) + return (this->talonEventChkInf & EVENTCHKINF_MASK(EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO)) ? 0x508D : (GET_INFTABLE(INFTABLE_CB) ? 0x508C : 0x508B); } else if (play->sceneId == SCENE_MARKET_DAY) { @@ -738,7 +738,7 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { if (!LINK_IS_ADULT) { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x505F : (GET_INFTABLE(INFTABLE_163) ? 0x505E : 0x505D); } else { - return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) + return (this->talonEventChkInf & EVENTCHKINF_MASK(EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO)) ? 0x5062 : (GET_INFTABLE(INFTABLE_164) ? 0x5061 : 0x5060); } @@ -1165,7 +1165,7 @@ void EnHy_WaitForObjects(EnHy* this, PlayState* play) { } if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { - this->talonEventChkInf = gSaveContext.save.info.eventChkInf[EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX]; + this->talonEventChkInf = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_TALON_RETURNED_FROM_KAKARIKO]; } EnHy_InitSetProperties(this); diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 27bc0890e8..36d9634f91 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -500,7 +500,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { respawnPos = respawn->pos; // hardcoded coords for lon lon entrance if (D_80A7B998 == 0 && respawnPos.x == 1107.0f && respawnPos.y == 0.0f && respawnPos.z == -3740.0f) { - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = 0; + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] = 0; D_80A7B998 = 1; } this->actionFunc = EnIn_WaitForObject; @@ -586,7 +586,7 @@ void EnIn_WaitForObject(EnIn* this, PlayState* play) { case INGO_RACE_STATE_RACING: EnIn_ChangeAnim(this, ENIN_ANIM_2); this->actionFunc = func_80A7A4C8; - gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = 0; + gSaveContext.eventInf[EVENTINF_INDEX_HORSES] = 0; break; case INGO_RACE_STATE_HORSE_RENTAL_PERIOD: this->actor.attentionRangeType = ATTENTION_RANGE_3; diff --git a/src/overlays/actors/ovl_En_Insect/z_en_insect.c b/src/overlays/actors/ovl_En_Insect/z_en_insect.c index 5fcc053a69..4740bbc791 100644 --- a/src/overlays/actors/ovl_En_Insect/z_en_insect.c +++ b/src/overlays/actors/ovl_En_Insect/z_en_insect.c @@ -578,10 +578,10 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) { distanceSq = Math3D_Vec3fDistSq(&this->actor.world.pos, &this->soilActor->actor.world.pos); } else { if (this->insectFlags & INSECT_FLAG_FOUND_SOIL) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "warning: target Actor is NULL" PRINTF("warning:目標 Actor が NULL (%s %d)\n", "../z_en_mushi.c", 1046); - PRINTF(VT_RST); + PRINTF_RST(); } distanceSq = 40.0f; } @@ -706,10 +706,10 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) { } else if ((type == INSECT_TYPE_FIRST_DROPPED || type == INSECT_TYPE_EXTRA_DROPPED) && (this->insectFlags & INSECT_FLAG_0) && this->lifeTimer <= 0 && this->actionTimer <= 0 && this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "BG missing? To do Actor_delete" PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_mushi.c", 1197); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c index 9fb7bd587c..7e84670426 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -125,10 +125,10 @@ s32 EnIshi_SnapToFloor(EnIshi* this, PlayState* play, f32 arg2) { Math_Vec3f_Copy(&this->actor.home.pos, &this->actor.world.pos); return true; } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Failure attaching to ground" PRINTF("地面に付着失敗(%s %d)\n", "../z_en_ishi.c", 388); - PRINTF(VT_RST); + PRINTF_RST(); return false; } } diff --git a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c index d3dce9d5aa..03242220e0 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c @@ -463,7 +463,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) { this->actor.bgCheckFlags = tempBgFlags; this->actor.depthInWater = tempDepthInWater; - PRINTF(VT_RST); + PRINTF_RST(); if (1) { u8 onGround = (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND); @@ -727,9 +727,9 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) { bomb = bomb->next; } } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OCARINA_MODE %d\n", play->msgCtx.ocarinaMode); - PRINTF(VT_RST); + PRINTF_RST(); switch (this->ocarinaFlag) { case 0: if (play->msgCtx.ocarinaMode == OCARINA_MODE_01) { diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 0d938f45c6..e46125878e 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -115,10 +115,10 @@ s32 EnKusa_SnapToFloor(EnKusa* this, PlayState* play, f32 yOffset) { Math_Vec3f_Copy(&this->actor.home.pos, &this->actor.world.pos); return true; } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Failure attaching to ground" PRINTF("地面に付着失敗(%s %d)\n", "../z_en_kusa.c", 323); - PRINTF(VT_RST); + PRINTF_RST(); return false; } } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 03a6851ef7..8de1d3058d 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -639,7 +639,8 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { #endif } -#if OOT_NTSC + // TODO: implement for iQue +#if OOT_NTSC && !PLATFORM_IQUE if (gSaveContext.language == LANGUAGE_JPN) { this->unk_E30C++; gDPPipeSync(gfx++); @@ -687,11 +688,11 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { gDPLoadTextureBlock(gfx++, gTitleCopyright1998Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); -#elif OOT_VERSION < GC_US +#elif PLATFORM_GC && OOT_VERSION < GC_US gDPLoadTextureBlock(gfx++, gTitleCopyright19982002Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); -#elif OOT_NTSC +#elif PLATFORM_GC && OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN) { gDPLoadTextureBlock(gfx++, gTitleCopyright19982002Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, @@ -701,10 +702,12 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } -#else +#elif PLATFORM_GC && OOT_PAL gDPLoadTextureBlock(gfx++, gTitleCopyright19982003Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); +#elif PLATFORM_IQUE + // TODO: implement for iQue #endif #if PLATFORM_N64 diff --git a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c index 28901f464d..3082b5c35d 100644 --- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c +++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c @@ -100,7 +100,7 @@ void EnMm2_ChangeAnim(EnMm2* this, s32 index, s32* currentIndex) { } void func_80AAEF70(EnMm2* this, PlayState* play) { - if (!GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (!GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { this->actor.textId = 0x6086; } else if (GET_INFTABLE(INFTABLE_17F)) { if (GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) { diff --git a/src/overlays/actors/ovl_En_Mu/z_en_mu.c b/src/overlays/actors/ovl_En_Mu/z_en_mu.c index 01c3788df9..dbe5e1b15c 100644 --- a/src/overlays/actors/ovl_En_Mu/z_en_mu.c +++ b/src/overlays/actors/ovl_En_Mu/z_en_mu.c @@ -64,9 +64,9 @@ void EnMu_Interact(EnMu* this, PlayState* play) { s32 randomIndex; s32 i; - textFlags = gSaveContext.eventInf[EVENTINF_20_21_22_23_24_INDEX] & + textFlags = gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] & (EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK); - gSaveContext.eventInf[EVENTINF_20_21_22_23_24_INDEX] &= + gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] &= ~(EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK); randomIndex = (play->state.frames + (s32)(Rand_ZeroOne() * 5.0f)) % 5; @@ -95,7 +95,7 @@ void EnMu_Interact(EnMu* this, PlayState* play) { textFlags |= bitmask[randomIndex]; this->defaultTextId = textIdOffset[randomIndex] | 0x7000; textFlags &= EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK | 0xE0; - gSaveContext.eventInf[EVENTINF_20_21_22_23_24_INDEX] |= textFlags; + gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] |= textFlags; } u16 EnMu_GetTextId(PlayState* play, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c index 88ec34a096..144c76b2cb 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -66,8 +66,8 @@ static Vec3f sKakarikoPosList[] = { }; static s16 sKakarikoFlagList[] = { - INFTABLE_199_MASK, INFTABLE_19A_MASK, INFTABLE_19B_MASK, INFTABLE_19C_MASK, - INFTABLE_19D_MASK, INFTABLE_19E_MASK, INFTABLE_19F_MASK, + INFTABLE_MASK(INFTABLE_199), INFTABLE_MASK(INFTABLE_19A), INFTABLE_MASK(INFTABLE_19B), INFTABLE_MASK(INFTABLE_19C), + INFTABLE_MASK(INFTABLE_19D), INFTABLE_MASK(INFTABLE_19E), INFTABLE_MASK(INFTABLE_19F), }; static u8 sLowerRiverSpawned = false; @@ -162,7 +162,7 @@ void EnNiw_Init(Actor* thisx, PlayState* play) { fabsf(this->actor.world.pos.z - sKakarikoPosList[i].z) < 40.0f) { this->unk_2AA = i; PRINTF(VT_FGCOL(YELLOW) " 通常鶏index %d\n" VT_RST, this->unk_2AA); - if (gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX] & + if (gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] & sKakarikoFlagList[i]) { this->actor.world.pos.x = 300.0f; this->actor.world.pos.y = 100.0f; diff --git a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c index c58a8663f8..0415f95bb9 100644 --- a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c +++ b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c @@ -43,8 +43,8 @@ static s16 sMissingCuccoTextIds[] = { }; static s16 D_80ABB3B4[] = { - INFTABLE_199_MASK, INFTABLE_19A_MASK, INFTABLE_19B_MASK, INFTABLE_19C_MASK, - INFTABLE_19D_MASK, INFTABLE_19E_MASK, INFTABLE_19F_MASK, + INFTABLE_MASK(INFTABLE_199), INFTABLE_MASK(INFTABLE_19A), INFTABLE_MASK(INFTABLE_19B), INFTABLE_MASK(INFTABLE_19C), + INFTABLE_MASK(INFTABLE_19D), INFTABLE_MASK(INFTABLE_19E), INFTABLE_MASK(INFTABLE_19F), }; static ColliderCylinderInit sCylinderInit = { @@ -210,7 +210,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { if ((fabsf(currentCucco->actor.world.pos.x - 330.0f) < 90.0f) && (fabsf(currentCucco->actor.world.pos.z - 1610.0f) < 190.0f)) { if (this->unk_26C == 0) { - gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX] |= + gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] |= D_80ABB3B4[currentCucco->unk_2AA]; if (BREG(1) != 0) { // "GET inside the chicken fence!" @@ -219,7 +219,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { } this->cuccosInPen++; } else if (this->unk_26C == 0) { - gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX] &= + gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] &= ~D_80ABB3B4[currentCucco->unk_2AA]; } } @@ -276,12 +276,13 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { this->unk_262 = TEXT_STATE_EVENT; this->unk_26A = this->cuccosInPen; PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 柵内BIT変更前 ☆☆ %x\n" VT_RST, - gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX]); - gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX] &= - (u16) ~(INFTABLE_199_MASK | INFTABLE_19A_MASK | INFTABLE_19B_MASK | INFTABLE_19C_MASK | - INFTABLE_19D_MASK | INFTABLE_19E_MASK | INFTABLE_19F_MASK); + gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F]); + gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] &= + (u16) ~(INFTABLE_MASK(INFTABLE_199) | INFTABLE_MASK(INFTABLE_19A) | INFTABLE_MASK(INFTABLE_19B) | + INFTABLE_MASK(INFTABLE_19C) | INFTABLE_MASK(INFTABLE_19D) | INFTABLE_MASK(INFTABLE_19E) | + INFTABLE_MASK(INFTABLE_19F)); PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 柵内BIT変更後 ☆☆ %x\n" VT_RST, - gSaveContext.save.info.infTable[INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX]); + gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F]); PRINTF("\n\n"); this->actionFunc = func_80ABA654; return; diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 2016b3bafb..a083ef85d7 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -593,9 +593,9 @@ void EnOssan_Init(Actor* thisx, PlayState* play) { //! @bug This check will always evaluate to false, it should be || not && if (this->actor.params > OSSAN_TYPE_MASK && this->actor.params < OSSAN_TYPE_KOKIRI) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1246); return; } @@ -622,18 +622,18 @@ void EnOssan_Init(Actor* thisx, PlayState* play) { if (this->objectSlot1 < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1284); return; } if (EnOssan_TryGetObjBankIndices(this, play, objectIds) == 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("予備バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1295); return; } @@ -2127,10 +2127,10 @@ void EnOssan_InitActionFunc(EnOssan* this, PlayState* play) { this->shelves = (EnTana*)Actor_Find(&play->actorCtx, ACTOR_EN_TANA, ACTORCAT_PROP); if (this->shelves == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Warning!! There are no shelves!!" PRINTF("★★★ 警告!! 棚がないよ!! ★★★\n"); - PRINTF(VT_RST); + PRINTF_RST(); return; } diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index c5ed802b70..46696027f4 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -220,11 +220,11 @@ void EnOwl_Init(Actor* thisx, PlayState* play) { break; default: // Outside kokiri forest - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF("no = %d \n", owlType); PRINTF(T("未完成のフクロウ未完成のフクロウ未完成のフクロウ\n", "Unfinished owl unfinished owl unfinished owl\n")); - PRINTF(VT_RST); + PRINTF_RST(); this->actionFlags |= 2; this->unk_3EE = 0x20; this->actionFunc = EnOwl_WaitOutsideKokiri; @@ -927,14 +927,14 @@ void func_80ACC00C(EnOwl* this, PlayState* play) { if (this->actor.xzDistToPlayer < 50.0f) { if (!Play_InCsMode(play)) { owlType = PARAMS_GET_S(this->actor.params, 6, 6); - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF(T("%dのフクロウ\n", "%d owl\n"), owlType); - PRINTF(VT_RST); + PRINTF_RST(); switch (owlType) { case 7: - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF(T("SPOT 06 の デモがはしった\n", "Demo of SPOT 06 has been completed\n")); - PRINTF(VT_RST); + PRINTF_RST(); play->csCtx.script = SEGMENTED_TO_VIRTUAL(gLakeHyliaOwlCs); this->actor.draw = NULL; break; diff --git a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c index b4de777c72..00eff4a39f 100644 --- a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c +++ b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c @@ -143,7 +143,8 @@ static EnPoFieldInfo sPoFieldInfo[2] = { static Vec3f D_80AD714C = { 0.0f, 1400.0f, 0.0f }; -#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128 ntsc-1.2:128" +#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128 ntsc-1.2:128 pal-1.0:128" \ + "pal-1.1:128" static Vec3s sSpawnPositions[10]; static u8 sSpawnSwitchFlags[10]; diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index e4ad439806..ac10651812 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -74,19 +74,18 @@ static EnSthActionFunc sRewardObtainedWaitActions[6] = { }; static u16 sEventFlags[6] = { - 0, EVENTCHKINF_DA_MASK, EVENTCHKINF_DB_MASK, EVENTCHKINF_DC_MASK, EVENTCHKINF_DD_MASK, EVENTCHKINF_DE_MASK, + 0, + EVENTCHKINF_MASK(EVENTCHKINF_SKULLTULA_REWARD_10), + EVENTCHKINF_MASK(EVENTCHKINF_SKULLTULA_REWARD_20), + EVENTCHKINF_MASK(EVENTCHKINF_SKULLTULA_REWARD_30), + EVENTCHKINF_MASK(EVENTCHKINF_SKULLTULA_REWARD_40), + EVENTCHKINF_MASK(EVENTCHKINF_SKULLTULA_REWARD_50), }; static s16 sGetItemIds[6] = { GI_RUPEE_GOLD, GI_WALLET_ADULT, GI_STONE_OF_AGONY, GI_WALLET_GIANT, GI_BOMBCHUS_10, GI_HEART_PIECE, }; -static Vec3f D_80B0B49C = { 700.0f, 400.0f, 0.0f }; - -static Color_RGB8 sTunicColors[6] = { - { 190, 110, 0 }, { 0, 180, 110 }, { 0, 255, 80 }, { 255, 160, 60 }, { 190, 230, 250 }, { 240, 230, 120 }, -}; - void EnSth_SetupAction(EnSth* this, EnSthActionFunc actionFunc) { this->actionFunc = actionFunc; } @@ -114,7 +113,7 @@ void EnSth_Init(Actor* thisx, PlayState* play) { } objectId = sObjectIds[params]; - if (objectId != 1) { + if (objectId != OBJECT_GAMEPLAY_KEEP) { objectSlot = Object_GetSlot(&play->objectCtx, objectId); } else { objectSlot = 0; @@ -154,9 +153,9 @@ void EnSth_SetupAfterObjectLoaded(EnSth* this, PlayState* play) { 16); Animation_PlayLoop(&this->skelAnime, sAnimations[this->actor.params]); - this->eventFlag = sEventFlags[this->actor.params]; params = &this->actor.params; - if (gSaveContext.save.info.eventChkInf[EVENTCHKINF_DA_DB_DC_DD_DE_INDEX] & this->eventFlag) { + this->eventFlag = sEventFlags[*params]; + if (gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_SKULLTULA_REWARD] & this->eventFlag) { EnSth_SetupAction(this, sRewardObtainedWaitActions[*params]); } else { EnSth_SetupAction(this, EnSth_RewardUnobtainedWait); @@ -256,7 +255,7 @@ void EnSth_GiveReward(EnSth* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; EnSth_SetupAction(this, EnSth_RewardObtainedTalk); - gSaveContext.save.info.eventChkInf[EVENTCHKINF_DA_DB_DC_DD_DE_INDEX] |= this->eventFlag; + gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_SKULLTULA_REWARD] |= this->eventFlag; } else { EnSth_GivePlayerItem(this, play); } @@ -358,6 +357,7 @@ s32 EnSth_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p } void EnSth_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + static Vec3f D_80B0B49C = { 700.0f, 400.0f, 0.0f }; EnSth* this = (EnSth*)thisx; if (limbIndex == 15) { @@ -383,6 +383,9 @@ Gfx* EnSth_AllocColorDList(GraphicsContext* play, u8 envR, u8 envG, u8 envB, u8 } void EnSth_Draw(Actor* thisx, PlayState* play) { + static Color_RGB8 sShirtColors[6] = { + { 190, 110, 0 }, { 0, 180, 110 }, { 0, 255, 80 }, { 255, 160, 60 }, { 190, 230, 250 }, { 240, 230, 120 }, + }; EnSth* this = (EnSth*)thisx; Color_RGB8* envColor1; @@ -392,8 +395,8 @@ void EnSth_Draw(Actor* thisx, PlayState* play) { Gfx_SetupDL_37Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, - EnSth_AllocColorDList(play->state.gfxCtx, sTunicColors[this->actor.params].r, - sTunicColors[this->actor.params].g, sTunicColors[this->actor.params].b, 255)); + EnSth_AllocColorDList(play->state.gfxCtx, sShirtColors[this->actor.params].r, + sShirtColors[this->actor.params].g, sShirtColors[this->actor.params].b, 255)); if (this->actor.params == 0) { gSPSegment(POLY_OPA_DISP++, 0x09, EnSth_AllocColorDList(play->state.gfxCtx, 190, 110, 0, 255)); diff --git a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c index ab2c9aaf77..5b31c32f84 100644 --- a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c +++ b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c @@ -258,7 +258,7 @@ s32 EnToryo_GetTextId(EnToryo* this, PlayState* play) { if (textId == 0) { if (this->stateFlags & 1) { - if (GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { + if (GET_EVENTCHKINF_CARPENTERS_ALL_RESCUED()) { ret = 0x606C; } else if (GET_INFTABLE(INFTABLE_170)) { ret = 0x606B; diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index ebb4a45787..a2c5ee5ae6 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -35,7 +35,7 @@ #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:170 gc-eu-mq:170 gc-jp:170 gc-jp-ce:170 gc-jp-mq:170 gc-us:170 gc-us-mq:170" \ +#pragma increment_block_number "gc-eu:167 gc-eu-mq:167 gc-jp:167 gc-jp-ce:167 gc-jp-mq:167 gc-us:167 gc-us-mq:167" \ "ntsc-1.0:121 ntsc-1.1:121 ntsc-1.2:121 pal-1.0:121 pal-1.1:121" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -5172,11 +5172,11 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { #if DEBUG_FEATURES if (0) { // Strings existing only in rodata - PRINTF(VT_FGCOL(GREEN)); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_GREEN(); + PRINTF_COLOR_YELLOW(); PRINTF("plays %x\n"); PRINTF("ys %x\n"); - PRINTF(VT_RST); + PRINTF_RST(); } #endif @@ -5676,9 +5676,9 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { sREG(14) = 0; #endif - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("zelda_time %x\n", ((void)0, gSaveContext.save.dayTime)); - PRINTF(VT_RST); + PRINTF_RST(); if (sStormChanceTimer >= 2) { sStormChanceTimer--; diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index 1e34d1c586..a7bf1716d7 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -472,18 +472,18 @@ void ObjBean_Init(Actor* thisx, PlayState* play) { if (Flags_GetSwitch(play, PARAMS_GET_U(this->dyna.actor.params, 0, 6)) || (DEBUG_FEATURES && mREG(1) == 1)) { path = PARAMS_GET_U(this->dyna.actor.params, 8, 5); if (path == 0x1F) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "No path data?" PRINTF("パスデータが無い?(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 909, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); return; } if (play->pathList[path].count < 3) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Incorrect number of path data" PRINTF("パスデータ数が不正(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 921, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); return; } @@ -888,10 +888,10 @@ void ObjBean_Update(Actor* thisx, PlayState* play) { this->dyna.actor.shape.shadowScale = this->dyna.actor.scale.x * 88.0f; if (ObjBean_CheckForHorseTrample(this, play)) { - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); // "Horse and bean tree lift collision" PRINTF("馬と豆の木リフト衝突!!!\n"); - PRINTF(VT_RST); + PRINTF_RST(); ObjBean_Break(this, play); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId); func_80B908EC(this); diff --git a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c index a2d8dbbb12..adecf7e08b 100644 --- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c +++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c @@ -188,10 +188,10 @@ void ObjLightswitch_Init(Actor* thisx, PlayState* play) { if (Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_OBJ_OSHIHIKI, this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, 0, this->actor.home.rot.y, 0, (0xFF << 8) | PUSHBLOCK_SMALL_START_ON) == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Push-pull block occurrence failure" PRINTF("押引ブロック発生失敗(%s %d)(arg_data 0x%04x)\n", "../z_obj_lightswitch.c", 452, this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); removeSelf = true; } } diff --git a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c index 82e10d0f23..7ac997ae62 100644 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c +++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c @@ -32,15 +32,15 @@ void ObjMakekinsuta_Init(Actor* thisx, PlayState* play) { ObjMakekinsuta* this = (ObjMakekinsuta*)thisx; if (PARAMS_GET_NOSHIFT(this->actor.params, 13, 2) == 0x4000) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); // "Gold Star Enemy(arg_data %x)" PRINTF("金スタ発生敵(arg_data %x)\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Invalid Argument (arg_data %x)(%s %d)" PRINTF("引数不正 (arg_data %x)(%s %d)\n", this->actor.params, "../z_obj_makekinsuta.c", 119); - PRINTF(VT_RST); + PRINTF_RST(); } this->actionFunc = func_80B98320; } diff --git a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c index 1cc2161196..3ea20567ef 100644 --- a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c +++ b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c @@ -72,9 +72,9 @@ void ObjMakeoshihiki_Init(Actor* thisx, PlayState* play) { if (Actor_SpawnAsChild(&play->actorCtx, thisx, play, ACTOR_OBJ_OSHIHIKI, spawnPos->x, spawnPos->y, spawnPos->z, 0, block->rotY, 0, ((block->color << 6) & 0xC0) | (block->type & 0xF) | 0xFF00) == NULL) { // "Push-pull block failure" - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("Error : 押し引きブロック発生失敗(%s %d)\n", "../z_obj_makeoshihiki.c", 194); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(thisx); return; } diff --git a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c index 05f23ebaaf..e791de6297 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c @@ -322,9 +322,9 @@ void ObjSwitch_Init(Actor* thisx, PlayState* play) { this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE; if (OBJSWITCH_FROZEN(&this->dyna.actor) && (ObjSwitch_SpawnIce(this, play) == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : 氷発生失敗 (%s %d)\n", "../z_obj_switch.c", 732); - PRINTF(VT_RST); + PRINTF_RST(); this->dyna.actor.params &= ~OBJSWITCH_FROZEN_FLAG; } diff --git a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c index ac422c63e8..94c6618470 100644 --- a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c +++ b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c @@ -264,9 +264,9 @@ void func_80BA24F8(ObjWarp2block* this, PlayState* play) { this->unk_174++; if (this->unk_174 > 60) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("Error : 時のブロック(ワープ2)が対でセットされていません(%s %d)\n", "../z_obj_warp2block.c", 505); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); } } diff --git a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c index 7953afe1f8..5aeb61031a 100644 --- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c +++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c @@ -85,17 +85,17 @@ void OceffSpot_End(OceffSpot* this, PlayState* play) { if (play->msgCtx.ocarinaAction != OCARINA_ACTION_CHECK_NOWARP_DONE || play->msgCtx.ocarinaMode != OCARINA_MODE_08) { gSaveContext.sunsSongState = SUNSSONG_START; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); // "Sun's Song Flag" PRINTF("z_oceff_spot 太陽の歌フラグ\n"); - PRINTF(VT_RST); + PRINTF_RST(); } } else { play->msgCtx.ocarinaMode = OCARINA_MODE_04; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); // "Ocarina End" PRINTF("z_oceff_spot オカリナ終了\n"); - PRINTF(VT_RST); + PRINTF_RST(); } } } diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index b4b3a94773..820bd3978c 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -338,14 +338,14 @@ static s32 D_80858AA0; // TODO: There's probably a way to match BSS ordering with less padding by spreading the variables out and moving // data around. It would be easier if we had more options for controlling BSS ordering in debug. -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ "ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" static s32 sSavedCurrentMask; static Vec3f sInteractWallCheckResult; static Input* sControlInput; -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160" \ +#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" // .data @@ -10760,7 +10760,7 @@ void Player_Init(Actor* thisx, PlayState* play2) { gSaveContext.respawn[RESPAWN_MODE_DOWN].data = 1; if (play->sceneId <= SCENE_INSIDE_GANONS_CASTLE_COLLAPSE) { - gSaveContext.save.info.infTable[INFTABLE_1AX_INDEX] |= gBitFlags[play->sceneId]; + gSaveContext.save.info.infTable[INFTABLE_INDEX_1AX] |= gBitFlags[play->sceneId]; } startMode = PLAYER_GET_START_MODE(thisx); diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index f0e265f931..f7c6b6e691 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1908,10 +1908,10 @@ void FileSelect_LoadGame(GameState* thisx) { // capacity and `magicFillTarget` gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Z_MAGIC_NOW_NOW=%d MAGIC_NOW=%d\n", ((void)0, gSaveContext.magicFillTarget), gSaveContext.save.info.playerData.magic); - PRINTF(VT_RST); + PRINTF_RST(); gSaveContext.save.info.playerData.naviTimer = 0; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c index f148c1d78b..9bafd123bd 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c @@ -1347,13 +1347,13 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { #endif PRINTF("SAVE"); Sram_WriteSramHeader(sramCtx); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("sram->read_buff[2] = J_N = %x\n", sramCtx->readBuff[2]); PRINTF("sram->read_buff[2] = J_N = %x\n", &sramCtx->readBuff[2]); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF(VT_RST); + PRINTF_RST(); func_800F6700(gSaveContext.audioSetting); PRINTF("終了\n"); return; diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 2777ac889d..2151159c2a 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -20,9 +20,9 @@ void MapSelect_LoadTitle(MapSelectState* this) { } void MapSelect_LoadGame(MapSelectState* this, s32 entranceIndex) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("\n\n\nFILE_NO=%x\n\n\n", gSaveContext.fileNum); - PRINTF(VT_RST); + PRINTF_RST(); if (gSaveContext.fileNum == 0xFF) { Sram_InitDebugSave(); // Set the fill target to be the saved magic amount diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c index 33c98159c9..e633b06e2e 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c @@ -466,7 +466,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { Inventory_ChangeEquipment(pauseCtx->cursorY[PAUSE_EQUIP], pauseCtx->cursorX[PAUSE_EQUIP]); if (pauseCtx->cursorY[PAUSE_EQUIP] == 0) { - gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] = 0; + gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] = 0; gSaveContext.save.info.equips.buttonItems[0] = cursorItem; if ((pauseCtx->cursorX[PAUSE_EQUIP] == 3) && (gSaveContext.save.info.playerData.bgsFlag != 0)) { diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c index bc45e22551..7a6cff2334 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -16,7 +16,7 @@ #include "terminal.h" #include "versions.h" -#pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" #if !PLATFORM_GC #define KALEIDO_PROMPT_CURSOR_R 100 @@ -1877,10 +1877,10 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { #if DEBUG_FEATURES if (pauseCtx->pageIndex == PAUSE_MAP) { if (YREG(7) != 0) { - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("キンスタ数(%d) Get_KIN_STA=%x (%x) (%x)\n", YREG(6), GET_GS_FLAGS(YREG(6)), gAreaGsFlags[YREG(6)], gSaveContext.save.info.gsFlags[YREG(6) >> 2]); - PRINTF(VT_RST); + PRINTF_RST(); YREG(7) = 0; SET_GS_FLAGS(D_8082AE30[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]], @@ -4554,7 +4554,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.healthAccumulator = 0; gSaveContext.magicState = MAGIC_STATE_IDLE; gSaveContext.prevMagicState = MAGIC_STATE_IDLE; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("MAGIC_NOW=%d ", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d → ", gSaveContext.magicFillTarget); gSaveContext.magicCapacity = 0; @@ -4565,7 +4565,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0; PRINTF("MAGIC_NOW=%d ", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget); - PRINTF(VT_RST); + PRINTF_RST(); } else { play->state.running = false; SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, TitleSetupState); @@ -4636,13 +4636,13 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.buttonStatus[3] = D_808321A8[3]; gSaveContext.buttonStatus[4] = D_808321A8[4]; interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("i=%d LAST_TIME_TYPE=%d\n", i, gSaveContext.prevHudVisibilityMode); gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_ChangeHudVisibilityMode(gSaveContext.prevHudVisibilityMode); player->talkActor = NULL; Player_SetEquipmentData(play, player); - PRINTF(VT_RST); + PRINTF_RST(); break; } } diff --git a/tools/.gitignore b/tools/.gitignore index 9583c693b9..8d3a321faa 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -9,4 +9,5 @@ reloc_prereq vtxdis yaz0 -graphovl/ +ido_recomp/ +egcs/ diff --git a/tools/Makefile b/tools/Makefile index 3cde87ebc2..b50027312d 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,6 +1,23 @@ CFLAGS := -Wall -Wextra -pedantic -std=c99 -g -O2 PROGRAMS := elf2rom makeromfs mkdmadata mkldscript preprocess_pragmas reloc_prereq vtxdis +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Linux) + DETECTED_OS=linux +else ifeq ($(UNAME_S),Darwin) + DETECTED_OS=macos +else + $(error Unsupported OS: $(UNAME_S)) +endif + +IDO_RECOMP_VERSION := v1.2 +IDO_RECOMP_5_3_DIR := ido_recomp/$(DETECTED_OS)/5.3 +IDO_RECOMP_7_1_DIR := ido_recomp/$(DETECTED_OS)/7.1 + +EGCS_BINUTILS_VERSION := 0.6 +EGCS_GCC_VERSION := 0.7 +EGCS_DIR := egcs/$(DETECTED_OS) + ifeq ($(shell command -v clang >/dev/null 2>&1; echo $$?),0) CC := clang else @@ -17,13 +34,14 @@ ifneq ($(LLD),0) CFLAGS += -fuse-ld=lld endif -all: $(PROGRAMS) +all: $(PROGRAMS) $(IDO_RECOMP_5_3_DIR) $(IDO_RECOMP_7_1_DIR) $(EGCS_DIR) $(MAKE) -C ZAPD $(MAKE) -C fado $(MAKE) -C audio clean: $(RM) $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) + $(RM) -r ido_recomp egcs $(MAKE) -C ZAPD clean $(MAKE) -C fado clean $(MAKE) -C audio clean @@ -48,3 +66,16 @@ $(1): $($1_SOURCES) endef $(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) + +$(IDO_RECOMP_5_3_DIR): + mkdir -p $@ + curl -sL https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-5.3-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ + +$(IDO_RECOMP_7_1_DIR): + mkdir -p $@ + curl -sL https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-7.1-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ + +$(EGCS_DIR): + mkdir -p $@ + curl -sL https://github.com/decompals/mips-binutils-egcs-2.9.5/releases/download/$(EGCS_BINUTILS_VERSION)/mips-binutils-egcs-2.9.5-$(DETECTED_OS).tar.gz | tar xz -C $@ + curl -sL https://github.com/decompals/mips-gcc-egcs-2.91.66/releases/download/$(EGCS_GCC_VERSION)/mips-gcc-egcs-2.91.66-$(DETECTED_OS).tar.gz | tar xz -C $@ diff --git a/tools/ZAPDConfigs/ique-cn/Config.xml b/tools/ZAPDConfigs/ique-cn/Config.xml new file mode 100644 index 0000000000..b2f4e3e4d3 --- /dev/null +++ b/tools/ZAPDConfigs/ique-cn/Config.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/tools/ZAPDConfigs/ique-cn/SymbolMap.txt b/tools/ZAPDConfigs/ique-cn/SymbolMap.txt new file mode 100644 index 0000000000..52ff547fde --- /dev/null +++ b/tools/ZAPDConfigs/ique-cn/SymbolMap.txt @@ -0,0 +1,2 @@ +80106980 gMtxClear +80AE0B10 sShadowTex diff --git a/tools/audio/soundfont_compiler.c b/tools/audio/soundfont_compiler.c index 3dbf18eaa5..4f9a5779c4 100644 --- a/tools/audio/soundfont_compiler.c +++ b/tools/audio/soundfont_compiler.c @@ -1076,7 +1076,7 @@ emit_c_samples(FILE *out, soundfont *sf) "NO_REORDER SECTION_DATA ALIGNED(16) AdpcmBookHeader SF%d_%s_BOOK_HEADER = {" "\n" " %d, %d," "\n" "};" "\n" - "NO_REORDER SECTION_DATA AdpcmBookData SF%d_%s_BOOK_DATA = {" "\n", + "NO_REORDER SECTION_DATA s16 SF%d_%s_BOOK_DATA[] = {" "\n", // clang-format on sf->info.index, bookname, sample->aifc.book.order, sample->aifc.book.npredictors, sf->info.index, bookname); diff --git a/tools/compress.py b/tools/compress.py index 8abb8b09c6..f4d6a7e95e 100755 --- a/tools/compress.py +++ b/tools/compress.py @@ -17,6 +17,12 @@ import crunch64 import dmadata +COMPRESSION_METHODS = { + "yaz0": crunch64.yaz0.compress, + "gzip": crunch64.gzip.compress, +} + + def align(v: int): v += 0xF return v // 0x10 * 0x10 @@ -48,15 +54,24 @@ def compress_rom( rom_data: memoryview, dmadata_start: int, compress_entries_indices: set[int], + compression_format: str, + pad_to_multiple_of: int, + fill_padding_bytes: bool, n_threads: int = None, ): """ rom_data: the uncompressed rom data dmadata_start: the offset in the rom where the dmadata starts compress_entries_indices: the indices in the dmadata of the segments that should be compressed + compression_format: the compression format to use + pad_to_multiple_of: pad the compressed rom to a multiple of this size, in bytes + fill_padding_bytes: fill the padding bytes with a 0x00 0x01 0x02 ... pattern instead of zeros n_threads: how many cores to use for compression """ + # Compression function + compress = COMPRESSION_METHODS[compression_format] + # Segments of the compressed rom (not all are compressed) compressed_rom_segments: list[RomSegment] = [] @@ -80,7 +95,7 @@ def compress_rom( if is_compressed: segment_data = None segment_data_async = p.apply_async( - crunch64.yaz0.compress, + compress, (bytes(segment_data_uncompressed),), ) else: @@ -149,7 +164,6 @@ def compress_rom( compressed_rom_size = sum( align(len(segment.data)) for segment in compressed_rom_segments ) - pad_to_multiple_of = 8 * 2**20 # 8 MiB compressed_rom_size_padded = ( (compressed_rom_size + pad_to_multiple_of - 1) // pad_to_multiple_of @@ -186,9 +200,10 @@ def compress_rom( ) assert rom_offset == compressed_rom_size - # Pad the compressed rom with the pattern matching the baseroms - for i in range(compressed_rom_size, compressed_rom_size_padded): - compressed_rom_data[i] = i % 256 + if fill_padding_bytes: + # Pad the compressed rom with the pattern matching the baseroms + for i in range(compressed_rom_size, compressed_rom_size_padded): + compressed_rom_data[i] = i % 256 # Write the new dmadata offset = dmadata_start @@ -233,6 +248,25 @@ def main(): " e.g. '0-1,3,5,6-9' is all indices from 0 to 9 (included) except 2 and 4." ), ) + parser.add_argument( + "--format", + dest="format", + choices=COMPRESSION_METHODS.keys(), + default="yaz0", + help="compression format to use (default: yaz0)", + ) + parser.add_argument( + "--pad-to", + dest="pad_to", + type=lambda s: int(s, 16), + help="pad the compressed rom to a multiple of this size, in hex (e.g. 0x800000 for 8 MiB)", + ) + parser.add_argument( + "--fill-padding-bytes", + dest="fill_padding_bytes", + action="store_true", + help="fill the padding bytes with a 0x00 0x01 0x02 ... pattern instead of zeros", + ) parser.add_argument( "--threads", dest="n_threads", @@ -269,6 +303,9 @@ def main(): range(compress_range_first, compress_range_last + 1) ) + compression_format = args.format + pad_to_multiple_of = args.pad_to + fill_padding_bytes = args.fill_padding_bytes n_threads = args.n_threads in_rom_data = in_rom_p.read_bytes() @@ -276,6 +313,9 @@ def main(): memoryview(in_rom_data), dmadata_start, compress_entries_indices, + compression_format, + pad_to_multiple_of, + fill_padding_bytes, n_threads, ) out_rom_p.write_bytes(out_rom_data) diff --git a/tools/disasm/ique-cn/file_addresses.csv b/tools/disasm/ique-cn/file_addresses.csv new file mode 100644 index 0000000000..3f3c9d9590 --- /dev/null +++ b/tools/disasm/ique-cn/file_addresses.csv @@ -0,0 +1,472 @@ +name,vrom_start,vrom_end,rom_start,rom_end,vram_start,overlay_dir +boot,1050,B7A0,1050,0,80000450, +code,AB0000,BB8FA0,A890F0,B08080,80018FA0, +ovl_title,BB8FA0,BB98D0,B08080,B08650,80800000,gamestates +ovl_select,BB98D0,BBC550,B08650,B09C90,80800930,gamestates +ovl_opening,BBC550,BBC6A0,B09C90,B09DA0,808035B0,gamestates +ovl_file_choose,BBC6A0,BCD170,B09DA0,B114B0,80803700,gamestates +ovl_kaleido_scope,BCD170,BE91A0,B114B0,B1CE20,808141F0,misc +ovl_player_actor,BE91A0,C0F8B0,B1CE20,B318E0,80830290,actors +ovl_map_mark_data,C0F8B0,C16410,B318E0,B31C00,80856A70,misc +ovl_En_Test,C16410,C1BCC0,B31C00,B34720,8085D5D0,actors +ovl_En_GirlA,C1BCC0,C1E5E0,B34720,B357F0,80862E80,actors +ovl_En_Part,C1E5E0,C1FC40,B357F0,B36580,808657A0,actors +ovl_En_Light,C1FC40,C20A40,B36580,B36DD0,80866E00,actors +ovl_En_Door,C20A40,C21880,B36DD0,B37790,80867C00,actors +ovl_En_Box,C21880,C233D0,B37790,B387B0,80868A40,actors +ovl_En_Poh,C233D0,C275C0,B387B0,B3AB60,8086A5A0,actors +ovl_En_Okuta,C275C0,C29BA0,B3AB60,B3C1B0,8086E790,actors +ovl_En_Bom,C29BA0,C2AA70,B3C1B0,B3CB60,80870D70,actors +ovl_En_Wallmas,C2AA70,C2C480,B3CB60,B3DA80,80871C40,actors +ovl_En_Dodongo,C2C480,C2F220,B3DA80,B3F4D0,80873650,actors +ovl_En_Firefly,C2F220,C31390,B3F4D0,B40800,808763F0,actors +ovl_En_Horse,C31390,C3D5F0,B40800,B46B20,80878560,actors +ovl_En_Arrow,C3D5F0,C3ECF0,B46B20,B47900,808847C0,actors +ovl_En_Elf,C3ECF0,C436B0,B47900,B4A170,80885EC0,actors +ovl_En_Niw,C436B0,C469E0,B4A170,B4C040,8088A880,actors +ovl_En_Tite,C469E0,C49780,B4C040,B4D800,8088DBB0,actors +ovl_En_Reeba,C49780,C4B1F0,B4D800,B4E810,80890950,actors +ovl_En_Peehat,C4B1F0,C4E8F0,B4E810,B505B0,808923C0,actors +ovl_En_Holl,C4E8F0,C4F8C0,B505B0,B50F90,80895AC0,actors +ovl_En_Scene_Change,C4F8C0,C4F9F0,B50F90,B51060,80896A90,actors +ovl_En_Zf,C4F9F0,C564D0,B51060,B548E0,80896BC0,actors +ovl_En_Hata,C564D0,C56A60,B548E0,B54D00,8089D6B0,actors +ovl_Boss_Dodongo,C56A60,C60560,B54D00,B5A160,8089DC40,actors +ovl_Boss_Goma,C60560,C66500,B5A160,B5D240,808A7740,actors +ovl_En_Zl1,C66500,C6A310,B5D240,B5ED00,808AD6E0,actors +ovl_En_Viewer,C6A310,C6D1B0,B5ED00,B607E0,808B14F0,actors +ovl_En_Goma,C6D1B0,C6FE60,B607E0,B62130,808B43B0,actors +ovl_Bg_Pushbox,C6FE60,C70160,B62130,B62350,808B7060,actors +ovl_En_Bubble,C70160,C71580,B62350,B63030,808B7360,actors +ovl_Door_Shutter,C71580,C73840,B63030,B64550,808B8780,actors +ovl_En_Dodojr,C73840,C756E0,B64550,B65760,808BAA40,actors +ovl_En_Bdfire,C756E0,C76280,B65760,B65EF0,808BC8E0,actors +ovl_En_Boom,C76280,C76B50,B65EF0,B664F0,808BD480,actors +ovl_En_Torch2,C76B50,C792B0,B664F0,B67D50,808BDD50,actors +ovl_En_Bili,C792B0,C7B580,B67D50,B691C0,808C04F0,actors +ovl_En_Tp,C7B580,C7D3F0,B691C0,B6A490,808C27C0,actors +ovl_En_St,C7D3F0,C80060,B6A490,B6BEB0,808C4630,actors +ovl_En_Bw,C80060,C833F0,B6BEB0,B6DC30,808C72A0,actors +ovl_En_Eiyer,C833F0,C85050,B6DC30,B6ED50,808CA630,actors +ovl_En_River_Sound,C85050,C859E0,B6ED50,B6F3D0,808CC290,actors +ovl_En_Horse_Normal,C859E0,C88000,B6F3D0,B708B0,808CCC20,actors +ovl_En_Ossan,C88000,C8E5E0,B708B0,B73780,808CF240,actors +ovl_Bg_Treemouth,C8E5E0,C8FC40,B73780,B741C0,808D5820,actors +ovl_Bg_Dodoago,C8FC40,C90980,B741C0,B74A60,808D6E80,actors +ovl_Bg_Hidan_Dalm,C90980,C911D0,B74A60,B74FB0,808D7C30,actors +ovl_Bg_Hidan_Hrock,C911D0,C91A00,B74FB0,B75510,808D8480,actors +ovl_En_Horse_Ganon,C91A00,C92780,B75510,B75DD0,808D8CB0,actors +ovl_Bg_Hidan_Rock,C92780,C93880,B75DD0,B76880,808D9A30,actors +ovl_Bg_Hidan_Rsekizou,C93880,C94460,B76880,B76FC0,808DAB30,actors +ovl_Bg_Hidan_Sekizou,C94460,C958B0,B76FC0,B77C90,808DB710,actors +ovl_Bg_Hidan_Sima,C958B0,C967B0,B77C90,B78660,808DCB60,actors +ovl_Bg_Hidan_Syoku,C967B0,C96C10,B78660,B78900,808DDA60,actors +ovl_En_Xc,C96C10,C9D370,B78900,B7B400,808DDEC0,actors +ovl_Bg_Hidan_Curtain,C9D370,C9DE10,B7B400,B7BAE0,808E4650,actors +ovl_Bg_Spot00_Hanebasi,C9DE10,C9EF20,B7BAE0,B7C670,808E50F0,actors +ovl_En_Mb,C9EF20,CA3150,B7C670,B7EAB0,808E6200,actors +ovl_En_Bombf,CA3150,CA45E0,B7EAB0,B7F820,808EA430,actors +ovl_Bg_Hidan_Firewall,CA45E0,CA4D40,B7F820,B7FD30,808EB8C0,actors +ovl_Bg_Dy_Yoseizo,CA4D40,CA7B30,B7FD30,B817E0,808EC020,actors +ovl_En_Zl2,CA7B30,CAC230,B817E0,B834B0,808EEE10,actors +ovl_Bg_Hidan_Fslift,CAC230,CAC700,B834B0,B837B0,808F3510,actors +ovl_En_OE2,CAC700,CAC7E0,B837B0,B83830,808F39E0,actors +ovl_Bg_Ydan_Hasi,CAC7E0,CACF90,B83830,B83D40,808F3AC0,actors +ovl_Bg_Ydan_Maruta,CACF90,CAD670,B83D40,B841D0,808F4270,actors +ovl_Boss_Ganondrof,CAD670,CB2400,B841D0,B86CE0,808F4950,actors +ovl_En_Am,CB2400,CB4800,B86CE0,B88160,808F96E0,actors +ovl_En_Dekubaba,CB4800,CB82B0,B88160,B8A190,808FBAE0,actors +ovl_En_M_Fire1,CB82B0,CB8450,B8A190,B8A2C0,808FF590,actors +ovl_En_M_Thunder,CB8450,CB9A50,B8A2C0,B8B070,808FF730,actors +ovl_Bg_Ddan_Jd,CB9A50,CBA0A0,B8B070,B8B4A0,80900D30,actors +ovl_Bg_Breakwall,CBA0A0,CBAF10,B8B4A0,B8BE10,80901380,actors +ovl_En_Jj,CBAF10,CBC4E0,B8BE10,B8C890,809021F0,actors +ovl_En_Horse_Zelda,CBC4E0,CBCFD0,B8C890,B8CFF0,809037C0,actors +ovl_Bg_Ddan_Kd,CBCFD0,CBD8C0,B8CFF0,B8D5A0,809042B0,actors +ovl_Door_Warp1,CBD8C0,CC1BC0,B8D5A0,B8F6A0,80904BA0,actors +ovl_Obj_Syokudai,CC1BC0,CC2800,B8F6A0,B8FF20,80908EB0,actors +ovl_Item_B_Heart,CC2800,CC2C10,B8FF20,B90200,80909B00,actors +ovl_En_Dekunuts,CC2C10,CC4410,B90200,B90F60,80909F10,actors +ovl_Bg_Menkuri_Kaiten,CC4410,CC45A0,B90F60,B91090,8090B710,actors +ovl_Bg_Menkuri_Eye,CC45A0,CC4A30,B91090,B913C0,8090B8A0,actors +ovl_En_Vali,CC4A30,CC70F0,B913C0,B92A60,8090BD40,actors +ovl_Bg_Mizu_Movebg,CC70F0,CC8270,B92A60,B934F0,8090E400,actors +ovl_Bg_Mizu_Water,CC8270,CC8F40,B934F0,B93C70,8090F590,actors +ovl_Arms_Hook,CC8F40,CC9CB0,B93C70,B94520,80910260,actors +ovl_En_fHG,CC9CB0,CCC5E0,B94520,B95C80,80910FD0,actors +ovl_Bg_Mori_Hineri,CCC5E0,CCD330,B95C80,B964C0,80913900,actors +ovl_En_Bb,CCD330,CD1010,B964C0,B98950,80914650,actors +ovl_Bg_Toki_Hikari,CD1010,CD1DB0,B98950,B99070,80918330,actors +ovl_En_Yukabyun,CD1DB0,CD23C0,B99070,B994E0,809190D0,actors +ovl_Bg_Toki_Swd,CD23C0,CD3A10,B994E0,B99DB0,809196E0,actors +ovl_En_Fhg_Fire,CD3A10,CD60B0,B99DB0,B9B520,8091AD30,actors +ovl_Bg_Mjin,CD60B0,CD64A0,B9B520,B9B7F0,8091D3D0,actors +ovl_Bg_Hidan_Kousi,CD64A0,CD6A30,B9B7F0,B9BB80,8091D7C0,actors +ovl_Door_Toki,CD6A30,CD6B90,B9BB80,B9BC80,8091DD50,actors +ovl_Bg_Hidan_Hamstep,CD6B90,CD7A40,B9BC80,B9C5E0,8091DEB0,actors +ovl_En_Bird,CD7A40,CD7F00,B9C5E0,B9C920,8091ED60,actors +ovl_En_Wood02,CD7F00,CD90D0,B9C920,B9D4C0,8091F220,actors +ovl_En_Lightbox,CD90D0,CD9550,B9D4C0,B9D800,80920400,actors +ovl_En_Pu_box,CD9550,CD9890,B9D800,B9DA60,80920880,actors +ovl_En_Trap,CD9890,CDAB30,B9DA60,B9E4B0,80920BC0,actors +ovl_En_Arow_Trap,CDAB30,CDAC80,B9E4B0,B9E5D0,80921E60,actors +ovl_En_Vase,CDAC80,CDAD80,B9E5D0,B9E690,80921FB0,actors +ovl_En_Ta,CDAD80,CDE740,B9E690,BA0470,809220B0,actors +ovl_En_Tk,CDE740,CE0570,BA0470,BA1710,80925A70,actors +ovl_Bg_Mori_Bigst,CE0570,CE0EA0,BA1710,BA1C80,809278A0,actors +ovl_Bg_Mori_Elevator,CE0EA0,CE1990,BA1C80,BA22B0,809281D0,actors +ovl_Bg_Mori_Kaitenkabe,CE1990,CE2000,BA22B0,BA2720,80928CC0,actors +ovl_Bg_Mori_Rakkatenjo,CE2000,CE2980,BA2720,BA2CD0,80929330,actors +ovl_En_Vm,CE2980,CE4240,BA2CD0,BA3BB0,80929CB0,actors +ovl_Demo_Effect,CE4240,CE9DE0,BA3BB0,BA6D90,8092B570,actors +ovl_Demo_Kankyo,CE9DE0,CEDA80,BA6D90,BA8C80,80931110,actors +ovl_Bg_Hidan_Fwbig,CEDA80,CEE760,BA8C80,BA9520,80934E00,actors +ovl_En_Floormas,CEE760,CF1B40,BA9520,BAB060,80935AE0,actors +ovl_En_Heishi1,CF1B40,CF3050,BAB060,BABC80,80938EC0,actors +ovl_En_Rd,CF3050,CF5910,BABC80,BAD2A0,8093A3D0,actors +ovl_En_Po_Sisters,CF5910,CFA600,BAD2A0,BAFCF0,8093CC90,actors +ovl_Bg_Heavy_Block,CFA600,CFBEF0,BAFCF0,BB0C40,80941980,actors +ovl_Bg_Po_Event,CFBEF0,CFDD20,BB0C40,BB1F30,80943270,actors +ovl_Obj_Mure,CFDD20,CFED30,BB1F30,BB2890,809450B0,actors +ovl_En_Sw,CFED30,D024A0,BB2890,BB4A40,809460C0,actors +ovl_Boss_Fd,D024A0,D09800,BB4A40,BB8AF0,809498B0,actors +ovl_Object_Kankyo,D09800,D0CA80,BB8AF0,BBA8B0,80950C10,actors +ovl_En_Du,D0CA80,D0E510,BBA8B0,BBB820,80953E90,actors +ovl_En_Fd,D0E510,D111B0,BBB820,BBD3D0,80955920,actors +ovl_En_Horse_Link_Child,D111B0,D12FB0,BBD3D0,BBE350,809585C0,actors +ovl_Door_Ana,D12FB0,D13620,BBE350,BBE7D0,8095A3C0,actors +ovl_Bg_Spot02_Objects,D13620,D14980,BBE7D0,BBF3A0,8095AA30,actors +ovl_Bg_Haka,D14980,D15040,BBF3A0,BBF860,8095BD90,actors +ovl_Magic_Wind,D15040,D16D40,BBF860,BC0F20,8095C450,actors +ovl_Magic_Fire,D16D40,D19040,BC0F20,BC2B20,8095E150,actors +ovl_En_Ru1,D19040,D206E0,BC2B20,BC5F20,80960450,actors +ovl_Boss_Fd2,D206E0,D24410,BC5F20,BC83D0,80967AF0,actors +ovl_En_Fd_Fire,D24410,D25120,BC83D0,BC8CD0,8096B820,actors +ovl_En_Dh,D25120,D26C00,BC8CD0,BC9D70,8096C530,actors +ovl_En_Dha,D26C00,D27C00,BC9D70,BCA750,8096E010,actors +ovl_En_Rl,D27C00,D28AE0,BCA750,BCAEE0,8096F010,actors +ovl_En_Encount1,D28AE0,D29640,BCAEE0,BCB6B0,8096FEF0,actors +ovl_Demo_Du,D29640,D2CE20,BCB6B0,BCCE20,80970A50,actors +ovl_Demo_Im,D2CE20,D30D90,BCCE20,BCE8A0,80974230,actors +ovl_Demo_Tre_Lgt,D30D90,D314A0,BCE8A0,BCED80,809781A0,actors +ovl_En_Fw,D314A0,D32C60,BCED80,BCFD90,809788B0,actors +ovl_Bg_Vb_Sima,D32C60,D33380,BCFD90,BD02B0,8097A070,actors +ovl_En_Vb_Ball,D33380,D34530,BD02B0,BD0DF0,8097A790,actors +ovl_Bg_Haka_Megane,D34530,D34930,BD0DF0,BD10B0,8097B940,actors +ovl_Bg_Haka_MeganeBG,D34930,D34FF0,BD10B0,BD1510,8097BD40,actors +ovl_Bg_Haka_Ship,D34FF0,D35A40,BD1510,BD1BE0,8097C400,actors +ovl_Bg_Haka_Sgami,D35A40,D36660,BD1BE0,BD23D0,8097CE50,actors +ovl_En_Heishi2,D36660,D38860,BD23D0,BD3570,8097DA70,actors +ovl_En_Encount2,D38860,D39A90,BD3570,BD4140,8097FC70,actors +ovl_En_Fire_Rock,D39A90,D3ABA0,BD4140,BD4BB0,80980EA0,actors +ovl_En_Brob,D3ABA0,D3BC90,BD4BB0,BD5610,80981FB0,actors +ovl_Mir_Ray,D3BC90,D3D540,BD5610,BD66B0,809830A0,actors +ovl_Bg_Spot09_Obj,D3D540,D3DA60,BD66B0,BD69E0,80984950,actors +ovl_Bg_Spot18_Obj,D3DA60,D3E330,BD69E0,BD6F20,80984E70,actors +ovl_Boss_Va,D3E330,D4CBC0,BD6F20,BDEBF0,80985740,actors +ovl_Bg_Haka_Tubo,D4CBC0,D4D5E0,BDEBF0,BDF2D0,8099C9D0,actors +ovl_Bg_Haka_Trap,D4D5E0,D4EBB0,BDF2D0,BE0060,8099D3F0,actors +ovl_Bg_Haka_Huta,D4EBB0,D4F650,BE0060,BE0760,8099E9C0,actors +ovl_Bg_Haka_Zou,D4F650,D50840,BE0760,BE12E0,8099F460,actors +ovl_Bg_Spot17_Funen,D50840,D50A90,BE12E0,BE14A0,809A0650,actors +ovl_En_Syateki_Itm,D50A90,D51830,BE14A0,BE1D30,809A08A0,actors +ovl_En_Syateki_Man,D51830,D525F0,BE1D30,BE25B0,809A1640,actors +ovl_En_Tana,D525F0,D528A0,BE25B0,BE2790,809A2400,actors +ovl_En_Nb,D528A0,D56E70,BE2790,BE4570,809A26B0,actors +ovl_Boss_Mo,D56E70,D62940,BE4570,BEB300,809A6C80,actors +ovl_En_Sb,D62940,D63D80,BEB300,BEBE70,809B7260,actors +ovl_En_Bigokuta,D63D80,D66880,BEBE70,BED740,809B86A0,actors +ovl_En_Karebaba,D66880,D68170,BED740,BEE610,809BB1A0,actors +ovl_Bg_Bdan_Objects,D68170,D69440,BEE610,BEF150,809BCA90,actors +ovl_Demo_Sa,D69440,D6BF60,BEF150,BF03C0,809BDD60,actors +ovl_Demo_Go,D6BF60,D6CCB0,BF03C0,BF0B70,809C0880,actors +ovl_En_In,D6CCB0,D6FA50,BF0B70,BF2750,809C15D0,actors +ovl_En_Tr,D6FA50,D71350,BF2750,BF3690,809C4370,actors +ovl_Bg_Spot16_Bombstone,D71350,D728A0,BF3690,BF4490,809C5C70,actors +ovl_Bg_Hidan_Kowarerukabe,D728A0,D73780,BF4490,BF4CE0,809C71C0,actors +ovl_Bg_Bombwall,D73780,D74040,BF4CE0,BF52A0,809C80A0,actors +ovl_En_Ru2,D74040,D76DC0,BF52A0,BF65C0,809C8960,actors +ovl_Obj_Dekujr,D76DC0,D77400,BF65C0,BF6A10,809CB6E0,actors +ovl_Bg_Mizu_Uzu,D77400,D775D0,BF6A10,BF6B70,809CBD20,actors +ovl_Bg_Spot06_Objects,D775D0,D789D0,BF6B70,BF7840,809CBEF0,actors +ovl_Bg_Ice_Objects,D789D0,D79910,BF7840,BF80C0,809CD2F0,actors +ovl_Bg_Haka_Water,D79910,D7A110,BF80C0,BF85A0,809CE230,actors +ovl_En_Ma2,D7A110,D7B170,BF85A0,BF9020,809CEA30,actors +ovl_En_Bom_Chu,D7B170,D7C810,BF9020,BF9F10,809CFA90,actors +ovl_En_Horse_Game_Check,D7C810,D7D8E0,BF9F10,BFA960,809D1130,actors +ovl_Boss_Tw,D7D8E0,D90A30,BFA960,C04CE0,809D2200,actors +ovl_En_Rr,D90A30,D92F60,C04CE0,C06350,809E7DD0,actors +ovl_En_Ba,D92F60,D94E30,C06350,C07490,809EA300,actors +ovl_En_Bx,D94E30,D95930,C07490,C07C60,809EC1D0,actors +ovl_En_Anubice,D95930,D96BE0,C07C60,C08810,809ECCD0,actors +ovl_En_Anubice_Fire,D96BE0,D979A0,C08810,C09180,809EDF80,actors +ovl_Bg_Mori_Hashigo,D979A0,D98260,C09180,C09700,809EED40,actors +ovl_Bg_Mori_Hashira4,D98260,D987E0,C09700,C09AA0,809EF600,actors +ovl_Bg_Mori_Idomizu,D987E0,D98E20,C09AA0,C09EC0,809EFB90,actors +ovl_Bg_Spot16_Doughnut,D98E20,D993E0,C09EC0,C0A2C0,809F01D0,actors +ovl_Bg_Bdan_Switch,D993E0,D9A810,C0A2C0,C0ACC0,809F0790,actors +ovl_En_Ma1,D9A810,D9BAF0,C0ACC0,C0B870,809F1BC0,actors +ovl_Boss_Ganon,D9BAF0,DBDDA0,C0B870,C1E5A0,809F2EA0,actors +ovl_Boss_Sst,DBDDA0,DCA330,C1E5A0,C24DB0,80A18CD0,actors +ovl_En_Ny,DCA330,DCBC70,C24DB0,C25D40,80A252A0,actors +ovl_En_Fr,DCBC70,DCE700,C25D40,C276B0,80A26BE0,actors +ovl_Item_Shield,DCE700,DCF110,C276B0,C27D70,80A29670,actors +ovl_Bg_Ice_Shelter,DCF110,DD0350,C27D70,C28900,80A2A080,actors +ovl_En_Ice_Hono,DD0350,DD1540,C28900,C293E0,80A2B2C0,actors +ovl_Item_Ocarina,DD1540,DD1D10,C293E0,C298C0,80A2C4B0,actors +ovl_Magic_Dark,DD1D10,DD3560,C298C0,C2A9A0,80A2CC80,actors +ovl_Demo_6K,DD3560,DD62C0,C2A9A0,C2C5E0,80A2E4D0,actors +ovl_En_Anubice_Tag,DD62C0,DD6590,C2C5E0,C2C7F0,80A31230,actors +ovl_Bg_Haka_Gate,DD6590,DD7620,C2C7F0,C2D290,80A31500,actors +ovl_Bg_Spot15_Saku,DD7620,DD7960,C2D290,C2D4F0,80A325A0,actors +ovl_Bg_Jya_Goroiwa,DD7960,DD80E0,C2D4F0,C2DA20,80A328E0,actors +ovl_Bg_Jya_Zurerukabe,DD80E0,DD8790,C2DA20,C2DE80,80A33060,actors +ovl_Bg_Jya_Cobra,DD8790,DDA4D0,C2DE80,C2F0B0,80A33710,actors +ovl_Bg_Jya_Kanaami,DDA4D0,DDA880,C2F0B0,C2F330,80A35450,actors +ovl_Fishing,DDA880,DECD10,C2F330,C38420,80A35800,actors +ovl_Obj_Oshihiki,DECD10,DEE7C0,C38420,C393D0,80A4ED40,actors +ovl_Bg_Gate_Shutter,DEE7C0,DEEC50,C393D0,C396C0,80A507F0,actors +ovl_Eff_Dust,DEEC50,DF0020,C396C0,C3A0E0,80A50C80,actors +ovl_Bg_Spot01_Fusya,DF0020,DF02C0,C3A0E0,C3A2E0,80A52050,actors +ovl_Bg_Spot01_Idohashira,DF02C0,DF0EC0,C3A2E0,C3AA70,80A522F0,actors +ovl_Bg_Spot01_Idomizu,DF0EC0,DF11E0,C3AA70,C3ACD0,80A52EF0,actors +ovl_Bg_Po_Syokudai,DF11E0,DF1B50,C3ACD0,C3B320,80A53210,actors +ovl_Bg_Ganon_Otyuka,DF1B50,DF4190,C3B320,C3CCA0,80A53B80,actors +ovl_Bg_Spot15_Rrbox,DF4190,DF4F70,C3CCA0,C3D500,80A561C0,actors +ovl_Bg_Umajump,DF4F70,DF5100,C3D500,C3D630,80A56FA0,actors +ovl_En_Insect,DF5100,DF7620,C3D630,C3EB20,80A57130,actors +ovl_En_Butte,DF7620,DF8BF0,C3EB20,C3F870,80A59650,actors +ovl_En_Fish,DF8BF0,DFAD00,C3F870,C40A30,80A5AC20,actors +ovl_Bg_Spot08_Iceblock,DFAD00,DFBD40,C40A30,C413B0,80A5CD30,actors +ovl_Item_Etcetera,DFBD40,DFC610,C413B0,C41920,80A5DD70,actors +ovl_Arrow_Fire,DFC610,DFE4F0,C41920,C430F0,80A5E640,actors +ovl_Arrow_Ice,DFE4F0,E003F0,C430F0,C446A0,80A60520,actors +ovl_Arrow_Light,E003F0,E02300,C446A0,C45CD0,80A62420,actors +ovl_Obj_Kibako,E02300,E03000,C45CD0,C46440,80A64330,actors +ovl_Obj_Tsubo,E03000,E03FF0,C46440,C46DD0,80A65030,actors +ovl_En_Wonder_Item,E03FF0,E04C40,C46DD0,C47520,80A66020,actors +ovl_En_Ik,E04C40,E09290,C47520,C497E0,80A66D50,actors +ovl_Demo_Ik,E09290,E0A7A0,C497E0,C4A2D0,80A6B3B0,actors +ovl_En_Skj,E0A7A0,E0E0E0,C4A2D0,C4C0E0,80A6C8C0,actors +ovl_En_Skjneedle,E0E0E0,E0E3F0,C4C0E0,C4C320,80A70210,actors +ovl_En_G_Switch,E0E3F0,E0FC10,C4C320,C4D2D0,80A70520,actors +ovl_Demo_Ext,E0FC10,E10560,C4D2D0,C4D8D0,80A71D40,actors +ovl_Demo_Shd,E10560,E12970,C4D8D0,C4EE30,80A72690,actors +ovl_En_Dns,E12970,E13D00,C4EE30,C4F900,80A74AA0,actors +ovl_Elf_Msg,E13D00,E142F0,C4F900,C4FCB0,80A75E30,actors +ovl_En_Honotrap,E142F0,E15850,C4FCB0,C50A20,80A76420,actors +ovl_En_Tubo_Trap,E15850,E164F0,C50A20,C511C0,80A77980,actors +ovl_Obj_Ice_Poly,E164F0,E16EA0,C511C0,C51850,80A78620,actors +ovl_Bg_Spot03_Taki,E16EA0,E177C0,C51850,C51E00,80A78FD0,actors +ovl_Bg_Spot07_Taki,E177C0,E17DB0,C51E00,C521C0,80A798F0,actors +ovl_En_Fz,E17DB0,E19DC0,C521C0,C534E0,80A79EE0,actors +ovl_En_Po_Relay,E19DC0,E1B4D0,C534E0,C543A0,80A7BEF0,actors +ovl_Bg_Relay_Objects,E1B4D0,E1BC80,C543A0,C548B0,80A7D600,actors +ovl_En_Diving_Game,E1BC80,E1D630,C548B0,C55800,80A7DDB0,actors +ovl_En_Kusa,E1D630,E1EB10,C55800,C564E0,80A7F760,actors +ovl_Obj_Bean,E1EB10,E212A0,C564E0,C57A00,80A80C40,actors +ovl_Obj_Bombiwa,E212A0,E21810,C57A00,C57DF0,80A833D0,actors +ovl_Obj_Switch,E21810,E235F0,C57DF0,C58DF0,80A83940,actors +ovl_Obj_Elevator,E235F0,E239B0,C58DF0,C59070,80A85720,actors +ovl_Obj_Lift,E239B0,E243D0,C59070,C59750,80A85AE0,actors +ovl_Obj_Hsblock,E243D0,E249A0,C59750,C59B30,80A86500,actors +ovl_En_Okarina_Tag,E249A0,E25EA0,C59B30,C5A570,80A86AD0,actors +ovl_En_Yabusame_Mark,E25EA0,E26570,C5A570,C5A9D0,80A87FD0,actors +ovl_En_Goroiwa,E26570,E28930,C5A9D0,C5BF50,80A886A0,actors +ovl_En_Ex_Ruppy,E28930,E299F0,C5BF50,C5C9F0,80A8AA60,actors +ovl_En_Toryo,E299F0,E2A680,C5C9F0,C5D1A0,80A8BB20,actors +ovl_En_Daiku,E2A680,E2BDC0,C5D1A0,C5E0C0,80A8C7B0,actors +ovl_En_Nwc,E2BDC0,E2C7E0,C5E0C0,C5E7E0,80A8DEF0,actors +ovl_En_Blkobj,E2C7E0,E2CD40,C5E7E0,C5EBA0,80A8E910,actors +ovl_Item_Inbox,E2CD40,E2CEA0,C5EBA0,C5EC90,80A8EE70,actors +ovl_En_Ge1,E2CEA0,E2EED0,C5EC90,C5FDC0,80A8EFD0,actors +ovl_Obj_Blockstop,E2EED0,E2F070,C5FDC0,C5FF00,80A91000,actors +ovl_En_Sda,E2F070,E306A0,C5FF00,C60BA0,80A911A0,actors +ovl_En_Clear_Tag,E306A0,E39210,C60BA0,C64720,80A92890,actors +ovl_En_Niw_Lady,E39210,E3AB10,C64720,C65630,80A9DE30,actors +ovl_En_Gm,E3AB10,E3B840,C65630,C65EB0,80A9F730,actors +ovl_En_Ms,E3B840,E3BF30,C65EB0,C66370,80AA0460,actors +ovl_En_Hs,E3BF30,E3CAD0,C66370,C66A60,80AA0B50,actors +ovl_Bg_Ingate,E3CAD0,E3CE60,C66A60,C66CF0,80AA16F0,actors +ovl_En_Kanban,E3CE60,E3FFB0,C66CF0,C68660,80AA1A80,actors +ovl_En_Heishi3,E3FFB0,E40980,C68660,C68C60,80AA4BD0,actors +ovl_En_Syateki_Niw,E40980,E42A10,C68C60,C6A060,80AA55A0,actors +ovl_En_Attack_Niw,E42A10,E43C70,C6A060,C6ABA0,80AA7630,actors +ovl_Bg_Spot01_Idosoko,E43C70,E43E80,C6ABA0,C6AD20,80AA8890,actors +ovl_En_Sa,E43E80,E460F0,C6AD20,C6BFE0,80AA8AA0,actors +ovl_En_Wonder_Talk,E460F0,E46780,C6BFE0,C6C450,80AAAD10,actors +ovl_Bg_Gjyo_Bridge,E46780,E46C70,C6C450,C6C7E0,80AAB3A0,actors +ovl_En_Ds,E46C70,E47890,C6C7E0,C6CF10,80AAB890,actors +ovl_En_Mk,E47890,E48720,C6CF10,C6D770,80AAC4B0,actors +ovl_En_Bom_Bowl_Man,E48720,E49C60,C6D770,C6E4B0,80AAD340,actors +ovl_En_Bom_Bowl_Pit,E49C60,E4A5D0,C6E4B0,C6EAD0,80AAE880,actors +ovl_En_Owl,E4A5D0,E4E170,C6EAD0,C707E0,80AAF1F0,actors +ovl_En_Ishi,E4E170,E572C0,C707E0,C717A0,80AB2D90,actors +ovl_Obj_Hana,E572C0,E575D0,C717A0,C719C0,80ABBEE0,actors +ovl_Obj_Lightswitch,E575D0,E58A00,C719C0,C72570,80ABC1F0,actors +ovl_Obj_Mure2,E58A00,E59420,C72570,C72BB0,80ABD620,actors +ovl_En_Go,E59420,E5DA60,C72BB0,C75160,80ABE040,actors +ovl_En_Fu,E5DA60,E5E7A0,C75160,C75A10,80AC2680,actors +ovl_En_Changer,E5E7A0,E5F180,C75A10,C76020,80AC33D0,actors +ovl_Bg_Jya_Megami,E5F180,E60370,C76020,C76CA0,80AC3DB0,actors +ovl_Bg_Jya_Lift,E60370,E608C0,C76CA0,C77040,80AC4FA0,actors +ovl_Bg_Jya_Bigmirror,E608C0,E61110,C77040,C77610,80AC54F0,actors +ovl_Bg_Jya_Bombchuiwa,E61110,E61C50,C77610,C77D40,80AC5D40,actors +ovl_Bg_Jya_Amishutter,E61C50,E61FE0,C77D40,C77F40,80AC6880,actors +ovl_Bg_Jya_Bombiwa,E61FE0,E625A0,C77F40,C78350,80AC6C10,actors +ovl_Bg_Spot18_Basket,E625A0,E63590,C78350,C78D60,80AC71D0,actors +ovl_En_Ganon_Organ,E63590,E6A5D0,C78D60,C7BCA0,80AC81C0,actors +ovl_En_Siofuki,E6A5D0,E6B380,C7BCA0,C7C530,80ACF200,actors +ovl_En_Stream,E6B380,E6B910,C7C530,C7C920,80ACFFB0,actors +ovl_En_Mm,E6B910,E6CF70,C7C920,C7D770,80AD0540,actors +ovl_En_Ko,E6CF70,E710B0,C7D770,C7F6F0,80AD1BA0,actors +ovl_En_Kz,E710B0,E72650,C7F6F0,C80480,80AD5CE0,actors +ovl_En_Weather_Tag,E72650,E73540,C80480,C80AA0,80AD7280,actors +ovl_Bg_Sst_Floor,E73540,E73AA0,C80AA0,C80EB0,80AD8170,actors +ovl_En_Ani,E73AA0,E74810,C80EB0,C816C0,80AD86D0,actors +ovl_En_Ex_Item,E74810,E75990,C816C0,C82120,80AD9440,actors +ovl_Bg_Jya_Ironobj,E75990,E76740,C82120,C82910,80ADA5C0,actors +ovl_En_Js,E76740,E77110,C82910,C82F00,80ADB370,actors +ovl_En_Jsjutan,E77110,E7BEE0,C82F00,C847E0,80ADBD40,actors +ovl_En_Cs,E7BEE0,E7D110,C847E0,C85380,80AE1670,actors +ovl_En_Md,E7D110,E7F780,C85380,C866E0,80AE28A0,actors +ovl_En_Hy,E7F780,E830C0,C866E0,C88530,80AE4F10,actors +ovl_En_Ganon_Mant,E830C0,E872F0,C88530,C89E00,80AE8850,actors +ovl_En_Okarina_Effect,E872F0,E876B0,C89E00,C8A080,80AECA80,actors +ovl_En_Mag,E876B0,E8A6F0,C8A080,C8B630,80AECE40,actors +ovl_Door_Gerudo,E8A6F0,E8ACE0,C8B630,C8BA60,80AF1E80,actors +ovl_Elf_Msg2,E8ACE0,E8B150,C8BA60,C8BCE0,80AF2470,actors +ovl_Demo_Gt,E8B150,E90760,C8BCE0,C8E1A0,80AF28E0,actors +ovl_En_Po_Field,E90760,E94160,C8E1A0,C903D0,80AF7EF0,actors +ovl_Efc_Erupc,E94160,E94C50,C903D0,C90B40,80AFB980,actors +ovl_Bg_Zg,E94C50,E950A0,C90B40,C90E20,80AFC470,actors +ovl_En_Heishi4,E950A0,E95FA0,C90E20,C91710,80AFC8C0,actors +ovl_En_Zl3,E95FA0,E9DDF0,C91710,C94CC0,80AFD7C0,actors +ovl_Boss_Ganon2,E9DDF0,EAF140,C94CC0,C9DC80,80B05610,actors +ovl_En_Kakasi,EAF140,EAFE80,C9DC80,C9E500,80B18480,actors +ovl_En_Takara_Man,EAFE80,EB0740,C9E500,C9EB20,80B191C0,actors +ovl_Obj_Makeoshihiki,EB0740,EB0BD0,C9EB20,C9EE50,80B19A80,actors +ovl_Oceff_Spot,EB0BD0,EB1B00,C9EE50,C9F9C0,80B19F10,actors +ovl_End_Title,EB1B00,EB7540,C9F9C0,CA1670,80B1AE40,actors +ovl_En_Torch,EB7540,EB7630,CA1670,CA1740,80B20880,actors +ovl_Demo_Ec,EB7630,EBAE90,CA1740,CA2A30,80B20970,actors +ovl_Shot_Sun,EBAE90,EBB550,CA2A30,CA2EF0,80B241D0,actors +ovl_En_Dy_Extra,EBB550,EBBAF0,CA2EF0,CA3300,80B24890,actors +ovl_En_Wonder_Talk2,EBBAF0,EBC190,CA3300,CA37A0,80B24E30,actors +ovl_En_Ge2,EBC190,EBDB30,CA37A0,CA4690,80B254D0,actors +ovl_Obj_Roomtimer,EBDB30,EBDD80,CA4690,CA4850,80B26E70,actors +ovl_En_Ssh,EBDD80,EC0370,CA4850,CA5EA0,80B270C0,actors +ovl_En_Sth,EC0370,EC4430,CA5EA0,CA8540,80B296B0,actors +ovl_Oceff_Wipe,EC4430,EC51B0,CA8540,CA8FA0,80B2D770,actors +ovl_Effect_Ss_Dust,EC51B0,EC59F0,CA8FA0,CA9530,80B2E4F0,effects +ovl_Effect_Ss_KiraKira,EC59F0,EC6060,CA9530,CA99D0,80B2ED30,effects +ovl_Effect_Ss_Bomb,EC6060,EC6490,CA99D0,CA9D00,80B2F3A0,effects +ovl_Effect_Ss_Bomb2,EC6490,EC6D90,CA9D00,CAA290,80B2F7D0,effects +ovl_Effect_Ss_Blast,EC6D90,EC7120,CAA290,CAA560,80B300D0,effects +ovl_Effect_Ss_G_Spk,EC7120,EC76D0,CAA560,CAA990,80B30460,effects +ovl_Effect_Ss_D_Fire,EC76D0,EC7BC0,CAA990,CAAD60,80B30A10,effects +ovl_Effect_Ss_Bubble,EC7BC0,EC8040,CAAD60,CAB0B0,80B30F00,effects +ovl_Effect_Ss_G_Ripple,EC8040,EC85A0,CAB0B0,CAB4B0,80B31380,effects +ovl_Effect_Ss_G_Splash,EC85A0,EC8A50,CAB4B0,CAB7C0,80B318E0,effects +ovl_Effect_Ss_G_Magma,EC8A50,EC8CB0,CAB7C0,CAB9A0,80B31D90,effects +ovl_Effect_Ss_G_Fire,EC8CB0,EC8F40,CAB9A0,CABB90,80B31FF0,effects +ovl_Effect_Ss_Lightning,EC8F40,EC9610,CABB90,CAC0C0,80B32280,effects +ovl_Effect_Ss_Dt_Bubble,EC9610,EC9BA0,CAC0C0,CAC4C0,80B32950,effects +ovl_Effect_Ss_Hahen,EC9BA0,ECA1E0,CAC4C0,CAC8E0,80B32EE0,effects +ovl_Effect_Ss_Stick,ECA1E0,ECA580,CAC8E0,CACB90,80B33520,effects +ovl_Effect_Ss_Sibuki,ECA580,ECAC50,CACB90,CAD080,80B338C0,effects +ovl_Effect_Ss_Sibuki2,ECAC50,ECAF80,CAD080,CAD300,80B33F90,effects +ovl_Effect_Ss_G_Magma2,ECAF80,ECB490,CAD300,CAD6E0,80B342C0,effects +ovl_Effect_Ss_Stone1,ECB490,ECB810,CAD6E0,CAD990,80B347D0,effects +ovl_Effect_Ss_HitMark,ECB810,ECBD60,CAD990,CADD60,80B34B50,effects +ovl_Effect_Ss_Fhg_Flash,ECBD60,ECCCE0,CADD60,CAE5E0,80B350A0,effects +ovl_Effect_Ss_K_Fire,ECCCE0,ECD120,CAE5E0,CAE930,80B36020,effects +ovl_Effect_Ss_Solder_Srch_Ball,ECD120,ECD2D0,CAE930,CAEA90,80B36460,effects +ovl_Effect_Ss_Kakera,ECD2D0,ECE360,CAEA90,CAF4C0,80B36610,effects +ovl_Effect_Ss_Ice_Piece,ECE360,ECE7A0,CAF4C0,CAF810,80B376A0,effects +ovl_Effect_Ss_En_Ice,ECE7A0,ECF060,CAF810,CAFE60,80B37AE0,effects +ovl_Effect_Ss_Fire_Tail,ECF060,ECF760,CAFE60,CB0390,80B383A0,effects +ovl_Effect_Ss_En_Fire,ECF760,ECFEB0,CB0390,CB08F0,80B38AA0,effects +ovl_Effect_Ss_Extra,ECFEB0,ED0270,CB08F0,CB0BE0,80B391F0,effects +ovl_Effect_Ss_Fcircle,ED0270,ED0720,CB0BE0,CB0F80,80B395B0,effects +ovl_Effect_Ss_Dead_Db,ED0720,ED0C00,CB0F80,CB1360,80B39A60,effects +ovl_Effect_Ss_Dead_Dd,ED0C00,ED1190,CB1360,CB1780,80B39F40,effects +ovl_Effect_Ss_Dead_Ds,ED1190,ED1610,CB1780,CB1AF0,80B3A4D0,effects +ovl_Effect_Ss_Dead_Sound,ED1610,ED1750,CB1AF0,CB1C00,80B3A950,effects +ovl_Oceff_Storm,ED1750,ED3300,CB1C00,CB33A0,80B3AA90,actors +ovl_En_Weiyer,ED3300,ED4D00,CB33A0,CB4250,80B3C640,actors +ovl_Bg_Spot05_Soko,ED4D00,ED5020,CB4250,CB4480,80B3E040,actors +ovl_Bg_Jya_1flift,ED5020,ED56B0,CB4480,CB48B0,80B3E360,actors +ovl_Bg_Jya_Haheniron,ED56B0,ED5EA0,CB48B0,CB4E10,80B3E9F0,actors +ovl_Bg_Spot12_Gate,ED5EA0,ED62B0,CB4E10,CB50C0,80B3F1E0,actors +ovl_Bg_Spot12_Saku,ED62B0,ED6770,CB50C0,CB53F0,80B3F5F0,actors +ovl_En_Hintnuts,ED6770,ED81A0,CB53F0,CB62E0,80B3FAB0,actors +ovl_En_Nutsball,ED81A0,ED87C0,CB62E0,CB6760,80B414E0,actors +ovl_Bg_Spot00_Break,ED87C0,ED8960,CB6760,CB68A0,80B41B00,actors +ovl_En_Shopnuts,ED8960,ED9870,CB68A0,CB7170,80B41CA0,actors +ovl_En_It,ED9870,ED9A00,CB7170,CB7280,80B42BB0,actors +ovl_En_GeldB,ED9A00,EDEDB0,CB7280,CB9DA0,80B42D40,actors +ovl_Oceff_Wipe2,EDEDB0,EE0520,CB9DA0,CBA9E0,80B480F0,actors +ovl_Oceff_Wipe3,EE0520,EE1C70,CBA9E0,CBBA20,80B49860,actors +ovl_En_Niw_Girl,EE1C70,EE2740,CBBA20,CBC1D0,80B4AFB0,actors +ovl_En_Dog,EE2740,EE38F0,CBC1D0,CBCC50,80B4BA80,actors +ovl_En_Si,EE38F0,EE3DF0,CBCC50,CBCFC0,80B4CC30,actors +ovl_Bg_Spot01_Objects2,EE3DF0,EE42B0,CBCFC0,CBD330,80B4D130,actors +ovl_Obj_Comb,EE42B0,EE4B10,CBD330,CBD940,80B4D5F0,actors +ovl_Bg_Spot11_Bakudankabe,EE4B10,EE5150,CBD940,CBDDB0,80B4DE50,actors +ovl_Obj_Kibako2,EE5150,EE5810,CBDDB0,CBE260,80B4E490,actors +ovl_En_Dnt_Demo,EE5810,EE6530,CBE260,CBEB10,80B4EB50,actors +ovl_En_Dnt_Jiji,EE6530,EE7A50,CBEB10,CBF5F0,80B4F870,actors +ovl_En_Dnt_Nomal,EE7A50,EEA850,CBF5F0,CC0D90,80B50D90,actors +ovl_En_Guest,EEA850,EEB1F0,CC0D90,CC1440,80B53B90,actors +ovl_Bg_Bom_Guard,EEB1F0,EEB410,CC1440,CC15F0,80B54530,actors +ovl_En_Hs2,EEB410,EEB9F0,CC15F0,CC19F0,80B54750,actors +ovl_Demo_Kekkai,EEB9F0,EECCE0,CC19F0,CC2630,80B54D30,actors +ovl_Bg_Spot08_Bakudankabe,EECCE0,EED380,CC2630,CC2AE0,80B56020,actors +ovl_Bg_Spot17_Bakudankabe,EED380,EEDA70,CC2AE0,CC2FC0,80B566C0,actors +ovl_Obj_Mure3,EEDA70,EEE240,CC2FC0,CC34F0,80B56DB0,actors +ovl_En_Tg,EEE240,EEE920,CC34F0,CC39A0,80B57580,actors +ovl_En_Mu,EEE920,EEF240,CC39A0,CC4000,80B57C60,actors +ovl_En_Go2,EEF240,EF5280,CC4000,CC7460,80B58580,actors +ovl_En_Wf,EF5280,EF9590,CC7460,CC97F0,80B5E5C0,actors +ovl_En_Skb,EF9590,EFAE80,CC97F0,CCA720,80B628D0,actors +ovl_Demo_Gj,EFAE80,EFEB30,CCA720,CCBEA0,80B641C0,actors +ovl_Demo_Geff,EFEB30,EFF350,CCBEA0,CCC380,80B67E70,actors +ovl_Bg_Gnd_Firemeiro,EFF350,EFF8A0,CCC380,CCC720,80B68690,actors +ovl_Bg_Gnd_Darkmeiro,EFF8A0,F00060,CCC720,CCCC00,80B68BE0,actors +ovl_Bg_Gnd_Soulmeiro,F00060,F008C0,CCCC00,CCD1D0,80B693A0,actors +ovl_Bg_Gnd_Nisekabe,F008C0,F00A30,CCD1D0,CCD2F0,80B69C00,actors +ovl_Bg_Gnd_Iceblock,F00A30,F01B20,CCD2F0,CCDC00,80B69D70,actors +ovl_Bg_Ydan_Sp,F01B20,F03240,CCDC00,CCEA50,80B6AE70,actors +ovl_En_Gb,F03240,F04970,CCEA50,CCF8E0,80B6C590,actors +ovl_En_Gs,F04970,F067E0,CCF8E0,CD0BD0,80B6DCC0,actors +ovl_Bg_Mizu_Bwall,F067E0,F07CB0,CD0BD0,CD1780,80B6FB30,actors +ovl_Bg_Mizu_Shutter,F07CB0,F084B0,CD1780,CD1CB0,80B71000,actors +ovl_En_Daiku_Kakariko,F084B0,F09870,CD1CB0,CD2940,80B71800,actors +ovl_Bg_Bowl_Wall,F09870,F0A1F0,CD2940,CD3000,80B72BC0,actors +ovl_En_Wall_Tubo,F0A1F0,F0A6E0,CD3000,CD3370,80B73540,actors +ovl_En_Po_Desert,F0A6E0,F0B4A0,CD3370,CD3CD0,80B73A30,actors +ovl_En_Crow,F0B4A0,F0CB40,CD3CD0,CD4B00,80B747F0,actors +ovl_Door_Killer,F0CB40,F0E0B0,CD4B00,CD58C0,80B75E90,actors +ovl_Bg_Spot11_Oasis,F0E0B0,F0E7E0,CD58C0,CD5DE0,80B77400,actors +ovl_Bg_Spot18_Futa,F0E7E0,F0E980,CD5DE0,CD5F20,80B77B30,actors +ovl_Bg_Spot18_Shutter,F0E980,F0EED0,CD5F20,CD62A0,80B77CD0,actors +ovl_En_Ma3,F0EED0,F0FE80,CD62A0,CD6CA0,80B78220,actors +ovl_En_Cow,F0FE80,F112E0,CD6CA0,CD77D0,80B791D0,actors +ovl_Bg_Ice_Turara,F112E0,F11B10,CD77D0,CD7D70,80B7A630,actors +ovl_Bg_Ice_Shutter,F11B10,F11F80,CD7D70,CD8040,80B7AE60,actors +ovl_En_Kakasi2,F11F80,F126A0,CD8040,CD84E0,80B7B2D0,actors +ovl_En_Kakasi3,F126A0,F13780,CD84E0,CD8F40,80B7B9F0,actors +ovl_Oceff_Wipe4,F13780,F14760,CD8F40,CD9970,80B7CAD0,actors +ovl_En_Eg,F14760,F14910,CD9970,CD9AB0,80B7DAB0,actors +ovl_Bg_Menkuri_Nisekabe,F14910,F14A60,CD9AB0,CD9BB0,80B7DC60,actors +ovl_En_Zo,F14A60,F17020,CD9BB0,CDB1A0,80B7DDB0,actors +ovl_Effect_Ss_Ice_Smoke,F17020,F17500,CDB1A0,CDB530,80B80370,effects +ovl_Obj_Makekinsuta,F17500,F17650,CDB530,CDB650,80B80850,actors +ovl_En_Ge3,F17650,F18290,CDB650,CDBDE0,80B809A0,actors +ovl_Obj_Timeblock,F18290,F18EE0,CDBDE0,CDC570,80B815E0,actors +ovl_Obj_Hamishi,F18EE0,F19730,CDC570,CDCB40,80B82230,actors +ovl_En_Zl4,F19730,F1E160,CDCB40,CDEB30,80B82A80,actors +ovl_En_Mm2,F1E160,F1EF20,CDEB30,CDF3F0,80B874B0,actors +ovl_Bg_Jya_Block,F1EF20,F1F190,CDF3F0,CDF5F0,80B88270,actors +ovl_Obj_Warp2block,F1F190,F1FCC0,CDF5F0,CDFD50,80B884E0,actors diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv new file mode 100644 index 0000000000..dfbbf225bc --- /dev/null +++ b/tools/disasm/ique-cn/files_boot.csv @@ -0,0 +1,141 @@ +offset,vram,.text +0,80000450,src/boot/boot_main +140,80000590,src/boot/idle +390,800007E0,src/boot/viconfig +4D0,80000920,src/boot/z_std_dma +B50,80000FA0,src/boot/inflate +2830,80002C80,src/boot/z_locale +2870,80002CC0,src/boot/is_debug_ique +2890,80002CE0,src/boot/driverominit +2A70,80002EC0,src/boot/mio0 +2B20,80002F70,src/libu64/stackcheck +2D70,800031C0,src/libultra/os/invaldcache +2E20,80003270,src/libultra/os/invalicache +2EA0,800032F0,src/libultra/libc/bcmp +2FB0,80003400,src/libultra/libc/bzero +3050,800034A0,src/libultra/os/createmesgqueue +30C0,80003510,src/libultra/os/recvmesg +3230,80003680,src/libultra/os/sendmesg +33A0,800037F0,src/libultra/os/getfpccsr +33B0,80003800,src/libultra/os/getsr +33C0,80003810,src/libultra/os/setfpccsr +33D0,80003820,src/libultra/os/setsr +33E0,80003830,src/libultra/os/createthread +3550,800039A0,src/libultra/os/setthreadpri +3660,80003AB0,src/libultra/os/startthread +37F0,80003C40,src/libultra/os/stopthread +38E0,80003D30,src/libultra/os/thread +3940,80003D90,src/libultra/os/gettime +39F0,80003E40,src/libultra/os/timerintr +3F10,80004360,src/libultra/io/vigetnextframebuf +3F50,800043A0,src/libultra/io/vimgr +4250,800046A0,src/libultra/io/visetmode +42D0,80004720,src/libultra/io/visetspecial +4450,800048A0,src/libultra/io/visetxscale +4510,80004960,src/libultra/io/visetyscale +4560,800049B0,src/libultra/io/viswapbuf +45B0,80004A00,src/libultra/io/viswapcontext +48C0,80004D10,src/libultra/io/viblack +4920,80004D70,src/libultra/io/viextendvstart +4930,80004D80,src/libultra/os/exceptasm +53B0,80005800,src/libultra/os/interrupt +5440,80005890,src/libultra/os/setintmask +54F0,80005940,src/libultra/os/sethwintrroutine +5580,800059D0,src/libultra/os/gethwintrroutine +55F0,80005A40,src/libultra/io/pimgr +5770,80005BC0,src/libultra/io/epirawdma +5B30,80005F80,src/libultra/io/epiread +5B90,80005FE0,src/libultra/io/epidma +5C30,80006080,src/libultra/io/cartrominit +5D90,800061E0,src/libultra/io/devmgr +6230,80006680,src/libultra/io/piacs +62F0,80006740,src/libultra/os/parameters +6360,800067B0,src/libultra/os/getmemsize +6390,800067E0,src/libultra/os/initialize +6920,80006D70,src/libultra/os/writebackdcache +69A0,80006DF0,src/libultra/os/virtualtophysical +6A70,80006EC0,src/libultra/libc/bcopy +6D90,800071E0,src/libultra/os/jammesg +6F10,80007360,src/libultra/os/seteventmesg +6FE0,80007430,src/libultra/os/getcause +6FF0,80007440,src/libultra/os/setwatchlo +7000,80007450,src/libultra/reg/_getcount +7100,80007550,src/libultra/reg/_setcompare +71B0,80007600,src/libultra/io/sirawread +7200,80007650,src/libultra/io/sirawwrite +7250,800076A0,src/libultra/os/destroythread +7380,800077D0,src/libultra/os/getthreadpri +73D0,80007820,src/libultra/os/yieldthread +7430,80007880,src/libultra/os/probetlb +74F0,80007940,src/libultra/os/maptlbrdb +7550,800079A0,src/libultra/os/unmaptlball +75A0,800079F0,src/libultra/io/vi +76A0,80007AF0,src/libultra/io/vigetcurrcontext +76B0,80007B00,src/libultra/os/setglobalintmask +7710,80007B60,src/libultra/os/resetglobalintmask +7780,80007BD0,src/libultra/io/pirawdma +7860,80007CB0,src/libultra/io/pigetcmdq +7890,80007CE0,src/libultra/io/epirawread +7A10,80007E60,src/libultra/io/epirawwrite +7B90,80007FE0,src/libultra/io/si +7BC0,80008010,src/libgcc/__divdi3 +81A0,800085F0,src/libgcc/__moddi3 +8730,80008B80,src/libgcc/__udivdi3 +8CA0,800090F0,src/libgcc/__umoddi3 +91B0,80009600,src/libgcc/__cmpdi2 +9200,80009650,src/libgcc/__floatdidf +9250,800096A0,src/libgcc/__floatdisf +9310,80009760,src/libgcc/__fixunsdfdi +9510,80009960,src/libgcc/__fixdfdi +9580,800099D0,src/libgcc/__fixunssfdi +9780,80009BD0,src/libgcc/__fixsfdi +97E0,80009C30,data/rsp_boot + +offset,vram,.data +98D0,80009D20,src/boot/idle +98F0,80009D40,src/boot/viconfig +9910,80009D60,src/boot/carthandle +9920,80009D70,src/boot/z_std_dma +9930,80009D80,src/boot/inflate +9AB0,80009F00,src/boot/z_locale +9AC0,80009F10,src/boot/driverominit +9AD0,80009F20,src/libu64/stackcheck +9AE0,80009F30,src/libultra/os/thread +9B00,80009F50,src/libultra/os/timerintr +9B10,80009F60,src/libultra/io/vimgr +9B30,80009F80,src/libultra/io/vimodentsclan1 +9B80,80009FD0,src/libultra/io/vimodepallan1 +9BD0,8000A020,src/libultra/io/vimodempallan1 +9C20,8000A070,src/libultra/os/exceptasm +9C50,8000A0A0,src/libultra/io/pimgr +9C80,8000A0D0,src/libultra/io/cartrominit +9C90,8000A0E0,src/libultra/io/piacs +9CA0,8000A0F0,src/libultra/os/initialize +9CC0,8000A110,src/libultra/os/seteventmesg +9CD0,8000A120,src/libultra/io/vi + +offset,vram,.rodata +9D40,8000A190,src/boot/boot_main +9D50,8000A1A0,src/boot/idle +9FA0,8000A3F0,src/boot/z_std_dma +A210,8000A660,src/libu64/stackcheck +A220,8000A670,src/libultra/os/exceptasm +A270,8000A6C0,src/libultra/os/setintmask +A2F0,8000A740,src/libultra/io/devmgr +A310,8000A760,src/libgcc/__divdi3 +A410,8000A860,src/libgcc/__moddi3 +A510,8000A960,src/libgcc/__udivdi3 +A610,8000AA60,src/libgcc/__umoddi3 +A710,8000AA70,src/boot/build + +offset,vram,.bss +A750,8000ABA0,data/boot_common_8000ABA0 +A7A0,8000ABF0,src/boot/boot_main +B190,8000B5E0,src/boot/idle +BD90,8000C1E0,src/boot/z_std_dma +C500,8000C950,src/boot/inflate +10310,80010760,src/boot/driverominit +10390,800107E0,src/libultra/io/vimgr +115B0,80011A00,src/libultra/io/pimgr +12940,80012D90,data/boot_common_80012D90 +12BF0,80013040,.end diff --git a/tools/disasm/ique-cn/files_code.csv b/tools/disasm/ique-cn/files_code.csv new file mode 100644 index 0000000000..031d059a0b --- /dev/null +++ b/tools/disasm/ique-cn/files_code.csv @@ -0,0 +1,528 @@ +offset,vram,.text +0,80018FA0,src/code/z_en_a_keep +AA0,80019A40,src/code/z_en_item00 +2EA0,8001BE40,src/code/z_eff_blure +62D0,8001F270,src/code/z_eff_shield_particle +7930,800208D0,src/code/z_eff_spark +8FE0,80021F80,src/code/z_eff_ss_dead +9790,80022730,src/code/z_effect +9F10,80022EB0,src/code/z_effect_soft_sprite +A9B0,80023950,src/code/z_effect_soft_sprite_old_init +D4D0,80026470,src/code/flg_set +D8F0,80026890,src/code/z_DLF +DB40,80026AE0,src/code/z_actor +18ED0,80031E70,src/code/z_actor_dlftbls +19020,80031FC0,src/code/z_bgcheck +22C00,8003BBA0,src/code/z_bg_collect +22F20,8003BEC0,src/code/z_bg_item +232B0,8003C250,src/code/z_camera +378E0,80050880,src/code/z_collision_btltbls +37940,800508E0,src/code/z_collision_check +3F5C0,80058560,src/code/z_common_data +3F670,80058610,src/code/z_debug +3F980,80058920,src/code/z_debug_display +3FE40,80058DE0,src/code/z_demo +44B20,8005DAC0,src/code/z_memory_utils +44BB0,8005DB50,src/code/z_draw +46AB0,8005FA50,src/code/z_sfx_source +46C70,8005FC10,src/code/z_elf_message +47350,800602F0,src/code/z_face_reaction +473A0,80060340,src/code/z_env_flags +47520,800604C0,src/code/z_fcurve_data +47760,80060700,src/code/z_fcurve_data_skelanime +47F70,80060F10,src/code/z_horse +48C50,80061BF0,src/code/z_jpeg +49410,800623B0,src/code/z_kaleido_setup +497E0,80062780,src/code/z_kanfont +499E0,80062980,src/code/z_kankyo +511F0,8006A190,src/code/z_lib +52390,8006B330,src/code/z_lifemeter +53730,8006C6D0,src/code/z_lights +547D0,8006D770,src/code/z_malloc +549B0,8006D950,src/code/z_map_mark +54FB0,8006DF50,src/code/z_prenmi_buff +55070,8006E010,src/code/z_nulltask +550F0,8006E090,src/code/z_olib +557E0,8006E780,src/code/z_onepointdemo +59780,80072720,src/code/z_map_exp +5B320,800742C0,src/code/z_parameter +66080,8007F020,src/code/z_path +66250,8007F1F0,src/code/z_frame_advance +66300,8007F2A0,src/code/z_player_lib +69D70,80082D10,src/code/z_prenmi +69F10,80082EB0,src/code/z_quake +6AD80,80083D20,src/code/z_rcp +6C640,800855E0,src/code/z_room +6DE30,80086DD0,src/code/z_sample +6E230,800871D0,src/code/z_inventory +6E3F0,80087390,src/code/z_scene +6F8A0,80088840,src/code/z_scene_table +760A0,8008F040,src/code/z_skelanime +7AA90,80093A30,src/code/z_skin +7B630,800945D0,src/code/z_skin_awb +7BF40,80094EE0,src/code/z_skin_matrix +7D2E0,80096280,src/code/z_sram +7E690,80097630,src/code/z_ss_sram +7E860,80097800,src/code/z_rumble +7EAE0,80097A80,src/code/z_view +801E0,80099180,src/code/z_vimode +80D50,80099CF0,src/code/z_viscvg +80EF0,80099E90,src/code/z_vismono +81710,8009A6B0,src/code/z_viszbuf +819A0,8009A940,src/code/z_vr_box +84270,8009D210,src/code/z_vr_box_draw +84950,8009D8F0,src/code/z_player_call +84AC0,8009DA60,src/code/z_fbdemo +854E0,8009E480,src/code/z_fbdemo_triforce +85AA0,8009EA40,src/code/z_fbdemo_wipe1 +85F10,8009EEB0,src/code/z_fbdemo_circle +865D0,8009F570,src/code/z_fbdemo_fade +86930,8009F8D0,src/code/shrink_window +86AA0,8009FA40,src/code/z_cutscene_spline +86F70,8009FF10,src/code/z_kaleido_manager +871A0,800A0140,src/code/z_kaleido_scope_call +87480,800A0420,src/code/z_play +8AEA0,800A3E40,src/code/PreRender +8CF90,800A5F30,src/code/TwoHeadGfxArena +8D1A0,800A6140,src/code/TwoHeadArena +8D360,800A6300,src/code/audio_stop_all_sfx +8D3B0,800A6350,src/code/audio_thread_manager +8D7C0,800A6760,src/code/title_setup +8D830,800A67D0,src/code/game +8DFB0,800A6F50,src/code/gamealloc +8E0F0,800A7090,src/code/graph +8EA90,800A7A30,src/code/gfxalloc +8EAF0,800A7A90,src/code/listalloc +8EC40,800A7BE0,src/code/main +8EFA0,800A7F40,src/code/padmgr +8FAA0,800A8A40,src/code/sched +90720,800A96C0,src/code/speed_meter +91160,800AA100,src/code/sys_cfb +91280,800AA220,src/code/sys_math +91520,800AA4C0,src/code/sys_math3d +972F0,800B0290,src/code/sys_math_atan +97520,800B04C0,src/code/sys_matrix +99920,800B28C0,src/code/sys_ucode +99970,800B2910,src/code/sys_rumble +99CD0,800B2C70,src/code/sys_freeze +99D00,800B2CA0,src/code/irqmgr +9A320,800B32C0,src/code/fault_gc +9CB70,800B5B10,src/code/fault_gc_drawer +9D5F0,800B6590,src/code/kanread +9E0E0,800B7080,src/audio/lib/synthesis +A1240,800BA1E0,src/audio/lib/heap +A4610,800BD5B0,src/audio/lib/load +A8400,800C13A0,src/audio/lib/thread +A9C60,800C2C00,src/audio/lib/dcache +A9CE0,800C2C80,src/audio/lib/aisetnextbuf +A9D60,800C2D00,src/audio/lib/playback +ABCE0,800C4C80,src/audio/lib/effects +AC760,800C5700,src/audio/lib/seqplayer +AFD80,800C8D20,src/audio/general +B5F10,800CEEB0,src/audio/sfx +B7D70,800D0D10,src/audio/sequence +B9990,800D2930,src/libu64/system_heap +B9CD0,800D2C70,src/libu64/debug +B9D30,800D2CD0,src/libu64/gfxprint +BAAA0,800D3A40,src/libu64/relocation_gc +BACE0,800D3C80,src/libu64/loadfragment2_gc +BAD40,800D3CE0,src/libu64/load_gc +BAE10,800D3DB0,src/libu64/padsetup +BAF50,800D3EF0,src/libu64/pad +BB140,800D40E0,src/libu64/rcp_utils +BB1A0,800D4140,src/libc64/__osMalloc_gc +BBF50,800D4EF0,src/libc64/aprintf +BBFB0,800D4F50,src/libc64/malloc +BC180,800D5120,src/libc64/math64 +BC690,800D5630,src/libc64/fp +BC7F0,800D5790,src/libc64/qrand +BC9B0,800D5950,src/libc64/sleep +BCB50,800D5AF0,src/libc64/sprintf +BCC20,800D5BC0,src/code/jpegutils +BD130,800D60D0,src/code/jpegdecoder +BD720,800D66C0,src/libultra/io/aigetlen +BD730,800D66D0,src/libultra/io/aisetfreq +BD830,800D67D0,src/libultra/audio/sl +BD8E0,800D6880,src/libultra/audio/synthesizer +BDF50,800D6EF0,src/libultra/audio/syndelete +BDF60,800D6F00,src/libultra/audio/synallocfx +BE000,800D6FA0,src/libultra/os/writebackdcacheall +BE030,800D6FD0,src/libultra/io/contquery +BE0E0,800D7080,src/libultra/io/contreaddata +BE360,800D7300,src/libultra/io/controller +BE730,800D76D0,src/libultra/io/contsetch +BE790,800D7730,src/libultra/gu/sqrtf +BE7A0,800D7740,src/libultra/gu/cosf +BE8D0,800D7870,src/libultra/gu/coss +BE8F0,800D7890,src/libultra/gu/lookat +BEC20,800D7BC0,src/libultra/gu/lookathil +BF4F0,800D8490,src/libultra/gu/ortho +BF660,800D8600,src/libultra/gu/perspective +BF860,800D8800,src/libultra/gu/position +BFA40,800D89E0,src/libultra/gu/sinf +BFBC0,800D8B60,src/libultra/gu/sins +BFC10,800D8BB0,src/libultra/gu/us2dex +BFD30,800D8CD0,src/libultra/libc/ll +C02B0,800D9250,src/libultra/libc/llcvt +C05C0,800D9560,src/libultra/libc/string +C0640,800D95E0,src/libultra/libc/xprintf +C1020,800D9FC0,src/libultra/io/dpgetstat +C1030,800D9FD0,src/libultra/io/dpsetstat +C1040,800D9FE0,src/libultra/io/spgetstat +C1050,800D9FF0,src/libultra/io/spsetstat +C1060,800DA000,src/libultra/io/sptask +C1270,800DA210,src/libultra/io/sptaskyield +C1290,800DA230,src/libultra/io/sptaskyielded +C12E0,800DA280,src/libultra/io/sirawdma +C13C0,800DA360,src/libultra/io/siacs +C1480,800DA420,src/libultra/os/getthreadid +C14D0,800DA470,src/libultra/os/getactivequeue +C1500,800DA4A0,src/libultra/os/settimer +C16C0,800DA660,src/libultra/os/stoptimer +C17E0,800DA780,src/libultra/io/vigetcurrframebuf +C1820,800DA7C0,src/libultra/io/visetevent +C1880,800DA820,src/libultra/mgu/mtxident +C18E0,800DA880,src/libultra/mgu/mtxidentf +C1940,800DA8E0,src/libultra/mgu/mtxf2l +C19C0,800DA960,src/libultra/mgu/scale +C1A60,800DAA00,src/libultra/mgu/translate +C1B30,800DAAD0,src/libultra/gu/rotate +C1CC0,800DAC60,src/libultra/os/getcurrfaultedthread +C1CF0,800DAC90,src/libultra/bb/sk/skapi +C1F40,800DAEE0,src/libultra/bb/sa/common +C2030,800DAFD0,src/libultra/io/motor +C2040,800DAFE0,src/libultra/os/afterprenmi +C2080,800DB020,src/libultra/audio/drvrnew +C2830,800DB7D0,src/libultra/audio/load +C32C0,800DC260,src/libultra/audio/auxbus +C33D0,800DC370,src/libultra/audio/env +C3F40,800DCEE0,src/libultra/audio/filter +C3F60,800DCF00,src/libultra/audio/mainbus +C40D0,800DD070,src/libultra/audio/resample +C4370,800DD310,src/libultra/audio/reverb +C4EE0,800DDE80,src/libultra/audio/save +C4FC0,800DDF60,src/libultra/audio/heapalloc +C5010,800DDFB0,src/libultra/audio/copy +C5040,800DDFE0,src/libultra/libc/xlitob +C5270,800DE210,src/libultra/libc/xldtob +C5C70,800DEC10,src/libultra/io/sp +C5CA0,800DEC40,src/libultra/io/spsetpc +C5CD0,800DEC70,src/libultra/io/sprawdma +C5D60,800DED00,src/libultra/mgu/normalize +C5DC0,800DED60,src/libultra/libc/ldiv +C5F80,800DEF20,src/libc/fmodf +C5FC0,800DEF60,src/libc/memmove +C6050,800DEFF0,src/libc/absf +C6060,800DF000,src/libc/sqrt +C6070,800DF010,src/code/z_message_z_game_over +D20D0,800EB070,src/code/z_construct +D2FD0,800EBF70,data/rsp.text + +offset,vram,.data +D6330,800EF2D0,src/code/z_en_a_keep +D63D0,800EF370,src/code/z_en_item00 +D6670,800EF610,src/code/z_eff_blure +D6720,800EF6C0,src/code/z_eff_shield_particle +D6770,800EF710,src/code/z_effect +D67C0,800EF760,src/code/z_effect_soft_sprite +D67D0,800EF770,src/code/z_effect_soft_sprite_old_init +D68C0,800EF860,src/code/z_effect_soft_sprite_dlftbls +D6CD0,800EFC70,src/code/flg_set +D6E90,800EFE30,src/code/z_actor +D7180,800F0120,src/code/z_actor_dlftbls +DAC70,800F3C10,src/code/z_bgcheck +DADC0,800F3D60,src/code/z_camera +DE310,800F72B0,src/code/z_collision_btltbls +DE5F0,800F7590,src/code/z_collision_check +DE8A0,800F7840,src/code/z_debug +DE8D0,800F7870,src/code/z_debug_display +DE920,800F78C0,src/code/z_demo +DEA80,800F7A20,src/code/z_draw +DFB00,800F8AA0,src/code/z_elf_message +DFB50,800F8AF0,src/code/z_face_reaction +DFF90,800F8F30,src/code/z_game_dlftbls +E00B0,800F9050,src/code/z_horse +E01C0,800F9160,src/code/z_jpeg +E0200,800F91A0,src/code/z_kaleido_setup +E0250,800F91F0,src/code/z_kankyo +E0640,800F95E0,src/code/z_lib +E0670,800F9610,src/code/z_lifemeter +E0790,800F9730,src/code/z_lights +E07A0,800F9740,src/code/z_map_mark +E0860,800F9800,src/code/z_onepointdemo +E4180,800FD120,src/code/z_map_exp +E41A0,800FD140,src/code/z_map_data +E5FA0,800FEF40,src/code/z_parameter +E6280,800FF220,src/code/z_player_lib +E6960,800FF900,src/code/z_quake +E6990,800FF930,src/code/z_rcp +E77B0,80100750,src/code/z_room +E7830,801007D0,src/code/z_inventory +E7BB0,80100B50,src/code/z_scene +E7C30,80100BD0,src/code/object_table +E88D0,80101870,src/code/z_scene_table +EAAE0,80103A80,src/code/z_skelanime +EAB00,80103AA0,src/code/z_skin_matrix +EAB40,80103AE0,src/code/z_sram +EACF0,80103C90,src/code/z_ss_sram +EADA0,80103D40,data/unk_8012ABC0.data +EADD0,80103D70,src/code/z_view +EADE0,80103D80,src/code/z_viscvg +EAE70,80103E10,src/code/z_vr_box +EB170,80104110,src/code/z_player_call +EB190,80104130,src/code/z_fbdemo +EB210,801041B0,src/code/z_fbdemo_triforce +EB2E0,80104280,src/code/z_fbdemo_wipe1 +EBD80,80104D20,src/code/z_fbdemo_circle +ED080,80106020,src/code/z_fbdemo_fade +ED0B0,80106050,src/code/shrink_window +ED0C0,80106060,src/code/z_kaleido_manager +ED110,801060B0,src/code/z_play +ED120,801060C0,src/code/audio_stop_all_sfx +ED130,801060D0,src/code/graph +ED140,801060E0,src/code/main +ED150,801060F0,src/code/padmgr +ED160,80106100,src/code/speed_meter +ED190,80106130,src/code/sys_math +ED1D0,80106170,src/code/sys_math_atan +ED9E0,80106980,src/code/sys_matrix +EDA60,80106A00,src/code/sys_ucode +EDA70,80106A10,src/code/sys_rumble +EDA80,80106A20,src/code/irqmgr +EDAA0,80106A40,src/code/fault_gc +EDB00,80106AA0,src/code/fault_gc_drawer +EDB40,80106AE0,src/audio/lib/data +EFF50,80108EF0,src/audio/lib/synthesis +EFF80,80108F20,src/audio/lib/load +EFF90,80108F30,src/audio/lib/thread +EFFB0,80108F50,src/audio/lib/aisetnextbuf +EFFC0,80108F60,src/audio/lib/effects +EFFD0,80108F70,src/audio/lib/seqplayer +F0020,80108FC0,src/audio/general +F1740,8010A6E0,src/audio/sfx_params +F2B10,8010BAB0,src/audio/data +F2B80,8010BB20,src/audio/session_config +F3320,8010C2C0,src/libu64/system_heap +F3330,8010C2D0,src/libu64/gfxprint +F3BE0,8010CB80,src/libu64/logseverity_gc +F3BF0,8010CB90,src/libc64/__osMalloc_gc +F3C00,8010CBA0,src/libc64/fp +F3C20,8010CBC0,src/libc64/qrand +F3C30,8010CBD0,src/libultra/audio/sl +F3C40,8010CBE0,src/libultra/io/controller +F3C50,8010CBF0,src/libultra/gu/position +F3C60,8010CC00,src/libultra/gu/sins +F4460,8010D400,src/libultra/libc/xprintf +F44B0,8010D450,src/libultra/io/siacs +F44C0,8010D460,src/libultra/io/vitbl +F5640,8010E5E0,src/libultra/io/vimodentsclpn1 +F5690,8010E630,src/libultra/io/vimodentsclpf1 +F56E0,8010E680,src/libultra/io/vimodentsclaf1 +F5730,8010E6D0,src/libultra/io/vimodentsclpn2 +F5780,8010E720,src/libultra/io/vimodentsclpf2 +F57D0,8010E770,src/libultra/io/vimodentsclan2 +F5820,8010E7C0,src/libultra/io/vimodentsclaf2 +F5870,8010E810,src/libultra/io/vimodentschpn1 +F58C0,8010E860,src/libultra/io/vimodentschpf1 +F5910,8010E8B0,src/libultra/io/vimodentschan1 +F5960,8010E900,src/libultra/io/vimodentschaf1 +F59B0,8010E950,src/libultra/io/vimodentschpn2 +F5A00,8010E9A0,src/libultra/io/vimodentschpf2 +F5A50,8010E9F0,src/libultra/io/vimodepallpn1 +F5AA0,8010EA40,src/libultra/io/vimodepallpf1 +F5AF0,8010EA90,src/libultra/io/vimodepallaf1 +F5B40,8010EAE0,src/libultra/io/vimodepallpn2 +F5B90,8010EB30,src/libultra/io/vimodepallpf2 +F5BE0,8010EB80,src/libultra/io/vimodepallan2 +F5C30,8010EBD0,src/libultra/io/vimodepallaf2 +F5C80,8010EC20,src/libultra/io/vimodepalhpn1 +F5CD0,8010EC70,src/libultra/io/vimodepalhpf1 +F5D20,8010ECC0,src/libultra/io/vimodepalhan1 +F5D70,8010ED10,src/libultra/io/vimodepalhaf1 +F5DC0,8010ED60,src/libultra/io/vimodepalhpn2 +F5E10,8010EDB0,src/libultra/io/vimodepalhpf2 +F5E60,8010EE00,src/libultra/io/vimodempallpn1 +F5EB0,8010EE50,src/libultra/io/vimodempallpf1 +F5F00,8010EEA0,src/libultra/io/vimodempallaf1 +F5F50,8010EEF0,src/libultra/io/vimodempallpn2 +F5FA0,8010EF40,src/libultra/io/vimodempallpf2 +F5FF0,8010EF90,src/libultra/io/vimodempallan2 +F6040,8010EFE0,src/libultra/io/vimodempallaf2 +F6090,8010F030,src/libultra/io/vimodempalhpn1 +F60E0,8010F080,src/libultra/io/vimodempalhpf1 +F6130,8010F0D0,src/libultra/io/vimodempalhan1 +F6180,8010F120,src/libultra/io/vimodempalhaf1 +F61D0,8010F170,src/libultra/io/vimodempalhpn2 +F6220,8010F1C0,src/libultra/io/vimodempalhpf2 +F6270,8010F210,src/libultra/io/vimodefpallpn1 +F62C0,8010F260,src/libultra/io/vimodefpallpf1 +F6310,8010F2B0,src/libultra/io/vimodefpallan1 +F6360,8010F300,src/libultra/io/vimodefpallaf1 +F63B0,8010F350,src/libultra/io/vimodefpallpn2 +F6400,8010F3A0,src/libultra/io/vimodefpallpf2 +F6450,8010F3F0,src/libultra/io/vimodefpallan2 +F64A0,8010F440,src/libultra/io/vimodefpallaf2 +F64F0,8010F490,src/libultra/io/vimodefpalhpn1 +F6540,8010F4E0,src/libultra/io/vimodefpalhpf1 +F6590,8010F530,src/libultra/io/vimodefpalhan1 +F65E0,8010F580,src/libultra/io/vimodefpalhaf1 +F6630,8010F5D0,src/libultra/io/vimodefpalhpn2 +F6680,8010F620,src/libultra/io/vimodefpalhpf2 +F66D0,8010F670,src/libultra/gu/rotate +F66E0,8010F680,src/libultra/audio/drvrnew +F6870,8010F810,src/libultra/audio/env +F6970,8010F910,src/libultra/libc/xlitob + +offset,vram,.rodata +F69A0,8010F940,src/code/z_en_a_keep +F69F0,8010F990,src/code/z_en_item00 +F6C60,8010FC00,src/code/z_eff_blure +F6C90,8010FC30,src/code/z_eff_shield_particle +F6CA0,8010FC40,src/code/z_eff_spark +F6CB0,8010FC50,src/code/z_eff_ss_dead +F6CC0,8010FC60,src/code/z_effect_soft_sprite_old_init +F6CE0,8010FC80,src/code/flg_set +F7070,80110010,src/code/z_actor +F7790,80110730,src/code/z_actor_dlftbls +F77E0,80110780,src/code/z_bgcheck +F7880,80110820,src/code/z_bg_item +F7890,80110830,src/code/z_camera +F8010,80110FB0,src/code/z_collision_check +F8060,80111000,src/code/z_debug +F8070,80111010,src/code/z_demo +F8550,801114F0,src/code/z_draw +F8560,80111500,src/code/z_elf_message +F8680,80111620,src/code/z_fcurve_data +F8690,80111630,src/code/z_fcurve_data_skelanime +F86A0,80111640,src/code/z_horse +F86B0,80111650,src/code/z_jpeg +F8740,801116E0,src/code/z_kanfont +F87A0,80111740,src/code/z_kankyo +F8850,801117F0,src/code/z_lib +F8860,80111800,src/code/z_lifemeter +F8880,80111820,src/code/z_lights +F8890,80111830,src/code/z_map_mark +F88F0,80111890,src/code/z_olib +F8910,801118B0,src/code/z_onepointdemo +F91D0,80112170,src/code/z_map_exp +F94F0,80112490,src/code/z_parameter +F9BF0,80112B90,src/code/z_path +F9C00,80112BA0,src/code/z_player_lib +F9C60,80112C00,src/code/z_quake +F9CF0,80112C90,src/code/z_room +F9D30,80112CD0,src/code/z_sample +F9D40,80112CE0,src/code/z_scene_table +F9D80,80112D20,src/code/z_skelanime +F9DA0,80112D40,src/code/z_skin +F9DB0,80112D50,src/code/z_skin_matrix +F9DC0,80112D60,src/code/z_sram +FA460,80113400,src/code/z_rumble +FA470,80113410,src/code/z_view +FA480,80113420,src/code/z_vr_box +FA570,80113510,src/code/z_fbdemo_triforce +FA580,80113520,src/code/z_fbdemo_wipe1 +FA590,80113530,src/code/z_fbdemo_circle +FA5A0,80113540,src/code/z_cutscene_spline +FA5B0,80113550,src/code/z_kaleido_manager +FA5D0,80113570,src/code/z_play +FA690,80113630,src/code/game +FA6B0,80113650,src/code/graph +FA700,801136A0,src/code/main +FA730,801136D0,src/code/padmgr +FA740,801136E0,src/code/sys_cfb +FA750,801136F0,src/code/sys_math +FA760,80113700,src/code/sys_math3d +FA7F0,80113790,src/code/sys_math_atan +FA800,801137A0,src/code/sys_matrix +FA830,801137D0,src/code/irqmgr +FA850,801137F0,src/code/fault_gc +FB260,80114200,src/code/fault_gc_drawer +FB690,80114630,src/audio/lib/synthesis +FB6B0,80114650,src/audio/lib/heap +FB6E0,80114680,src/audio/lib/load +FB750,801146F0,src/audio/lib/thread +FB880,80114820,src/audio/lib/playback +FB8B0,80114850,src/audio/lib/effects +FB8E0,80114880,src/audio/lib/seqplayer +FBF20,80114EC0,src/audio/general +FC0B0,80115050,src/audio/sfx +FC0D0,80115070,src/audio/sequence +FC150,801150F0,src/audio/session_init +FC160,80115100,src/libu64/debug +FC170,80115110,src/libu64/gfxprint +FC190,80115130,src/libc64/__osMalloc_gc +FC450,801153F0,src/libc64/math64 +FC4A0,80115440,src/libultra/audio/synthesizer +FC4B0,80115450,src/libultra/gu/cosf +FC500,801154A0,src/libultra/gu/lookathil +FC510,801154B0,src/libultra/gu/perspective +FC520,801154C0,src/libultra/gu/sinf +FC570,80115510,src/libultra/libc/xprintf +FC6F0,80115690,src/libultra/audio/drvrnew +FC710,801156B0,src/libultra/audio/env +FC7B0,80115750,src/libultra/audio/resample +FC7E0,80115780,src/libultra/audio/reverb +FC810,801157B0,src/libultra/gu/libm_vals +FC820,801157C0,src/libultra/libc/xldtob +FC880,80115820,src/code/z_message_z_game_over +106130,8011F0D0,src/code/z_construct +1062E0,8011F280,data/audio_tables.rodata +106E80,8011FE20,data/rsp.rodata + +offset,vram,.bss +108FA0,80121F40,data/code_common_80121F40 +108FC0,80121F60,src/code/z_en_item00 +108FD0,80121F70,src/code/z_effect +10CDC0,80125D60,src/code/flg_set +10CDD0,80125D70,src/code/z_actor +10CE50,80125DF0,src/code/z_actor_dlftbls +10CE60,80125E00,src/code/z_bgcheck +10CF80,80125F20,src/code/z_camera +10D060,80126000,src/code/z_collision_check +10E7C0,80127760,src/code/z_debug +10E9E0,80127980,src/code/z_debug_display +10E9F0,80127990,src/code/z_demo +10EA20,801279C0,src/code/z_kankyo +10EAF0,80127A90,src/code/z_lifemeter +10EB20,80127AC0,src/code/z_lights +10ECB0,80127C50,src/code/z_malloc +10ECE0,80127C80,src/code/z_map_mark +10ECF0,80127C90,src/code/z_map_exp +10ED00,80127CA0,src/code/z_parameter +10ED20,80127CC0,src/code/z_player_lib +10ED40,80127CE0,src/code/z_quake +10EDD0,80127D70,src/code/z_skelanime +10EDE0,80127D80,src/code/z_skin +10FCF0,80128C90,src/code/z_rumble +10FE00,80128DA0,src/code/z_vr_box_draw +10FE10,80128DB0,src/code/z_player_call +10FE20,80128DC0,src/code/z_kaleido_scope_call +10FE40,80128DE0,src/code/z_play +10FF50,80128EF0,src/code/game +110030,80128FD0,src/code/graph +1100A0,80129040,src/code/main +113F30,8012CED0,src/code/padmgr +113F40,8012CEE0,src/code/sched +113F60,8012CF00,src/code/speed_meter +113FD0,8012CF70,src/code/sys_cfb +113FE0,8012CF80,src/code/sys_math3d +114200,8012D1A0,src/code/sys_matrix +114210,8012D1B0,src/code/fault_gc +115090,8012E030,src/code/fault_gc_drawer +1150F0,8012E090,src/audio/lib/load +1151B0,8012E150,src/audio/general +1153B0,8012E350,src/audio/sfx +117BC0,80130B60,src/audio/sequence +118980,80131920,src/audio/data +118A20,801319C0,src/audio/session_config +11EE90,80137E30,src/libu64/gfxprint +11EEA0,80137E40,src/libc64/__osMalloc_gc +11EEB0,80137E50,src/libc64/malloc +11EEE0,80137E80,src/libc64/math64 +11EEF0,80137E90,src/libc64/qrand +11EF00,80137EA0,src/code/jpegdecoder +11EF10,80137EB0,src/libultra/io/sptask +11EF50,80137EF0,src/libultra/io/siacs +11EF60,80137F00,data/code_common_80137F00 +120420,801393C0,src/code/z_message_z_game_over +120440,801393E0,.end diff --git a/tools/disasm/ique-cn/files_ovl_file_choose.csv b/tools/disasm/ique-cn/files_ovl_file_choose.csv new file mode 100644 index 0000000000..d1c024e666 --- /dev/null +++ b/tools/disasm/ique-cn/files_ovl_file_choose.csv @@ -0,0 +1,23 @@ +offset,vram,.text +0,80803700,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase +3AE0,808071E0,src/overlays/gamestates/ovl_file_choose/z_file_nameset +8F30,8080C630,src/overlays/gamestates/ovl_file_choose/z_file_choose + +offset,vram,.data +F6E0,80812DE0,src/overlays/gamestates/ovl_file_choose/z_file_nameset_data +FDC0,808134C0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase +FE00,80813500,src/overlays/gamestates/ovl_file_choose/z_file_nameset +FFA0,808136A0,src/overlays/gamestates/ovl_file_choose/z_file_choose + +offset,vram,.rodata +10280,80813980,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase +102B0,808139B0,src/overlays/gamestates/ovl_file_choose/z_file_nameset +102C0,808139C0,src/overlays/gamestates/ovl_file_choose/z_file_choose + +offset,vram,.ovl +102E0,808139E0,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc + +offset,vram,.bss +10AD0,808141D0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase +10AE0,808141E0,src/overlays/gamestates/ovl_file_choose/z_file_nameset +10AF0,808141F0,.end diff --git a/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv b/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv new file mode 100644 index 0000000000..4f63c0b0e9 --- /dev/null +++ b/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv @@ -0,0 +1,35 @@ +offset,vram,.text +0,808141F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect +2400,808165F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug +43B0,808185A0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment +5E30,8081A020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item +7E20,8081C010,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map +B3F0,8081F5E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt +B5F0,8081F7E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope +149E0,80828BD0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark + +offset,vram,.data +150A0,80829290,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect +15250,80829440,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug +15420,80829610,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment +15450,80829640,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item +154C0,808296B0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map +15700,808298F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt +15710,80829900,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope +160A0,8082A290,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark +160F0,8082A2E0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data + +offset,vram,.rodata +1A250,8082E440,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug +1A330,8082E520,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment +1A340,8082E530,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map +1A380,8082E570,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope +1A5F0,8082E7E0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark +1A6A0,8082E890,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data + +offset,vram,.ovl +1A720,8082E910,src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc + +offset,vram,.bss +1C030,80830220,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope +1C040,80830230,.end diff --git a/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt new file mode 100644 index 0000000000..41abd66a7c --- /dev/null +++ b/tools/disasm/ique-cn/functions.txt @@ -0,0 +1,13230 @@ +entrypoint = 0x80000400; // type:func +bootclear = 0x80000450; // type:func +bootproc = 0x80000484; // type:func +Main_ThreadEntry = 0x80000590; // type:func +Idle_ThreadEntry = 0x80000604; // type:func +ViConfig_UpdateVi = 0x800007E0; // type:func +ViConfig_UpdateBlack = 0x800008D8; // type:func +DmaMgr_StrCmp = 0x80000920; // type:func +DmaMgr_DmaRomToRam = 0x80000980; // type:func +DmaMgr_AudioDmaHandler = 0x80000AD0; // type:func +DmaMgr_DmaFromDriveRom = 0x80000AEC; // type:func +DmaMgr_GetFileName = 0x80000BA4; // type:func +DmaMgr_ProcessRequest = 0x80000BB0; // type:func +DmaMgr_ThreadEntry = 0x80000D60; // type:func +DmaMgr_RequestAsync = 0x80000DC4; // type:func +DmaMgr_RequestSync = 0x80000E14; // type:func +DmaMgr_Init = 0x80000EAC; // type:func +gzip_malloc = 0x80000FA0; // type:func +gzip_free = 0x80000FE8; // type:func +huft_build = 0x80001004; // type:func +huft_free = 0x800015E8; // type:func +inflate_codes = 0x8000162C; // type:func +inflate_stored = 0x80001BCC; // type:func +inflate_fixed = 0x80001E4C; // type:func +inflate_dynamic = 0x80002018; // type:func +inflate_block = 0x80002808; // type:func +inflate = 0x800029B0; // type:func +gzip_read = 0x80002A88; // type:func +unzip = 0x80002B14; // type:func +clear_bufs = 0x80002B50; // type:func +fill_inbuf = 0x80002B68; // type:func +flush_window = 0x80002C2C; // type:func +gzip_decompress = 0x80002C3C; // type:func +Locale_Init = 0x80002C80; // type:func +Locale_ResetRegion = 0x80002CB4; // type:func +osSyncPrintfUnused = 0x80002CC0; // type:func +osSyncPrintf = 0x80002CC8; // type:func +rmonPrintf = 0x80002CD0; // type:func +osDriveRomInit = 0x80002CE0; // type:func +Mio0_Decompress = 0x80002EC0; // type:func +StackCheck_Init = 0x80002F70; // type:func +StackCheck_Cleanup = 0x80003048; // type:func +StackCheck_GetState = 0x800030B8; // type:func +StackCheck_CheckAll = 0x80003130; // type:func +StackCheck_Check = 0x80003188; // type:func +osInvalDCache = 0x800031C0; // type:func +osInvalICache = 0x80003270; // type:func +bcmp = 0x800032F0; // type:func +bzero = 0x80003400; // type:func +osCreateMesgQueue = 0x800034A0; // type:func +osRecvMesg = 0x80003510; // type:func +osSendMesg = 0x80003680; // type:func +__osGetFpcCsr = 0x800037F0; // type:func +__osGetSR = 0x80003800; // type:func +__osSetFpcCsr = 0x80003810; // type:func +__osSetSR = 0x80003820; // type:func +osCreateThread = 0x80003830; // type:func +osSetThreadPri = 0x800039A0; // type:func +osStartThread = 0x80003AB0; // type:func +osStopThread = 0x80003C40; // type:func +__osDequeueThread = 0x80003D30; // type:func +osGetTime = 0x80003D90; // type:func +__osTimerServicesInit = 0x80003E40; // type:func +__osTimerInterrupt = 0x80003EEC; // type:func +__osSetTimerIntr = 0x800040D4; // type:func +__osInsertTimer = 0x800041A8; // type:func +osViGetNextFramebuffer = 0x80004360; // type:func +osCreateViManager = 0x800043A0; // type:func +viMgrMain = 0x80004518; // type:func +osViSetMode = 0x800046A0; // type:func +osViSetSpecialFeatures = 0x80004720; // type:func +osViSetXScale = 0x800048A0; // type:func +osViSetYScale = 0x80004960; // type:func +osViSwapBuffer = 0x800049B0; // type:func +__osViSwapContext = 0x80004A00; // type:func +osViBlack = 0x80004D10; // type:func +osViExtendVStart = 0x80004D70; // type:func +__osExceptionPreamble = 0x80004D80; // type:func +__osException = 0x80004D90; // type:func +__osEnqueueAndYield = 0x80005504; // type:func +__osEnqueueThread = 0x80005610; // type:func +__osPopThread = 0x80005658; // type:func +__osNop = 0x80005668; // type:func +__osDispatchThread = 0x80005670; // type:func +__osCleanupThread = 0x800057F0; // type:func +__osDisableInt = 0x80005800; // type:func +__osRestoreInt = 0x80005870; // type:func +osSetIntMask = 0x80005890; // type:func +__osSetHWIntrRoutine = 0x80005940; // type:func +__osGetHWIntrRoutine = 0x800059D0; // type:func +osCreatePiManager = 0x80005A40; // type:func +__osEPiRawStartDma = 0x80005BC0; // type:func +osEPiReadIo = 0x80005F80; // type:func +osEPiStartDma = 0x80005FE0; // type:func +osCartRomInit = 0x80006080; // type:func +__osDevMgrMain = 0x800061E0; // type:func +__osPiCreateAccessQueue = 0x80006680; // type:func +__osPiGetAccess = 0x800066D4; // type:func +__osPiRelAccess = 0x80006710; // type:func +osGetMemSize = 0x800067B0; // type:func +__createSpeedParam = 0x800067E0; // type:func +__osInitialize_common = 0x80006894; // type:func +__osInitialize_autodetect = 0x80006D4C; // type:func +osWritebackDCache = 0x80006D70; // type:func +osVirtualToPhysical = 0x80006DF0; // type:func +bcopy = 0x80006EC0; // type:func +osJamMesg = 0x800071E0; // type:func +osSetEventMesg = 0x80007360; // type:func +__osGetCause = 0x80007430; // type:func +__osSetWatchLo = 0x80007440; // type:func +osGetCount = 0x80007450; // type:func +__osSetCompare = 0x80007550; // type:func +__osSiRawReadIo = 0x80007600; // type:func +__osSiRawWriteIo = 0x80007650; // type:func +osDestroyThread = 0x800076A0; // type:func +osGetThreadPri = 0x800077D0; // type:func +osYieldThread = 0x80007820; // type:func +__osProbeTLB = 0x80007880; // type:func +osMapTLBRdb = 0x80007940; // type:func +osUnmapTLBAll = 0x800079A0; // type:func +__osViInit = 0x800079F0; // type:func +__osViGetCurrentContext = 0x80007AF0; // type:func +__osSetGlobalIntMask = 0x80007B00; // type:func +__osResetGlobalIntMask = 0x80007B60; // type:func +__osPiRawStartDma = 0x80007BD0; // type:func +osPiGetCmdQueue = 0x80007CB0; // type:func +__osEPiRawReadIo = 0x80007CE0; // type:func +__osEPiRawWriteIo = 0x80007E60; // type:func +__osSiDeviceBusy = 0x80007FE0; // type:func +__divdi3 = 0x80008010; // type:func +__moddi3 = 0x800085F0; // type:func +__udivdi3 = 0x80008B80; // type:func +__umoddi3 = 0x800090F0; // type:func +__cmpdi2 = 0x80009600; // type:func +__floatdidf = 0x80009650; // type:func +__floatdisf = 0x800096A0; // type:func +__fixunsdfdi = 0x80009760; // type:func +__fixdfdi = 0x80009960; // type:func +__fixunssfdi = 0x800099D0; // type:func +__fixsfdi = 0x80009BD0; // type:func +EnAObj_SetupAction = 0x80018FA0; // type:func +EnAObj_Init = 0x80018FAC; // type:func +EnAObj_Destroy = 0x800192EC; // type:func +EnAObj_WaitFinishedTalking = 0x80019348; // type:func +EnAObj_SetupWaitTalk = 0x80019378; // type:func +EnAObj_WaitTalk = 0x800193A0; // type:func +EnAObj_SetupBlockRot = 0x80019454; // type:func +EnAObj_BlockRot = 0x800194A4; // type:func +EnAObj_SetupBoulderFragment = 0x800195C4; // type:func +EnAObj_BoulderFragment = 0x800195EC; // type:func +EnAObj_SetupBlock = 0x8001970C; // type:func +EnAObj_Block = 0x8001974C; // type:func +EnAObj_Update = 0x80019834; // type:func +EnAObj_Draw = 0x80019950; // type:func +EnItem00_SetupAction = 0x80019A40; // type:func +EnItem00_Init = 0x80019A4C; // type:func +EnItem00_Destroy = 0x8001A0B4; // type:func +func_8001DFC8 = 0x8001A0E0; // type:func +func_8001E1C8 = 0x8001A2E0; // type:func +func_8001E304 = 0x8001A41C; // type:func +EnItem00_Collected = 0x8001A6E0; // type:func +EnItem00_Update = 0x8001A838; // type:func +EnItem00_Draw = 0x8001AEB8; // type:func +EnItem00_DrawRupee = 0x8001B050; // type:func +EnItem00_DrawCollectible = 0x8001B168; // type:func +EnItem00_DrawHeartContainer = 0x8001B2A8; // type:func +EnItem00_DrawHeartPiece = 0x8001B3A0; // type:func +func_8001F404 = 0x8001B438; // type:func +Item_DropCollectible = 0x8001B580; // type:func +Item_DropCollectible2 = 0x8001B7B8; // type:func +Item_DropCollectibleRandom = 0x8001B98C; // type:func +EffectBlure_AddVertex = 0x8001BE40; // type:func +EffectBlure_AddSpace = 0x8001C164; // type:func +EffectBlure_InitElements = 0x8001C1A8; // type:func +EffectBlure_Init1 = 0x8001C260; // type:func +EffectBlure_Init2 = 0x8001C370; // type:func +EffectBlure_Destroy = 0x8001C4A4; // type:func +EffectBlure_Update = 0x8001C4B0; // type:func +EffectBlure_UpdateFlags = 0x8001C914; // type:func +EffectBlure_GetComputedValues = 0x8001CA84; // type:func +EffectBlure_SetupSmooth = 0x8001CF98; // type:func +EffectBlure_DrawElemNoInterpolation = 0x8001CFCC; // type:func +EffectBlure_DrawElemHermiteInterpolation = 0x8001D4A0; // type:func +EffectBlure_DrawSmooth = 0x8001DE2C; // type:func +EffectBlure_SetupSimple = 0x8001E0FC; // type:func +EffectBlure_SetupSimpleAlt = 0x8001E134; // type:func +EffectBlure_DrawSimpleVertices = 0x8001E39C; // type:func +EffectBlure_DrawSimple = 0x8001E87C; // type:func +EffectBlure_Draw = 0x8001ED88; // type:func +EffectShieldParticle_Init = 0x8001F270; // type:func +EffectShieldParticle_Destroy = 0x8001F4A8; // type:func +EffectShieldParticle_Update = 0x8001F534; // type:func +EffectShieldParticle_GetColors = 0x8001F698; // type:func +EffectShieldParticle_Draw = 0x800203B8; // type:func +EffectSpark_Init = 0x800208D0; // type:func +EffectSpark_Destroy = 0x80020CAC; // type:func +EffectSpark_Update = 0x80020CB8; // type:func +EffectSpark_Draw = 0x80020D7C; // type:func +func_80026230 = 0x80021F80; // type:func +func_80026400 = 0x80022128; // type:func +func_80026608 = 0x8002230C; // type:func +func_80026690 = 0x80022350; // type:func +func_80026860 = 0x800224F8; // type:func +func_80026A6C = 0x800226E4; // type:func +Effect_GetPlayState = 0x80022730; // type:func +Effect_GetByIndex = 0x80022740; // type:func +Effect_InitStatus = 0x80022850; // type:func +Effect_InitContext = 0x80022864; // type:func +Effect_Add = 0x8002290C; // type:func +Effect_DrawAll = 0x80022A8C; // type:func +Effect_UpdateAll = 0x80022B88; // type:func +Effect_Delete = 0x80022CB4; // type:func +Effect_DeleteAll = 0x80022DC0; // type:func +EffectSs_InitInfo = 0x80022EB0; // type:func +EffectSs_ClearAll = 0x80022F94; // type:func +EffectSs_Delete = 0x80023054; // type:func +EffectSs_Reset = 0x800230B4; // type:func +EffectSs_FindSlot = 0x80023148; // type:func +EffectSs_Insert = 0x80023280; // type:func +EffectSs_Spawn = 0x80023318; // type:func +EffectSs_Update = 0x800234C0; // type:func +EffectSs_UpdateAll = 0x80023560; // type:func +EffectSs_Draw = 0x8002361C; // type:func +EffectSs_DrawAll = 0x80023660; // type:func +EffectSs_LerpInv = 0x800237AC; // type:func +EffectSs_LerpS16 = 0x80023810; // type:func +EffectSs_LerpU8 = 0x80023864; // type:func +EffectSs_DrawGEffect = 0x80023950; // type:func +EffectSsDust_Spawn = 0x80023B8C; // type:func +func_8002829C = 0x80023C40; // type:func +func_80028304 = 0x80023CA8; // type:func +func_8002836C = 0x80023D10; // type:func +func_800283D4 = 0x80023D78; // type:func +func_8002843C = 0x80023DE0; // type:func +func_800284A4 = 0x80023E48; // type:func +func_80028510 = 0x80023EB4; // type:func +func_8002857C = 0x80023F20; // type:func +func_800285EC = 0x80023F90; // type:func +func_8002865C = 0x80024000; // type:func +func_800286CC = 0x80024070; // type:func +func_8002873C = 0x800240E0; // type:func +func_800287AC = 0x80024150; // type:func +func_8002881C = 0x800241C0; // type:func +func_80028858 = 0x800241FC; // type:func +func_80028894 = 0x80024238; // type:func +func_80028990 = 0x80024334; // type:func +func_80028A54 = 0x800243F8; // type:func +EffectSsKiraKira_SpawnSmallYellow = 0x800244BC; // type:func +EffectSsKiraKira_SpawnSmall = 0x80024518; // type:func +EffectSsKiraKira_SpawnDispersed = 0x80024554; // type:func +EffectSsKiraKira_SpawnFocused = 0x80024690; // type:func +EffectSsBomb_Spawn = 0x80024768; // type:func +EffectSsBomb2_SpawnFade = 0x800247C0; // type:func +EffectSsBomb2_SpawnLayered = 0x80024828; // type:func +EffectSsBlast_Spawn = 0x80024898; // type:func +EffectSsBlast_SpawnWhiteShockwaveSetScale = 0x80024928; // type:func +EffectSsBlast_SpawnShockwaveSetColor = 0x8002497C; // type:func +EffectSsBlast_SpawnWhiteShockwave = 0x800249C8; // type:func +EffectSsGSpk_SpawnAccel = 0x80024A04; // type:func +EffectSsGSpk_SpawnNoAccel = 0x80024A94; // type:func +EffectSsGSpk_SpawnFuse = 0x80024B28; // type:func +EffectSsGSpk_SpawnRandColor = 0x80024B7C; // type:func +EffectSsGSpk_SpawnSmall = 0x80024C80; // type:func +EffectSsDFire_Spawn = 0x80024CC4; // type:func +EffectSsDFire_SpawnFixedScale = 0x80024D44; // type:func +EffectSsBubble_Spawn = 0x80024D88; // type:func +EffectSsGRipple_Spawn = 0x80024DE8; // type:func +EffectSsGSplash_Spawn = 0x80024E40; // type:func +EffectSsGMagma_Spawn = 0x80024ED4; // type:func +EffectSsGFire_Spawn = 0x80024F0C; // type:func +EffectSsLightning_Spawn = 0x80024F44; // type:func +EffectSsDtBubble_SpawnColorProfile = 0x80024FBC; // type:func +EffectSsDtBubble_SpawnCustomColor = 0x80025038; // type:func +EffectSsHahen_Spawn = 0x800250C8; // type:func +EffectSsHahen_SpawnBurst = 0x80025148; // type:func +EffectSsStick_Spawn = 0x80025290; // type:func +EffectSsSibuki_Spawn = 0x800252E4; // type:func +EffectSsSibuki_SpawnBurst = 0x80025354; // type:func +EffectSsSibuki2_Spawn = 0x800254D8; // type:func +EffectSsGMagma2_Spawn = 0x80025538; // type:func +EffectSsStone1_Spawn = 0x800255A8; // type:func +EffectSsHitMark_Spawn = 0x800255FC; // type:func +EffectSsHitMark_SpawnFixedScale = 0x80025654; // type:func +EffectSsHitMark_SpawnCustomScale = 0x80025678; // type:func +EffectSsFhgFlash_SpawnLightBall = 0x800256A4; // type:func +EffectSsFhgFlash_SpawnShock = 0x80025710; // type:func +EffectSsKFire_Spawn = 0x80025774; // type:func +EffectSsSolderSrchBall_Spawn = 0x800257DC; // type:func +EffectSsKakera_Spawn = 0x80025844; // type:func +EffectSsIcePiece_Spawn = 0x800258FC; // type:func +EffectSsIcePiece_SpawnBurst = 0x80025964; // type:func +EffectSsEnIce_SpawnFlyingVec3f = 0x80025AF8; // type:func +EffectSsEnIce_SpawnFlyingVec3s = 0x80025B98; // type:func +EffectSsEnIce_Spawn = 0x80025C64; // type:func +EffectSsFireTail_Spawn = 0x80025CEC; // type:func +EffectSsFireTail_SpawnFlame = 0x80025D84; // type:func +EffectSsFireTail_SpawnFlameOnPlayer = 0x80025E48; // type:func +EffectSsEnFire_SpawnVec3f = 0x80025E98; // type:func +EffectSsEnFire_SpawnVec3s = 0x80025F10; // type:func +EffectSsExtra_Spawn = 0x80025FBC; // type:func +EffectSsFCircle_Spawn = 0x80026024; // type:func +EffectSsDeadDb_Spawn = 0x80026080; // type:func +EffectSsDeadDd_Spawn = 0x80026138; // type:func +EffectSsDeadDd_SpawnRandYellow = 0x800261EC; // type:func +EffectSsDeadDs_Spawn = 0x8002625C; // type:func +EffectSsDeadDs_SpawnStationary = 0x800262D4; // type:func +EffectSsDeadSound_Spawn = 0x80026324; // type:func +EffectSsDeadSound_SpawnStationary = 0x800263BC; // type:func +EffectSsIceSmoke_Spawn = 0x8002640C; // type:func +FlagSet_Update = 0x80026470; // type:func +Overlay_LoadGameState = 0x80026890; // type:func +Overlay_FreeGameState = 0x800269B8; // type:func +ActorShape_Init = 0x80026AE0; // type:func +ActorShadow_Draw = 0x80026AF8; // type:func +ActorShadow_DrawCircle = 0x80026DC0; // type:func +ActorShadow_DrawWhiteCircle = 0x80026DE4; // type:func +ActorShadow_DrawHorse = 0x80026E10; // type:func +ActorShadow_DrawFoot = 0x80026E34; // type:func +ActorShadow_DrawFeet = 0x8002701C; // type:func +Actor_SetFeetPos = 0x80027450; // type:func +Actor_ProjectPos = 0x80027490; // type:func +Attention_SetReticlePos = 0x800274E0; // type:func +Attention_InitReticle = 0x80027510; // type:func +Attention_SetNaviState = 0x800275DC; // type:func +Attention_Init = 0x800276CC; // type:func +Attention_Draw = 0x8002773C; // type:func +Attention_Update = 0x80027D18; // type:func +Flags_GetSwitch = 0x80028068; // type:func +Flags_SetSwitch = 0x8002809C; // type:func +Flags_UnsetSwitch = 0x800280DC; // type:func +Flags_GetUnknown = 0x80028124; // type:func +Flags_SetUnknown = 0x80028158; // type:func +Flags_UnsetUnknown = 0x80028198; // type:func +Flags_GetTreasure = 0x800281E0; // type:func +Flags_SetTreasure = 0x800281F4; // type:func +Flags_GetClear = 0x8002820C; // type:func +Flags_SetClear = 0x80028220; // type:func +Flags_UnsetClear = 0x80028238; // type:func +Flags_GetTempClear = 0x80028254; // type:func +Flags_SetTempClear = 0x80028268; // type:func +Flags_UnsetTempClear = 0x80028280; // type:func +Flags_GetCollectible = 0x8002829C; // type:func +Flags_SetCollectible = 0x800282D0; // type:func +TitleCard_Init = 0x80028318; // type:func +TitleCard_InitBossName = 0x8002832C; // type:func +TitleCard_InitPlaceName = 0x8002835C; // type:func +TitleCard_Update = 0x800283F0; // type:func +TitleCard_Draw = 0x80028488; // type:func +TitleCard_Clear = 0x80028A18; // type:func +Actor_Kill = 0x80028A44; // type:func +Actor_SetWorldToHome = 0x80028A60; // type:func +Actor_SetFocus = 0x80028A8C; // type:func +Actor_SetWorldRotToShape = 0x80028AC8; // type:func +Actor_SetShapeRotToWorld = 0x80028AE4; // type:func +Actor_SetScale = 0x80028B00; // type:func +Actor_SetObjectDependency = 0x80028B14; // type:func +Actor_Init = 0x80028B4C; // type:func +Actor_Destroy = 0x80028C60; // type:func +Actor_UpdatePos = 0x80028C98; // type:func +Actor_UpdateVelocityXZGravity = 0x80028D10; // type:func +Actor_MoveXZGravity = 0x80028D78; // type:func +Actor_UpdateVelocityXYZ = 0x80028DA4; // type:func +Actor_MoveXYZ = 0x80028E10; // type:func +Actor_SetProjectileSpeed = 0x80028E3C; // type:func +Actor_UpdatePosByAnimation = 0x80028E90; // type:func +Actor_WorldYawTowardActor = 0x80028F08; // type:func +Actor_FocusYawTowardActor = 0x80028F28; // type:func +Actor_WorldYawTowardPoint = 0x80028F48; // type:func +Actor_WorldPitchTowardActor = 0x80028F64; // type:func +Actor_FocusPitchTowardActor = 0x80028F84; // type:func +Actor_WorldPitchTowardPoint = 0x80028FA4; // type:func +Actor_WorldDistXYZToActor = 0x80028FC0; // type:func +Actor_WorldDistXYZToPoint = 0x80028FE0; // type:func +Actor_WorldDistXZToActor = 0x80028FFC; // type:func +Actor_WorldDistXZToPoint = 0x8002901C; // type:func +Actor_WorldToActorCoords = 0x80029038; // type:func +Actor_HeightDiff = 0x800290D8; // type:func +Player_GetHeight = 0x800290E8; // type:func +func_8002DCE4 = 0x80029140; // type:func +func_8002DD6C = 0x800291CC; // type:func +func_8002DD78 = 0x800291D8; // type:func +func_8002DDA8 = 0x8002921C; // type:func +func_8002DDE4 = 0x80029264; // type:func +func_8002DDF4 = 0x80029274; // type:func +Actor_SwapHookshotAttachment = 0x80029284; // type:func +Actor_RequestHorseCameraSetting = 0x800292F0; // type:func +Actor_MountHorse = 0x8002934C; // type:func +func_8002DEEC = 0x80029368; // type:func +Actor_InitPlayerHorse = 0x80029398; // type:func +Player_SetCsAction = 0x800293B4; // type:func +Player_SetCsActionWithHaltedActors = 0x800293CC; // type:func +func_8002DF90 = 0x80029404; // type:func +func_8002DFA4 = 0x80029414; // type:func +Player_IsFacingActor = 0x8002942C; // type:func +Actor_ActorBIsFacingActorA = 0x80029478; // type:func +Actor_IsFacingPlayer = 0x800294DC; // type:func +Actor_ActorAIsFacingActorB = 0x80029520; // type:func +Actor_IsFacingAndNearPlayer = 0x80029580; // type:func +Actor_ActorAIsFacingAndNearActorB = 0x800295F8; // type:func +func_8002E234 = 0x80029684; // type:func +func_8002E2AC = 0x800296E4; // type:func +Actor_UpdateBgCheckInfo = 0x800298D0; // type:func +func_8002E830 = 0x80029C04; // type:func +func_8002EABC = 0x80029DA0; // type:func +func_8002EB44 = 0x80029DDC; // type:func +func_8002EBCC = 0x80029E18; // type:func +func_8002ED80 = 0x80029F38; // type:func +Actor_GetFocus = 0x8002A058; // type:func +Actor_GetWorld = 0x8002A08C; // type:func +Actor_GetWorldPosShapeRot = 0x8002A0C0; // type:func +Attention_WeightedDistToPlayerSq = 0x8002A13C; // type:func +Attention_ActorIsInRange = 0x8002A1FC; // type:func +Attention_ShouldReleaseLockOn = 0x8002A22C; // type:func +Actor_TalkOfferAccepted = 0x8002A2E8; // type:func +Actor_OfferTalkExchange = 0x8002A310; // type:func +Actor_OfferTalkExchangeEquiCylinder = 0x8002A3E0; // type:func +Actor_OfferTalk = 0x8002A404; // type:func +Actor_OfferTalkNearColChkInfoCylinder = 0x8002A420; // type:func +Actor_TextboxIsClosing = 0x8002A458; // type:func +Actor_GetPlayerExchangeItemId = 0x8002A484; // type:func +Actor_GetScreenPos = 0x8002A494; // type:func +Actor_HasParent = 0x8002A524; // type:func +Actor_OfferGetItem = 0x8002A540; // type:func +Actor_OfferGetItemNearby = 0x8002A65C; // type:func +Actor_OfferCarry = 0x8002A684; // type:func +Actor_HasNoParent = 0x8002A6A0; // type:func +func_8002F5C4 = 0x8002A6BC; // type:func +Actor_SetClosestSecretDistance = 0x8002A6E4; // type:func +Actor_IsMounted = 0x8002A708; // type:func +Actor_SetRideActor = 0x8002A724; // type:func +Actor_NotMounted = 0x8002A754; // type:func +Actor_SetPlayerKnockback = 0x8002A770; // type:func +Actor_SetPlayerKnockbackLarge = 0x8002A798; // type:func +Actor_SetPlayerKnockbackLargeNoDamage = 0x8002A7D0; // type:func +Actor_SetPlayerKnockbackSmall = 0x8002A7FC; // type:func +Actor_SetPlayerKnockbackSmallNoDamage = 0x8002A834; // type:func +Player_PlaySfx = 0x8002A860; // type:func +Actor_PlaySfx = 0x8002A8A0; // type:func +Actor_PlaySfx_SurfaceBomb = 0x8002A8C0; // type:func +Actor_PlaySfx_Flagged2 = 0x8002A94C; // type:func +Actor_PlaySfx_FlaggedCentered1 = 0x8002A970; // type:func +Actor_PlaySfx_FlaggedCentered2 = 0x8002A994; // type:func +Actor_PlaySfx_Flagged = 0x8002A9B8; // type:func +Actor_PlaySfx_FlaggedTimer = 0x8002A9D4; // type:func +func_8002F9EC = 0x8002AA24; // type:func +func_8002FA60 = 0x8002AA9C; // type:func +Actor_DrawFaroresWindPointer = 0x8002ABE4; // type:func +func_80030488 = 0x8002B34C; // type:func +Actor_DisableLens = 0x8002B370; // type:func +Actor_InitContext = 0x8002B394; // type:func +Actor_UpdateAll = 0x8002B4B8; // type:func +Actor_FaultPrint = 0x8002B904; // type:func +Actor_Draw = 0x8002B970; // type:func +Actor_UpdateFlaggedAudio = 0x8002BC1C; // type:func +Actor_DrawLensOverlay = 0x8002BCF0; // type:func +Actor_DrawLensActors = 0x8002BE8C; // type:func +Actor_CullingCheck = 0x8002C0EC; // type:func +Actor_CullingVolumeTest = 0x8002C10C; // type:func +func_800315AC = 0x8002C1B8; // type:func +Actor_KillAllWithMissingObject = 0x8002C3A4; // type:func +Actor_FreezeAllEnemies = 0x8002C438; // type:func +func_80031B14 = 0x8002C48C; // type:func +func_80031C3C = 0x8002C5A0; // type:func +Actor_AddToCategory = 0x8002C650; // type:func +Actor_RemoveFromCategory = 0x8002C6A0; // type:func +Actor_FreeOverlay = 0x8002C770; // type:func +Actor_Spawn = 0x8002C7CC; // type:func +Actor_SpawnAsChild = 0x8002CA70; // type:func +Actor_SpawnTransitionActors = 0x8002CAFC; // type:func +Actor_SpawnEntry = 0x8002CC7C; // type:func +Actor_Delete = 0x8002CCF4; // type:func +Attention_ActorOnScreen = 0x8002CDF8; // type:func +Attention_FindActorInCategory = 0x8002CE48; // type:func +Attention_FindActor = 0x8002D040; // type:func +Actor_Find = 0x8002D178; // type:func +Enemy_StartFinishingBlow = 0x8002D1B4; // type:func +FaceChange_UpdateBlinking = 0x8002D1E0; // type:func +FaceChange_UpdateRandomSet = 0x8002D280; // type:func +BodyBreak_Alloc = 0x8002D358; // type:func +BodyBreak_SetInfo = 0x8002D448; // type:func +BodyBreak_SpawnParts = 0x8002D554; // type:func +Actor_SpawnFloorDustRing = 0x8002D730; // type:func +func_80033480 = 0x8002D930; // type:func +Actor_GetCollidedExplosive = 0x8002DAB8; // type:func +func_80033684 = 0x8002DAEC; // type:func +Actor_ChangeCategory = 0x8002DB8C; // type:func +Actor_GetProjectileActor = 0x8002DBD8; // type:func +Actor_SetTextWithPrefix = 0x8002DD44; // type:func +Actor_TestFloorInDirection = 0x8002DDB8; // type:func +Actor_IsLockedOn = 0x8002DE98; // type:func +Actor_OtherIsLockedOn = 0x8002DEC8; // type:func +func_80033AEC = 0x8002DEF8; // type:func +func_80033C30 = 0x8002DFD4; // type:func +Actor_RequestQuake = 0x8002E124; // type:func +Actor_RequestQuakeWithSpeed = 0x8002E1A0; // type:func +Actor_RequestQuakeAndRumble = 0x8002E22C; // type:func +Rand_ZeroFloat = 0x8002E2B0; // type:func +Rand_CenteredFloat = 0x8002E2D8; // type:func +Actor_DrawDoorLock = 0x8002E30C; // type:func +func_8003424C = 0x8002E57C; // type:func +Actor_SetColorFilter = 0x8002E598; // type:func +func_800342EC = 0x8002E5CC; // type:func +func_8003435C = 0x8002E63C; // type:func +Npc_UpdateTalking = 0x8002E6AC; // type:func +Npc_TrackPointWithLimits = 0x8002E79C; // type:func +Npc_GetTrackingPresetMaxPlayerYaw = 0x8002EA9C; // type:func +Npc_UpdateAutoTurn = 0x8002EAC0; // type:func +Npc_TrackPoint = 0x8002EC48; // type:func +func_80034B28 = 0x8002ED90; // type:func +func_80034B54 = 0x8002EDAC; // type:func +func_80034BA0 = 0x8002EDE0; // type:func +func_80034CC4 = 0x8002EEF8; // type:func +Actor_UpdateAlphaByDistance = 0x8002EFF8; // type:func +Animation_ChangeByInfo = 0x8002F0C4; // type:func +Actor_UpdateFidgetTables = 0x8002F150; // type:func +Actor_Noop = 0x8002F1A8; // type:func +func_80035124 = 0x8002F1B0; // type:func +Gfx_DrawDListOpa = 0x8002F2F4; // type:func +Gfx_DrawDListXlu = 0x8002F380; // type:func +func_800353E8 = 0x8002F40C; // type:func +Actor_FindNearby = 0x8002F41C; // type:func +func_800354B4 = 0x8002F4C0; // type:func +func_8003555C = 0x8002F554; // type:func +func_800355B8 = 0x8002F5AC; // type:func +func_800355E4 = 0x8002F5D8; // type:func +Actor_ApplyDamage = 0x8002F614; // type:func +Actor_SetDropFlag = 0x8002F63C; // type:func +Actor_SetDropFlagJntSph = 0x8002F724; // type:func +func_80035844 = 0x8002F820; // type:func +func_800358DC = 0x8002F8C0; // type:func +func_800359B8 = 0x8002F994; // type:func +func_80035B18 = 0x8002FAE0; // type:func +Flags_GetEventChkInf = 0x8002FB18; // type:func +Flags_SetEventChkInf = 0x8002FB40; // type:func +Flags_GetInfTable = 0x8002FB70; // type:func +Flags_SetInfTable = 0x8002FB98; // type:func +func_80035BFC = 0x8002FBC8; // type:func +func_80036E50 = 0x800309B0; // type:func +func_800374E0 = 0x80031038; // type:func +func_80037C30 = 0x80031710; // type:func +func_80037C5C = 0x80031734; // type:func +func_80037C94 = 0x8003175C; // type:func +func_80037CB8 = 0x8003177C; // type:func +func_80037D98 = 0x80031884; // type:func +Actor_TrackNone = 0x800319F0; // type:func +Actor_TrackPoint = 0x80031A8C; // type:func +Actor_TrackPlayerSetFocusHeight = 0x80031C1C; // type:func +Actor_TrackPlayer = 0x80031D4C; // type:func +ActorOverlayTable_LogPrint = 0x80031E70; // type:func +ActorOverlayTable_FaultPrint = 0x80031E78; // type:func +ActorOverlayTable_Init = 0x80031F50; // type:func +ActorOverlayTable_Cleanup = 0x80031F90; // type:func +SSNode_SetValue = 0x80031FC0; // type:func +SSList_SetNull = 0x80031FDC; // type:func +SSNodeList_SetSSListHead = 0x80031FEC; // type:func +DynaSSNodeList_SetSSListHead = 0x80032044; // type:func +DynaSSNodeList_Initialize = 0x8003209C; // type:func +DynaSSNodeList_Alloc = 0x800320B0; // type:func +DynaSSNodeList_ResetCount = 0x80032100; // type:func +DynaSSNodeList_GetNextNodeIdx = 0x8003210C; // type:func +BgCheck_Vec3sToVec3f = 0x8003213C; // type:func +BgCheck_Vec3fToVec3s = 0x80032180; // type:func +CollisionPoly_GetMinY = 0x800321C4; // type:func +CollisionPoly_GetNormalF = 0x80032270; // type:func +func_80038A28 = 0x800322C8; // type:func +CollisionPoly_GetPointDistanceFromPlane = 0x8003241C; // type:func +CollisionPoly_GetVertices = 0x80032484; // type:func +CollisionPoly_GetVerticesByBgId = 0x80032524; // type:func +CollisionPoly_CheckYIntersectApprox1 = 0x800325A4; // type:func +CollisionPoly_CheckYIntersect = 0x800326D8; // type:func +CollisionPoly_CheckYIntersectApprox2 = 0x80032784; // type:func +CollisionPoly_CheckXIntersectApprox = 0x800327C4; // type:func +CollisionPoly_CheckZIntersectApprox = 0x80032868; // type:func +CollisionPoly_LineVsPoly = 0x8003290C; // type:func +CollisionPoly_SphVsPoly = 0x80032BEC; // type:func +StaticLookup_AddPolyToSSList = 0x80032CBC; // type:func +StaticLookup_AddPoly = 0x80032EDC; // type:func +BgCheck_RaycastDownStaticList = 0x80032F70; // type:func +BgCheck_RaycastDownStatic = 0x800331AC; // type:func +BgCheck_ComputeWallDisplacement = 0x800332C4; // type:func +BgCheck_SphVsStaticWall = 0x80033374; // type:func +BgCheck_CheckStaticCeiling = 0x80033C08; // type:func +BgCheck_CheckLineAgainstSSList = 0x80033DE0; // type:func +BgCheck_CheckLineInSubdivision = 0x80034004; // type:func +BgCheck_SphVsFirstStaticPolyList = 0x80034190; // type:func +BgCheck_SphVsFirstStaticPoly = 0x80034360; // type:func +BgCheck_GetNearestStaticLookup = 0x80034498; // type:func +BgCheck_GetStaticLookup = 0x8003454C; // type:func +BgCheck_GetStaticLookupIndicesFromPos = 0x80034618; // type:func +BgCheck_GetSubdivisionMinBounds = 0x800346F8; // type:func +BgCheck_GetSubdivisionMaxBounds = 0x8003489C; // type:func +BgCheck_GetPolySubdivisionBounds = 0x80034A68; // type:func +BgCheck_PolyIntersectsSubdivision = 0x80034C18; // type:func +BgCheck_InitializeStaticLookup = 0x8003536C; // type:func +BgCheck_IsSpotScene = 0x8003576C; // type:func +BgCheck_TryGetCustomMemsize = 0x800357B0; // type:func +BgCheck_SetSubdivisionDimension = 0x80035848; // type:func +BgCheck_Allocate = 0x800358D0; // type:func +BgCheck_GetCollisionHeader = 0x80035CB4; // type:func +BgCheck_PosInStaticBoundingBox = 0x80035D1C; // type:func +BgCheck_RaycastDownImpl = 0x80035DD8; // type:func +BgCheck_CameraRaycastDown1 = 0x80035FA8; // type:func +BgCheck_EntityRaycastDown1 = 0x80036004; // type:func +BgCheck_EntityRaycastDown2 = 0x80036060; // type:func +BgCheck_EntityRaycastDown3 = 0x800360B4; // type:func +BgCheck_EntityRaycastDown4 = 0x80036118; // type:func +BgCheck_EntityRaycastDown5 = 0x80036180; // type:func +BgCheck_EntityRaycastDown6 = 0x800361D8; // type:func +BgCheck_EntityRaycastDown7 = 0x8003623C; // type:func +BgCheck_AnyRaycastDown1 = 0x800362A4; // type:func +BgCheck_AnyRaycastDown2 = 0x80036358; // type:func +BgCheck_CameraRaycastDown2 = 0x80036410; // type:func +BgCheck_EntityRaycastDownWalls = 0x80036474; // type:func +BgCheck_EntityRaycastDown9 = 0x800364DC; // type:func +BgCheck_CheckWallImpl = 0x80036540; // type:func +BgCheck_EntitySphVsWall1 = 0x80036B7C; // type:func +BgCheck_EntitySphVsWall2 = 0x80036BE0; // type:func +BgCheck_EntitySphVsWall3 = 0x80036C44; // type:func +BgCheck_EntitySphVsWall4 = 0x80036CAC; // type:func +BgCheck_CheckCeilingImpl = 0x80036D18; // type:func +BgCheck_AnyCheckCeiling = 0x80036E38; // type:func +BgCheck_EntityCheckCeiling = 0x80036E84; // type:func +BgCheck_CheckLineImpl = 0x80036ED4; // type:func +BgCheck_GetBccFlags = 0x800373B4; // type:func +BgCheck_CameraLineTest1 = 0x800373FC; // type:func +BgCheck_CameraLineTest2 = 0x80037488; // type:func +BgCheck_EntityLineTest1 = 0x80037514; // type:func +BgCheck_EntityLineTest2 = 0x800375A0; // type:func +BgCheck_EntityLineTest3 = 0x80037630; // type:func +BgCheck_ProjectileLineTest = 0x800376BC; // type:func +BgCheck_AnyLineTest1 = 0x80037748; // type:func +BgCheck_AnyLineTest2 = 0x8003778C; // type:func +BgCheck_AnyLineTest3 = 0x80037818; // type:func +BgCheck_SphVsFirstPolyImpl = 0x800378A4; // type:func +BgCheck_SphVsFirstPoly = 0x80037968; // type:func +BgCheck_SphVsFirstWall = 0x800379AC; // type:func +SSNodeList_Initialize = 0x800379F4; // type:func +SSNodeList_Alloc = 0x80037A0C; // type:func +SSNodeList_GetNextNode = 0x80037A7C; // type:func +SSNodeList_GetNextNodeIdx = 0x80037AB8; // type:func +ScaleRotPos_Initialize = 0x80037ACC; // type:func +ScaleRotPos_SetValue = 0x80037B0C; // type:func +ScaleRotPos_Equals = 0x80037B5C; // type:func +DynaLookup_ResetLists = 0x80037C30; // type:func +DynaLookup_Reset = 0x80037C70; // type:func +DynaLookup_ResetVtxStartIndex = 0x80037C90; // type:func +BgActor_Initialize = 0x80037C9C; // type:func +BgActor_SetActor = 0x80037CFC; // type:func +BgActor_IsTransformUnchanged = 0x80037DB4; // type:func +DynaPoly_NullPolyList = 0x80037DDC; // type:func +DynaPoly_AllocPolyList = 0x80037DE8; // type:func +DynaPoly_NullVtxList = 0x80037E24; // type:func +DynaPoly_AllocVtxList = 0x80037E30; // type:func +DynaPoly_SetBgActorPrevTransform = 0x80037E78; // type:func +DynaPoly_IsBgIdBgActor = 0x80037EC4; // type:func +DynaPoly_Init = 0x80037EE4; // type:func +DynaPoly_Alloc = 0x80037F30; // type:func +DynaPoly_SetBgActor = 0x80038004; // type:func +DynaPoly_GetActor = 0x800380C4; // type:func +DynaPoly_DisableCollision = 0x80038138; // type:func +DynaPoly_EnableCollision = 0x80038190; // type:func +DynaPoly_DisableCeilingCollision = 0x800381E8; // type:func +DynaPoly_EnableCeilingCollision = 0x80038240; // type:func +DynaPoly_DeleteBgActor = 0x80038298; // type:func +DynaPoly_InvalidateLookup = 0x80038320; // type:func +DynaPoly_AddBgActorToLookup = 0x80038338; // type:func +DynaPoly_UnsetAllInteractFlags = 0x80038C84; // type:func +DynaPoly_UpdateContext = 0x80038D1C; // type:func +DynaPoly_UpdateBgActorTransforms = 0x80038E88; // type:func +BgCheck_RaycastDownDynaList = 0x80038F18; // type:func +BgCheck_RaycastDownDyna = 0x80039100; // type:func +BgCheck_SphVsDynaWallInBgActor = 0x800395A8; // type:func +BgCheck_SphVsDynaWall = 0x80039C6C; // type:func +BgCheck_CheckDynaCeilingList = 0x80039EA8; // type:func +BgCheck_CheckDynaCeiling = 0x8003A104; // type:func +BgCheck_CheckLineAgainstBgActorSSList = 0x8003A268; // type:func +BgCheck_CheckLineAgainstBgActor = 0x8003A3EC; // type:func +BgCheck_CheckLineAgainstDyna = 0x8003A508; // type:func +BgCheck_SphVsFirstDynaPolyList = 0x8003A6C0; // type:func +BgCheck_SphVsFirstDynaPolyInBgActor = 0x8003A7D8; // type:func +BgCheck_SphVsFirstDynaPoly = 0x8003A918; // type:func +CollisionHeader_SegmentedToVirtual = 0x8003AA70; // type:func +CollisionHeader_GetVirtual = 0x8003AB54; // type:func +func_800418D0 = 0x8003ABA8; // type:func +BgCheck_ResetPolyCheckTbl = 0x8003AC50; // type:func +SurfaceType_GetData = 0x8003AC88; // type:func +SurfaceType_GetBgCamIndex = 0x8003AD00; // type:func +BgCheck_GetBgCamSettingImpl = 0x8003AD24; // type:func +BgCheck_GetBgCamSetting = 0x8003AD6C; // type:func +BgCheck_GetBgCamCountImpl = 0x8003AE00; // type:func +BgCheck_GetBgCamCount = 0x8003AE5C; // type:func +BgCheck_GetBgCamFuncDataImpl = 0x8003AEF0; // type:func +BgCheck_GetBgCamFuncData = 0x8003AF78; // type:func +SurfaceType_GetExitIndex = 0x8003B00C; // type:func +SurfaceType_GetFloorType = 0x8003B034; // type:func +func_80041D70 = 0x8003B05C; // type:func +SurfaceType_GetWallType = 0x8003B084; // type:func +SurfaceType_GetWallFlags = 0x8003B0AC; // type:func +SurfaceType_CheckWallFlag0 = 0x8003B0DC; // type:func +SurfaceType_CheckWallFlag1 = 0x8003B110; // type:func +SurfaceType_CheckWallFlag2 = 0x8003B144; // type:func +SurfaceType_GetFloorProperty2 = 0x8003B178; // type:func +SurfaceType_GetFloorProperty = 0x8003B1A0; // type:func +SurfaceType_IsSoft = 0x8003B1C8; // type:func +SurfaceType_IsHorseBlocked = 0x8003B1F0; // type:func +SurfaceType_GetMaterial = 0x8003B218; // type:func +SurfaceType_GetSfxOffset = 0x8003B23C; // type:func +SurfaceType_GetFloorEffect = 0x8003B284; // type:func +SurfaceType_GetLightSetting = 0x8003B2AC; // type:func +SurfaceType_GetEcho = 0x8003B2D4; // type:func +SurfaceType_CanHookshot = 0x8003B2FC; // type:func +SurfaceType_IsIgnoredByEntities = 0x8003B324; // type:func +SurfaceType_IsIgnoredByProjectiles = 0x8003B360; // type:func +SurfaceType_IsFloorConveyor = 0x8003B39C; // type:func +SurfaceType_GetConveyorSpeed = 0x8003B3D8; // type:func +SurfaceType_GetConveyorDirection = 0x8003B400; // type:func +func_80042108 = 0x8003B428; // type:func +WaterBox_GetSurface1 = 0x8003B45C; // type:func +WaterBox_GetSurfaceImpl = 0x8003B568; // type:func +WaterBox_GetSurface2 = 0x8003B6C0; // type:func +WaterBox_GetBgCamIndex = 0x8003B85C; // type:func +WaterBox_GetBgCamSetting = 0x8003B870; // type:func +WaterBox_GetLightIndex = 0x8003B8C8; // type:func +func_800425B0 = 0x8003B8E0; // type:func +func_80042708 = 0x8003BA38; // type:func +func_800427B4 = 0x8003BAE8; // type:func +DynaPolyActor_UpdateCarriedActorPos = 0x8003BBA0; // type:func +DynaPolyActor_UpdateCarriedActorRotY = 0x8003BCDC; // type:func +func_80043334 = 0x8003BD70; // type:func +DynaPolyActor_TransformCarriedActor = 0x8003BDE0; // type:func +DynaPolyActor_Init = 0x8003BEC0; // type:func +DynaPolyActor_UnsetAllInteractFlags = 0x8003BEE4; // type:func +DynaPolyActor_SetActorOnTop = 0x8003BEF0; // type:func +DynaPolyActor_SetPlayerOnTop = 0x8003BF04; // type:func +DynaPoly_SetPlayerOnTop = 0x8003BF18; // type:func +DynaPolyActor_SetPlayerAbove = 0x8003BF48; // type:func +DynaPoly_SetPlayerAbove = 0x8003BF5C; // type:func +DynaPolyActor_SetSwitchPressed = 0x8003BF8C; // type:func +DynaPolyActor_IsActorOnTop = 0x8003BFA0; // type:func +DynaPolyActor_IsPlayerOnTop = 0x8003BFC4; // type:func +DynaPolyActor_IsPlayerAbove = 0x8003BFE8; // type:func +DynaPolyActor_IsSwitchPressed = 0x8003C00C; // type:func +func_800435D8 = 0x8003C030; // type:func +Camera_InterpolateCurve = 0x8003C250; // type:func +Camera_LERPCeilF = 0x8003C2FC; // type:func +Camera_LERPFloorF = 0x8003C340; // type:func +Camera_LERPCeilS = 0x8003C384; // type:func +Camera_LERPFloorS = 0x8003C418; // type:func +Camera_LERPCeilVec3f = 0x8003C4AC; // type:func +func_80043ABC = 0x8003C530; // type:func +func_80043B60 = 0x8003C570; // type:func +Camera_Vec3sToVec3f = 0x8003C5A0; // type:func +Camera_AddVecGeoToVec3f = 0x8003C608; // type:func +Camera_Vec3fTranslateByUnitVector = 0x8003C688; // type:func +Camera_BGCheckInfo = 0x8003C6F4; // type:func +Camera_BGCheck = 0x8003C91C; // type:func +func_80043F94 = 0x8003C978; // type:func +func_80044340 = 0x8003CD30; // type:func +Camera_CheckOOB = 0x8003CD8C; // type:func +Camera_GetFloorYNorm = 0x8003CE28; // type:func +Camera_GetFloorY = 0x8003CF0C; // type:func +Camera_GetFloorYLayer = 0x8003CF68; // type:func +Camera_GetBgCamSetting = 0x8003D12C; // type:func +Camera_GetBgCamFuncData = 0x8003D160; // type:func +Camera_GetBgCamIndex = 0x8003D190; // type:func +Camera_GetBgCamFuncDataUnderPlayer = 0x8003D210; // type:func +Camera_GetWaterBoxBgCamIndex = 0x8003D2C0; // type:func +Camera_GetWaterSurface = 0x8003D3A0; // type:func +Camera_XZAngle = 0x8003D468; // type:func +Camera_GetPitchAdjFromFloorHeightDiffs = 0x8003D4D0; // type:func +Camera_CalcUpFromPitchYawRoll = 0x8003D7FC; // type:func +Camera_ClampLERPScale = 0x8003DA38; // type:func +Camera_CopyDataToRegs = 0x8003DA90; // type:func +Camera_UpdateInterface = 0x8003DAA0; // type:func +Camera_BGCheckCorner = 0x8003DBAC; // type:func +func_80045508 = 0x8003DC14; // type:func +Camera_CalcSlopeYAdj = 0x8003DE24; // type:func +Camera_CalcAtDefault = 0x8003DEB8; // type:func +func_800458D4 = 0x8003DFD0; // type:func +func_80045B08 = 0x8003E188; // type:func +Camera_CalcAtForParallel = 0x8003E2E8; // type:func +Camera_CalcAtForLockOn = 0x8003E64C; // type:func +Camera_CalcAtForHorse = 0x8003EB04; // type:func +Camera_LERPClampDist = 0x8003ECC0; // type:func +Camera_ClampDist = 0x8003ED78; // type:func +Camera_CalcDefaultPitch = 0x8003EE8C; // type:func +Camera_CalcDefaultYaw = 0x8003EFEC; // type:func +func_80046E20 = 0x8003F140; // type:func +Camera_Noop = 0x8003F664; // type:func +Camera_Normal1 = 0x8003F674; // type:func +Camera_Normal2 = 0x800400CC; // type:func +Camera_Normal3 = 0x8004085C; // type:func +Camera_Normal4 = 0x80040F04; // type:func +Camera_Normal0 = 0x80040F24; // type:func +Camera_Parallel1 = 0x80040F44; // type:func +Camera_Parallel2 = 0x800417D0; // type:func +Camera_Parallel3 = 0x800417F0; // type:func +Camera_Parallel4 = 0x80041854; // type:func +Camera_Parallel0 = 0x80041874; // type:func +Camera_Jump1 = 0x80041894; // type:func +Camera_Jump2 = 0x80041ED4; // type:func +Camera_Jump3 = 0x800427C0; // type:func +Camera_Jump4 = 0x80042F2C; // type:func +Camera_Jump0 = 0x80042F4C; // type:func +Camera_Battle1 = 0x80042F6C; // type:func +Camera_Battle2 = 0x80043CA8; // type:func +Camera_Battle3 = 0x80043CC8; // type:func +Camera_Battle4 = 0x80043CE8; // type:func +Camera_Battle0 = 0x80044040; // type:func +Camera_KeepOn1 = 0x80044060; // type:func +Camera_KeepOn2 = 0x80044DB0; // type:func +Camera_KeepOn3 = 0x80044DD0; // type:func +Camera_KeepOn4 = 0x800457C8; // type:func +Camera_KeepOn0 = 0x800465E0; // type:func +Camera_Fixed1 = 0x80046880; // type:func +Camera_Fixed2 = 0x80046B6C; // type:func +Camera_Fixed3 = 0x80046F20; // type:func +Camera_Fixed4 = 0x80047120; // type:func +Camera_Fixed0 = 0x800474AC; // type:func +Camera_Subj1 = 0x800474CC; // type:func +Camera_Subj2 = 0x800474EC; // type:func +Camera_Subj3 = 0x8004750C; // type:func +Camera_Subj4 = 0x80047B10; // type:func +Camera_Subj0 = 0x80048144; // type:func +Camera_Data0 = 0x80048164; // type:func +Camera_Data1 = 0x80048184; // type:func +Camera_Data2 = 0x800481A4; // type:func +Camera_Data3 = 0x800481C4; // type:func +Camera_Data4 = 0x800481E4; // type:func +Camera_Unique1 = 0x800484D0; // type:func +Camera_Unique2 = 0x80048954; // type:func +Camera_Unique3 = 0x80048D0C; // type:func +Camera_Unique0 = 0x800491BC; // type:func +Camera_Unique4 = 0x800496D8; // type:func +Camera_Unique5 = 0x800496F8; // type:func +Camera_Unique6 = 0x80049718; // type:func +Camera_Unique7 = 0x80049848; // type:func +Camera_Unique8 = 0x80049A4C; // type:func +Camera_Unique9 = 0x80049A6C; // type:func +Camera_Vec3fCopy = 0x8004AEC8; // type:func +Camera_RotateAroundPoint = 0x8004AEE8; // type:func +Camera_Demo1 = 0x8004AF44; // type:func +Camera_Demo2 = 0x8004B11C; // type:func +Camera_Demo3 = 0x8004B13C; // type:func +Camera_Demo4 = 0x8004BBD8; // type:func +Camera_Demo5 = 0x8004BBF8; // type:func +Camera_Demo6 = 0x8004C5D0; // type:func +Camera_Demo7 = 0x8004C874; // type:func +Camera_Demo8 = 0x8004C8A8; // type:func +Camera_Demo9 = 0x8004C8C8; // type:func +Camera_Demo0 = 0x8004CCE8; // type:func +Camera_Special0 = 0x8004CD08; // type:func +Camera_Special1 = 0x8004CE50; // type:func +Camera_Special2 = 0x8004CE70; // type:func +Camera_Special3 = 0x8004CE90; // type:func +Camera_Special4 = 0x8004CEB0; // type:func +Camera_Special5 = 0x8004D054; // type:func +Camera_Special7 = 0x8004D3F8; // type:func +Camera_Special6 = 0x8004D744; // type:func +Camera_Special8 = 0x8004DBB4; // type:func +Camera_Special9 = 0x8004DBD4; // type:func +Camera_Create = 0x8004E2BC; // type:func +Camera_Destroy = 0x8004E30C; // type:func +Camera_Init = 0x8004E334; // type:func +func_80057FC4 = 0x8004E554; // type:func +Camera_Stub80058140 = 0x8004E6A8; // type:func +Camera_InitDataUsingPlayer = 0x8004E6B4; // type:func +Camera_ChangeStatus = 0x8004E8B0; // type:func +Camera_UpdateWater = 0x8004E8CC; // type:func +Camera_UpdateHotRoom = 0x8004ECE8; // type:func +Camera_UpdateDistortion = 0x8004ED28; // type:func +Camera_Update = 0x8004F088; // type:func +Camera_Finish = 0x8004F8B8; // type:func +Camera_SetNewModeStateFlags = 0x8004FA24; // type:func +Camera_RequestModeImpl = 0x8004FA48; // type:func +Camera_RequestMode = 0x8004FDAC; // type:func +Camera_CheckValidMode = 0x8004FDD8; // type:func +Camera_RequestSettingImpl = 0x8004FE44; // type:func +Camera_RequestSetting = 0x80050038; // type:func +Camera_RequestBgCam = 0x80050064; // type:func +Camera_GetInputDir = 0x80050138; // type:func +Camera_GetInputDirPitch = 0x8005015C; // type:func +Camera_GetInputDirYaw = 0x80050184; // type:func +Camera_GetCamDir = 0x800501AC; // type:func +Camera_GetCamDirPitch = 0x800501D0; // type:func +Camera_GetCamDirYaw = 0x800501F8; // type:func +Camera_RequestQuake = 0x80050220; // type:func +Camera_SetViewParam = 0x80050294; // type:func +Camera_UnsetViewFlag = 0x80050428; // type:func +Camera_OverwriteStateFlags = 0x80050450; // type:func +Camera_ResetAnim = 0x8005046C; // type:func +Camera_SetCSParams = 0x8005047C; // type:func +Camera_SetStateFlag = 0x80050510; // type:func +Camera_UnsetStateFlag = 0x80050534; // type:func +Camera_ChangeDoorCam = 0x8005055C; // type:func +Camera_Copy = 0x8005065C; // type:func +Camera_IsDebugCamEnabled = 0x800507A4; // type:func +Camera_GetQuakeOffset = 0x800507B0; // type:func +Camera_SetCameraData = 0x800507D4; // type:func +func_8005B198 = 0x80050820; // type:func +Camera_SetFinishedFlag = 0x80050830; // type:func +DamageTable_Get = 0x80050880; // type:func +DamageTable_Clear = 0x800508AC; // type:func +Collider_InitBase = 0x800508E0; // type:func +Collider_DestroyBase = 0x80050928; // type:func +Collider_SetBaseToActor = 0x8005093C; // type:func +Collider_SetBaseType1 = 0x8005097C; // type:func +Collider_SetBase = 0x800509C0; // type:func +Collider_ResetATBase = 0x80050A04; // type:func +Collider_ResetACBase = 0x80050A20; // type:func +Collider_ResetOCBase = 0x80050A3C; // type:func +Collider_InitElementDamageInfoAT = 0x80050A64; // type:func +Collider_DestroyElementDamageInfoAT = 0x80050A8C; // type:func +Collider_SetElementDamageInfoAT = 0x80050AA0; // type:func +Collider_ResetATElement_Unk = 0x80050AC8; // type:func +Collider_InitElementDamageInfoAC = 0x80050AD8; // type:func +Collider_DestroyElementDamageInfoAC = 0x80050B08; // type:func +Collider_SetElementDamageInfoAC = 0x80050B1C; // type:func +Collider_InitElement = 0x80050B44; // type:func +Collider_DestroyElement = 0x80050BC4; // type:func +Collider_SetElement = 0x80050C04; // type:func +Collider_ResetATElement = 0x80050C7C; // type:func +Collider_ResetACElement = 0x80050CB4; // type:func +Collider_ResetOCElement = 0x80050CEC; // type:func +Collider_InitJntSphElementDim = 0x80050D04; // type:func +Collider_DestroyJntSphElementDim = 0x80050D4C; // type:func +Collider_SetJntSphElementDim = 0x80050D60; // type:func +Collider_InitJntSphElement = 0x80050DB8; // type:func +Collider_DestroyJntSphElement = 0x80050DF8; // type:func +Collider_SetJntSphElement = 0x80050E38; // type:func +Collider_ResetJntSphElementAT = 0x80050E88; // type:func +Collider_ResetJntSphElementAC = 0x80050EAC; // type:func +Collider_ResetJntSphElementOC = 0x80050ED0; // type:func +Collider_InitJntSph = 0x80050EF4; // type:func +Collider_FreeJntSph = 0x80050F20; // type:func +Collider_DestroyJntSph = 0x80050FC0; // type:func +Collider_SetJntSphToActor = 0x80051050; // type:func +Collider_SetJntSphAllocType1 = 0x8005112C; // type:func +Collider_SetJntSphAlloc = 0x80051208; // type:func +Collider_SetJntSph = 0x800512E4; // type:func +Collider_ResetJntSphAT = 0x80051398; // type:func +Collider_ResetJntSphAC = 0x80051424; // type:func +Collider_ResetJntSphOC = 0x800514B0; // type:func +Collider_InitCylinderDim = 0x8005153C; // type:func +Collider_DestroyCylinderDim = 0x80051598; // type:func +Collider_SetCylinderDim = 0x800515AC; // type:func +Collider_InitCylinder = 0x800515EC; // type:func +Collider_DestroyCylinder = 0x8005163C; // type:func +Collider_SetCylinderToActor = 0x8005168C; // type:func +Collider_SetCylinderType1 = 0x800516F4; // type:func +Collider_SetCylinder = 0x8005175C; // type:func +Collider_ResetCylinderAT = 0x800517C4; // type:func +Collider_ResetCylinderAC = 0x80051804; // type:func +Collider_ResetCylinderOC = 0x80051844; // type:func +Collider_InitTrisElementDim = 0x80051884; // type:func +Collider_DestroyTrisElementDim = 0x800518D0; // type:func +Collider_SetTrisElementDim = 0x800518E4; // type:func +Collider_InitTrisElement = 0x80051998; // type:func +Collider_DestroyTrisElement = 0x800519D8; // type:func +Collider_SetTrisElement = 0x80051A18; // type:func +Collider_ResetTrisElementAT = 0x80051A68; // type:func +Collider_ResetTrisElementAC = 0x80051A8C; // type:func +Collider_ResetTrisElementOC = 0x80051AB0; // type:func +Collider_InitTris = 0x80051AD4; // type:func +Collider_FreeTris = 0x80051B00; // type:func +Collider_DestroyTris = 0x80051BB8; // type:func +Collider_SetTrisAllocType1 = 0x80051C5C; // type:func +Collider_SetTrisAlloc = 0x80051D5C; // type:func +Collider_SetTris = 0x80051E5C; // type:func +Collider_ResetTrisAT = 0x80051F28; // type:func +Collider_ResetTrisAC = 0x80051FC8; // type:func +Collider_ResetTrisOC = 0x80052068; // type:func +Collider_InitQuadDim = 0x80052108; // type:func +Collider_DestroyQuadDim = 0x80052154; // type:func +Collider_ResetQuadACDist = 0x80052168; // type:func +Collider_SetQuadMidpoints = 0x80052184; // type:func +Collider_SetQuadDim = 0x80052240; // type:func +Collider_InitQuad = 0x800522C8; // type:func +Collider_DestroyQuad = 0x80052318; // type:func +Collider_SetQuadType1 = 0x80052368; // type:func +Collider_SetQuad = 0x800523D0; // type:func +Collider_ResetQuadAT = 0x80052438; // type:func +Collider_ResetQuadAC = 0x80052488; // type:func +Collider_ResetQuadOC = 0x800524C8; // type:func +Collider_QuadSetNearestAC = 0x80052508; // type:func +Collider_InitLine = 0x800525B8; // type:func +Collider_DestroyLine = 0x80052618; // type:func +Collider_SetLinePoints = 0x8005262C; // type:func +Collider_SetLine = 0x80052670; // type:func +Collider_ResetLineOC = 0x8005269C; // type:func +CollisionCheck_InitContext = 0x800526B8; // type:func +CollisionCheck_DestroyContext = 0x800526D8; // type:func +CollisionCheck_ClearContext = 0x800526E8; // type:func +CollisionCheck_EnableSAC = 0x80052790; // type:func +CollisionCheck_DisableSAC = 0x800527A8; // type:func +CollisionCheck_SetAT = 0x800527C0; // type:func +CollisionCheck_SetAT_SAC = 0x800528A0; // type:func +CollisionCheck_SetAC = 0x800529B0; // type:func +CollisionCheck_SetAC_SAC = 0x80052A90; // type:func +CollisionCheck_SetOC = 0x80052BA0; // type:func +CollisionCheck_SetOC_SAC = 0x80052C80; // type:func +CollisionCheck_SetOCLine = 0x80052D90; // type:func +CollisionCheck_IsElementNotAT = 0x80052E1C; // type:func +CollisionCheck_IsElementNotAC = 0x80052E40; // type:func +CollisionCheck_NoSharedFlags = 0x80052E64; // type:func +CollisionCheck_NoBlood = 0x80052E8C; // type:func +CollisionCheck_BlueBlood = 0x80052EA0; // type:func +CollisionCheck_GreenBlood = 0x8005300C; // type:func +CollisionCheck_WaterBurst = 0x80053178; // type:func +CollisionCheck_RedBlood = 0x800531B4; // type:func +CollisionCheck_RedBloodUnused = 0x800531D8; // type:func +CollisionCheck_HitSolid = 0x800531FC; // type:func +CollisionCheck_SwordHitAudio = 0x8005340C; // type:func +CollisionCheck_HitEffects = 0x80053518; // type:func +CollisionCheck_SetBounce = 0x80053718; // type:func +CollisionCheck_SetATvsAC = 0x80053738; // type:func +CollisionCheck_ATJntSphVsACJntSph = 0x800538E0; // type:func +CollisionCheck_ATJntSphVsACCyl = 0x80053B8C; // type:func +CollisionCheck_ATCylVsACJntSph = 0x80053E00; // type:func +CollisionCheck_ATJntSphVsACTris = 0x800540A0; // type:func +CollisionCheck_ATTrisVsACJntSph = 0x800542C0; // type:func +CollisionCheck_ATJntSphVsACQuad = 0x800544D4; // type:func +CollisionCheck_ATQuadVsACJntSph = 0x800546F4; // type:func +CollisionCheck_ATCylVsACCyl = 0x80054958; // type:func +CollisionCheck_ATCylVsACTris = 0x80054B2C; // type:func +CollisionCheck_ATTrisVsACCyl = 0x80054CF0; // type:func +CollisionCheck_ATCylVsACQuad = 0x80054EB0; // type:func +CollisionCheck_ATQuadVsACCyl = 0x80055124; // type:func +CollisionCheck_ATTrisVsACTris = 0x800553D0; // type:func +CollisionCheck_ATTrisVsACQuad = 0x80055624; // type:func +CollisionCheck_ATQuadVsACTris = 0x800558B4; // type:func +CollisionCheck_ATQuadVsACQuad = 0x80055B4C; // type:func +CollisionCheck_SetJntSphHitFX = 0x80055DDC; // type:func +CollisionCheck_SetCylHitFX = 0x80055EBC; // type:func +CollisionCheck_SetTrisHitFX = 0x80055F54; // type:func +CollisionCheck_SetQuadHitFX = 0x8005603C; // type:func +CollisionCheck_SetHitEffects = 0x800560D4; // type:func +CollisionCheck_AC = 0x800561A8; // type:func +CollisionCheck_AT = 0x800562D0; // type:func +CollisionCheck_GetMassType = 0x800563A0; // type:func +CollisionCheck_SetOCvsOC = 0x800563DC; // type:func +CollisionCheck_OC_JntSphVsJntSph = 0x8005670C; // type:func +CollisionCheck_OC_JntSphVsCyl = 0x800568DC; // type:func +CollisionCheck_OC_CylVsJntSph = 0x80056A3C; // type:func +CollisionCheck_OC_CylVsCyl = 0x80056A68; // type:func +CollisionCheck_SkipOC = 0x80056B38; // type:func +CollisionCheck_Incompatible = 0x80056B5C; // type:func +CollisionCheck_OC = 0x80056BDC; // type:func +CollisionCheck_InitInfo = 0x80056D6C; // type:func +CollisionCheck_ResetDamage = 0x80056DB4; // type:func +CollisionCheck_SetInfoNoDamageTable = 0x80056DE0; // type:func +CollisionCheck_SetInfo = 0x80056E08; // type:func +CollisionCheck_SetInfo2 = 0x80056E34; // type:func +CollisionCheck_SetInfoGetDamageTable = 0x80056E68; // type:func +CollisionCheck_ApplyDamage = 0x80056EA0; // type:func +CollisionCheck_ApplyDamageJntSph = 0x80057060; // type:func +CollisionCheck_ApplyDamageCyl = 0x80057108; // type:func +CollisionCheck_ApplyDamageTris = 0x80057128; // type:func +CollisionCheck_ApplyDamageQuad = 0x800571BC; // type:func +CollisionCheck_Damage = 0x800571DC; // type:func +CollisionCheck_LineOC_JntSph = 0x8005729C; // type:func +CollisionCheck_LineOC_Cyl = 0x800573B4; // type:func +CollisionCheck_LineOC = 0x8005742C; // type:func +CollisionCheck_LineOCCheckAll = 0x80057574; // type:func +CollisionCheck_LineOCCheck = 0x80057598; // type:func +Collider_UpdateCylinder = 0x800575C4; // type:func +Collider_SetCylinderPosition = 0x80057608; // type:func +Collider_SetQuadVertices = 0x80057628; // type:func +Collider_SetTrisVertices = 0x80057698; // type:func +Collider_SetTrisDim = 0x80057758; // type:func +Collider_UpdateSpheres = 0x800577A8; // type:func +CollisionCheck_SpawnRedBlood = 0x8005792C; // type:func +CollisionCheck_SpawnWaterDroplets = 0x80057A8C; // type:func +CollisionCheck_SpawnShieldParticles = 0x80057BE8; // type:func +CollisionCheck_SpawnShieldParticlesMetal = 0x80057C7C; // type:func +CollisionCheck_SpawnShieldParticlesMetalSfx = 0x80057CC8; // type:func +CollisionCheck_SpawnShieldParticlesMetal2 = 0x80057D14; // type:func +CollisionCheck_SpawnShieldParticlesWood = 0x80057D34; // type:func +CollisionCheck_CylSideVsLineSeg = 0x80057DF4; // type:func +CollisionCheck_GetSwordDamage = 0x800584F8; // type:func +SaveContext_Init = 0x80058560; // type:func +Regs_Init = 0x80058610; // type:func +DebugCamera_ScreenText = 0x800586A0; // type:func +DebugCamera_ScreenTextColored = 0x800586B4; // type:func +DebugCamera_DrawScreenText = 0x80058770; // type:func +Debug_DrawText = 0x80058854; // type:func +DebugDisplay_Init = 0x80058920; // type:func +DebugDisplay_AddObject = 0x80058930; // type:func +DebugDisplay_DrawObjects = 0x80058A0C; // type:func +DebugDisplay_DrawSpriteI8 = 0x80058A9C; // type:func +DebugDisplay_DrawPolygon = 0x80058C80; // type:func +Cutscene_InitContext = 0x80058DE0; // type:func +Cutscene_StartManual = 0x80058DF8; // type:func +Cutscene_StopManual = 0x80058E10; // type:func +Cutscene_UpdateManual = 0x80058E34; // type:func +Cutscene_UpdateScripted = 0x80058E80; // type:func +CutsceneHandler_DoNothing = 0x80058F34; // type:func +Cutscene_StepTimer = 0x80058F44; // type:func +CutsceneHandler_StartManual = 0x80058F7C; // type:func +CutsceneHandler_StartScript = 0x80058FDC; // type:func +CutsceneCmd_Misc = 0x80059048; // type:func +CutsceneCmd_SetLightSetting = 0x800597E4; // type:func +CutsceneCmd_StartSequence = 0x80059824; // type:func +CutsceneCmd_StopSequence = 0x80059860; // type:func +CutsceneCmd_FadeOutSequence = 0x8005989C; // type:func +CutsceneCmd_RumbleController = 0x8005991C; // type:func +CutsceneCmd_SetTime = 0x80059960; // type:func +CutsceneCmd_Destination = 0x80059A04; // type:func +CutsceneCmd_Transition = 0x8005B724; // type:func +CutsceneCmd_UpdateCamEyeSpline = 0x8005C104; // type:func +CutsceneCmd_UpdateCamAtSpline = 0x8005C258; // type:func +CutsceneCmd_SetCamEye = 0x8005C3B4; // type:func +CutsceneCmd_SetCamAt = 0x8005C590; // type:func +CutsceneCmd_Text = 0x8005C738; // type:func +Cutscene_ProcessScript = 0x8005CA0C; // type:func +CutsceneHandler_RunScript = 0x8005D3DC; // type:func +CutsceneHandler_StopManual = 0x8005D420; // type:func +CutsceneHandler_StopScript = 0x8005D460; // type:func +Cutscene_SetupScripted = 0x8005D568; // type:func +func_80069048 = 0x8005D6E8; // type:func +func_8006907C = 0x8005D720; // type:func +Cutscene_HandleEntranceTriggers = 0x8005D744; // type:func +Cutscene_HandleConditionalTriggers = 0x8005D864; // type:func +Cutscene_SetScript = 0x8005DA6C; // type:func +MemCpy = 0x8005DAC0; // type:func +MemSet = 0x8005DAF0; // type:func +GetItem_Draw = 0x8005DB50; // type:func +GetItem_DrawMaskOrBombchu = 0x8005DB94; // type:func +GetItem_DrawSoldOut = 0x8005DC30; // type:func +GetItem_DrawBlueFire = 0x8005DCD8; // type:func +GetItem_DrawPoes = 0x8005DE7C; // type:func +GetItem_DrawFairy = 0x8005E078; // type:func +GetItem_DrawMirrorShield = 0x8005E254; // type:func +GetItem_DrawSkullToken = 0x8005E3CC; // type:func +GetItem_DrawEggOrMedallion = 0x8005E534; // type:func +GetItem_DrawCompass = 0x8005E5EC; // type:func +GetItem_DrawPotion = 0x8005E6F4; // type:func +GetItem_DrawGoronSword = 0x8005E8C8; // type:func +GetItem_DrawDekuNuts = 0x8005E9D0; // type:func +GetItem_DrawRecoveryHeart = 0x8005EAE4; // type:func +GetItem_DrawFish = 0x8005EBFC; // type:func +GetItem_DrawOpa0 = 0x8005ED04; // type:func +GetItem_DrawOpa0Xlu1 = 0x8005EDA0; // type:func +GetItem_DrawXlu01 = 0x8005EEA4; // type:func +GetItem_DrawOpa10Xlu2 = 0x8005EF5C; // type:func +GetItem_DrawMagicArrow = 0x8005F078; // type:func +GetItem_DrawMagicSpell = 0x8005F194; // type:func +GetItem_DrawOpa1023 = 0x8005F2E4; // type:func +GetItem_DrawOpa10Xlu32 = 0x8005F3CC; // type:func +GetItem_DrawSmallRupee = 0x8005F500; // type:func +GetItem_DrawScale = 0x8005F650; // type:func +GetItem_DrawBulletBag = 0x8005F7B0; // type:func +GetItem_DrawWallet = 0x8005F8FC; // type:func +SfxSource_InitAll = 0x8005FA50; // type:func +SfxSource_UpdateAll = 0x8005FA80; // type:func +SfxSource_PlaySfxAtFixedWorldPos = 0x8005FB28; // type:func +QuestHint_CheckCondition = 0x8005FC10; // type:func +QuestHint_CheckConditionChain = 0x8005FE8C; // type:func +QuestHint_CheckRandomCondition = 0x8005FF20; // type:func +QuestHint_GetTextIdFromScript = 0x80060100; // type:func +QuestHint_GetSariaTextId = 0x80060244; // type:func +QuestHint_GetNaviTextId = 0x800602AC; // type:func +MaskReaction_GetTextId = 0x800602F0; // type:func +CutsceneFlags_UnsetAll = 0x80060340; // type:func +CutsceneFlags_Set = 0x80060370; // type:func +CutsceneFlags_Unset = 0x800603DC; // type:func +CutsceneFlags_Get = 0x8006044C; // type:func +Curve_CubicHermiteSpline = 0x800604C0; // type:func +Curve_Interpolate = 0x80060558; // type:func +SkelCurve_Clear = 0x80060700; // type:func +SkelCurve_Init = 0x80060730; // type:func +SkelCurve_Destroy = 0x800607E0; // type:func +SkelCurve_SetAnim = 0x80060810; // type:func +SkelCurve_Update = 0x80060848; // type:func +SkelCurve_DrawLimb = 0x80060B38; // type:func +SkelCurve_Draw = 0x80060EC4; // type:func +Horse_CanSpawn = 0x80060F10; // type:func +Horse_ResetHorseData = 0x80060FC4; // type:func +Horse_FixLakeHyliaPosition = 0x80061000; // type:func +Horse_SetupInGameplay = 0x80061040; // type:func +Horse_SetupInCutscene = 0x800614D8; // type:func +Horse_InitPlayerHorse = 0x80061A4C; // type:func +Horse_RotateToPoint = 0x80061B5C; // type:func +Jpeg_ScheduleDecoderTask = 0x80061BF0; // type:func +Jpeg_CopyToZbuffer = 0x80061D2C; // type:func +Jpeg_GetUnalignedU16 = 0x80061E64; // type:func +Jpeg_ParseMarkers = 0x80061EB0; // type:func +Jpeg_Decode = 0x8006207C; // type:func +KaleidoSetup_Update = 0x800623B0; // type:func +KaleidoSetup_Init = 0x8006261C; // type:func +KaleidoSetup_Destroy = 0x80062770; // type:func +Font_LoadCharWide = 0x80062780; // type:func +Font_LoadChar = 0x800627D0; // type:func +Font_LoadMessageBoxIcon = 0x80062848; // type:func +Font_LoadOrderedFont = 0x8006287C; // type:func +Environment_ZBufValToFixedPoint = 0x80062980; // type:func +Environment_GetPixelDepth = 0x800629B8; // type:func +Environment_GraphCallback = 0x800629E4; // type:func +Environment_Init = 0x80062A28; // type:func +Environment_SmoothStepToU8 = 0x80062EF8; // type:func +Environment_SmoothStepToS8 = 0x80063030; // type:func +Environment_LerpWeight = 0x80063170; // type:func +Environment_LerpWeightAccelDecel = 0x800631F4; // type:func +Environment_UpdateStorm = 0x800633B4; // type:func +Environment_UpdateSkybox = 0x800634A8; // type:func +Environment_EnableUnderwaterLights = 0x80063D94; // type:func +Environment_DisableUnderwaterLights = 0x80063E0C; // type:func +Environment_Update = 0x80063E84; // type:func +Environment_DrawSunAndMoon = 0x80065CE0; // type:func +Environment_DrawSunLensFlare = 0x8006653C; // type:func +Environment_DrawLensFlare = 0x80066610; // type:func +Environment_RandCentered = 0x80067268; // type:func +Environment_DrawRain = 0x80067290; // type:func +Environment_ChangeLightSetting = 0x80067838; // type:func +Environment_DrawSkyboxFilters = 0x800678BC; // type:func +Environment_DrawLightningFlash = 0x80067ADC; // type:func +Environment_UpdateLightningStrike = 0x80067B74; // type:func +Environment_AddLightningBolts = 0x80067E7C; // type:func +Environment_DrawLightning = 0x80067EE4; // type:func +Environment_PlaySceneSequence = 0x80068328; // type:func +Environment_PlayTimeBasedSequence = 0x80068518; // type:func +Environment_DrawCustomLensFlare = 0x80068830; // type:func +Environment_InitGameOverLights = 0x800688DC; // type:func +Environment_FadeInGameOverLights = 0x80068AC4; // type:func +Environment_FadeOutGameOverLights = 0x80068D78; // type:func +Environment_UpdateRain = 0x80069094; // type:func +Environment_FillScreen = 0x800690FC; // type:func +Environment_DrawSandstorm = 0x800692F4; // type:func +Environment_AdjustLights = 0x80069D40; // type:func +Environment_GetBgsDayCount = 0x80069F6C; // type:func +Environment_ClearBgsDayCount = 0x80069F7C; // type:func +Environment_GetTotalDays = 0x80069F8C; // type:func +Environment_ForcePlaySequence = 0x80069F9C; // type:func +Environment_IsForcedSequenceDisabled = 0x80069FB4; // type:func +Environment_PlayStormNatureAmbience = 0x80069FDC; // type:func +Environment_StopStormNatureAmbience = 0x8006A03C; // type:func +Environment_WarpSongLeave = 0x8006A09C; // type:func +Lib_MemSet = 0x8006A190; // type:func +Math_CosS = 0x8006A1E4; // type:func +Math_SinS = 0x8006A224; // type:func +Math_ScaledStepToS = 0x8006A264; // type:func +Math_StepToS = 0x8006A334; // type:func +Math_StepToF = 0x8006A3BC; // type:func +Math_StepUntilAngleS = 0x8006A450; // type:func +Math_StepUntilS = 0x8006A4B8; // type:func +Math_StepToAngleS = 0x8006A518; // type:func +Math_StepUntilF = 0x8006A5DC; // type:func +Math_AsymStepToF = 0x8006A62C; // type:func +Lib_GetControlStickData = 0x8006A6D4; // type:func +Rand_S16Offset = 0x8006A750; // type:func +Rand_S16OffsetStride = 0x8006A7A4; // type:func +Math_Vec3f_Copy = 0x8006A80C; // type:func +Math_Vec3s_ToVec3f = 0x8006A82C; // type:func +Math_Vec3f_Sum = 0x8006A870; // type:func +Math_Vec3f_Diff = 0x8006A8A8; // type:func +Math_Vec3s_DiffToVec3f = 0x8006A8E0; // type:func +Math_Vec3f_Scale = 0x8006A93C; // type:func +Math_Vec3f_DistXYZ = 0x8006A978; // type:func +Math_Vec3f_DistXYZAndStoreDiff = 0x8006A9BC; // type:func +Math_Vec3f_DistXZ = 0x8006AA18; // type:func +Math_Vec3f_DiffY = 0x8006AA4C; // type:func +Math_Vec3f_Yaw = 0x8006AA60; // type:func +Math_Vec3f_Pitch = 0x8006AA94; // type:func +Actor_ProcessInitChain = 0x8006AADC; // type:func +IChain_Apply_u8 = 0x8006AB54; // type:func +IChain_Apply_s8 = 0x8006AB70; // type:func +IChain_Apply_u16 = 0x8006AB8C; // type:func +IChain_Apply_s16 = 0x8006ABA8; // type:func +IChain_Apply_u32 = 0x8006ABC4; // type:func +IChain_Apply_s32 = 0x8006ABE0; // type:func +IChain_Apply_f32 = 0x8006ABFC; // type:func +IChain_Apply_f32div1000 = 0x8006AC20; // type:func +IChain_Apply_Vec3f = 0x8006AC50; // type:func +IChain_Apply_Vec3fdiv1000 = 0x8006AC7C; // type:func +IChain_Apply_Vec3s = 0x8006ACB4; // type:func +Math_SmoothStepToF = 0x8006ACD8; // type:func +Math_ApproachF = 0x8006ADE0; // type:func +Math_ApproachZeroF = 0x8006AE50; // type:func +Math_SmoothStepToDegF = 0x8006AEA4; // type:func +Math_SmoothStepToS = 0x8006B068; // type:func +Math_ApproachS = 0x8006B184; // type:func +Color_RGBA8_Copy = 0x8006B228; // type:func +Sfx_PlaySfxCentered = 0x8006B250; // type:func +Sfx_PlaySfxCentered2 = 0x8006B298; // type:func +Sfx_PlaySfxAtPos = 0x8006B2E0; // type:func +Health_InitMeter = 0x8006B330; // type:func +Health_UpdateMeter = 0x8006B40C; // type:func +func_80078E18 = 0x8006B7F0; // type:func +func_80078E34 = 0x8006B810; // type:func +func_80078E84 = 0x8006B860; // type:func +Health_DrawMeter = 0x8006B8F8; // type:func +Health_UpdateBeatingHeart = 0x8006C570; // type:func +Health_IsCritical = 0x8006C65C; // type:func +Lights_PointSetInfo = 0x8006C6D0; // type:func +Lights_PointNoGlowSetInfo = 0x8006C72C; // type:func +Lights_PointGlowSetInfo = 0x8006C790; // type:func +Lights_PointSetColorAndRadius = 0x8006C7F8; // type:func +Lights_DirectionalSetInfo = 0x8006C82C; // type:func +Lights_Reset = 0x8006C884; // type:func +Lights_Draw = 0x8006C8C0; // type:func +Lights_FindSlot = 0x8006CA04; // type:func +Lights_BindPoint = 0x8006CA34; // type:func +Lights_BindDirectional = 0x8006CD90; // type:func +Lights_BindAll = 0x8006CDF8; // type:func +Lights_FindBufSlot = 0x8006CE94; // type:func +Lights_FreeNode = 0x8006CF20; // type:func +LightContext_Init = 0x8006CF98; // type:func +LightContext_SetAmbientColor = 0x8006D004; // type:func +LightContext_SetFog = 0x8006D030; // type:func +LightContext_NewLights = 0x8006D06C; // type:func +LightContext_InitList = 0x8006D0A4; // type:func +LightContext_DestroyList = 0x8006D0B4; // type:func +LightContext_InsertLight = 0x8006D110; // type:func +LightContext_RemoveLight = 0x8006D170; // type:func +Lights_NewAndDraw = 0x8006D1D4; // type:func +Lights_New = 0x8006D31C; // type:func +Lights_GlowCheck = 0x8006D364; // type:func +Lights_DrawGlow = 0x8006D568; // type:func +ZeldaArena_Malloc = 0x8006D770; // type:func +ZeldaArena_MallocR = 0x8006D798; // type:func +ZeldaArena_Realloc = 0x8006D7C0; // type:func +ZeldaArena_Free = 0x8006D7F0; // type:func +ZeldaArena_Calloc = 0x8006D818; // type:func +ZeldaArena_GetSizes = 0x8006D870; // type:func +ZeldaArena_Check = 0x8006D8A8; // type:func +ZeldaArena_Init = 0x8006D8CC; // type:func +ZeldaArena_Cleanup = 0x8006D8FC; // type:func +ZeldaArena_IsInitialized = 0x8006D920; // type:func +MapMark_Init = 0x8006D950; // type:func +MapMark_ClearPointers = 0x8006D9FC; // type:func +MapMark_DrawForDungeon = 0x8006DA18; // type:func +MapMark_Draw = 0x8006DF08; // type:func +PreNmiBuff_Init = 0x8006DF50; // type:func +PreNmiBuff_SetReset = 0x8006DFC8; // type:func +PreNmiBuff_IsResetting = 0x8006DFFC; // type:func +Sched_FlushTaskQueue = 0x8006E010; // type:func +OLib_Vec3fDist = 0x8006E090; // type:func +OLib_Vec3fDistOutDiff = 0x8006E0D4; // type:func +OLib_Vec3fDistXZ = 0x8006E130; // type:func +OLib_ClampMinDist = 0x8006E164; // type:func +OLib_ClampMaxDist = 0x8006E1B4; // type:func +OLib_Vec3fDistNormalize = 0x8006E204; // type:func +OLib_VecSphToVec3f = 0x8006E2B4; // type:func +OLib_VecGeoToVec3f = 0x8006E360; // type:func +OLib_Vec3fToVecSph = 0x8006E3A4; // type:func +OLib_Vec3fToVecGeo = 0x8006E4F8; // type:func +OLib_Vec3fDiffToVecSph = 0x8006E540; // type:func +OLib_Vec3fDiffToVecGeo = 0x8006E594; // type:func +OLib_Vec3fDiffRad = 0x8006E5E8; // type:func +OLib_Vec3fDiffDegF = 0x8006E678; // type:func +OLib_Vec3fDiffBinAng = 0x8006E6E0; // type:func +OnePointCutscene_AddVecGeoToVec3f = 0x8006E780; // type:func +OnePointCutscene_Vec3fYaw = 0x8006E800; // type:func +OnePointCutscene_Vec3sToVec3f = 0x8006E868; // type:func +OnePointCutscene_BgCheckLineTest = 0x8006E8AC; // type:func +OnePointCutscene_RaycastDown = 0x8006E8FC; // type:func +OnePointCutscene_SetCsCamPoints = 0x8006E924; // type:func +OnePointCutscene_SetInfo = 0x8006E958; // type:func +OnePointCutscene_SetAsChild = 0x80072094; // type:func +OnePointCutscene_RemoveCamera = 0x800720DC; // type:func +OnePointCutscene_Init = 0x800721B0; // type:func +OnePointCutscene_EndCutscene = 0x80072468; // type:func +OnePointCutscene_Attention = 0x800724C4; // type:func +OnePointCutscene_AttentionSetSfx = 0x80072630; // type:func +OnePointCutscene_EnableAttention = 0x80072684; // type:func +OnePointCutscene_DisableAttention = 0x80072694; // type:func +OnePointCutscene_CheckForCategory = 0x800726A8; // type:func +OnePointCutscene_Noop = 0x80072708; // type:func +Map_SavePlayerInitialInfo = 0x80072720; // type:func +Map_SetPaletteData = 0x80072780; // type:func +Map_SetFloorPalettesData = 0x800727FC; // type:func +Map_InitData = 0x800729B4; // type:func +Map_InitRoomData = 0x80072C70; // type:func +Map_Destroy = 0x80072D4C; // type:func +Map_Init = 0x80072D74; // type:func +Minimap_DrawCompassIcons = 0x80072FFC; // type:func +Minimap_Draw = 0x80073450; // type:func +Map_GetFloorTextIndexOffset = 0x80073F6C; // type:func +Map_Update = 0x80073F94; // type:func +Interface_ChangeHudVisibilityMode = 0x800742C0; // type:func +Interface_RaiseButtonAlphas = 0x800742F0; // type:func +Interface_DimButtonAlphas = 0x80074434; // type:func +Interface_UpdateHudAlphas = 0x800744F8; // type:func +func_80083108 = 0x80074BF4; // type:func +Interface_SetSceneRestrictions = 0x800759A0; // type:func +Gfx_TextureIA8 = 0x80075AF0; // type:func +Gfx_TextureI8 = 0x80075D08; // type:func +Inventory_SwapAgeEquipment = 0x80075F20; // type:func +Interface_InitHorsebackArchery = 0x8007620C; // type:func +func_800849EC = 0x8007624C; // type:func +Interface_LoadItemIcon1 = 0x800762C8; // type:func +Interface_LoadItemIcon2 = 0x80076368; // type:func +func_80084BF4 = 0x80076408; // type:func +Item_Give = 0x800764FC; // type:func +Item_CheckObtainability = 0x80077A34; // type:func +Inventory_DeleteItem = 0x80077E30; // type:func +Inventory_ReplaceItem = 0x80077EC0; // type:func +Inventory_HasEmptyBottle = 0x80077F68; // type:func +Inventory_HasSpecificBottle = 0x80077FA4; // type:func +Inventory_UpdateBottleItem = 0x80077FE0; // type:func +Inventory_ConsumeFairy = 0x80078094; // type:func +func_80086D5C = 0x8007817C; // type:func +Interface_LoadActionLabel = 0x800781B0; // type:func +Interface_SetDoAction = 0x80078304; // type:func +Interface_SetNaviCall = 0x8007837C; // type:func +Interface_LoadActionLabelB = 0x8007846C; // type:func +Health_ChangeBy = 0x80078534; // type:func +Health_GiveHearts = 0x80078620; // type:func +Rupees_ChangeBy = 0x80078640; // type:func +Inventory_ChangeAmmo = 0x80078660; // type:func +Magic_Fill = 0x8007891C; // type:func +Magic_Reset = 0x8007895C; // type:func +Magic_RequestChange = 0x80078998; // type:func +Magic_Update = 0x80078BB0; // type:func +Magic_DrawMeter = 0x80079470; // type:func +Interface_SetSubTimer = 0x80079C6C; // type:func +Interface_SetSubTimerToFinalSecond = 0x80079CB4; // type:func +Interface_SetTimer = 0x80079CF0; // type:func +Interface_DrawActionLabel = 0x80079D38; // type:func +Interface_DrawItemButtons = 0x80079E3C; // type:func +Interface_DrawItemIconTexture = 0x8007ACD4; // type:func +Interface_DrawAmmoCount = 0x8007AED0; // type:func +Interface_DrawActionButton = 0x8007B374; // type:func +Interface_InitVertices = 0x8007B578; // type:func +func_8008A8B8 = 0x8007B870; // type:func +func_8008A994 = 0x8007B954; // type:func +Interface_Draw = 0x8007B99C; // type:func +Interface_Update = 0x8007E538; // type:func +Path_GetByIndex = 0x8007F020; // type:func +Path_OrientAndGetDistSq = 0x8007F064; // type:func +Path_CopyLastPoint = 0x8007F150; // type:func +FrameAdvance_Init = 0x8007F1F0; // type:func +FrameAdvance_Update = 0x8007F200; // type:func +Player_SetBootData = 0x8007F2A0; // type:func +Player_InBlockingCsMode = 0x8007F42C; // type:func +Player_InCsMode = 0x8007F4DC; // type:func +Player_CheckHostileLockOn = 0x8007F518; // type:func +Player_IsChildWithHylianShield = 0x8007F528; // type:func +Player_ActionToModelGroup = 0x8007F550; // type:func +Player_SetModelsForHoldingShield = 0x8007F59C; // type:func +Player_SetModels = 0x8007F688; // type:func +Player_SetModelGroup = 0x8007F760; // type:func +func_8008EC70 = 0x8007F7CC; // type:func +Player_SetEquipmentData = 0x8007F804; // type:func +Player_UpdateBottleHeld = 0x8007F8F4; // type:func +Player_ReleaseLockOn = 0x8007F948; // type:func +Player_ClearZTargeting = 0x8007F964; // type:func +Player_SetAutoLockOnActor = 0x8007FA08; // type:func +func_8008EF30 = 0x8007FA8C; // type:func +func_8008EF44 = 0x8007FAA4; // type:func +Player_IsBurningStickInRange = 0x8007FAC0; // type:func +Player_GetStrength = 0x8007FB98; // type:func +Player_GetMask = 0x8007FBE4; // type:func +Player_UnsetMask = 0x8007FBF4; // type:func +Player_HasMirrorShieldEquipped = 0x8007FC04; // type:func +Player_HasMirrorShieldSetToDraw = 0x8007FC1C; // type:func +Player_ActionToMagicSpell = 0x8007FC48; // type:func +Player_HoldsHookshot = 0x8007FC74; // type:func +func_8008F128 = 0x8007FC98; // type:func +Player_ActionToMeleeWeapon = 0x8007FCCC; // type:func +Player_GetMeleeWeaponHeld = 0x8007FCF4; // type:func +Player_HoldsTwoHandedWeapon = 0x8007FD18; // type:func +Player_HoldsBrokenKnife = 0x8007FD44; // type:func +Player_ActionToBottle = 0x8007FD9C; // type:func +Player_GetBottleHeld = 0x8007FDC8; // type:func +Player_ActionToExplosive = 0x8007FDE8; // type:func +Player_GetExplosiveHeld = 0x8007FE14; // type:func +func_8008F2BC = 0x8007FE34; // type:func +Player_GetEnvironmentalHazard = 0x8007FE70; // type:func +Player_DrawImpl = 0x8007FFE8; // type:func +func_8008F87C = 0x800803AC; // type:func +Player_OverrideLimbDrawGameplayCommon = 0x800807F8; // type:func +Player_OverrideLimbDrawGameplayDefault = 0x80080B4C; // type:func +Player_OverrideLimbDrawGameplayFirstPerson = 0x80080E38; // type:func +Player_OverrideLimbDrawGameplayCrawling = 0x80080F88; // type:func +func_80090480 = 0x80080FCC; // type:func +Player_UpdateShieldCollider = 0x80081154; // type:func +func_800906D4 = 0x80081228; // type:func +Player_DrawGetItemImpl = 0x80081338; // type:func +Player_DrawGetItem = 0x800814CC; // type:func +func_80090A28 = 0x80081544; // type:func +Player_DrawHookshotReticle = 0x80081618; // type:func +Player_PostLimbDrawGameplay = 0x800817FC; // type:func +Player_InitPauseDrawData = 0x80082164; // type:func +Player_OverrideLimbDrawPause = 0x80082290; // type:func +Player_DrawPauseImpl = 0x80082434; // type:func +Player_DrawPause = 0x80082B38; // type:func +func_80092320 = 0x80082D10; // type:func +PreNMI_Update = 0x80082D24; // type:func +PreNMI_Draw = 0x80082D6C; // type:func +PreNMI_Main = 0x80082E28; // type:func +PreNMI_Destroy = 0x80082E5C; // type:func +PreNMI_Init = 0x80082E68; // type:func +Quake_AddVecGeoToVec3f = 0x80082EB0; // type:func +Quake_UpdateShakeInfo = 0x80082F30; // type:func +Quake_CallbackType1 = 0x80083158; // type:func +Quake_CallbackType5 = 0x800831E0; // type:func +Quake_CallbackType6 = 0x80083254; // type:func +Quake_CallbackType3 = 0x800832D8; // type:func +Quake_CallbackType2 = 0x80083370; // type:func +Quake_CallbackType4 = 0x800833E0; // type:func +Quake_GetFreeIndex = 0x80083478; // type:func +Quake_RequestImpl = 0x800834DC; // type:func +Quake_Remove = 0x80083594; // type:func +Quake_GetRequest = 0x800835BC; // type:func +Quake_SetValue = 0x80083618; // type:func +Quake_SetSpeed = 0x80083748; // type:func +Quake_SetDuration = 0x80083790; // type:func +Quake_GetTimeLeft = 0x800837E0; // type:func +Quake_SetPerturbations = 0x80083818; // type:func +Quake_SetOrientation = 0x80083880; // type:func +Quake_Init = 0x800838E8; // type:func +Quake_Request = 0x8008393C; // type:func +Quake_RemoveRequest = 0x80083960; // type:func +Quake_Update = 0x800839A8; // type:func +Gfx_SetFog = 0x80083D20; // type:func +Gfx_SetFogWithSync = 0x80083E9C; // type:func +Gfx_SetFog2 = 0x8008402C; // type:func +Gfx_SetupDLImpl = 0x80084060; // type:func +Gfx_SetupDL = 0x8008409C; // type:func +Gfx_SetupDLAtPtr = 0x800840BC; // type:func +Gfx_SetupDL_57 = 0x800840E8; // type:func +Gfx_SetupDL_57b = 0x80084110; // type:func +Gfx_SetupDL_52NoCD = 0x80084138; // type:func +Gfx_SetupDL_58Opa = 0x8008417C; // type:func +Gfx_SetupDL_57Opa = 0x800841A4; // type:func +Gfx_SetupDL_50Opa = 0x800841CC; // type:func +Gfx_SetupDL_51Opa = 0x800841F4; // type:func +Gfx_SetupDL_52Xlu = 0x8008421C; // type:func +Gfx_SetupDL_53Opa = 0x80084244; // type:func +Gfx_SetupDL_54Opa = 0x8008426C; // type:func +Gfx_SetupDL_55Xlu = 0x80084294; // type:func +Gfx_SetupDL_26Opa = 0x800842BC; // type:func +Gfx_SetupDL_25Xlu2 = 0x800842E4; // type:func +func_80093C80 = 0x8008430C; // type:func +Gfx_SetupDL_25Opa = 0x80084378; // type:func +Gfx_SetupDL_25Xlu = 0x800843A0; // type:func +Gfx_SetupDL_31Opa = 0x800843C8; // type:func +Gfx_SetupDL_32Opa = 0x800843F0; // type:func +Gfx_SetupDL_33Opa = 0x80084418; // type:func +Gfx_SetupDL_64 = 0x80084440; // type:func +Gfx_SetupDL_34 = 0x80084468; // type:func +Gfx_SetupDL_34Opa = 0x80084490; // type:func +Gfx_SetupDL_35Opa = 0x800844BC; // type:func +Gfx_SetupDL_44Xlu = 0x800844E4; // type:func +Gfx_SetupDL_36Opa = 0x8008450C; // type:func +Gfx_SetupDL_28 = 0x80084534; // type:func +Gfx_SetupDL_28Opa = 0x8008455C; // type:func +Gfx_SetupDL_43Opa = 0x80084584; // type:func +Gfx_SetupDL_45Opa = 0x800845AC; // type:func +Gfx_SetupDL_46Overlay = 0x800845D4; // type:func +Gfx_SetupDL_38Xlu = 0x800845FC; // type:func +Gfx_SetupDL_4Xlu = 0x80084624; // type:func +Gfx_SetupDL_37Opa = 0x8008464C; // type:func +Gfx_SetupDL_2Opa = 0x80084674; // type:func +Gfx_SetupDL_39 = 0x8008469C; // type:func +Gfx_SetupDL_39Opa = 0x800846C4; // type:func +Gfx_SetupDL_39Overlay = 0x800846F0; // type:func +Gfx_SetupDL_39Ptr = 0x8008471C; // type:func +Gfx_SetupDL_40Opa = 0x80084748; // type:func +Gfx_SetupDL_41Opa = 0x80084770; // type:func +Gfx_SetupDL_47Xlu = 0x80084798; // type:func +Gfx_SetupDL_66 = 0x800847C0; // type:func +Gfx_SetupDL_67 = 0x800847E8; // type:func +Gfx_SetupDL_68NoCD = 0x80084810; // type:func +Gfx_SetupDL_69NoCD = 0x80084854; // type:func +func_800947AC = 0x80084898; // type:func +Gfx_SetupDL_70 = 0x800848DC; // type:func +Gfx_SetupDL_20NoCD = 0x80084904; // type:func +Gfx_SetupDL_42Opa = 0x80084948; // type:func +Gfx_SetupDL_42Overlay = 0x80084970; // type:func +Gfx_SetupDL_48Opa = 0x80084998; // type:func +Gfx_SetupDL_49Xlu = 0x800849C0; // type:func +Gfx_SetupDL_27Xlu = 0x800849E8; // type:func +Gfx_SetupDL_60NoCDXlu = 0x80084A10; // type:func +Gfx_SetupDL_61Xlu = 0x80084A58; // type:func +Gfx_SetupDL_56Opa = 0x80084A80; // type:func +Gfx_SetupDL_56Ptr = 0x80084AA8; // type:func +Gfx_SetupDL_59Opa = 0x80084AD4; // type:func +Gfx_BranchTexScroll = 0x80084AFC; // type:func +func_80094E54 = 0x80084BA0; // type:func +func_80094E78 = 0x80084BC4; // type:func +Gfx_TexScroll = 0x80084BE8; // type:func +Gfx_TwoTexScroll = 0x80084C6C; // type:func +Gfx_TwoTexScrollEnvColor = 0x80084D8C; // type:func +Gfx_EnvColor = 0x80084EEC; // type:func +Gfx_SetupFrame = 0x80084F44; // type:func +func_80095974 = 0x800854FC; // type:func +func_80095AA0 = 0x800855E0; // type:func +Room_DrawNormal = 0x800855F8; // type:func +Room_DrawCullable = 0x80085814; // type:func +Room_DecodeJpeg = 0x80085CDC; // type:func +Room_DrawBackground2D = 0x80085D64; // type:func +Room_DrawImageSingle = 0x80086060; // type:func +Room_GetImageMultiBgEntry = 0x80086430; // type:func +Room_DrawImageMulti = 0x8008651C; // type:func +Room_DrawImage = 0x800868EC; // type:func +Room_Init = 0x80086954; // type:func +Room_SetupFirstRoom = 0x8008696C; // type:func +Room_RequestNewRoom = 0x80086B08; // type:func +Room_ProcessRoomRequest = 0x80086C40; // type:func +Room_Draw = 0x80086CE4; // type:func +Room_FinishRoomChange = 0x80086D34; // type:func +Sample_HandleStateChange = 0x80086DD0; // type:func +Sample_Draw = 0x80086E04; // type:func +Sample_Main = 0x80086FF0; // type:func +Sample_Destroy = 0x8008701C; // type:func +Sample_SetupView = 0x80087028; // type:func +Sample_LoadTitleStatic = 0x800870E0; // type:func +Sample_Init = 0x80087140; // type:func +Inventory_ChangeEquipment = 0x800871D0; // type:func +Inventory_DeleteEquipment = 0x80087228; // type:func +Inventory_ChangeUpgrade = 0x80087334; // type:func +Object_SpawnPersistent = 0x80087390; // type:func +Object_InitContext = 0x80087474; // type:func +Object_UpdateEntries = 0x800875D0; // type:func +Object_GetSlot = 0x800876C8; // type:func +Object_IsLoaded = 0x80087728; // type:func +func_800981B8 = 0x80087758; // type:func +func_800982FC = 0x800877E0; // type:func +Scene_ExecuteCommands = 0x80087840; // type:func +Scene_CommandPlayerEntryList = 0x800878C4; // type:func +Scene_CommandActorEntryList = 0x800879A0; // type:func +Scene_CommandUnused2 = 0x800879F8; // type:func +Scene_CommandCollisionHeader = 0x80087A40; // type:func +Scene_CommandRoomList = 0x80087B70; // type:func +Scene_CommandSpawnList = 0x80087BC8; // type:func +Scene_CommandSpecialFiles = 0x80087C10; // type:func +Scene_CommandRoomBehavior = 0x80087CD8; // type:func +Scene_CommandRoomShape = 0x80087D30; // type:func +Scene_CommandObjectList = 0x80087D78; // type:func +Scene_CommandLightList = 0x80087F2C; // type:func +Scene_CommandPathList = 0x80087FDC; // type:func +Scene_CommandTransitionActorEntryList = 0x80088024; // type:func +Scene_ResetTransitionActorList = 0x8008807C; // type:func +Scene_CommandLightSettingsList = 0x8008808C; // type:func +Scene_CommandSkyboxSettings = 0x800880E4; // type:func +Scene_CommandSkyboxDisables = 0x80088128; // type:func +Scene_CommandTimeSettings = 0x80088150; // type:func +Scene_CommandWindSettings = 0x80088464; // type:func +Scene_CommandExitList = 0x800884C8; // type:func +Scene_CommandUndefined9 = 0x80088510; // type:func +Scene_CommandSoundSettings = 0x80088520; // type:func +Scene_CommandEchoSettings = 0x8008856C; // type:func +Scene_CommandAlternateHeaderList = 0x80088584; // type:func +Scene_CommandCutsceneData = 0x80088680; // type:func +Scene_CommandMiscSettings = 0x800886C0; // type:func +Scene_SetTransitionForNextEntrance = 0x80088784; // type:func +Scene_DrawConfigDefault = 0x80088840; // type:func +Scene_DrawConfigDekuTree = 0x80088880; // type:func +Scene_DrawConfigDekuTreeBoss = 0x800889C8; // type:func +Scene_DrawConfigDodongosCavern = 0x80088AAC; // type:func +Scene_DrawConfigTempleOfTime = 0x80088DD4; // type:func +Scene_DrawConfigGrottos = 0x800895EC; // type:func +Scene_DrawConfigChamberOfTheSages = 0x800898FC; // type:func +Scene_DrawConfigGreatFairyFountain = 0x80089B20; // type:func +Scene_DrawConfigGraveExitLightShining = 0x80089CB8; // type:func +Scene_DrawConfigFairysFountain = 0x80089D90; // type:func +Scene_DrawConfigShadowTempleAndWell = 0x80089EF4; // type:func +Scene_DrawConfigThievesHideout = 0x8008A080; // type:func +Scene_DrawConfigWaterTemple = 0x8008A168; // type:func +Scene_DrawConfigWaterTempleBoss = 0x8008A8D8; // type:func +Scene_DrawConfigShootingGallery = 0x8008A9F8; // type:func +Scene_DrawConfigCastleCourtyardGuards = 0x8008AAAC; // type:func +Scene_DrawConfigOutsideGanonsCastle = 0x8008AC24; // type:func +func_8009BEEC = 0x8008AEC0; // type:func +Scene_DrawConfigGanonsTowerCollapseExterior = 0x8008B080; // type:func +Scene_DrawConfigIceCavern = 0x8008B38C; // type:func +Scene_DrawConfigRoyalFamilysTomb = 0x8008B57C; // type:func +Scene_DrawConfigLakesideLaboratory = 0x8008B800; // type:func +Scene_DrawConfigCalmWater = 0x8008B9E0; // type:func +Scene_DrawConfigGerudoTrainingGround = 0x8008BAE8; // type:func +Gfx_TwoTexScrollPrimColor = 0x8008BCD8; // type:func +Scene_DrawConfigFishingPond = 0x8008BE38; // type:func +Scene_DrawConfigBombchuBowlingAlley = 0x8008BF64; // type:func +Scene_DrawConfigLonLonBuildings = 0x8008C168; // type:func +Scene_DrawConfigMarketGuardHouse = 0x8008C238; // type:func +Scene_DrawConfigPotionShopGranny = 0x8008C368; // type:func +Scene_DrawConfigForestTemple = 0x8008C4E0; // type:func +Scene_DrawConfigSpiritTemple = 0x8008C6D0; // type:func +Scene_DrawConfigHyruleField = 0x8008C740; // type:func +Scene_DrawConfigKakarikoVillage = 0x8008CA3C; // type:func +Scene_DrawConfigZorasRiver = 0x8008CB0C; // type:func +Scene_DrawConfigKokiriForest = 0x8008CD24; // type:func +Scene_DrawConfigLakeHylia = 0x8008D188; // type:func +Scene_DrawConfigZorasDomain = 0x8008D348; // type:func +Scene_DrawConfigZorasFountain = 0x8008D4A4; // type:func +Scene_DrawConfigGerudoValley = 0x8008D694; // type:func +Scene_DrawConfigLostWoods = 0x8008D9D0; // type:func +Scene_DrawConfigDesertColossus = 0x8008DBCC; // type:func +Scene_DrawConfigGerudosFortress = 0x8008DCD8; // type:func +Scene_DrawConfigHauntedWasteland = 0x8008DD48; // type:func +Scene_DrawConfigHyruleCastle = 0x8008DEC0; // type:func +Scene_DrawConfigDeathMountainTrail = 0x8008E064; // type:func +Scene_DrawConfigDeathMountainCrater = 0x8008E228; // type:func +Scene_DrawConfigGoronCity = 0x8008E3F4; // type:func +Scene_DrawConfigLonLonRanch = 0x8008E564; // type:func +Scene_DrawConfigFireTemple = 0x8008E634; // type:func +Scene_DrawConfigJabuJabu = 0x8008E7D8; // type:func +Scene_DrawConfigInsideGanonsCastle = 0x8008EC84; // type:func +Scene_DrawConfigInsideGanonsCastleCollapse = 0x8008EE88; // type:func +Scene_DrawConfigGanonsTowerCollapseInterior = 0x8008EEA8; // type:func +Scene_DrawConfigBesitu = 0x8008EEC8; // type:func +Scene_Draw = 0x8008F000; // type:func +SkelAnime_DrawLimbLod = 0x8008F040; // type:func +SkelAnime_DrawLod = 0x8008F2A8; // type:func +SkelAnime_DrawFlexLimbLod = 0x8008F498; // type:func +SkelAnime_DrawFlexLod = 0x8008F728; // type:func +SkelAnime_DrawLimbOpa = 0x8008F9A0; // type:func +SkelAnime_DrawOpa = 0x8008FBEC; // type:func +SkelAnime_DrawFlexLimbOpa = 0x8008FDCC; // type:func +SkelAnime_DrawFlexOpa = 0x80090044; // type:func +SkelAnime_GetFrameData = 0x800902A8; // type:func +Animation_GetLength = 0x80090410; // type:func +Animation_GetLastFrame = 0x8009044C; // type:func +SkelAnime_DrawLimb = 0x80090494; // type:func +SkelAnime_Draw = 0x800906D4; // type:func +SkelAnime_DrawFlexLimb = 0x800908C4; // type:func +SkelAnime_DrawFlex = 0x80090B54; // type:func +SkelAnime_GetFrameDataLegacy = 0x80090DBC; // type:func +Animation_GetLimbCountLegacy = 0x800911C0; // type:func +Animation_GetLengthLegacy = 0x800911FC; // type:func +Animation_GetLastFrameLegacy = 0x80091238; // type:func +SkelAnime_InterpFrameTable = 0x80091280; // type:func +AnimTaskQueue_Reset = 0x80091700; // type:func +AnimTaskQueue_SetNextGroup = 0x8009170C; // type:func +AnimTaskQueue_DisableTransformTasksForGroup = 0x8009172C; // type:func +AnimTaskQueue_NewTask = 0x80091754; // type:func +AnimTaskQueue_AddLoadPlayerFrame = 0x8009178C; // type:func +AnimTaskQueue_AddCopy = 0x80091888; // type:func +AnimTaskQueue_AddInterp = 0x800918F0; // type:func +AnimTaskQueue_AddCopyUsingMap = 0x80091960; // type:func +AnimTaskQueue_AddCopyUsingMapInverted = 0x800919D0; // type:func +AnimTaskQueue_AddActorMovement = 0x80091A40; // type:func +AnimTask_LoadPlayerFrame = 0x80091A9C; // type:func +AnimTask_Copy = 0x80091ACC; // type:func +AnimTask_Interp = 0x80091B3C; // type:func +AnimTask_CopyUsingMap = 0x80091B98; // type:func +AnimTask_CopyUsingMapInverted = 0x80091C18; // type:func +AnimTask_ActorMovement = 0x80091C9C; // type:func +AnimTaskQueue_Update = 0x80091D30; // type:func +SkelAnime_InitLink = 0x80091DD0; // type:func +LinkAnimation_SetUpdateFunction = 0x80091F34; // type:func +LinkAnimation_Update = 0x80091F6C; // type:func +LinkAnimation_Morph = 0x80091F90; // type:func +LinkAnimation_AnimateFrame = 0x8009204C; // type:func +LinkAnimation_Loop = 0x80092128; // type:func +LinkAnimation_Once = 0x800921C8; // type:func +Animation_SetMorph = 0x800922A4; // type:func +LinkAnimation_Change = 0x800922C8; // type:func +LinkAnimation_PlayOnce = 0x80092440; // type:func +LinkAnimation_PlayOnceSetSpeed = 0x800924A0; // type:func +LinkAnimation_PlayLoop = 0x80092504; // type:func +LinkAnimation_PlayLoopSetSpeed = 0x80092560; // type:func +LinkAnimation_CopyJointToMorph = 0x800925C0; // type:func +LinkAnimation_CopyMorphToJoint = 0x800925F0; // type:func +LinkAnimation_LoadToMorph = 0x80092620; // type:func +LinkAnimation_LoadToJoint = 0x80092664; // type:func +LinkAnimation_InterpJointMorph = 0x800926A8; // type:func +LinkAnimation_BlendToJoint = 0x800926E0; // type:func +LinkAnimation_BlendToMorph = 0x80092780; // type:func +LinkAnimation_EndLoop = 0x80092820; // type:func +Animation_OnFrameImpl = 0x80092844; // type:func +LinkAnimation_OnFrame = 0x800928FC; // type:func +SkelAnime_Init = 0x8009294C; // type:func +SkelAnime_InitFlex = 0x80092A50; // type:func +SkelAnime_InitSkin = 0x80092B5C; // type:func +SkelAnime_SetUpdate = 0x80092C3C; // type:func +SkelAnime_Update = 0x80092C88; // type:func +SkelAnime_Morph = 0x80092CAC; // type:func +SkelAnime_MorphTaper = 0x80092D6C; // type:func +SkelAnime_AnimateFrame = 0x80092EF4; // type:func +SkelAnime_LoopFull = 0x8009303C; // type:func +SkelAnime_LoopPartial = 0x800930DC; // type:func +SkelAnime_Once = 0x80093184; // type:func +Animation_ChangeImpl = 0x80093288; // type:func +Animation_Change = 0x80093444; // type:func +Animation_PlayOnce = 0x8009348C; // type:func +Animation_MorphToPlayOnce = 0x800934E4; // type:func +Animation_PlayOnceSetSpeed = 0x80093540; // type:func +Animation_PlayLoop = 0x8009359C; // type:func +Animation_MorphToLoop = 0x800935F0; // type:func +Animation_PlayLoopSetSpeed = 0x80093628; // type:func +Animation_EndLoop = 0x80093680; // type:func +Animation_Reverse = 0x800936AC; // type:func +SkelAnime_CopyFrameTableTrue = 0x800936D0; // type:func +SkelAnime_CopyFrameTableFalse = 0x80093738; // type:func +SkelAnime_UpdateTranslation = 0x800937A4; // type:func +Animation_OnFrame = 0x80093970; // type:func +SkelAnime_Free = 0x80093998; // type:func +SkelAnime_CopyFrameTable = 0x800939E4; // type:func +Skin_UpdateVertices = 0x80093A30; // type:func +Skin_ApplyLimbModifications = 0x80093BFC; // type:func +Skin_DrawAnimatedLimb = 0x80094068; // type:func +Skin_DrawLimb = 0x80094144; // type:func +Skin_DrawImpl = 0x8009426C; // type:func +func_800A6330 = 0x80094498; // type:func +func_800A6360 = 0x800944C8; // type:func +func_800A6394 = 0x800944FC; // type:func +func_800A63CC = 0x80094534; // type:func +Skin_GetLimbPos = 0x80094570; // type:func +Skin_InitAnimatedLimb = 0x800945D0; // type:func +Skin_Init = 0x800947AC; // type:func +Skin_Free = 0x8009497C; // type:func +func_800A698C = 0x80094A50; // type:func +Skin_ApplyAnimTransformations = 0x80094B8C; // type:func +SkinMatrix_Vec3fMtxFMultXYZW = 0x80094EE0; // type:func +SkinMatrix_Vec3fMtxFMultXYZ = 0x80094FC8; // type:func +SkinMatrix_MtxFMtxFMult = 0x80095078; // type:func +SkinMatrix_GetClear = 0x800953D4; // type:func +SkinMatrix_Clear = 0x800953E8; // type:func +SkinMatrix_MtxFCopy = 0x80095440; // type:func +SkinMatrix_Invert = 0x800954C8; // type:func +SkinMatrix_SetScale = 0x80095768; // type:func +SkinMatrix_SetRotateZYX = 0x800957CC; // type:func +SkinMatrix_SetRotateYXZ = 0x8009595C; // type:func +SkinMatrix_SetTranslate = 0x80095AEC; // type:func +SkinMatrix_SetTranslateRotateZYXScale = 0x80095B50; // type:func +SkinMatrix_SetTranslateRotateYXZScale = 0x80095BD4; // type:func +SkinMatrix_SetTranslateRotateZYX = 0x80095C58; // type:func +SkinMatrix_Vec3fToVec3s = 0x80095CB8; // type:func +SkinMatrix_Vec3sToVec3f = 0x80095CFC; // type:func +SkinMatrix_MtxFToMtx = 0x80095D40; // type:func +SkinMatrix_MtxFToNewMtx = 0x80095F58; // type:func +SkinMatrix_SetRotateAxis = 0x80095FA0; // type:func +func_800A8030 = 0x80096110; // type:func +Sram_InitNewSave = 0x800962D0; // type:func +Sram_InitDebugSave = 0x80096420; // type:func +Sram_OpenSave = 0x800965E8; // type:func +Sram_WriteSave = 0x80096934; // type:func +Sram_VerifyAndLoadAllSaves = 0x80096A78; // type:func +Sram_InitSave = 0x80096F04; // type:func +Sram_EraseSave = 0x800971CC; // type:func +Sram_CopySave = 0x800972E0; // type:func +Sram_WriteSramHeader = 0x80097504; // type:func +Sram_InitSram = 0x80097530; // type:func +Sram_Alloc = 0x800975F4; // type:func +Sram_Init = 0x80097624; // type:func +SsSram_Init = 0x80097630; // type:func +SsSram_Dma = 0x80097708; // type:func +SsSram_ReadWrite = 0x80097794; // type:func +Rumble_Update = 0x80097800; // type:func +Rumble_Override = 0x8009783C; // type:func +Rumble_Request = 0x800978D8; // type:func +Rumble_Init = 0x80097994; // type:func +Rumble_Destroy = 0x800979D0; // type:func +Rumble_Controller1HasRumblePak = 0x80097A28; // type:func +Rumble_Reset = 0x80097A40; // type:func +Rumble_ClearRequests = 0x80097A54; // type:func +Rumble_SetUpdateEnabled = 0x80097A64; // type:func +View_ViewportToVp = 0x80097A80; // type:func +View_New = 0x80097AEC; // type:func +View_Free = 0x80097B38; // type:func +View_Init = 0x80097B58; // type:func +View_LookAt = 0x80097C18; // type:func +View_LookAtUnsafe = 0x80097CB4; // type:func +View_SetScale = 0x80097D04; // type:func +View_GetScale = 0x80097D24; // type:func +View_SetPerspective = 0x80097D34; // type:func +View_GetPerspective = 0x80097D64; // type:func +View_SetOrtho = 0x80097D84; // type:func +View_GetOrtho = 0x80097DC0; // type:func +View_SetViewport = 0x80097DE0; // type:func +View_GetViewport = 0x80097E14; // type:func +View_ApplyLetterbox = 0x80097E3C; // type:func +View_SetDistortionOrientation = 0x80097F7C; // type:func +View_SetDistortionScale = 0x80097FA0; // type:func +View_SetDistortionSpeed = 0x80097FC4; // type:func +View_InitDistortion = 0x80097FD8; // type:func +View_ClearDistortion = 0x8009803C; // type:func +View_SetDistortion = 0x80098070; // type:func +View_StepDistortion = 0x800980C4; // type:func +View_Apply = 0x8009827C; // type:func +View_ApplyPerspective = 0x800982C8; // type:func +View_ApplyOrtho = 0x800985BC; // type:func +View_ApplyOrthoToOverlay = 0x80098768; // type:func +View_ApplyPerspectiveToOverlay = 0x8009899C; // type:func +View_UpdateViewingMatrix = 0x80098CEC; // type:func +View_ApplyTo = 0x80098D58; // type:func +ViMode_LogPrint = 0x80099180; // type:func +ViMode_Configure = 0x8009918C; // type:func +ViMode_Save = 0x80099734; // type:func +ViMode_Load = 0x80099814; // type:func +ViMode_Init = 0x8009989C; // type:func +ViMode_Destroy = 0x80099904; // type:func +ViMode_ConfigureFeatures = 0x80099910; // type:func +ViMode_Update = 0x80099974; // type:func +VisCvg_Init = 0x80099CF0; // type:func +VisCvg_Destroy = 0x80099D14; // type:func +VisCvg_Draw = 0x80099D20; // type:func +VisMono_Init = 0x80099E90; // type:func +VisMono_Destroy = 0x80099EE0; // type:func +VisMono_DesaturateTLUT = 0x80099F04; // type:func +VisMono_DesaturateDList = 0x8009A218; // type:func +VisMono_Draw = 0x8009A448; // type:func +VisMono_DrawOld = 0x8009A63C; // type:func +VisZBuf_Init = 0x8009A6B0; // type:func +VisZBuf_Destroy = 0x8009A6E4; // type:func +VisZBuf_Draw = 0x8009A6F0; // type:func +Skybox_CalculateFace256 = 0x8009A940; // type:func +Skybox_CalculateFace128 = 0x8009B050; // type:func +Skybox_Calculate256 = 0x8009BD58; // type:func +Skybox_Calculate128 = 0x8009BF08; // type:func +Skybox_Setup = 0x8009BFA8; // type:func +Skybox_Init = 0x8009D0FC; // type:func +Skybox_UpdateMatrix = 0x8009D210; // type:func +Skybox_Draw = 0x8009D298; // type:func +Skybox_Update = 0x8009D8E0; // type:func +PlayerCall_InitFuncPtrs = 0x8009D8F0; // type:func +PlayerCall_Init = 0x8009D958; // type:func +PlayerCall_Destroy = 0x8009D9A0; // type:func +PlayerCall_Update = 0x8009D9E0; // type:func +PlayerCall_Draw = 0x8009DA20; // type:func +TransitionTile_InitGraphics = 0x8009DA60; // type:func +TransitionTile_InitVtxData = 0x8009DE2C; // type:func +TransitionTile_Destroy = 0x8009DEEC; // type:func +TransitionTile_Init = 0x8009DF78; // type:func +TransitionTile_SetVtx = 0x8009E0F0; // type:func +TransitionTile_Draw = 0x8009E204; // type:func +TransitionTile_Suck = 0x8009E330; // type:func +TransitionTile_Update = 0x8009E464; // type:func +func_800B23F0 = 0x8009E470; // type:func +TransitionTriforce_Start = 0x8009E480; // type:func +TransitionTriforce_Init = 0x8009E4B8; // type:func +TransitionTriforce_Destroy = 0x8009E558; // type:func +TransitionTriforce_Update = 0x8009E564; // type:func +TransitionTriforce_SetColor = 0x8009E678; // type:func +TransitionTriforce_SetType = 0x8009E684; // type:func +TransitionTriforce_SetState = 0x8009E690; // type:func +TransitionTriforce_Draw = 0x8009E69C; // type:func +TransitionTriforce_IsDone = 0x8009E9AC; // type:func +TransitionWipe_Start = 0x8009EA40; // type:func +TransitionWipe_Init = 0x8009EAF8; // type:func +TransitionWipe_Destroy = 0x8009EB24; // type:func +TransitionWipe_Update = 0x8009EB30; // type:func +TransitionWipe_Draw = 0x8009EC10; // type:func +TransitionWipe_IsDone = 0x8009EE4C; // type:func +TransitionWipe_SetType = 0x8009EE58; // type:func +TransitionWipe_SetColor = 0x8009EE98; // type:func +TransitionWipe_SetUnkColor = 0x8009EEA4; // type:func +TransitionCircle_Start = 0x8009EEB0; // type:func +TransitionCircle_Init = 0x8009F09C; // type:func +TransitionCircle_Destroy = 0x8009F0C8; // type:func +TransitionCircle_Update = 0x8009F0D4; // type:func +TransitionCircle_Draw = 0x8009F258; // type:func +TransitionCircle_IsDone = 0x8009F4F4; // type:func +TransitionCircle_SetType = 0x8009F500; // type:func +TransitionCircle_SetColor = 0x8009F558; // type:func +TransitionCircle_SetUnkColor = 0x8009F564; // type:func +TransitionFade_Start = 0x8009F570; // type:func +TransitionFade_Init = 0x8009F5CC; // type:func +TransitionFade_Destroy = 0x8009F5F8; // type:func +TransitionFade_Update = 0x8009F604; // type:func +TransitionFade_Draw = 0x8009F794; // type:func +TransitionFade_IsDone = 0x8009F860; // type:func +TransitionFade_SetColor = 0x8009F86C; // type:func +TransitionFade_SetType = 0x8009F878; // type:func +Letterbox_SetSizeTarget = 0x8009F8D0; // type:func +Letterbox_GetSizeTarget = 0x8009F8E0; // type:func +Letterbox_SetSize = 0x8009F8F0; // type:func +Letterbox_GetSize = 0x8009F900; // type:func +Letterbox_Init = 0x8009F910; // type:func +Letterbox_Destroy = 0x8009F930; // type:func +Letterbox_Update = 0x8009F940; // type:func +func_800BB0A0 = 0x8009FA40; // type:func +func_800BB2B4 = 0x8009FC54; // type:func +KaleidoManager_LoadOvl = 0x8009FF10; // type:func +KaleidoManager_ClearOvl = 0x8009FF6C; // type:func +KaleidoManager_Init = 0x8009FFBC; // type:func +KaleidoManager_Destroy = 0x800A002C; // type:func +KaleidoManager_GetRamAddr = 0x800A006C; // type:func +KaleidoScopeCall_LoadPlayer = 0x800A0140; // type:func +KaleidoScopeCall_Init = 0x800A018C; // type:func +KaleidoScopeCall_Destroy = 0x800A01D8; // type:func +KaleidoScopeCall_Update = 0x800A01F8; // type:func +KaleidoScopeCall_Draw = 0x800A0398; // type:func +Play_RequestViewpointBgCam = 0x800A0420; // type:func +Play_SetViewpoint = 0x800A0460; // type:func +Play_CheckViewpoint = 0x800A050C; // type:func +Play_SetShopBrowsingViewpoint = 0x800A0534; // type:func +Play_SetupTransition = 0x800A0560; // type:func +func_800BC88C = 0x800A080C; // type:func +Play_SetFog = 0x800A0824; // type:func +Play_Destroy = 0x800A0870; // type:func +Play_Init = 0x800A09DC; // type:func +Play_Update = 0x800A1158; // type:func +Play_DrawOverlayElements = 0x800A224C; // type:func +Play_Draw = 0x800A22E4; // type:func +Play_Main = 0x800A2D28; // type:func +Play_InCsMode = 0x800A2D68; // type:func +func_800BFCB8 = 0x800A2D9C; // type:func +Play_LoadFile = 0x800A2F48; // type:func +Play_InitEnvironment = 0x800A2FA4; // type:func +Play_InitScene = 0x800A2FEC; // type:func +Play_SpawnScene = 0x800A30F0; // type:func +Play_GetScreenPos = 0x800A3198; // type:func +Play_CreateSubCamera = 0x800A325C; // type:func +Play_GetActiveCamId = 0x800A330C; // type:func +Play_ChangeCameraStatus = 0x800A3318; // type:func +Play_ClearCamera = 0x800A3388; // type:func +Play_ClearAllSubCameras = 0x800A33F0; // type:func +Play_GetCamera = 0x800A345C; // type:func +Play_SetCameraAtEye = 0x800A3494; // type:func +Play_SetCameraAtEyeUp = 0x800A35A4; // type:func +Play_SetCameraFov = 0x800A36C8; // type:func +Play_SetCameraRoll = 0x800A3710; // type:func +Play_CopyCamera = 0x800A375C; // type:func +Play_InitCameraDataUsingPlayer = 0x800A37D8; // type:func +Play_RequestCameraSetting = 0x800A3848; // type:func +Play_ReturnToMainCam = 0x800A3884; // type:func +Play_GetCameraUID = 0x800A3960; // type:func +func_800C09D8 = 0x800A3994; // type:func +Play_SaveSceneFlags = 0x800A3A00; // type:func +Play_SetRespawnData = 0x800A3A48; // type:func +Play_SetupRespawnPoint = 0x800A3AB8; // type:func +Play_TriggerVoidOut = 0x800A3B24; // type:func +Play_LoadToLastEntrance = 0x800A3B7C; // type:func +Play_TriggerRespawn = 0x800A3C50; // type:func +Play_CamIsNotFixed = 0x800A3C84; // type:func +FrameAdvance_IsEnabled = 0x800A3CF4; // type:func +func_800C0D34 = 0x800A3D04; // type:func +func_800C0DB4 = 0x800A3D84; // type:func +PreRender_SetValuesSave = 0x800A3E40; // type:func +PreRender_Init = 0x800A3E7C; // type:func +PreRender_SetValues = 0x800A3EB0; // type:func +PreRender_Destroy = 0x800A3EE4; // type:func +PreRender_CopyImage = 0x800A3F08; // type:func +PreRender_CopyImageRegionImpl = 0x800A41D0; // type:func +func_800C170C = 0x800A4618; // type:func +func_800C1AE8 = 0x800A4994; // type:func +PreRender_CoverageRgba16ToI8 = 0x800A49D0; // type:func +PreRender_SaveZBuffer = 0x800A4CE8; // type:func +PreRender_SaveFramebuffer = 0x800A4D20; // type:func +PreRender_FetchFbufCoverage = 0x800A4D58; // type:func +PreRender_DrawCoverage = 0x800A4E70; // type:func +PreRender_RestoreZBuffer = 0x800A4EB4; // type:func +func_800C213C = 0x800A4ED8; // type:func +PreRender_RestoreFramebuffer = 0x800A5208; // type:func +PreRender_CopyImageRegion = 0x800A522C; // type:func +PreRender_AntiAliasFilter = 0x800A524C; // type:func +PreRender_DivotFilter = 0x800A5D0C; // type:func +PreRender_ApplyFilters = 0x800A5E60; // type:func +THGA_Init = 0x800A5F30; // type:func +THGA_Destroy = 0x800A5F50; // type:func +THGA_IsCrash = 0x800A5F70; // type:func +THGA_Reset = 0x800A5F90; // type:func +THGA_GetRemaining = 0x800A5FB0; // type:func +THGA_GetHead = 0x800A5FD0; // type:func +THGA_SetHead = 0x800A5FF0; // type:func +THGA_GetTail = 0x800A6010; // type:func +THGA_AllocDisplayList = 0x800A6030; // type:func +THGA_AllocGfx = 0x800A6054; // type:func +THGA_AllocGfx2 = 0x800A6074; // type:func +THGA_AllocTail = 0x800A6094; // type:func +THGA_AllocMtxArray = 0x800A60B4; // type:func +THGA_AllocMtx = 0x800A60D8; // type:func +THGA_AllocVtxArray = 0x800A60F8; // type:func +THGA_AllocVtx = 0x800A611C; // type:func +THA_GetHead = 0x800A6140; // type:func +THA_SetHead = 0x800A614C; // type:func +THA_GetTail = 0x800A6158; // type:func +THA_AllocHead = 0x800A6164; // type:func +THA_AllocHeadByte = 0x800A6178; // type:func +THA_AllocTail = 0x800A6198; // type:func +THA_AllocTailAlign16 = 0x800A6228; // type:func +THA_AllocTailAlign = 0x800A6248; // type:func +THA_GetRemaining = 0x800A6264; // type:func +THA_IsCrash = 0x800A6278; // type:func +THA_Reset = 0x800A629C; // type:func +THA_Init = 0x800A62B8; // type:func +THA_Destroy = 0x800A62DC; // type:func +AudioMgr_StopAllSfx = 0x800A6300; // type:func +AudioMgr_NotifyTaskDone = 0x800A6350; // type:func +AudioMgr_HandleRetrace = 0x800A6388; // type:func +AudioMgr_HandlePreNMI = 0x800A6510; // type:func +AudioMgr_ThreadEntry = 0x800A6534; // type:func +AudioMgr_WaitForInit = 0x800A6664; // type:func +AudioMgr_Init = 0x800A6690; // type:func +Setup_InitImpl = 0x800A6760; // type:func +Setup_Destroy = 0x800A679C; // type:func +Setup_Init = 0x800A67A8; // type:func +GameState_SetFBFilter = 0x800A67D0; // type:func +func_800C4344 = 0x800A6924; // type:func +GameState_Draw = 0x800A6930; // type:func +GameState_SetFrameBuffer = 0x800A6A28; // type:func +func_800C49F4 = 0x800A6B0C; // type:func +GameState_ReqPadData = 0x800A6B84; // type:func +GameState_Update = 0x800A6BB4; // type:func +GameState_InitArena = 0x800A6C30; // type:func +GameState_Realloc = 0x800A6CA0; // type:func +GameState_Init = 0x800A6D60; // type:func +GameState_Destroy = 0x800A6E58; // type:func +GameState_GetInit = 0x800A6F08; // type:func +GameState_GetSize = 0x800A6F14; // type:func +GameState_IsRunning = 0x800A6F20; // type:func +GameState_GetArenaSize = 0x800A6F2C; // type:func +GameAlloc_Log = 0x800A6F50; // type:func +GameAlloc_Malloc = 0x800A6F70; // type:func +GameAlloc_Free = 0x800A6FDC; // type:func +GameAlloc_Cleanup = 0x800A7028; // type:func +GameAlloc_Init = 0x800A7078; // type:func +Graph_InitTHGA = 0x800A7090; // type:func +Graph_GetNextGameState = 0x800A71A8; // type:func +Graph_Init = 0x800A7258; // type:func +Graph_Destroy = 0x800A72C8; // type:func +Graph_TaskSet00 = 0x800A72D4; // type:func +Graph_Update = 0x800A7618; // type:func +Graph_ThreadEntry = 0x800A78CC; // type:func +Graph_Alloc = 0x800A79C4; // type:func +Graph_Alloc2 = 0x800A79F8; // type:func +Gfx_Open = 0x800A7A30; // type:func +Gfx_Close = 0x800A7A3C; // type:func +Gfx_Alloc = 0x800A7A54; // type:func +ListAlloc_Init = 0x800A7A90; // type:func +ListAlloc_Alloc = 0x800A7AA4; // type:func +ListAlloc_Free = 0x800A7B10; // type:func +ListAlloc_FreeAll = 0x800A7B90; // type:func +Main = 0x800A7BE0; // type:func +PadMgr_AcquireSerialEventQueue = 0x800A7F40; // type:func +PadMgr_ReleaseSerialEventQueue = 0x800A7F70; // type:func +PadMgr_LockPadData = 0x800A7F98; // type:func +PadMgr_UnlockPadData = 0x800A7FC4; // type:func +PadMgr_UpdateRumble = 0x800A7FF0; // type:func +PadMgr_RumbleStop = 0x800A8240; // type:func +PadMgr_RumbleReset = 0x800A82D8; // type:func +PadMgr_RumbleSetSingle = 0x800A82E8; // type:func +PadMgr_RumbleSet = 0x800A8300; // type:func +PadMgr_UpdateInputs = 0x800A8330; // type:func +PadMgr_HandleRetrace = 0x800A8510; // type:func +PadMgr_HandlePreNMI = 0x800A86A8; // type:func +PadMgr_RequestPadData = 0x800A86CC; // type:func +PadMgr_ThreadEntry = 0x800A8848; // type:func +PadMgr_Init = 0x800A8944; // type:func +Sched_SwapFrameBufferImpl = 0x800A8A40; // type:func +Sched_SwapFrameBuffer = 0x800A8AB0; // type:func +Sched_HandlePreNMI = 0x800A8B00; // type:func +Sched_HandleNMI = 0x800A8B0C; // type:func +Sched_QueueTask = 0x800A8B30; // type:func +Sched_Yield = 0x800A8B9C; // type:func +Sched_GfxTaskFramebufferValid = 0x800A8BD0; // type:func +Sched_Schedule = 0x800A8C94; // type:func +Sched_SetNextFramebufferFromTask = 0x800A8DC8; // type:func +Sched_TaskComplete = 0x800A8E14; // type:func +Sched_RunTask = 0x800A8E8C; // type:func +Sched_HandleNotification = 0x800A8FF0; // type:func +Sched_HandleRetrace = 0x800A90E0; // type:func +Sched_HandleRSPDone = 0x800A91B8; // type:func +Sched_HandleRDPDone = 0x800A93CC; // type:func +Sched_Notify = 0x800A9494; // type:func +Sched_ThreadEntry = 0x800A94B8; // type:func +Sched_Init = 0x800A95EC; // type:func +SpeedMeter_InitImpl = 0x800A96C0; // type:func +SpeedMeter_Init = 0x800A96D0; // type:func +SpeedMeter_Destroy = 0x800A96F4; // type:func +SpeedMeter_DrawTimeEntries = 0x800A9700; // type:func +SpeedMeter_InitAllocEntry = 0x800A9BC4; // type:func +SpeedMeter_DrawAllocEntry = 0x800A9C08; // type:func +SpeedMeter_DrawAllocEntries = 0x800A9E5C; // type:func +SysCfb_Init = 0x800AA100; // type:func +SysCfb_Reset = 0x800AA1C8; // type:func +SysCfb_GetFbPtr = 0x800AA1E8; // type:func +SysCfb_GetFbEnd = 0x800AA210; // type:func +Math_FactorialF = 0x800AA220; // type:func +Math_Factorial = 0x800AA320; // type:func +Math_PowF = 0x800AA3E4; // type:func +Math_SinF = 0x800AA40C; // type:func +Math_CosF = 0x800AA460; // type:func +Math3D_PlaneVsLineSegClosestPoint = 0x800AA4C0; // type:func +Math3D_LineVsLineClosestTwoPoints = 0x800AA5E0; // type:func +Math3D_LineClosestToPoint = 0x800AA88C; // type:func +Math3D_FindPointOnPlaneIntersect = 0x800AA978; // type:func +Math3D_PlaneVsPlaneNewLine = 0x800AA9D8; // type:func +Math3D_PlaneVsPlaneVsLineClosestPoint = 0x800AABB8; // type:func +Math3D_PointOnInfiniteLine = 0x800AAC34; // type:func +Math3D_LineSplitRatio = 0x800AAC80; // type:func +Math3D_Cos = 0x800AACCC; // type:func +Math3D_CosOut = 0x800AACF0; // type:func +Math3D_Vec3fReflect = 0x800AADA8; // type:func +Math3D_PointInSquare2D = 0x800AAE7C; // type:func +Math3D_CirSquareVsTriSquare = 0x800AAEE0; // type:func +Math3D_SphCubeVsTriCube = 0x800AB020; // type:func +Math3D_Dist1DSq = 0x800AB244; // type:func +Math3D_Dist1D = 0x800AB25C; // type:func +Math3D_Dist2DSq = 0x800AB280; // type:func +Math3D_Dist2D = 0x800AB2C4; // type:func +Math3D_Vec3fMagnitudeSq = 0x800AB2F4; // type:func +Math3D_Vec3fMagnitude = 0x800AB320; // type:func +Math3D_Vec3fDistSq = 0x800AB348; // type:func +Math3D_Vec3f_DistXYZ = 0x800AB370; // type:func +Math3D_DistXYZ16toF = 0x800AB390; // type:func +Math3D_Vec3fDiff_CrossZ = 0x800AB408; // type:func +Math3D_Vec3fDiff_CrossX = 0x800AB448; // type:func +Math3D_Vec3fDiff_CrossY = 0x800AB488; // type:func +Math3D_Vec3f_Cross = 0x800AB4C8; // type:func +Math3D_SurfaceNorm = 0x800AB53C; // type:func +Math3D_PointRelativeToCubeFaces = 0x800AB5A4; // type:func +Math3D_PointRelativeToCubeEdges = 0x800AB650; // type:func +Math3D_PointRelativeToCubeVertices = 0x800AB800; // type:func +Math3D_LineVsCube = 0x800AB97C; // type:func +Math3D_LineVsCubeShort = 0x800AC3F4; // type:func +Math3D_RotateXZPlane = 0x800AC560; // type:func +Math3D_DefPlane = 0x800AC5EC; // type:func +Math3D_Planef = 0x800AC700; // type:func +Math3D_Plane = 0x800AC740; // type:func +Math3D_UDistPlaneToPos = 0x800AC77C; // type:func +Math3D_DistPlaneToPos = 0x800AC7B4; // type:func +Math3D_TriChkPointParaYImpl = 0x800AC838; // type:func +Math3D_TriChkPointParaYDeterminate = 0x800ACB54; // type:func +Math3D_TriChkPointParaYSlopedY = 0x800ACB9C; // type:func +Math3D_TriChkPointParaYIntersectDist = 0x800ACBEC; // type:func +Math3D_TriChkPointParaYIntersectInsideTri = 0x800ACC9C; // type:func +Math3D_TriChkPointParaY = 0x800ACD48; // type:func +Math3D_TriChkLineSegParaYIntersect = 0x800ACDC4; // type:func +Math3D_TriChkPointParaYDist = 0x800ACF38; // type:func +Math3D_TriChkPointParaXImpl = 0x800ACFAC; // type:func +Math3D_TriChkPointParaXDeterminate = 0x800AD2C8; // type:func +Math3D_TriChkPointParaXIntersect = 0x800AD310; // type:func +Math3D_TriChkPointParaX = 0x800AD3C4; // type:func +Math3D_TriChkLineSegParaXIntersect = 0x800AD440; // type:func +Math3D_TriChkPointParaXDist = 0x800AD5C8; // type:func +Math3D_TriChkPointParaZImpl = 0x800AD63C; // type:func +Math3D_TriChkPointParaZDeterminate = 0x800AD984; // type:func +Math3D_TriChkPointParaZIntersect = 0x800AD9CC; // type:func +Math3D_TriChkPointParaZ = 0x800ADA80; // type:func +Math3D_TriChkLineSegParaZIntersect = 0x800ADAFC; // type:func +Math3D_TriChkLineSegParaZDist = 0x800ADC88; // type:func +Math3D_LineSegFindPlaneIntersect = 0x800ADCFC; // type:func +Math3D_LineSegVsPlane = 0x800ADDD8; // type:func +Math3D_TriLineIntersect = 0x800ADEE0; // type:func +Math3D_TriNorm = 0x800AE044; // type:func +Math3D_PointInSph = 0x800AE0F4; // type:func +Math3D_PointDistSqToLine2D = 0x800AE144; // type:func +Math3D_LineVsSph = 0x800AE28C; // type:func +Math3D_GetSphVsTriIntersectPoint = 0x800AE494; // type:func +Math3D_TriVsSphIntersect = 0x800AE5D4; // type:func +Math3D_PointInCyl = 0x800AE9F4; // type:func +Math3D_CylVsLineSeg = 0x800AEAB0; // type:func +Math3D_CylTriVsIntersect = 0x800AF478; // type:func +Math3D_CylVsTri = 0x800AF8F8; // type:func +Math3D_SphVsSph = 0x800AF918; // type:func +Math3D_SphVsSphOverlap = 0x800AF938; // type:func +Math3D_SphVsSphOverlapCenterDist = 0x800AF958; // type:func +Math3D_SphVsCylOverlap = 0x800AFA30; // type:func +Math3D_SphVsCylOverlapCenterDist = 0x800AFA50; // type:func +Math3D_CylVsCylOverlap = 0x800AFBC0; // type:func +Math3D_CylVsCylOverlapCenterDist = 0x800AFBE0; // type:func +Math3D_TriVsTriIntersect = 0x800AFDB0; // type:func +Math3D_XZInSphere = 0x800B0130; // type:func +Math3D_XYInSphere = 0x800B01A4; // type:func +Math3D_YZInSphere = 0x800B0218; // type:func +Math_GetAtan2Tbl = 0x800B0290; // type:func +Math_Atan2S = 0x800B0308; // type:func +Math_Atan2F = 0x800B0480; // type:func +Matrix_Init = 0x800B04C0; // type:func +Matrix_Push = 0x800B04FC; // type:func +Matrix_Pop = 0x800B0534; // type:func +Matrix_Get = 0x800B0550; // type:func +Matrix_Put = 0x800B0574; // type:func +Matrix_GetCurrent = 0x800B059C; // type:func +Matrix_Mult = 0x800B05AC; // type:func +Matrix_Translate = 0x800B0604; // type:func +Matrix_Scale = 0x800B070C; // type:func +Matrix_RotateX = 0x800B07F0; // type:func +Matrix_RotateY = 0x800B09A4; // type:func +Matrix_RotateZ = 0x800B0B5C; // type:func +Matrix_RotateZYX = 0x800B0D10; // type:func +Matrix_TranslateRotateZYX = 0x800B0FCC; // type:func +Matrix_SetTranslateRotateYXZ = 0x800B1320; // type:func +Matrix_MtxFToMtx = 0x800B14CC; // type:func +Matrix_ToMtx = 0x800B16E8; // type:func +Matrix_Finalize = 0x800B1710; // type:func +Matrix_MtxFToNewMtx = 0x800B173C; // type:func +Matrix_MultVec3f = 0x800B1768; // type:func +Matrix_MtxFCopy = 0x800B1820; // type:func +Matrix_MtxToMtxF = 0x800B1928; // type:func +Matrix_MultVec3fExt = 0x800B1B7C; // type:func +Matrix_Transpose = 0x800B1C2C; // type:func +Matrix_ReplaceRotation = 0x800B1C64; // type:func +Matrix_MtxFToYXZRotS = 0x800B1D60; // type:func +Matrix_MtxFToZYXRotS = 0x800B1EF8; // type:func +Matrix_RotateAxis = 0x800B2090; // type:func +Matrix_SetTranslateUniformScaleMtxF = 0x800B24F8; // type:func +Matrix_SetTranslateUniformScaleMtx = 0x800B2560; // type:func +Matrix_SetTranslateUniformScaleMtx2 = 0x800B25B0; // type:func +Matrix_SetTranslateScaleMtx1 = 0x800B26A0; // type:func +Matrix_SetTranslateScaleMtx2 = 0x800B27C0; // type:func +SysUcode_GetUCodeBoot = 0x800B28C0; // type:func +SysUcode_GetUCodeBootSize = 0x800B28D0; // type:func +SysUcode_GetUCode = 0x800B28EC; // type:func +SysUcode_GetUCodeData = 0x800B28FC; // type:func +RumbleMgr_Update = 0x800B2910; // type:func +RumbleMgr_Init = 0x800B2C20; // type:func +RumbleMgr_Destroy = 0x800B2C58; // type:func +func_800D31A0 = 0x800B2C70; // type:func +IrqMgr_AddClient = 0x800B2CA0; // type:func +IrqMgr_RemoveClient = 0x800B2D2C; // type:func +IrqMgr_SendMesgToClients = 0x800B2DB8; // type:func +IrqMgr_JamMesgToClients = 0x800B2E1C; // type:func +IrqMgr_HandlePreNMI = 0x800B2E80; // type:func +IrqMgr_CheckStacks = 0x800B2F18; // type:func +IrqMgr_HandlePreNMI450 = 0x800B2F38; // type:func +IrqMgr_HandlePreNMI480 = 0x800B2FB4; // type:func +IrqMgr_HandlePreNMI500 = 0x800B3048; // type:func +IrqMgr_HandleRetrace = 0x800B306C; // type:func +IrqMgr_ThreadEntry = 0x800B3124; // type:func +IrqMgr_Init = 0x800B31F8; // type:func +Fault_SleepImpl = 0x800B32C0; // type:func +Fault_ClientProcessThread = 0x800B3330; // type:func +Fault_ClientRunTask = 0x800B33A4; // type:func +Fault_ProcessClient = 0x800B3528; // type:func +Fault_AddClient = 0x800B357C; // type:func +Fault_RemoveClient = 0x800B3660; // type:func +Fault_AddAddrConvClient = 0x800B3758; // type:func +Fault_RemoveAddrConvClient = 0x800B3830; // type:func +Fault_ConvertAddress = 0x800B3928; // type:func +Fault_Sleep = 0x800B39DC; // type:func +Fault_PadCallback = 0x800B3A18; // type:func +Fault_UpdatePadImpl = 0x800B3A54; // type:func +Fault_WaitForInputImpl = 0x800B3AA0; // type:func +Fault_WaitForInput = 0x800B3BEC; // type:func +Fault_DrawRec = 0x800B3C38; // type:func +Fault_FillScreenBlack = 0x800B3C98; // type:func +Fault_FillScreenRed = 0x800B3CEC; // type:func +Fault_DrawCornerRec = 0x800B3D40; // type:func +Fault_PrintFReg = 0x800B3D94; // type:func +Fault_LogFReg = 0x800B3E40; // type:func +Fault_PrintFPCSR = 0x800B3EF0; // type:func +Fault_LogFPCSR = 0x800B3F94; // type:func +Fault_PrintThreadContext = 0x800B402C; // type:func +Fault_LogThreadContext = 0x800B4348; // type:func +Fault_FindFaultedThread = 0x800B4644; // type:func +Fault_Wait5Seconds = 0x800B46CC; // type:func +Fault_WaitForButtonCombo = 0x800B475C; // type:func +Fault_DrawMemDumpContents = 0x800B4A28; // type:func +Fault_DrawMemDump = 0x800B4B94; // type:func +Fault_WalkStack = 0x800B4D98; // type:func +Fault_DrawStackTrace = 0x800B4F28; // type:func +Fault_LogStackTrace = 0x800B50A8; // type:func +Fault_ResumeThread = 0x800B5218; // type:func +Fault_DisplayFrameBuffer = 0x800B5294; // type:func +Fault_ProcessClients = 0x800B5354; // type:func +Fault_UpdatePad = 0x800B5434; // type:func +Fault_ThreadEntry = 0x800B5470; // type:func +Fault_SetFrameBuffer = 0x800B57D0; // type:func +Fault_Init = 0x800B5824; // type:func +Fault_HungupFaultClient = 0x800B5958; // type:func +Fault_AddHungupAndCrashImpl = 0x800B5A54; // type:func +Fault_AddHungupAndCrash = 0x800B5AAC; // type:func +Fault_SetOsSyncPrintfEnabled = 0x800B5B10; // type:func +Fault_DrawRecImpl = 0x800B5B20; // type:func +Fault_DrawChar = 0x800B5C3C; // type:func +Fault_ColorToPrintColor = 0x800B5DAC; // type:func +Fault_UpdatePrintColor = 0x800B5E5C; // type:func +Fault_SetForeColor = 0x800B5EFC; // type:func +Fault_SetBackColor = 0x800B5F44; // type:func +Fault_SetFontColor = 0x800B5F8C; // type:func +Fault_SetCharPad = 0x800B5FD4; // type:func +Fault_SetCursor = 0x800B6004; // type:func +Fault_FillScreen = 0x800B60FC; // type:func +Fault_PrintCallback = 0x800B618C; // type:func +Fault_VPrintf = 0x800B6398; // type:func +Fault_Printf = 0x800B63E8; // type:func +Fault_DrawText = 0x800B6438; // type:func +Fault_SetDrawerFB = 0x800B6488; // type:func +Fault_SetInputCallback = 0x800B64B4; // type:func +Fault_WritebackFBDCache = 0x800B64C4; // type:func +Fault_InitDrawer = 0x800B6520; // type:func +Kanji_OffsetFromShiftJIS = 0x800B6590; // type:func +AudioSynth_InitNextRingBuf = 0x800B7080; // type:func +func_800DB03C = 0x800B73FC; // type:func +AudioSynth_Update = 0x800B7484; // type:func +func_800DB2C0 = 0x800B7680; // type:func +AudioSynth_LoadRingBuffer1AtTemp = 0x800B76F0; // type:func +AudioSynth_SaveRingBuffer1AtTemp = 0x800B7798; // type:func +AudioSynth_LeakReverb = 0x800B7840; // type:func +func_800DB4E4 = 0x800B78A4; // type:func +func_800DB680 = 0x800B7A40; // type:func +func_800DB828 = 0x800B7BE8; // type:func +AudioSynth_FilterReverb = 0x800B7E00; // type:func +AudioSynth_MaybeMixRingBuffer1 = 0x800B7EA8; // type:func +func_800DBB94 = 0x800B7F54; // type:func +AudioSynth_ClearBuffer = 0x800B7F5C; // type:func +func_800DBBBC = 0x800B7F7C; // type:func +func_800DBBC4 = 0x800B7F84; // type:func +func_800DBBCC = 0x800B7F8C; // type:func +AudioSynth_Mix = 0x800B7F94; // type:func +func_800DBC08 = 0x800B7FC8; // type:func +func_800DBC10 = 0x800B7FD0; // type:func +func_800DBC18 = 0x800B7FD8; // type:func +AudioSynth_SetBuffer = 0x800B7FE0; // type:func +func_800DBC54 = 0x800B8014; // type:func +func_800DBC5C = 0x800B801C; // type:func +AudioSynth_DMemMove = 0x800B8024; // type:func +func_800DBC90 = 0x800B8050; // type:func +func_800DBC98 = 0x800B8058; // type:func +func_800DBCA0 = 0x800B8060; // type:func +func_800DBCA8 = 0x800B8068; // type:func +AudioSynth_InterL = 0x800B8070; // type:func +AudioSynth_EnvSetup1 = 0x800B8094; // type:func +func_800DBD08 = 0x800B80C8; // type:func +AudioSynth_LoadBuffer = 0x800B80D0; // type:func +AudioSynth_SaveBuffer = 0x800B80F8; // type:func +AudioSynth_EnvSetup2 = 0x800B8120; // type:func +func_800DBD7C = 0x800B813C; // type:func +func_800DBD84 = 0x800B8144; // type:func +func_800DBD8C = 0x800B814C; // type:func +AudioSynth_S8Dec = 0x800B8154; // type:func +AudioSynth_HiLoGain = 0x800B8170; // type:func +AudioSynth_UnkCmd19 = 0x800B81A4; // type:func +func_800DBE18 = 0x800B81D8; // type:func +func_800DBE20 = 0x800B81E0; // type:func +func_800DBE28 = 0x800B81E8; // type:func +func_800DBE30 = 0x800B81F0; // type:func +AudioSynth_UnkCmd3 = 0x800B81F8; // type:func +func_800DBE5C = 0x800B821C; // type:func +func_800DBE64 = 0x800B8224; // type:func +func_800DBE6C = 0x800B822C; // type:func +AudioSynth_LoadFilterBuffer = 0x800B8234; // type:func +AudioSynth_LoadFilterSize = 0x800B8258; // type:func +AudioSynth_LoadRingBuffer1 = 0x800B8270; // type:func +AudioSynth_LoadRingBuffer2 = 0x800B831C; // type:func +AudioSynth_LoadRingBufferPart = 0x800B83C8; // type:func +AudioSynth_SaveRingBufferPart = 0x800B8434; // type:func +AudioSynth_SaveBufferOffset = 0x800B84A0; // type:func +AudioSynth_MaybeLoadRingBuffer2 = 0x800B84E4; // type:func +AudioSynth_LoadReverbSamples = 0x800B8524; // type:func +AudioSynth_SaveReverbSamples = 0x800B8598; // type:func +AudioSynth_SaveRingBuffer2 = 0x800B869C; // type:func +AudioSynth_DoOneAudioUpdate = 0x800B8744; // type:func +AudioSynth_ProcessNote = 0x800B8CD0; // type:func +AudioSynth_FinalResample = 0x800B99EC; // type:func +AudioSynth_ProcessEnvelope = 0x800B9A8C; // type:func +AudioSynth_LoadWaveSamples = 0x800B9DB4; // type:func +AudioSynth_ApplyHaasEffect = 0x800B9F24; // type:func +AudioHeap_CalculateAdsrDecay = 0x800BA1E0; // type:func +AudioHeap_InitAdsrDecayTable = 0x800BA1FC; // type:func +AudioHeap_ResetLoadStatus = 0x800BA340; // type:func +AudioHeap_DiscardFont = 0x800BA408; // type:func +AudioHeap_ReleaseNotesForFont = 0x800BA4EC; // type:func +AudioHeap_DiscardSequence = 0x800BA574; // type:func +AudioHeap_WritebackDCache = 0x800BA5F8; // type:func +AudioHeap_AllocZeroedAttemptExternal = 0x800BA618; // type:func +AudioHeap_AllocAttemptExternal = 0x800BA670; // type:func +AudioHeap_AllocDmaMemory = 0x800BA6C8; // type:func +AudioHeap_AllocDmaMemoryZeroed = 0x800BA704; // type:func +AudioHeap_AllocZeroed = 0x800BA740; // type:func +AudioHeap_Alloc = 0x800BA79C; // type:func +AudioHeap_InitPool = 0x800BA7F4; // type:func +AudioHeap_InitPersistentCache = 0x800BA81C; // type:func +AudioHeap_InitTemporaryCache = 0x800BA830; // type:func +AudioHeap_ResetPool = 0x800BA860; // type:func +AudioHeap_PopPersistentCache = 0x800BA870; // type:func +AudioHeap_InitMainPools = 0x800BA9B0; // type:func +AudioHeap_InitSessionPools = 0x800BAA10; // type:func +AudioHeap_InitCachePools = 0x800BAA94; // type:func +AudioHeap_InitPersistentPoolsAndCaches = 0x800BAB18; // type:func +AudioHeap_InitTemporaryPoolsAndCaches = 0x800BABDC; // type:func +AudioHeap_AllocCached = 0x800BACA0; // type:func +AudioHeap_SearchCaches = 0x800BB434; // type:func +AudioHeap_SearchRegularCaches = 0x800BB48C; // type:func +func_800DF1D8 = 0x800BB598; // type:func +AudioHeap_ClearFilter = 0x800BB96C; // type:func +AudioHeap_LoadLowPassFilter = 0x800BB99C; // type:func +AudioHeap_LoadHighPassFilter = 0x800BB9F0; // type:func +AudioHeap_LoadFilter = 0x800BBA48; // type:func +AudioHeap_UpdateReverb = 0x800BBB7C; // type:func +AudioHeap_UpdateReverbs = 0x800BBB84; // type:func +AudioHeap_ClearCurrentAiBuffer = 0x800BBC48; // type:func +AudioHeap_ResetStep = 0x800BBCB4; // type:func +AudioHeap_Init = 0x800BBFB8; // type:func +AudioHeap_SearchPermanentCache = 0x800BC8A8; // type:func +AudioHeap_AllocPermanent = 0x800BC900; // type:func +AudioHeap_AllocSampleCache = 0x800BC984; // type:func +AudioHeap_InitSampleCaches = 0x800BC9F4; // type:func +AudioHeap_AllocTemporarySampleCacheEntry = 0x800BCA8C; // type:func +AudioHeap_UnapplySampleCacheForFont = 0x800BCD24; // type:func +AudioHeap_DiscardSampleCacheEntry = 0x800BCE98; // type:func +AudioHeap_UnapplySampleCache = 0x800BCF74; // type:func +AudioHeap_AllocPersistentSampleCacheEntry = 0x800BCFB8; // type:func +AudioHeap_DiscardSampleCacheForFont = 0x800BD040; // type:func +AudioHeap_DiscardSampleCaches = 0x800BD07C; // type:func +AudioHeap_ChangeStorage = 0x800BD1CC; // type:func +AudioHeap_DiscardSampleBank = 0x800BD22C; // type:func +AudioHeap_ApplySampleBankCache = 0x800BD250; // type:func +AudioHeap_ApplySampleBankCacheInternal = 0x800BD274; // type:func +AudioHeap_DiscardSampleBanks = 0x800BD508; // type:func +AudioLoad_DecreaseSampleDmaTtls = 0x800BD5B0; // type:func +AudioLoad_DmaSampleData = 0x800BD69C; // type:func +AudioLoad_InitSampleDmaBuffers = 0x800BD9D8; // type:func +AudioLoad_IsFontLoadComplete = 0x800BDC70; // type:func +AudioLoad_IsSeqLoadComplete = 0x800BDCE8; // type:func +AudioLoad_IsSampleLoadComplete = 0x800BDD60; // type:func +AudioLoad_SetFontLoadStatus = 0x800BDDD8; // type:func +AudioLoad_SetSeqLoadStatus = 0x800BDE08; // type:func +AudioLoad_SetSampleFontLoadStatusAndApplyCaches = 0x800BDE38; // type:func +AudioLoad_SetSampleFontLoadStatus = 0x800BDE98; // type:func +AudioLoad_InitTable = 0x800BDEC8; // type:func +AudioLoad_SyncLoadSeqFonts = 0x800BDF28; // type:func +AudioLoad_SyncLoadSeqParts = 0x800BDFD8; // type:func +AudioLoad_SyncLoadSample = 0x800BE038; // type:func +AudioLoad_SyncLoadInstrument = 0x800BE124; // type:func +AudioLoad_AsyncLoad = 0x800BE1F4; // type:func +AudioLoad_AsyncLoadSeq = 0x800BE22C; // type:func +AudioLoad_AsyncLoadSampleBank = 0x800BE270; // type:func +AudioLoad_AsyncLoadFont = 0x800BE2B4; // type:func +AudioLoad_GetFontsForSequence = 0x800BE2F8; // type:func +AudioLoad_DiscardSeqFonts = 0x800BE33C; // type:func +AudioLoad_DiscardFont = 0x800BE3EC; // type:func +AudioLoad_SyncInitSeqPlayer = 0x800BE494; // type:func +AudioLoad_SyncInitSeqPlayerSkipTicks = 0x800BE4E4; // type:func +AudioLoad_SyncInitSeqPlayerInternal = 0x800BE53C; // type:func +AudioLoad_SyncLoadSeq = 0x800BE684; // type:func +AudioLoad_GetSampleBank = 0x800BE6D8; // type:func +AudioLoad_TrySyncLoadSampleBank = 0x800BE6F8; // type:func +AudioLoad_SyncLoadFont = 0x800BE814; // type:func +AudioLoad_SyncLoad = 0x800BE918; // type:func +AudioLoad_GetRealTableIndex = 0x800BEB28; // type:func +AudioLoad_SearchCaches = 0x800BEB64; // type:func +AudioLoad_GetLoadTable = 0x800BEBB8; // type:func +AudioLoad_RelocateFont = 0x800BEBFC; // type:func +AudioLoad_SyncDma = 0x800BEE68; // type:func +AudioLoad_SyncDmaUnkMedium = 0x800BEF8C; // type:func +AudioLoad_Dma = 0x800BEFA0; // type:func +AudioLoad_Unused1 = 0x800BF078; // type:func +AudioLoad_SyncLoadSimple = 0x800BF080; // type:func +AudioLoad_AsyncLoadInner = 0x800BF0A0; // type:func +AudioLoad_ProcessLoads = 0x800BF3AC; // type:func +AudioLoad_SetDmaHandler = 0x800BF3DC; // type:func +AudioLoad_SetUnusedHandler = 0x800BF3E8; // type:func +AudioLoad_InitSoundFont = 0x800BF3F4; // type:func +AudioLoad_Init = 0x800BF454; // type:func +AudioLoad_InitSlowLoads = 0x800BF7C0; // type:func +AudioLoad_SlowLoadSample = 0x800BF7D4; // type:func +AudioLoad_GetFontSample = 0x800BF9A0; // type:func +AudioLoad_Unused2 = 0x800BFA30; // type:func +AudioLoad_FinishSlowLoad = 0x800BFA38; // type:func +AudioLoad_ProcessSlowLoads = 0x800BFAAC; // type:func +AudioLoad_DmaSlowCopy = 0x800BFC34; // type:func +AudioLoad_DmaSlowCopyUnkMedium = 0x800BFCB8; // type:func +AudioLoad_SlowLoadSeq = 0x800BFCCC; // type:func +AudioLoad_InitAsyncLoads = 0x800BFDD4; // type:func +AudioLoad_StartAsyncLoadUnkMedium = 0x800BFE04; // type:func +AudioLoad_StartAsyncLoad = 0x800BFE88; // type:func +AudioLoad_ProcessAsyncLoads = 0x800BFFAC; // type:func +AudioLoad_ProcessAsyncLoadUnkMedium = 0x800C00D0; // type:func +AudioLoad_FinishAsyncLoad = 0x800C00DC; // type:func +AudioLoad_ProcessAsyncLoad = 0x800C0218; // type:func +AudioLoad_AsyncDma = 0x800C0374; // type:func +AudioLoad_AsyncDmaUnkMedium = 0x800C0404; // type:func +AudioLoad_RelocateSample = 0x800C0418; // type:func +AudioLoad_RelocateFontAndPreloadSamples = 0x800C0558; // type:func +AudioLoad_ProcessSamplePreloads = 0x800C0950; // type:func +AudioLoad_AddToSampleSet = 0x800C0B04; // type:func +AudioLoad_GetSamplesForFont = 0x800C0B4C; // type:func +AudioLoad_AddUsedSample = 0x800C0C80; // type:func +AudioLoad_PreloadSamplesForFont = 0x800C0CD8; // type:func +AudioLoad_LoadPermanentSamples = 0x800C1154; // type:func +AudioLoad_Unused3 = 0x800C1294; // type:func +AudioLoad_Unused4 = 0x800C129C; // type:func +AudioLoad_Unused5 = 0x800C12A4; // type:func +AudioLoad_ScriptLoad = 0x800C12AC; // type:func +AudioLoad_ProcessScriptLoads = 0x800C1318; // type:func +AudioLoad_InitScriptLoads = 0x800C1370; // type:func +AudioThread_Update = 0x800C13A0; // type:func +AudioThread_UpdateImpl = 0x800C13C0; // type:func +AudioThread_ProcessGlobalCmd = 0x800C1944; // type:func +AudioThread_SetFadeOutTimer = 0x800C1D18; // type:func +AudioThread_SetFadeInTimer = 0x800C1D6C; // type:func +AudioThread_InitMesgQueuesImpl = 0x800C1DB4; // type:func +AudioThread_QueueCmd = 0x800C1E4C; // type:func +AudioThread_QueueCmdF32 = 0x800C1E98; // type:func +AudioThread_QueueCmdS32 = 0x800C1EBC; // type:func +AudioThread_QueueCmdS8 = 0x800C1EE0; // type:func +AudioThread_QueueCmdU16 = 0x800C1F10; // type:func +AudioThread_ScheduleProcessCmds = 0x800C1F40; // type:func +AudioThread_ResetCmdQueue = 0x800C1FD0; // type:func +AudioThread_ProcessCmd = 0x800C1FE8; // type:func +AudioThread_ProcessCmds = 0x800C212C; // type:func +func_800E5E20 = 0x800C21E0; // type:func +AudioThread_GetFontsForSequence = 0x800C2244; // type:func +Audio_GetSampleBankIdsOfFont = 0x800C2264; // type:func +func_800E5EDC = 0x800C229C; // type:func +func_800E5F34 = 0x800C22F4; // type:func +AudioThread_ResetAudioHeap = 0x800C2348; // type:func +AudioThread_PreNMIInternal = 0x800C23E4; // type:func +AudioThread_GetChannelIO = 0x800C2430; // type:func +AudioThread_GetSeqPlayerIO = 0x800C2484; // type:func +AudioThread_InitExternalPool = 0x800C24AC; // type:func +AudioThread_ResetExternalPool = 0x800C24DC; // type:func +AudioThread_ProcessSeqPlayerCmd = 0x800C24E8; // type:func +AudioThread_ProcessChannelCmd = 0x800C26C0; // type:func +AudioThread_Noop1Cmd = 0x800C2870; // type:func +AudioThread_Noop1CmdZeroed = 0x800C28B8; // type:func +AudioThread_Noop2Cmd = 0x800C28DC; // type:func +AudioThread_WaitForAudioTask = 0x800C2910; // type:func +func_800E6590 = 0x800C2950; // type:func +func_800E6680 = 0x800C2A40; // type:func +func_800E66A0 = 0x800C2A60; // type:func +func_800E66C0 = 0x800C2A80; // type:func +AudioThread_NextRandom = 0x800C2B80; // type:func +AudioThread_InitMesgQueues = 0x800C2BD8; // type:func +Audio_InvalDCache = 0x800C2C00; // type:func +Audio_WritebackDCache = 0x800C2C40; // type:func +osAiSetNextBuffer = 0x800C2C80; // type:func +Audio_InitNoteSub = 0x800C2D00; // type:func +Audio_NoteSetResamplingRate = 0x800C3178; // type:func +Audio_NoteInit = 0x800C3228; // type:func +Audio_NoteDisable = 0x800C32E8; // type:func +Audio_ProcessNotes = 0x800C334C; // type:func +Audio_GetInstrumentTunedSample = 0x800C381C; // type:func +Audio_GetInstrumentInner = 0x800C3858; // type:func +Audio_GetDrum = 0x800C392C; // type:func +Audio_GetSoundEffect = 0x800C3A10; // type:func +Audio_SetFontInstrument = 0x800C3B04; // type:func +Audio_SeqLayerDecayRelease = 0x800C3C48; // type:func +Audio_SeqLayerNoteDecay = 0x800C3F20; // type:func +Audio_SeqLayerNoteRelease = 0x800C3F40; // type:func +Audio_BuildSyntheticWave = 0x800C3F60; // type:func +Audio_InitSyntheticWave = 0x800C4064; // type:func +Audio_InitNoteList = 0x800C40BC; // type:func +Audio_InitNoteLists = 0x800C40CC; // type:func +Audio_InitNoteFreeList = 0x800C411C; // type:func +Audio_NotePoolClear = 0x800C41C0; // type:func +Audio_NotePoolFill = 0x800C4320; // type:func +Audio_AudioListPushFront = 0x800C445C; // type:func +Audio_AudioListRemove = 0x800C449C; // type:func +Audio_FindNodeWithPrioLessThan = 0x800C44C8; // type:func +Audio_NoteInitForLayer = 0x800C4548; // type:func +func_800E82C0 = 0x800C4680; // type:func +Audio_NoteReleaseAndTakeOwnership = 0x800C46B4; // type:func +Audio_AllocNoteFromDisabled = 0x800C46E0; // type:func +Audio_AllocNoteFromDecaying = 0x800C472C; // type:func +Audio_AllocNoteFromActive = 0x800C477C; // type:func +Audio_AllocNote = 0x800C4874; // type:func +Audio_NoteInitAll = 0x800C4B48; // type:func +Audio_SequenceChannelProcessSound = 0x800C4C80; // type:func +Audio_SequencePlayerProcessSound = 0x800C4E48; // type:func +Audio_GetPortamentoFreqScale = 0x800C4F94; // type:func +Audio_GetVibratoPitchChange = 0x800C4FF0; // type:func +Audio_GetVibratoFreqScale = 0x800C5028; // type:func +Audio_NoteVibratoUpdate = 0x800C5264; // type:func +Audio_NoteVibratoInit = 0x800C52C0; // type:func +Audio_NotePortamentoInit = 0x800C5378; // type:func +Audio_AdsrInit = 0x800C53A4; // type:func +Audio_AdsrUpdate = 0x800C53C4; // type:func +AudioSeq_GetScriptControlFlowArgument = 0x800C5700; // type:func +AudioSeq_HandleScriptFlowControl = 0x800C5768; // type:func +AudioSeq_InitSequenceChannel = 0x800C5944; // type:func +AudioSeq_SeqChannelSetLayer = 0x800C5A98; // type:func +AudioSeq_SeqLayerDisable = 0x800C5BBC; // type:func +AudioSeq_SeqLayerFree = 0x800C5C38; // type:func +AudioSeq_SequenceChannelDisable = 0x800C5C88; // type:func +AudioSeq_SequencePlayerSetupChannels = 0x800C5CF4; // type:func +AudioSeq_SequencePlayerDisableChannels = 0x800C5DEC; // type:func +AudioSeq_SequenceChannelEnable = 0x800C5E6C; // type:func +AudioSeq_SequencePlayerDisableAsFinished = 0x800C5F04; // type:func +AudioSeq_SequencePlayerDisable = 0x800C5F2C; // type:func +AudioSeq_AudioListPushBack = 0x800C5FE8; // type:func +AudioSeq_AudioListPopBack = 0x800C6028; // type:func +AudioSeq_InitLayerFreelist = 0x800C6068; // type:func +AudioSeq_ScriptReadU8 = 0x800C6108; // type:func +AudioSeq_ScriptReadS16 = 0x800C611C; // type:func +AudioSeq_ScriptReadCompressedU16 = 0x800C6154; // type:func +AudioSeq_SeqLayerProcessScript = 0x800C6194; // type:func +AudioSeq_SeqLayerProcessScriptStep1 = 0x800C6298; // type:func +AudioSeq_SeqLayerProcessScriptStep5 = 0x800C6324; // type:func +AudioSeq_SeqLayerProcessScriptStep2 = 0x800C6480; // type:func +AudioSeq_SeqLayerProcessScriptStep4 = 0x800C6800; // type:func +AudioSeq_SeqLayerProcessScriptStep3 = 0x800C6EA0; // type:func +AudioSeq_SetChannelPriorities = 0x800C72B4; // type:func +AudioSeq_GetInstrument = 0x800C72E4; // type:func +AudioSeq_SetInstrument = 0x800C7358; // type:func +AudioSeq_SequenceChannelSetVolume = 0x800C7404; // type:func +AudioSeq_SequenceChannelProcessScript = 0x800C7428; // type:func +AudioSeq_SequencePlayerProcessSequence = 0x800C8118; // type:func +AudioSeq_ProcessSequences = 0x800C8924; // type:func +AudioSeq_SkipForwardSequence = 0x800C89D8; // type:func +AudioSeq_ResetSequencePlayer = 0x800C8A28; // type:func +AudioSeq_InitSequencePlayerChannels = 0x800C8AF4; // type:func +AudioSeq_InitSequencePlayer = 0x800C8BCC; // type:func +AudioSeq_InitSequencePlayers = 0x800C8C9C; // type:func +AudioOcarina_SetCustomButtonMapping = 0x800C8D20; // type:func +AudioOcarina_ReadControllerInput = 0x800C8DC0; // type:func +AudioOcarina_BendPitchTwoSemitones = 0x800C8E20; // type:func +AudioOcarina_GetPlayingState = 0x800C8EB0; // type:func +AudioOcarina_MapNoteToButton = 0x800C8EF4; // type:func +AudioOcarina_MapNotesToScarecrowButtons = 0x800C8F3C; // type:func +AudioOcarina_Start = 0x800C8FC4; // type:func +AudioOcarina_CheckIfStartedSong = 0x800C917C; // type:func +AudioOcarina_CheckSongsWithMusicStaff = 0x800C91B8; // type:func +AudioOcarina_CheckSongsWithoutMusicStaff = 0x800C95C0; // type:func +AudioOcarina_PlayControllerInput = 0x800C9818; // type:func +AudioOcarina_EnableInput = 0x800C9C08; // type:func +AudioOcarina_SetInstrument = 0x800C9C18; // type:func +AudioOcarina_SetPlaybackSong = 0x800C9CFC; // type:func +AudioOcarina_PlaybackSong = 0x800C9DFC; // type:func +AudioOcarina_SetRecordingSong = 0x800CA128; // type:func +AudioOcarina_SetRecordingState = 0x800CA530; // type:func +AudioOcarina_UpdateRecordingStaff = 0x800CA65C; // type:func +AudioOcarina_UpdatePlayingStaff = 0x800CA694; // type:func +AudioOcarina_UpdatePlaybackStaff = 0x800CA6D8; // type:func +AudioOcarina_GetRecordingStaff = 0x800CA788; // type:func +AudioOcarina_GetPlayingStaff = 0x800CA794; // type:func +AudioOcarina_GetPlaybackStaff = 0x800CA7B8; // type:func +AudioOcarina_RecordSong = 0x800CA7C4; // type:func +AudioOcarina_MemoryGameInit = 0x800CA93C; // type:func +AudioOcarina_MemoryGameNextNote = 0x800CA9AC; // type:func +AudioOcarina_Update = 0x800CAAB4; // type:func +AudioOcarina_PlayLongScarecrowSong = 0x800CABE4; // type:func +AudioOcarina_ResetStaffs = 0x800CACF0; // type:func +AudioDebug_Draw = 0x800CAD3C; // type:func +AudioDebug_ScrPrt = 0x800CAD44; // type:func +Audio_Update = 0x800CAD50; // type:func +func_800F3138 = 0x800CADF4; // type:func +func_800F3140 = 0x800CADFC; // type:func +func_800F314C = 0x800CAE08; // type:func +Audio_ComputeSfxVolume = 0x800CAE44; // type:func +Audio_ComputeSfxReverb = 0x800CAFAC; // type:func +Audio_ComputeSfxPanSigned = 0x800CB124; // type:func +Audio_ComputeSfxFreqScale = 0x800CB2A8; // type:func +func_800F37B8 = 0x800CB474; // type:func +func_800F3990 = 0x800CB64C; // type:func +Audio_SetSfxProperties = 0x800CB6C4; // type:func +Audio_ResetSfxChannelState = 0x800CBB9C; // type:func +Audio_PlayCutsceneEffectsSequence = 0x800CBC04; // type:func +func_800F3F84 = 0x800CBC4C; // type:func +func_800F4010 = 0x800CBCD8; // type:func +func_800F4138 = 0x800CBDF8; // type:func +func_800F4190 = 0x800CBE50; // type:func +Audio_PlaySfxRandom = 0x800CBEA0; // type:func +func_800F4254 = 0x800CBF14; // type:func +func_800F436C = 0x800CC02C; // type:func +func_800F4414 = 0x800CC0D4; // type:func +func_800F44EC = 0x800CC1AC; // type:func +func_800F4524 = 0x800CC1E4; // type:func +func_800F4578 = 0x800CC238; // type:func +func_800F45D0 = 0x800CC290; // type:func +Audio_PlaySfxRiver = 0x800CC2F4; // type:func +Audio_PlaySfxWaterfall = 0x800CC3A0; // type:func +Audio_StepFreqLerp = 0x800CC444; // type:func +Audio_SetBgmVolumeOffDuringFanfare = 0x800CC47C; // type:func +Audio_SetBgmVolumeOnDuringFanfare = 0x800CC4BC; // type:func +Audio_SetMainBgmVolume = 0x800CC4FC; // type:func +Audio_SetGanonsTowerBgmVolumeLevel = 0x800CC530; // type:func +Audio_SetGanonsTowerBgmVolume = 0x800CC5DC; // type:func +Audio_LowerMainBgmVolume = 0x800CC714; // type:func +Audio_UpdateRiverSoundVolumes = 0x800CC730; // type:func +Audio_PlaySfxIncreasinglyTransposed = 0x800CC818; // type:func +Audio_ResetIncreasingTranspose = 0x800CC8A8; // type:func +Audio_PlaySfxTransposed = 0x800CC8B4; // type:func +func_800F4C58 = 0x800CC918; // type:func +func_800F4E30 = 0x800CCAF0; // type:func +Audio_ClearSariaBgm = 0x800CCD8C; // type:func +Audio_ClearSariaBgmAtPos = 0x800CCDAC; // type:func +Audio_SplitBgmChannels = 0x800CCDCC; // type:func +Audio_PlaySariaBgm = 0x800CCF60; // type:func +Audio_ClearSariaBgm2 = 0x800CD1C4; // type:func +Audio_PlayMorningSceneSequence = 0x800CD1D0; // type:func +Audio_PlaySceneSequence = 0x800CD210; // type:func +Audio_UpdateSceneSequenceResumePoint = 0x800CD368; // type:func +Audio_PlayWindmillBgm = 0x800CD3D8; // type:func +Audio_SetMainBgmTempoFreqAfterFanfare = 0x800CD40C; // type:func +Audio_SetFastTempoForTimedMinigame = 0x800CD5D8; // type:func +Audio_PlaySequenceInCutscene = 0x800CD61C; // type:func +Audio_StopSequenceInCutscene = 0x800CD6A8; // type:func +Audio_IsSequencePlaying = 0x800CD718; // type:func +func_800F5ACC = 0x800CD78C; // type:func +func_800F5B58 = 0x800CD800; // type:func +func_800F5BF0 = 0x800CD898; // type:func +func_800F5C2C = 0x800CD8D4; // type:func +Audio_PlayFanfare = 0x800CD90C; // type:func +Audio_UpdateFanfare = 0x800CD9A0; // type:func +Audio_PlaySequenceWithSeqPlayerIO = 0x800CDAC0; // type:func +Audio_SetSequenceMode = 0x800CDB38; // type:func +Audio_SetBgmEnemyVolume = 0x800CDDB4; // type:func +Audio_UpdateMalonSinging = 0x800CDF08; // type:func +func_800F64E0 = 0x800CE16C; // type:func +Audio_ToggleMalonSinging = 0x800CE210; // type:func +Audio_SetEnvReverb = 0x800CE34C; // type:func +Audio_SetCodeReverb = 0x800CE368; // type:func +func_800F6700 = 0x800CE38C; // type:func +Audio_SetBaseFilter = 0x800CE42C; // type:func +Audio_SetExtraFilter = 0x800CE4B4; // type:func +Audio_SetCutsceneFlag = 0x800CE548; // type:func +Audio_PlaySfxGeneralIfNotInCutscene = 0x800CE560; // type:func +Audio_PlaySfxIfNotInCutscene = 0x800CE5A8; // type:func +func_800F6964 = 0x800CE5F0; // type:func +Audio_StopBgmAndFanfare = 0x800CE73C; // type:func +func_800F6B3C = 0x800CE7C8; // type:func +Audio_DisableAllSeq = 0x800CE7F4; // type:func +func_800F6BB8 = 0x800CE844; // type:func +func_800F6BDC = 0x800CE868; // type:func +Audio_PreNMI = 0x800CE8A0; // type:func +func_800F6C34 = 0x800CE8C0; // type:func +Audio_SetNatureAmbienceChannelIO = 0x800CE9E4; // type:func +Audio_StartNatureAmbienceSequence = 0x800CEAF8; // type:func +Audio_PlayNatureAmbienceSequence = 0x800CEBFC; // type:func +Audio_Init = 0x800CED40; // type:func +Audio_InitSound = 0x800CED64; // type:func +func_800F7170 = 0x800CEDB8; // type:func +func_800F71BC = 0x800CEE04; // type:func +func_800F7208 = 0x800CEE50; // type:func +Audio_SetSfxBanksMute = 0x800CEEB0; // type:func +Audio_QueueSeqCmdMute = 0x800CEF08; // type:func +Audio_ClearBGMMute = 0x800CEF6C; // type:func +Audio_PlaySfxGeneral = 0x800CEFDC; // type:func +Audio_RemoveMatchingSfxRequests = 0x800CF05C; // type:func +Audio_ProcessSfxRequest = 0x800CF1FC; // type:func +Audio_RemoveSfxBankEntry = 0x800CF698; // type:func +Audio_ChooseActiveSfx = 0x800CF830; // type:func +Audio_PlayActiveSfx = 0x800CFF70; // type:func +Audio_StopSfxByBank = 0x800D0290; // type:func +Audio_RemoveSfxFromBankByPos = 0x800D0374; // type:func +Audio_StopSfxByPosAndBank = 0x800D0490; // type:func +Audio_StopSfxByPos = 0x800D04D8; // type:func +Audio_StopSfxByPosAndId = 0x800D0534; // type:func +Audio_StopSfxByTokenAndId = 0x800D0690; // type:func +Audio_StopSfxById = 0x800D07F4; // type:func +Audio_ProcessSfxRequests = 0x800D092C; // type:func +Audio_SetUnusedBankLerp = 0x800D0990; // type:func +Audio_StepUnusedBankLerp = 0x800D0A24; // type:func +func_800F8F88 = 0x800D0A78; // type:func +Audio_IsSfxPlaying = 0x800D0AE4; // type:func +Audio_ResetSfx = 0x800D0B4C; // type:func +Audio_StartSequence = 0x800D0D10; // type:func +Audio_StopSequence = 0x800D0E94; // type:func +Audio_ProcessSeqCmd = 0x800D0F1C; // type:func +Audio_QueueSeqCmd = 0x800D19E0; // type:func +Audio_ProcessSeqCmds = 0x800D1A08; // type:func +Audio_GetActiveSeqId = 0x800D1A88; // type:func +Audio_IsSeqCmdNotQueued = 0x800D1AF0; // type:func +Audio_ResetSequenceRequests = 0x800D1B48; // type:func +Audio_ReplaceSeqCmdSetupOpVolRestore = 0x800D1B60; // type:func +Audio_SetVolumeScale = 0x800D1C14; // type:func +Audio_UpdateActiveSequences = 0x800D1DB0; // type:func +func_800FAD34 = 0x800D2708; // type:func +Audio_ResetActiveSequences = 0x800D27CC; // type:func +Audio_ResetActiveSequencesAndVolume = 0x800D2888; // type:func +func_800FC800 = 0x800D2930; // type:func +func_800FC83C = 0x800D2960; // type:func +func_800FC868 = 0x800D298C; // type:func +func_800FC8D8 = 0x800D29FC; // type:func +func_800FC948 = 0x800D2A6C; // type:func +func_800FCA18 = 0x800D2B3C; // type:func +func_800FCB34 = 0x800D2BD8; // type:func +SystemHeap_Init = 0x800D2C48; // type:func +LogUtils_HungupThread = 0x800D2C70; // type:func +LogUtils_ResetHungup = 0x800D2CA4; // type:func +GfxPrint_Setup = 0x800D2CD0; // type:func +GfxPrint_SetColor = 0x800D311C; // type:func +GfxPrint_SetPosPx = 0x800D3168; // type:func +GfxPrint_SetPos = 0x800D318C; // type:func +GfxPrint_SetBasePosPx = 0x800D31B4; // type:func +GfxPrint_PrintCharImpl = 0x800D31C8; // type:func +GfxPrint_PrintChar = 0x800D365C; // type:func +GfxPrint_PrintStringWithSize = 0x800D381C; // type:func +GfxPrint_PrintString = 0x800D3878; // type:func +GfxPrint_Callback = 0x800D38D0; // type:func +GfxPrint_Init = 0x800D38FC; // type:func +GfxPrint_Destroy = 0x800D3984; // type:func +GfxPrint_Open = 0x800D398C; // type:func +GfxPrint_Close = 0x800D39C0; // type:func +GfxPrint_VPrintf = 0x800D39F0; // type:func +GfxPrint_Printf = 0x800D3A10; // type:func +Overlay_Relocate = 0x800D3A40; // type:func +Overlay_AllocateAndLoad = 0x800D3C80; // type:func +Overlay_Load = 0x800D3CE0; // type:func +PadSetup_Init = 0x800D3DB0; // type:func +PadUtils_Init = 0x800D3EF0; // type:func +func_800FCB70 = 0x800D3F10; // type:func +PadUtils_ResetPressRel = 0x800D3F18; // type:func +PadUtils_CheckCurExact = 0x800D3F24; // type:func +PadUtils_CheckCur = 0x800D3F3C; // type:func +PadUtils_CheckPressed = 0x800D3F58; // type:func +PadUtils_CheckReleased = 0x800D3F74; // type:func +PadUtils_GetCurButton = 0x800D3F90; // type:func +PadUtils_GetPressButton = 0x800D3F98; // type:func +PadUtils_GetCurX = 0x800D3FA0; // type:func +PadUtils_GetCurY = 0x800D3FA8; // type:func +PadUtils_SetRelXY = 0x800D3FB0; // type:func +PadUtils_GetRelXImpl = 0x800D3FBC; // type:func +PadUtils_GetRelYImpl = 0x800D3FC4; // type:func +PadUtils_GetRelX = 0x800D3FCC; // type:func +PadUtils_GetRelY = 0x800D3FEC; // type:func +PadUtils_UpdateRelXY = 0x800D400C; // type:func +RcpUtils_PrintRegisterStatus = 0x800D40E0; // type:func +RcpUtils_Reset = 0x800D4108; // type:func +ArenaImpl_LockInit = 0x800D4140; // type:func +ArenaImpl_Lock = 0x800D416C; // type:func +ArenaImpl_Unlock = 0x800D4194; // type:func +ArenaImpl_GetLastBlock = 0x800D41BC; // type:func +__osMallocInit = 0x800D4220; // type:func +__osMallocAddBlock = 0x800D4270; // type:func +__osMallocCleanup = 0x800D4310; // type:func +__osMallocIsInitialized = 0x800D4330; // type:func +__osMalloc_NoLock = 0x800D4338; // type:func +__osMalloc = 0x800D4464; // type:func +__osMallocR = 0x800D44A4; // type:func +__osFree_NoLock = 0x800D4618; // type:func +__osFree = 0x800D4758; // type:func +__osRealloc = 0x800D4790; // type:func +ArenaImpl_GetSizes = 0x800D4B88; // type:func +ArenaImpl_FaultClient = 0x800D4C5C; // type:func +__osCheckArena = 0x800D4E30; // type:func +PrintUtils_VPrintf = 0x800D4EF0; // type:func +PrintUtils_Printf = 0x800D4F24; // type:func +SystemArena_Malloc = 0x800D4F50; // type:func +SystemArena_MallocR = 0x800D4F78; // type:func +SystemArena_Realloc = 0x800D4FA0; // type:func +SystemArena_Free = 0x800D4FD0; // type:func +SystemArena_Calloc = 0x800D4FF8; // type:func +SystemArena_GetSizes = 0x800D504C; // type:func +SystemArena_Check = 0x800D5084; // type:func +SystemArena_Init = 0x800D50A8; // type:func +SystemArena_Cleanup = 0x800D50D8; // type:func +SystemArena_IsInitialized = 0x800D50FC; // type:func +Math_FTanF = 0x800D5120; // type:func +Math_FFloorF = 0x800D5154; // type:func +Math_FCeilF = 0x800D5174; // type:func +Math_FRoundF = 0x800D5194; // type:func +Math_FTruncF = 0x800D51B4; // type:func +Math_FNearbyIntF = 0x800D51D4; // type:func +Math_FAtanTaylorQF = 0x800D51F4; // type:func +Math_FAtanTaylorF = 0x800D5240; // type:func +Math_FAtanContFracF = 0x800D5364; // type:func +Math_FAtanF = 0x800D54B0; // type:func +Math_FAtan2F = 0x800D54F0; // type:func +Math_FAsinF = 0x800D55D8; // type:func +Math_FAcosF = 0x800D5608; // type:func +floorf = 0x800D5630; // type:func +floor = 0x800D563C; // type:func +lfloorf = 0x800D5648; // type:func +lfloor = 0x800D5658; // type:func +ceilf = 0x800D5668; // type:func +ceil = 0x800D5674; // type:func +lceilf = 0x800D5680; // type:func +lceil = 0x800D5690; // type:func +truncf = 0x800D56A0; // type:func +trunc = 0x800D56AC; // type:func +ltruncf = 0x800D56B8; // type:func +ltrunc = 0x800D56C8; // type:func +nearbyintf = 0x800D56D8; // type:func +nearbyint = 0x800D56E4; // type:func +lnearbyintf = 0x800D56F0; // type:func +lnearbyint = 0x800D5700; // type:func +roundf = 0x800D5710; // type:func +round = 0x800D572C; // type:func +lroundf = 0x800D574C; // type:func +lround = 0x800D576C; // type:func +Rand_Next = 0x800D5790; // type:func +Rand_Seed = 0x800D57C0; // type:func +Rand_ZeroOne = 0x800D57CC; // type:func +Rand_Centered = 0x800D5820; // type:func +Rand_Seed_Variable = 0x800D5878; // type:func +Rand_Next_Variable = 0x800D5880; // type:func +Rand_ZeroOne_Variable = 0x800D58A8; // type:func +Rand_Centered_Variable = 0x800D58F4; // type:func +Sleep_Cycles = 0x800D5950; // type:func +Sleep_Nsec = 0x800D59BC; // type:func +Sleep_Usec = 0x800D5A0C; // type:func +Sleep_Msec = 0x800D5A5C; // type:func +Sleep_Sec = 0x800D5AB0; // type:func +proutSprintf = 0x800D5AF0; // type:func +vsprintf = 0x800D5B14; // type:func +sprintf = 0x800D5B64; // type:func +JpegUtils_ProcessQuantizationTable = 0x800D5BC0; // type:func +JpegUtils_ParseHuffmanCodesLengths = 0x800D5C28; // type:func +JpegUtils_GetHuffmanCodes = 0x800D5CAC; // type:func +JpegUtils_SetHuffmanTable = 0x800D5D18; // type:func +JpegUtils_ProcessHuffmanTableImpl = 0x800D5DC0; // type:func +JpegUtils_ProcessHuffmanTable = 0x800D5E7C; // type:func +JpegUtils_SetHuffmanTableOld = 0x800D5F54; // type:func +JpegUtils_ProcessHuffmanTableImplOld = 0x800D5FFC; // type:func +JpegDecoder_Decode = 0x800D60D0; // type:func +JpegDecoder_ProcessMcu = 0x800D62F8; // type:func +JpegDecoder_ParseNextSymbol = 0x800D6494; // type:func +JpegDecoder_ReadBits = 0x800D65D0; // type:func +osAiGetLength = 0x800D66C0; // type:func +osAiSetFrequency = 0x800D66D0; // type:func +alInit = 0x800D67D0; // type:func +alClose = 0x800D67FC; // type:func +alLink = 0x800D682C; // type:func +alUnlink = 0x800D684C; // type:func +alSynNew = 0x800D6880; // type:func +alAudioFrame = 0x800D6BA4; // type:func +__allocParam = 0x800D6D50; // type:func +__freeParam = 0x800D6D7C; // type:func +_collectPVoices = 0x800D6D94; // type:func +_freePVoice = 0x800D6DE4; // type:func +_timeToSamplesNoRound = 0x800D6E24; // type:func +_timeToSamples = 0x800D6E6C; // type:func +__nextSampleTime = 0x800D6E90; // type:func +alSynDelete = 0x800D6EF0; // type:func +alSynAllocFX = 0x800D6F00; // type:func +osWritebackDCacheAll = 0x800D6FA0; // type:func +osContStartQuery = 0x800D6FD0; // type:func +osContGetQuery = 0x800D7054; // type:func +osContStartReadData = 0x800D7080; // type:func +osContGetReadData = 0x800D7108; // type:func +__osPackReadData = 0x800D7244; // type:func +osContInit = 0x800D7300; // type:func +__osContGetInitData = 0x800D74A4; // type:func +__osPackRequestData = 0x800D7610; // type:func +osContSetCh = 0x800D76D0; // type:func +sqrtf = 0x800D7730; // type:func +cosf = 0x800D7740; // type:func +coss = 0x800D7870; // type:func +guLookAtF = 0x800D7890; // type:func +guLookAt = 0x800D7B54; // type:func +guLookAtHiliteF = 0x800D7BC0; // type:func +guLookAtHilite = 0x800D83B8; // type:func +guOrthoF = 0x800D8490; // type:func +guOrtho = 0x800D85AC; // type:func +guPerspectiveF = 0x800D8600; // type:func +guPerspective = 0x800D87A8; // type:func +guPositionF = 0x800D8800; // type:func +guPosition = 0x800D8988; // type:func +sinf = 0x800D89E0; // type:func +sins = 0x800D8B60; // type:func +guS2DInitBg = 0x800D8BB0; // type:func +__ull_rshift = 0x800D8CD0; // type:func +__ull_rem = 0x800D8D4C; // type:func +__ull_div = 0x800D8DB0; // type:func +__ll_lshift = 0x800D8E0C; // type:func +__ll_rem = 0x800D8E88; // type:func +__ll_div = 0x800D8EEC; // type:func +__ll_mul = 0x800D8F48; // type:func +__ull_divremi = 0x800D8FBC; // type:func +__ll_mod = 0x800D9060; // type:func +__ll_rshift = 0x800D91CC; // type:func +__d_to_ll = 0x800D9250; // type:func +__f_to_ll = 0x800D9294; // type:func +__d_to_ull = 0x800D92D8; // type:func +__f_to_ull = 0x800D931C; // type:func +__ll_to_d = 0x800D9360; // type:func +__ll_to_f = 0x800D93A4; // type:func +__ull_to_d = 0x800D93E8; // type:func +__ull_to_f = 0x800D94A4; // type:func +strchr = 0x800D9560; // type:func +strlen = 0x800D9590; // type:func +memcpy = 0x800D95B4; // type:func +_Printf = 0x800D95E0; // type:func +_Putfld = 0x800D9B1C; // type:func +osDpGetStatus = 0x800D9FC0; // type:func +osDpSetStatus = 0x800D9FD0; // type:func +__osSpGetStatus = 0x800D9FE0; // type:func +__osSpSetStatus = 0x800D9FF0; // type:func +_VirtualToPhysicalTask = 0x800DA000; // type:func +osSpTaskLoad = 0x800DA0DC; // type:func +osSpTaskStartGo = 0x800DA1E0; // type:func +osSpTaskYield = 0x800DA210; // type:func +osSpTaskYielded = 0x800DA230; // type:func +__osSiRawStartDma = 0x800DA280; // type:func +__osSiCreateAccessQueue = 0x800DA360; // type:func +__osSiGetAccess = 0x800DA3B4; // type:func +__osSiRelAccess = 0x800DA3F0; // type:func +osGetThreadId = 0x800DA420; // type:func +__osGetActiveQueue = 0x800DA470; // type:func +osSetTimer = 0x800DA4A0; // type:func +osStopTimer = 0x800DA660; // type:func +osViGetCurrentFramebuffer = 0x800DA780; // type:func +osViSetEvent = 0x800DA7C0; // type:func +guMtxIdent = 0x800DA820; // type:func +guMtxIdentF = 0x800DA880; // type:func +guMtxF2L = 0x800DA8E0; // type:func +guScale = 0x800DA960; // type:func +guTranslate = 0x800DAA00; // type:func +guRotateF = 0x800DAAD0; // type:func +guRotate = 0x800DAC1C; // type:func +__osGetCurrFaultedThread = 0x800DAC60; // type:func +skGetId = 0x800DAC90; // type:func +skLaunchSetup = 0x800DACAC; // type:func +skLaunch = 0x800DACC8; // type:func +skRecryptListValid = 0x800DACE4; // type:func +skRecryptBegin = 0x800DAD00; // type:func +skRecryptData = 0x800DAD1C; // type:func +skRecryptComputeState = 0x800DAD38; // type:func +skRecryptEnd = 0x800DAD54; // type:func +skSignHash = 0x800DAD70; // type:func +skVerifyHash = 0x800DAD8C; // type:func +skGetConsumption = 0x800DADA8; // type:func +skAdvanceTicketWindow = 0x800DADC4; // type:func +skSetLimit = 0x800DADE0; // type:func +skExit = 0x800DADFC; // type:func +skKeepAlive = 0x800DAE18; // type:func +skGetRandomKeyData = 0x800DAE34; // type:func +skDumpVirage = 0x800DAE50; // type:func +skTest2 = 0x800DAE6C; // type:func +skTest3 = 0x800DAE88; // type:func +skResetWindow = 0x800DAEA4; // type:func +skValidateRls = 0x800DAEC0; // type:func +strcmp = 0x800DAEE0; // type:func +memset = 0x800DAF30; // type:func +strncmp = 0x800DAF54; // type:func +__osMotorAccess = 0x800DAFD0; // type:func +osMotorInit = 0x800DAFD8; // type:func +osAfterPreNMI = 0x800DAFE0; // type:func +_init_lpfilter = 0x800DB020; // type:func +alFxNew = 0x800DB0D0; // type:func +alEnvmixerNew = 0x800DB4E4; // type:func +alLoadNew = 0x800DB594; // type:func +alResampleNew = 0x800DB644; // type:func +alAuxBusNew = 0x800DB6D0; // type:func +alMainBusNew = 0x800DB72C; // type:func +alSaveNew = 0x800DB788; // type:func +alAdpcmPull = 0x800DB7D0; // type:func +alRaw16Pull = 0x800DBBEC; // type:func +alLoadParam = 0x800DBF70; // type:func +_decodeChunk = 0x800DC0FC; // type:func +alAuxBusPull = 0x800DC260; // type:func +alAuxBusParam = 0x800DC33C; // type:func +alEnvmixerPull = 0x800DC370; // type:func +alEnvmixerParam = 0x800DC83C; // type:func +_pullSubFrame = 0x800DC904; // type:func +_frexpf = 0x800DCBC8; // type:func +_ldexpf = 0x800DCC7C; // type:func +_getRate = 0x800DCC9C; // type:func +_getVol = 0x800DCE5C; // type:func +alFilterNew = 0x800DCEE0; // type:func +alMainBusPull = 0x800DCF00; // type:func +alMainBusParam = 0x800DD044; // type:func +alResamplePull = 0x800DD070; // type:func +alResampleParam = 0x800DD248; // type:func +alFxPull = 0x800DD310; // type:func +alFxParam = 0x800DD660; // type:func +alFxParamHdl = 0x800DD674; // type:func +_loadOutputBuffer = 0x800DD850; // type:func +_loadBuffer = 0x800DDA54; // type:func +_saveBuffer = 0x800DDBC0; // type:func +_filterBuffer = 0x800DDD30; // type:func +_doModFunc = 0x800DDDE8; // type:func +alSavePull = 0x800DDE80; // type:func +alSaveParam = 0x800DDF2C; // type:func +alHeapDBAlloc = 0x800DDF60; // type:func +alCopy = 0x800DDFB0; // type:func +_Litob = 0x800DDFE0; // type:func +_Ldtob = 0x800DE210; // type:func +_Ldunscale = 0x800DE63C; // type:func +_Genld = 0x800DE6D8; // type:func +__osSpDeviceBusy = 0x800DEC10; // type:func +__osSpSetPc = 0x800DEC40; // type:func +__osSpRawStartDma = 0x800DEC70; // type:func +guNormalize = 0x800DED00; // type:func +ldiv = 0x800DED60; // type:func +lldiv = 0x800DEDDC; // type:func +fmodf = 0x800DEF20; // type:func +memmove = 0x800DEF60; // type:func +absf = 0x800DEFF0; // type:func +sqrt = 0x800DF000; // type:func +Message_ResetOcarinaNoteState = 0x800DF010; // type:func +Message_UpdateOcarinaMemoryGame = 0x800DF0F4; // type:func +Message_ShouldAdvance = 0x800DF1E4; // type:func +Message_ShouldAdvanceSilent = 0x800DF29C; // type:func +Message_CloseTextbox = 0x800DF2DC; // type:func +Message_HandleChoiceSelection = 0x800DF35C; // type:func +Message_DrawTextChar = 0x800DF528; // type:func +Message_GrowTextbox = 0x800DF85C; // type:func +Message_FindMessageJPN = 0x800DFA58; // type:func +Message_FindMessageNES = 0x800DFADC; // type:func +Message_FindCreditsMessage = 0x800DFB60; // type:func +Message_SetTextColor = 0x800DFBCC; // type:func +Message_DrawTextboxIcon = 0x800DFEAC; // type:func +Message_DrawItemIcon = 0x800E06E0; // type:func +Message_HandleOcarina = 0x800E0A4C; // type:func +Message_DrawTextWide = 0x800E0BE8; // type:func +Message_DrawText = 0x800E208C; // type:func +Message_LoadItemIcon = 0x800E33C4; // type:func +Message_Decode = 0x800E3520; // type:func +Message_OpenText = 0x800E5D2C; // type:func +Message_StartTextbox = 0x800E61B0; // type:func +Message_ContinueTextbox = 0x800E6240; // type:func +Message_StartOcarinaImpl = 0x800E6364; // type:func +Message_StartOcarina = 0x800E67C0; // type:func +Message_StartOcarinaSunsSongDisabled = 0x800E67E8; // type:func +Message_GetState = 0x800E6814; // type:func +Message_DrawTextBox = 0x800E691C; // type:func +Message_SetView = 0x800E6DBC; // type:func +Message_DrawMain = 0x800E6E04; // type:func +Message_Draw = 0x800E9F58; // type:func +Message_Update = 0x800E9FF8; // type:func +Message_SetTables = 0x800EAAF8; // type:func +GameOver_Init = 0x800EAB30; // type:func +GameOver_FadeInLights = 0x800EAB44; // type:func +GameOver_Update = 0x800EABAC; // type:func +Interface_Destroy = 0x800EB070; // type:func +Interface_Init = 0x800EB08C; // type:func +Message_Init = 0x800EB474; // type:func +Regs_InitDataImpl = 0x800EB558; // type:func +Regs_InitData = 0x800EBF48; // type:func +ConsoleLogo_Calc = 0x80800000; // type:func +ConsoleLogo_SetupView = 0x80800098; // type:func +ConsoleLogo_Draw = 0x8080011C; // type:func +ConsoleLogo_Main = 0x808006C0; // type:func +ConsoleLogo_Destroy = 0x80800780; // type:func +ConsoleLogo_Init = 0x8080079C; // type:func +MapSelect_LoadTitle = 0x80800930; // type:func +MapSelect_LoadGame = 0x80800950; // type:func +MapSelect_UpdateMenu = 0x80800A40; // type:func +MapSelect_PrintMenu = 0x808013A0; // type:func +MapSelect_PrintLoadingMessage = 0x8080157C; // type:func +MapSelect_PrintAgeSetting = 0x80801608; // type:func +MapSelect_PrintCutsceneSetting = 0x8080167C; // type:func +MapSelect_DrawMenu = 0x80801838; // type:func +MapSelect_DrawLoadingScreen = 0x8080194C; // type:func +MapSelect_Draw = 0x80801A34; // type:func +MapSelect_Main = 0x80801AE8; // type:func +MapSelect_Destroy = 0x80801B14; // type:func +MapSelect_Init = 0x80801B20; // type:func +TitleSetup_SetupTitleScreen = 0x808035B0; // type:func +func_80803C5C = 0x8080361C; // type:func +TitleSetup_Main = 0x80803624; // type:func +TitleSetup_Destroy = 0x80803668; // type:func +TitleSetup_Init = 0x80803670; // type:func +FileSelect_SetupCopySource = 0x80803700; // type:func +FileSelect_SelectCopySource = 0x8080392C; // type:func +FileSelect_SetupCopyDest1 = 0x80803CD0; // type:func +FileSelect_SetupCopyDest2 = 0x80803EE4; // type:func +FileSelect_SelectCopyDest = 0x80803FD4; // type:func +FileSelect_ExitToCopySource1 = 0x80804400; // type:func +FileSelect_ExitToCopySource2 = 0x808044FC; // type:func +FileSelect_SetupCopyConfirm1 = 0x80804644; // type:func +FileSelect_SetupCopyConfirm2 = 0x80804900; // type:func +FileSelect_CopyConfirm = 0x80804968; // type:func +FileSelect_ReturnToCopyDest = 0x80804B78; // type:func +FileSelect_CopyAnim1 = 0x80804E5C; // type:func +FileSelect_CopyAnim2 = 0x80804F1C; // type:func +FileSelect_CopyAnim3 = 0x808050D8; // type:func +FileSelect_CopyAnim4 = 0x80805228; // type:func +FileSelect_CopyAnim5 = 0x80805370; // type:func +FileSelect_ExitCopyToMain = 0x8080579C; // type:func +FileSelect_SetupEraseSelect = 0x80805910; // type:func +FileSelect_EraseSelect = 0x80805B4C; // type:func +FileSelect_SetupEraseConfirm1 = 0x80805EF0; // type:func +FileSelect_SetupEraseConfirm2 = 0x808062D8; // type:func +FileSelect_EraseConfirm = 0x808063F8; // type:func +FileSelect_ExitToEraseSelect1 = 0x808065F8; // type:func +FileSelect_ExitToEraseSelect2 = 0x808066E0; // type:func +FileSelect_EraseAnim1 = 0x808069BC; // type:func +FileSelect_EraseAnim2 = 0x80806C2C; // type:func +FileSelect_EraseAnim3 = 0x80806CE4; // type:func +FileSelect_ExitEraseToMain = 0x80807004; // type:func +FileSelect_DrawCharacter = 0x808071E0; // type:func +FileSelect_DrawCharacterTransition = 0x80807318; // type:func +FileSelect_SetKeyboardVtx = 0x808074F8; // type:func +FileSelect_SetNameEntryVtx = 0x808077BC; // type:func +FileSelect_DrawKeyboard = 0x808084A0; // type:func +FileSelect_ApplyDiacriticToCharacter = 0x80808D64; // type:func +FileSelect_ApplyDiacriticToFilename = 0x80808F6C; // type:func +FileSelect_DrawNameEntry = 0x80808FEC; // type:func +FileSelect_StartNameEntry = 0x8080A450; // type:func +FileSelect_UpdateKeyboardCursor = 0x8080A504; // type:func +FileSelect_StartOptions = 0x8080AEE4; // type:func +FileSelect_UpdateOptionsMenu = 0x8080AF74; // type:func +FileSelect_DrawOptionsImpl = 0x8080B1F0; // type:func +FileSelect_DrawOptions = 0x8080C608; // type:func +FileSelect_SetView = 0x8080C630; // type:func +FileSelect_QuadTextureIA8 = 0x8080C6B4; // type:func +FileSelect_InitModeUpdate = 0x8080C894; // type:func +FileSelect_InitModeDraw = 0x8080C8EC; // type:func +FileSelect_FadeInMenuElements = 0x8080C8F8; // type:func +FileSelect_SplitNumber = 0x8080CA60; // type:func +FileSelect_StartFadeIn = 0x8080CAD4; // type:func +FileSelect_FinishFadeIn = 0x8080CB5C; // type:func +FileSelect_UpdateMainMenu = 0x8080CBF4; // type:func +FileSelect_UnusedCM31 = 0x8080D498; // type:func +FileSelect_UnusedCMDelay = 0x8080D4A4; // type:func +FileSelect_RotateToNameEntry = 0x8080D4F8; // type:func +FileSelect_RotateToOptions = 0x8080D56C; // type:func +FileSelect_RotateToMain = 0x8080D5E0; // type:func +FileSelect_PulsateCursor = 0x8080D658; // type:func +FileSelect_ConfigModeUpdate = 0x8080D754; // type:func +FileSelect_SetWindowVtx = 0x8080D790; // type:func +FileSelect_SetWindowContentVtx = 0x8080DA64; // type:func +FileSelect_DrawFileInfo = 0x8080ED28; // type:func +FileSelect_DrawWindowContents = 0x8080F4A4; // type:func +FileSelect_ConfigModeDraw = 0x80810958; // type:func +FileSelect_FadeMainToSelect = 0x80811238; // type:func +FileSelect_MoveSelectedFileToTop = 0x808113A4; // type:func +FileSelect_FadeInFileInfo = 0x808114A8; // type:func +FileSelect_ConfirmFile = 0x8081158C; // type:func +FileSelect_FadeOutFileInfo = 0x80811764; // type:func +FileSelect_MoveSelectedFileToSlot = 0x80811854; // type:func +FileSelect_FadeOut = 0x80811AAC; // type:func +FileSelect_LoadGame = 0x80811B08; // type:func +FileSelect_SelectModeUpdate = 0x80811CD0; // type:func +FileSelect_SelectModeDraw = 0x80811D0C; // type:func +FileSelect_Main = 0x808120C4; // type:func +FileSelect_InitContext = 0x8081268C; // type:func +FileSelect_Destroy = 0x80812CB8; // type:func +FileSelect_Init = 0x80812CC4; // type:func +KaleidoScope_DrawQuestStatus = 0x808141F0; // type:func +KaleidoScope_UpdateQuestStatusPoint = 0x808165DC; // type:func +KaleidoScope_DrawDebugEditorText = 0x808165F0; // type:func +KaleidoScope_DrawDigit = 0x808168E4; // type:func +KaleidoScope_DrawDebugEditor = 0x80816A58; // type:func +KaleidoScope_DrawEquipmentImage = 0x808185A0; // type:func +KaleidoScope_DrawPlayerWork = 0x808189A0; // type:func +KaleidoScope_DrawEquipment = 0x80818B44; // type:func +KaleidoScope_DrawAmmoCount = 0x8081A020; // type:func +KaleidoScope_SetCursorPos = 0x8081A55C; // type:func +KaleidoScope_SetItemCursorPos = 0x8081A58C; // type:func +KaleidoScope_DrawItemSelect = 0x8081A5B8; // type:func +KaleidoScope_UpdateItemEquip = 0x8081B414; // type:func +KaleidoScope_DrawDungeonMap = 0x8081C010; // type:func +KaleidoScope_DrawWorldMap = 0x8081D89C; // type:func +KaleidoScope_UpdatePrompt = 0x8081F5E0; // type:func +KaleidoScope_SetupPlayerPreRender = 0x8081F7E0; // type:func +KaleidoScope_ProcessPlayerPreRender = 0x8081F8CC; // type:func +KaleidoScope_QuadTextureIA4 = 0x8081F908; // type:func +KaleidoScope_QuadTextureIA8 = 0x8081FAE4; // type:func +KaleidoScope_OverridePalIndexCI4 = 0x8081FCC4; // type:func +KaleidoScope_MoveCursorToSpecialPos = 0x8081FD34; // type:func +KaleidoScope_DrawQuadTextureRGBA32 = 0x8081FD88; // type:func +KaleidoScope_SetDefaultCursor = 0x8081FF88; // type:func +KaleidoScope_SetupPageSwitch = 0x80820038; // type:func +KaleidoScope_HandlePageToggles = 0x808201B4; // type:func +KaleidoScope_DrawCursor = 0x808202AC; // type:func +KaleidoScope_DrawPageSections = 0x8082064C; // type:func +KaleidoScope_DrawPages = 0x80820900; // type:func +KaleidoScope_DrawInfoPanel = 0x80821FB8; // type:func +KaleidoScope_UpdateNamePanel = 0x80823404; // type:func +KaleidoScope_UpdatePageSwitch = 0x8082359C; // type:func +KaleidoScope_SetView = 0x8082376C; // type:func +KaleidoScope_SetPageVertices = 0x808237D8; // type:func +KaleidoScope_SetVertices = 0x8082459C; // type:func +KaleidoScope_DrawGameOver = 0x80825730; // type:func +KaleidoScope_Draw = 0x80825E18; // type:func +KaleidoScope_GrayOutTextureRGBA32 = 0x80826064; // type:func +KaleidoScope_UpdateOpening = 0x80826114; // type:func +KaleidoScope_UpdateCursorVtx = 0x808262F0; // type:func +KaleidoScope_LoadDungeonMap = 0x80826568; // type:func +KaleidoScope_UpdateDungeonMap = 0x808265F8; // type:func +KaleidoScope_Update = 0x808266DC; // type:func +PauseMapMark_Init = 0x80828BD0; // type:func +PauseMapMark_Clear = 0x80828C04; // type:func +PauseMapMark_DrawForDungeon = 0x80828C18; // type:func +PauseMapMark_Draw = 0x8082922C; // type:func +Player_ZeroSpeedXZ = 0x80830290; // type:func +func_80832224 = 0x808302A8; // type:func +Player_IsTalking = 0x808302D0; // type:func +Player_AnimPlayOnce = 0x808302EC; // type:func +Player_AnimPlayLoop = 0x80830310; // type:func +Player_AnimPlayLoopAdjusted = 0x80830334; // type:func +Player_AnimPlayOnceAdjusted = 0x80830364; // type:func +Player_ApplyYawFromAnim = 0x80830394; // type:func +func_80832318 = 0x808303B4; // type:func +func_80832340 = 0x808303E0; // type:func +Player_DetachHeldActor = 0x80830450; // type:func +func_80832440 = 0x808304DC; // type:func +Player_PutAwayHeldItem = 0x808305C4; // type:func +func_80832564 = 0x80830600; // type:func +func_80832594 = 0x80830638; // type:func +func_80832630 = 0x808306D8; // type:func +Player_RequestRumble = 0x808306F4; // type:func +Player_PlayVoiceSfx = 0x80830740; // type:func +func_808326F0 = 0x808307A0; // type:func +Player_ApplyFloorSfxOffset = 0x8083080C; // type:func +Player_PlayFloorSfx = 0x80830828; // type:func +Player_ApplyFloorAndAgeSfxOffsets = 0x80830860; // type:func +Player_PlayFloorSfxByAge = 0x80830888; // type:func +Player_PlaySteppingSfx = 0x808308C0; // type:func +Player_PlayJumpingSfx = 0x8083091C; // type:func +Player_PlayLandingSfx = 0x80830968; // type:func +func_808328EC = 0x808309B4; // type:func +Player_ProcessAnimSfxList = 0x808309E8; // type:func +Player_AnimChangeOnceMorph = 0x80830BD0; // type:func +Player_AnimChangeOnceMorphAdjusted = 0x80830C3C; // type:func +Player_AnimChangeLoopMorph = 0x80830CAC; // type:func +Player_AnimChangeFreeze = 0x80830CF4; // type:func +Player_AnimChangeLoopSlowMorph = 0x80830D38; // type:func +func_80832CB0 = 0x80830D80; // type:func +Player_ResetAnimMovement = 0x80830DD4; // type:func +Player_ResetAnimMovementScaledByAge = 0x80830DFC; // type:func +Player_ZeroRootLimbYaw = 0x80830E88; // type:func +Player_FinishAnimMovement = 0x80830E98; // type:func +Player_ApplyAnimMovementScaledByAge = 0x80830F24; // type:func +Player_StartAnimMovement = 0x80831034; // type:func +Player_AnimReplacePlayOnceSetSpeed = 0x808310DC; // type:func +Player_AnimReplacePlayOnce = 0x80831124; // type:func +Player_AnimReplacePlayOnceAdjusted = 0x8083114C; // type:func +Player_AnimReplaceNormalPlayOnceAdjusted = 0x80831174; // type:func +Player_AnimReplacePlayLoopSetSpeed = 0x80831194; // type:func +Player_AnimReplacePlayLoop = 0x808311DC; // type:func +Player_AnimReplacePlayLoopAdjusted = 0x80831204; // type:func +Player_AnimReplaceNormalPlayLoopAdjusted = 0x8083122C; // type:func +Player_ProcessControlStick = 0x8083124C; // type:func +func_8083328C = 0x80831378; // type:func +func_808332B8 = 0x808313A8; // type:func +func_808332E4 = 0x808313D4; // type:func +func_808332F4 = 0x808313E8; // type:func +Player_GetIdleAnim = 0x8083142C; // type:func +Player_CheckForIdleAnim = 0x80831448; // type:func +Player_ProcessFidgetAnimSfxList = 0x808314FC; // type:func +func_80833438 = 0x80831538; // type:func +func_808334B4 = 0x808315B4; // type:func +func_808334E4 = 0x808315E8; // type:func +func_80833528 = 0x80831630; // type:func +func_8083356C = 0x80831678; // type:func +func_808335B0 = 0x808316C0; // type:func +func_808335F4 = 0x80831708; // type:func +Player_SetUpperActionFunc = 0x80831750; // type:func +Player_InitItemActionWithAnim = 0x8083177C; // type:func +Player_ItemToItemAction = 0x8083183C; // type:func +Player_InitDefaultIA = 0x80831888; // type:func +Player_InitDekuStickIA = 0x80831898; // type:func +Player_InitHammerIA = 0x808318B4; // type:func +Player_InitBowOrSlingshotIA = 0x808318C4; // type:func +Player_InitExplosiveIA = 0x808318FC; // type:func +Player_InitHookshotIA = 0x80831A3C; // type:func +Player_InitBoomerangIA = 0x80831AAC; // type:func +Player_InitItemAction = 0x80831AC8; // type:func +func_80833A20 = 0x80831B54; // type:func +Player_FriendlyLockOnOrParallel = 0x80831C5C; // type:func +Player_UpdateHostileLockOn = 0x80831C84; // type:func +Player_IsZTargeting = 0x80831CFC; // type:func +Player_IsZTargetingWithHostileUpdate = 0x80831D38; // type:func +func_80833C3C = 0x80831D74; // type:func +Player_ItemIsInUse = 0x80831D8C; // type:func +Player_ItemIsItemAction = 0x80831DD8; // type:func +Player_GetItemOnButton = 0x80831E20; // type:func +Player_ProcessItemButtons = 0x80831F3C; // type:func +Player_StartChangingHeldItem = 0x80832224; // type:func +Player_UpdateItems = 0x808323DC; // type:func +func_80834380 = 0x808324C4; // type:func +func_8083442C = 0x80832570; // type:func +Player_FinishItemChange = 0x808326D8; // type:func +func_80834644 = 0x80832788; // type:func +func_808346C4 = 0x80832808; // type:func +func_80834758 = 0x8083289C; // type:func +func_8083485C = 0x808329A4; // type:func +func_80834894 = 0x808329DC; // type:func +Player_WaitToFinishItemChange = 0x80832A38; // type:func +func_8083499C = 0x80832AE8; // type:func +Player_UpperAction_Sword = 0x80832B28; // type:func +Player_UpperAction_ChangeHeldItem = 0x80832B78; // type:func +func_80834B5C = 0x80832CA8; // type:func +func_80834BD4 = 0x80832D24; // type:func +func_80834C74 = 0x80832DC8; // type:func +func_80834D2C = 0x80832E80; // type:func +func_80834E44 = 0x80832F98; // type:func +func_80834E7C = 0x80832FD0; // type:func +func_80834EB8 = 0x8083300C; // type:func +func_80834F2C = 0x80833080; // type:func +func_80834FBC = 0x80833110; // type:func +func_8083501C = 0x80833170; // type:func +func_808350A4 = 0x808331F8; // type:func +func_808351D4 = 0x8083332C; // type:func +func_808353D8 = 0x80833538; // type:func +func_80835588 = 0x808336E8; // type:func +Player_SetParallel = 0x80833744; // type:func +func_80835644 = 0x808337B0; // type:func +func_80835688 = 0x808337F8; // type:func +Player_UpperAction_CarryActor = 0x80833858; // type:func +func_808357E8 = 0x80833958; // type:func +func_80835800 = 0x80833974; // type:func +func_80835884 = 0x808339F8; // type:func +func_808358F0 = 0x80833A64; // type:func +func_808359FC = 0x80833B78; // type:func +func_80835B60 = 0x80833CE0; // type:func +func_80835C08 = 0x80833D88; // type:func +Player_SetupAction = 0x80833DE0; // type:func +Player_SetupActionPreserveAnimMovement = 0x80833F3C; // type:func +Player_SetupActionPreserveItemAction = 0x80833F70; // type:func +func_80835E44 = 0x80833FD4; // type:func +func_80835EA4 = 0x80834038; // type:func +Player_DestroyHookshot = 0x80834094; // type:func +Player_UseItem = 0x808340E4; // type:func +func_80836448 = 0x808345EC; // type:func +Player_CanUpdateItems = 0x8083476C; // type:func +Player_UpdateUpperBody = 0x80834818; // type:func +Player_SetupWaitForPutAway = 0x80834A40; // type:func +Player_UpdateShapeYaw = 0x80834A98; // type:func +Player_ScaledStepBinangClamped = 0x80834B74; // type:func +func_80836AB8 = 0x80834C60; // type:func +Player_UpdateZTargeting = 0x80834D94; // type:func +Player_CalcSpeedAndYawFromControlStick = 0x80835158; // type:func +Player_DecelerateToZero = 0x808353C8; // type:func +Player_GetMovementSpeedAndYaw = 0x8083541C; // type:func +Player_TryActionHandlerList = 0x808354FC; // type:func +Player_TryActionInterrupt = 0x80835658; // type:func +func_80837530 = 0x808356F0; // type:func +Player_CanSpinAttack = 0x808357A0; // type:func +func_80837704 = 0x808358D0; // type:func +func_808377DC = 0x808359A8; // type:func +func_80837818 = 0x808359EC; // type:func +func_80837918 = 0x80835AEC; // type:func +func_80837948 = 0x80835B1C; // type:func +Player_SetIntangibility = 0x80835CBC; // type:func +Player_SetInvulnerability = 0x80835CD8; // type:func +func_80837B18 = 0x80835CF8; // type:func +func_80837B60 = 0x80835D40; // type:func +func_80837B9C = 0x80835D7C; // type:func +func_80837C0C = 0x80835DEC; // type:func +func_80838144 = 0x80836324; // type:func +func_8083816C = 0x8083634C; // type:func +func_8083819C = 0x8083637C; // type:func +func_8083821C = 0x80836400; // type:func +func_80838280 = 0x80836464; // type:func +func_808382BC = 0x808364A0; // type:func +func_808382DC = 0x808364C0; // type:func +func_80838940 = 0x80836B24; // type:func +func_808389E8 = 0x80836BC8; // type:func +Player_ActionHandler_12 = 0x80836BF4; // type:func +func_80838E70 = 0x80837050; // type:func +func_80838F18 = 0x80837100; // type:func +func_80838F5C = 0x8083714C; // type:func +func_80838FB8 = 0x808371B0; // type:func +Player_HandleExitsAndVoids = 0x8083722C; // type:func +Player_GetRelativePosition = 0x808377D0; // type:func +Player_SpawnFairy = 0x80837874; // type:func +func_808396F4 = 0x808378E8; // type:func +func_8083973C = 0x80837934; // type:func +Player_PosVsWallLineTest = 0x80837960; // type:func +Player_ActionHandler_1 = 0x808379FC; // type:func +func_80839E88 = 0x80838094; // type:func +func_80839F30 = 0x80838138; // type:func +func_80839F90 = 0x80838194; // type:func +func_80839FFC = 0x80838200; // type:func +func_8083A060 = 0x80838268; // type:func +func_8083A098 = 0x808382A4; // type:func +func_8083A0D4 = 0x808382E4; // type:func +func_8083A0F4 = 0x80838304; // type:func +Player_SetupTalk = 0x80838508; // type:func +func_8083A360 = 0x80838578; // type:func +func_8083A388 = 0x808385A0; // type:func +func_8083A3B0 = 0x808385C8; // type:func +func_8083A40C = 0x80838620; // type:func +func_8083A434 = 0x80838648; // type:func +func_8083A4A8 = 0x808386BC; // type:func +func_8083A5C4 = 0x808387D8; // type:func +func_8083A6AC = 0x808388CC; // type:func +func_8083A9B8 = 0x80838BD4; // type:func +func_8083AA10 = 0x80838C2C; // type:func +func_8083AD4C = 0x80838F68; // type:func +Player_StartCsAction = 0x80838FF0; // type:func +func_8083AE40 = 0x8083905C; // type:func +func_8083AF44 = 0x808390E4; // type:func +func_8083B010 = 0x808391B8; // type:func +Player_ActionHandler_13 = 0x808391EC; // type:func +Player_ActionHandler_Talk = 0x808397F0; // type:func +func_8083B8F4 = 0x80839AA0; // type:func +Player_ActionHandler_0 = 0x80839B48; // type:func +func_8083BA90 = 0x80839C40; // type:func +func_8083BB20 = 0x80839CD8; // type:func +func_8083BBA0 = 0x80839D58; // type:func +Player_SetupRoll = 0x80839DC0; // type:func +Player_TryRoll = 0x80839E38; // type:func +func_8083BCD0 = 0x80839E8C; // type:func +Player_ActionHandler_10 = 0x80839F78; // type:func +func_8083BF50 = 0x8083A110; // type:func +func_8083C0B8 = 0x8083A274; // type:func +func_8083C0E8 = 0x8083A2AC; // type:func +func_8083C148 = 0x8083A308; // type:func +Player_ActionHandler_Roll = 0x8083A3A4; // type:func +Player_ActionHandler_11 = 0x8083A480; // type:func +func_8083C484 = 0x8083A658; // type:func +func_8083C50C = 0x8083A6E0; // type:func +Player_ActionHandler_8 = 0x8083A718; // type:func +func_8083C61C = 0x8083A7F4; // type:func +func_8083C6B8 = 0x8083A890; // type:func +func_8083C858 = 0x8083AA34; // type:func +func_8083C8DC = 0x8083AAB8; // type:func +Player_SetStartingMovement = 0x8083AAEC; // type:func +Player_StartMode_Idle = 0x8083AC00; // type:func +Player_StartMode_MoveForwardSlow = 0x8083AC38; // type:func +Player_StartMode_MoveForward = 0x8083AC80; // type:func +func_8083CB2C = 0x8083AD14; // type:func +func_8083CB94 = 0x8083AD78; // type:func +func_8083CBF0 = 0x8083ADD4; // type:func +func_8083CC9C = 0x8083AE7C; // type:func +func_8083CD00 = 0x8083AEDC; // type:func +Player_SetupTurnInPlace = 0x8083AF30; // type:func +func_8083CE0C = 0x8083AFEC; // type:func +func_8083CEAC = 0x8083B088; // type:func +func_8083CF10 = 0x8083B0E8; // type:func +func_8083CF5C = 0x8083B130; // type:func +func_8083CFA8 = 0x8083B178; // type:func +func_8083D0A8 = 0x8083B280; // type:func +func_8083D12C = 0x8083B308; // type:func +func_8083D330 = 0x8083B510; // type:func +func_8083D36C = 0x8083B54C; // type:func +func_8083D53C = 0x8083B720; // type:func +func_8083D6EC = 0x8083B8D0; // type:func +func_8083DB98 = 0x8083BD80; // type:func +func_8083DC54 = 0x8083BE3C; // type:func +func_8083DDC8 = 0x8083BFB0; // type:func +func_8083DF68 = 0x8083C158; // type:func +func_8083DFE0 = 0x8083C1D4; // type:func +Player_ActionHandler_3 = 0x8083C2F4; // type:func +Player_GetSlopeDirection = 0x8083C494; // type:func +Player_HandleSlopes = 0x8083C510; // type:func +func_8083E4C4 = 0x8083C6C4; // type:func +Player_ActionHandler_2 = 0x8083C7AC; // type:func +func_8083EA94 = 0x8083CC44; // type:func +Player_CanThrowCarriedActor = 0x8083CCA0; // type:func +Player_ActionHandler_9 = 0x8083CCF4; // type:func +func_8083EC18 = 0x8083CDC8; // type:func +func_8083F070 = 0x8083D224; // type:func +Player_TryEnteringCrawlspace = 0x8083D27C; // type:func +func_8083F360 = 0x8083D518; // type:func +func_8083F524 = 0x8083D6DC; // type:func +Player_TryLeavingCrawlspace = 0x8083D728; // type:func +func_8083F72C = 0x8083D8E4; // type:func +Player_ActionHandler_5 = 0x8083D970; // type:func +func_8083F9D0 = 0x8083DB88; // type:func +func_8083FAB8 = 0x8083DC70; // type:func +func_8083FB14 = 0x8083DCCC; // type:func +func_8083FB7C = 0x8083DD34; // type:func +func_8083FBC0 = 0x8083DD74; // type:func +func_8083FC68 = 0x8083DE24; // type:func +func_8083FD78 = 0x8083DF34; // type:func +func_8083FFB8 = 0x8083E178; // type:func +func_80840058 = 0x8083E218; // type:func +func_80840138 = 0x8083E300; // type:func +func_808401B0 = 0x8083E378; // type:func +func_8084021C = 0x8083E3E4; // type:func +func_8084029C = 0x8083E464; // type:func +Player_Action_80840450 = 0x8083E61C; // type:func +Player_Action_808407CC = 0x8083E998; // type:func +Player_ChooseNextIdleAnim = 0x8083EB98; // type:func +Player_Action_Idle = 0x8083ED94; // type:func +Player_Action_80840DE4 = 0x8083EFB4; // type:func +func_80841138 = 0x8083F308; // type:func +func_8084140C = 0x8083F5E4; // type:func +func_80841458 = 0x8083F630; // type:func +Player_Action_808414F8 = 0x8083F6D0; // type:func +func_808416C0 = 0x8083F8A4; // type:func +Player_Action_8084170C = 0x8083F8F0; // type:func +Player_Action_808417FC = 0x8083F9E0; // type:func +func_80841860 = 0x8083FA44; // type:func +Player_Action_8084193C = 0x8083FB20; // type:func +Player_Action_TurnInPlace = 0x8083FD84; // type:func +func_80841CC4 = 0x8083FEA0; // type:func +func_80841EE4 = 0x808400C4; // type:func +Player_Action_80842180 = 0x80840368; // type:func +Player_Action_8084227C = 0x8084046C; // type:func +Player_Action_808423EC = 0x808405E0; // type:func +Player_Action_8084251C = 0x80840710; // type:func +func_8084260C = 0x80840800; // type:func +func_8084269C = 0x80840890; // type:func +Player_Action_8084279C = 0x80840990; // type:func +func_8084285C = 0x80840A50; // type:func +func_808428D8 = 0x80840ACC; // type:func +func_80842964 = 0x80840B5C; // type:func +Player_RequestQuake = 0x80840BB4; // type:func +func_80842A28 = 0x80840C28; // type:func +func_80842A88 = 0x80840C8C; // type:func +func_80842AC4 = 0x80840CC8; // type:func +func_80842B7C = 0x80840D84; // type:func +func_80842CF0 = 0x80840EFC; // type:func +func_80842D20 = 0x80840F34; // type:func +func_80842DF4 = 0x8084100C; // type:func +Player_Action_80843188 = 0x808413A0; // type:func +Player_Action_808435C4 = 0x808417DC; // type:func +Player_Action_8084370C = 0x80841928; // type:func +Player_Action_8084377C = 0x8084199C; // type:func +Player_Action_80843954 = 0x80841B78; // type:func +Player_Action_80843A38 = 0x80841C60; // type:func +func_80843AE8 = 0x80841D14; // type:func +Player_Action_80843CEC = 0x80841F18; // type:func +func_80843E14 = 0x80842044; // type:func +func_80843E64 = 0x80842098; // type:func +func_8084409C = 0x808422D0; // type:func +Player_Action_8084411C = 0x80842358; // type:func +Player_Action_Roll = 0x8084294C; // type:func +Player_Action_80844A44 = 0x80842C88; // type:func +Player_Action_80844AF4 = 0x80842D38; // type:func +func_80844BE4 = 0x80842E28; // type:func +func_80844CF8 = 0x80842F40; // type:func +func_80844D30 = 0x80842F78; // type:func +func_80844D68 = 0x80842FB0; // type:func +func_80844DC8 = 0x80843014; // type:func +func_80844E3C = 0x80843088; // type:func +Player_Action_80844E68 = 0x808430B8; // type:func +Player_Action_80845000 = 0x80843250; // type:func +Player_Action_80845308 = 0x80843558; // type:func +Player_Action_80845668 = 0x808438B8; // type:func +Player_Action_WaitForPutAway = 0x80843B24; // type:func +func_80845964 = 0x80843BB8; // type:func +func_80845BA0 = 0x80843DFC; // type:func +func_80845C68 = 0x80843EC8; // type:func +Player_Action_80845CA4 = 0x80843F08; // type:func +Player_Action_80845EF8 = 0x80844168; // type:func +Player_Action_80846050 = 0x808442C0; // type:func +Player_Action_80846120 = 0x80844398; // type:func +Player_Action_80846260 = 0x808444D8; // type:func +Player_Action_80846358 = 0x808445D8; // type:func +Player_Action_80846408 = 0x80844688; // type:func +Player_Action_808464B0 = 0x80844730; // type:func +Player_Action_80846578 = 0x808447FC; // type:func +Player_DoNothing = 0x808448C4; // type:func +Player_StartMode_Nothing = 0x808448D4; // type:func +Player_StartMode_BlueWarp = 0x808448F0; // type:func +Player_PutSwordInHand = 0x808449B0; // type:func +Player_StartMode_TimeTravel = 0x80844A64; // type:func +Player_StartMode_Door = 0x80844B40; // type:func +Player_StartMode_Grotto = 0x80844B88; // type:func +Player_StartMode_KnockedOver = 0x80844C18; // type:func +Player_StartMode_WarpSong = 0x80844C5C; // type:func +Player_SpawnMagicSpell = 0x80844C9C; // type:func +Player_StartMode_FaroresWind = 0x80844D08; // type:func +Player_InitCommon = 0x80844D48; // type:func +Player_Init = 0x80844F78; // type:func +Player_ApproachZeroBinang = 0x80845488; // type:func +func_80847298 = 0x8084552C; // type:func +Player_UpdateInterface = 0x80845668; // type:func +Player_UpdateHoverBoots = 0x80845D18; // type:func +Player_ProcessSceneCollision = 0x80845E40; // type:func +Player_UpdateCamAndSeqModes = 0x80846948; // type:func +Player_UpdateBurningDekuStick = 0x80846CA8; // type:func +Player_UpdateBodyShock = 0x80846DF0; // type:func +Player_UpdateBodyBurn = 0x80846F20; // type:func +Player_DetectRumbleSecrets = 0x808471A4; // type:func +Player_UpdateCommon = 0x8084724C; // type:func +Player_Update = 0x80848158; // type:func +Player_DrawGameplay = 0x80848390; // type:func +Player_Draw = 0x80848834; // type:func +Player_Destroy = 0x80848D94; // type:func +func_8084ABD8 = 0x80848E18; // type:func +func_8084AEEC = 0x8084912C; // type:func +func_8084B000 = 0x80849248; // type:func +func_8084B158 = 0x808493A8; // type:func +Player_Action_8084B1D8 = 0x80849428; // type:func +func_8084B3CC = 0x80849618; // type:func +func_8084B498 = 0x808496EC; // type:func +func_8084B4D4 = 0x80849728; // type:func +Player_Action_Talk = 0x80849788; // type:func +Player_Action_8084B78C = 0x808499F0; // type:func +func_8084B840 = 0x80849AA4; // type:func +Player_Action_8084B898 = 0x80849B00; // type:func +Player_Action_8084B9E4 = 0x80849C4C; // type:func +Player_Action_8084BBE4 = 0x80849E50; // type:func +Player_Action_8084BDFC = 0x8084A068; // type:func +func_8084BEE4 = 0x8084A150; // type:func +Player_Action_8084BF1C = 0x8084A188; // type:func +Player_Action_8084C5F8 = 0x8084A868; // type:func +Player_Action_8084C760 = 0x8084A9D0; // type:func +Player_Action_8084C81C = 0x8084AA8C; // type:func +func_8084C89C = 0x8084AB0C; // type:func +func_8084C9BC = 0x8084AC38; // type:func +func_8084CBF4 = 0x8084AE74; // type:func +Player_Action_8084CC98 = 0x8084AF1C; // type:func +Player_Action_8084D3E4 = 0x8084B66C; // type:func +func_8084D530 = 0x8084B7C0; // type:func +func_8084D574 = 0x8084B808; // type:func +func_8084D5CC = 0x8084B864; // type:func +Player_Action_8084D610 = 0x8084B8B0; // type:func +Player_Action_8084D7C4 = 0x8084BA60; // type:func +Player_Action_8084D84C = 0x8084BAF0; // type:func +func_8084D980 = 0x8084BC24; // type:func +Player_Action_8084DAB4 = 0x8084BD5C; // type:func +func_8084DBC4 = 0x8084BE6C; // type:func +Player_Action_8084DC48 = 0x8084BEF0; // type:func +func_8084DF6C = 0x8084C21C; // type:func +func_8084DFAC = 0x8084C260; // type:func +func_8084DFF4 = 0x8084C2AC; // type:func +Player_Action_8084E1EC = 0x8084C4A4; // type:func +Player_Action_8084E30C = 0x8084C5C4; // type:func +Player_Action_8084E368 = 0x8084C624; // type:func +Player_Action_8084E3C4 = 0x8084C684; // type:func +Player_Action_8084E604 = 0x8084C8C4; // type:func +Player_Action_8084E6D4 = 0x8084C994; // type:func +func_8084E988 = 0x8084CC48; // type:func +Player_Action_TimeTravelEnd = 0x8084CC6C; // type:func +Player_Action_8084EAC0 = 0x8084CD80; // type:func +Player_Action_SwingBottle = 0x8084CF6C; // type:func +Player_Action_8084EED8 = 0x8084D1A4; // type:func +Player_Action_8084EFC0 = 0x8084D28C; // type:func +Player_Action_ExchangeItem = 0x8084D3D4; // type:func +Player_Action_8084F308 = 0x8084D5DC; // type:func +Player_Action_SlideOnSlope = 0x8084D664; // type:func +Player_Action_WaitForCutscene = 0x8084D8DC; // type:func +Player_Action_StartWarpSongArrive = 0x8084D96C; // type:func +Player_Action_BlueWarpArrive = 0x8084D9E4; // type:func +Player_Action_8084F88C = 0x8084DB60; // type:func +Player_Action_TryOpeningDoor = 0x8084DC74; // type:func +Player_Action_ExitGrotto = 0x8084DC94; // type:func +Player_Action_8084FA54 = 0x8084DD28; // type:func +Player_Action_8084FB10 = 0x8084DDE4; // type:func +Player_Action_8084FBF4 = 0x8084DEC8; // type:func +func_8084FF7C = 0x8084DF80; // type:func +Player_UpdateBunnyEars = 0x8084E034; // type:func +Player_ActionHandler_7 = 0x8084E22C; // type:func +Player_Action_808502D0 = 0x8084E2D8; // type:func +Player_Action_808505DC = 0x8084E5E8; // type:func +Player_Action_8085063C = 0x8084E648; // type:func +Player_Action_FaroresWindArrive = 0x8084E778; // type:func +Player_Action_808507F4 = 0x8084E800; // type:func +Player_Action_HookshotFly = 0x8084EAFC; // type:func +Player_Action_80850C68 = 0x8084EC7C; // type:func +Player_Action_80850E84 = 0x8084EE98; // type:func +Player_AnimChangeOnceMorphZeroRootYawSpeed = 0x8084EEEC; // type:func +Player_AnimChangeOnceMorphAdjustedZeroRootYawSpeed = 0x8084EF30; // type:func +Player_AnimChangeLoopMorphAdjustedZeroRootYawSpeed = 0x8084EFB0; // type:func +func_80851008 = 0x8084F01C; // type:func +func_80851030 = 0x8084F044; // type:func +func_80851050 = 0x8084F064; // type:func +func_80851094 = 0x8084F0A8; // type:func +func_808510B4 = 0x8084F0C8; // type:func +func_808510D4 = 0x8084F0E8; // type:func +func_808510F4 = 0x8084F108; // type:func +func_80851114 = 0x8084F128; // type:func +func_80851134 = 0x8084F148; // type:func +func_80851154 = 0x8084F168; // type:func +func_80851174 = 0x8084F188; // type:func +func_80851194 = 0x8084F1A8; // type:func +func_808511B4 = 0x8084F1C8; // type:func +func_808511D4 = 0x8084F1E8; // type:func +func_808511FC = 0x8084F214; // type:func +func_80851248 = 0x8084F268; // type:func +func_80851294 = 0x8084F2BC; // type:func +func_808512E0 = 0x8084F310; // type:func +func_80851314 = 0x8084F348; // type:func +func_80851368 = 0x8084F39C; // type:func +func_808513BC = 0x8084F3F0; // type:func +func_808514C0 = 0x8084F4F8; // type:func +func_8085157C = 0x8084F5B4; // type:func +func_808515A4 = 0x8084F5E0; // type:func +func_80851688 = 0x8084F6C4; // type:func +func_80851750 = 0x8084F794; // type:func +func_80851788 = 0x8084F7D0; // type:func +func_80851828 = 0x8084F870; // type:func +func_808518DC = 0x8084F928; // type:func +func_8085190C = 0x8084F95C; // type:func +func_80851998 = 0x8084F9E8; // type:func +func_808519C0 = 0x8084FA10; // type:func +func_808519EC = 0x8084FA3C; // type:func +func_80851A50 = 0x8084FAA0; // type:func +func_80851B90 = 0x8084FBE0; // type:func +func_80851BE8 = 0x8084FC3C; // type:func +func_80851CA4 = 0x8084FCFC; // type:func +func_80851D2C = 0x8084FD88; // type:func +func_80851D80 = 0x8084FDE0; // type:func +func_80851DEC = 0x8084FE54; // type:func +func_80851E28 = 0x8084FE94; // type:func +func_80851E64 = 0x8084FED4; // type:func +func_80851E90 = 0x8084FF00; // type:func +func_80851ECC = 0x8084FF40; // type:func +func_80851F14 = 0x8084FF90; // type:func +func_80851F84 = 0x80850004; // type:func +func_80851FB0 = 0x80850030; // type:func +func_80852048 = 0x808500CC; // type:func +func_80852080 = 0x80850108; // type:func +func_808520BC = 0x80850148; // type:func +func_80852174 = 0x80850200; // type:func +func_808521B8 = 0x8085024C; // type:func +func_808521F4 = 0x8085028C; // type:func +func_80852234 = 0x808502CC; // type:func +func_8085225C = 0x808502F8; // type:func +func_80852280 = 0x8085031C; // type:func +func_80852298 = 0x80850338; // type:func +func_80852328 = 0x808503CC; // type:func +func_80852358 = 0x808503FC; // type:func +func_80852388 = 0x8085042C; // type:func +func_80852414 = 0x808504BC; // type:func +func_80852450 = 0x808504FC; // type:func +func_80852480 = 0x8085052C; // type:func +func_808524B0 = 0x8085055C; // type:func +func_808524D0 = 0x80850580; // type:func +func_80852514 = 0x808505C8; // type:func +func_80852544 = 0x808505FC; // type:func +func_80852554 = 0x80850610; // type:func +func_80852564 = 0x80850624; // type:func +func_808525C0 = 0x80850688; // type:func +func_80852608 = 0x808506D4; // type:func +func_80852648 = 0x8085071C; // type:func +func_808526EC = 0x808507C4; // type:func +func_8085283C = 0x8085091C; // type:func +func_808528C8 = 0x808509AC; // type:func +func_80852944 = 0x80850A2C; // type:func +func_808529D0 = 0x80850AB8; // type:func +func_80852A54 = 0x80850B40; // type:func +func_80852B4C = 0x80850C38; // type:func +func_80852C0C = 0x80850CF8; // type:func +func_80852C50 = 0x80850D3C; // type:func +Player_Action_CsAction = 0x80850EF8; // type:func +Player_IsDroppingFish = 0x80850FA0; // type:func +Player_StartFishing = 0x80850FD4; // type:func +func_80852F38 = 0x80851010; // type:func +Player_TryCsAction = 0x808510DC; // type:func +func_80853080 = 0x80851160; // type:func +Player_InflictDamage = 0x808511BC; // type:func +Player_StartTalking = 0x80851224; // type:func +EnTest_SetupAction = 0x8085D5D0; // type:func +EnTest_Init = 0x8085D5DC; // type:func +EnTest_Destroy = 0x8085D828; // type:func +EnTest_ChooseRandomAction = 0x8085D8C0; // type:func +EnTest_ChooseAction = 0x8085DA3C; // type:func +EnTest_SetupWaitGround = 0x8085DD5C; // type:func +EnTest_WaitGround = 0x8085DDD4; // type:func +EnTest_SetupWaitAbove = 0x8085DEB4; // type:func +EnTest_WaitAbove = 0x8085DF28; // type:func +EnTest_SetupIdle = 0x8085DFF4; // type:func +EnTest_Idle = 0x8085E078; // type:func +EnTest_Fall = 0x8085E2A8; // type:func +EnTest_Land = 0x8085E35C; // type:func +EnTest_SetupWalkAndBlock = 0x8085E3CC; // type:func +EnTest_WalkAndBlock = 0x8085E490; // type:func +func_80860BDC = 0x8085EB74; // type:func +func_80860C24 = 0x8085EBBC; // type:func +func_80860EC0 = 0x8085EE58; // type:func +func_80860F84 = 0x8085EF1C; // type:func +EnTest_SetupSlashDown = 0x8085F3B0; // type:func +EnTest_SlashDown = 0x8085F434; // type:func +EnTest_SetupSlashDownEnd = 0x8085F540; // type:func +EnTest_SlashDownEnd = 0x8085F590; // type:func +EnTest_SetupSlashUp = 0x8085F7BC; // type:func +EnTest_SlashUp = 0x8085F838; // type:func +EnTest_SetupJumpBack = 0x8085F8F0; // type:func +EnTest_JumpBack = 0x8085F990; // type:func +EnTest_SetupJumpslash = 0x8085FB38; // type:func +EnTest_Jumpslash = 0x8085FBE4; // type:func +EnTest_SetupJumpUp = 0x8085FCF4; // type:func +EnTest_JumpUp = 0x8085FD6C; // type:func +EnTest_SetupStopAndBlock = 0x8085FE64; // type:func +EnTest_StopAndBlock = 0x8085FF24; // type:func +EnTest_SetupIdleFromBlock = 0x8085FFF4; // type:func +EnTest_IdleFromBlock = 0x80860040; // type:func +func_80862154 = 0x808600F8; // type:func +func_808621D4 = 0x80860178; // type:func +func_80862398 = 0x80860340; // type:func +func_80862418 = 0x808603C0; // type:func +EnTest_SetupStunned = 0x80860524; // type:func +EnTest_Stunned = 0x80860600; // type:func +func_808627C4 = 0x80860778; // type:func +func_808628C8 = 0x8086087C; // type:func +func_80862DBC = 0x80860D74; // type:func +func_80862E6C = 0x80860E28; // type:func +func_80862FA8 = 0x80860F64; // type:func +func_80863044 = 0x80861000; // type:func +func_808630F0 = 0x808610AC; // type:func +func_8086318C = 0x80861148; // type:func +EnTest_SetupRecoil = 0x808611FC; // type:func +EnTest_Recoil = 0x80861250; // type:func +EnTest_Rise = 0x8086131C; // type:func +func_808633E8 = 0x808613A4; // type:func +EnTest_UpdateHeadRot = 0x80861420; // type:func +EnTest_UpdateDamage = 0x808614B8; // type:func +EnTest_Update = 0x80861658; // type:func +EnTest_OverrideLimbDraw = 0x80861A84; // type:func +EnTest_PostLimbDraw = 0x80861C58; // type:func +EnTest_Draw = 0x80861FE0; // type:func +func_80864158 = 0x808620F4; // type:func +EnTest_ReactToProjectile = 0x80862184; // type:func +EnGirlA_SetupAction = 0x80862E80; // type:func +EnGirlA_TryChangeShopItem = 0x80862E8C; // type:func +EnGirlA_InitItem = 0x80863004; // type:func +EnGirlA_Init = 0x808630A8; // type:func +EnGirlA_Destroy = 0x808630DC; // type:func +EnGirlA_CanBuy_Arrows = 0x8086310C; // type:func +EnGirlA_CanBuy_Bombs = 0x808631BC; // type:func +EnGirlA_CanBuy_DekuNuts = 0x8086325C; // type:func +EnGirlA_CanBuy_DekuSticks = 0x80863314; // type:func +EnGirlA_CanBuy_Fish = 0x808633CC; // type:func +EnGirlA_CanBuy_RedPotion = 0x80863444; // type:func +EnGirlA_CanBuy_GreenPotion = 0x808634BC; // type:func +EnGirlA_CanBuy_BluePotion = 0x80863534; // type:func +EnGirlA_CanBuy_Longsword = 0x808635AC; // type:func +EnGirlA_CanBuy_HylianShield = 0x80863640; // type:func +EnGirlA_CanBuy_DekuShield = 0x808636C0; // type:func +EnGirlA_CanBuy_GoronTunic = 0x80863740; // type:func +EnGirlA_CanBuy_ZoraTunic = 0x808637E8; // type:func +EnGirlA_CanBuy_RecoveryHeart = 0x80863890; // type:func +EnGirlA_CanBuy_MilkBottle = 0x808638DC; // type:func +EnGirlA_CanBuy_WeirdEgg = 0x80863938; // type:func +EnGirlA_CanBuy_Unk19 = 0x80863994; // type:func +EnGirlA_CanBuy_Unk20 = 0x808639A8; // type:func +EnGirlA_CanBuy_Bombchus = 0x808639BC; // type:func +EnGirlA_CanBuy_DekuSeeds = 0x80863A40; // type:func +EnGirlA_CanBuy_SoldOut = 0x80863AF0; // type:func +EnGirlA_CanBuy_BlueFire = 0x80863B04; // type:func +EnGirlA_CanBuy_Bugs = 0x80863B7C; // type:func +EnGirlA_CanBuy_Poe = 0x80863BF4; // type:func +EnGirlA_CanBuy_Fairy = 0x80863C6C; // type:func +EnGirlA_ItemGive_Arrows = 0x80863CE4; // type:func +EnGirlA_ItemGive_Bombs = 0x80863D2C; // type:func +EnGirlA_ItemGive_DekuNuts = 0x80863DCC; // type:func +EnGirlA_ItemGive_DekuSticks = 0x80863E3C; // type:func +EnGirlA_ItemGive_Longsword = 0x80863E78; // type:func +EnGirlA_ItemGive_HylianShield = 0x80863EC0; // type:func +EnGirlA_ItemGive_DekuShield = 0x80863EFC; // type:func +EnGirlA_ItemGive_GoronTunic = 0x80863F38; // type:func +EnGirlA_ItemGive_ZoraTunic = 0x80863F74; // type:func +EnGirlA_ItemGive_Health = 0x80863FB0; // type:func +EnGirlA_ItemGive_MilkBottle = 0x80863FF0; // type:func +EnGirlA_ItemGive_WeirdEgg = 0x8086402C; // type:func +EnGirlA_ItemGive_Unk19 = 0x80864068; // type:func +EnGirlA_ItemGive_Unk20 = 0x80864098; // type:func +EnGirlA_ItemGive_DekuSeeds = 0x808640C8; // type:func +EnGirlA_ItemGive_BottledItem = 0x80864104; // type:func +EnGirlA_BuyEvent_ShieldDiscount = 0x80864234; // type:func +EnGirlA_BuyEvent_GoronTunic = 0x808642D4; // type:func +EnGirlA_BuyEvent_ZoraTunic = 0x80864304; // type:func +EnGirlA_BuyEvent_ObtainBombchuPack = 0x80864334; // type:func +EnGirlA_Noop = 0x80864448; // type:func +EnGirlA_SetItemDescription = 0x80864458; // type:func +EnGirlA_SetItemOutOfStock = 0x80864580; // type:func +EnGirlA_UpdateStockedItem = 0x808645B4; // type:func +EnGirlA_TrySetMaskItemDescription = 0x8086462C; // type:func +EnGirlA_WaitForObject = 0x808646BC; // type:func +EnGirlA_Update2 = 0x80864A6C; // type:func +EnGirlA_Update = 0x80864B28; // type:func +func_80A3C498 = 0x80864B4C; // type:func +EnGirlA_Draw = 0x80864B90; // type:func +EnPart_Init = 0x808657A0; // type:func +EnPart_Destroy = 0x808657B0; // type:func +func_80ACDDE8 = 0x808657C0; // type:func +func_80ACE13C = 0x80865B14; // type:func +func_80ACE5B8 = 0x80865F90; // type:func +func_80ACE5C8 = 0x80865FA4; // type:func +func_80ACE7E8 = 0x808661C8; // type:func +EnPart_Update = 0x808663C4; // type:func +func_80ACEAC0 = 0x808664A4; // type:func +EnPart_Draw = 0x8086655C; // type:func +EnLight_Init = 0x80866E00; // type:func +EnLight_Destroy = 0x80866FE0; // type:func +EnLight_UpdatePosRot = 0x80867014; // type:func +EnLight_Update = 0x80867090; // type:func +EnLight_UpdateSwitch = 0x80867334; // type:func +EnLight_Draw = 0x8086776C; // type:func +EnDoor_Init = 0x80867C00; // type:func +EnDoor_Destroy = 0x80867E1C; // type:func +EnDoor_SetupType = 0x80867E50; // type:func +EnDoor_Idle = 0x80868008; // type:func +EnDoor_WaitForCheck = 0x808682C0; // type:func +EnDoor_Check = 0x8086830C; // type:func +EnDoor_AjarWait = 0x80868344; // type:func +EnDoor_AjarOpen = 0x80868378; // type:func +EnDoor_AjarClose = 0x808683E8; // type:func +EnDoor_Open = 0x80868430; // type:func +EnDoor_Update = 0x80868684; // type:func +EnDoor_OverrideLimbDraw = 0x808686A8; // type:func +EnDoor_Draw = 0x808687DC; // type:func +EnBox_SetupAction = 0x80868A40; // type:func +EnBox_ClipToGround = 0x80868A4C; // type:func +EnBox_Init = 0x80868AD8; // type:func +EnBox_Destroy = 0x80868F48; // type:func +EnBox_RandomDustKinematic = 0x80868F7C; // type:func +EnBox_SpawnDust = 0x80869080; // type:func +EnBox_Fall = 0x80869134; // type:func +EnBox_FallOnSwitchFlag = 0x808692B8; // type:func +func_809C9700 = 0x80869388; // type:func +EnBox_AppearOnSwitchFlag = 0x80869518; // type:func +EnBox_AppearOnRoomClear = 0x80869598; // type:func +EnBox_AppearInit = 0x80869650; // type:func +EnBox_AppearAnimation = 0x8086970C; // type:func +EnBox_WaitOpen = 0x808697B8; // type:func +EnBox_Open = 0x808699EC; // type:func +EnBox_SpawnIceSmoke = 0x80869B74; // type:func +EnBox_Update = 0x80869E20; // type:func +EnBox_PostLimbDraw = 0x80869F5C; // type:func +EnBox_EmptyDList = 0x8086A0C4; // type:func +func_809CA4A0 = 0x8086A0E8; // type:func +func_809CA518 = 0x8086A128; // type:func +EnBox_Draw = 0x8086A168; // type:func +EnPoh_Init = 0x8086A5A0; // type:func +EnPoh_Destroy = 0x8086A8E8; // type:func +func_80ADE114 = 0x8086A968; // type:func +EnPoh_SetupIdle = 0x8086A9C0; // type:func +func_80ADE1BC = 0x8086AA10; // type:func +EnPoh_SetupAttack = 0x8086AA60; // type:func +func_80ADE28C = 0x8086AAE0; // type:func +func_80ADE368 = 0x8086ABBC; // type:func +EnPoh_SetupInitialAction = 0x8086AC30; // type:func +func_80ADE48C = 0x8086ACE0; // type:func +func_80ADE4C8 = 0x8086AD20; // type:func +func_80ADE514 = 0x8086AD6C; // type:func +EnPoh_SetupDisappear = 0x8086ADC4; // type:func +EnPoh_SetupAppear = 0x8086AE1C; // type:func +EnPoh_SetupDeath = 0x8086AE68; // type:func +func_80ADE6D4 = 0x8086AF34; // type:func +EnPoh_Talk = 0x8086B020; // type:func +func_80ADE950 = 0x8086B1B8; // type:func +func_80ADE998 = 0x8086B204; // type:func +func_80ADE9BC = 0x8086B22C; // type:func +EnPoh_MoveTowardsPlayerHeight = 0x8086B240; // type:func +func_80ADEA5C = 0x8086B2D4; // type:func +func_80ADEAC4 = 0x8086B344; // type:func +EnPoh_Idle = 0x8086B400; // type:func +func_80ADEC9C = 0x8086B51C; // type:func +EnPoh_Attack = 0x8086B680; // type:func +func_80ADEECC = 0x8086B750; // type:func +func_80ADEF38 = 0x8086B7BC; // type:func +EnPoh_ComposerAppear = 0x8086B93C; // type:func +func_80ADF15C = 0x8086B9E0; // type:func +func_80ADF574 = 0x8086BDF8; // type:func +func_80ADF5E0 = 0x8086BE64; // type:func +EnPoh_Disappear = 0x8086BEE4; // type:func +EnPoh_Appear = 0x8086C000; // type:func +func_80ADF894 = 0x8086C120; // type:func +EnPoh_Death = 0x8086C220; // type:func +func_80ADFA90 = 0x8086C320; // type:func +func_80ADFE28 = 0x8086C6B8; // type:func +func_80ADFE80 = 0x8086C710; // type:func +func_80AE009C = 0x8086C92C; // type:func +EnPoh_TalkRegular = 0x8086C96C; // type:func +EnPoh_TalkComposer = 0x8086CA98; // type:func +func_80AE032C = 0x8086CBC4; // type:func +EnPoh_UpdateVisibility = 0x8086CC5C; // type:func +EnPoh_Update = 0x8086CDCC; // type:func +func_80AE067C = 0x8086CF18; // type:func +func_80AE089C = 0x8086D138; // type:func +EnPoh_UpdateLiving = 0x8086D2B8; // type:func +EnPoh_OverrideLimbDraw = 0x8086D498; // type:func +EnPoh_PostLimbDraw = 0x8086D58C; // type:func +EnPoh_DrawRegular = 0x8086D77C; // type:func +EnPoh_DrawComposer = 0x8086D9A4; // type:func +EnPoh_UpdateDead = 0x8086DE20; // type:func +EnPoh_DrawSoul = 0x8086DE74; // type:func +EnOkuta_Init = 0x8086E790; // type:func +EnOkuta_Destroy = 0x8086E99C; // type:func +EnOkuta_SpawnBubbles = 0x8086E9C8; // type:func +EnOkuta_SpawnDust = 0x8086EA74; // type:func +EnOkuta_SpawnSplash = 0x8086EADC; // type:func +EnOkuta_SpawnRipple = 0x8086EB20; // type:func +EnOkuta_SetupWaitToAppear = 0x8086EBC4; // type:func +EnOkuta_SetupAppear = 0x8086EBF4; // type:func +EnOkuta_SetupHide = 0x8086EC64; // type:func +EnOkuta_SetupWaitToShoot = 0x8086ECA4; // type:func +EnOkuta_SetupShoot = 0x8086ED04; // type:func +EnOkuta_SetupWaitToDie = 0x8086EDF0; // type:func +EnOkuta_SetupDie = 0x8086EE78; // type:func +EnOkuta_SetupFreeze = 0x8086EEC0; // type:func +EnOkuta_SpawnProjectile = 0x8086EF0C; // type:func +EnOkuta_WaitToAppear = 0x8086F04C; // type:func +EnOkuta_Appear = 0x8086F0A8; // type:func +EnOkuta_Hide = 0x8086F1EC; // type:func +EnOkuta_WaitToShoot = 0x8086F2EC; // type:func +EnOkuta_Shoot = 0x8086F41C; // type:func +EnOkuta_WaitToDie = 0x8086F59C; // type:func +EnOkuta_Die = 0x8086F5F0; // type:func +EnOkuta_Freeze = 0x8086F904; // type:func +EnOkuta_ProjectileFly = 0x8086FA80; // type:func +EnOkuta_UpdateHeadScale = 0x8086FCCC; // type:func +EnOkuta_ColliderCheck = 0x80870074; // type:func +EnOkuta_Update = 0x80870124; // type:func +EnOkuta_GetSnoutScale = 0x808704A4; // type:func +EnOkuta_OverrideLimbDraw = 0x8087072C; // type:func +EnOkuta_Draw = 0x80870828; // type:func +EnBom_SetupAction = 0x80870D70; // type:func +EnBom_Init = 0x80870D7C; // type:func +EnBom_Destroy = 0x80870E94; // type:func +EnBom_Move = 0x80870ED4; // type:func +EnBom_WaitForRelease = 0x808710A4; // type:func +EnBom_Explode = 0x808710F0; // type:func +EnBom_Update = 0x80871240; // type:func +EnBom_Draw = 0x808718D0; // type:func +EnWallmas_Init = 0x80871C40; // type:func +EnWallmas_Destroy = 0x80871D80; // type:func +EnWallmas_TimerInit = 0x80871DAC; // type:func +EnWallmas_SetupDrop = 0x80871E08; // type:func +EnWallmas_SetupLand = 0x80871ECC; // type:func +EnWallmas_SetupStand = 0x80871F90; // type:func +EnWallmas_SetupWalk = 0x80871FD0; // type:func +EnWallmas_SetupJumpToCeiling = 0x80872020; // type:func +EnWallmas_SetupReturnToCeiling = 0x80872068; // type:func +EnWallmas_SetupTakeDamage = 0x808720EC; // type:func +EnWallmas_SetupCooldown = 0x808721A8; // type:func +EnWallmas_SetupDie = 0x808721FC; // type:func +EnWallmas_SetupTakePlayer = 0x808722C4; // type:func +EnWallmas_ProximityOrSwitchInit = 0x8087234C; // type:func +EnWallmas_SetupStun = 0x80872394; // type:func +EnWallmas_WaitToDrop = 0x80872464; // type:func +EnWallmas_Drop = 0x80872570; // type:func +EnWallmas_Land = 0x8087263C; // type:func +EnWallmas_Stand = 0x80872678; // type:func +EnWallmas_Walk = 0x808726D8; // type:func +EnWallmas_JumpToCeiling = 0x8087278C; // type:func +EnWallmas_ReturnToCeiling = 0x808727C8; // type:func +EnWallmas_TakeDamage = 0x808728E4; // type:func +EnWallmas_Cooldown = 0x80872978; // type:func +EnWallmas_Die = 0x808729B4; // type:func +EnWallmas_TakePlayer = 0x80872A28; // type:func +EnWallmas_WaitForProximity = 0x80872C4C; // type:func +EnWallmas_WaitForSwitchFlag = 0x80872CA8; // type:func +EnWallmas_Stun = 0x80872CF4; // type:func +EnWallmas_ColUpdate = 0x80872D68; // type:func +EnWallmas_Update = 0x80872E84; // type:func +EnWallmas_DrawXlu = 0x8087304C; // type:func +EnWallMas_OverrideLimbDraw = 0x808731EC; // type:func +EnWallMas_PostLimbDraw = 0x80873260; // type:func +EnWallmas_Draw = 0x80873350; // type:func +EnDodongo_SetupAction = 0x80873650; // type:func +EnDodongo_SpawnBombSmoke = 0x8087365C; // type:func +EnDodongo_Init = 0x80873B4C; // type:func +EnDodongo_Destroy = 0x80873D74; // type:func +EnDodongo_SetupIdle = 0x80873DD4; // type:func +EnDodongo_SetupWalk = 0x80873E3C; // type:func +EnDodongo_SetupBreatheFire = 0x80873EE0; // type:func +EnDodongo_SetupEndBreatheFire = 0x80873F34; // type:func +EnDodongo_SetupSwallowBomb = 0x80873F84; // type:func +EnDodongo_SetupStunned = 0x80874004; // type:func +EnDodongo_Idle = 0x8087409C; // type:func +EnDodongo_EndBreatheFire = 0x80874114; // type:func +EnDodongo_BreatheFire = 0x80874164; // type:func +EnDodongo_SwallowBomb = 0x8087433C; // type:func +EnDodongo_Walk = 0x80874834; // type:func +EnDodongo_SetupSweepTail = 0x80874B74; // type:func +EnDodongo_SweepTail = 0x80874BD4; // type:func +EnDodongo_SetupDeath = 0x80874E98; // type:func +EnDodongo_Death = 0x80874F10; // type:func +EnDodongo_Stunned = 0x8087505C; // type:func +EnDodongo_CollisionCheck = 0x808750C0; // type:func +EnDodongo_UpdateQuad = 0x808751E8; // type:func +EnDodongo_Update = 0x80875354; // type:func +EnDodongo_OverrideLimbDraw = 0x80875520; // type:func +EnDodongo_PostLimbDraw = 0x80875574; // type:func +EnDodongo_Draw = 0x808759B0; // type:func +EnDodongo_ShiftVecRadial = 0x80875AA0; // type:func +EnDodongo_AteBomb = 0x80875B00; // type:func +EnFirefly_Extinguish = 0x808763F0; // type:func +EnFirefly_Ignite = 0x8087641C; // type:func +EnFirefly_Init = 0x8087645C; // type:func +EnFirefly_Destroy = 0x80876654; // type:func +EnFirefly_SetupFlyIdle = 0x80876680; // type:func +EnFirefly_SetupFall = 0x8087672C; // type:func +EnFirefly_SetupDie = 0x808767D0; // type:func +EnFirefly_SetupRebound = 0x808767F4; // type:func +EnFirefly_SetupDiveAttack = 0x80876830; // type:func +EnFirefly_SetupFlyAway = 0x808768A0; // type:func +EnFirefly_SetupStunned = 0x808768D0; // type:func +EnFirefly_SetupFrozenFall = 0x80876940; // type:func +EnFirefly_SetupPerch = 0x80876AE0; // type:func +EnFirefly_SetupDisturbDiveAttack = 0x80876B04; // type:func +EnFirefly_ReturnToPerch = 0x80876B40; // type:func +EnFirefly_SeekTorch = 0x80876C5C; // type:func +EnFirefly_FlyIdle = 0x80876DAC; // type:func +EnFirefly_Fall = 0x8087703C; // type:func +EnFirefly_Die = 0x8087710C; // type:func +EnFirefly_DiveAttack = 0x80877188; // type:func +EnFirefly_Rebound = 0x8087739C; // type:func +EnFirefly_FlyAway = 0x80877430; // type:func +EnFirefly_Stunned = 0x80877598; // type:func +EnFirefly_FrozenFall = 0x8087763C; // type:func +EnFirefly_Perch = 0x8087769C; // type:func +EnFirefly_DisturbDiveAttack = 0x8087775C; // type:func +EnFirefly_Combust = 0x80877834; // type:func +EnFirefly_UpdateDamage = 0x808778B4; // type:func +EnFirefly_Update = 0x80877A64; // type:func +EnFirefly_OverrideLimbDraw = 0x80877D0C; // type:func +EnFirefly_PostLimbDraw = 0x80877D60; // type:func +EnFirefly_Draw = 0x808780F0; // type:func +EnFirefly_DrawInvisible = 0x808781A4; // type:func +EnHorse_BgCheckBridgeJumpPoint = 0x80878560; // type:func +EnHorse_CheckBridgeJumps = 0x808786C0; // type:func +EnHorse_RaceWaypointPos = 0x80878800; // type:func +EnHorse_RotateToPoint = 0x80878854; // type:func +EnHorse_UpdateIngoRaceInfo = 0x80878890; // type:func +EnHorse_PlayWalkingSfx = 0x80878C44; // type:func +EnHorse_PlayTrottingSfx = 0x80878D00; // type:func +EnHorse_PlayGallopingSfx = 0x80878D48; // type:func +EnHorse_SlopeSpeedMultiplier = 0x80878D90; // type:func +func_80A5BB90 = 0x80878E10; // type:func +func_80A5BBBC = 0x80878E40; // type:func +EnHorse_IdleAnimSounds = 0x80878EF0; // type:func +EnHorse_Spawn = 0x8087901C; // type:func +EnHorse_ResetCutscene = 0x80879260; // type:func +EnHorse_ResetRace = 0x80879278; // type:func +EnHorse_PlayerCanMove = 0x80879288; // type:func +EnHorse_ResetHorsebackArchery = 0x80879344; // type:func +EnHorse_ClearDustFlags = 0x8087935C; // type:func +EnHorse_Init = 0x80879368; // type:func +EnHorse_Destroy = 0x80879A98; // type:func +EnHorse_RotateToPlayer = 0x80879B08; // type:func +EnHorse_Freeze = 0x80879B78; // type:func +EnHorse_Frozen = 0x80879BF8; // type:func +EnHorse_UpdateSpeed = 0x80879D68; // type:func +EnHorse_StartMountedIdleResetAnim = 0x8087A1AC; // type:func +EnHorse_StartMountedIdle = 0x8087A1E8; // type:func +EnHorse_MountedIdle = 0x8087A324; // type:func +EnHorse_MountedIdleAnim = 0x8087A424; // type:func +EnHorse_MountedIdleWhinney = 0x8087A448; // type:func +EnHorse_MountedIdleWhinneying = 0x8087A544; // type:func +EnHorse_StartTurning = 0x8087A644; // type:func +EnHorse_MountedTurn = 0x8087A6EC; // type:func +EnHorse_StartWalkingFromIdle = 0x8087A8B0; // type:func +EnHorse_StartWalkingInterruptable = 0x8087A900; // type:func +EnHorse_StartWalking = 0x8087A924; // type:func +EnHorse_MountedWalkingReset = 0x8087A9D0; // type:func +EnHorse_MountedWalk = 0x8087AA24; // type:func +EnHorse_StartTrotting = 0x8087ACF4; // type:func +EnHorse_MountedTrotReset = 0x8087AD98; // type:func +EnHorse_MountedTrot = 0x8087ADE4; // type:func +EnHorse_StartGallopingInterruptable = 0x8087AF1C; // type:func +EnHorse_StartGalloping = 0x8087AF40; // type:func +EnHorse_MountedGallopReset = 0x8087AFE8; // type:func +EnHorse_JumpLanding = 0x8087B040; // type:func +EnHorse_MountedGallop = 0x8087B0C4; // type:func +EnHorse_StartRearing = 0x8087B298; // type:func +EnHorse_MountedRearing = 0x8087B3BC; // type:func +EnHorse_StartBraking = 0x8087B538; // type:func +EnHorse_Stopping = 0x8087B628; // type:func +EnHorse_StartReversingInterruptable = 0x8087B814; // type:func +EnHorse_StartReversing = 0x8087B838; // type:func +EnHorse_Reverse = 0x8087B8DC; // type:func +EnHorse_LowJumpInit = 0x8087BC8C; // type:func +EnHorse_StartLowJump = 0x8087BCB0; // type:func +EnHorse_Stub1 = 0x8087BDE0; // type:func +EnHorse_LowJump = 0x8087BDEC; // type:func +EnHorse_HighJumpInit = 0x8087BFB0; // type:func +EnHorse_StartHighJump = 0x8087BFD4; // type:func +EnHorse_Stub2 = 0x8087C110; // type:func +EnHorse_HighJump = 0x8087C11C; // type:func +EnHorse_InitInactive = 0x8087C2E0; // type:func +EnHorse_Inactive = 0x8087C330; // type:func +EnHorse_PlayIdleAnimation = 0x8087C45C; // type:func +EnHorse_ChangeIdleAnimation = 0x8087C62C; // type:func +EnHorse_ResetIdleAnimation = 0x8087C654; // type:func +EnHorse_StartIdleRidable = 0x8087C688; // type:func +EnHorse_Idle = 0x8087C6BC; // type:func +EnHorse_StartMovingAnimation = 0x8087C8A4; // type:func +EnHorse_SetFollowAnimation = 0x8087CA0C; // type:func +EnHorse_FollowPlayer = 0x8087CB40; // type:func +EnHorse_InitIngoHorse = 0x8087CF64; // type:func +EnHorse_SetIngoAnimation = 0x8087CFE8; // type:func +EnHorse_UpdateIngoHorseAnim = 0x8087D08C; // type:func +EnHorse_UpdateIngoRace = 0x8087D3A0; // type:func +EnHorse_CsMoveInit = 0x8087D550; // type:func +EnHorse_CsMoveToPoint = 0x8087D5BC; // type:func +EnHorse_CsSetAnimHighJump = 0x8087D70C; // type:func +EnHorse_CsPlayHighJumpAnim = 0x8087D730; // type:func +EnHorse_CsJumpInit = 0x8087D864; // type:func +EnHorse_CsJump = 0x8087D89C; // type:func +EnHorse_CsRearingInit = 0x8087DAF4; // type:func +EnHorse_CsRearing = 0x8087DC14; // type:func +EnHorse_WarpMoveInit = 0x8087DDBC; // type:func +EnHorse_CsWarpMoveToPoint = 0x8087DEA4; // type:func +EnHorse_CsWarpRearingInit = 0x8087DFF4; // type:func +EnHorse_CsWarpRearing = 0x8087E17C; // type:func +EnHorse_InitCutscene = 0x8087E324; // type:func +EnHorse_GetCutsceneFunctionIndex = 0x8087E348; // type:func +EnHorse_CutsceneUpdate = 0x8087E398; // type:func +EnHorse_UpdateHbaRaceInfo = 0x8087E4F0; // type:func +EnHorse_InitHorsebackArchery = 0x8087E6E0; // type:func +EnHorse_UpdateHbaAnim = 0x8087E714; // type:func +EnHorse_UpdateHorsebackArchery = 0x8087EA4C; // type:func +EnHorse_InitFleePlayer = 0x8087ECD8; // type:func +EnHorse_FleePlayer = 0x8087ED00; // type:func +EnHorse_BridgeJumpInit = 0x8087F554; // type:func +EnHorse_StartBridgeJump = 0x8087F78C; // type:func +EnHorse_BridgeJumpMove = 0x8087F83C; // type:func +EnHorse_CheckBridgeJumpLanding = 0x8087F998; // type:func +EnHorse_BridgeJump = 0x8087FA84; // type:func +EnHorse_Vec3fOffset = 0x8087FAC8; // type:func +EnHorse_CalcFloorHeight = 0x8087FB44; // type:func +EnHorse_ObstructMovement = 0x8087FC84; // type:func +EnHorse_CheckFloors = 0x8087FDAC; // type:func +EnHorse_MountDismount = 0x8088032C; // type:func +EnHorse_StickDirection = 0x80880430; // type:func +EnHorse_UpdateStick = 0x808804BC; // type:func +EnHorse_ResolveCollision = 0x808804FC; // type:func +EnHorse_BgCheckSlowMoving = 0x80880654; // type:func +EnHorse_UpdateBgCheckInfo = 0x80880794; // type:func +EnHorse_CheckBoost = 0x808812A0; // type:func +EnHorse_RegenBoost = 0x8088144C; // type:func +EnHorse_UpdatePlayerDir = 0x80881678; // type:func +EnHorse_TiltBody = 0x80881784; // type:func +EnHorse_UpdateConveyors = 0x80881880; // type:func +EnHorse_RandInt = 0x80881988; // type:func +EnHorse_Update = 0x808819BC; // type:func +EnHorse_PlayerDirToMountSide = 0x808821E8; // type:func +EnHorse_MountSideCheck = 0x80882228; // type:func +EnHorse_GetMountSide = 0x8088232C; // type:func +EnHorse_RandomOffset = 0x80882384; // type:func +EnHorse_PostDraw = 0x80882420; // type:func +EnHorse_OverrideLimbDraw = 0x80882F18; // type:func +EnHorse_Draw = 0x80883018; // type:func +EnArrow_SetupAction = 0x808847C0; // type:func +EnArrow_Init = 0x808847CC; // type:func +EnArrow_Destroy = 0x808849D4; // type:func +EnArrow_Shoot = 0x80884A5C; // type:func +func_809B3CEC = 0x80884B74; // type:func +EnArrow_CarryActor = 0x80884C5C; // type:func +EnArrow_Fly = 0x80884E60; // type:func +func_809B45E0 = 0x80885468; // type:func +func_809B4640 = 0x808854C8; // type:func +EnArrow_Update = 0x80885530; // type:func +func_809B4800 = 0x8088568C; // type:func +EnArrow_Draw = 0x808857F4; // type:func +EnElf_SetupAction = 0x80885EC0; // type:func +func_80A01C38 = 0x80885ECC; // type:func +func_80A01F90 = 0x80886224; // type:func +func_80A01FE0 = 0x80886278; // type:func +func_80A020A4 = 0x80886340; // type:func +func_80A0214C = 0x808863EC; // type:func +func_80A0232C = 0x808865CC; // type:func +EnElf_GetColorValue = 0x80886644; // type:func +EnElf_Init = 0x808866B4; // type:func +func_80A0299C = 0x80886C20; // type:func +func_80A029A8 = 0x80886C30; // type:func +EnElf_Destroy = 0x80886C58; // type:func +func_80A02A20 = 0x80886CA8; // type:func +func_80A02AA4 = 0x80886D2C; // type:func +func_80A02B38 = 0x80886DC0; // type:func +func_80A02BD8 = 0x80886E5C; // type:func +func_80A02C98 = 0x80886F1C; // type:func +func_80A02E30 = 0x808870B4; // type:func +func_80A02EC0 = 0x80887140; // type:func +func_80A02F2C = 0x808871AC; // type:func +func_80A03018 = 0x80887298; // type:func +func_80A03148 = 0x808873CC; // type:func +func_80A0329C = 0x80887524; // type:func +func_80A0353C = 0x808877C8; // type:func +func_80A03604 = 0x80887890; // type:func +func_80A03610 = 0x808878A0; // type:func +func_80A03814 = 0x80887AA8; // type:func +func_80A03990 = 0x80887C28; // type:func +func_80A03AB0 = 0x80887D4C; // type:func +EnElf_UpdateLights = 0x80887DB0; // type:func +func_80A03CF8 = 0x80887F84; // type:func +EnElf_ChangeColor = 0x8088861C; // type:func +func_80A04414 = 0x808886A8; // type:func +func_80A0461C = 0x808888B4; // type:func +EnElf_SpawnSparkles = 0x80888C50; // type:func +func_80A04D90 = 0x80889030; // type:func +func_80A04DE4 = 0x80889084; // type:func +func_80A04F94 = 0x80889238; // type:func +func_80A05040 = 0x808892E8; // type:func +func_80A05114 = 0x808893C4; // type:func +func_80A05188 = 0x80889440; // type:func +func_80A05208 = 0x808894C8; // type:func +func_80A052F4 = 0x808895BC; // type:func +func_80A053F0 = 0x808896C0; // type:func +EnElf_Update = 0x8088993C; // type:func +EnElf_OverrideLimbDraw = 0x80889998; // type:func +EnElf_Draw = 0x80889ABC; // type:func +EnElf_GetCuePos = 0x8088A134; // type:func +EnNiw_Init = 0x8088A880; // type:func +EnNiw_Destroy = 0x8088AD84; // type:func +func_80AB5BF8 = 0x8088ADB0; // type:func +EnNiw_SpawnAttackCucco = 0x8088B158; // type:func +func_80AB6100 = 0x8088B2A0; // type:func +EnNiw_ResetAction = 0x8088B41C; // type:func +func_80AB6324 = 0x8088B4C4; // type:func +func_80AB63A8 = 0x8088B548; // type:func +func_80AB6450 = 0x8088B5F0; // type:func +func_80AB6570 = 0x8088B710; // type:func +func_80AB6A38 = 0x8088BBDC; // type:func +func_80AB6BF8 = 0x8088BD9C; // type:func +func_80AB6D08 = 0x8088BEAC; // type:func +func_80AB6EB4 = 0x8088C058; // type:func +func_80AB6F04 = 0x8088C0A8; // type:func +func_80AB70A0 = 0x8088C248; // type:func +func_80AB70F8 = 0x8088C2A0; // type:func +func_80AB714C = 0x8088C2F4; // type:func +func_80AB7204 = 0x8088C3AC; // type:func +func_80AB7290 = 0x8088C43C; // type:func +func_80AB7328 = 0x8088C4D4; // type:func +func_80AB7420 = 0x8088C5D0; // type:func +func_80AB747C = 0x8088C62C; // type:func +EnNiw_Update = 0x8088C6E4; // type:func +EnNiw_OverrideLimbDraw = 0x8088CF90; // type:func +EnNiw_Draw = 0x8088D0E8; // type:func +EnNiw_SpawnFeather = 0x8088D198; // type:func +EnNiw_UpdateEffects = 0x8088D288; // type:func +EnNiw_DrawEffects = 0x8088D43C; // type:func +EnTite_SetupAction = 0x8088DBB0; // type:func +EnTite_Init = 0x8088DBBC; // type:func +EnTite_Destroy = 0x8088DD14; // type:func +EnTite_SetupIdle = 0x8088DD5C; // type:func +EnTite_Idle = 0x8088DDC4; // type:func +EnTite_SetupAttack = 0x8088DF08; // type:func +EnTite_Attack = 0x8088DF7C; // type:func +EnTite_SetupTurnTowardPlayer = 0x8088E624; // type:func +EnTite_TurnTowardPlayer = 0x8088E6C0; // type:func +EnTite_SetupMoveTowardPlayer = 0x8088E95C; // type:func +EnTite_MoveTowardPlayer = 0x8088EA18; // type:func +EnTite_SetupRecoil = 0x8088EF28; // type:func +EnTite_Recoil = 0x8088EF94; // type:func +EnTite_SetupStunned = 0x8088F2EC; // type:func +EnTite_Stunned = 0x8088F3A0; // type:func +EnTite_SetupDeathCry = 0x8088F73C; // type:func +EnTite_DeathCry = 0x8088F770; // type:func +EnTite_FallApart = 0x8088F7E4; // type:func +EnTite_SetupFlipOnBack = 0x8088F870; // type:func +EnTite_FlipOnBack = 0x8088F98C; // type:func +EnTite_SetupFlipUpright = 0x8088FB48; // type:func +EnTite_FlipUpright = 0x8088FB98; // type:func +EnTite_CheckDamage = 0x8088FCC0; // type:func +EnTite_Update = 0x8088FE98; // type:func +EnTite_PostLimbDraw = 0x80890284; // type:func +EnTite_Draw = 0x80890374; // type:func +EnReeba_Init = 0x80890950; // type:func +EnReeba_Destroy = 0x80890B2C; // type:func +EnReeba_SetupSurface = 0x80890BA4; // type:func +EnReeba_Surface = 0x80890CB8; // type:func +EnReeba_Move = 0x80890ED8; // type:func +EnReeba_SetupMoveBig = 0x80890FF4; // type:func +EnReeba_MoveBig = 0x80891018; // type:func +EnReeba_Recoiled = 0x80891288; // type:func +EnReeba_SetupSink = 0x808912F4; // type:func +EnReeba_Sink = 0x8089134C; // type:func +EnReeba_SetupDamaged = 0x8089145C; // type:func +EnReeba_Damaged = 0x808914C0; // type:func +EnReeba_SetupStunned = 0x80891558; // type:func +EnReeba_Stunned = 0x808915A8; // type:func +EnReeba_StunDie = 0x8089170C; // type:func +EnReeba_SetupDie = 0x80891834; // type:func +EnReeba_Die = 0x808918A8; // type:func +EnReeba_StunRecover = 0x80891A88; // type:func +EnReeba_CheckDamage = 0x80891B1C; // type:func +EnReeba_Update = 0x80891D58; // type:func +EnReeba_Draw = 0x80892008; // type:func +EnPeehat_SetupAction = 0x808923C0; // type:func +EnPeehat_Init = 0x808923CC; // type:func +EnPeehat_Destroy = 0x8089263C; // type:func +EnPeehat_SpawnDust = 0x808926B0; // type:func +EnPeehat_HitWhenGrounded = 0x80892848; // type:func +EnPeehat_Ground_SetStateGround = 0x80892A64; // type:func +EnPeehat_Ground_StateGround = 0x80892AFC; // type:func +EnPeehat_Flying_SetStateGround = 0x80892C50; // type:func +EnPeehat_Flying_StateGrounded = 0x80892CDC; // type:func +EnPeehat_Flying_SetStateFly = 0x80892DE0; // type:func +EnPeehat_Flying_StateFly = 0x80892E28; // type:func +EnPeehat_Ground_SetStateRise = 0x80892FA0; // type:func +EnPeehat_Ground_StateRise = 0x80893048; // type:func +EnPeehat_Flying_SetStateRise = 0x80893210; // type:func +EnPeehat_Flying_StateRise = 0x808932B8; // type:func +EnPeehat_Ground_SetStateSeekPlayer = 0x80893480; // type:func +EnPeehat_Ground_StateSeekPlayer = 0x808934D0; // type:func +EnPeehat_Larva_SetStateSeekPlayer = 0x8089364C; // type:func +EnPeehat_Larva_StateSeekPlayer = 0x80893698; // type:func +EnPeehat_Ground_SetStateLanding = 0x80893A70; // type:func +EnPeehat_Ground_StateLanding = 0x80893AB8; // type:func +EnPeehat_Flying_SetStateLanding = 0x80893C6C; // type:func +EnPeehat_Flying_StateLanding = 0x80893CB4; // type:func +EnPeehat_Ground_SetStateHover = 0x80893E64; // type:func +EnPeehat_Ground_StateHover = 0x80893EF4; // type:func +EnPeehat_Ground_SetStateReturnHome = 0x80894150; // type:func +EnPeehat_Ground_StateReturnHome = 0x80894188; // type:func +EnPeehat_SetStateAttackRecoil = 0x80894374; // type:func +EnPeehat_StateAttackRecoil = 0x808943D4; // type:func +EnPeehat_SetStateBoomerangStunned = 0x808945B0; // type:func +EnPeehat_StateBoomerangStunned = 0x80894634; // type:func +EnPeehat_Adult_SetStateDie = 0x808946B0; // type:func +EnPeehat_Adult_StateDie = 0x8089471C; // type:func +EnPeehat_SetStateExplode = 0x808949DC; // type:func +EnPeehat_StateExplode = 0x80894A34; // type:func +EnPeehat_Adult_CollisionCheck = 0x80894B0C; // type:func +EnPeehat_Update = 0x80894CF8; // type:func +EnPeehat_OverrideLimbDraw = 0x8089515C; // type:func +EnPeehat_PostLimbDraw = 0x80895334; // type:func +EnPeehat_Draw = 0x808954E8; // type:func +EnHoll_SetupAction = 0x80895AC0; // type:func +EnHoll_IsKokiriLayer8 = 0x80895ACC; // type:func +EnHoll_ChooseAction = 0x80895AFC; // type:func +EnHoll_Init = 0x80895B64; // type:func +EnHoll_Destroy = 0x80895BA0; // type:func +EnHoll_SwapRooms = 0x80895BD0; // type:func +EnHoll_HorizontalVisibleNarrow = 0x80895C8C; // type:func +EnHoll_HorizontalInvisible = 0x80895ECC; // type:func +EnHoll_VerticalDownBgCoverLarge = 0x8089607C; // type:func +EnHoll_VerticalBgCover = 0x80896268; // type:func +EnHoll_VerticalInvisible = 0x808963E8; // type:func +EnHoll_HorizontalBgCoverSwitchFlag = 0x808964E0; // type:func +EnHoll_WaitRoomLoaded = 0x808966F0; // type:func +EnHoll_Update = 0x80896768; // type:func +EnHoll_Draw = 0x8089678C; // type:func +EnSceneChange_SetupAction = 0x80896A90; // type:func +EnSceneChange_Init = 0x80896A9C; // type:func +EnSceneChange_Destroy = 0x80896AC4; // type:func +EnSceneChange_DoNothing = 0x80896AD4; // type:func +EnSceneChange_Update = 0x80896AE4; // type:func +EnSceneChange_Draw = 0x80896B08; // type:func +EnZf_SetupAction = 0x80896BC0; // type:func +EnZf_PrimaryFloorCheck = 0x80896BCC; // type:func +EnZf_SecondaryFloorCheck = 0x80896D3C; // type:func +EnZf_Init = 0x80896E6C; // type:func +EnZf_Destroy = 0x808971A4; // type:func +EnZf_FindPlatform = 0x80897228; // type:func +EnZf_FindNextPlatformAwayFromPlayer = 0x808973F0; // type:func +EnZf_FindNextPlatformTowardsPlayer = 0x80897694; // type:func +EnZf_CanAttack = 0x80897870; // type:func +func_80B44DC4 = 0x80897944; // type:func +EnZf_ChooseAction = 0x80897A10; // type:func +EnZf_SetupDropIn = 0x80897C30; // type:func +EnZf_DropIn = 0x80897CF8; // type:func +func_80B45384 = 0x80897F08; // type:func +func_80B4543C = 0x80897FC0; // type:func +EnZf_SetupApproachPlayer = 0x8089823C; // type:func +EnZf_ApproachPlayer = 0x808982D0; // type:func +EnZf_SetupJumpForward = 0x808989BC; // type:func +EnZf_JumpForward = 0x80898A7C; // type:func +func_80B4604C = 0x80898BD8; // type:func +func_80B46098 = 0x80898C24; // type:func +func_80B462E4 = 0x80898E70; // type:func +func_80B463E4 = 0x80898F78; // type:func +EnZf_SetupSlash = 0x808995BC; // type:func +EnZf_Slash = 0x80899678; // type:func +EnZf_SetupRecoilFromBlockedSlash = 0x80899904; // type:func +EnZf_RecoilFromBlockedSlash = 0x80899978; // type:func +EnZf_SetupJumpBack = 0x80899A30; // type:func +EnZf_JumpBack = 0x80899AD0; // type:func +EnZf_SetupStunned = 0x80899BF4; // type:func +EnZf_Stunned = 0x80899CC4; // type:func +EnZf_SetupSheatheSword = 0x80899F04; // type:func +EnZf_SheatheSword = 0x80899FE0; // type:func +EnZf_SetupHopAndTaunt = 0x8089A08C; // type:func +EnZf_HopAndTaunt = 0x8089A0EC; // type:func +EnZf_SetupHopAway = 0x8089A344; // type:func +EnZf_HopAway = 0x8089A3C4; // type:func +EnZf_SetupDrawSword = 0x8089A810; // type:func +EnZf_DrawSword = 0x8089A8A4; // type:func +EnZf_SetupDamaged = 0x8089A954; // type:func +EnZf_Damaged = 0x8089AA60; // type:func +EnZf_SetupJumpUp = 0x8089ADC0; // type:func +EnZf_JumpUp = 0x8089AE68; // type:func +func_80B483E4 = 0x8089AF94; // type:func +EnZf_CircleAroundPlayer = 0x8089B130; // type:func +EnZf_SetupDie = 0x8089B8B0; // type:func +EnZf_Die = 0x8089BA14; // type:func +EnZf_UpdateHeadRotation = 0x8089BB54; // type:func +EnZf_UpdateDamage = 0x8089BC78; // type:func +EnZf_Update = 0x8089BE10; // type:func +EnZf_OverrideLimbDraw = 0x8089C1C8; // type:func +EnZf_PostLimbDraw = 0x8089C254; // type:func +EnZf_Draw = 0x8089C4A8; // type:func +EnZf_SetupCircleAroundPlayer = 0x8089C6F4; // type:func +EnZf_DodgeRangedEngaging = 0x8089C7C0; // type:func +EnZf_DodgeRangedWaiting = 0x8089C9EC; // type:func +EnHata_Init = 0x8089D6B0; // type:func +EnHata_Destroy = 0x8089D7E8; // type:func +EnHata_Update = 0x8089D830; // type:func +EnHata_OverrideLimbDraw = 0x8089DA4C; // type:func +EnHata_PostLimbDraw = 0x8089DAD0; // type:func +EnHata_Draw = 0x8089DAE8; // type:func +func_808C1190 = 0x8089DC40; // type:func +func_808C11D0 = 0x8089DC80; // type:func +func_808C1200 = 0x8089DCB0; // type:func +func_808C1230 = 0x8089DCE0; // type:func +func_808C1278 = 0x8089DD28; // type:func +func_808C12C4 = 0x8089DD74; // type:func +func_808C1554 = 0x8089E004; // type:func +func_808C17C8 = 0x8089E284; // type:func +BossDodongo_AteExplosive = 0x8089E36C; // type:func +BossDodongo_Init = 0x8089E42C; // type:func +BossDodongo_Destroy = 0x8089E708; // type:func +BossDodongo_SetupIntroCutscene = 0x8089E748; // type:func +BossDodongo_IntroCutscene = 0x8089E7C8; // type:func +BossDodongo_SetupDamaged = 0x8089F344; // type:func +BossDodongo_SetupExplode = 0x8089F3D8; // type:func +BossDodongo_SetupWalk = 0x8089F47C; // type:func +BossDodongo_SetupRoll = 0x8089F50C; // type:func +BossDodongo_SetupBlowFire = 0x8089F580; // type:func +BossDodongo_SetupInhale = 0x8089F608; // type:func +BossDodongo_Damaged = 0x8089F698; // type:func +BossDodongo_Explode = 0x8089F74C; // type:func +BossDodongo_LayDown = 0x8089F9A0; // type:func +BossDodongo_Vulnerable = 0x8089FA80; // type:func +BossDodongo_GetUp = 0x8089FB6C; // type:func +BossDodongo_BlowFire = 0x8089FBD0; // type:func +BossDodongo_Inhale = 0x8089FD00; // type:func +BossDodongo_Walk = 0x8089FDD4; // type:func +BossDodongo_Roll = 0x808A01E4; // type:func +BossDodongo_Update = 0x808A05E0; // type:func +BossDodongo_OverrideLimbDraw = 0x808A1420; // type:func +BossDodongo_PostLimbDraw = 0x808A1644; // type:func +BossDodongo_Draw = 0x808A1728; // type:func +func_808C4F6C = 0x808A19F0; // type:func +func_808C50A8 = 0x808A1B2C; // type:func +BossDodongo_PlayerYawCheck = 0x808A1C78; // type:func +BossDodongo_PlayerPosCheck = 0x808A1CD4; // type:func +BossDodongo_SpawnFire = 0x808A1D68; // type:func +BossDodongo_UpdateDamage = 0x808A1DDC; // type:func +BossDodongo_SetupDeathCutscene = 0x808A1F48; // type:func +BossDodongo_DeathCutscene = 0x808A2000; // type:func +BossDodongo_UpdateEffects = 0x808A3740; // type:func +BossDodongo_DrawEffects = 0x808A3874; // type:func +BossGoma_ClearPixels16x16Rgba16 = 0x808A7740; // type:func +BossGoma_ClearPixels32x32Rgba16 = 0x808A7770; // type:func +BossGoma_ClearPixels = 0x808A77C4; // type:func +BossGoma_Init = 0x808A7974; // type:func +BossGoma_PlayEffectsAndSfx = 0x808A7B2C; // type:func +BossGoma_Destroy = 0x808A7C34; // type:func +BossGoma_SetupDefeated = 0x808A7C74; // type:func +BossGoma_SetupEncounter = 0x808A7D3C; // type:func +BossGoma_SetupFloorIdle = 0x808A7DE0; // type:func +BossGoma_SetupCeilingIdle = 0x808A7E68; // type:func +BossGoma_SetupFallJump = 0x808A7EEC; // type:func +BossGoma_SetupFallStruckDown = 0x808A7F68; // type:func +BossGoma_SetupCeilingSpawnGohmas = 0x808A7FE4; // type:func +BossGoma_SetupCeilingPrepareSpawnGohmas = 0x808A8058; // type:func +BossGoma_SetupWallClimb = 0x808A80D0; // type:func +BossGoma_SetupCeilingMoveToCenter = 0x808A8154; // type:func +BossGoma_SetupFloorMain = 0x808A81E8; // type:func +BossGoma_SetupFloorLand = 0x808A8268; // type:func +BossGoma_SetupFloorLandStruckDown = 0x808A82F4; // type:func +BossGoma_SetupFloorStunned = 0x808A8398; // type:func +BossGoma_SetupFloorAttackPosture = 0x808A8408; // type:func +BossGoma_SetupFloorPrepareAttack = 0x808A847C; // type:func +BossGoma_SetupFloorAttack = 0x808A84F0; // type:func +BossGoma_SetupFloorDamaged = 0x808A856C; // type:func +BossGoma_UpdateCeilingMovement = 0x808A85E0; // type:func +BossGoma_SetupEncounterState4 = 0x808A881C; // type:func +BossGoma_Encounter = 0x808A89CC; // type:func +BossGoma_Defeated = 0x808A9AC4; // type:func +BossGoma_FloorAttackPosture = 0x808AA934; // type:func +BossGoma_FloorPrepareAttack = 0x808AAA3C; // type:func +BossGoma_FloorAttack = 0x808AAA98; // type:func +BossGoma_FloorDamaged = 0x808AACE8; // type:func +BossGoma_FloorLandStruckDown = 0x808AAD80; // type:func +BossGoma_FloorLand = 0x808AAE24; // type:func +BossGoma_FloorStunned = 0x808AAE80; // type:func +BossGoma_FallJump = 0x808AAFAC; // type:func +BossGoma_FallStruckDown = 0x808AB060; // type:func +BossGoma_CeilingSpawnGohmas = 0x808AB120; // type:func +BossGoma_CeilingPrepareSpawnGohmas = 0x808AB27C; // type:func +BossGoma_FloorIdle = 0x808AB2D8; // type:func +BossGoma_CeilingIdle = 0x808AB340; // type:func +BossGoma_FloorMain = 0x808AB438; // type:func +BossGoma_WallClimb = 0x808AB6A8; // type:func +BossGoma_CeilingMoveToCenter = 0x808AB774; // type:func +BossGoma_UpdateEye = 0x808AB970; // type:func +BossGoma_UpdateTailLimbsScale = 0x808ABBB8; // type:func +BossGoma_UpdateHit = 0x808ABCC4; // type:func +BossGoma_UpdateMainEnvColor = 0x808ABEA4; // type:func +BossGoma_UpdateEyeEnvColor = 0x808AC020; // type:func +BossGoma_Update = 0x808AC0C8; // type:func +BossGoma_OverrideLimbDraw = 0x808AC298; // type:func +BossGoma_PostLimbDraw = 0x808AC6E4; // type:func +BossGoma_EmptyDlist = 0x808AC8E8; // type:func +BossGoma_NoBackfaceCullingDlist = 0x808AC90C; // type:func +BossGoma_Draw = 0x808AC978; // type:func +BossGoma_SpawnChildGohma = 0x808ACA68; // type:func +func_80B4AB40 = 0x808AD6E0; // type:func +func_80B4AB48 = 0x808AD6E8; // type:func +EnZl1_Init = 0x808AD6F0; // type:func +EnZl1_Destroy = 0x808AD980; // type:func +func_80B4AE18 = 0x808AD9C0; // type:func +func_80B4AF18 = 0x808ADAC0; // type:func +func_80B4B010 = 0x808ADBB8; // type:func +func_80B4B240 = 0x808ADDF0; // type:func +func_80B4B7F4 = 0x808AE3A4; // type:func +func_80B4B834 = 0x808AE3E8; // type:func +func_80B4B874 = 0x808AE42C; // type:func +func_80B4B8B4 = 0x808AE46C; // type:func +func_80B4BBC4 = 0x808AE77C; // type:func +func_80B4BC78 = 0x808AE830; // type:func +func_80B4BF2C = 0x808AEAE4; // type:func +EnZl1_Update = 0x808AEDD8; // type:func +EnZl1_OverrideLimbDraw = 0x808AEEFC; // type:func +EnZl1_PostLimbDraw = 0x808AEFBC; // type:func +EnZl1_Draw = 0x808AF018; // type:func +EnViewer_SetupAction = 0x808B14F0; // type:func +EnViewer_Init = 0x808B14FC; // type:func +EnViewer_Destroy = 0x808B15D0; // type:func +EnViewer_InitAnimGanondorfOrZelda = 0x808B15FC; // type:func +EnViewer_InitAnimImpa = 0x808B1748; // type:func +EnViewer_InitAnimHorse = 0x808B17D8; // type:func +EnViewer_InitImpl = 0x808B1870; // type:func +EnViewer_UpdateImpl = 0x808B1A2C; // type:func +EnViewer_Update = 0x808B2584; // type:func +EnViewer_Ganondorf3OverrideLimbDraw = 0x808B25D8; // type:func +EnViewer_Ganondorf9PostLimbDraw = 0x808B2648; // type:func +EnViewer_GanondorfPostLimbDrawUpdateCapeVec = 0x808B2710; // type:func +EnViewer_DrawGanondorf = 0x808B2750; // type:func +EnViewer_DrawHorse = 0x808B2B7C; // type:func +EnViewer_ZeldaOverrideLimbDraw = 0x808B2BA8; // type:func +EnViewer_ZeldaPostLimbDraw = 0x808B2C28; // type:func +EnViewer_DrawZelda = 0x808B2C70; // type:func +EnViewer_ImpaOverrideLimbDraw = 0x808B3314; // type:func +EnViewer_DrawImpa = 0x808B333C; // type:func +EnViewer_Draw = 0x808B3450; // type:func +EnViewer_UpdatePosition = 0x808B3540; // type:func +EnViewer_InitFireEffect = 0x808B3910; // type:func +EnViewer_DrawFireEffects = 0x808B3A58; // type:func +EnViewer_UpdateGanondorfCape = 0x808B3D9C; // type:func +EnGoma_Init = 0x808B43B0; // type:func +EnGoma_Destroy = 0x808B473C; // type:func +EnGoma_SetupFlee = 0x808B478C; // type:func +EnGoma_Flee = 0x808B4830; // type:func +EnGoma_EggFallToGround = 0x808B48D0; // type:func +EnGoma_Egg = 0x808B4B5C; // type:func +EnGoma_SetupHatch = 0x808B4D9C; // type:func +EnGoma_Hatch = 0x808B4E64; // type:func +EnGoma_SetupHurt = 0x808B4EAC; // type:func +EnGoma_Hurt = 0x808B4F98; // type:func +EnGoma_SetupDie = 0x808B5020; // type:func +EnGoma_Die = 0x808B50E0; // type:func +EnGoma_SetupDead = 0x808B5184; // type:func +EnGoma_Dead = 0x808B51FC; // type:func +EnGoma_SetupStand = 0x808B536C; // type:func +EnGoma_SetupChasePlayer = 0x808B53F8; // type:func +EnGoma_SetupPrepareJump = 0x808B5478; // type:func +EnGoma_PrepareJump = 0x808B54F4; // type:func +EnGoma_SetupLand = 0x808B558C; // type:func +EnGoma_Land = 0x808B5604; // type:func +EnGoma_SetupJump = 0x808B5670; // type:func +EnGoma_Jump = 0x808B5718; // type:func +EnGoma_Stand = 0x808B57D0; // type:func +EnGoma_ChasePlayer = 0x808B584C; // type:func +EnGoma_SetupStunned = 0x808B5954; // type:func +EnGoma_Stunned = 0x808B59F0; // type:func +EnGoma_LookAtPlayer = 0x808B5AF0; // type:func +EnGoma_UpdateHit = 0x808B5B9C; // type:func +EnGoma_UpdateEyeEnvColor = 0x808B5DCC; // type:func +EnGoma_SetFloorRot = 0x808B5E5C; // type:func +EnGoma_Update = 0x808B5F70; // type:func +EnGoma_OverrideLimbDraw = 0x808B61BC; // type:func +EnGoma_NoBackfaceCullingDlist = 0x808B6318; // type:func +EnGoma_Draw = 0x808B6384; // type:func +EnGoma_Debris = 0x808B6810; // type:func +EnGoma_SpawnHatchDebris = 0x808B6854; // type:func +EnGoma_BossLimb = 0x808B69B8; // type:func +BgPushbox_SetupAction = 0x808B7060; // type:func +BgPushbox_Init = 0x808B706C; // type:func +BgPushbox_Destroy = 0x808B7104; // type:func +BgPushbox_UpdateImpl = 0x808B7138; // type:func +BgPushbox_Update = 0x808B7214; // type:func +BgPushbox_Draw = 0x808B7244; // type:func +EnBubble_SetDimensions = 0x808B7360; // type:func +func_809CBCBC = 0x808B741C; // type:func +func_809CBCEC = 0x808B7450; // type:func +EnBubble_DamagePlayer = 0x808B7474; // type:func +EnBubble_Explosion = 0x808B74E0; // type:func +func_809CBFD4 = 0x808B773C; // type:func +func_809CC020 = 0x808B7788; // type:func +EnBubble_Vec3fNormalizedReflect = 0x808B77DC; // type:func +EnBubble_Vec3fNormalize = 0x808B7864; // type:func +EnBubble_Fly = 0x808B78DC; // type:func +func_809CC648 = 0x808B7DB8; // type:func +EnBubble_DetectPop = 0x808B7E54; // type:func +func_809CC774 = 0x808B7EE4; // type:func +EnBubble_Init = 0x808B7FF8; // type:func +EnBubble_Destroy = 0x808B80F8; // type:func +EnBubble_Wait = 0x808B8124; // type:func +EnBubble_Pop = 0x808B81D8; // type:func +EnBubble_Disappear = 0x808B8228; // type:func +EnBubble_Regrow = 0x808B8270; // type:func +EnBubble_Update = 0x808B82E0; // type:func +EnBubble_Draw = 0x808B835C; // type:func +DoorShutter_SetupAction = 0x808B8780; // type:func +DoorShutter_SetupDoor = 0x808B8790; // type:func +DoorShutter_Init = 0x808B8978; // type:func +DoorShutter_Destroy = 0x808B8B90; // type:func +DoorShutter_WaitForObject = 0x808B8C00; // type:func +DoorShutter_GetPlayerDistance = 0x808B8D3C; // type:func +DoorShutter_GetPlayerSide = 0x808B8DD4; // type:func +DoorShutter_WaitClear = 0x808B8F54; // type:func +DoorShutter_Unopenable = 0x808B9000; // type:func +DoorShutter_Idle = 0x808B9010; // type:func +DoorShutter_InitOpeningDoorCam = 0x808B9164; // type:func +DoorShutter_UpdateOpening = 0x808B921C; // type:func +DoorShutter_UpdateBarsClosed = 0x808B9314; // type:func +DoorShutter_BarAndWaitSwitchFlag = 0x808B93F8; // type:func +DoorShutter_UnbarredCheckSwitchFlag = 0x808B94B0; // type:func +DoorShutter_Open = 0x808B951C; // type:func +DoorShutter_Unbar = 0x808B966C; // type:func +DoorShutter_SetupClosed = 0x808B973C; // type:func +DoorShutter_Close = 0x808B9908; // type:func +DoorShutter_JabuDoorClose = 0x808B9A4C; // type:func +DoorShutter_WaitPlayerSurprised = 0x808B9A90; // type:func +DoorShutter_GohmaBlockFall = 0x808B9AE8; // type:func +DoorShutter_GohmaBlockBounce = 0x808B9BE4; // type:func +DoorShutter_PhantomGanonBarsRaise = 0x808B9C70; // type:func +DoorShutter_Update = 0x808B9D00; // type:func +DoorShutter_DrawJabuJabuDoor = 0x808B9D54; // type:func +DoorShutter_ShouldDraw = 0x808B9F44; // type:func +DoorShutter_Draw = 0x808B9FF0; // type:func +DoorShutter_RequestQuakeAndRumble = 0x808BA544; // type:func +EnDodojr_Init = 0x808BAA40; // type:func +EnDodojr_Destroy = 0x808BAB28; // type:func +EnDodojr_DoSwallowedBombEffects = 0x808BAB54; // type:func +EnDodojr_SpawnLargeDust = 0x808BAB98; // type:func +EnDodojr_SpawnSmallDust = 0x808BADB8; // type:func +EnDodojr_UpdateBounces = 0x808BAF38; // type:func +EnDodojr_SetupCrawlTowardsTarget = 0x808BB01C; // type:func +EnDodojr_SetupFlipBounce = 0x808BB0A4; // type:func +EnDodojr_SetupSwallowedBombDeathSequence = 0x808BB148; // type:func +EnDodojr_SetupJumpAttackBounce = 0x808BB1B8; // type:func +EnDodojr_SetupDespawn = 0x808BB23C; // type:func +EnDodojr_SetupEatBomb = 0x808BB2A8; // type:func +EnDodojr_CheckNearbyBombs = 0x808BB324; // type:func +EnDodojr_TryEatBomb = 0x808BB450; // type:func +EnDodojr_UpdateCrawl = 0x808BB4D4; // type:func +EnDodojr_IsPlayerWithinAttackRange = 0x808BB6E8; // type:func +EnDodojr_SetupStandardDeathBounce = 0x808BB718; // type:func +EnDodojr_CheckDamaged = 0x808BB764; // type:func +EnDodojr_UpdateCollider = 0x808BB920; // type:func +EnDodojr_WaitUnderground = 0x808BBA30; // type:func +EnDodojr_EmergeFromGround = 0x808BBB48; // type:func +EnDodojr_CrawlTowardsTarget = 0x808BBC10; // type:func +EnDodojr_EatBomb = 0x808BBD14; // type:func +EnDodojr_SwallowBomb = 0x808BBDC4; // type:func +EnDodojr_SwallowedBombDeathBounce = 0x808BBE34; // type:func +EnDodojr_SwallowedBombDeathSequence = 0x808BBED4; // type:func +EnDodojr_StunnedBounce = 0x808BBEF4; // type:func +EnDodojr_Stunned = 0x808BBF74; // type:func +EnDodojr_JumpAttackBounce = 0x808BC024; // type:func +EnDodojr_Despawn = 0x808BC08C; // type:func +EnDodojr_StandardDeathBounce = 0x808BC144; // type:func +EnDodojr_DeathSequence = 0x808BC1CC; // type:func +EnDodojr_DropItem = 0x808BC278; // type:func +EnDodojr_WaitFreezeFrames = 0x808BC2DC; // type:func +EnDodojr_Update = 0x808BC324; // type:func +EnDodojr_OverrideLimbDraw = 0x808BC3E4; // type:func +EnDodojr_PostLimbDraw = 0x808BC490; // type:func +EnDodojr_Draw = 0x808BC4A8; // type:func +EnBdfire_SetupAction = 0x808BC8E0; // type:func +EnbdFire_SetupDraw = 0x808BC8EC; // type:func +EnBdfire_Init = 0x808BC8F8; // type:func +EnBdfire_Destroy = 0x808BCB28; // type:func +func_809BC2A4 = 0x808BCB60; // type:func +func_809BC598 = 0x808BCE54; // type:func +EnBdfire_Update = 0x808BD144; // type:func +EnBdfire_DrawFire = 0x808BD180; // type:func +EnBdfire_Draw = 0x808BD340; // type:func +EnBoom_SetupAction = 0x808BD480; // type:func +EnBoom_Init = 0x808BD48C; // type:func +EnBoom_Destroy = 0x808BD5A8; // type:func +EnBoom_Fly = 0x808BD5E8; // type:func +EnBoom_Update = 0x808BDA28; // type:func +EnBoom_Draw = 0x808BDA80; // type:func +EnTorch2_Init = 0x808BDD50; // type:func +EnTorch2_Destroy = 0x808BDEF8; // type:func +EnTorch2_GetAttackItem = 0x808BDF68; // type:func +EnTorch2_SwingSword = 0x808BDFB0; // type:func +EnTorch2_Backflip = 0x808BE148; // type:func +EnTorch2_Update = 0x808BE1A0; // type:func +EnTorch2_OverrideLimbDraw = 0x808BFB88; // type:func +EnTorch2_PostLimbDraw = 0x808BFBB4; // type:func +EnTorch2_Draw = 0x808BFBD8; // type:func +EnBili_Init = 0x808C04F0; // type:func +EnBili_Destroy = 0x808C05E8; // type:func +EnBili_SetupFloatIdle = 0x808C0614; // type:func +EnBili_SetupSpawnedFlyApart = 0x808C0670; // type:func +EnBili_SetupDischargeLightning = 0x808C06E8; // type:func +EnBili_SetupClimb = 0x808C0744; // type:func +EnBili_SetupApproachPlayer = 0x808C079C; // type:func +EnBili_SetupSetNewHomeHeight = 0x808C07BC; // type:func +EnBili_SetupRecoil = 0x808C0824; // type:func +EnBili_SetupBurnt = 0x808C08AC; // type:func +EnBili_SetupDie = 0x808C094C; // type:func +EnBili_SetupStunned = 0x808C0980; // type:func +EnBili_SetupFrozen = 0x808C09F8; // type:func +EnBili_UpdateTentaclesIndex = 0x808C0BD0; // type:func +EnBili_UpdateFloating = 0x808C0CF0; // type:func +EnBili_FloatIdle = 0x808C0DD8; // type:func +EnBili_SpawnedFlyApart = 0x808C0EC4; // type:func +EnBili_DischargeLightning = 0x808C0F1C; // type:func +EnBili_Climb = 0x808C1118; // type:func +EnBili_ApproachPlayer = 0x808C11D4; // type:func +EnBili_SetNewHomeHeight = 0x808C1264; // type:func +EnBili_Recoil = 0x808C12E0; // type:func +EnBili_Burnt = 0x808C1344; // type:func +EnBili_Die = 0x808C13B8; // type:func +EnBili_Stunned = 0x808C15E0; // type:func +EnBili_Frozen = 0x808C1640; // type:func +EnBili_UpdateDamage = 0x808C16D0; // type:func +EnBili_Update = 0x808C189C; // type:func +EnBili_PulseLimb3 = 0x808C1A70; // type:func +EnBili_PulseLimb2 = 0x808C1C88; // type:func +EnBili_PulseLimb4 = 0x808C1EA8; // type:func +EnBili_OverrideLimbDraw = 0x808C2010; // type:func +EnBili_Draw = 0x808C2100; // type:func +EnTp_SetupAction = 0x808C27C0; // type:func +EnTp_Init = 0x808C27CC; // type:func +EnTp_Destroy = 0x808C2A44; // type:func +EnTp_Tail_SetupFollowHead = 0x808C2A70; // type:func +EnTp_Tail_FollowHead = 0x808C2A9C; // type:func +EnTp_Head_SetupApproachPlayer = 0x808C2C78; // type:func +EnTp_Head_ApproachPlayer = 0x808C2CAC; // type:func +EnTp_SetupDie = 0x808C2E48; // type:func +EnTp_Die = 0x808C2EC0; // type:func +EnTp_Fragment_SetupFade = 0x808C31F0; // type:func +EnTp_Fragment_Fade = 0x808C32F4; // type:func +EnTp_Head_SetupTakeOff = 0x808C3340; // type:func +EnTp_Head_TakeOff = 0x808C339C; // type:func +EnTp_Head_SetupWait = 0x808C3584; // type:func +EnTp_Head_Wait = 0x808C35D0; // type:func +EnTp_Head_SetupBurrowReturnHome = 0x808C38DC; // type:func +EnTp_Head_BurrowReturnHome = 0x808C390C; // type:func +EnTp_UpdateDamage = 0x808C3BDC; // type:func +EnTp_Update = 0x808C3E34; // type:func +EnTp_Draw = 0x808C41A0; // type:func +EnSt_SetupAction = 0x808C4630; // type:func +EnSt_SpawnDust = 0x808C463C; // type:func +EnSt_SpawnBlastEffect = 0x808C485C; // type:func +EnSt_SpawnDeadEffect = 0x808C48E4; // type:func +EnSt_CreateBlureEffect = 0x808C4A20; // type:func +EnSt_CheckCeilingPos = 0x808C4B1C; // type:func +EnSt_AddBlurVertex = 0x808C4BEC; // type:func +EnSt_AddBlurSpace = 0x808C4CF4; // type:func +EnSt_SetWaitingAnimation = 0x808C4D20; // type:func +EnSt_SetReturnToCeilingAnimation = 0x808C4D50; // type:func +EnSt_SetLandAnimation = 0x808C4D90; // type:func +EnSt_SetDropAnimAndVel = 0x808C4DEC; // type:func +EnSt_InitColliders = 0x808C4E4C; // type:func +EnSt_CheckBodyStickHit = 0x808C4F8C; // type:func +EnSt_SetBodyCylinderAC = 0x808C5000; // type:func +EnSt_SetLegsCylinderAC = 0x808C5044; // type:func +EnSt_SetCylinderOC = 0x808C50FC; // type:func +EnSt_UpdateCylinders = 0x808C52D4; // type:func +EnSt_CheckHitPlayer = 0x808C5398; // type:func +EnSt_CheckHitFrontside = 0x808C5484; // type:func +EnSt_CheckHitBackside = 0x808C54C4; // type:func +EnSt_CheckColliders = 0x808C56B4; // type:func +EnSt_SetColliderScale = 0x808C573C; // type:func +EnSt_SetTeethColor = 0x808C58A8; // type:func +EnSt_DecrStunTimer = 0x808C59D8; // type:func +EnSt_UpdateYaw = 0x808C59F8; // type:func +EnSt_IsDoneBouncing = 0x808C5C98; // type:func +EnSt_Bob = 0x808C5D60; // type:func +EnSt_IsCloseToPlayer = 0x808C5DCC; // type:func +EnSt_IsCloseToInitialPos = 0x808C5E74; // type:func +EnSt_IsCloseToGround = 0x808C5EAC; // type:func +EnSt_Sway = 0x808C5EEC; // type:func +EnSt_Init = 0x808C60BC; // type:func +EnSt_Destroy = 0x808C61E0; // type:func +EnSt_WaitOnCeiling = 0x808C6260; // type:func +EnSt_WaitOnGround = 0x808C62BC; // type:func +EnSt_LandOnGround = 0x808C63B4; // type:func +EnSt_MoveToGround = 0x808C64B8; // type:func +EnSt_ReturnToCeiling = 0x808C65B0; // type:func +EnSt_BounceAround = 0x808C6684; // type:func +EnSt_FinishBouncing = 0x808C6758; // type:func +EnSt_Die = 0x808C68CC; // type:func +EnSt_StartOnCeilingOrGround = 0x808C6944; // type:func +EnSt_Update = 0x808C69C8; // type:func +EnSt_OverrideLimbDraw = 0x808C6B48; // type:func +EnSt_PostLimbDraw = 0x808C6C28; // type:func +EnSt_Draw = 0x808C6C64; // type:func +EnBw_SetupAction = 0x808C72A0; // type:func +EnBw_Init = 0x808C72AC; // type:func +EnBw_Destroy = 0x808C740C; // type:func +func_809CE884 = 0x808C744C; // type:func +func_809CE9A8 = 0x808C7570; // type:func +func_809CEA24 = 0x808C75EC; // type:func +func_809CF72C = 0x808C82F4; // type:func +func_809CF7AC = 0x808C8374; // type:func +func_809CF8F0 = 0x808C84B8; // type:func +func_809CF984 = 0x808C854C; // type:func +func_809CFBA8 = 0x808C8774; // type:func +func_809CFC4C = 0x808C8818; // type:func +func_809CFF10 = 0x808C8ADC; // type:func +func_809CFF98 = 0x808C8B64; // type:func +func_809D00F4 = 0x808C8CC0; // type:func +func_809D014C = 0x808C8D18; // type:func +func_809D01CC = 0x808C8D98; // type:func +func_809D0268 = 0x808C8E34; // type:func +func_809D03CC = 0x808C8F98; // type:func +func_809D0424 = 0x808C8FF0; // type:func +func_809D0584 = 0x808C9150; // type:func +EnBw_Update = 0x808C945C; // type:func +EnBw_OverrideLimbDraw = 0x808C98EC; // type:func +EnBw_Draw = 0x808C9B04; // type:func +EnEiyer_Init = 0x808CA630; // type:func +EnEiyer_Destroy = 0x808CA810; // type:func +EnEiyer_RotateAroundHome = 0x808CA83C; // type:func +EnEiyer_SetupAppearFromGround = 0x808CA8AC; // type:func +EnEiyer_SetupUnderground = 0x808CA9EC; // type:func +EnEiyer_SetupInactive = 0x808CAA4C; // type:func +EnEiyer_SetupAmbush = 0x808CAA78; // type:func +EnEiyer_SetupGlide = 0x808CAB58; // type:func +EnEiyer_SetupStartAttack = 0x808CABD4; // type:func +EnEiyer_SetupDiveAttack = 0x808CABE8; // type:func +EnEiyer_SetupLand = 0x808CAC30; // type:func +EnEiyer_SetupHurt = 0x808CACA8; // type:func +EnEiyer_SetupDie = 0x808CAD58; // type:func +EnEiyer_SetupDead = 0x808CAE18; // type:func +EnEiyer_SetupStunned = 0x808CAE44; // type:func +EnEiyer_AppearFromGround = 0x808CAF08; // type:func +EnEiyer_CheckPlayerCollision = 0x808CAF58; // type:func +EnEiyer_CircleUnderground = 0x808CAF88; // type:func +EnEiyer_WanderUnderground = 0x808CB004; // type:func +EnEiyer_Inactive = 0x808CB138; // type:func +EnEiyer_Ambush = 0x808CB1CC; // type:func +EnEiyer_Glide = 0x808CB324; // type:func +EnEiyer_StartAttack = 0x808CB540; // type:func +EnEiyer_DiveAttack = 0x808CB63C; // type:func +EnEiyer_Land = 0x808CB6C8; // type:func +EnEiyer_Hurt = 0x808CB7BC; // type:func +EnEiyer_Die = 0x808CB8F4; // type:func +EnEiyer_Dead = 0x808CB9A8; // type:func +EnEiyer_Stunned = 0x808CBA28; // type:func +EnEiyer_UpdateDamage = 0x808CBAE0; // type:func +EnEiyer_Update = 0x808CBC28; // type:func +EnEiyer_OverrideLimbDraw = 0x808CBE4C; // type:func +EnEiyer_Draw = 0x808CBEA0; // type:func +EnRiverSound_Init = 0x808CC290; // type:func +EnRiverSound_Destroy = 0x808CC360; // type:func +EnRiverSound_FindClosestPointOnLineSegment = 0x808CC3B8; // type:func +EnRiverSound_GetSfxPos = 0x808CC524; // type:func +EnRiverSound_Update = 0x808CC820; // type:func +EnRiverSound_Draw = 0x808CC9F0; // type:func +func_80A6B250 = 0x808CCC20; // type:func +func_80A6B30C = 0x808CCCDC; // type:func +EnHorseNormal_Init = 0x808CCDA4; // type:func +EnHorseNormal_Destroy = 0x808CD294; // type:func +func_80A6B91C = 0x808CD2F4; // type:func +EnHorseNormal_FollowPath = 0x808CD3AC; // type:func +EnHorseNormal_NextAnimation = 0x808CD588; // type:func +EnHorseNormal_CycleAnimations = 0x808CD5DC; // type:func +func_80A6BC48 = 0x808CD624; // type:func +func_80A6BCEC = 0x808CD6CC; // type:func +func_80A6BD7C = 0x808CD75C; // type:func +EnHorseNormal_Wander = 0x808CD850; // type:func +func_80A6C4CC = 0x808CDEB4; // type:func +EnHorseNormal_Wait = 0x808CDF5C; // type:func +func_80A6C6B0 = 0x808CE09C; // type:func +EnHorseNormal_WaitClone = 0x808CE150; // type:func +func_80A6C8E0 = 0x808CE2D4; // type:func +EnHorseNormal_Update = 0x808CE398; // type:func +EnHorseNormal_PostDraw = 0x808CE4F4; // type:func +func_80A6CC88 = 0x808CE680; // type:func +EnHorseNormal_Draw = 0x808CE868; // type:func +EnOssan_SetupAction = 0x808CF240; // type:func +ShopItemDisp_Default = 0x808CF24C; // type:func +ShopItemDisp_SpookyMask = 0x808CF264; // type:func +ShopItemDisp_SkullMask = 0x808CF298; // type:func +ShopItemDisp_BunnyHood = 0x808CF2CC; // type:func +ShopItemDisp_ZoraMask = 0x808CF300; // type:func +ShopItemDisp_GoronMask = 0x808CF334; // type:func +ShopItemDisp_GerudoMask = 0x808CF368; // type:func +EnOssan_SpawnItemsOnShelves = 0x808CF39C; // type:func +EnOssan_UpdateShopOfferings = 0x808CF4F0; // type:func +EnOssan_TalkDefaultShopkeeper = 0x808CF65C; // type:func +EnOssan_TalkKakarikoPotionShopkeeper = 0x808CF67C; // type:func +EnOssan_TalkMarketPotionShopkeeper = 0x808CF6C0; // type:func +EnOssan_TalkKokiriShopkeeper = 0x808CF6E0; // type:func +EnOssan_TalkBazaarShopkeeper = 0x808CF700; // type:func +EnOssan_TalkBombchuShopkeeper = 0x808CF744; // type:func +EnOssan_TalkZoraShopkeeper = 0x808CF764; // type:func +EnOssan_TalkGoronShopkeeper = 0x808CF7BC; // type:func +EnOssan_TalkHappyMaskShopkeeper = 0x808CF890; // type:func +EnOssan_UpdateCameraDirection = 0x808CF91C; // type:func +EnOssan_TryGetObjBankIndices = 0x808CF980; // type:func +EnOssan_Init = 0x808CFA44; // type:func +EnOssan_Destroy = 0x808CFC10; // type:func +EnOssan_UpdateCursorPos = 0x808CFC50; // type:func +EnOssan_EndInteraction = 0x808CFCB4; // type:func +EnOssan_TestEndInteraction = 0x808CFD78; // type:func +EnOssan_TestCancelOption = 0x808CFDC0; // type:func +EnOssan_SetStateStartShopping = 0x808CFE24; // type:func +EnOssan_StartShopping = 0x808CFEA8; // type:func +EnOssan_ChooseTalkToOwner = 0x808CFF80; // type:func +EnOssan_SetLookToShopkeeperFromShelf = 0x808CFFE0; // type:func +EnOssan_State_Idle = 0x808D0014; // type:func +EnOssan_UpdateJoystickInputState = 0x808D00C4; // type:func +EnOssan_SetCursorIndexFromNeutral = 0x808D0210; // type:func +EnOssan_CursorRight = 0x808D0348; // type:func +EnOssan_CursorLeft = 0x808D03D4; // type:func +EnOssan_TryPaybackMask = 0x808D043C; // type:func +EnOssan_State_StartConversation = 0x808D0578; // type:func +EnOssan_FacingShopkeeperDialogResult = 0x808D0720; // type:func +EnOssan_State_FacingShopkeeper = 0x808D078C; // type:func +EnOssan_State_TalkingToShopkeeper = 0x808D08A4; // type:func +EnOssan_State_LookToLeftShelf = 0x808D08F8; // type:func +EnOssan_State_LookToRightShelf = 0x808D09E4; // type:func +EnOssan_CursorUpDown = 0x808D0AD0; // type:func +EnOssan_HasPlayerSelectedItem = 0x808D0CE4; // type:func +EnOssan_State_BrowseLeftShelf = 0x808D0E80; // type:func +EnOssan_State_BrowseRightShelf = 0x808D1040; // type:func +EnOssan_State_LookFromShelfToShopkeeper = 0x808D1200; // type:func +EnOssan_State_DisplayOnlyBombDialog = 0x808D12BC; // type:func +EnOssan_GiveItemWithFanfare = 0x808D138C; // type:func +EnOssan_SetStateCantGetItem = 0x808D1458; // type:func +EnOssan_SetStateQuickBuyDialog = 0x808D148C; // type:func +EnOssan_HandleCanBuyItem = 0x808D14C0; // type:func +EnOssan_HandleCanBuyLonLonMilk = 0x808D1668; // type:func +EnOssan_HandleCanBuyWeirdEgg = 0x808D1774; // type:func +EnOssan_HandleCanBuyBombs = 0x808D18AC; // type:func +EnOssan_BuyGoronCityBombs = 0x808D19B0; // type:func +EnOssan_State_ItemSelected = 0x808D1A54; // type:func +EnOssan_State_SelectMilkBottle = 0x808D1B28; // type:func +EnOssan_State_SelectWeirdEgg = 0x808D1BFC; // type:func +EnOssan_State_SelectUnimplementedItem = 0x808D1CD0; // type:func +EnOssan_State_SelectBombs = 0x808D1D60; // type:func +EnOssan_State_SelectMaskItem = 0x808D1E58; // type:func +EnOssan_State_CantGetItem = 0x808D2034; // type:func +EnOssan_State_QuickBuyDialog = 0x808D20B0; // type:func +EnOssan_State_GiveItemWithFanfare = 0x808D2158; // type:func +EnOssan_State_ItemPurchased = 0x808D21C8; // type:func +EnOssan_State_ContinueShoppingPrompt = 0x808D230C; // type:func +EnOssan_State_WaitForDisplayOnlyBombDialog = 0x808D24EC; // type:func +EnOssan_State_21 = 0x808D2554; // type:func +EnOssan_State_22 = 0x808D25C8; // type:func +EnOssan_State_GiveLonLonMilk = 0x808D261C; // type:func +EnOssan_State_LendMaskOfTruth = 0x808D2670; // type:func +EnOssan_SetStateGiveDiscountDialog = 0x808D26E0; // type:func +EnOssan_State_GiveDiscountDialog = 0x808D270C; // type:func +EnOssan_PositionSelectedItem = 0x808D27A0; // type:func +EnOssan_ResetItemPosition = 0x808D2888; // type:func +EnOssan_TakeItemOffShelf = 0x808D28AC; // type:func +EnOssan_ReturnItemToShelf = 0x808D2948; // type:func +EnOssan_UpdateItemSelectedProperty = 0x808D29D4; // type:func +EnOssan_UpdateCursorAnim = 0x808D2B10; // type:func +EnOssan_UpdateStickDirectionPromptAnim = 0x808D2BDC; // type:func +EnOssan_WaitForBlink = 0x808D2D8C; // type:func +EnOssan_Blink = 0x808D2DC0; // type:func +EnOssan_AreShopkeeperObjectsLoaded = 0x808D2E60; // type:func +EnOssan_InitBazaarShopkeeper = 0x808D2EFC; // type:func +EnOssan_InitKokiriShopkeeper = 0x808D2F5C; // type:func +EnOssan_InitGoronShopkeeper = 0x808D3074; // type:func +EnOssan_InitZoraShopkeeper = 0x808D3150; // type:func +EnOssan_InitPotionShopkeeper = 0x808D322C; // type:func +EnOssan_InitHappyMaskShopkeeper = 0x808D328C; // type:func +EnOssan_InitBombchuShopkeeper = 0x808D32EC; // type:func +EnOssan_SetupHelloDialog = 0x808D334C; // type:func +EnOssan_InitActionFunc = 0x808D34B4; // type:func +EnOssan_Obj3ToSeg6 = 0x808D376C; // type:func +EnOssan_MainActionFunc = 0x808D37A4; // type:func +EnOssan_Update = 0x808D38C0; // type:func +EnOssan_OverrideLimbDrawDefaultShopkeeper = 0x808D38EC; // type:func +EnOssan_DrawCursor = 0x808D3924; // type:func +EnOssan_DrawTextRec = 0x808D3B84; // type:func +EnOssan_DrawStickDirectionPrompts = 0x808D3D20; // type:func +EnOssan_DrawBazaarShopkeeper = 0x808D40C8; // type:func +EnOssan_OverrideLimbDrawKokiriShopkeeper = 0x808D41BC; // type:func +EnOssan_EmptyDList = 0x808D42B4; // type:func +EnOssan_SetEnvColor = 0x808D42D8; // type:func +EnOssan_DrawKokiriShopkeeper = 0x808D4344; // type:func +EnOssan_DrawGoronShopkeeper = 0x808D44A4; // type:func +EnOssan_OverrideLimbDrawZoraShopkeeper = 0x808D45D8; // type:func +EnOssan_DrawZoraShopkeeper = 0x808D4610; // type:func +EnOssan_DrawPotionShopkeeper = 0x808D4754; // type:func +EnOssan_DrawHappyMaskShopkeeper = 0x808D4840; // type:func +EnOssan_DrawBombchuShopkeeper = 0x808D492C; // type:func +BgTreemouth_SetupAction = 0x808D5820; // type:func +BgTreemouth_Init = 0x808D582C; // type:func +BgTreemouth_Destroy = 0x808D5954; // type:func +func_808BC65C = 0x808D5988; // type:func +func_808BC6F8 = 0x808D5A24; // type:func +func_808BC80C = 0x808D5B38; // type:func +func_808BC864 = 0x808D5B90; // type:func +func_808BC8B8 = 0x808D5BE4; // type:func +func_808BC9EC = 0x808D5D18; // type:func +func_808BCAF0 = 0x808D5E20; // type:func +BgTreemouth_DoNothing = 0x808D5EBC; // type:func +BgTreemouth_Update = 0x808D5ECC; // type:func +BgTreemouth_Draw = 0x808D5F4C; // type:func +BgDodoago_SetupAction = 0x808D6E80; // type:func +BgDodoago_SpawnSparkles = 0x808D6E8C; // type:func +BgDodoago_Init = 0x808D6FAC; // type:func +BgDodoago_Destroy = 0x808D7110; // type:func +BgDodoago_WaitExplosives = 0x808D717C; // type:func +BgDodoago_OpenJaw = 0x808D7440; // type:func +BgDodoago_DoNothing = 0x808D7704; // type:func +BgDodoago_LightOneEye = 0x808D7714; // type:func +BgDodoago_Update = 0x808D7778; // type:func +BgDodoago_Draw = 0x808D78D0; // type:func +BgHidanDalm_Init = 0x808D7C30; // type:func +BgHidanDalm_Destroy = 0x808D7D18; // type:func +BgHidanDalm_Wait = 0x808D7D60; // type:func +BgHidanDalm_Shrink = 0x808D7EE4; // type:func +BgHidanDalm_Update = 0x808D8094; // type:func +BgHidanDalm_UpdateCollider = 0x808D80F4; // type:func +BgHidanDalm_Draw = 0x808D8220; // type:func +BgHidanHrock_Init = 0x808D8480; // type:func +BgHidanHrock_Destroy = 0x808D87B0; // type:func +func_808894A4 = 0x808D87F8; // type:func +func_808894B0 = 0x808D8808; // type:func +func_8088960C = 0x808D8964; // type:func +func_808896B8 = 0x808D8A10; // type:func +BgHidanHrock_Update = 0x808D8AF0; // type:func +BgHidanHrock_Draw = 0x808D8B14; // type:func +func_80A68660 = 0x808D8CB0; // type:func +func_80A686A8 = 0x808D8CFC; // type:func +func_80A68870 = 0x808D8EC4; // type:func +EnHorseGanon_Init = 0x808D8F80; // type:func +EnHorseGanon_Destroy = 0x808D90CC; // type:func +func_80A68AC4 = 0x808D911C; // type:func +func_80A68AF0 = 0x808D914C; // type:func +func_80A68B20 = 0x808D9180; // type:func +func_80A68DB0 = 0x808D9410; // type:func +func_80A68E14 = 0x808D9474; // type:func +EnHorseGanon_Update = 0x808D9538; // type:func +EnHorseGanon_PostDraw = 0x808D960C; // type:func +EnHorseGanon_Draw = 0x808D9798; // type:func +BgHidanRock_Init = 0x808D9A30; // type:func +BgHidanRock_Destroy = 0x808D9BAC; // type:func +func_8088B24C = 0x808D9C00; // type:func +func_8088B268 = 0x808D9C20; // type:func +func_8088B5F4 = 0x808D9FB0; // type:func +func_8088B634 = 0x808D9FF0; // type:func +func_8088B69C = 0x808DA05C; // type:func +func_8088B79C = 0x808DA15C; // type:func +func_8088B90C = 0x808DA2CC; // type:func +func_8088B954 = 0x808DA314; // type:func +func_8088B990 = 0x808DA350; // type:func +BgHidanRock_Update = 0x808DA53C; // type:func +func_8088BC40 = 0x808DA60C; // type:func +BgHidanRock_Draw = 0x808DA81C; // type:func +BgHidanRsekizou_Init = 0x808DAB30; // type:func +BgHidanRsekizou_Destroy = 0x808DAC34; // type:func +BgHidanRsekizou_Update = 0x808DAC7C; // type:func +BgHidanRsekizou_DrawFireball = 0x808DB040; // type:func +BgHidanRsekizou_Draw = 0x808DB358; // type:func +func_8088CEC0 = 0x808DB710; // type:func +BgHidanSekizou_Init = 0x808DBACC; // type:func +BgHidanSekizou_Destroy = 0x808DBC40; // type:func +func_8088D434 = 0x808DBC88; // type:func +func_8088D720 = 0x808DBF74; // type:func +func_8088D750 = 0x808DBFA4; // type:func +BgHidanSekizou_Update = 0x808DC110; // type:func +func_8088D9F4 = 0x808DC24C; // type:func +func_8088DC50 = 0x808DC494; // type:func +func_8088DE08 = 0x808DC64C; // type:func +BgHidanSekizou_Draw = 0x808DC72C; // type:func +BgHidanSima_Init = 0x808DCB60; // type:func +BgHidanSima_Destroy = 0x808DCC64; // type:func +func_8088E518 = 0x808DCCAC; // type:func +func_8088E5D0 = 0x808DCD68; // type:func +func_8088E6D0 = 0x808DCE6C; // type:func +func_8088E760 = 0x808DCF04; // type:func +func_8088E7A8 = 0x808DCF4C; // type:func +func_8088E90C = 0x808DD0B0; // type:func +BgHidanSima_Update = 0x808DD210; // type:func +func_8088EB54 = 0x808DD300; // type:func +BgHidanSima_Draw = 0x808DD778; // type:func +BgHidanSyoku_Init = 0x808DDA60; // type:func +BgHidanSyoku_Destroy = 0x808DDAEC; // type:func +func_8088F47C = 0x808DDB20; // type:func +func_8088F4B8 = 0x808DDB5C; // type:func +func_8088F514 = 0x808DDBBC; // type:func +func_8088F5A0 = 0x808DDC48; // type:func +func_8088F62C = 0x808DDCD4; // type:func +BgHidanSyoku_Update = 0x808DDD30; // type:func +BgHidanSyoku_Draw = 0x808DDDD8; // type:func +EnXc_InitCollider = 0x808DDEC0; // type:func +EnXc_UpdateCollider = 0x808DDF0C; // type:func +EnXc_Destroy = 0x808DDF50; // type:func +EnXc_CalculateHeadTurn = 0x808DDF7C; // type:func +EnXc_SetEyePattern = 0x808DE004; // type:func +EnXc_SpawnNut = 0x808DE08C; // type:func +EnXc_BgCheck = 0x808DE154; // type:func +EnXc_AnimIsFinished = 0x808DE19C; // type:func +EnXc_GetCue = 0x808DE1C0; // type:func +EnXc_CheckForCue = 0x808DE1E4; // type:func +EnXc_CheckForNoCue = 0x808DE230; // type:func +func_80B3C588 = 0x808DE27C; // type:func +func_80B3C620 = 0x808DE314; // type:func +EnXc_ChangeAnimation = 0x808DE3F4; // type:func +EnXc_CheckAndSetAction = 0x808DE4B0; // type:func +func_80B3C7D4 = 0x808DE4C8; // type:func +func_80B3C8CC = 0x808DE4F4; // type:func +func_80B3C924 = 0x808DE550; // type:func +func_80B3C964 = 0x808DE590; // type:func +func_80B3C9DC = 0x808DE608; // type:func +func_80B3C9EC = 0x808DE61C; // type:func +func_80B3CA38 = 0x808DE668; // type:func +EnXc_MinuetCS = 0x808DE6BC; // type:func +func_80B3CB58 = 0x808DE794; // type:func +EnXc_BoleroCS = 0x808DE7E8; // type:func +EnXc_SetupSerenadeAction = 0x808DE948; // type:func +EnXc_SerenadeCS = 0x808DE9A0; // type:func +EnXc_DoNothing = 0x808DEA68; // type:func +EnXc_SetWalkingSFX = 0x808DEA78; // type:func +EnXc_SetNutThrowSFX = 0x808DEAF8; // type:func +EnXc_SetLandingSFX = 0x808DEB84; // type:func +EnXc_SetColossusAppearSFX = 0x808DEC04; // type:func +func_80B3D118 = 0x808DED10; // type:func +EnXc_SetColossusWindSFX = 0x808DED54; // type:func +EnXc_SpawnFlame = 0x808DEE5C; // type:func +EnXc_SetupFlamePos = 0x808DEF00; // type:func +EnXc_DestroyFlame = 0x808DEF7C; // type:func +EnXc_InitFlame = 0x808DEFBC; // type:func +func_80B3D48C = 0x808DF058; // type:func +EnXc_GetCurrentHarpAnim = 0x808DF0A8; // type:func +EnXc_CalcXZAccel = 0x808DF13C; // type:func +func_80B3D644 = 0x808DF214; // type:func +EnXc_CalcXZSpeed = 0x808DF234; // type:func +func_80B3D6F0 = 0x808DF2C0; // type:func +func_80B3D710 = 0x808DF2E0; // type:func +func_80B3D730 = 0x808DF300; // type:func +func_80B3D750 = 0x808DF320; // type:func +EnXc_SetupFallFromSkyAction = 0x808DF36C; // type:func +func_80B3D8A4 = 0x808DF47C; // type:func +EnXc_SetupWalkAction = 0x808DF56C; // type:func +EnXc_SetupHaltAction = 0x808DF5DC; // type:func +EnXc_SetupStoppedAction = 0x808DF688; // type:func +func_80B3DAF0 = 0x808DF6D0; // type:func +EnXc_SetupInitialHarpAction = 0x808DF790; // type:func +EnXc_SetupPlayingHarpAction = 0x808DF808; // type:func +func_80B3DCA8 = 0x808DF890; // type:func +EnXc_SetupHarpPutawayAction = 0x808DF924; // type:func +func_80B3DE00 = 0x808DF9F4; // type:func +func_80B3DE78 = 0x808DFA6C; // type:func +EnXc_SetupReverseAccel = 0x808DFAE8; // type:func +EnXc_SetupReverseWalkAction = 0x808DFB98; // type:func +EnXc_SetupReverseHaltAction = 0x808DFC08; // type:func +EnXc_SetupNutThrow = 0x808DFCB4; // type:func +func_80B3E164 = 0x808DFD5C; // type:func +EnXc_SetupDisappear = 0x808DFDB0; // type:func +EnXc_ActionFunc0 = 0x808DFE20; // type:func +EnXc_ActionFunc1 = 0x808DFE60; // type:func +EnXc_GracefulFall = 0x808DFEA0; // type:func +EnXc_Accelerate = 0x808DFF1C; // type:func +EnXc_Walk = 0x808DFF7C; // type:func +EnXc_Stopped = 0x808DFFDC; // type:func +EnXc_ActionFunc6 = 0x808E003C; // type:func +EnXc_ActionFunc7 = 0x808E0084; // type:func +EnXc_ActionFunc8 = 0x808E00D0; // type:func +EnXc_ActionFunc9 = 0x808E0120; // type:func +EnXc_ActionFunc10 = 0x808E0168; // type:func +EnXc_ActionFunc11 = 0x808E01B0; // type:func +EnXc_ActionFunc12 = 0x808E01FC; // type:func +EnXc_ActionFunc13 = 0x808E0248; // type:func +EnXc_ReverseAccelerate = 0x808E02A4; // type:func +EnXc_ActionFunc15 = 0x808E0310; // type:func +EnXc_HaltAndWaitToThrowNut = 0x808E037C; // type:func +EnXc_ThrowNut = 0x808E03E8; // type:func +EnXc_Delete = 0x808E0450; // type:func +EnXc_Fade = 0x808E04AC; // type:func +func_80B3E87C = 0x808E04CC; // type:func +EnXc_PullingOutHarpOverrideLimbDraw = 0x808E04FC; // type:func +EnXc_HarpOverrideLimbDraw = 0x808E0538; // type:func +EnXc_DrawPullingOutHarp = 0x808E0560; // type:func +EnXc_DrawHarp = 0x808E069C; // type:func +func_80B3EBF0 = 0x808E07D8; // type:func +func_80B3EC00 = 0x808E07EC; // type:func +func_80B3EC0C = 0x808E07FC; // type:func +func_80B3EC90 = 0x808E0880; // type:func +func_80B3ECD8 = 0x808E08C8; // type:func +EnXc_ActionFunc20 = 0x808E0938; // type:func +EnXc_ActionFunc21 = 0x808E095C; // type:func +EnXc_ActionFunc22 = 0x808E097C; // type:func +EnXc_ActionFunc23 = 0x808E09C4; // type:func +EnXc_ActionFunc24 = 0x808E0A24; // type:func +EnXc_ActionFunc25 = 0x808E0A34; // type:func +EnXc_ActionFunc26 = 0x808E0A44; // type:func +EnXc_ActionFunc27 = 0x808E0A54; // type:func +EnXc_ActionFunc28 = 0x808E0A64; // type:func +func_80B3EE64 = 0x808E0A74; // type:func +func_80B3EE74 = 0x808E0A88; // type:func +func_80B3EEA4 = 0x808E0ABC; // type:func +func_80B3EEC8 = 0x808E0AE0; // type:func +func_80B3EEEC = 0x808E0B04; // type:func +func_80B3EF10 = 0x808E0B28; // type:func +func_80B3EF34 = 0x808E0B4C; // type:func +func_80B3EF58 = 0x808E0B70; // type:func +func_80B3EF80 = 0x808E0B98; // type:func +func_80B3EFA4 = 0x808E0BBC; // type:func +func_80B3EFC8 = 0x808E0BE0; // type:func +func_80B3EFEC = 0x808E0C04; // type:func +func_80B3F010 = 0x808E0C28; // type:func +func_80B3F0B8 = 0x808E0CD4; // type:func +func_80B3F0DC = 0x808E0CF8; // type:func +func_80B3F100 = 0x808E0D1C; // type:func +EnXc_Serenade = 0x808E0D40; // type:func +EnXc_ActionFunc30 = 0x808E0D60; // type:func +EnXc_ActionFunc31 = 0x808E0D8C; // type:func +EnXc_ActionFunc32 = 0x808E0DD0; // type:func +EnXc_ActionFunc33 = 0x808E0DFC; // type:func +EnXc_ActionFunc34 = 0x808E0E28; // type:func +EnXc_ActionFunc35 = 0x808E0E54; // type:func +EnXc_ActionFunc36 = 0x808E0E80; // type:func +EnXc_ActionFunc37 = 0x808E0EAC; // type:func +EnXc_ActionFunc38 = 0x808E0ED8; // type:func +EnXc_ActionFunc39 = 0x808E0F04; // type:func +EnXc_ActionFunc40 = 0x808E0F30; // type:func +EnXc_ActionFunc41 = 0x808E0F90; // type:func +EnXc_ActionFunc42 = 0x808E0FBC; // type:func +EnXc_ActionFunc43 = 0x808E0FE8; // type:func +EnXc_ActionFunc44 = 0x808E1014; // type:func +func_80B3F3C8 = 0x808E1024; // type:func +func_80B3F3D8 = 0x808E1038; // type:func +EnXc_PlayDiveSFX = 0x808E1058; // type:func +EnXc_LakeHyliaDive = 0x808E10AC; // type:func +func_80B3F534 = 0x808E1198; // type:func +func_80B3F59C = 0x808E1200; // type:func +func_80B3F620 = 0x808E1284; // type:func +func_80B3F644 = 0x808E12A8; // type:func +func_80B3F668 = 0x808E12CC; // type:func +func_80B3F6DC = 0x808E1340; // type:func +EnXc_SetupKneelAction = 0x808E1364; // type:func +func_80B3F754 = 0x808E13BC; // type:func +func_80B3F7BC = 0x808E142C; // type:func +EnXc_ActionFunc45 = 0x808E1468; // type:func +EnXc_ActionFunc46 = 0x808E1494; // type:func +EnXc_ActionFunc47 = 0x808E14C0; // type:func +EnXc_ActionFunc48 = 0x808E1518; // type:func +EnXc_ActionFunc49 = 0x808E1544; // type:func +EnXc_Kneel = 0x808E15A8; // type:func +EnXc_ActionFunc51 = 0x808E160C; // type:func +EnXc_ActionFunc52 = 0x808E1670; // type:func +func_80B3FA08 = 0x808E1690; // type:func +func_80B3FA2C = 0x808E16B8; // type:func +EnXc_PlayTriforceSFX = 0x808E16D8; // type:func +func_80B3FAE0 = 0x808E1770; // type:func +EnXc_CalcTriforce = 0x808E17B8; // type:func +func_80B3FF0C = 0x808E1BB0; // type:func +EnXc_SetupShowTriforceAction = 0x808E1C58; // type:func +EnXc_SetupShowTriforceIdleAction = 0x808E1CE8; // type:func +func_80B400AC = 0x808E1D54; // type:func +EnXc_ActionFunc53 = 0x808E1D90; // type:func +EnXc_ActionFunc54 = 0x808E1DB0; // type:func +EnXc_ShowTriforce = 0x808E1DF8; // type:func +EnXc_ShowTriforceIdle = 0x808E1E60; // type:func +EnXc_TriforceOverrideLimbDraw = 0x808E1EBC; // type:func +EnXc_TriforcePostLimbDraw = 0x808E1EE4; // type:func +EnXc_DrawTriforce = 0x808E1F60; // type:func +func_80B40590 = 0x808E21F4; // type:func +EnXc_SetThrownAroundSFX = 0x808E2210; // type:func +EnXc_PlayLinkScreamSFX = 0x808E22D4; // type:func +EnXc_SetCrySFX = 0x808E2308; // type:func +func_80B406F8 = 0x808E2364; // type:func +EnXc_SetupIdleInNocturne = 0x808E237C; // type:func +EnXc_SetupDefenseStance = 0x808E2418; // type:func +EnXc_SetupContortions = 0x808E2490; // type:func +EnXc_SetupFallInNocturne = 0x808E252C; // type:func +EnXc_SetupHittingGroundInNocturne = 0x808E2608; // type:func +func_80B40A78 = 0x808E26A8; // type:func +EnXc_SetupKneelInNocturne = 0x808E2748; // type:func +func_80B40BB4 = 0x808E27E4; // type:func +func_80B40C50 = 0x808E2880; // type:func +func_80B40C74 = 0x808E28A4; // type:func +func_80B40C98 = 0x808E28C8; // type:func +func_80B40CBC = 0x808E28EC; // type:func +func_80B40CE0 = 0x808E2910; // type:func +func_80B40D08 = 0x808E2938; // type:func +func_80B40D2C = 0x808E295C; // type:func +func_80B40D50 = 0x808E2980; // type:func +func_80B40D74 = 0x808E29A4; // type:func +EnXc_SetupReverseHaltInNocturneCS = 0x808E29C8; // type:func +func_80B40E40 = 0x808E2A74; // type:func +func_80B40E64 = 0x808E2A98; // type:func +func_80B40E88 = 0x808E2ABC; // type:func +EnXc_SetupNocturneState = 0x808E2AE0; // type:func +EnXc_InitialNocturneAction = 0x808E2C20; // type:func +EnXc_IdleInNocturne = 0x808E2C40; // type:func +EnXc_DefenseStance = 0x808E2C90; // type:func +EnXc_Contort = 0x808E2CD8; // type:func +EnXc_FallInNocturne = 0x808E2D44; // type:func +EnXc_HitGroundInNocturne = 0x808E2DAC; // type:func +EnXc_ActionFunc63 = 0x808E2DEC; // type:func +EnXc_KneelInNocturneCS = 0x808E2E48; // type:func +EnXc_ActionFunc65 = 0x808E2E90; // type:func +EnXc_ActionFunc66 = 0x808E2ED4; // type:func +EnXc_ActionFunc67 = 0x808E2F00; // type:func +EnXc_ActionFunc68 = 0x808E2F2C; // type:func +EnXc_ActionFunc69 = 0x808E2F58; // type:func +EnXc_ActionFunc70 = 0x808E2F84; // type:func +EnXc_ActionFunc71 = 0x808E2FB0; // type:func +EnXc_ActionFunc72 = 0x808E2FDC; // type:func +EnXc_ReverseAccelInNocturneCS = 0x808E3008; // type:func +EnXc_ReverseWalkInNocturneCS = 0x808E3034; // type:func +EnXc_ReverseHaltInNocturneCS = 0x808E3088; // type:func +EnXc_ThrowNutInNocturneCS = 0x808E30B4; // type:func +EnXc_DeleteInNocturneCS = 0x808E30E0; // type:func +EnXc_KillInNocturneCS = 0x808E310C; // type:func +EnXc_DrawSquintingEyes = 0x808E3130; // type:func +EnXc_InitTempleOfTime = 0x808E320C; // type:func +EnXc_SetupDialogueAction = 0x808E3378; // type:func +func_80B41798 = 0x808E3400; // type:func +EnXc_BlockingPedestalAction = 0x808E344C; // type:func +EnXc_ActionFunc80 = 0x808E34B4; // type:func +EnXc_Update = 0x808E351C; // type:func +EnXc_Init = 0x808E3564; // type:func +EnXc_OverrideLimbDraw = 0x808E36D0; // type:func +EnXc_PostLimbDraw = 0x808E3758; // type:func +EnXc_DrawNothing = 0x808E37E4; // type:func +EnXc_DrawDefault = 0x808E37F4; // type:func +EnXc_Draw = 0x808E38FC; // type:func +BgHidanCurtain_Init = 0x808E4650; // type:func +BgHidanCurtain_Destroy = 0x808E4864; // type:func +BgHidanCurtain_WaitForSwitchOn = 0x808E4890; // type:func +BgHidanCurtain_WaitForCutscene = 0x808E4944; // type:func +BgHidanCurtain_WaitForClear = 0x808E4970; // type:func +BgHidanCurtain_WaitForSwitchOff = 0x808E49B4; // type:func +BgHidanCurtain_TurnOn = 0x808E49F8; // type:func +BgHidanCurtain_TurnOff = 0x808E4A6C; // type:func +BgHidanCurtain_WaitForTimer = 0x808E4B5C; // type:func +BgHidanCurtain_Update = 0x808E4BC0; // type:func +BgHidanCurtain_Draw = 0x808E4E54; // type:func +BgSpot00Hanebasi_Init = 0x808E50F0; // type:func +BgSpot00Hanebasi_Destroy = 0x808E5500; // type:func +BgSpot00Hanebasi_DrawbridgeWait = 0x808E555C; // type:func +BgSpot00Hanebasi_DoNothing = 0x808E568C; // type:func +BgSpot00Hanebasi_DrawbridgeRiseAndFall = 0x808E569C; // type:func +BgSpot00Hanebasi_SetTorchLightInfo = 0x808E57D0; // type:func +BgSpot00Hanebasi_Update = 0x808E5928; // type:func +BgSpot00Hanebasi_DrawTorches = 0x808E5C38; // type:func +BgSpot00Hanebasi_Draw = 0x808E5ED8; // type:func +EnMb_SetupAction = 0x808E6200; // type:func +EnMb_Init = 0x808E620C; // type:func +EnMb_Destroy = 0x808E6570; // type:func +EnMb_FaceWaypoint = 0x808E65C0; // type:func +EnMb_NextWaypoint = 0x808E65F8; // type:func +EnMb_IsPlayerInCorridor = 0x808E66E4; // type:func +EnMb_FindWaypointTowardsPlayer = 0x808E6858; // type:func +EnMb_SetupSpearGuardLookAround = 0x808E69E8; // type:func +EnMb_SetupClubWaitPlayerNear = 0x808E6A50; // type:func +EnMb_SetupSpearPatrolTurnTowardsWaypoint = 0x808E6AB4; // type:func +EnMb_SetupSpearGuardWalk = 0x808E6B2C; // type:func +EnMb_SetupSpearPatrolWalkTowardsWaypoint = 0x808E6BD0; // type:func +EnMb_SetupSpearPrepareAndCharge = 0x808E6C80; // type:func +EnMb_SetupSpearPatrolImmediateCharge = 0x808E6D38; // type:func +EnMb_SetupClubAttack = 0x808E6DA8; // type:func +EnMb_SetupSpearEndChargeQuick = 0x808E6E78; // type:func +EnMb_SetupSpearPatrolEndCharge = 0x808E6ED8; // type:func +EnMb_SetupClubWaitAfterAttack = 0x808E6F5C; // type:func +EnMb_SetupClubDamaged = 0x808E6FD4; // type:func +EnMb_SetupClubDamagedWhileKneeling = 0x808E7034; // type:func +EnMb_SetupClubDead = 0x808E70BC; // type:func +EnMb_SetupStunned = 0x808E7144; // type:func +EnMb_Stunned = 0x808E71E8; // type:func +EnMb_SpearGuardLookAround = 0x808E72F4; // type:func +EnMb_SpearPatrolTurnTowardsWaypoint = 0x808E736C; // type:func +EnMb_SpearEndChargeQuick = 0x808E74D0; // type:func +EnMb_ClubWaitAfterAttack = 0x808E7638; // type:func +EnMb_SpearPatrolEndCharge = 0x808E767C; // type:func +EnMb_SpearGuardPrepareAndCharge = 0x808E7994; // type:func +EnMb_ClubAttack = 0x808E7AFC; // type:func +EnMb_SpearPatrolPrepareAndCharge = 0x808E7E74; // type:func +EnMb_SpearPatrolImmediateCharge = 0x808E81D8; // type:func +EnMb_ClubDamaged = 0x808E8548; // type:func +EnMb_ClubDamagedWhileKneeling = 0x808E85DC; // type:func +EnMb_ClubDead = 0x808E86E8; // type:func +EnMb_SpearGuardWalk = 0x808E89AC; // type:func +EnMb_SpearPatrolWalkTowardsWaypoint = 0x808E8CBC; // type:func +EnMb_ClubWaitPlayerNear = 0x808E8FA8; // type:func +EnMb_SetupSpearDamaged = 0x808E9058; // type:func +EnMb_SpearDamaged = 0x808E9120; // type:func +EnMb_SetupSpearDead = 0x808E9198; // type:func +EnMb_SpearDead = 0x808E9270; // type:func +EnMb_SpearUpdateAttackCollider = 0x808E9488; // type:func +EnMb_ClubUpdateAttackCollider = 0x808E9614; // type:func +EnMb_CheckColliding = 0x808E96AC; // type:func +EnMb_Update = 0x808E9878; // type:func +EnMb_PostLimbDraw = 0x808E9A4C; // type:func +EnMb_Draw = 0x808E9BE8; // type:func +EnBombf_SetupAction = 0x808EA430; // type:func +EnBombf_Init = 0x808EA43C; // type:func +EnBombf_Destroy = 0x808EA618; // type:func +EnBombf_SetupGrowBomb = 0x808EA658; // type:func +EnBombf_GrowBomb = 0x808EA680; // type:func +EnBombf_Move = 0x808EA990; // type:func +EnBombf_WaitForRelease = 0x808EAAB4; // type:func +EnBombf_Explode = 0x808EAB18; // type:func +EnBombf_Update = 0x808EAC6C; // type:func +EnBombf_NewMtxDList = 0x808EB418; // type:func +EnBombf_Draw = 0x808EB4A4; // type:func +BgHidanFirewall_Init = 0x808EB8C0; // type:func +BgHidanFirewall_Destroy = 0x808EB960; // type:func +BgHidanFirewall_CheckProximity = 0x808EB98C; // type:func +BgHidanFirewall_Wait = 0x808EB9FC; // type:func +BgHidanFirewall_Countdown = 0x808EBA44; // type:func +BgHidanFirewall_Erupt = 0x808EBA78; // type:func +BgHidanFirewall_Collide = 0x808EBB08; // type:func +BgHidanFirewall_ColliderFollowPlayer = 0x808EBB70; // type:func +BgHidanFirewall_Update = 0x808EBCD4; // type:func +BgHidanFirewall_Draw = 0x808EBDAC; // type:func +BgDyYoseizo_Init = 0x808EC020; // type:func +BgDyYoseizo_Destroy = 0x808EC124; // type:func +BgDyYoseizo_SpawnEffects = 0x808EC134; // type:func +BgDyYoseizo_Bob = 0x808EC430; // type:func +BgDyYoseizo_CheckMagicAcquired = 0x808EC4F8; // type:func +BgDyYoseizo_ChooseType = 0x808EC5BC; // type:func +BgDyYoseizo_SetupSpinGrow_NoReward = 0x808EC9B8; // type:func +BgDyYoseizo_SpinGrow_NoReward = 0x808ECAB4; // type:func +BgDyYoseizo_CompleteSpinGrow_NoReward = 0x808ECC10; // type:func +BgDyYoseizo_SetupGreetPlayer_NoReward = 0x808ECCC0; // type:func +BgDyYoseizo_GreetPlayer_NoReward = 0x808ECDD8; // type:func +BgDyYoseizo_SetupHealPlayer_NoReward = 0x808ECEB4; // type:func +BgDyYoseizo_HealPlayer_NoReward = 0x808ECFA0; // type:func +BgDyYoseizo_SayFarewell_NoReward = 0x808ED278; // type:func +BgDyYoseizo_SetupSpinShrink = 0x808ED354; // type:func +BgDyYoseizo_SpinShrink = 0x808ED458; // type:func +BgDyYoseizo_Vanish = 0x808ED548; // type:func +BgDyYoseizo_SetupSpinGrow_Reward = 0x808ED5EC; // type:func +BgDyYoseizo_SpinGrowSetupGive_Reward = 0x808ED720; // type:func +BgDyYoseizo_Give_Reward = 0x808EDA4C; // type:func +BgDyYoseizo_Update = 0x808EE09C; // type:func +BgDyYoseizo_OverrideLimbDraw = 0x808EE2C8; // type:func +BgDyYoseizo_Draw = 0x808EE330; // type:func +BgDyYoseizo_SpawnEffect = 0x808EE4B8; // type:func +BgDyYoseizo_UpdateEffects = 0x808EE5C8; // type:func +BgDyYoseizo_DrawEffects = 0x808EE8BC; // type:func +EnZl2_Destroy = 0x808EEE10; // type:func +EnZl2_UpdateEyes = 0x808EEE34; // type:func +func_80B4EA40 = 0x808EEEC4; // type:func +func_80B4EAF4 = 0x808EEF78; // type:func +func_80B4EBB8 = 0x808EF03C; // type:func +func_80B4EC48 = 0x808EF0CC; // type:func +EnZl2_setEyesIndex = 0x808EF16C; // type:func +EnZl2_setEyeIndex2 = 0x808EF18C; // type:func +EnZl2_setMouthIndex = 0x808EF1A4; // type:func +func_80B4ED2C = 0x808EF1BC; // type:func +EnZl2_UpdateSkelAnime = 0x808EF204; // type:func +EnZl2_GetCue = 0x808EF228; // type:func +func_80B4EDB8 = 0x808EF250; // type:func +func_80B4EE38 = 0x808EF2D0; // type:func +func_80B4EF64 = 0x808EF400; // type:func +func_80B4F230 = 0x808EF6D0; // type:func +func_80B4F45C = 0x808EF900; // type:func +EnZl2_PostLimbDraw = 0x808EFFCC; // type:func +func_80B4FCCC = 0x808F0118; // type:func +func_80B4FD00 = 0x808F0150; // type:func +func_80B4FD90 = 0x808F01E0; // type:func +func_80B4FDD4 = 0x808F0224; // type:func +func_80B4FE10 = 0x808F0264; // type:func +func_80B4FE48 = 0x808F029C; // type:func +func_80B4FE6C = 0x808F02C4; // type:func +func_80B4FE90 = 0x808F02EC; // type:func +func_80B4FEB4 = 0x808F0314; // type:func +func_80B4FED8 = 0x808F033C; // type:func +EnZl2_GiveLightArrows = 0x808F0364; // type:func +func_80B4FF84 = 0x808F03F4; // type:func +func_80B4FFF0 = 0x808F0460; // type:func +func_80B5008C = 0x808F0500; // type:func +func_80B500E0 = 0x808F0554; // type:func +func_80B501C4 = 0x808F0638; // type:func +func_80B501E8 = 0x808F065C; // type:func +func_80B50260 = 0x808F06D4; // type:func +func_80B50278 = 0x808F06F0; // type:func +func_80B50304 = 0x808F077C; // type:func +func_80B503DC = 0x808F0854; // type:func +func_80B5042C = 0x808F08A4; // type:func +func_80B50488 = 0x808F0900; // type:func +func_80B504D4 = 0x808F094C; // type:func +func_80B5053C = 0x808F09B0; // type:func +func_80B50580 = 0x808F09F8; // type:func +func_80B505D4 = 0x808F0A4C; // type:func +func_80B50618 = 0x808F0A94; // type:func +func_80B50644 = 0x808F0AC0; // type:func +func_80B50670 = 0x808F0AEC; // type:func +func_80B506C4 = 0x808F0B40; // type:func +func_80B5073C = 0x808F0BBC; // type:func +func_80B50780 = 0x808F0C04; // type:func +func_80B507E8 = 0x808F0C6C; // type:func +func_80B5082C = 0x808F0CB4; // type:func +func_80B50880 = 0x808F0D08; // type:func +func_80B508C8 = 0x808F0D50; // type:func +func_80B50928 = 0x808F0DAC; // type:func +func_80B50970 = 0x808F0DF4; // type:func +func_80B50980 = 0x808F0E08; // type:func +func_80B509A0 = 0x808F0E2C; // type:func +func_80B50A04 = 0x808F0E90; // type:func +func_80B50BBC = 0x808F1034; // type:func +func_80B50BEC = 0x808F106C; // type:func +func_80B50C40 = 0x808F10C8; // type:func +func_80B50CA8 = 0x808F1138; // type:func +func_80B50CFC = 0x808F1194; // type:func +func_80B50D50 = 0x808F11F0; // type:func +func_80B50D94 = 0x808F123C; // type:func +func_80B50DE8 = 0x808F1298; // type:func +func_80B50E3C = 0x808F12F4; // type:func +func_80B50E90 = 0x808F1350; // type:func +func_80B50EE4 = 0x808F13AC; // type:func +func_80B50F38 = 0x808F1408; // type:func +func_80B50F8C = 0x808F1464; // type:func +func_80B50FE8 = 0x808F14C8; // type:func +func_80B51034 = 0x808F151C; // type:func +func_80B51080 = 0x808F1570; // type:func +func_80B510CC = 0x808F15C4; // type:func +func_80B51118 = 0x808F1618; // type:func +func_80B51164 = 0x808F166C; // type:func +func_80B511B0 = 0x808F16C0; // type:func +func_80B511FC = 0x808F1714; // type:func +func_80B51250 = 0x808F1770; // type:func +func_80B512B8 = 0x808F17E0; // type:func +func_80B51310 = 0x808F1840; // type:func +func_80B5135C = 0x808F1890; // type:func +func_80B513A8 = 0x808F18DC; // type:func +func_80B51418 = 0x808F1950; // type:func +func_80B5146C = 0x808F19A4; // type:func +func_80B5149C = 0x808F19D8; // type:func +func_80B514F8 = 0x808F1A38; // type:func +func_80B5154C = 0x808F1A8C; // type:func +func_80B515C4 = 0x808F1B04; // type:func +func_80B515D8 = 0x808F1B1C; // type:func +func_80B51644 = 0x808F1B88; // type:func +func_80B51678 = 0x808F1BBC; // type:func +func_80B516D0 = 0x808F1C14; // type:func +func_80B51704 = 0x808F1C48; // type:func +func_80B5175C = 0x808F1CA0; // type:func +func_80B51790 = 0x808F1CD4; // type:func +func_80B517E0 = 0x808F1D24; // type:func +func_80B51824 = 0x808F1D6C; // type:func +func_80B5187C = 0x808F1DC4; // type:func +func_80B518C0 = 0x808F1E0C; // type:func +func_80B51948 = 0x808F1E94; // type:func +func_80B51A5C = 0x808F1F94; // type:func +func_80B51A8C = 0x808F1FCC; // type:func +func_80B51AE4 = 0x808F202C; // type:func +func_80B51B44 = 0x808F2094; // type:func +func_80B51BA8 = 0x808F2100; // type:func +func_80B51C0C = 0x808F216C; // type:func +func_80B51C64 = 0x808F21CC; // type:func +func_80B51CA8 = 0x808F2218; // type:func +func_80B51D0C = 0x808F2284; // type:func +func_80B51D24 = 0x808F22A0; // type:func +func_80B51DA4 = 0x808F2320; // type:func +func_80B51EA8 = 0x808F2424; // type:func +func_80B51EBC = 0x808F243C; // type:func +func_80B51F38 = 0x808F24BC; // type:func +func_80B51FA8 = 0x808F252C; // type:func +func_80B52068 = 0x808F25D8; // type:func +func_80B52098 = 0x808F2610; // type:func +func_80B52108 = 0x808F2688; // type:func +func_80B52114 = 0x808F2698; // type:func +func_80B521A0 = 0x808F26F8; // type:func +EnZl2_Update = 0x808F2784; // type:func +EnZl2_Init = 0x808F27CC; // type:func +EnZl2_OverrideLimbDraw = 0x808F2878; // type:func +func_80B523BC = 0x808F28E0; // type:func +func_80B523C8 = 0x808F28F0; // type:func +func_80B525D4 = 0x808F2ACC; // type:func +EnZl2_Draw = 0x808F2C74; // type:func +BgHidanFslift_Init = 0x808F3510; // type:func +BgHidanFslift_SetHookshotTargetPos = 0x808F35F8; // type:func +BgHidanFslift_Destroy = 0x808F3658; // type:func +BgHidanFslift_SetupIdle = 0x808F368C; // type:func +BgHidanFslift_Idle = 0x808F36A8; // type:func +BgHidanFslift_Descend = 0x808F3748; // type:func +BgHidanFslift_Ascend = 0x808F37B4; // type:func +BgHidanFslift_Update = 0x808F3850; // type:func +BgHidanFslift_Draw = 0x808F38F8; // type:func +EnOE2_SetupAction = 0x808F39E0; // type:func +EnOE2_Init = 0x808F39EC; // type:func +EnOE2_Destroy = 0x808F3A14; // type:func +EnOE2_DoNothing = 0x808F3A24; // type:func +EnOE2_Update = 0x808F3A34; // type:func +EnOE2_Draw = 0x808F3A44; // type:func +BgYdanHasi_Init = 0x808F3AC0; // type:func +BgYdanHasi_Destroy = 0x808F3C24; // type:func +BgYdanHasi_UpdateFloatingBlock = 0x808F3C58; // type:func +BgYdanHasi_InitWater = 0x808F3D90; // type:func +BgYdanHasi_MoveWater = 0x808F3DDC; // type:func +BgYdanHasi_DecWaterTimer = 0x808F3EAC; // type:func +BgYdanHasi_SetupThreeBlocks = 0x808F3F00; // type:func +BgYdanHasi_UpdateThreeBlocks = 0x808F3F6C; // type:func +BgYdanHasi_Update = 0x808F403C; // type:func +BgYdanHasi_Draw = 0x808F4060; // type:func +BgYdanMaruta_Init = 0x808F4270; // type:func +BgYdanMaruta_Destroy = 0x808F44D4; // type:func +func_808BEFF4 = 0x808F4528; // type:func +func_808BF078 = 0x808F45AC; // type:func +func_808BF108 = 0x808F463C; // type:func +func_808BF1EC = 0x808F4720; // type:func +BgYdanMaruta_DoNothing = 0x808F4790; // type:func +BgYdanMaruta_Update = 0x808F47A0; // type:func +BgYdanMaruta_Draw = 0x808F47C4; // type:func +BossGanondrof_ClearPixels8x8 = 0x808F4950; // type:func +BossGanondrof_ClearPixels16x8 = 0x808F4990; // type:func +BossGanondrof_ClearPixels16x16 = 0x808F49D0; // type:func +BossGanondrof_ClearPixels32x16 = 0x808F4A00; // type:func +BossGanondrof_ClearPixels16x32 = 0x808F4A48; // type:func +BossGanondrof_ClearPixels = 0x808F4A94; // type:func +BossGanondrof_SetColliderPos = 0x808F4D44; // type:func +BossGanondrof_Init = 0x808F4D88; // type:func +BossGanondrof_Destroy = 0x808F5018; // type:func +BossGanondrof_SetupIntro = 0x808F5084; // type:func +BossGanondrof_Intro = 0x808F50D0; // type:func +BossGanondrof_SetupPaintings = 0x808F5588; // type:func +BossGanondrof_Paintings = 0x808F55CC; // type:func +BossGanondrof_SetupNeutral = 0x808F57A0; // type:func +BossGanondrof_Neutral = 0x808F5820; // type:func +BossGanondrof_SetupThrow = 0x808F5F68; // type:func +BossGanondrof_Throw = 0x808F6090; // type:func +BossGanondrof_SetupReturn = 0x808F629C; // type:func +BossGanondrof_Return = 0x808F633C; // type:func +BossGanondrof_SetupStunned = 0x808F6448; // type:func +BossGanondrof_Stunned = 0x808F650C; // type:func +BossGanondrof_SetupBlock = 0x808F6620; // type:func +BossGanondrof_Block = 0x808F6694; // type:func +BossGanondrof_SetupCharge = 0x808F6770; // type:func +BossGanondrof_Charge = 0x808F67E0; // type:func +BossGanondrof_SetupDeath = 0x808F6EC4; // type:func +BossGanondrof_Death = 0x808F6F5C; // type:func +BossGanondrof_CollisionCheck = 0x808F7E4C; // type:func +BossGanondrof_Update = 0x808F8078; // type:func +BossGanondrof_OverrideLimbDraw = 0x808F8480; // type:func +BossGanondrof_PostLimbDraw = 0x808F885C; // type:func +BossGanondrof_GetClearPixelDList = 0x808F8920; // type:func +BossGanondrof_EmptyDList = 0x808F898C; // type:func +BossGanondrof_Draw = 0x808F89B0; // type:func +EnAm_SetupAction = 0x808F96E0; // type:func +EnAm_CanMove = 0x808F96EC; // type:func +EnAm_Init = 0x808F9818; // type:func +EnAm_Destroy = 0x808F99E4; // type:func +EnAm_SpawnEffects = 0x808F9A3C; // type:func +EnAm_SetupSleep = 0x808F9BD8; // type:func +EnAm_SetupStatue = 0x808F9C74; // type:func +EnAm_SetupLunge = 0x808F9D04; // type:func +EnAm_SetupCooldown = 0x808F9D68; // type:func +EnAm_SetupMoveToHome = 0x808F9DD4; // type:func +EnAm_SetupRotateToInit = 0x808F9E30; // type:func +EnAm_SetupRotateToHome = 0x808F9E8C; // type:func +EnAm_SetupRecoilFromDamage = 0x808F9EE8; // type:func +EnAm_SetupRicochet = 0x808F9FC0; // type:func +EnAm_Sleep = 0x808FA074; // type:func +EnAm_RotateToHome = 0x808FA2E0; // type:func +EnAm_RotateToInit = 0x808FA3E4; // type:func +EnAm_MoveToHome = 0x808FA550; // type:func +EnAm_RecoilFromDamage = 0x808FA6C0; // type:func +EnAm_Cooldown = 0x808FA764; // type:func +EnAm_Lunge = 0x808FA89C; // type:func +EnAm_Statue = 0x808FAAD0; // type:func +EnAm_SetupStunned = 0x808FAD20; // type:func +EnAm_Stunned = 0x808FAE0C; // type:func +EnAm_Ricochet = 0x808FAEE0; // type:func +EnAm_TransformSwordHitbox = 0x808FAF94; // type:func +EnAm_UpdateDamage = 0x808FB02C; // type:func +EnAm_Update = 0x808FB1C4; // type:func +EnAm_PostLimbDraw = 0x808FB568; // type:func +EnAm_Draw = 0x808FB5B0; // type:func +EnDekubaba_Init = 0x808FBAE0; // type:func +EnDekubaba_Destroy = 0x808FBD24; // type:func +EnDekubaba_DisableACColliderElems = 0x808FBD50; // type:func +EnDekubaba_SetupWait = 0x808FBDD8; // type:func +EnDekubaba_SetupGrow = 0x808FC040; // type:func +EnDekubaba_SetupRetract = 0x808FC170; // type:func +EnDekubaba_SetupDecideLunge = 0x808FC258; // type:func +EnDekubaba_SetupPrepareLunge = 0x808FC2B0; // type:func +EnDekubaba_SetupLunge = 0x808FC2D4; // type:func +EnDekubaba_SetupPullBack = 0x808FC318; // type:func +EnDekubaba_SetupRecover = 0x808FC390; // type:func +EnDekubaba_SetupHit = 0x808FC3C4; // type:func +EnDekubaba_SetupPrunedSomersault = 0x808FC48C; // type:func +EnDekubaba_SetupShrinkDie = 0x808FC500; // type:func +EnDekubaba_SetupStunnedVertical = 0x808FC580; // type:func +EnDekubaba_SetupSway = 0x808FC704; // type:func +EnDekubaba_SetupDeadStickDrop = 0x808FC770; // type:func +EnDekubaba_Wait = 0x808FC810; // type:func +EnDekubaba_Grow = 0x808FC8BC; // type:func +EnDekubaba_Retract = 0x808FCD24; // type:func +EnDekubaba_UpdateHeadPosition = 0x808FD0EC; // type:func +EnDekubaba_DecideLunge = 0x808FD1F0; // type:func +EnDekubaba_Lunge = 0x808FD420; // type:func +EnDekubaba_PrepareLunge = 0x808FD6A8; // type:func +EnDekubaba_PullBack = 0x808FD774; // type:func +EnDekubaba_Recover = 0x808FDB00; // type:func +EnDekubaba_Hit = 0x808FDBF8; // type:func +EnDekubaba_StunnedVertical = 0x808FDD08; // type:func +EnDekubaba_Sway = 0x808FDDA4; // type:func +EnDekubaba_PrunedSomersault = 0x808FDECC; // type:func +EnDekubaba_ShrinkDie = 0x808FE230; // type:func +EnDekubaba_DeadStickDrop = 0x808FE3F4; // type:func +EnDekubaba_UpdateDamage = 0x808FE45C; // type:func +EnDekubaba_Update = 0x808FE710; // type:func +EnDekubaba_DrawStemRetracted = 0x808FE8B0; // type:func +EnDekubaba_DrawStemExtended = 0x808FE9A0; // type:func +EnDekubaba_DrawStemBasePruned = 0x808FEC90; // type:func +EnDekubaba_DrawBaseShadow = 0x808FED50; // type:func +EnDekubaba_PostLimbDraw = 0x808FEE44; // type:func +EnDekubaba_Draw = 0x808FEE80; // type:func +EnMFire1_Init = 0x808FF590; // type:func +EnMFire1_Destroy = 0x808FF5FC; // type:func +EnMFire1_Update = 0x808FF628; // type:func +func_80A9EFE0 = 0x808FF730; // type:func +EnMThunder_Init = 0x808FF73C; // type:func +EnMThunder_Destroy = 0x808FF9FC; // type:func +func_80A9F314 = 0x808FFA6C; // type:func +func_80A9F350 = 0x808FFAA8; // type:func +func_80A9F408 = 0x808FFB60; // type:func +func_80A9F938 = 0x80900094; // type:func +func_80A9F9B4 = 0x80900110; // type:func +EnMThunder_Update = 0x8090027C; // type:func +EnMThunder_Draw = 0x80900450; // type:func +BgDdanJd_Init = 0x80900D30; // type:func +BgDdanJd_Destroy = 0x80900DDC; // type:func +BgDdanJd_Idle = 0x80900E10; // type:func +BgDdanJd_MoveEffects = 0x80900FB4; // type:func +BgDdanJd_Move = 0x8090118C; // type:func +BgDdanJd_Update = 0x80901290; // type:func +BgDdanJd_Draw = 0x809012B4; // type:func +BgBreakwall_SetupAction = 0x80901380; // type:func +BgBreakwall_Init = 0x8090138C; // type:func +BgBreakwall_Destroy = 0x80901538; // type:func +BgBreakwall_SpawnFragments = 0x8090156C; // type:func +BgBreakwall_WaitForObject = 0x80901A3C; // type:func +BgBreakwall_Wait = 0x80901B44; // type:func +BgBreakwall_LavaCoverMove = 0x80901D14; // type:func +BgBreakwall_Update = 0x80901D68; // type:func +BgBreakwall_Draw = 0x80901D8C; // type:func +EnJj_SetupAction = 0x809021F0; // type:func +EnJj_Init = 0x809021FC; // type:func +EnJj_Destroy = 0x8090248C; // type:func +EnJj_Blink = 0x8090251C; // type:func +EnJj_OpenMouth = 0x8090259C; // type:func +EnJj_WaitToOpenMouth = 0x809025F0; // type:func +EnJj_WaitForFish = 0x80902634; // type:func +EnJj_BeginCutscene = 0x809026F0; // type:func +EnJj_CutsceneUpdate = 0x80902798; // type:func +EnJj_RemoveDust = 0x809028F4; // type:func +EnJj_UpdateStaticCollision = 0x8090294C; // type:func +EnJj_Update = 0x8090295C; // type:func +EnJj_Draw = 0x80902A08; // type:func +EnHorseZelda_GetFieldPosition = 0x809037C0; // type:func +EnHorseZelda_Move = 0x8090380C; // type:func +EnHorseZelda_Init = 0x809039D4; // type:func +EnHorseZelda_Destroy = 0x80903B24; // type:func +EnHorseZelda_SetupStop = 0x80903B74; // type:func +EnHorseZelda_Stop = 0x80903BC4; // type:func +EnHorseZelda_Spur = 0x80903C0C; // type:func +EnHorseZelda_Gallop = 0x80903CF4; // type:func +EnHorseZelda_SetRotate = 0x80903D34; // type:func +EnHorseZelda_Update = 0x80903DF8; // type:func +EnHorseZelda_PostDraw = 0x80903ED4; // type:func +EnHorseZelda_Draw = 0x80904060; // type:func +BgDdanKd_SetupAction = 0x809042B0; // type:func +BgDdanKd_Init = 0x809042BC; // type:func +BgDdanKd_Destroy = 0x809043B4; // type:func +BgDdanKd_CheckForExplosions = 0x809043FC; // type:func +BgDdanKd_LowerStairs = 0x80904514; // type:func +BgDdanKd_DoNothing = 0x809049E8; // type:func +BgDdanKd_Update = 0x809049F8; // type:func +BgDdanKd_Draw = 0x80904A1C; // type:func +DoorWarp1_SetupAction = 0x80904BA0; // type:func +DoorWarp1_Init = 0x80904BAC; // type:func +DoorWarp1_Destroy = 0x80904D1C; // type:func +DoorWarp1_SetupWarp = 0x80904DA4; // type:func +DoorWarp1_SetupAdultDungeonWarp = 0x809050AC; // type:func +DoorWarp1_SetupBlueCrystal = 0x80905278; // type:func +DoorWarp1_SetupPurpleCrystal = 0x80905410; // type:func +DoorWarp1_SetPlayerPos = 0x809055B0; // type:func +DoorWarp1_BlueCrystal = 0x809055E8; // type:func +func_80999214 = 0x80905634; // type:func +func_80999348 = 0x80905768; // type:func +DoorWarp1_FloatPlayer = 0x80905830; // type:func +DoorWarp1_PurpleCrystal = 0x8090584C; // type:func +DoorWarp1_ChooseInitialAction = 0x8090592C; // type:func +DoorWarp1_AwaitClearFlag = 0x809059A4; // type:func +func_809995D4 = 0x809059FC; // type:func +DoorWarp1_WarpAppear = 0x80905B4C; // type:func +func_809998A4 = 0x80905CD0; // type:func +DoorWarp1_PlayerInRange = 0x80905D68; // type:func +DoorWarp1_ChildWarpIdle = 0x80905DD4; // type:func +DoorWarp1_ChildWarpOut = 0x80905EA0; // type:func +DoorWarp1_RutoWarpIdle = 0x80906294; // type:func +func_80999EE0 = 0x80906314; // type:func +func_80999FE4 = 0x8090641C; // type:func +DoorWarp1_RutoWarpOut = 0x809064D4; // type:func +func_8099A3A4 = 0x809067E0; // type:func +DoorWarp1_AdultWarpIdle = 0x809068AC; // type:func +func_8099A508 = 0x8090694C; // type:func +DoorWarp1_AdultWarpOut = 0x80906A30; // type:func +DoorWarp1_Destination = 0x80907314; // type:func +DoorWarp1_DoNothing = 0x80907444; // type:func +func_8099B020 = 0x80907454; // type:func +DoorWarp1_Update = 0x80907510; // type:func +DoorWarp1_DrawBlueCrystal = 0x80907574; // type:func +DoorWarp1_DrawPurpleCrystal = 0x80907744; // type:func +DoorWarp1_DrawWarp = 0x809079C8; // type:func +DoorWarp1_Draw = 0x80908874; // type:func +ObjSyokudai_Init = 0x80908EB0; // type:func +ObjSyokudai_Destroy = 0x80909074; // type:func +ObjSyokudai_Update = 0x809090C8; // type:func +ObjSyokudai_Draw = 0x809096E4; // type:func +ItemBHeart_Init = 0x80909B00; // type:func +ItemBHeart_Destroy = 0x80909B6C; // type:func +ItemBHeart_Update = 0x80909B7C; // type:func +func_80B85264 = 0x80909C24; // type:func +ItemBHeart_Draw = 0x80909D10; // type:func +EnDekunuts_Init = 0x80909F10; // type:func +EnDekunuts_Destroy = 0x8090A07C; // type:func +EnDekunuts_SetupWait = 0x8090A0B8; // type:func +EnDekunuts_SetupLookAround = 0x8090A12C; // type:func +EnDekunuts_SetupThrowNut = 0x8090A174; // type:func +EnDekunuts_SetupStand = 0x8090A1B8; // type:func +EnDekunuts_SetupBurrow = 0x8090A220; // type:func +EnDekunuts_SetupBeginRun = 0x8090A270; // type:func +EnDekunuts_SetupRun = 0x8090A2D8; // type:func +EnDekunuts_SetupGasp = 0x8090A330; // type:func +EnDekunuts_SetupBeDamaged = 0x8090A390; // type:func +EnDekunuts_SetupBeStunned = 0x8090A46C; // type:func +EnDekunuts_SetupDie = 0x8090A500; // type:func +EnDekunuts_Wait = 0x8090A550; // type:func +EnDekunuts_LookAround = 0x8090A7B4; // type:func +EnDekunuts_Stand = 0x8090A838; // type:func +EnDekunuts_ThrowNut = 0x8090A924; // type:func +EnDekunuts_Burrow = 0x8090AA7C; // type:func +EnDekunuts_BeginRun = 0x8090AB90; // type:func +EnDekunuts_Run = 0x8090ABF8; // type:func +EnDekunuts_Gasp = 0x8090AE38; // type:func +EnDekunuts_BeDamaged = 0x8090AEA0; // type:func +EnDekunuts_BeStunned = 0x8090AEF0; // type:func +EnDekunuts_Die = 0x8090AF6C; // type:func +EnDekunuts_ColliderCheck = 0x8090B0C8; // type:func +EnDekunuts_Update = 0x8090B1EC; // type:func +EnDekunuts_OverrideLimbDraw = 0x8090B354; // type:func +EnDekunuts_Draw = 0x8090B488; // type:func +BgMenkuriKaiten_Init = 0x8090B710; // type:func +BgMenkuriKaiten_Destroy = 0x8090B778; // type:func +BgMenkuriKaiten_Update = 0x8090B7AC; // type:func +BgMenkuriKaiten_Draw = 0x8090B80C; // type:func +BgMenkuriEye_Init = 0x8090B8A0; // type:func +BgMenkuriEye_Destroy = 0x8090B97C; // type:func +BgMenkuriEye_Update = 0x8090B9A8; // type:func +BgMenkuriEye_Draw = 0x8090BB18; // type:func +EnVali_Init = 0x8090BD40; // type:func +EnVali_Destroy = 0x8090BEBC; // type:func +EnVali_SetupLurk = 0x8090BF0C; // type:func +EnVali_SetupDropAppear = 0x8090BF5C; // type:func +EnVali_SetupFloatIdle = 0x8090BF94; // type:func +EnVali_SetupAttacked = 0x8090C1AC; // type:func +EnVali_SetupRetaliate = 0x8090C1E4; // type:func +EnVali_SetupMoveArmsDown = 0x8090C254; // type:func +EnVali_SetupBurnt = 0x8090C294; // type:func +EnVali_SetupDivideAndDie = 0x8090C2EC; // type:func +EnVali_SetupStunned = 0x8090C3F0; // type:func +EnVali_SetupFrozen = 0x8090C47C; // type:func +EnVali_SetupReturnToLurk = 0x8090C4DC; // type:func +EnVali_DischargeLightning = 0x8090C538; // type:func +EnVali_Lurk = 0x8090C734; // type:func +EnVali_DropAppear = 0x8090C774; // type:func +EnVali_FloatIdle = 0x8090C808; // type:func +EnVali_Attacked = 0x8090C9B4; // type:func +EnVali_Retaliate = 0x8090CA6C; // type:func +EnVali_MoveArmsDown = 0x8090CAC8; // type:func +EnVali_Burnt = 0x8090CB04; // type:func +EnVali_DivideAndDie = 0x8090CB40; // type:func +EnVali_Stunned = 0x8090CCF4; // type:func +EnVali_Frozen = 0x8090CDB0; // type:func +EnVali_ReturnToLurk = 0x8090CF40; // type:func +EnVali_UpdateDamage = 0x8090CFB0; // type:func +EnVali_Update = 0x8090D168; // type:func +EnVali_PulseOutside = 0x8090D2C4; // type:func +EnVali_PulseInsides = 0x8090D4E0; // type:func +EnVali_SetArmLength = 0x8090D6FC; // type:func +EnVali_OverrideLimbDraw = 0x8090D89C; // type:func +EnVali_PostLimbDraw = 0x8090D92C; // type:func +EnVali_DrawBody = 0x8090D9F0; // type:func +EnVali_Draw = 0x8090DD58; // type:func +BgMizuMovebg_GetDragonStatueBossRoomOffsetIndex = 0x8090E400; // type:func +BgMizuMovebg_Init = 0x8090E46C; // type:func +BgMizuMovebg_Destroy = 0x8090E834; // type:func +BgMizuMovebg_SetPosFromPath = 0x8090E8E8; // type:func +BgMizuMovebg_SetScrollAlphas = 0x8090E97C; // type:func +BgMizuMovebg_UpdateMain = 0x8090EB00; // type:func +BgMizuMovebg_UpdateHookshotPlatform = 0x8090EE3C; // type:func +BgMizuMovebg_Update = 0x8090EFF8; // type:func +BgMizuMovebg_Draw = 0x8090F01C; // type:func +BgMizuWater_GetWaterLevelActionIndex = 0x8090F590; // type:func +BgMizuWater_SetWaterBoxesHeight = 0x8090F630; // type:func +BgMizuWater_Init = 0x8090F69C; // type:func +BgMizuWater_Destroy = 0x8090F8F8; // type:func +BgMizuWater_WaitForAction = 0x8090F908; // type:func +BgMizuWater_ChangeWaterLevel = 0x8090FAD4; // type:func +BgMizuWater_Update = 0x8090FDE4; // type:func +BgMizuWater_Draw = 0x8090FF3C; // type:func +ArmsHook_SetupAction = 0x80910260; // type:func +ArmsHook_Init = 0x8091026C; // type:func +ArmsHook_Destroy = 0x809102E0; // type:func +ArmsHook_Wait = 0x80910328; // type:func +ArmsHook_PullPlayer = 0x809103A8; // type:func +ArmsHook_AttachToPlayer = 0x809103BC; // type:func +ArmsHook_DetachFromActor = 0x809103EC; // type:func +ArmsHook_CheckForCancel = 0x80910414; // type:func +ArmsHook_AttachToActor = 0x809104B0; // type:func +ArmsHook_Shoot = 0x809104F8; // type:func +ArmsHook_Update = 0x80910B64; // type:func +ArmsHook_Draw = 0x80910BA4; // type:func +EnfHG_Init = 0x80910FD0; // type:func +EnfHG_Destroy = 0x809110D0; // type:func +EnfHG_SetupIntro = 0x809110FC; // type:func +EnfHG_Intro = 0x80911160; // type:func +EnfHG_SetupApproach = 0x8091236C; // type:func +EnfHG_Approach = 0x809125B8; // type:func +EnfHG_Attack = 0x8091275C; // type:func +EnfHG_Damage = 0x80912BE0; // type:func +EnfHG_Retreat = 0x80912F10; // type:func +EnfHG_Done = 0x80913144; // type:func +EnfHG_Update = 0x80913154; // type:func +EnfHG_PostDraw = 0x809132E8; // type:func +EnfHG_Draw = 0x809132FC; // type:func +BgMoriHineri_Init = 0x80913900; // type:func +BgMoriHineri_Destroy = 0x80913B00; // type:func +func_808A39FC = 0x80913B34; // type:func +BgMoriHineri_DoNothing = 0x80913D2C; // type:func +BgMoriHineri_SpawnBossKeyChest = 0x80913D3C; // type:func +func_808A3C8C = 0x80913DCC; // type:func +func_808A3D58 = 0x80913E98; // type:func +func_808A3E54 = 0x80913F94; // type:func +BgMoriHineri_Update = 0x80914074; // type:func +BgMoriHineri_DrawHallAndRoom = 0x80914098; // type:func +EnBb_SetupAction = 0x80914650; // type:func +EnBb_FindExplosive = 0x8091465C; // type:func +EnBb_SpawnFlameTrail = 0x809146F0; // type:func +EnBb_KillFlameTrail = 0x8091488C; // type:func +EnBb_Init = 0x809148D8; // type:func +EnBb_Destroy = 0x80914C80; // type:func +EnBb_SetupFlameTrail = 0x80914CAC; // type:func +EnBb_FlameTrail = 0x80914D00; // type:func +EnBb_SetupDeath = 0x80914E7C; // type:func +EnBb_Death = 0x80914F10; // type:func +EnBb_SetupDamage = 0x8091508C; // type:func +EnBb_Damage = 0x8091514C; // type:func +EnBb_SetupBlue = 0x809151B8; // type:func +EnBb_Blue = 0x80915278; // type:func +EnBb_SetupDown = 0x80915A6C; // type:func +EnBb_Down = 0x80915AFC; // type:func +EnBb_SetupRed = 0x80915DD0; // type:func +EnBb_Red = 0x80915EE0; // type:func +EnBb_FaceWaypoint = 0x809162A8; // type:func +EnBb_SetWaypoint = 0x809162DC; // type:func +EnBb_SetupWhite = 0x809163A8; // type:func +EnBb_White = 0x80916458; // type:func +EnBb_InitGreen = 0x809167DC; // type:func +EnBb_SetupGreen = 0x80916914; // type:func +EnBb_Green = 0x809169AC; // type:func +EnBb_SetupStunned = 0x8091701C; // type:func +EnBb_Stunned = 0x80917130; // type:func +EnBb_CollisionCheck = 0x809172D4; // type:func +EnBb_Update = 0x80917608; // type:func +EnBb_PostLimbDraw = 0x80917888; // type:func +EnBb_Draw = 0x809178D8; // type:func +BgTokiHikari_Init = 0x80918330; // type:func +BgTokiHikari_Destroy = 0x809183BC; // type:func +BgTokiHikari_DoNothing = 0x809183CC; // type:func +BgTokiHikari_Update = 0x809183DC; // type:func +BgTokiHikari_Draw = 0x80918400; // type:func +func_808BA018 = 0x80918450; // type:func +func_808BA204 = 0x809185F8; // type:func +func_808BA22C = 0x80918620; // type:func +func_808BA274 = 0x80918668; // type:func +func_808BA2CC = 0x809186C0; // type:func +EnYukabyun_Init = 0x809190D0; // type:func +EnYukabyun_Destroy = 0x80919180; // type:func +func_80B43A94 = 0x809191AC; // type:func +func_80B43AD4 = 0x809191EC; // type:func +func_80B43B6C = 0x80919284; // type:func +EnYukabyun_Break = 0x809192E4; // type:func +EnYukabyun_Update = 0x80919358; // type:func +EnYukabyun_Draw = 0x809194F8; // type:func +BgTokiSwd_SetupAction = 0x809196E0; // type:func +BgTokiSwd_Init = 0x809196EC; // type:func +BgTokiSwd_Destroy = 0x809197C0; // type:func +func_808BAF40 = 0x809197EC; // type:func +func_808BB0AC = 0x80919960; // type:func +func_808BB128 = 0x809199E0; // type:func +BgTokiSwd_Update = 0x80919A34; // type:func +BgTokiSwd_Draw = 0x80919A88; // type:func +EnFhgFire_SetUpdate = 0x8091AD30; // type:func +EnFhgFire_Init = 0x8091AD3C; // type:func +EnFhgFire_Destroy = 0x8091B14C; // type:func +EnFhgFire_LightningStrike = 0x8091B1BC; // type:func +EnFhgFire_LightningTrail = 0x8091B554; // type:func +EnFhgFire_LightningShock = 0x8091B6F4; // type:func +EnFhgFire_LightningBurst = 0x8091B838; // type:func +EnFhgFire_SpearLight = 0x8091BAB4; // type:func +EnFhgFire_EnergyBall = 0x8091BCA8; // type:func +EnFhgFire_PhantomWarp = 0x8091C954; // type:func +EnFhgFire_Update = 0x8091CB10; // type:func +EnFhgFire_Draw = 0x8091CB60; // type:func +BgMjin_SetupAction = 0x8091D3D0; // type:func +BgMjin_Init = 0x8091D3DC; // type:func +BgMjin_Destroy = 0x8091D47C; // type:func +func_808A0850 = 0x8091D4B0; // type:func +BgMjin_DoNothing = 0x8091D584; // type:func +BgMjin_Update = 0x8091D594; // type:func +BgMjin_Draw = 0x8091D5B8; // type:func +BgHidanKousi_SetupAction = 0x8091D7C0; // type:func +BgHidanKousi_Init = 0x8091D7CC; // type:func +BgHidanKousi_Destroy = 0x8091D8C4; // type:func +func_80889ACC = 0x8091D8F8; // type:func +func_80889B5C = 0x8091D984; // type:func +func_80889BC0 = 0x8091D9E8; // type:func +func_80889C18 = 0x8091DA40; // type:func +func_80889C90 = 0x8091DAB8; // type:func +func_80889D28 = 0x8091DB54; // type:func +BgHidanKousi_Update = 0x8091DB64; // type:func +BgHidanKousi_Draw = 0x8091DB88; // type:func +DoorToki_Init = 0x8091DD50; // type:func +DoorToki_Destroy = 0x8091DDB8; // type:func +DoorToki_Update = 0x8091DDEC; // type:func +BgHidanHamstep_SetupAction = 0x8091DEB0; // type:func +BgHidanHamstep_SpawnChildren = 0x8091DED0; // type:func +BgHidanHamstep_Init = 0x8091E04C; // type:func +BgHidanHamstep_Destroy = 0x8091E2BC; // type:func +func_808884C8 = 0x8091E310; // type:func +func_80888638 = 0x8091E480; // type:func +func_80888694 = 0x8091E4DC; // type:func +func_80888734 = 0x8091E57C; // type:func +func_808887C4 = 0x8091E610; // type:func +func_80888860 = 0x8091E6AC; // type:func +func_808889B8 = 0x8091E7F8; // type:func +func_80888A58 = 0x8091E898; // type:func +BgHidanHamstep_DoNothing = 0x8091EA30; // type:func +BgHidanHamstep_Update = 0x8091EA40; // type:func +BgHidanHamstep_Draw = 0x8091EA64; // type:func +EnBird_SetupAction = 0x8091ED60; // type:func +EnBird_Init = 0x8091ED6C; // type:func +EnBird_Destroy = 0x8091EE58; // type:func +EnBird_SetupIdle = 0x8091EE68; // type:func +EnBird_Idle = 0x8091EF1C; // type:func +EnBird_SetupMove = 0x8091EFBC; // type:func +EnBird_Move = 0x8091EFFC; // type:func +EnBird_Update = 0x8091F118; // type:func +EnBird_Draw = 0x8091F148; // type:func +EnWood02_SpawnZoneCheck = 0x8091F220; // type:func +EnWood02_SpawnOffspring = 0x8091F348; // type:func +EnWood02_Init = 0x8091F560; // type:func +EnWood02_Destroy = 0x8091F99C; // type:func +EnWood02_Update = 0x8091F9D8; // type:func +EnWood02_Draw = 0x8091FED0; // type:func +EnLightbox_Init = 0x80920400; // type:func +EnLightbox_Destroy = 0x8092052C; // type:func +EnLightbox_Update = 0x80920560; // type:func +EnLightbox_Draw = 0x809207E8; // type:func +EnPubox_Init = 0x80920880; // type:func +EnPubox_Destroy = 0x809209B8; // type:func +EnPubox_Update = 0x809209EC; // type:func +EnPubox_Draw = 0x80920B3C; // type:func +EnTrap_Init = 0x80920BC0; // type:func +EnTrap_Destroy = 0x80920F7C; // type:func +EnTrap_Update = 0x80920FA8; // type:func +EnTrap_Draw = 0x80921D3C; // type:func +EnArowTrap_Init = 0x80921E60; // type:func +EnArowTrap_Destroy = 0x80921EB0; // type:func +EnArowTrap_Update = 0x80921EC0; // type:func +EnVase_Init = 0x80921FB0; // type:func +EnVase_Destroy = 0x80922014; // type:func +EnVase_Draw = 0x80922024; // type:func +EnTa_SetupAction = 0x809220B0; // type:func +EnTa_SetTextForTalkInLonLonHouse = 0x809220C0; // type:func +EnTa_Init = 0x809221A0; // type:func +EnTa_DecreaseShadowSize = 0x80922824; // type:func +EnTa_Destroy = 0x80922858; // type:func +EnTa_RequestTalk = 0x809228D0; // type:func +EnTa_SleepTalkInKakariko = 0x80922978; // type:func +EnTa_SleepTalkInLonLonHouse = 0x809229B8; // type:func +EnTa_SetupAwake = 0x809229F8; // type:func +EnTa_TalkWakingUp2 = 0x80922A74; // type:func +EnTa_TalkWakingUp1 = 0x80922AC0; // type:func +EnTa_WakeUp = 0x80922B5C; // type:func +EnTa_SleepTalkInCastle = 0x80922BE8; // type:func +EnTa_IdleAsleepInCastle = 0x80922C28; // type:func +EnTa_IdleAsleepInLonLonHouse = 0x80922CF0; // type:func +EnTa_IdleAsleepInKakariko = 0x80922D54; // type:func +EnTa_RunWithAccelerationAndSfx = 0x80922E1C; // type:func +EnTa_RunAwayRunOutOfGate = 0x80922E9C; // type:func +EnTa_RunAwayTurnTowardsGate = 0x80922F10; // type:func +EnTa_RunAwayRunWest = 0x80922F70; // type:func +EnTa_RunAwayTurnWest = 0x80922FF8; // type:func +EnTa_RunAwayRunSouth = 0x80923058; // type:func +EnTa_RunAwayStart = 0x809230F8; // type:func +EnTa_TalkAwakeInCastle = 0x80923170; // type:func +EnTa_IdleAwakeInCastle = 0x8092321C; // type:func +EnTa_TalkAwakeInKakariko = 0x80923268; // type:func +EnTa_IdleAwakeInKakariko = 0x809232B4; // type:func +EnTa_TalkAtRanch = 0x8092335C; // type:func +EnTa_IdleAtRanch = 0x809233A8; // type:func +EnTa_CheckCanBuyMilk = 0x809233EC; // type:func +EnTa_CreateFloorCamera = 0x8092343C; // type:func +EnTa_RemoveFloorCamera = 0x809234F0; // type:func +EnTa_SetupActionWithSleepAnimation = 0x80923534; // type:func +EnTa_SetupActionWithWakeUpAnimation = 0x809235C4; // type:func +EnTa_TalkNotEnoughRupees = 0x80923650; // type:func +EnTa_IsPlayerHoldingSuperCucco = 0x809236C8; // type:func +EnTa_TalkFoundSuperCucco = 0x8092371C; // type:func +EnTa_IdleFoundSuperCucco = 0x8092387C; // type:func +EnTa_GetSuperCuccosCount = 0x809238EC; // type:func +EnTa_AnimateHandsUpDown = 0x80923928; // type:func +EnTa_TransitionToPostCuccoGame = 0x809239F4; // type:func +EnTa_TalkCuccoGameEnd = 0x80923A44; // type:func +EnTa_RunCuccoGame = 0x80923B20; // type:func +EnTa_ThrowSuperCuccos = 0x80923E80; // type:func +EnTa_StartingCuccoGame3 = 0x809240F8; // type:func +EnTa_StartingCuccoGame2 = 0x8092421C; // type:func +EnTa_StartingCuccoGame1 = 0x809242EC; // type:func +EnTa_StartCuccoGame = 0x809243B4; // type:func +EnTa_TalkGeneralInLonLonHouse = 0x8092444C; // type:func +EnTa_GiveItemInLonLonHouse = 0x809244A8; // type:func +EnTa_TalkAfterCuccoGameFirstWon = 0x8092457C; // type:func +EnTa_WaitBuyMilkOrPlayCuccoGameResponse = 0x80924614; // type:func +EnTa_WaitForPlayCuccoGameResponse = 0x809247F0; // type:func +EnTa_WaitForMarryMalonResponse = 0x80924918; // type:func +EnTa_ContinueTalkInLonLonHouse = 0x80924998; // type:func +EnTa_TalkAfterCuccoGameWon = 0x80924A64; // type:func +EnTa_IdleSittingInLonLonHouse = 0x80924B3C; // type:func +EnTa_IdleAfterCuccoGameFinished = 0x80924C3C; // type:func +EnTa_BlinkWaitUntilNext = 0x80924D00; // type:func +EnTa_BlinkAdvanceState = 0x80924D34; // type:func +EnTa_AnimRepeatCurrent = 0x80924DF4; // type:func +EnTa_AnimSleeping = 0x80924E34; // type:func +EnTa_AnimSitSleeping = 0x80924E88; // type:func +EnTa_AnimRunToEnd = 0x80924F68; // type:func +EnTa_Update = 0x80924FC0; // type:func +EnTa_OverrideLimbDraw = 0x80925150; // type:func +EnTa_PostLimbDraw = 0x809252D4; // type:func +EnTa_Draw = 0x80925314; // type:func +EnTkEff_Create = 0x80925A70; // type:func +EnTkEff_Update = 0x80925B14; // type:func +EnTkEff_Draw = 0x80925C20; // type:func +EnTkEff_CreateDflt = 0x80925F18; // type:func +EnTk_RestAnim = 0x80925FD0; // type:func +EnTk_WalkAnim = 0x8092604C; // type:func +EnTk_DigAnim = 0x809260C0; // type:func +EnTk_UpdateEyes = 0x80926140; // type:func +EnTk_CheckFacingPlayer = 0x80926204; // type:func +EnTk_CheckNextSpot = 0x80926288; // type:func +EnTk_CheckCurrentSpot = 0x80926370; // type:func +EnTk_Step = 0x809263E8; // type:func +EnTk_Orient = 0x80926510; // type:func +EnTk_GetTextId = 0x80926680; // type:func +EnTk_UpdateTalkState = 0x809266D4; // type:func +EnTk_ChooseReward = 0x80926870; // type:func +EnTk_DigEff = 0x80926A2C; // type:func +EnTk_Init = 0x80926B9C; // type:func +EnTk_Destroy = 0x80926D18; // type:func +EnTk_Rest = 0x80926D44; // type:func +EnTk_Walk = 0x80926F6C; // type:func +EnTk_Dig = 0x8092703C; // type:func +EnTk_Update = 0x809272A0; // type:func +func_80B1D200 = 0x8092734C; // type:func +EnTk_OverrideLimbDraw = 0x80927378; // type:func +EnTk_PostLimbDraw = 0x809273E4; // type:func +EnTk_Draw = 0x80927498; // type:func +BgMoriBigst_SetupAction = 0x809278A0; // type:func +BgMoriBigst_InitDynapoly = 0x809278AC; // type:func +BgMoriBigst_Init = 0x80927904; // type:func +BgMoriBigst_Destroy = 0x809279DC; // type:func +BgMoriBigst_SetupWaitForMoriTex = 0x80927A10; // type:func +BgMoriBigst_WaitForMoriTex = 0x80927A38; // type:func +BgMoriBigst_SetupNoop = 0x80927B04; // type:func +BgMoriBigst_SetupStalfosFight = 0x80927B28; // type:func +BgMoriBigst_StalfosFight = 0x80927BDC; // type:func +BgMoriBigst_SetupFall = 0x80927C54; // type:func +BgMoriBigst_Fall = 0x80927C7C; // type:func +BgMoriBigst_SetupLanding = 0x80927D08; // type:func +BgMoriBigst_Landing = 0x80927D9C; // type:func +BgMoriBigst_SetupStalfosPairFight = 0x80927DC8; // type:func +BgMoriBigst_StalfosPairFight = 0x80927EE0; // type:func +BgMoriBigst_SetupDone = 0x80927F40; // type:func +BgMoriBigst_Update = 0x80927F64; // type:func +BgMoriBigst_Draw = 0x80927FD8; // type:func +func_808A1800 = 0x809281D0; // type:func +func_808A18FC = 0x809282C8; // type:func +BgMoriElevator_Init = 0x80928350; // type:func +BgMoriElevator_Destroy = 0x80928434; // type:func +BgMoriElevator_IsPlayerRiding = 0x80928474; // type:func +BgMoriElevator_SetupWaitAfterInit = 0x809284D4; // type:func +BgMoriElevator_WaitAfterInit = 0x809284E8; // type:func +func_808A1C30 = 0x8092858C; // type:func +BgMoriElevator_MoveIntoGround = 0x809285A0; // type:func +func_808A1CF4 = 0x80928654; // type:func +BgMoriElevator_MoveAboveGround = 0x809286B0; // type:func +BgMoriElevator_SetupSetPosition = 0x80928764; // type:func +BgMoriElevator_SetPosition = 0x80928778; // type:func +BgMoriElevator_StopMovement = 0x80928940; // type:func +func_808A2008 = 0x8092895C; // type:func +BgMoriElevator_Update = 0x80928A10; // type:func +BgMoriElevator_Draw = 0x80928A68; // type:func +BgMoriKaitenkabe_CrossProduct = 0x80928CC0; // type:func +BgMoriKaitenkabe_Init = 0x80928D34; // type:func +BgMoriKaitenkabe_Destroy = 0x80928DE8; // type:func +BgMoriKaitenkabe_WaitForMoriTex = 0x80928E1C; // type:func +BgMoriKaitenkabe_SetupWait = 0x80928E74; // type:func +BgMoriKaitenkabe_Wait = 0x80928E8C; // type:func +BgMoriKaitenkabe_SetupRotate = 0x80928FEC; // type:func +BgMoriKaitenkabe_Rotate = 0x8092900C; // type:func +BgMoriKaitenkabe_Update = 0x80929178; // type:func +BgMoriKaitenkabe_Draw = 0x8092919C; // type:func +BgMoriRakkatenjo_Init = 0x80929330; // type:func +BgMoriRakkatenjo_Destroy = 0x809293E8; // type:func +BgMoriRakkatenjo_IsLinkUnder = 0x8092941C; // type:func +BgMoriRakkatenjo_IsLinkClose = 0x809294CC; // type:func +BgMoriRakkatenjo_SetupWaitForMoriTex = 0x8092957C; // type:func +BgMoriRakkatenjo_WaitForMoriTex = 0x80929590; // type:func +BgMoriRakkatenjo_SetupWait = 0x809295E8; // type:func +BgMoriRakkatenjo_Wait = 0x80929624; // type:func +BgMoriRakkatenjo_SetupFall = 0x809296F4; // type:func +BgMoriRakkatenjo_Fall = 0x80929714; // type:func +BgMoriRakkatenjo_SetupRest = 0x8092988C; // type:func +BgMoriRakkatenjo_Rest = 0x809298B4; // type:func +BgMoriRakkatenjo_SetupRise = 0x809298E4; // type:func +BgMoriRakkatenjo_Rise = 0x80929904; // type:func +BgMoriRakkatenjo_Update = 0x80929984; // type:func +BgMoriRakkatenjo_Draw = 0x80929A5C; // type:func +EnVm_SetupAction = 0x80929CB0; // type:func +EnVm_Init = 0x80929CBC; // type:func +EnVm_Destroy = 0x80929E2C; // type:func +EnVm_SetupWait = 0x80929E58; // type:func +EnVm_Wait = 0x80929EE4; // type:func +EnVm_SetupAttack = 0x8092A238; // type:func +EnVm_Attack = 0x8092A2DC; // type:func +EnVm_SetupStun = 0x8092A52C; // type:func +EnVm_Stun = 0x8092A5D4; // type:func +EnVm_SetupDie = 0x8092A6E0; // type:func +EnVm_Die = 0x8092A7E8; // type:func +EnVm_CheckHealth = 0x8092A89C; // type:func +EnVm_Update = 0x8092A998; // type:func +EnVm_OverrideLimbDraw = 0x8092AB2C; // type:func +EnVm_PostLimbDraw = 0x8092AB94; // type:func +EnVm_Draw = 0x8092AE6C; // type:func +DemoEffect_SetupUpdate = 0x8092B570; // type:func +DemoEffect_InterpolateCsFrames = 0x8092B57C; // type:func +DemoEffect_InitJewel = 0x8092B5DC; // type:func +DemoEffect_InitGetItem = 0x8092B69C; // type:func +DemoEffect_Init = 0x8092B6E8; // type:func +DemoEffect_Destroy = 0x8092BEE8; // type:func +DemoEffect_WaitForObject = 0x8092BF38; // type:func +DemoEffect_UpdatePositionToParent = 0x8092BF90; // type:func +DemoEffect_UpdateCrystalLight = 0x8092BFC0; // type:func +DemoEffect_MedalSparkle = 0x8092BFF4; // type:func +DemoEffect_UpdateGetItem = 0x8092C18C; // type:func +DemoEffect_InitTimeWarp = 0x8092C3CC; // type:func +DemoEffect_UpdateTimeWarpPullMasterSword = 0x8092C588; // type:func +DemoEffect_TimewarpShrink = 0x8092C62C; // type:func +DemoEffect_UpdateTimeWarpReturnFromChamberOfSages = 0x8092C750; // type:func +DemoEffect_UpdateTimeWarpTimeblock = 0x8092C808; // type:func +DemoEffect_InitTimeWarpTimeblock = 0x8092C8C4; // type:func +DemoEffect_UpdateTriforceSpot = 0x8092C948; // type:func +DemoEffect_UpdateLightRingShrinking = 0x8092CC30; // type:func +DemoEffect_UpdateLightRingExpanding = 0x8092CCC0; // type:func +DemoEffect_UpdateLightRingTriforce = 0x8092CD34; // type:func +DemoEffect_UpdateCreationFireball = 0x8092CDF0; // type:func +DemoEffect_InitCreationFireball = 0x8092CF44; // type:func +DemoEffect_UpdateBlueOrbShrink = 0x8092CF94; // type:func +DemoEffect_UpdateBlueOrbGrow = 0x8092CFFC; // type:func +DemoEffect_UpdateLightEffect = 0x8092D0DC; // type:func +DemoEffect_UpdateLgtShower = 0x8092D3D4; // type:func +DemoEffect_UpdateGodLgtDin = 0x8092D440; // type:func +DemoEffect_UpdateGodLgtNayru = 0x8092D5DC; // type:func +DemoEffect_UpdateGodLgtFarore = 0x8092D7D4; // type:func +DemoEffect_MoveTowardTarget = 0x8092D978; // type:func +DemoEffect_InitJewelColor = 0x8092D9D8; // type:func +DemoEffect_SetJewelColor = 0x8092DAD8; // type:func +DemoEffect_MoveJewelSplit = 0x8092E24C; // type:func +DemoEffect_MoveJewelSpherical = 0x8092E2A8; // type:func +DemoEffect_MoveJewelActivateDoorOfTime = 0x8092E48C; // type:func +DemoEffect_JewelSparkle = 0x8092E6F8; // type:func +DemoEffect_PlayJewelSfx = 0x8092E85C; // type:func +DemoEffect_UpdateJewelAdult = 0x8092E8C0; // type:func +DemoEffect_UpdateJewelChild = 0x8092E904; // type:func +DemoEffect_UpdateDust = 0x8092EB18; // type:func +DemoEffect_Update = 0x8092EC3C; // type:func +DemoEffect_CheckForCue = 0x8092EC60; // type:func +DemoEffect_DrawJewel = 0x8092ECA4; // type:func +DemoEffect_DrawCrystalLight = 0x8092F0E4; // type:func +DemoEffect_DrawFireBall = 0x8092F3BC; // type:func +DemoEffect_DrawGodLgt = 0x8092F548; // type:func +DemoEffect_DrawLightEffect = 0x8092F918; // type:func +DemoEffect_DrawBlueOrb = 0x8092FB50; // type:func +DemoEffect_DrawLgtShower = 0x8092FC78; // type:func +DemoEffect_DrawLightRing = 0x8092FDFC; // type:func +DemoEffect_DrawTriforceSpot = 0x8092FF64; // type:func +DemoEffect_DrawGetItem = 0x809304E8; // type:func +DemoEffect_OverrideLimbDrawTimeWarp = 0x80930580; // type:func +DemoEffect_DrawTimeWarp = 0x80930700; // type:func +DemoEffect_FaceTowardPoint = 0x809307D8; // type:func +DemoEffect_SetPosRotFromCue = 0x80930888; // type:func +DemoEffect_MoveTowardCuePos = 0x809309E8; // type:func +DemoEffect_SetStartPosFromCue = 0x80930A94; // type:func +DemoKankyo_SetupAction = 0x80931110; // type:func +DemoKankyo_Init = 0x8093111C; // type:func +DemoKankyo_Destroy = 0x80931500; // type:func +DemoKankyo_SetupType = 0x8093150C; // type:func +DemoKankyo_DoNothing = 0x80931944; // type:func +DemoKankyo_UpdateWarpIn = 0x80931954; // type:func +DemoKankyo_SetPosFromCue = 0x8093197C; // type:func +DemoKankyo_UpdateRock = 0x80931A6C; // type:func +DemoKankyo_UpdateClouds = 0x80931AE4; // type:func +DemoKankyo_UpdateDoorOfTime = 0x80931B30; // type:func +DemoKankyo_KillDoorOfTimeCollision = 0x80931BCC; // type:func +DemoKankyo_Update = 0x80931BF8; // type:func +DemoKankyo_Draw = 0x80931C1C; // type:func +func_80989B54 = 0x80931DC4; // type:func +DemoKankyo_DrawRain = 0x80931F94; // type:func +DemoKankyo_DrawRock = 0x809325A0; // type:func +DemoKankyo_DrawClouds = 0x809326E4; // type:func +DemoKankyo_DrawDoorOfTime = 0x80932A10; // type:func +DemoKankyo_DrawLightPlane = 0x80932B20; // type:func +DemoKankyo_Vec3fCopy = 0x80932C08; // type:func +DemoKankyo_AddVecGeoToVec3f = 0x80932C28; // type:func +DemoKankyo_Vec3fAddPosRot = 0x80932CA8; // type:func +DemoKankyo_DrawWarpSparkles = 0x80932D04; // type:func +DemoKankyo_DrawSparkles = 0x80933460; // type:func +BgHidanFwbig_Init = 0x80934E00; // type:func +BgHidanFwbig_Destroy = 0x80934FA0; // type:func +BgHidanFwbig_UpdatePosition = 0x80934FCC; // type:func +BgHidanFwbig_WaitForSwitch = 0x8093504C; // type:func +BgHidanFwbig_WaitForCs = 0x809350B0; // type:func +BgHidanFwbig_Rise = 0x809350DC; // type:func +BgHidanFwbig_Lower = 0x80935150; // type:func +BgHidanFwbig_WaitForTimer = 0x80935230; // type:func +BgHidanFwbig_WaitForPlayer = 0x80935280; // type:func +BgHidanFwbig_Move = 0x809352E4; // type:func +BgHidanFwbig_MoveCollider = 0x80935384; // type:func +BgHidanFwbig_Update = 0x80935584; // type:func +BgHidanFwbig_Draw = 0x809356FC; // type:func +EnFloormas_Init = 0x80935AE0; // type:func +EnFloormas_Destroy = 0x80935CF4; // type:func +EnFloormas_MakeInvulnerable = 0x80935D20; // type:func +EnFloormas_MakeVulnerable = 0x80935D44; // type:func +EnFloormas_SetupBigDecideAction = 0x80935D60; // type:func +EnFloormas_SetupStand = 0x80935DA8; // type:func +EnFloormas_SetupBigWalk = 0x80935DEC; // type:func +EnFloormas_SetupBigStopWalk = 0x80935E78; // type:func +EnFloormas_SetupRun = 0x80935EC0; // type:func +EnFloormas_SetupTurn = 0x80935EF0; // type:func +EnFloormas_SetupHover = 0x80936020; // type:func +EnFloormas_SetupCharge = 0x809360F8; // type:func +EnFloormas_SetupLand = 0x8093612C; // type:func +EnFloormas_SetupSplit = 0x809361D8; // type:func +EnFloormas_SetupSmallWalk = 0x80936338; // type:func +EnFloormas_SetupSmallDecideAction = 0x80936388; // type:func +EnFloormas_SetupSmallShrink = 0x809363E8; // type:func +EnFloormas_SetupSmallFollowerJumpAtLeader = 0x809364C0; // type:func +EnFloormas_SetupJumpAtLink = 0x8093652C; // type:func +EnFloormas_SetupGrabLink = 0x80936598; // type:func +EnFloormas_SetupMerge = 0x8093676C; // type:func +EnFloormas_SetupSmallWait = 0x809367C4; // type:func +EnFloormas_SetupTakeDamage = 0x80936848; // type:func +EnFloormas_SetupRecover = 0x80936904; // type:func +EnFloormas_SetupFreeze = 0x80936958; // type:func +EnFloormas_Die = 0x80936A58; // type:func +EnFloormas_BigDecideAction = 0x80936AF4; // type:func +EnFloormas_Stand = 0x80936BB8; // type:func +EnFloormas_BigWalk = 0x80936C44; // type:func +EnFloormas_BigStopWalk = 0x80936DA0; // type:func +EnFloormas_Run = 0x80936DDC; // type:func +EnFloormas_Turn = 0x80936EE8; // type:func +EnFloormas_Hover = 0x809370AC; // type:func +EnFloormas_Slide = 0x80937130; // type:func +EnFloormas_Charge = 0x80937270; // type:func +EnFloormas_Land = 0x80937360; // type:func +EnFloormas_Split = 0x80937548; // type:func +EnFloormas_SmallWalk = 0x809375D0; // type:func +EnFloormas_SmallDecideAction = 0x809376C0; // type:func +EnFloormas_SmallShrink = 0x80937828; // type:func +EnFloormas_JumpAtLink = 0x80937880; // type:func +EnFloormas_GrabLink = 0x809379BC; // type:func +EnFloormas_SmallFollowerJumpAtLeader = 0x80937CD8; // type:func +EnFloormas_Merge = 0x80937EE8; // type:func +EnFloormas_SmallWait = 0x80938198; // type:func +EnFloormas_TakeDamage = 0x809381A8; // type:func +EnFloormas_Recover = 0x8093826C; // type:func +EnFloormas_Freeze = 0x809382A8; // type:func +EnFloormas_ColliderCheck = 0x8093831C; // type:func +EnFloormas_Update = 0x809384CC; // type:func +EnFloormas_OverrideLimbDraw = 0x80938734; // type:func +EnFloormas_PostLimbDraw = 0x80938770; // type:func +EnFloormas_Draw = 0x80938860; // type:func +EnFloormas_DrawHighlighted = 0x8093892C; // type:func +EnHeishi1_Init = 0x80938EC0; // type:func +EnHeishi1_Destroy = 0x809390D8; // type:func +EnHeishi1_SetupWalk = 0x809390E8; // type:func +EnHeishi1_Walk = 0x8093919C; // type:func +EnHeishi1_SetupMoveToLink = 0x809394BC; // type:func +EnHeishi1_MoveToLink = 0x80939578; // type:func +EnHeishi1_SetupWait = 0x80939670; // type:func +EnHeishi1_Wait = 0x80939738; // type:func +EnHeishi1_SetupTurnTowardLink = 0x809398F4; // type:func +EnHeishi1_TurnTowardLink = 0x80939990; // type:func +EnHeishi1_SetupKick = 0x80939A3C; // type:func +EnHeishi1_Kick = 0x80939AD0; // type:func +EnHeishi1_SetupWaitNight = 0x80939BA4; // type:func +EnHeishi1_WaitNight = 0x80939C38; // type:func +EnHeishi1_Update = 0x80939CB8; // type:func +EnHeishi1_OverrideLimbDraw = 0x80939FCC; // type:func +EnHeishi1_Draw = 0x8093A010; // type:func +EnRd_SetupAction = 0x8093A3D0; // type:func +EnRd_Init = 0x8093A3DC; // type:func +EnRd_Destroy = 0x8093A5C8; // type:func +EnRd_UpdateMourningTarget = 0x8093A60C; // type:func +EnRd_SetupIdle = 0x8093A678; // type:func +EnRd_Idle = 0x8093A720; // type:func +EnRd_SetupRiseFromCoffin = 0x8093A94C; // type:func +EnRd_RiseFromCoffin = 0x8093A9EC; // type:func +EnRd_SetupWalkToPlayer = 0x8093AB6C; // type:func +EnRd_WalkToPlayer = 0x8093ABF8; // type:func +EnRd_SetupWalkToHome = 0x8093AF2C; // type:func +EnRd_WalkToHome = 0x8093AFAC; // type:func +EnRd_SetupWalkToParent = 0x8093B1C0; // type:func +EnRd_WalkToParent = 0x8093B244; // type:func +EnRd_SetupGrab = 0x8093B3D8; // type:func +EnRd_Grab = 0x8093B43C; // type:func +EnRd_SetupAttemptPlayerFreeze = 0x8093B7A8; // type:func +EnRd_AttemptPlayerFreeze = 0x8093B820; // type:func +EnRd_SetupStandUp = 0x8093B918; // type:func +EnRd_StandUp = 0x8093B964; // type:func +EnRd_SetupCrouch = 0x8093B9C0; // type:func +EnRd_Crouch = 0x8093BA40; // type:func +EnRd_SetupDamaged = 0x8093BA7C; // type:func +EnRd_Damaged = 0x8093BB08; // type:func +EnRd_SetupDead = 0x8093BC18; // type:func +EnRd_Dead = 0x8093BC90; // type:func +EnRd_SetupStunned = 0x8093BDDC; // type:func +EnRd_Stunned = 0x8093BEC8; // type:func +EnRd_TurnTowardsPlayer = 0x8093BF9C; // type:func +EnRd_UpdateDamage = 0x8093C114; // type:func +EnRd_Update = 0x8093C2E0; // type:func +EnRd_OverrideLimbDraw = 0x8093C4CC; // type:func +EnRd_PostLimbDraw = 0x8093C528; // type:func +EnRd_Draw = 0x8093C670; // type:func +EnPoSisters_Init = 0x8093CC90; // type:func +EnPoSisters_Destroy = 0x8093CEDC; // type:func +func_80AD9240 = 0x8093CF44; // type:func +func_80AD9368 = 0x8093D070; // type:func +func_80AD93C4 = 0x8093D0CC; // type:func +func_80AD943C = 0x8093D144; // type:func +func_80AD944C = 0x8093D158; // type:func +func_80AD94E0 = 0x8093D1EC; // type:func +func_80AD9568 = 0x8093D274; // type:func +func_80AD95D8 = 0x8093D2E4; // type:func +func_80AD96A4 = 0x8093D3B0; // type:func +func_80AD9718 = 0x8093D424; // type:func +func_80AD97C8 = 0x8093D4D4; // type:func +func_80AD98F4 = 0x8093D600; // type:func +func_80AD99D4 = 0x8093D6E0; // type:func +func_80AD9A54 = 0x8093D760; // type:func +func_80AD9AA8 = 0x8093D7B4; // type:func +func_80AD9C24 = 0x8093D930; // type:func +func_80AD9D44 = 0x8093DA50; // type:func +func_80AD9DF0 = 0x8093DAFC; // type:func +func_80AD9E60 = 0x8093DB6C; // type:func +func_80AD9F1C = 0x8093DC28; // type:func +func_80AD9F90 = 0x8093DC9C; // type:func +func_80ADA028 = 0x8093DD34; // type:func +func_80ADA094 = 0x8093DDA0; // type:func +func_80ADA10C = 0x8093DE18; // type:func +func_80ADA1B8 = 0x8093DEC8; // type:func +func_80ADA25C = 0x8093DF6C; // type:func +func_80ADA2BC = 0x8093DFCC; // type:func +func_80ADA35C = 0x8093E06C; // type:func +func_80ADA4A8 = 0x8093E1B8; // type:func +func_80ADA530 = 0x8093E240; // type:func +func_80ADA6A0 = 0x8093E3B0; // type:func +func_80ADA7F0 = 0x8093E500; // type:func +func_80ADA8C0 = 0x8093E5D0; // type:func +func_80ADA9E8 = 0x8093E6F8; // type:func +func_80ADAAA4 = 0x8093E7B4; // type:func +func_80ADAC70 = 0x8093E980; // type:func +func_80ADAD54 = 0x8093EA64; // type:func +func_80ADAE6C = 0x8093EB7C; // type:func +func_80ADAFC0 = 0x8093ECD0; // type:func +func_80ADB17C = 0x8093EE8C; // type:func +func_80ADB2B8 = 0x8093EFC8; // type:func +func_80ADB338 = 0x8093F044; // type:func +func_80ADB4B0 = 0x8093F1C0; // type:func +func_80ADB51C = 0x8093F22C; // type:func +func_80ADB770 = 0x8093F480; // type:func +func_80ADB9F0 = 0x8093F700; // type:func +func_80ADBB6C = 0x8093F87C; // type:func +func_80ADBBF4 = 0x8093F904; // type:func +func_80ADBC88 = 0x8093F998; // type:func +func_80ADBD38 = 0x8093FA4C; // type:func +func_80ADBD8C = 0x8093FAA0; // type:func +func_80ADBEE8 = 0x8093FC00; // type:func +func_80ADBF58 = 0x8093FC70; // type:func +func_80ADC034 = 0x8093FD4C; // type:func +func_80ADC10C = 0x8093FE24; // type:func +EnPoSisters_Update = 0x8093FFE8; // type:func +func_80ADC55C = 0x8094027C; // type:func +EnPoSisters_OverrideLimbDraw = 0x8094049C; // type:func +EnPoSisters_PostLimbDraw = 0x8094068C; // type:func +EnPoSisters_Draw = 0x80940D5C; // type:func +BgHeavyBlock_SetPieceRandRot = 0x80941980; // type:func +BgHeavyBlock_InitPiece = 0x80941A10; // type:func +BgHeavyBlock_SetupDynapoly = 0x80941B8C; // type:func +BgHeavyBlock_Init = 0x80941C00; // type:func +BgHeavyBlock_Destroy = 0x80941E44; // type:func +BgHeavyBlock_MovePiece = 0x80941E8C; // type:func +BgHeavyBlock_SpawnDust = 0x80942050; // type:func +BgHeavyBlock_SpawnPieces = 0x809423B4; // type:func +BgHeavyBlock_Wait = 0x809425AC; // type:func +BgHeavyBlock_LiftedUp = 0x809426D4; // type:func +BgHeavyBlock_Fly = 0x8094283C; // type:func +BgHeavyBlock_DoNothing = 0x80942B54; // type:func +BgHeavyBlock_Land = 0x80942B64; // type:func +BgHeavyBlock_Update = 0x80942DD4; // type:func +BgHeavyBlock_Draw = 0x80942DF8; // type:func +BgHeavyBlock_DrawPiece = 0x80942F60; // type:func +BgPoEvent_InitPaintings = 0x80943270; // type:func +BgPoEvent_InitBlocks = 0x809435EC; // type:func +BgPoEvent_Init = 0x8094379C; // type:func +BgPoEvent_Destroy = 0x809438AC; // type:func +BgPoEvent_BlockWait = 0x80943930; // type:func +BgPoEvent_BlockShake = 0x80943A3C; // type:func +BgPoEvent_CheckBlock = 0x80943AF4; // type:func +BgPoEvent_BlockFall = 0x80943C2C; // type:func +BgPoEvent_BlockIdle = 0x80943D30; // type:func +BgPoEvent_BlockPush = 0x80943FE4; // type:func +BgPoEvent_BlockReset = 0x809441A4; // type:func +BgPoEvent_BlockSolved = 0x809442A4; // type:func +BgPoEvent_AmyWait = 0x8094431C; // type:func +BgPoEvent_AmyPuzzle = 0x80944398; // type:func +BgPoEvent_NextPainting = 0x809444B4; // type:func +BgPoEvent_PaintingEmpty = 0x80944570; // type:func +BgPoEvent_PaintingAppear = 0x809445A0; // type:func +BgPoEvent_PaintingVanish = 0x809445D8; // type:func +BgPoEvent_PaintingPresent = 0x80944628; // type:func +BgPoEvent_PaintingBurn = 0x80944884; // type:func +BgPoEvent_Update = 0x80944A30; // type:func +BgPoEvent_Draw = 0x80944AA0; // type:func +ObjMure_SetCullingImpl = 0x809450B0; // type:func +ObjMure_SetCulling = 0x80945108; // type:func +ObjMure_Init = 0x80945134; // type:func +ObjMure_Destroy = 0x809451E4; // type:func +ObjMure_GetMaxChildSpawns = 0x809451F4; // type:func +ObjMure_GetSpawnPos = 0x80945220; // type:func +ObjMure_SpawnActors0 = 0x80945248; // type:func +ObjMure_SpawnActors1 = 0x80945410; // type:func +ObjMure_SpawnActors = 0x8094555C; // type:func +ObjMure_KillActorsImpl = 0x809455AC; // type:func +ObjMure_KillActors = 0x809456A4; // type:func +ObjMure_CheckChildren = 0x809456C4; // type:func +ObjMure_InitialAction = 0x80945788; // type:func +ObjMure_CulledState = 0x809457A0; // type:func +ObjMure_SetFollowTargets = 0x80945800; // type:func +ObjMure_SetChildToFollowPlayer = 0x809458D8; // type:func +ObjMure_GroupBehavior0 = 0x80945A58; // type:func +ObjMure_GroupBehavior1 = 0x80945C80; // type:func +ObjMure_ActiveState = 0x80945E04; // type:func +ObjMure_Update = 0x80945EAC; // type:func +EnSw_CrossProduct = 0x809460C0; // type:func +func_80B0BE20 = 0x80946134; // type:func +func_80B0C020 = 0x80946334; // type:func +func_80B0C0CC = 0x809463E4; // type:func +EnSw_Init = 0x80946818; // type:func +EnSw_Destroy = 0x80946CE0; // type:func +func_80B0C9F0 = 0x80946D0C; // type:func +func_80B0CBE8 = 0x80946F08; // type:func +func_80B0CCF4 = 0x80947014; // type:func +func_80B0CEA8 = 0x809471C8; // type:func +func_80B0CF44 = 0x80947268; // type:func +func_80B0D14C = 0x80947470; // type:func +func_80B0D364 = 0x80947688; // type:func +func_80B0D3AC = 0x809476D0; // type:func +func_80B0D590 = 0x809478B8; // type:func +func_80B0D878 = 0x80947BA0; // type:func +func_80B0DB00 = 0x80947E28; // type:func +func_80B0DC7C = 0x80947FA8; // type:func +func_80B0DE34 = 0x80948164; // type:func +func_80B0DEA8 = 0x809481E0; // type:func +func_80B0DFFC = 0x80948334; // type:func +func_80B0E314 = 0x8094864C; // type:func +func_80B0E430 = 0x80948764; // type:func +func_80B0E5E0 = 0x80948914; // type:func +func_80B0E728 = 0x80948A60; // type:func +func_80B0E90C = 0x80948C44; // type:func +func_80B0E9BC = 0x80948CF4; // type:func +EnSw_Update = 0x80948DA4; // type:func +EnSw_OverrideLimbDraw = 0x80948E00; // type:func +EnSw_PostLimbDraw = 0x809490A4; // type:func +func_80B0EDB8 = 0x809490BC; // type:func +func_80B0EEA4 = 0x80949174; // type:func +EnSw_Draw = 0x809491A0; // type:func +BossFd_SpawnEmber = 0x809498B0; // type:func +BossFd_SpawnDebris = 0x8094997C; // type:func +BossFd_SpawnDust = 0x80949A4C; // type:func +BossFd_SpawnFireBreath = 0x80949AE4; // type:func +BossFd_SetCameraSpeed = 0x80949BF0; // type:func +BossFd_UpdateCamera = 0x80949C90; // type:func +BossFd_Init = 0x80949DFC; // type:func +BossFd_Destroy = 0x8094A11C; // type:func +BossFd_IsFacingLink = 0x8094A17C; // type:func +BossFd_SetupFly = 0x8094A1AC; // type:func +BossFd_Fly = 0x8094A21C; // type:func +BossFd_Wait = 0x8094C8A4; // type:func +BossFd_Effects = 0x8094CA94; // type:func +BossFd_CollisionCheck = 0x8094D6B4; // type:func +BossFd_Update = 0x8094D768; // type:func +BossFd_UpdateEffects = 0x8094DEA8; // type:func +BossFd_DrawEffects = 0x8094E300; // type:func +BossFd_Draw = 0x8094E9A0; // type:func +BossFd_OverrideRightArmDraw = 0x8094EA58; // type:func +BossFd_OverrideLeftArmDraw = 0x8094EB78; // type:func +BossFd_DrawMane = 0x8094EC98; // type:func +BossFd_OverrideHeadDraw = 0x8094F11C; // type:func +BossFd_PostHeadDraw = 0x8094F214; // type:func +BossFd_DrawBody = 0x8094F268; // type:func +ObjectKankyo_SetupAction = 0x80950C10; // type:func +ObjectKankyo_Init = 0x80950C1C; // type:func +ObjectKankyo_Destroy = 0x80950F1C; // type:func +ObjectKankyo_Snow = 0x80950F40; // type:func +ObjectKankyo_Fairies = 0x80950F50; // type:func +ObjectKankyo_Update = 0x80951D68; // type:func +ObjectKankyo_Draw = 0x80951D8C; // type:func +ObjectKankyo_DrawFairies = 0x80951E10; // type:func +ObjectKankyo_DrawSnow = 0x80952298; // type:func +ObjectKankyo_Lightning = 0x80952A60; // type:func +ObjectKankyo_DrawLightning = 0x80952B08; // type:func +ObjectKankyo_SunGraveSparkInit = 0x80952D04; // type:func +ObjectKankyo_WaitForSunGraveSparkObject = 0x80952D50; // type:func +ObjectKankyo_SunGraveSpark = 0x80952DC0; // type:func +ObjectKankyo_DrawSunGraveSpark = 0x80952E6C; // type:func +ObjectKankyo_InitBeams = 0x809533B4; // type:func +ObjectKankyo_WaitForBeamObject = 0x80953400; // type:func +ObjectKankyo_Beams = 0x80953460; // type:func +ObjectKankyo_DrawBeams = 0x80953540; // type:func +EnDu_SetupAction = 0x80953E90; // type:func +EnDu_GetTextId = 0x80953E9C; // type:func +EnDu_UpdateTalkState = 0x80953F40; // type:func +func_809FDDB4 = 0x8095401C; // type:func +func_809FDE24 = 0x8095408C; // type:func +func_809FDE9C = 0x80954104; // type:func +func_809FDFC0 = 0x80954228; // type:func +func_809FE000 = 0x8095426C; // type:func +func_809FE040 = 0x809542B0; // type:func +func_809FE104 = 0x80954374; // type:func +EnDu_Init = 0x8095441C; // type:func +EnDu_Destroy = 0x809545EC; // type:func +func_809FE3B4 = 0x8095462C; // type:func +func_809FE3C0 = 0x8095463C; // type:func +func_809FE4A4 = 0x80954724; // type:func +func_809FE638 = 0x809548BC; // type:func +func_809FE6CC = 0x80954954; // type:func +func_809FE740 = 0x809549C8; // type:func +func_809FE798 = 0x80954A20; // type:func +func_809FE890 = 0x80954B18; // type:func +func_809FEB08 = 0x80954D94; // type:func +func_809FEC14 = 0x80954EA0; // type:func +func_809FEC70 = 0x80954EFC; // type:func +func_809FECE4 = 0x80954F74; // type:func +EnDu_Update = 0x80954FAC; // type:func +EnDu_OverrideLimbDraw = 0x80955138; // type:func +EnDu_PostLimbDraw = 0x809552B4; // type:func +EnDu_Draw = 0x80955310; // type:func +EnFd_SpawnCore = 0x80955920; // type:func +EnFd_SpawnChildFire = 0x80955A18; // type:func +EnFd_SpawnDot = 0x80955B38; // type:func +EnFd_CheckHammer = 0x80955CA4; // type:func +EnFd_ColliderCheck = 0x80955D40; // type:func +EnFd_CanSeeActor = 0x80955ED8; // type:func +EnFd_FindBomb = 0x80955FE8; // type:func +EnFd_FindPotentialTheat = 0x809560A8; // type:func +EnFd_GetPosAdjAroundCircle = 0x8095611C; // type:func +EnFd_ShouldStopRunning = 0x809561E4; // type:func +EnFd_Fade = 0x80956318; // type:func +EnFd_Init = 0x80956428; // type:func +EnFd_Destroy = 0x80956564; // type:func +EnFd_Reappear = 0x80956590; // type:func +EnFd_SpinAndGrow = 0x80956620; // type:func +EnFd_JumpToGround = 0x809566F4; // type:func +EnFd_Land = 0x80956770; // type:func +EnFd_SpinAndSpawnFire = 0x80956850; // type:func +EnFd_Run = 0x80956A70; // type:func +EnFd_WaitForCore = 0x80956CD0; // type:func +EnFd_Update = 0x80956D48; // type:func +EnFd_OverrideLimbDraw = 0x80956F44; // type:func +EnFd_PostLimbDraw = 0x80956F80; // type:func +EnFd_Draw = 0x809572AC; // type:func +EnFd_SpawnEffect = 0x80957658; // type:func +EnFd_UpdateEffectsFlames = 0x80957748; // type:func +EnFd_UpdateEffectsDots = 0x80957860; // type:func +EnFd_DrawEffectsFlames = 0x8095797C; // type:func +EnFd_DrawEffectsDots = 0x80957D50; // type:func +func_80A693D0 = 0x809585C0; // type:func +func_80A6948C = 0x8095867C; // type:func +func_80A695A4 = 0x80958794; // type:func +EnHorseLinkChild_Init = 0x8095885C; // type:func +EnHorseLinkChild_Destroy = 0x80958A34; // type:func +func_80A6988C = 0x80958A84; // type:func +func_80A698F4 = 0x80958AE8; // type:func +func_80A6993C = 0x80958B30; // type:func +func_80A699FC = 0x80958BF0; // type:func +func_80A69B7C = 0x80958D78; // type:func +func_80A69C18 = 0x80958E18; // type:func +func_80A69EC0 = 0x809590C0; // type:func +func_80A69F5C = 0x80959160; // type:func +func_80A6A068 = 0x8095926C; // type:func +func_80A6A4DC = 0x809596E8; // type:func +func_80A6A5A4 = 0x809597B0; // type:func +func_80A6A724 = 0x80959930; // type:func +func_80A6A7D0 = 0x809599E0; // type:func +EnHorseLinkChild_Update = 0x80959CBC; // type:func +EnHorseLinkChild_PostDraw = 0x80959E14; // type:func +EnHorseLinkChild_OverrideLimbDraw = 0x80959FA0; // type:func +EnHorseLinkChild_Draw = 0x8095A028; // type:func +DoorAna_SetupAction = 0x8095A3C0; // type:func +DoorAna_Init = 0x8095A3CC; // type:func +DoorAna_Destroy = 0x8095A488; // type:func +DoorAna_WaitClosed = 0x8095A4C4; // type:func +DoorAna_WaitOpen = 0x8095A5FC; // type:func +DoorAna_GrabPlayer = 0x8095A7B0; // type:func +DoorAna_Update = 0x8095A85C; // type:func +DoorAna_Draw = 0x8095A8B0; // type:func +BgSpot02Objects_Init = 0x8095AA30; // type:func +BgSpot02Objects_Destroy = 0x8095ACA0; // type:func +func_808AC8FC = 0x8095ACD4; // type:func +func_808AC908 = 0x8095ACE4; // type:func +func_808ACA08 = 0x8095ADE4; // type:func +func_808ACAFC = 0x8095AEDC; // type:func +func_808ACB58 = 0x8095AF38; // type:func +BgSpot02Objects_Update = 0x8095AFB8; // type:func +BgSpot02Objects_Draw = 0x8095AFDC; // type:func +func_808ACC34 = 0x8095B018; // type:func +func_808ACCB8 = 0x8095B09C; // type:func +func_808AD3D4 = 0x8095B788; // type:func +func_808AD450 = 0x8095B804; // type:func +BgHaka_Init = 0x8095BD90; // type:func +BgHaka_Destroy = 0x8095BE0C; // type:func +BgHaka_CheckPlayerOnDirtPatch = 0x8095BE40; // type:func +BgHaka_IdleClosed = 0x8095BED0; // type:func +BgHaka_Pull = 0x8095C024; // type:func +BgHaka_IdleOpened = 0x8095C19C; // type:func +BgHaka_IdleLockedClosed = 0x8095C1D8; // type:func +BgHaka_Update = 0x8095C250; // type:func +BgHaka_Draw = 0x8095C274; // type:func +MagicWind_SetupAction = 0x8095C450; // type:func +MagicWind_Init = 0x8095C45C; // type:func +MagicWind_Destroy = 0x8095C568; // type:func +MagicWind_UpdateAlpha = 0x8095C59C; // type:func +MagicWind_WaitForTimer = 0x8095C6BC; // type:func +MagicWind_Grow = 0x8095C738; // type:func +MagicWind_WaitAtFullSize = 0x8095C788; // type:func +MagicWind_FadeOut = 0x8095C7D4; // type:func +MagicWind_Shrink = 0x8095C838; // type:func +MagicWind_Update = 0x8095C878; // type:func +MagicWind_OverrideLimbDraw = 0x8095C8CC; // type:func +MagicWind_Draw = 0x8095CA50; // type:func +MagicFire_Init = 0x8095E150; // type:func +MagicFire_Destroy = 0x8095E1FC; // type:func +MagicFire_UpdateBeforeCast = 0x8095E220; // type:func +MagicFire_Update = 0x8095E2C4; // type:func +MagicFire_Draw = 0x8095E658; // type:func +func_80AEAC10 = 0x80960450; // type:func +func_80AEAC54 = 0x80960494; // type:func +func_80AEACDC = 0x8096051C; // type:func +func_80AEAD20 = 0x80960560; // type:func +EnRu1_DestroyColliders = 0x809605D8; // type:func +func_80AEADD8 = 0x80960618; // type:func +func_80AEADE0 = 0x80960624; // type:func +func_80AEADF0 = 0x80960638; // type:func +EnRu1_Destroy = 0x80960648; // type:func +EnRu1_UpdateEyes = 0x80960668; // type:func +EnRu1_SetEyeIndex = 0x809606F0; // type:func +EnRu1_SetMouthIndex = 0x80960708; // type:func +func_80AEAECC = 0x80960720; // type:func +EnRu1_IsCsStateIdle = 0x80960788; // type:func +EnRu1_GetCue = 0x809607A8; // type:func +func_80AEAFA0 = 0x809607F4; // type:func +func_80AEAFE0 = 0x80960834; // type:func +func_80AEB020 = 0x80960874; // type:func +EnRu1_FindSwitch = 0x809608DC; // type:func +func_80AEB0EC = 0x80960924; // type:func +func_80AEB104 = 0x8096093C; // type:func +func_80AEB124 = 0x8096095C; // type:func +func_80AEB174 = 0x809609AC; // type:func +func_80AEB1B4 = 0x809609F0; // type:func +func_80AEB264 = 0x80960A1C; // type:func +EnRu1_UpdateSkelAnime = 0x80960AD8; // type:func +func_80AEB364 = 0x80960B1C; // type:func +func_80AEB3A4 = 0x80960B5C; // type:func +func_80AEB3CC = 0x80960B84; // type:func +func_80AEB3DC = 0x80960B98; // type:func +EnRu1_GetCueChannel3 = 0x80960BF4; // type:func +func_80AEB458 = 0x80960C14; // type:func +func_80AEB480 = 0x80960C3C; // type:func +EnRu1_SpawnRipple = 0x80960C64; // type:func +func_80AEB50C = 0x80960CCC; // type:func +func_80AEB59C = 0x80960D5C; // type:func +EnRu1_SpawnSplash = 0x80960E48; // type:func +func_80AEB6E0 = 0x80960EAC; // type:func +func_80AEB738 = 0x80960F08; // type:func +func_80AEB7D0 = 0x80960FA0; // type:func +func_80AEB7E0 = 0x80960FB4; // type:func +func_80AEB87C = 0x80961050; // type:func +func_80AEB89C = 0x80961074; // type:func +func_80AEB914 = 0x809610EC; // type:func +func_80AEB934 = 0x8096110C; // type:func +func_80AEB954 = 0x8096112C; // type:func +func_80AEB974 = 0x8096114C; // type:func +func_80AEBA0C = 0x809611E4; // type:func +func_80AEBA2C = 0x80961204; // type:func +func_80AEBAFC = 0x809612D4; // type:func +func_80AEBB3C = 0x80961318; // type:func +func_80AEBB78 = 0x80961358; // type:func +func_80AEBBF4 = 0x809613D8; // type:func +func_80AEBC30 = 0x80961418; // type:func +func_80AEBC84 = 0x80961470; // type:func +func_80AEBCB8 = 0x809614A8; // type:func +func_80AEBD1C = 0x8096150C; // type:func +func_80AEBD94 = 0x80961584; // type:func +func_80AEBE3C = 0x8096162C; // type:func +func_80AEBEC8 = 0x809616BC; // type:func +func_80AEBF60 = 0x80961754; // type:func +func_80AEBFD8 = 0x809617D0; // type:func +func_80AEC070 = 0x80961868; // type:func +func_80AEC0B4 = 0x809618B0; // type:func +func_80AEC100 = 0x80961904; // type:func +func_80AEC130 = 0x80961938; // type:func +func_80AEC17C = 0x80961988; // type:func +func_80AEC1D4 = 0x809619E8; // type:func +func_80AEC244 = 0x80961A5C; // type:func +func_80AEC2C0 = 0x80961ADC; // type:func +func_80AEC320 = 0x80961B40; // type:func +func_80AEC40C = 0x80961C34; // type:func +func_80AEC4CC = 0x80961CF4; // type:func +func_80AEC4F4 = 0x80961D1C; // type:func +func_80AEC5FC = 0x80961E24; // type:func +func_80AEC650 = 0x80961E78; // type:func +func_80AEC6B0 = 0x80961EDC; // type:func +func_80AEC6E4 = 0x80961F14; // type:func +func_80AEC780 = 0x80961FB4; // type:func +func_80AEC81C = 0x80962054; // type:func +func_80AEC8B8 = 0x809620F0; // type:func +func_80AEC93C = 0x80962178; // type:func +func_80AEC9C4 = 0x80962200; // type:func +func_80AECA18 = 0x80962254; // type:func +func_80AECA44 = 0x80962284; // type:func +func_80AECA94 = 0x809622D8; // type:func +func_80AECAB4 = 0x809622F8; // type:func +func_80AECAD4 = 0x80962318; // type:func +func_80AECB18 = 0x80962360; // type:func +func_80AECB60 = 0x809623AC; // type:func +func_80AECBB8 = 0x80962408; // type:func +func_80AECC1C = 0x80962470; // type:func +func_80AECC84 = 0x809624DC; // type:func +func_80AECCB0 = 0x80962508; // type:func +func_80AECDA0 = 0x809625F8; // type:func +func_80AECE04 = 0x8096265C; // type:func +func_80AECE20 = 0x8096267C; // type:func +func_80AECEB4 = 0x8096270C; // type:func +func_80AECF6C = 0x809627C4; // type:func +func_80AED084 = 0x809628DC; // type:func +func_80AED0B0 = 0x80962908; // type:func +func_80AED0C8 = 0x80962920; // type:func +func_80AED0D8 = 0x80962934; // type:func +func_80AED110 = 0x8096296C; // type:func +func_80AED154 = 0x809629B0; // type:func +func_80AED19C = 0x809629F8; // type:func +func_80AED218 = 0x80962A74; // type:func +func_80AED304 = 0x80962B64; // type:func +func_80AED324 = 0x80962B84; // type:func +func_80AED344 = 0x80962BA4; // type:func +func_80AED374 = 0x80962BD8; // type:func +func_80AED3A4 = 0x80962C0C; // type:func +func_80AED3E0 = 0x80962C4C; // type:func +func_80AED414 = 0x80962C84; // type:func +func_80AED44C = 0x80962CC4; // type:func +func_80AED4FC = 0x80962D78; // type:func +func_80AED520 = 0x80962DA0; // type:func +func_80AED57C = 0x80962E00; // type:func +func_80AED5B8 = 0x80962E40; // type:func +func_80AED5DC = 0x80962E68; // type:func +func_80AED600 = 0x80962E90; // type:func +func_80AED624 = 0x80962EB8; // type:func +func_80AED6DC = 0x80962F70; // type:func +func_80AED6F8 = 0x80962F90; // type:func +func_80AED738 = 0x80962FD0; // type:func +func_80AED83C = 0x809630D8; // type:func +func_80AED8DC = 0x8096317C; // type:func +func_80AEDAE0 = 0x80963380; // type:func +func_80AEDB30 = 0x809633D4; // type:func +func_80AEDEF4 = 0x80963794; // type:func +func_80AEDFF4 = 0x80963898; // type:func +func_80AEE02C = 0x809638D8; // type:func +func_80AEE050 = 0x80963900; // type:func +func_80AEE264 = 0x80963B1C; // type:func +func_80AEE2F8 = 0x80963BB0; // type:func +func_80AEE394 = 0x80963C4C; // type:func +func_80AEE488 = 0x80963D40; // type:func +func_80AEE568 = 0x80963E20; // type:func +func_80AEE628 = 0x80963EE4; // type:func +func_80AEE6D0 = 0x80963F88; // type:func +func_80AEE7C4 = 0x8096407C; // type:func +func_80AEEAC8 = 0x8096439C; // type:func +func_80AEEB24 = 0x809643F8; // type:func +func_80AEEBB4 = 0x80964488; // type:func +func_80AEEBD4 = 0x809644A8; // type:func +func_80AEEC5C = 0x80964534; // type:func +func_80AEECF0 = 0x809645CC; // type:func +func_80AEED58 = 0x80964638; // type:func +func_80AEEDCC = 0x809646B0; // type:func +func_80AEEE34 = 0x8096471C; // type:func +func_80AEEE9C = 0x80964788; // type:func +func_80AEEF08 = 0x809647F8; // type:func +func_80AEEF5C = 0x80964850; // type:func +func_80AEEF68 = 0x80964860; // type:func +func_80AEEFEC = 0x809648E8; // type:func +func_80AEF080 = 0x8096497C; // type:func +func_80AEF0BC = 0x809649BC; // type:func +func_80AEF170 = 0x80964A74; // type:func +func_80AEF188 = 0x80964A8C; // type:func +func_80AEF1F0 = 0x80964AF4; // type:func +func_80AEF29C = 0x80964BA0; // type:func +func_80AEF2AC = 0x80964BB4; // type:func +func_80AEF2D0 = 0x80964BDC; // type:func +func_80AEF354 = 0x80964C68; // type:func +func_80AEF3A8 = 0x80964CC4; // type:func +func_80AEF40C = 0x80964D2C; // type:func +func_80AEF4A8 = 0x80964DCC; // type:func +func_80AEF4E0 = 0x80964E04; // type:func +func_80AEF51C = 0x80964E44; // type:func +func_80AEF540 = 0x80964E6C; // type:func +func_80AEF5B8 = 0x80964EE8; // type:func +func_80AEF624 = 0x80964F58; // type:func +func_80AEF728 = 0x8096505C; // type:func +func_80AEF79C = 0x809650D0; // type:func +func_80AEF820 = 0x80965158; // type:func +func_80AEF890 = 0x809651C8; // type:func +func_80AEF930 = 0x80965254; // type:func +func_80AEF99C = 0x809652C4; // type:func +func_80AEF9D8 = 0x80965300; // type:func +func_80AEFA2C = 0x80965344; // type:func +func_80AEFAAC = 0x809653BC; // type:func +func_80AEFB04 = 0x80965404; // type:func +func_80AEFB68 = 0x80965460; // type:func +func_80AEFBC8 = 0x809654B8; // type:func +func_80AEFC24 = 0x80965518; // type:func +func_80AEFC54 = 0x8096554C; // type:func +func_80AEFCE8 = 0x809655E8; // type:func +func_80AEFD38 = 0x80965638; // type:func +func_80AEFDC0 = 0x809656C4; // type:func +func_80AEFE38 = 0x80965748; // type:func +func_80AEFE84 = 0x80965794; // type:func +func_80AEFE9C = 0x809657AC; // type:func +func_80AEFECC = 0x809657E0; // type:func +func_80AEFF40 = 0x8096585C; // type:func +func_80AEFF94 = 0x809658B8; // type:func +EnRu1_Update = 0x80965954; // type:func +EnRu1_Init = 0x8096599C; // type:func +func_80AF0278 = 0x80965AD8; // type:func +EnRu1_OverrideLimbDraw = 0x80965B48; // type:func +EnRu1_PostLimbDraw = 0x80965BB4; // type:func +EnRu1_DrawNothing = 0x80965C40; // type:func +EnRu1_DrawOpa = 0x80965C50; // type:func +EnRu1_DrawXlu = 0x80965DF4; // type:func +EnRu1_Draw = 0x80965F94; // type:func +BossFd2_SpawnDebris = 0x80967AF0; // type:func +BossFd2_SpawnFireBreath = 0x80967BC8; // type:func +BossFd2_SpawnEmber = 0x80967CDC; // type:func +BossFd2_SpawnSkullPiece = 0x80967DB0; // type:func +BossFd2_SpawnDust = 0x80967E88; // type:func +BossFd2_Init = 0x80967F20; // type:func +BossFd2_Destroy = 0x8096801C; // type:func +BossFd2_SetupEmerge = 0x8096805C; // type:func +BossFd2_Emerge = 0x80968154; // type:func +BossFd2_SetupIdle = 0x80968494; // type:func +BossFd2_Idle = 0x8096853C; // type:func +BossFd2_SetupBurrow = 0x80968690; // type:func +BossFd2_Burrow = 0x80968708; // type:func +BossFd2_SetupBreatheFire = 0x809687D8; // type:func +BossFd2_BreatheFire = 0x8096883C; // type:func +BossFd2_SetupClawSwipe = 0x80968D80; // type:func +BossFd2_ClawSwipe = 0x80968DE0; // type:func +BossFd2_SetupVulnerable = 0x80968E58; // type:func +BossFd2_Vulnerable = 0x80968EB4; // type:func +BossFd2_SetupDamaged = 0x8096910C; // type:func +BossFd2_Damaged = 0x80969168; // type:func +BossFd2_SetupDeath = 0x80969298; // type:func +BossFd2_UpdateCamera = 0x80969328; // type:func +BossFd2_Death = 0x80969498; // type:func +BossFd2_Wait = 0x80969B1C; // type:func +BossFd2_CollisionCheck = 0x80969B64; // type:func +BossFd2_UpdateFace = 0x8096A004; // type:func +BossFd2_Update = 0x8096A170; // type:func +BossFd2_OverrideLimbDraw = 0x8096A324; // type:func +BossFd2_PostLimbDraw = 0x8096A518; // type:func +BossFd2_UpdateMane = 0x8096A5C0; // type:func +BossFd2_DrawMane = 0x8096AB94; // type:func +BossFd2_Draw = 0x8096AFD8; // type:func +EnFdFire_UpdatePos = 0x8096B820; // type:func +EnFdFire_CheckCollider = 0x8096B8E8; // type:func +EnFdFire_Init = 0x8096B94C; // type:func +EnFdFire_Destroy = 0x8096BA54; // type:func +func_80A0E70C = 0x8096BA80; // type:func +EnFdFire_WaitToDie = 0x8096BBBC; // type:func +EnFdFire_DanceTowardsPlayer = 0x8096BBF8; // type:func +EnFdFire_Disappear = 0x8096BDA8; // type:func +EnFdFire_Update = 0x8096BE5C; // type:func +EnFdFire_Draw = 0x8096BF58; // type:func +EnDh_SetupAction = 0x8096C530; // type:func +EnDh_Init = 0x8096C53C; // type:func +EnDh_Destroy = 0x8096C678; // type:func +EnDh_SpawnDebris = 0x8096C6C0; // type:func +EnDh_SetupWait = 0x8096C858; // type:func +EnDh_Wait = 0x8096C90C; // type:func +EnDh_SetupWalk = 0x8096CB30; // type:func +EnDh_Walk = 0x8096CBCC; // type:func +EnDh_SetupRetreat = 0x8096CCD4; // type:func +EnDh_Retreat = 0x8096CD38; // type:func +EnDh_SetupAttack = 0x8096CDC4; // type:func +EnDh_Attack = 0x8096CE24; // type:func +EnDh_SetupBurrow = 0x8096D134; // type:func +EnDh_Burrow = 0x8096D1B8; // type:func +EnDh_SetupDamage = 0x8096D348; // type:func +EnDh_Damage = 0x8096D3C8; // type:func +EnDh_SetupDeath = 0x8096D4F0; // type:func +EnDh_Death = 0x8096D578; // type:func +EnDh_CollisionCheck = 0x8096D6A8; // type:func +EnDh_Update = 0x8096D7F8; // type:func +EnDh_PostLimbDraw = 0x8096D9A8; // type:func +EnDh_Draw = 0x8096DA38; // type:func +EnDha_SetupAction = 0x8096E010; // type:func +EnDha_Init = 0x8096E01C; // type:func +EnDha_Destroy = 0x8096E138; // type:func +EnDha_SetupWait = 0x8096E164; // type:func +EnDha_Wait = 0x8096E1EC; // type:func +EnDha_SetupTakeDamage = 0x8096E6FC; // type:func +EnDha_TakeDamage = 0x8096E728; // type:func +EnDha_SetupDeath = 0x8096E7F0; // type:func +EnDha_Die = 0x8096E860; // type:func +EnDha_UpdateHealth = 0x8096EA1C; // type:func +EnDha_Update = 0x8096EB10; // type:func +EnDha_OverrideLimbDraw = 0x8096EBB8; // type:func +EnDha_PostLimbDraw = 0x8096EC58; // type:func +EnDha_Draw = 0x8096ED70; // type:func +EnRl_Destroy = 0x8096F010; // type:func +func_80AE72D0 = 0x8096F034; // type:func +func_80AE744C = 0x8096F0BC; // type:func +func_80AE7494 = 0x8096F104; // type:func +func_80AE74B4 = 0x8096F128; // type:func +func_80AE74FC = 0x8096F174; // type:func +func_80AE7544 = 0x8096F1C0; // type:func +func_80AE7590 = 0x8096F20C; // type:func +func_80AE7668 = 0x8096F2EC; // type:func +func_80AE7698 = 0x8096F320; // type:func +func_80AE772C = 0x8096F3B4; // type:func +func_80AE7798 = 0x8096F420; // type:func +func_80AE77B8 = 0x8096F440; // type:func +func_80AE77F8 = 0x8096F488; // type:func +func_80AE7838 = 0x8096F4CC; // type:func +func_80AE7878 = 0x8096F514; // type:func +func_80AE78D4 = 0x8096F56C; // type:func +func_80AE7954 = 0x8096F5EC; // type:func +func_80AE79A4 = 0x8096F63C; // type:func +func_80AE7AF8 = 0x8096F790; // type:func +func_80AE7BF8 = 0x8096F89C; // type:func +func_80AE7C64 = 0x8096F908; // type:func +func_80AE7C94 = 0x8096F928; // type:func +func_80AE7CE8 = 0x8096F970; // type:func +func_80AE7D40 = 0x8096F9B4; // type:func +func_80AE7D94 = 0x8096F9FC; // type:func +EnRl_Update = 0x8096FB44; // type:func +EnRl_Init = 0x8096FB8C; // type:func +func_80AE7FD0 = 0x8096FBF8; // type:func +func_80AE7FDC = 0x8096FC08; // type:func +EnRl_Draw = 0x8096FD3C; // type:func +EnEncount1_Init = 0x8096FEF0; // type:func +EnEncount1_SpawnLeevers = 0x80970024; // type:func +EnEncount1_SpawnTektites = 0x80970380; // type:func +EnEncount1_SpawnStalchildOrWolfos = 0x80970518; // type:func +EnEncount1_Update = 0x8097096C; // type:func +DemoDu_Destroy = 0x80970A50; // type:func +DemoDu_UpdateEyes = 0x80970A74; // type:func +DemoDu_SetEyeTexIndex = 0x80970AFC; // type:func +DemoDu_SetMouthTexIndex = 0x80970B14; // type:func +DemoDu_UpdateSkelAnime = 0x80970B2C; // type:func +DemoDu_UpdateBgCheckInfo = 0x80970B50; // type:func +DemoDu_GetCue = 0x80970B98; // type:func +DemoDu_CheckForCue = 0x80970BC0; // type:func +DemoDu_CheckForNoCue = 0x80970C0C; // type:func +DemoDu_SetStartPosRotFromCue = 0x80970C58; // type:func +func_80969DDC = 0x80970CD8; // type:func +DemoDu_InitCs_FireMedallion = 0x80970D68; // type:func +DemoDu_CsFireMedallion_SpawnDoorWarp = 0x80970DD8; // type:func +func_80969F38 = 0x80970E34; // type:func +func_80969FB4 = 0x80970EB0; // type:func +DemoDu_CsFireMedallion_AdvanceTo01 = 0x80970ED0; // type:func +DemoDu_CsFireMedallion_AdvanceTo02 = 0x80970F68; // type:func +DemoDu_CsFireMedallion_AdvanceTo03 = 0x80970FB8; // type:func +DemoDu_CsFireMedallion_AdvanceTo04 = 0x80970FE4; // type:func +DemoDu_CsFireMedallion_AdvanceTo05 = 0x80971078; // type:func +DemoDu_CsFireMedallion_AdvanceTo06 = 0x809710E4; // type:func +DemoDu_UpdateCs_FM_00 = 0x80971130; // type:func +DemoDu_UpdateCs_FM_01 = 0x80971150; // type:func +DemoDu_UpdateCs_FM_02 = 0x80971170; // type:func +DemoDu_UpdateCs_FM_03 = 0x809711A4; // type:func +DemoDu_UpdateCs_FM_04 = 0x809711E4; // type:func +DemoDu_UpdateCs_FM_05 = 0x8097121C; // type:func +DemoDu_UpdateCs_FM_06 = 0x8097125C; // type:func +DemoDu_InitCs_GoronsRuby = 0x80971288; // type:func +DemoDu_CsPlaySfx_GoronLanding = 0x809712D8; // type:func +DemoDu_CsPlaySfx_DaruniaFalling = 0x80971300; // type:func +DemoDu_CsPlaySfx_DaruniaHitsLink = 0x80971330; // type:func +DemoDu_CsPlaySfx_HitBreast = 0x80971388; // type:func +DemoDu_CsPlaySfx_LinkEscapeFromGorons = 0x809713B0; // type:func +DemoDu_CsPlaySfx_LinkSurprised = 0x80971408; // type:func +DemoDu_CsGoronsRuby_UpdateFaceTextures = 0x80971460; // type:func +func_8096A630 = 0x80971568; // type:func +DemoDu_CsGoronsRuby_SpawnDustWhenHittingLink = 0x8097161C; // type:func +DemoDu_CsGoronsRuby_DaruniaFalling = 0x809718B0; // type:func +DemoDu_CsGoronsRuby_AdvanceTo01 = 0x8097198C; // type:func +DemoDu_CsGoronsRuby_AdvanceTo02 = 0x809719A0; // type:func +DemoDu_CsGoronsRuby_AdvanceTo03 = 0x80971A44; // type:func +DemoDu_CsGoronsRuby_AdvanceTo04 = 0x80971A98; // type:func +DemoDu_CsGoronsRuby_AdvanceTo05 = 0x80971AD0; // type:func +DemoDu_CsGoronsRuby_AdvanceTo06 = 0x80971B3C; // type:func +DemoDu_CsGoronsRuby_AdvanceTo07 = 0x80971BD4; // type:func +DemoDu_CsGoronsRuby_AdvanceTo08 = 0x80971C40; // type:func +DemoDu_CsGoronsRuby_AdvanceTo09 = 0x80971CD4; // type:func +DemoDu_CsGoronsRuby_AdvanceTo10 = 0x80971D44; // type:func +DemoDu_CsGoronsRuby_AdvanceTo11 = 0x80971DB0; // type:func +DemoDu_CsGoronsRuby_AdvanceTo12 = 0x80971E44; // type:func +DemoDu_CsGoronsRuby_AdvanceTo13 = 0x80971EB0; // type:func +DemoDu_UpdateCs_GR_00 = 0x80971F40; // type:func +DemoDu_UpdateCs_GR_01 = 0x80971F74; // type:func +DemoDu_UpdateCs_GR_02 = 0x80971FB0; // type:func +DemoDu_UpdateCs_GR_03 = 0x8097200C; // type:func +DemoDu_UpdateCs_GR_04 = 0x8097204C; // type:func +DemoDu_UpdateCs_GR_05 = 0x8097209C; // type:func +DemoDu_UpdateCs_GR_06 = 0x809720E8; // type:func +DemoDu_UpdateCs_GR_07 = 0x80972148; // type:func +DemoDu_UpdateCs_GR_08 = 0x80972194; // type:func +DemoDu_UpdateCs_GR_09 = 0x809721F8; // type:func +DemoDu_UpdateCs_GR_10 = 0x80972258; // type:func +DemoDu_UpdateCs_GR_11 = 0x809722A4; // type:func +DemoDu_UpdateCs_GR_12 = 0x809722F4; // type:func +DemoDu_UpdateCs_GR_13 = 0x80972340; // type:func +DemoDu_InitCs_AfterGanon = 0x80972388; // type:func +DemoDu_CsPlaySfx_WhiteOut = 0x80972428; // type:func +DemoDu_CsAfterGanon_SpawnDemo6K = 0x80972448; // type:func +DemoDu_CsAfterGanon_AdvanceTo01 = 0x809724C8; // type:func +DemoDu_CsAfterGanon_AdvanceTo02 = 0x8097251C; // type:func +DemoDu_CsAfterGanon_BackTo01 = 0x80972670; // type:func +DemoDu_UpdateCs_AG_00 = 0x8097270C; // type:func +DemoDu_UpdateCs_AG_01 = 0x8097272C; // type:func +DemoDu_UpdateCs_AG_02 = 0x80972774; // type:func +DemoDu_Draw_02 = 0x809727BC; // type:func +DemoDu_InitCs_Credits = 0x80972978; // type:func +DemoDu_CsCredits_UpdateShadowAlpha = 0x809729E4; // type:func +DemoDu_CsCredits_AdvanceTo01 = 0x80972A70; // type:func +DemoDu_CsCredits_AdvanceTo02 = 0x80972AA8; // type:func +DemoDu_CsCredits_AdvanceTo03 = 0x80972AF4; // type:func +DemoDu_CsCredits_AdvanceTo04 = 0x80972B34; // type:func +DemoDu_CsCredits_BackTo02 = 0x80972B74; // type:func +DemoDu_CsCredits_HandleCues = 0x80972BBC; // type:func +DemoDu_UpdateCs_CR_00 = 0x80972C68; // type:func +DemoDu_UpdateCs_CR_01 = 0x80972C88; // type:func +DemoDu_UpdateCs_CR_02 = 0x80972CD4; // type:func +DemoDu_UpdateCs_CR_03 = 0x80972D1C; // type:func +DemoDu_UpdateCs_CR_04 = 0x80972D64; // type:func +DemoDu_Update = 0x80972DA8; // type:func +DemoDu_Init = 0x80972DF0; // type:func +DemoDu_Draw_NoDraw = 0x80972E94; // type:func +DemoDu_Draw_01 = 0x80972EA4; // type:func +DemoDu_Draw = 0x8097304C; // type:func +func_80984BE0 = 0x80974230; // type:func +DemoIm_InitCollider = 0x809742B8; // type:func +DemoIm_DestroyCollider = 0x80974304; // type:func +DemoIm_UpdateCollider = 0x80974330; // type:func +func_80984DB8 = 0x80974374; // type:func +func_80984E58 = 0x80974418; // type:func +func_80984F10 = 0x809744D0; // type:func +func_80984F94 = 0x80974558; // type:func +DemoIm_UpdateBgCheckInfo = 0x809745E0; // type:func +DemoIm_UpdateSkelAnime = 0x80974628; // type:func +DemoIm_IsCutsceneIdle = 0x8097464C; // type:func +DemoIm_GetCue = 0x8097466C; // type:func +func_809850E8 = 0x809746B8; // type:func +func_80985134 = 0x80974704; // type:func +func_80985180 = 0x80974750; // type:func +func_80985200 = 0x809747D0; // type:func +DemoIm_ChangeAnim = 0x80974850; // type:func +func_80985310 = 0x809748E0; // type:func +func_80985358 = 0x80974928; // type:func +func_809853B4 = 0x80974984; // type:func +func_80985430 = 0x80974A00; // type:func +func_8098544C = 0x80974A20; // type:func +func_809854DC = 0x80974ABC; // type:func +func_8098557C = 0x80974B5C; // type:func +func_809855A8 = 0x80974B88; // type:func +func_80985640 = 0x80974C20; // type:func +func_809856AC = 0x80974C8C; // type:func +func_809856F8 = 0x80974CD8; // type:func +func_80985718 = 0x80974CF8; // type:func +func_80985738 = 0x80974D18; // type:func +func_80985770 = 0x80974D54; // type:func +func_809857B0 = 0x80974D9C; // type:func +func_809857F0 = 0x80974DE0; // type:func +func_80985830 = 0x80974E28; // type:func +func_80985860 = 0x80974E5C; // type:func +func_809858A8 = 0x80974EA0; // type:func +DemoIm_SpawnLightBall = 0x80974EC0; // type:func +func_80985948 = 0x80974F40; // type:func +func_809859E0 = 0x80974FDC; // type:func +func_80985B34 = 0x80975130; // type:func +func_80985C10 = 0x80975214; // type:func +func_80985C40 = 0x80975234; // type:func +func_80985C94 = 0x8097527C; // type:func +DemoIm_DrawTranslucent = 0x809752C4; // type:func +func_80985E60 = 0x8097540C; // type:func +func_80985EAC = 0x80975458; // type:func +func_80985EF4 = 0x809754A0; // type:func +func_80985F54 = 0x80975500; // type:func +func_80985F64 = 0x80975514; // type:func +func_80985FE8 = 0x80975598; // type:func +func_8098604C = 0x809755FC; // type:func +func_809860C8 = 0x80975678; // type:func +func_809860DC = 0x80975690; // type:func +func_80986148 = 0x809756FC; // type:func +func_809861C4 = 0x80975778; // type:func +func_8098629C = 0x8097583C; // type:func +func_809862E0 = 0x80975880; // type:func +func_809863BC = 0x80975948; // type:func +func_809863DC = 0x80975968; // type:func +func_80986430 = 0x809759C4; // type:func +func_80986494 = 0x80975A30; // type:func +func_809864D4 = 0x80975A78; // type:func +func_8098652C = 0x80975AD8; // type:func +func_80986570 = 0x80975B1C; // type:func +func_809865F8 = 0x80975BA4; // type:func +func_80986700 = 0x80975CB4; // type:func +func_80986710 = 0x80975CC8; // type:func +func_80986794 = 0x80975D4C; // type:func +func_8098680C = 0x80975DC4; // type:func +func_809868E8 = 0x80975E8C; // type:func +func_80986908 = 0x80975EAC; // type:func +func_80986948 = 0x80975EF4; // type:func +func_809869B0 = 0x80975F64; // type:func +func_809869F8 = 0x80975FA8; // type:func +func_80986A5C = 0x8097600C; // type:func +func_80986AD0 = 0x80976080; // type:func +func_80986B2C = 0x809760DC; // type:func +func_80986BA0 = 0x80976150; // type:func +func_80986BE4 = 0x80976194; // type:func +func_80986BF8 = 0x809761A8; // type:func +func_80986C30 = 0x809761E0; // type:func +func_80986CC8 = 0x80976284; // type:func +func_80986CFC = 0x809762B8; // type:func +func_80986D40 = 0x80976300; // type:func +func_80986DC8 = 0x80976368; // type:func +func_80986E20 = 0x809763C4; // type:func +func_80986E40 = 0x809763E4; // type:func +func_80986EAC = 0x80976458; // type:func +func_80986F08 = 0x809764BC; // type:func +func_80986F28 = 0x809764DC; // type:func +func_80986F88 = 0x80976544; // type:func +func_80986FA8 = 0x80976568; // type:func +func_80987018 = 0x809765E0; // type:func +func_80987064 = 0x80976628; // type:func +func_809870F0 = 0x809766B4; // type:func +func_80987128 = 0x809766EC; // type:func +func_80987174 = 0x80976738; // type:func +func_809871B4 = 0x80976778; // type:func +func_809871E8 = 0x809767AC; // type:func +func_80987288 = 0x80976838; // type:func +func_809872A8 = 0x80976858; // type:func +func_809872F0 = 0x809768A4; // type:func +func_80987330 = 0x809768EC; // type:func +DemoIm_Update = 0x80976930; // type:func +DemoIm_Init = 0x80976978; // type:func +DemoIm_Destroy = 0x80976AA0; // type:func +DemoIm_OverrideLimbDraw = 0x80976AC0; // type:func +DemoIm_PostLimbDraw = 0x80976B70; // type:func +DemoIm_DrawNothing = 0x80976BFC; // type:func +DemoIm_DrawSolid = 0x80976C0C; // type:func +DemoIm_Draw = 0x80976D50; // type:func +DemoTreLgt_Init = 0x809781A0; // type:func +DemoTreLgt_Destroy = 0x809781FC; // type:func +func_80993754 = 0x80978228; // type:func +func_8099375C = 0x80978234; // type:func +func_809937B4 = 0x8097828C; // type:func +func_80993848 = 0x80978324; // type:func +DemoTreLgt_Update = 0x809785D8; // type:func +DemoTreLgt_OverrideLimbDraw = 0x8097860C; // type:func +DemoTreLgt_Draw = 0x80978760; // type:func +EnFw_DoBounce = 0x809788B0; // type:func +EnFw_PlayerInRange = 0x80978978; // type:func +EnFw_GetPosAdjAroundCircle = 0x80978A74; // type:func +EnFw_CheckCollider = 0x80978B48; // type:func +EnFw_SpawnDust = 0x80978C08; // type:func +EnFw_Init = 0x80978E50; // type:func +EnFw_Destroy = 0x80978F58; // type:func +EnFw_Bounce = 0x80978F84; // type:func +EnFw_Run = 0x80978FF0; // type:func +EnFw_TurnToParentInitPos = 0x809795C4; // type:func +EnFw_JumpToParentInitPos = 0x809796B8; // type:func +EnFw_Update = 0x8097976C; // type:func +EnFw_OverrideLimbDraw = 0x8097984C; // type:func +EnFw_PostLimbDraw = 0x80979868; // type:func +EnFw_Draw = 0x80979904; // type:func +EnFw_SpawnEffectDust = 0x8097998C; // type:func +EnFw_UpdateEffects = 0x80979A30; // type:func +EnFw_DrawEffects = 0x80979B3C; // type:func +BgVbSima_Init = 0x8097A070; // type:func +BgVbSima_Destroy = 0x8097A0D8; // type:func +BgVbSima_SpawnEmber = 0x8097A10C; // type:func +BgVbSima_Update = 0x8097A1D8; // type:func +BgVbSima_Draw = 0x8097A638; // type:func +EnVbBall_Init = 0x8097A790; // type:func +EnVbBall_Destroy = 0x8097A910; // type:func +EnVbBall_SpawnDebris = 0x8097A94C; // type:func +EnVbBall_SpawnDust = 0x8097AA24; // type:func +EnVbBall_UpdateBones = 0x8097AAC4; // type:func +EnVbBall_Update = 0x8097ADA8; // type:func +EnVbBall_Draw = 0x8097B574; // type:func +BgHakaMegane_Init = 0x8097B940; // type:func +BgHakaMegane_Destroy = 0x8097B9F8; // type:func +func_8087DB24 = 0x8097BA2C; // type:func +func_8087DBF0 = 0x8097BAFC; // type:func +BgHakaMegane_DoNothing = 0x8097BB70; // type:func +BgHakaMegane_Update = 0x8097BB80; // type:func +BgHakaMegane_Draw = 0x8097BBA4; // type:func +BgHakaMeganeBG_Init = 0x8097BD40; // type:func +BgHakaMeganeBG_Destroy = 0x8097BEDC; // type:func +func_8087DFF8 = 0x8097BF10; // type:func +func_8087E040 = 0x8097BF58; // type:func +func_8087E10C = 0x8097C024; // type:func +func_8087E1E0 = 0x8097C0F8; // type:func +func_8087E258 = 0x8097C170; // type:func +func_8087E288 = 0x8097C1A0; // type:func +func_8087E2D8 = 0x8097C1F0; // type:func +func_8087E34C = 0x8097C264; // type:func +BgHakaMeganeBG_Update = 0x8097C274; // type:func +BgHakaMeganeBG_Draw = 0x8097C298; // type:func +BgHakaShip_Init = 0x8097C400; // type:func +BgHakaShip_Destroy = 0x8097C544; // type:func +BgHakaShip_ChildUpdatePosition = 0x8097C584; // type:func +BgHakaShip_WaitForSong = 0x8097C5E0; // type:func +BgHakaShip_CutsceneStationary = 0x8097C658; // type:func +BgHakaShip_Move = 0x8097C6F4; // type:func +BgHakaShip_SetupCrash = 0x8097C8B8; // type:func +BgHakaShip_CrashShake = 0x8097C914; // type:func +BgHakaShip_CrashFall = 0x8097C9A4; // type:func +BgHakaShip_Update = 0x8097CA64; // type:func +BgHakaShip_Draw = 0x8097CAA4; // type:func +BgHakaSgami_Init = 0x8097CE50; // type:func +BgHakaSgami_Destroy = 0x8097D0F8; // type:func +BgHakaSgami_SetupSpin = 0x8097D158; // type:func +BgHakaSgami_Spin = 0x8097D1D0; // type:func +BgHakaSgami_Update = 0x8097D6E4; // type:func +BgHakaSgami_Draw = 0x8097D738; // type:func +EnHeishi2_Init = 0x8097DA70; // type:func +EnHeishi2_Destroy = 0x8097DCF0; // type:func +EnHeishi2_DoNothing1 = 0x8097DD34; // type:func +EnHeishi_DoNothing2 = 0x8097DD44; // type:func +func_80A531E4 = 0x8097DD54; // type:func +func_80A53278 = 0x8097DDE8; // type:func +func_80A5344C = 0x8097DF68; // type:func +func_80A53538 = 0x8097E054; // type:func +func_80A535BC = 0x8097E0DC; // type:func +func_80A53638 = 0x8097E158; // type:func +func_80A5372C = 0x8097E244; // type:func +func_80A53850 = 0x8097E368; // type:func +func_80A53908 = 0x8097E420; // type:func +func_80A5399C = 0x8097E4B4; // type:func +func_80A53AD4 = 0x8097E5D8; // type:func +func_80A53C0C = 0x8097E714; // type:func +func_80A53C90 = 0x8097E79C; // type:func +func_80A53D0C = 0x8097E818; // type:func +func_80A53DF8 = 0x8097E8FC; // type:func +func_80A53F30 = 0x8097EA34; // type:func +func_80A54038 = 0x8097EB3C; // type:func +func_80A540C0 = 0x8097EBC8; // type:func +func_80A541FC = 0x8097ED04; // type:func +func_80A5427C = 0x8097ED88; // type:func +func_80A54320 = 0x8097EE2C; // type:func +func_80A543A0 = 0x8097EEAC; // type:func +func_80A544AC = 0x8097EFB8; // type:func +func_80A5455C = 0x8097F068; // type:func +func_80A546DC = 0x8097F1DC; // type:func +func_80A5475C = 0x8097F25C; // type:func +func_80A54954 = 0x8097F454; // type:func +func_80A549E8 = 0x8097F4E8; // type:func +EnHeishi2_Update = 0x8097F578; // type:func +EnHeishi2_OverrideLimbDraw = 0x8097F6C4; // type:func +EnHeishi2_PostLimbDraw = 0x8097F73C; // type:func +EnHeishi2_DrawKingGuard = 0x8097F774; // type:func +EnHeishi2_Draw = 0x8097F7E8; // type:func +EnEncount2_Init = 0x8097FC70; // type:func +EnEncount2_Wait = 0x8097FCE4; // type:func +EnEncount2_SpawnRocks = 0x8097FF3C; // type:func +EnEncount2_Update = 0x80980504; // type:func +EnEncount2_Draw = 0x809808D0; // type:func +EnEncount2_SpawnEffect = 0x809808F0; // type:func +EnEncount2_UpdateEffects = 0x809809A4; // type:func +EnEncount2_DrawEffects = 0x80980B78; // type:func +EnFireRock_Init = 0x80980EA0; // type:func +EnFireRock_Destroy = 0x80981290; // type:func +EnFireRock_Fall = 0x809812F4; // type:func +EnFireRock_SpawnMoreBrokenPieces = 0x80981648; // type:func +FireRock_WaitSpawnRocksFromCeiling = 0x809817C8; // type:func +FireRock_WaitOnFloor = 0x809818B8; // type:func +EnFireRock_Update = 0x8098199C; // type:func +EnFireRock_Draw = 0x80981C48; // type:func +EnBrob_Init = 0x80981FB0; // type:func +EnBrob_Destroy = 0x80982224; // type:func +EnBrob_SetupIdle = 0x8098227C; // type:func +EnBrob_SetupMoveUp = 0x809822E4; // type:func +EnBrob_SetupWobble = 0x80982344; // type:func +EnBrob_SetupStunned = 0x80982398; // type:func +EnBrob_SetupMoveDown = 0x8098242C; // type:func +EnBrob_SetupShock = 0x809824AC; // type:func +EnBrob_Idle = 0x809824F8; // type:func +EnBrob_MoveUp = 0x809825B8; // type:func +EnBrob_Wobble = 0x809826BC; // type:func +EnBrob_Stunned = 0x8098275C; // type:func +EnBrob_MoveDown = 0x809827F8; // type:func +EnBrob_Shock = 0x809828FC; // type:func +EnBrob_Update = 0x80982B14; // type:func +EnBrob_PostLimbDraw = 0x80982DB0; // type:func +EnBrob_Draw = 0x80982E84; // type:func +MirRay_SetupCollider = 0x809830A0; // type:func +MirRay_MakeShieldLight = 0x80983168; // type:func +MirRay_Init = 0x8098330C; // type:func +MirRay_Destroy = 0x809835A4; // type:func +MirRay_Update = 0x8098361C; // type:func +MirRay_SetIntensity = 0x80983708; // type:func +MirRay_SetupReflectionPolys = 0x809838BC; // type:func +MirRay_RemoveSimilarReflections = 0x80983A98; // type:func +MirRay_ReflectedBeam = 0x80983B9C; // type:func +MirRay_Draw = 0x8098410C; // type:func +MirRay_CheckInFrustum = 0x809843E8; // type:func +func_808B1AE0 = 0x80984950; // type:func +func_808B1BA0 = 0x80984A10; // type:func +func_808B1BEC = 0x80984A5C; // type:func +func_808B1C70 = 0x80984AE8; // type:func +func_808B1CEC = 0x80984B64; // type:func +func_808B1D18 = 0x80984B90; // type:func +func_808B1D44 = 0x80984BBC; // type:func +BgSpot09Obj_Init = 0x80984BFC; // type:func +BgSpot09Obj_Destroy = 0x80984C64; // type:func +BgSpot09Obj_Update = 0x80984CA4; // type:func +BgSpot09Obj_Draw = 0x80984CB4; // type:func +func_808B8910 = 0x80984E70; // type:func +func_808B8A5C = 0x80984F28; // type:func +func_808B8A98 = 0x80984F64; // type:func +func_808B8B08 = 0x80984FD4; // type:func +func_808B8B38 = 0x80985008; // type:func +func_808B8BB4 = 0x80985084; // type:func +func_808B8C90 = 0x80985168; // type:func +func_808B8CC8 = 0x809851A4; // type:func +BgSpot18Obj_Init = 0x809851F8; // type:func +BgSpot18Obj_Destroy = 0x80985254; // type:func +func_808B8DC0 = 0x80985288; // type:func +func_808B8DD0 = 0x8098529C; // type:func +func_808B8DDC = 0x809852AC; // type:func +func_808B8E20 = 0x809852F0; // type:func +func_808B8E64 = 0x80985334; // type:func +func_808B8E7C = 0x80985350; // type:func +func_808B8EE0 = 0x809853B4; // type:func +func_808B8F08 = 0x809853E0; // type:func +func_808B9030 = 0x8098550C; // type:func +func_808B9040 = 0x80985520; // type:func +BgSpot18Obj_Update = 0x80985540; // type:func +BgSpot18Obj_Draw = 0x80985574; // type:func +BossVa_SetupAction = 0x80985740; // type:func +BossVa_AttachToBody = 0x8098574C; // type:func +BossVa_BloodDroplets = 0x80985990; // type:func +BossVa_BloodSplatter = 0x80985A90; // type:func +BossVa_Gore = 0x80985BBC; // type:func +BossVa_Spark = 0x80985CEC; // type:func +BossVa_Tumor = 0x80985E70; // type:func +BossVa_SetSparkEnv = 0x80985FF4; // type:func +BossVa_SetDeathEnv = 0x80986040; // type:func +BossVa_FindBoomerang = 0x809860C0; // type:func +BossVa_KillBari = 0x80986100; // type:func +BossVa_Init = 0x809862EC; // type:func +BossVa_Destroy = 0x80986B3C; // type:func +BossVa_SetupIntro = 0x80986B8C; // type:func +BossVa_BodyIntro = 0x80986C1C; // type:func +BossVa_SetupBodyPhase1 = 0x80987C3C; // type:func +BossVa_BodyPhase1 = 0x80987CE0; // type:func +BossVa_SetupBodyPhase2 = 0x80987F78; // type:func +BossVa_BodyPhase2 = 0x809880A4; // type:func +BossVa_SetupBodyPhase3 = 0x809885A8; // type:func +BossVa_BodyPhase3 = 0x809885E4; // type:func +BossVa_SetupBodyPhase4 = 0x80988C4C; // type:func +BossVa_BodyPhase4 = 0x80988D00; // type:func +BossVa_SetupBodyDeath = 0x80989808; // type:func +BossVa_BodyDeath = 0x809898A0; // type:func +BossVa_SetupSupportIntro = 0x8098A3F8; // type:func +BossVa_SupportIntro = 0x8098A470; // type:func +BossVa_SetupSupportAttached = 0x8098A594; // type:func +BossVa_SupportAttached = 0x8098A618; // type:func +BossVa_SetupSupportCut = 0x8098A840; // type:func +BossVa_SupportCut = 0x8098A908; // type:func +BossVa_SetupStump = 0x8098ADDC; // type:func +BossVa_Stump = 0x8098AE60; // type:func +BossVa_SetupZapperIntro = 0x8098AEF8; // type:func +BossVa_ZapperIntro = 0x8098AF8C; // type:func +BossVa_SetupZapperAttack = 0x8098B04C; // type:func +BossVa_ZapperAttack = 0x8098B0E0; // type:func +BossVa_SetupZapperDamaged = 0x8098BB14; // type:func +BossVa_ZapperDamaged = 0x8098BC1C; // type:func +BossVa_SetupZapperDeath = 0x8098BD30; // type:func +BossVa_ZapperDeath = 0x8098BE04; // type:func +BossVa_SetupZapperEnraged = 0x8098C32C; // type:func +BossVa_ZapperEnraged = 0x8098C3B4; // type:func +BossVa_SetupZapperHold = 0x8098CB0C; // type:func +BossVa_ZapperHold = 0x8098CB8C; // type:func +BossVa_SetupBariIntro = 0x8098CC98; // type:func +BossVa_BariIntro = 0x8098CDA8; // type:func +BossVa_SetupBariPhase3Attack = 0x8098D300; // type:func +BossVa_BariPhase3Attack = 0x8098D3A8; // type:func +BossVa_SetupBariPhase2Attack = 0x8098D7A8; // type:func +BossVa_BariPhase2Attack = 0x8098D850; // type:func +BossVa_SetupBariPhase3Stunned = 0x8098DE68; // type:func +BossVa_BariPhase3Stunned = 0x8098DEC4; // type:func +BossVa_SetupBariDeath = 0x8098E0E0; // type:func +BossVa_BariDeath = 0x8098E138; // type:func +BossVa_SetupDoor = 0x8098E16C; // type:func +BossVa_Door = 0x8098E1BC; // type:func +BossVa_Update = 0x8098E230; // type:func +BossVa_BodyOverrideLimbDraw = 0x8098E43C; // type:func +BossVa_BodyPostLimbDraw = 0x8098E5E0; // type:func +BossVa_SupportOverrideLimbDraw = 0x8098EAE4; // type:func +BossVa_SupportPostLimbDraw = 0x8098EB28; // type:func +BossVa_ZapperOverrideLimbDraw = 0x8098ED78; // type:func +BossVa_ZapperPostLimbDraw = 0x8098EF54; // type:func +BossVa_BariOverrideLimbDraw = 0x8098F3B4; // type:func +BossVa_BariPostLimbDraw = 0x8098F444; // type:func +BossVa_Draw = 0x8098F5D0; // type:func +BossVa_UpdateEffects = 0x8098FBC8; // type:func +BossVa_DrawEffects = 0x80990568; // type:func +BossVa_SpawnSpark = 0x80991370; // type:func +BossVa_SpawnSparkBall = 0x80991660; // type:func +BossVa_SpawnBloodDroplets = 0x809917EC; // type:func +BossVa_SpawnBloodSplatter = 0x809919B8; // type:func +BossVa_SpawnTumor = 0x80991B54; // type:func +BossVa_SpawnGore = 0x80991CF8; // type:func +BossVa_SpawnZapperCharge = 0x80991F18; // type:func +BossVa_DrawDoor = 0x8099206C; // type:func +BgHakaTubo_Init = 0x8099C9D0; // type:func +BgHakaTubo_Destroy = 0x8099CACC; // type:func +BgHakaTubo_Idle = 0x8099CB24; // type:func +BgHakaTubo_DropCollectible = 0x8099CD90; // type:func +BgHakaTubo_Update = 0x8099D054; // type:func +BgHakaTubo_DrawFlameCircle = 0x8099D088; // type:func +BgHakaTubo_Draw = 0x8099D234; // type:func +BgHakaTrap_Init = 0x8099D3F0; // type:func +BgHakaTrap_Destroy = 0x8099D690; // type:func +func_8087FFC0 = 0x8099D714; // type:func +func_808801B8 = 0x8099D914; // type:func +func_808802D8 = 0x8099DA38; // type:func +func_80880484 = 0x8099DBE4; // type:func +func_808805C0 = 0x8099DD20; // type:func +func_808806BC = 0x8099DE1C; // type:func +func_808808F4 = 0x8099E054; // type:func +func_808809B0 = 0x8099E114; // type:func +func_808809E4 = 0x8099E148; // type:func +func_80880AE8 = 0x8099E254; // type:func +func_80880C0C = 0x8099E378; // type:func +BgHakaTrap_Update = 0x8099E3EC; // type:func +func_80880D68 = 0x8099E4DC; // type:func +BgHakaTrap_Draw = 0x8099E578; // type:func +BgHakaHuta_Init = 0x8099E9C0; // type:func +BgHakaHuta_Destroy = 0x8099EA80; // type:func +BgHakaHuta_SpawnDust = 0x8099EAB4; // type:func +BgHakaHuta_PlaySfx = 0x8099EC70; // type:func +BgHakaHuta_SpawnEnemies = 0x8099ECFC; // type:func +BgHakaHuta_Open = 0x8099EFC4; // type:func +BgHakaHuta_SlideOpen = 0x8099F078; // type:func +func_8087D720 = 0x8099F12C; // type:func +BgHakaHuta_DoNothing = 0x8099F2D0; // type:func +BgHakaHuta_Update = 0x8099F2E0; // type:func +BgHakaHuta_Draw = 0x8099F304; // type:func +BgHakaZou_Init = 0x8099F460; // type:func +BgHakaZou_Destroy = 0x8099F748; // type:func +func_808828F4 = 0x8099F798; // type:func +BgHakaZou_Wait = 0x8099F914; // type:func +func_80882BDC = 0x8099FA84; // type:func +func_80882CC4 = 0x8099FB6C; // type:func +func_80882E54 = 0x8099FCFC; // type:func +func_80883000 = 0x8099FEAC; // type:func +func_80883104 = 0x8099FFB0; // type:func +func_80883144 = 0x8099FFF0; // type:func +func_80883254 = 0x809A0100; // type:func +func_80883328 = 0x809A01D8; // type:func +func_808834D8 = 0x809A0388; // type:func +BgHakaZou_DoNothing = 0x809A0418; // type:func +BgHakaZou_Update = 0x809A0428; // type:func +BgHakaZou_Draw = 0x809A046C; // type:func +BgSpot17Funen_Init = 0x809A0650; // type:func +BgSpot17Funen_Destroy = 0x809A0678; // type:func +BgSpot17Funen_Update = 0x809A0688; // type:func +func_808B746C = 0x809A06AC; // type:func +func_808B7478 = 0x809A06BC; // type:func +EnSyatekiItm_Init = 0x809A08A0; // type:func +EnSyatekiItm_Destroy = 0x809A0A04; // type:func +EnSyatekiItm_Idle = 0x809A0A14; // type:func +EnSyatekiItm_StartRound = 0x809A0B24; // type:func +EnSyatekiItm_SpawnTargets = 0x809A0CA0; // type:func +EnSyatekiItm_CheckTargets = 0x809A1120; // type:func +EnSyatekiItm_CleanupGame = 0x809A11C4; // type:func +EnSyatekiItm_EndGame = 0x809A124C; // type:func +EnSyatekiItm_Update = 0x809A1298; // type:func +EnSyatekiMan_Init = 0x809A1640; // type:func +EnSyatekiMan_Destroy = 0x809A16F4; // type:func +EnSyatekiMan_Start = 0x809A1704; // type:func +EnSyatekiMan_SetupIdle = 0x809A1798; // type:func +EnSyatekiMan_Idle = 0x809A17F0; // type:func +EnSyatekiMan_Talk = 0x809A184C; // type:func +EnSyatekiMan_StopTalk = 0x809A19F4; // type:func +EnSyatekiMan_StartGame = 0x809A1A9C; // type:func +EnSyatekiMan_WaitForGame = 0x809A1B5C; // type:func +EnSyatekiMan_EndGame = 0x809A1C78; // type:func +EnSyatekiMan_GivePrize = 0x809A1EC8; // type:func +EnSyatekiMan_FinishPrize = 0x809A1F38; // type:func +EnSyatekiMan_RestartGame = 0x809A1FFC; // type:func +EnSyatekiMan_BlinkWait = 0x809A2064; // type:func +EnSyatekiMan_Blink = 0x809A2098; // type:func +EnSyatekiMan_Update = 0x809A2138; // type:func +EnSyatekiMan_OverrideLimbDraw = 0x809A21D8; // type:func +EnSyatekiMan_Draw = 0x809A2268; // type:func +EnTana_Init = 0x809A2400; // type:func +EnTana_Destroy = 0x809A2450; // type:func +EnTana_Update = 0x809A2460; // type:func +EnTana_DrawWoodenShelves = 0x809A2470; // type:func +EnTana_DrawStoneShelves = 0x809A2508; // type:func +EnNb_GetPath = 0x809A26B0; // type:func +EnNb_GetType = 0x809A26C4; // type:func +EnNb_UpdatePath = 0x809A26D4; // type:func +EnNb_SetupCollider = 0x809A2800; // type:func +EnNb_UpdateCollider = 0x809A284C; // type:func +EnNb_Destroy = 0x809A2890; // type:func +func_80AB0FBC = 0x809A28BC; // type:func +func_80AB1040 = 0x809A2944; // type:func +func_80AB10C4 = 0x809A29CC; // type:func +EnNb_UpdateEyes = 0x809A2A70; // type:func +func_80AB1284 = 0x809A2AF8; // type:func +EnNb_UpdateSkelAnime = 0x809A2B40; // type:func +EnNb_GetCue = 0x809A2B64; // type:func +EnNb_SetStartPosRotFromCue1 = 0x809A2B8C; // type:func +func_80AB1390 = 0x809A2C0C; // type:func +func_80AB13D8 = 0x809A2C58; // type:func +EnNb_SetStartPosRotFromCue2 = 0x809A2CA4; // type:func +EnNb_SetCurrentAnim = 0x809A2D24; // type:func +EnNb_SetChamberAnim = 0x809A2DB4; // type:func +EnNb_SpawnBlueWarp = 0x809A2DFC; // type:func +EnNb_GiveMedallion = 0x809A2E58; // type:func +EnNb_ComeUpImpl = 0x809A2ED4; // type:func +EnNb_SetupChamberCsImpl = 0x809A2EF4; // type:func +EnNb_SetupChamberWarpImpl = 0x809A2F90; // type:func +EnNb_SetupDefaultChamberIdle = 0x809A2FE0; // type:func +EnNb_SetupArmRaise = 0x809A300C; // type:func +EnNb_SetupRaisedArmTransition = 0x809A30A0; // type:func +EnNb_SetupMedallion = 0x809A310C; // type:func +EnNb_SetupChamberCs = 0x809A3158; // type:func +EnNb_SetupChamberWarp = 0x809A3178; // type:func +EnNb_ComeUp = 0x809A3198; // type:func +func_80AB193C = 0x809A31D4; // type:func +EnNb_RaiseArm = 0x809A321C; // type:func +func_80AB19BC = 0x809A3260; // type:func +func_80AB19FC = 0x809A32A8; // type:func +EnNb_SetupLightArrowOrSealingCs = 0x809A32DC; // type:func +EnNb_PlaySealingSfx = 0x809A3320; // type:func +EnNb_InitializeDemo6K = 0x809A3340; // type:func +EnNb_SetupHide = 0x809A33C0; // type:func +EnNb_CheckToFade = 0x809A3414; // type:func +EnNb_SetupLightOrb = 0x809A3568; // type:func +EnNb_Hide = 0x809A3604; // type:func +EnNb_Fade = 0x809A3624; // type:func +EnNb_CreateLightOrb = 0x809A366C; // type:func +EnNb_DrawTransparency = 0x809A36B4; // type:func +EnNb_InitKidnap = 0x809A37FC; // type:func +EnNb_PlayCrySFX = 0x809A3854; // type:func +EnNb_PlayAgonySFX = 0x809A388C; // type:func +EnNb_SetPosInPortal = 0x809A38C4; // type:func +EnNb_SetupCaptureCutsceneState = 0x809A39A8; // type:func +EnNb_SetRaisedArmCaptureAnim = 0x809A39DC; // type:func +EnNb_SetupLookAroundInKidnap = 0x809A3A3C; // type:func +EnNb_SetupKidnap = 0x809A3AB0; // type:func +EnNb_CheckKidnapCsMode = 0x809A3B28; // type:func +func_80AB23A8 = 0x809A3BF0; // type:func +EnNb_MovingInPortal = 0x809A3C28; // type:func +EnNb_SuckedInByPortal = 0x809A3C84; // type:func +EnNb_SetupConfrontation = 0x809A3CE0; // type:func +EnNb_PlayKnuckleDefeatSFX = 0x809A3D24; // type:func +EnNb_PlayKneelingOnGroundSFX = 0x809A3D68; // type:func +EnNb_PlayLookRightSFX = 0x809A3DCC; // type:func +EnNb_PlayLookLeftSFX = 0x809A3E18; // type:func +EnNb_InitDemo6KInConfrontation = 0x809A3E70; // type:func +func_80AB2688 = 0x809A3EE8; // type:func +func_80AB26C8 = 0x809A3F28; // type:func +func_80AB26DC = 0x809A3F40; // type:func +EnNb_SetupKneel = 0x809A3FD8; // type:func +EnNb_CheckIfKneeling = 0x809A4054; // type:func +EnNb_SetupLookRight = 0x809A40C0; // type:func +EnNb_CheckIfLookingRight = 0x809A4140; // type:func +EnNb_SetupLookLeft = 0x809A41AC; // type:func +EnNb_CheckIfLookLeft = 0x809A422C; // type:func +EnNb_SetupDemo6KInConfrontation = 0x809A428C; // type:func +EnNb_SetupRun = 0x809A42CC; // type:func +EnNb_SetupConfrontationDestroy = 0x809A434C; // type:func +EnNb_CheckConfrontationCsMode = 0x809A4364; // type:func +EnNb_CheckConfrontationCsModeWrapper = 0x809A444C; // type:func +func_80AB2C18 = 0x809A446C; // type:func +EnNb_Kneel = 0x809A44B8; // type:func +EnNb_LookRight = 0x809A4528; // type:func +EnNb_LookLeft = 0x809A4598; // type:func +EnNb_Run = 0x809A4600; // type:func +EnNb_ConfrontationDestroy = 0x809A4688; // type:func +func_80AB2E70 = 0x809A46DC; // type:func +func_80AB2FC0 = 0x809A47F8; // type:func +func_80AB2FE4 = 0x809A4820; // type:func +EnNb_SetupCreditsSpawn = 0x809A495C; // type:func +EnNb_SetAlphaInCredits = 0x809A49A4; // type:func +EnNb_SetupCreditsFadeIn = 0x809A4A30; // type:func +EnNb_SetupCreditsSit = 0x809A4A68; // type:func +EnNb_SetupCreditsHeadTurn = 0x809A4AB4; // type:func +EnNb_CheckIfLookingUp = 0x809A4AF4; // type:func +EnNb_CheckCreditsCsModeImpl = 0x809A4B28; // type:func +EnNb_CheckCreditsCsMode = 0x809A4BB4; // type:func +EnNb_CreditsFade = 0x809A4BD4; // type:func +func_80AB3428 = 0x809A4C20; // type:func +EnNb_LookUp = 0x809A4C68; // type:func +EnNb_CrawlspaceSpawnCheck = 0x809A4CAC; // type:func +func_80AB359C = 0x809A4DA8; // type:func +EnNb_SetNoticeSFX = 0x809A4E6C; // type:func +EnNb_GetNoticedStatus = 0x809A4E94; // type:func +func_80AB36DC = 0x809A4EEC; // type:func +EnNb_CheckNoticed = 0x809A4F9C; // type:func +EnNb_SetupIdleCrawlspace = 0x809A4FF4; // type:func +func_80AB3838 = 0x809A504C; // type:func +EnNb_SetupPathMovement = 0x809A50C8; // type:func +EnNb_SetTextIdAsChild = 0x809A5130; // type:func +func_80AB3A7C = 0x809A529C; // type:func +func_80AB3B04 = 0x809A5328; // type:func +func_80AB3B7C = 0x809A53B0; // type:func +EnNb_WaitForNotice = 0x809A53FC; // type:func +EnNb_StandUpAfterNotice = 0x809A5458; // type:func +EnNb_BlockCrawlspace = 0x809A54B8; // type:func +EnNb_InitCrawlspaceDialogue = 0x809A5520; // type:func +EnNb_FollowPath = 0x809A5588; // type:func +func_80AB3DB0 = 0x809A5608; // type:func +func_80AB3E10 = 0x809A5670; // type:func +EnNb_Update = 0x809A56D8; // type:func +EnNb_Init = 0x809A5720; // type:func +EnNb_OverrideLimbDraw = 0x809A583C; // type:func +EnNb_PostLimbDraw = 0x809A58CC; // type:func +EnNb_DrawNothing = 0x809A5958; // type:func +EnNb_DrawDefault = 0x809A5968; // type:func +EnNb_Draw = 0x809A5AAC; // type:func +BossMo_InitRand = 0x809A6C80; // type:func +BossMo_RandZeroOne = 0x809A6CA0; // type:func +BossMo_NearLand = 0x809A6DC8; // type:func +BossMo_SpawnRipple = 0x809A6EC0; // type:func +BossMo_SpawnDroplet = 0x809A6FE0; // type:func +BossMo_SpawnStillDroplet = 0x809A70BC; // type:func +BossMo_SpawnBubble = 0x809A7180; // type:func +BossMo_Init = 0x809A7234; // type:func +BossMo_Destroy = 0x809A761C; // type:func +BossMo_SetupTentacle = 0x809A766C; // type:func +BossMo_Tentacle = 0x809A76C0; // type:func +BossMo_TentCollisionCheck = 0x809AA480; // type:func +BossMo_IntroCs = 0x809AA72C; // type:func +BossMo_DeathCs = 0x809AB844; // type:func +BossMo_CoreCollisionCheck = 0x809AC400; // type:func +BossMo_Core = 0x809AC808; // type:func +BossMo_UpdateCore = 0x809ADE6C; // type:func +BossMo_UpdateTent = 0x809AE09C; // type:func +BossMo_UpdateTentColliders = 0x809AE8D4; // type:func +BossMo_DrawTentacle = 0x809AE980; // type:func +BossMo_DrawWater = 0x809AF0B0; // type:func +BossMo_DrawCore = 0x809AF2C0; // type:func +BossMo_DrawTent = 0x809AFB48; // type:func +BossMo_UpdateEffects = 0x809AFD7C; // type:func +BossMo_DrawEffects = 0x809B048C; // type:func +BossMo_SfxTest = 0x809B0BB8; // type:func +EnSb_Init = 0x809B7260; // type:func +EnSb_Destroy = 0x809B7348; // type:func +EnSb_SpawnBubbles = 0x809B7388; // type:func +EnSb_SetupWaitClosed = 0x809B7438; // type:func +EnSb_SetupOpen = 0x809B74B0; // type:func +EnSb_SetupWaitOpen = 0x809B752C; // type:func +EnSb_SetupLunge = 0x809B75A0; // type:func +EnSb_SetupBounce = 0x809B7648; // type:func +EnSb_SetupCooldown = 0x809B76C0; // type:func +EnSb_WaitClosed = 0x809B77C4; // type:func +EnSb_Open = 0x809B7844; // type:func +EnSb_WaitOpen = 0x809B790C; // type:func +EnSb_TurnAround = 0x809B79C0; // type:func +EnSb_Lunge = 0x809B7AAC; // type:func +EnSb_Bounce = 0x809B7B54; // type:func +EnSb_Cooldown = 0x809B7C88; // type:func +EnSb_IsVulnerable = 0x809B7CF0; // type:func +EnSb_UpdateDamage = 0x809B7E38; // type:func +EnSb_Update = 0x809B8114; // type:func +EnSb_PostLimbDraw = 0x809B8294; // type:func +EnSb_Draw = 0x809B82E4; // type:func +EnBigokuta_Init = 0x809B86A0; // type:func +EnBigokuta_Destroy = 0x809B880C; // type:func +func_809BCE3C = 0x809B8880; // type:func +func_809BCEBC = 0x809B88FC; // type:func +func_809BCF68 = 0x809B89AC; // type:func +func_809BD1C8 = 0x809B8C14; // type:func +func_809BD2E4 = 0x809B8D30; // type:func +func_809BD318 = 0x809B8D64; // type:func +func_809BD370 = 0x809B8DBC; // type:func +func_809BD3AC = 0x809B8DF8; // type:func +func_809BD3E0 = 0x809B8E30; // type:func +func_809BD3F8 = 0x809B8E4C; // type:func +func_809BD47C = 0x809B8ED0; // type:func +func_809BD4A4 = 0x809B8EFC; // type:func +func_809BD524 = 0x809B8F7C; // type:func +func_809BD5E0 = 0x809B9038; // type:func +func_809BD658 = 0x809B90B0; // type:func +func_809BD6B8 = 0x809B9110; // type:func +func_809BD768 = 0x809B91C0; // type:func +func_809BD7F0 = 0x809B9248; // type:func +func_809BD84C = 0x809B92A8; // type:func +func_809BD8DC = 0x809B9338; // type:func +func_809BDAE8 = 0x809B9544; // type:func +func_809BDB90 = 0x809B95EC; // type:func +func_809BDC08 = 0x809B9664; // type:func +func_809BDF34 = 0x809B9994; // type:func +func_809BDFC8 = 0x809B9A28; // type:func +func_809BE058 = 0x809B9AB8; // type:func +func_809BE180 = 0x809B9BE0; // type:func +func_809BE26C = 0x809B9CCC; // type:func +func_809BE3E4 = 0x809B9E44; // type:func +func_809BE4A4 = 0x809B9F04; // type:func +func_809BE518 = 0x809B9F78; // type:func +func_809BE568 = 0x809B9FC8; // type:func +func_809BE798 = 0x809BA1F8; // type:func +EnBigokuta_UpdateDamage = 0x809BA33C; // type:func +EnBigokuta_Update = 0x809BA42C; // type:func +EnBigokuta_OverrideLimbDraw = 0x809BA624; // type:func +EnBigokuta_Draw = 0x809BAA9C; // type:func +EnKarebaba_Init = 0x809BB1A0; // type:func +EnKarebaba_Destroy = 0x809BB2D4; // type:func +EnKarebaba_ResetCollider = 0x809BB314; // type:func +EnKarebaba_SetupGrow = 0x809BB350; // type:func +EnKarebaba_SetupIdle = 0x809BB3A0; // type:func +EnKarebaba_SetupAwaken = 0x809BB3F4; // type:func +EnKarebaba_SetupUpright = 0x809BB470; // type:func +EnKarebaba_SetupSpin = 0x809BB510; // type:func +EnKarebaba_SetupDying = 0x809BB52C; // type:func +EnKarebaba_SetupDeadItemDrop = 0x809BB5A0; // type:func +EnKarebaba_SetupRetract = 0x809BB640; // type:func +EnKarebaba_SetupDead = 0x809BB6C0; // type:func +EnKarebaba_SetupRegrow = 0x809BB74C; // type:func +EnKarebaba_Grow = 0x809BB7A0; // type:func +EnKarebaba_Idle = 0x809BB838; // type:func +EnKarebaba_Awaken = 0x809BB898; // type:func +EnKarebaba_Upright = 0x809BB96C; // type:func +EnKarebaba_Spin = 0x809BBA60; // type:func +EnKarebaba_Dying = 0x809BBBF4; // type:func +EnKarebaba_DeadItemDrop = 0x809BBEAC; // type:func +EnKarebaba_Retract = 0x809BBF14; // type:func +EnKarebaba_Dead = 0x809BBFE8; // type:func +EnKarebaba_Regrow = 0x809BC040; // type:func +EnKarebaba_Update = 0x809BC10C; // type:func +EnKarebaba_DrawBaseShadow = 0x809BC2C0; // type:func +EnKarebaba_Draw = 0x809BC3AC; // type:func +BgBdanObjects_GetProperty = 0x809BCA90; // type:func +BgBdanObjects_SetProperty = 0x809BCAE4; // type:func +BgBdanObjects_Init = 0x809BCB38; // type:func +BgBdanObjects_Destroy = 0x809BCDBC; // type:func +BgBdanObjects_OctoPlatform_WaitForRutoToStartCutscene = 0x809BCE0C; // type:func +BgBdanObjects_OctoPlatform_RaiseToUpperPosition = 0x809BCF60; // type:func +BgBdanObjects_OctoPlatform_WaitForRutoToAdvanceCutscene = 0x809BD05C; // type:func +BgBdanObjects_OctoPlatform_DescendWithBigOcto = 0x809BD198; // type:func +BgBdanObjects_OctoPlatform_PauseBeforeDescending = 0x809BD31C; // type:func +BgBdanObjects_OctoPlatform_WaitForBigOctoToStartBattle = 0x809BD380; // type:func +BgBdanObjects_OctoPlatform_BattleInProgress = 0x809BD3DC; // type:func +BgBdanObjects_SinkToFloorHeight = 0x809BD4B4; // type:func +BgBdanObjects_WaitForPlayerInRange = 0x809BD534; // type:func +BgBdanObjects_RaiseToUpperPosition = 0x809BD5A0; // type:func +BgBdanObjects_DoNothing = 0x809BD638; // type:func +BgBdanObjects_ElevatorOscillate = 0x809BD648; // type:func +BgBdanObjects_WaitForSwitch = 0x809BD77C; // type:func +BgBdanObjects_ChangeWaterBoxLevel = 0x809BD7C8; // type:func +BgBdanObjects_WaitForTimerExpired = 0x809BD890; // type:func +BgBdanObjects_WaitForPlayerOnTop = 0x809BD8E4; // type:func +BgBdanObjects_FallToLowerPos = 0x809BD968; // type:func +BgBdanObjects_Update = 0x809BDA24; // type:func +BgBdanObjects_Draw = 0x809BDA60; // type:func +DemoSa_Destroy = 0x809BDD60; // type:func +func_8098E480 = 0x809BDD84; // type:func +DemoSa_SetEyeIndex = 0x809BDE0C; // type:func +DemoSa_SetMouthIndex = 0x809BDE24; // type:func +func_8098E5C8 = 0x809BDE3C; // type:func +DemoSa_UpdateSkelAnime = 0x809BDE84; // type:func +DemoSa_GetCue = 0x809BDEA8; // type:func +func_8098E654 = 0x809BDED0; // type:func +func_8098E6A0 = 0x809BDF1C; // type:func +func_8098E6EC = 0x809BDF68; // type:func +func_8098E76C = 0x809BDFE8; // type:func +func_8098E7FC = 0x809BE078; // type:func +func_8098E86C = 0x809BE0E8; // type:func +func_8098E8C8 = 0x809BE144; // type:func +func_8098E944 = 0x809BE1C0; // type:func +func_8098E960 = 0x809BE1E0; // type:func +func_8098E9EC = 0x809BE278; // type:func +func_8098EA3C = 0x809BE2C8; // type:func +func_8098EA68 = 0x809BE2F4; // type:func +func_8098EB00 = 0x809BE38C; // type:func +func_8098EB6C = 0x809BE3F8; // type:func +func_8098EBB8 = 0x809BE444; // type:func +func_8098EBD8 = 0x809BE464; // type:func +func_8098EBF8 = 0x809BE484; // type:func +func_8098EC28 = 0x809BE4B8; // type:func +func_8098EC60 = 0x809BE4F8; // type:func +func_8098EC94 = 0x809BE530; // type:func +func_8098ECCC = 0x809BE570; // type:func +func_8098ECF4 = 0x809BE59C; // type:func +func_8098EDB0 = 0x809BE658; // type:func +func_8098EE08 = 0x809BE6B0; // type:func +func_8098EE28 = 0x809BE6D0; // type:func +func_8098EEA8 = 0x809BE750; // type:func +func_8098EEFC = 0x809BE7A4; // type:func +func_8098F050 = 0x809BE8F8; // type:func +func_8098F0E8 = 0x809BE994; // type:func +func_8098F118 = 0x809BE9B4; // type:func +func_8098F16C = 0x809BE9FC; // type:func +DemoSa_DrawXlu = 0x809BEA44; // type:func +func_8098F390 = 0x809BEBE4; // type:func +func_8098F3F0 = 0x809BEC44; // type:func +func_8098F420 = 0x809BEC78; // type:func +func_8098F480 = 0x809BECD4; // type:func +func_8098F50C = 0x809BED60; // type:func +func_8098F544 = 0x809BED98; // type:func +func_8098F590 = 0x809BEDE4; // type:func +func_8098F5D0 = 0x809BEE24; // type:func +func_8098F610 = 0x809BEE64; // type:func +func_8098F654 = 0x809BEEAC; // type:func +func_8098F714 = 0x809BEF58; // type:func +func_8098F734 = 0x809BEF78; // type:func +func_8098F77C = 0x809BEFC4; // type:func +func_8098F7BC = 0x809BF00C; // type:func +func_8098F7FC = 0x809BF054; // type:func +func_8098F83C = 0x809BF098; // type:func +func_8098F8F8 = 0x809BF154; // type:func +func_8098F984 = 0x809BF1E0; // type:func +func_8098F998 = 0x809BF1F8; // type:func +func_8098FA2C = 0x809BF28C; // type:func +func_8098FA84 = 0x809BF2E4; // type:func +func_8098FAE0 = 0x809BF340; // type:func +func_8098FB34 = 0x809BF394; // type:func +func_8098FB68 = 0x809BF3C8; // type:func +func_8098FC44 = 0x809BF490; // type:func +func_8098FC64 = 0x809BF4B0; // type:func +func_8098FC9C = 0x809BF4EC; // type:func +func_8098FCD4 = 0x809BF52C; // type:func +func_8098FD0C = 0x809BF56C; // type:func +DemoSa_Update = 0x809BF5B8; // type:func +DemoSa_Init = 0x809BF600; // type:func +DemoSa_OverrideLimbDraw = 0x809BF6C8; // type:func +DemoSa_DrawNothing = 0x809BF700; // type:func +DemoSa_DrawOpa = 0x809BF710; // type:func +DemoSa_Draw = 0x809BF8A4; // type:func +DemoGo_GetCueChannel = 0x809C0880; // type:func +func_8097C8A8 = 0x809C08BC; // type:func +DemoGo_Destroy = 0x809C0928; // type:func +func_8097C930 = 0x809C094C; // type:func +func_8097C9B8 = 0x809C09D4; // type:func +func_8097C9DC = 0x809C09FC; // type:func +func_8097CA30 = 0x809C0A54; // type:func +func_8097CA78 = 0x809C0A9C; // type:func +func_8097CB0C = 0x809C0B34; // type:func +func_8097CC08 = 0x809C0C34; // type:func +func_8097CCC0 = 0x809C0CEC; // type:func +func_8097CCE0 = 0x809C0D0C; // type:func +DemoGo_UpdateSkelAnime = 0x809C0DC4; // type:func +func_8097CDB0 = 0x809C0DE8; // type:func +func_8097CE10 = 0x809C0E54; // type:func +func_8097CE20 = 0x809C0E68; // type:func +func_8097CE78 = 0x809C0EC4; // type:func +func_8097CEEC = 0x809C0F3C; // type:func +func_8097CF20 = 0x809C0F74; // type:func +func_8097CF9C = 0x809C0FF0; // type:func +func_8097CFDC = 0x809C1030; // type:func +func_8097CFFC = 0x809C1050; // type:func +func_8097D01C = 0x809C1070; // type:func +func_8097D058 = 0x809C10B4; // type:func +func_8097D088 = 0x809C10EC; // type:func +func_8097D0D0 = 0x809C113C; // type:func +func_8097D130 = 0x809C11A4; // type:func +DemoGo_Update = 0x809C1204; // type:func +DemoGo_Init = 0x809C124C; // type:func +func_8097D290 = 0x809C12F8; // type:func +func_8097D29C = 0x809C1308; // type:func +DemoGo_Draw = 0x809C1418; // type:func +EnIn_GetTextIdChild = 0x809C15D0; // type:func +EnIn_GetTextIdAdult = 0x809C1630; // type:func +EnIn_GetTextId = 0x809C1788; // type:func +EnIn_UpdateTalkStateOnClosing = 0x809C17EC; // type:func +EnIn_UpdateTalkStateOnChoice = 0x809C1860; // type:func +EnIn_UpdateTalkStateOnEvent = 0x809C1AB0; // type:func +EnIn_UpdateTalkState = 0x809C1B1C; // type:func +func_80A795C8 = 0x809C1BE4; // type:func +func_80A79690 = 0x809C1CAC; // type:func +EnIn_ChangeAnim = 0x809C1D08; // type:func +func_80A7975C = 0x809C1D78; // type:func +EnIn_GetStartMode = 0x809C1E4C; // type:func +EnIn_UpdateEyes = 0x809C2048; // type:func +func_80A79AB4 = 0x809C20D0; // type:func +func_80A79BAC = 0x809C21C8; // type:func +func_80A79C78 = 0x809C2294; // type:func +EnIn_Init = 0x809C2488; // type:func +EnIn_Destroy = 0x809C2594; // type:func +EnIn_WaitForObject = 0x809C25D8; // type:func +func_80A7A304 = 0x809C2930; // type:func +func_80A7A4BC = 0x809C2AE8; // type:func +func_80A7A4C8 = 0x809C2AF8; // type:func +func_80A7A568 = 0x809C2B9C; // type:func +func_80A7A770 = 0x809C2DA4; // type:func +func_80A7A848 = 0x809C2E7C; // type:func +func_80A7A940 = 0x809C2F74; // type:func +func_80A7AA40 = 0x809C3074; // type:func +func_80A7ABD4 = 0x809C3208; // type:func +func_80A7AE84 = 0x809C34BC; // type:func +func_80A7AEF0 = 0x809C3528; // type:func +func_80A7B018 = 0x809C3654; // type:func +func_80A7B024 = 0x809C3664; // type:func +EnIn_Update = 0x809C3750; // type:func +EnIn_OverrideLimbDraw = 0x809C3964; // type:func +EnIn_PostLimbDraw = 0x809C3BB8; // type:func +EnIn_Draw = 0x809C3CC8; // type:func +EnTr_SetupAction = 0x809C4370; // type:func +EnTr_Init = 0x809C437C; // type:func +EnTr_Destroy = 0x809C44CC; // type:func +EnTr_CrySpellcast = 0x809C44DC; // type:func +EnTr_DoNothing = 0x809C458C; // type:func +EnTr_ChooseAction2 = 0x809C459C; // type:func +EnTr_FlyKidnapCutscene = 0x809C474C; // type:func +func_80B23254 = 0x809C48C8; // type:func +EnTr_ShrinkVanish = 0x809C4B48; // type:func +EnTr_Reappear = 0x809C4D04; // type:func +EnTr_WaitToReappear = 0x809C4E9C; // type:func +EnTr_TakeOff = 0x809C4F5C; // type:func +EnTr_TurnLookOverShoulder = 0x809C5024; // type:func +EnTr_ChooseAction1 = 0x809C5104; // type:func +EnTr_Update = 0x809C5238; // type:func +EnTr_OverrideLimbDraw = 0x809C53F0; // type:func +EnTr_Draw = 0x809C5520; // type:func +func_80B23FDC = 0x809C562C; // type:func +func_80B24038 = 0x809C568C; // type:func +EnTr_SetRotFromCue = 0x809C5888; // type:func +EnTr_SetStartPosRotFromCue = 0x809C5910; // type:func +func_808B4C30 = 0x809C5C70; // type:func +func_808B4C4C = 0x809C5C90; // type:func +func_808B4D04 = 0x809C5D44; // type:func +func_808B4D9C = 0x809C5DD8; // type:func +func_808B4E58 = 0x809C5E88; // type:func +BgSpot16Bombstone_Init = 0x809C6084; // type:func +BgSpot16Bombstone_Destroy = 0x809C6138; // type:func +BgSpot16Bombstone_SpawnDust = 0x809C6184; // type:func +func_808B5240 = 0x809C6220; // type:func +BgSpot16Bombstone_SpawnFragments = 0x809C6388; // type:func +func_808B561C = 0x809C6600; // type:func +func_808B56BC = 0x809C66A0; // type:func +func_808B57E0 = 0x809C679C; // type:func +func_808B5934 = 0x809C68F4; // type:func +func_808B5950 = 0x809C6914; // type:func +func_808B5A78 = 0x809C6A00; // type:func +func_808B5A94 = 0x809C6A20; // type:func +func_808B5AF0 = 0x809C6A84; // type:func +func_808B5B04 = 0x809C6A9C; // type:func +func_808B5B58 = 0x809C6AF4; // type:func +func_808B5B6C = 0x809C6B0C; // type:func +BgSpot16Bombstone_Update = 0x809C6C08; // type:func +BgSpot16Bombstone_Draw = 0x809C6C3C; // type:func +BgHidanKowarerukabe_InitDynaPoly = 0x809C71C0; // type:func +BgHidanKowarerukabe_InitColliderSphere = 0x809C725C; // type:func +BgHidanKowarerukabe_OffsetActorYPos = 0x809C72F0; // type:func +BgHidanKowarerukabe_Init = 0x809C731C; // type:func +BgHidanKowarerukabe_Destroy = 0x809C73CC; // type:func +BgHidanKowarerukabe_SpawnDust = 0x809C7414; // type:func +BgHidanKowarerukabe_FloorBreak = 0x809C7538; // type:func +func_8088A67C = 0x809C7804; // type:func +BgHidanKowarerukabe_LargeWallBreak = 0x809C7A9C; // type:func +BgHidanKowarerukabe_Break = 0x809C7D28; // type:func +BgHidanKowarerukabe_Update = 0x809C7DB8; // type:func +BgHidanKowarerukabe_Draw = 0x809C7E88; // type:func +BgBombwall_InitDynapoly = 0x809C80A0; // type:func +BgBombwall_RotateVec = 0x809C80F8; // type:func +BgBombwall_Init = 0x809C814C; // type:func +BgBombwall_DestroyCollision = 0x809C835C; // type:func +BgBombwall_Destroy = 0x809C83D8; // type:func +func_8086EB5C = 0x809C83F8; // type:func +func_8086ED50 = 0x809C85EC; // type:func +func_8086ED70 = 0x809C8610; // type:func +func_8086EDFC = 0x809C86A0; // type:func +func_8086EE40 = 0x809C86E4; // type:func +func_8086EE94 = 0x809C8738; // type:func +BgBombwall_Update = 0x809C8768; // type:func +BgBombwall_Draw = 0x809C8794; // type:func +EnRu2_InitCollider = 0x809C8960; // type:func +EnRu2_UpdateCollider = 0x809C89AC; // type:func +EnRu2_Destroy = 0x809C89F0; // type:func +EnRu2_UpdateEyes = 0x809C8A1C; // type:func +EnRu2_GetSwitchFlag = 0x809C8AA4; // type:func +EnRu2_GetType = 0x809C8AB8; // type:func +EnRu2_UpdateBgCheckInfo = 0x809C8AC8; // type:func +EnRu2_UpdateSkelAnime = 0x809C8B10; // type:func +EnRu2_GetCue = 0x809C8B34; // type:func +EnRu2_CheckCueMatchingId = 0x809C8B5C; // type:func +EnRu2_CheckCueNotMatchingId = 0x809C8BA8; // type:func +EnRu2_InitPositionFromCue = 0x809C8BF4; // type:func +EnRu2_AnimationChange = 0x809C8C74; // type:func +EnRu2_Rise = 0x809C8D04; // type:func +EnRu2_InitChamberOfSages = 0x809C8D24; // type:func +EnRu2_SpawnBlueWarp = 0x809C8D6C; // type:func +EnRu2_SpawnWaterMedallion = 0x809C8DC8; // type:func +EnRu2_CheckWaterMedallionCutscene = 0x809C8E44; // type:func +EnRu2_CheckIfBlueWarpShouldSpawn = 0x809C8EE0; // type:func +EnRu2_EndRise = 0x809C8F30; // type:func +EnRu2_CheckStartRaisingArms = 0x809C8F5C; // type:func +EnRu2_HoldArmsUp = 0x809C8FF0; // type:func +EnRu2_CheckIfWaterMedallionShouldSpawn = 0x809C9004; // type:func +EnRu2_SetupWaterMedallionCutscene = 0x809C9050; // type:func +EnRu2_AwaitBlueWarp = 0x809C9070; // type:func +EnRu2_RiseThroughBlueWarp = 0x809C9090; // type:func +EnRu2_SageOfWaterDialog = 0x809C90CC; // type:func +EnRu2_RaiseArms = 0x809C9114; // type:func +EnRu2_AwaitWaterMedallion = 0x809C9158; // type:func +EnRu2_FinishWaterMedallionCutscene = 0x809C91A0; // type:func +EnRu2_InitWaterTrial = 0x809C91D4; // type:func +EnRu2_PlayWhiteOutSound = 0x809C9218; // type:func +EnRu2_SpawnLightBall = 0x809C9238; // type:func +EnRu2_CheckFadeIn = 0x809C92B8; // type:func +EnRu2_Fade = 0x809C930C; // type:func +EnRu2_CheckFadeOut = 0x809C9460; // type:func +EnRu2_WaterTrialInvisible = 0x809C94FC; // type:func +EnRu2_WaterTrialFade = 0x809C951C; // type:func +EnRu2_AwaitSpawnLightBall = 0x809C9564; // type:func +EnRu2_DrawXlu = 0x809C95AC; // type:func +EnRu2_InitCredits = 0x809C96F4; // type:func +EnRu2_FadeInCredits = 0x809C973C; // type:func +EnRu2_InitCreditsPosition = 0x809C97C8; // type:func +EnRu2_CheckVisibleInCredits = 0x809C9800; // type:func +EnRu2_SetupTurnHeadDownLeftAnimation = 0x809C984C; // type:func +EnRu2_HoldLookingDownLeftPose = 0x809C988C; // type:func +EnRu2_NextCreditsAction = 0x809C98C0; // type:func +EnRu2_CreditsInvisible = 0x809C994C; // type:func +EnRu2_CreditsFadeIn = 0x809C996C; // type:func +EnRu2_CreditsVisible = 0x809C99B8; // type:func +EnRu2_CreditsTurnHeadDownLeft = 0x809C9A00; // type:func +EnRu2_SetEncounterSwitchFlag = 0x809C9A44; // type:func +EnRu2_GetEncounterSwitchFlag = 0x809C9A74; // type:func +EnRu2_InitWaterTempleEncounter = 0x809C9AA4; // type:func +EnRu2_PlayFanfare = 0x809C9B0C; // type:func +EnRu2_SwimUpProgress = 0x809C9B2C; // type:func +EnRu2_IsPlayerInRangeForEncounter = 0x809C9B98; // type:func +EnRu2_CheckRangeToStartEncounter = 0x809C9BD4; // type:func +EnRu2_StartEncounter = 0x809C9C34; // type:func +EnRu2_EncounterBeginningHandler = 0x809C9C70; // type:func +EnRu2_DialogCameraHandler = 0x809C9D40; // type:func +EnRu2_StartSwimmingUp = 0x809C9E2C; // type:func +EnRu2_EndSwimmingUp = 0x809C9EC4; // type:func +EnRu2_WaterTempleEncounterRangeCheck = 0x809C9F18; // type:func +EnRu2_WaterTempleEncounterUnconditional = 0x809C9F5C; // type:func +EnRu2_WaterTempleEncounterBegin = 0x809C9FC4; // type:func +EnRu2_WaterTempleEncounterDialog = 0x809CA020; // type:func +EnRu2_WaterTempleEncounterEnd = 0x809CA07C; // type:func +EnRu2_WaterTempleSwimmingUp = 0x809CA0D8; // type:func +EnRu2_Update = 0x809CA13C; // type:func +EnRu2_Init = 0x809CA184; // type:func +EnRu2_DrawNothing = 0x809CA27C; // type:func +EnRu2_DrawOpa = 0x809CA28C; // type:func +EnRu2_Draw = 0x809CA3C0; // type:func +ObjDekujr_Init = 0x809CB6E0; // type:func +ObjDekujr_Destroy = 0x809CB7EC; // type:func +ObjDekujr_GetCueStartPos = 0x809CB7FC; // type:func +ObjDekujr_GetCueEndPos = 0x809CB840; // type:func +ObjDekujr_ComeUp = 0x809CB884; // type:func +ObjDekujr_Update = 0x809CBA34; // type:func +ObjDekujr_Draw = 0x809CBB24; // type:func +BgMizuUzu_Init = 0x809CBD20; // type:func +BgMizuUzu_Destroy = 0x809CBD9C; // type:func +func_8089F788 = 0x809CBDD0; // type:func +BgMizuUzu_Update = 0x809CBE48; // type:func +BgMizuUzu_Draw = 0x809CBE6C; // type:func +BgSpot06Objects_Init = 0x809CBEF0; // type:func +BgSpot06Objects_Destroy = 0x809CC2BC; // type:func +BgSpot06Objects_GateSpawnBubbles = 0x809CC324; // type:func +BgSpot06Objects_GateWaitForSwitch = 0x809CC41C; // type:func +BgSpot06Objects_GateWaitToOpen = 0x809CC4B0; // type:func +BgSpot06Objects_GateOpen = 0x809CC4E4; // type:func +BgSpot06Objects_DoNothing = 0x809CC570; // type:func +BgSpot06Objects_LockSpawnWaterRipples = 0x809CC580; // type:func +BgSpot06Objects_LockSpawnBubbles = 0x809CC5E4; // type:func +BgSpot06Objects_LockWait = 0x809CC678; // type:func +BgSpot06Objects_LockPullOutward = 0x809CC89C; // type:func +BgSpot06Objects_LockSwimToSurface = 0x809CC954; // type:func +BgSpot06Objects_LockFloat = 0x809CCBCC; // type:func +BgSpot06Objects_Update = 0x809CCC4C; // type:func +BgSpot06Objects_DrawLakeHyliaWater = 0x809CCCAC; // type:func +BgSpot06Objects_Draw = 0x809CCE94; // type:func +BgSpot06Objects_WaterPlaneCutsceneWait = 0x809CCF58; // type:func +BgSpot06Objects_WaterPlaneCutsceneRise = 0x809CCF84; // type:func +BgIceObjects_Init = 0x809CD2F0; // type:func +BgIceObjects_Destroy = 0x809CD37C; // type:func +BgIceObjects_SetNextTarget = 0x809CD3B0; // type:func +BgIceObjects_CheckPits = 0x809CD830; // type:func +BgIceObjects_Idle = 0x809CD9B8; // type:func +BgIceObjects_Slide = 0x809CDABC; // type:func +BgIceObjects_Reset = 0x809CDE4C; // type:func +BgIceObjects_Stuck = 0x809CDEE8; // type:func +BgIceObjects_Update = 0x809CDF24; // type:func +BgIceObjects_Draw = 0x809CDF48; // type:func +BgHakaWater_Init = 0x809CE230; // type:func +BgHakaWater_Destroy = 0x809CE2BC; // type:func +BgHakaWater_LowerWater = 0x809CE2CC; // type:func +BgHakaWater_Wait = 0x809CE414; // type:func +BgHakaWater_ChangeWaterLevel = 0x809CE4D0; // type:func +BgHakaWater_Update = 0x809CE5D8; // type:func +BgHakaWater_Draw = 0x809CE5FC; // type:func +EnMa2_GetTextId = 0x809CEA30; // type:func +EnMa2_UpdateTalkState = 0x809CEAC8; // type:func +func_80AA1AE4 = 0x809CEB78; // type:func +func_80AA1B58 = 0x809CEBEC; // type:func +func_80AA1C68 = 0x809CECFC; // type:func +EnMa2_UpdateEyes = 0x809CED54; // type:func +EnMa2_ChangeAnim = 0x809CEDE0; // type:func +func_80AA1DB4 = 0x809CEE50; // type:func +EnMa2_Init = 0x809CEEDC; // type:func +EnMa2_Destroy = 0x809CF080; // type:func +func_80AA2018 = 0x809CF0C0; // type:func +func_80AA204C = 0x809CF0F4; // type:func +func_80AA20E4 = 0x809CF190; // type:func +func_80AA21C8 = 0x809CF27C; // type:func +EnMa2_Update = 0x809CF31C; // type:func +EnMa2_OverrideLimbDraw = 0x809CF40C; // type:func +EnMa2_PostLimbDraw = 0x809CF64C; // type:func +EnMa2_Draw = 0x809CF700; // type:func +EnBomChu_Init = 0x809CFA90; // type:func +EnBomChu_Destroy = 0x809CFC30; // type:func +EnBomChu_Explode = 0x809CFC80; // type:func +EnBomChu_CrossProduct = 0x809CFDA0; // type:func +EnBomChu_UpdateFloorPoly = 0x809CFE14; // type:func +EnBomChu_WaitForRelease = 0x809D0048; // type:func +EnBomChu_Move = 0x809D01B8; // type:func +EnBomChu_WaitForKill = 0x809D06D0; // type:func +EnBomChu_ModelToWorld = 0x809D0710; // type:func +EnBomChu_SpawnRipples = 0x809D07C0; // type:func +EnBomChu_Update = 0x809D084C; // type:func +EnBomChu_Draw = 0x809D0C10; // type:func +EnHorseGameCheck_InitIngoRace = 0x809D1130; // type:func +EnHorseGameCheck_DestroyIngoRace = 0x809D11EC; // type:func +EnHorseGameCheck_FinishIngoRace = 0x809D1200; // type:func +EnHorseGameCheck_UpdateIngoRace = 0x809D134C; // type:func +EnHorseGameCheck_InitGerudoArchery = 0x809D17C4; // type:func +EnHorseGameCheck_DestroyGerudoArchery = 0x809D17E4; // type:func +EnHorseGameCheck_UpdateGerudoArchery = 0x809D17F8; // type:func +EnHorseGameCheck_InitType3 = 0x809D1840; // type:func +EnHorseGameCheck_DestroyType3 = 0x809D185C; // type:func +EnHorseGameCheck_UpdateType3 = 0x809D1870; // type:func +EnHorseGameCheck_InitMalonRace = 0x809D1884; // type:func +EnHorseGameCheck_DestroyMalonRace = 0x809D18D4; // type:func +EnHorseGameCheck_FinishMalonRace = 0x809D18E8; // type:func +EnHorseGameCheck_UpdateMalonRace = 0x809D19DC; // type:func +EnHorseGameCheck_Init = 0x809D1EF4; // type:func +EnHorseGameCheck_Destroy = 0x809D1F78; // type:func +EnHorseGameCheck_Update = 0x809D1FB4; // type:func +EnHorseGameCheck_Draw = 0x809D1FF0; // type:func +BossTw_AddDotEffect = 0x809D2200; // type:func +BossTw_AddDmgCloud = 0x809D22F4; // type:func +BossTw_AddRingEffect = 0x809D23F0; // type:func +BossTw_AddPlayerFreezeEffect = 0x809D24F4; // type:func +BossTw_AddFlameEffect = 0x809D25A0; // type:func +BossTw_AddMergeFlameEffect = 0x809D2678; // type:func +BossTw_AddShieldBlastEffect = 0x809D2780; // type:func +BossTw_AddShieldDeflectEffect = 0x809D2868; // type:func +BossTw_AddShieldHitEffect = 0x809D2A30; // type:func +BossTw_Init = 0x809D2BF8; // type:func +BossTw_Destroy = 0x809D3414; // type:func +BossTw_SetupTurnToPlayer = 0x809D347C; // type:func +BossTw_TurnToPlayer = 0x809D34CC; // type:func +BossTw_SetupFlyTo = 0x809D35EC; // type:func +BossTw_FlyTo = 0x809D37F0; // type:func +BossTw_SetupShootBeam = 0x809D3A24; // type:func +BossTw_SpawnGroundBlast = 0x809D3B0C; // type:func +BossTw_BeamHitPlayerCheck = 0x809D3E88; // type:func +BossTw_CheckBeamReflection = 0x809D4080; // type:func +BossTw_BeamReflHitCheck = 0x809D4308; // type:func +BossTw_GetFloorY = 0x809D4430; // type:func +BossTw_ShootBeam = 0x809D4704; // type:func +BossTw_SetupFinishBeamShoot = 0x809D56BC; // type:func +BossTw_FinishBeamShoot = 0x809D5718; // type:func +BossTw_SetupHitByBeam = 0x809D57B0; // type:func +BossTw_HitByBeam = 0x809D5818; // type:func +BossTw_SetupLaugh = 0x809D5AE0; // type:func +BossTw_Laugh = 0x809D5B44; // type:func +BossTw_SetupSpin = 0x809D5BD4; // type:func +BossTw_Spin = 0x809D5C50; // type:func +BossTw_SetupMergeCS = 0x809D5CF0; // type:func +BossTw_MergeCS = 0x809D5D3C; // type:func +BossTw_SetupWait = 0x809D5D80; // type:func +BossTw_Wait = 0x809D5DB8; // type:func +BossTw_TwinrovaSetupMergeCS = 0x809D5E5C; // type:func +BossTw_TwinrovaMergeCS = 0x809D5E7C; // type:func +BossTw_SetupDeathCS = 0x809D6948; // type:func +BossTw_DeathCS = 0x809D69B0; // type:func +BossTw_SetupCSWait = 0x809D6AB8; // type:func +BossTw_CSWait = 0x809D6AF0; // type:func +BossTw_TwinrovaSetupIntroCS = 0x809D6B00; // type:func +BossTw_TwinrovaIntroCS = 0x809D6B38; // type:func +BossTw_DeathBall = 0x809D838C; // type:func +BossTw_TwinrovaSetupDeathCS = 0x809D8688; // type:func +BossTw_DeathCSMsgSfx = 0x809D8744; // type:func +BossTw_TwinrovaDeathCS = 0x809D8F64; // type:func +BossTw_Update = 0x809D9C58; // type:func +BossTw_TwinrovaUpdate = 0x809DA2CC; // type:func +BossTw_OverrideLimbDraw = 0x809DAC48; // type:func +BossTw_PostLimbDraw = 0x809DACFC; // type:func +func_80941BC0 = 0x809DB114; // type:func +func_80942180 = 0x809DB68C; // type:func +func_809426F0 = 0x809DBBA8; // type:func +func_80942C70 = 0x809DC0F0; // type:func +func_80943028 = 0x809DC460; // type:func +BossTw_Draw = 0x809DC664; // type:func +BossTw_TwinrovaOverrideLimbDraw = 0x809DCD20; // type:func +BossTw_TwinrovaPostLimbDraw = 0x809DD14C; // type:func +BossTw_ShieldChargeDraw = 0x809DD288; // type:func +BossTw_SpawnPortalDraw = 0x809DDAF0; // type:func +func_80944C50 = 0x809DDF28; // type:func +BossTw_TwinrovaDraw = 0x809DE30C; // type:func +BossTw_BlastFire = 0x809DE644; // type:func +BossTw_BlastIce = 0x809DEF7C; // type:func +BossTw_BlastShieldCheck = 0x809DFAF0; // type:func +BossTw_BlastUpdate = 0x809DFD80; // type:func +BossTw_BlastDraw = 0x809DFEFC; // type:func +BossTw_DrawDeathBall = 0x809E0480; // type:func +BossTw_UpdateEffects = 0x809E09E0; // type:func +BossTw_InitRand = 0x809E1738; // type:func +BossTw_RandZeroOne = 0x809E1758; // type:func +BossTw_DrawEffects = 0x809E1880; // type:func +BossTw_TwinrovaSetupArriveAtTarget = 0x809E26B4; // type:func +BossTw_TwinrovaArriveAtTarget = 0x809E2728; // type:func +BossTw_TwinrovaSetupChargeBlast = 0x809E2854; // type:func +BossTw_TwinrovaChargeBlast = 0x809E28B4; // type:func +BossTw_TwinrovaSetupShootBlast = 0x809E2AA0; // type:func +BossTw_TwinrovaShootBlast = 0x809E2B28; // type:func +BossTw_TwinrovaSetupDoneBlastShoot = 0x809E2D78; // type:func +BossTw_TwinrovaDoneBlastShoot = 0x809E2DC4; // type:func +BossTw_TwinrovaDamage = 0x809E2E5C; // type:func +BossTw_TwinrovaStun = 0x809E2F88; // type:func +BossTw_TwinrovaSetupGetUp = 0x809E323C; // type:func +BossTw_TwinrovaGetUp = 0x809E32A0; // type:func +BossTw_TwinrovaSetupFly = 0x809E3334; // type:func +BossTw_TwinrovaFly = 0x809E350C; // type:func +BossTw_TwinrovaSetupSpin = 0x809E3780; // type:func +BossTw_TwinrovaSpin = 0x809E37D8; // type:func +BossTw_TwinrovaSetupLaugh = 0x809E3850; // type:func +BossTw_TwinrovaLaugh = 0x809E38B4; // type:func +EnRr_Init = 0x809E7DD0; // type:func +EnRr_Destroy = 0x809E7F70; // type:func +EnRr_Move = 0x809E7FB0; // type:func +EnRr_SetupReach = 0x809E7FD8; // type:func +EnRr_SetupNeutral = 0x809E80D8; // type:func +EnRr_SetupGrabPlayer = 0x809E81A4; // type:func +EnRr_GetMessage = 0x809E82AC; // type:func +EnRr_SetupReleasePlayer = 0x809E8300; // type:func +EnRr_SetupDamage = 0x809E84FC; // type:func +EnRr_SetupApproach = 0x809E85C8; // type:func +EnRr_SetupDeath = 0x809E8680; // type:func +EnRr_SetupStunned = 0x809E8720; // type:func +EnRr_CollisionCheck = 0x809E882C; // type:func +EnRr_InitBodySegments = 0x809E8BBC; // type:func +EnRr_UpdateBodySegments = 0x809E8D7C; // type:func +EnRr_Approach = 0x809E8F00; // type:func +EnRr_Reach = 0x809E8FC0; // type:func +EnRr_GrabPlayer = 0x809E90DC; // type:func +EnRr_Damage = 0x809E91D4; // type:func +EnRr_Death = 0x809E924C; // type:func +EnRr_Retreat = 0x809E95C0; // type:func +EnRr_Stunned = 0x809E9654; // type:func +EnRr_Update = 0x809E96BC; // type:func +EnRr_Draw = 0x809E9AE8; // type:func +EnBa_SetupAction = 0x809EA300; // type:func +EnBa_Init = 0x809EA30C; // type:func +EnBa_Destroy = 0x809EA4F8; // type:func +EnBa_SetupIdle = 0x809EA524; // type:func +EnBa_Idle = 0x809EA564; // type:func +EnBa_SetupFallAsBlob = 0x809EA990; // type:func +EnBa_FallAsBlob = 0x809EAA00; // type:func +EnBa_SetupSwingAtPlayer = 0x809EAAC0; // type:func +EnBa_SwingAtPlayer = 0x809EAB14; // type:func +func_809B7174 = 0x809EB134; // type:func +EnBa_RecoilFromDamage = 0x809EB1B0; // type:func +func_809B75A0 = 0x809EB564; // type:func +EnBa_Die = 0x809EB7E0; // type:func +EnBa_Update = 0x809EBB10; // type:func +EnBa_Draw = 0x809EBBF0; // type:func +EnBx_Init = 0x809EC1D0; // type:func +EnBx_Destroy = 0x809EC3D8; // type:func +func_809D1D0C = 0x809EC404; // type:func +EnBx_Update = 0x809EC4D4; // type:func +EnBx_Draw = 0x809EC7F8; // type:func +EnAnubice_Hover = 0x809ECCD0; // type:func +EnAnubice_AimFireball = 0x809ECD74; // type:func +EnAnubice_Init = 0x809ECE54; // type:func +EnAnubice_Destroy = 0x809ECF6C; // type:func +EnAnubice_FindFlameCircles = 0x809ECFC8; // type:func +EnAnubice_SetupIdle = 0x809ED050; // type:func +EnAnubice_Idle = 0x809ED0F8; // type:func +EnAnubice_GoToHome = 0x809ED1D8; // type:func +EnAnubice_SetupShootFireball = 0x809ED328; // type:func +EnAnubice_ShootFireball = 0x809ED3B0; // type:func +EnAnubice_SetupDie = 0x809ED4B0; // type:func +EnAnubice_Die = 0x809ED580; // type:func +EnAnubice_Update = 0x809ED834; // type:func +EnAnubice_OverrideLimbDraw = 0x809EDC38; // type:func +EnAnubice_PostLimbDraw = 0x809EDC84; // type:func +EnAnubice_Draw = 0x809EDD40; // type:func +EnAnubiceFire_Init = 0x809EDF80; // type:func +EnAnubiceFire_Destroy = 0x809EE0A0; // type:func +func_809B26EC = 0x809EE0CC; // type:func +func_809B27D8 = 0x809EE1B8; // type:func +func_809B2B48 = 0x809EE528; // type:func +EnAnubiceFire_Update = 0x809EE6D4; // type:func +EnAnubiceFire_Draw = 0x809EE8D0; // type:func +BgMoriHashigo_InitDynapoly = 0x809EED40; // type:func +BgMoriHashigo_InitCollider = 0x809EED98; // type:func +BgMoriHashigo_SpawnLadder = 0x809EEE44; // type:func +BgMoriHashigo_InitClasp = 0x809EEEFC; // type:func +BgMoriHashigo_InitLadder = 0x809EEF88; // type:func +BgMoriHashigo_Init = 0x809EEFCC; // type:func +BgMoriHashigo_Destroy = 0x809EF090; // type:func +BgMoriHashigo_SetupWaitForMoriTex = 0x809EF0E8; // type:func +BgMoriHashigo_WaitForMoriTex = 0x809EF0FC; // type:func +BgMoriHashigo_SetupClasp = 0x809EF17C; // type:func +BgMoriHashigo_Clasp = 0x809EF190; // type:func +BgMoriHashigo_SetupLadderWait = 0x809EF1F4; // type:func +BgMoriHashigo_LadderWait = 0x809EF208; // type:func +BgMoriHashigo_SetupLadderFall = 0x809EF23C; // type:func +BgMoriHashigo_LadderFall = 0x809EF278; // type:func +BgMoriHashigo_SetupLadderRest = 0x809EF358; // type:func +BgMoriHashigo_Update = 0x809EF37C; // type:func +BgMoriHashigo_Draw = 0x809EF3B8; // type:func +BgMoriHashira4_SetupAction = 0x809EF600; // type:func +BgMoriHashira4_InitDynaPoly = 0x809EF60C; // type:func +BgMoriHashira4_Init = 0x809EF664; // type:func +BgMoriHashira4_Destroy = 0x809EF778; // type:func +BgMoriHashira4_SetupWaitForMoriTex = 0x809EF7AC; // type:func +BgMoriHashira4_WaitForMoriTex = 0x809EF7D0; // type:func +BgMoriHashira4_SetupPillarsRotate = 0x809EF84C; // type:func +BgMoriHashira4_PillarsRotate = 0x809EF870; // type:func +BgMoriHashira4_GateWait = 0x809EF8A8; // type:func +BgMoriHashira4_GateOpen = 0x809EF954; // type:func +BgMoriHashira4_Update = 0x809EF9AC; // type:func +BgMoriHashira4_Draw = 0x809EF9D8; // type:func +BgMoriIdomizu_SetupAction = 0x809EFB90; // type:func +BgMoriIdomizu_SetWaterLevel = 0x809EFB9C; // type:func +BgMoriIdomizu_Init = 0x809EFBC4; // type:func +BgMoriIdomizu_Destroy = 0x809EFCE8; // type:func +BgMoriIdomizu_SetupWaitForMoriTex = 0x809EFD08; // type:func +BgMoriIdomizu_WaitForMoriTex = 0x809EFD2C; // type:func +BgMoriIdomizu_SetupMain = 0x809EFD84; // type:func +BgMoriIdomizu_Main = 0x809EFDA8; // type:func +BgMoriIdomizu_Update = 0x809EFF6C; // type:func +BgMoriIdomizu_Draw = 0x809EFF98; // type:func +BgSpot16Doughnut_Init = 0x809F01D0; // type:func +BgSpot16Doughnut_Destroy = 0x809F0344; // type:func +BgSpot16Doughnut_Update = 0x809F0354; // type:func +BgSpot16Doughnut_UpdateExpanding = 0x809F03E8; // type:func +BgSpot16Doughnut_Draw = 0x809F0450; // type:func +BgSpot16Doughnut_DrawExpanding = 0x809F0608; // type:func +BgBdanSwitch_InitDynaPoly = 0x809F0790; // type:func +BgBdanSwitch_InitCollision = 0x809F07E8; // type:func +func_8086D0EC = 0x809F083C; // type:func +BgBdanSwitch_Init = 0x809F09A8; // type:func +BgBdanSwitch_Destroy = 0x809F0B64; // type:func +func_8086D4B4 = 0x809F0BD0; // type:func +func_8086D548 = 0x809F0C64; // type:func +func_8086D5C4 = 0x809F0CE0; // type:func +func_8086D5E0 = 0x809F0D00; // type:func +func_8086D67C = 0x809F0D9C; // type:func +func_8086D694 = 0x809F0DB8; // type:func +func_8086D730 = 0x809F0E58; // type:func +func_8086D754 = 0x809F0E80; // type:func +func_8086D7FC = 0x809F0F28; // type:func +func_8086D80C = 0x809F0F3C; // type:func +func_8086D86C = 0x809F0F9C; // type:func +func_8086D888 = 0x809F0FBC; // type:func +func_8086D8BC = 0x809F0FF4; // type:func +func_8086D8CC = 0x809F1008; // type:func +func_8086D944 = 0x809F1080; // type:func +func_8086D95C = 0x809F109C; // type:func +func_8086D9F8 = 0x809F113C; // type:func +func_8086DA1C = 0x809F1164; // type:func +func_8086DAB4 = 0x809F1200; // type:func +func_8086DAC4 = 0x809F1214; // type:func +func_8086DB24 = 0x809F1274; // type:func +func_8086DB40 = 0x809F1294; // type:func +func_8086DB4C = 0x809F12A4; // type:func +func_8086DB68 = 0x809F12C4; // type:func +func_8086DC30 = 0x809F138C; // type:func +func_8086DC48 = 0x809F13A8; // type:func +func_8086DCCC = 0x809F142C; // type:func +func_8086DCE8 = 0x809F144C; // type:func +func_8086DDA8 = 0x809F150C; // type:func +func_8086DDC0 = 0x809F1528; // type:func +BgBdanSwitch_Update = 0x809F15BC; // type:func +func_8086DF58 = 0x809F16C0; // type:func +BgBdanSwitch_Draw = 0x809F1730; // type:func +EnMa1_GetTextId = 0x809F1BC0; // type:func +EnMa1_UpdateTalkState = 0x809F1CA8; // type:func +EnMa1_ShouldSpawn = 0x809F1DF4; // type:func +EnMa1_UpdateEyes = 0x809F1F40; // type:func +EnMa1_ChangeAnim = 0x809F1FB8; // type:func +EnMa1_UpdateTracking = 0x809F2028; // type:func +EnMa1_UpdateSinging = 0x809F20A8; // type:func +EnMa1_Init = 0x809F2120; // type:func +EnMa1_Destroy = 0x809F2288; // type:func +EnMa1_Idle = 0x809F22C8; // type:func +EnMa1_GiveWeirdEgg = 0x809F23E0; // type:func +EnMa1_FinishGivingWeirdEgg = 0x809F2440; // type:func +EnMa1_IdleTeachSong = 0x809F2488; // type:func +EnMa1_StartTeachSong = 0x809F25B4; // type:func +EnMa1_TeachSong = 0x809F2638; // type:func +EnMa1_WaitForPlayback = 0x809F26A0; // type:func +EnMa1_DoNothing = 0x809F2718; // type:func +EnMa1_Update = 0x809F2728; // type:func +EnMa1_OverrideLimbDraw = 0x809F2814; // type:func +EnMa1_PostLimbDraw = 0x809F29A4; // type:func +EnMa1_Draw = 0x809F2A00; // type:func +BossGanonEff_SpawnWindowShard = 0x809F2EA0; // type:func +BossGanonEff_SpawnSparkle = 0x809F2FE0; // type:func +BossGanonEff_SpawnLightRay = 0x809F30DC; // type:func +BossGanonEff_SpawnShock = 0x809F3220; // type:func +BossGanonEff_SpawnLightning = 0x809F32EC; // type:func +BossGanonEff_SpawnDustDark = 0x809F3390; // type:func +BossGanonEff_SpawnDustLight = 0x809F3484; // type:func +BossGanonEff_SpawnShockwave = 0x809F3568; // type:func +BossGanonEff_SpawnBlackDot = 0x809F3660; // type:func +BossGanon_SetColliderPos = 0x809F371C; // type:func +BossGanon_SetAnimationObject = 0x809F3760; // type:func +BossGanon_Init = 0x809F37D0; // type:func +BossGanon_Destroy = 0x809F3D74; // type:func +BossGanon_SetupIntroCutscene = 0x809F3DD8; // type:func +BossGanon_SetIntroCsCamera = 0x809F3EBC; // type:func +BossGanon_IntroCutscene = 0x809F3F5C; // type:func +BossGanon_SetupDeathCutscene = 0x809F565C; // type:func +BossGanon_SetupTowerCutscene = 0x809F5740; // type:func +BossGanon_ShatterWindows = 0x809F5844; // type:func +BossGanon_DeathAndTowerCutscene = 0x809F5988; // type:func +BossGanon_SetupPoundFloor = 0x809F7330; // type:func +BossGanon_PoundFloor = 0x809F736C; // type:func +BossGanon_SetupChargeBigMagic = 0x809F78C0; // type:func +BossGanon_ChargeBigMagic = 0x809F7930; // type:func +BossGanon_SetupWait = 0x809F8138; // type:func +BossGanon_Wait = 0x809F81C0; // type:func +BossGanon_SetupChargeLightBall = 0x809F850C; // type:func +BossGanon_ChargeLightBall = 0x809F857C; // type:func +BossGanon_SetupPlayTennis = 0x809F8730; // type:func +BossGanon_PlayTennis = 0x809F8798; // type:func +BossGanon_SetupBlock = 0x809F8A68; // type:func +BossGanon_Block = 0x809F8B20; // type:func +BossGanon_SetupHitByLightBall = 0x809F8CB0; // type:func +BossGanon_HitByLightBall = 0x809F8DA4; // type:func +BossGanon_SetupVulnerable = 0x809F8FFC; // type:func +BossGanon_Vulnerable = 0x809F91CC; // type:func +BossGanon_SetupDamaged = 0x809F9738; // type:func +BossGanon_Damaged = 0x809F97A0; // type:func +BossGanon_UpdateDamage = 0x809F9860; // type:func +BossGanon_Update = 0x809F9C28; // type:func +BossGanon_OverrideLimbDraw = 0x809FAD90; // type:func +BossGanon_PostLimbDraw = 0x809FAFD0; // type:func +BossGanon_InitRand = 0x809FB32C; // type:func +BossGanon_RandZeroOne = 0x809FB34C; // type:func +BossGanon_DrawShock = 0x809FB474; // type:func +BossGanon_DrawHandLightBall = 0x809FB820; // type:func +BossGanon_DrawBigMagicCharge = 0x809FBA74; // type:func +BossGanon_DrawTriforce = 0x809FC104; // type:func +BossGanon_DrawDarkVortex = 0x809FC4C8; // type:func +func_808E0254 = 0x809FC720; // type:func +BossGanon_GenShadowTexture = 0x809FCBC8; // type:func +BossGanon_DrawShadowTexture = 0x809FCF08; // type:func +BossGanon_Draw = 0x809FD184; // type:func +BossGanon_CheckFallingPlatforms = 0x809FD3CC; // type:func +BossGanon_LightBall_Update = 0x809FD4B4; // type:func +BossGanon_LightBall_Draw = 0x809FDFD4; // type:func +func_808E1EB4 = 0x809FE2E8; // type:func +func_808E229C = 0x809FE6D8; // type:func +func_808E2544 = 0x809FE948; // type:func +func_808E324C = 0x809FF65C; // type:func +BossGanon_UpdateEffects = 0x809FF930; // type:func +BossGanon_DrawEffects = 0x80A00158; // type:func +BossSst_Init = 0x80A18CD0; // type:func +BossSst_Destroy = 0x80A19158; // type:func +BossSst_HeadSetupLurk = 0x80A191A4; // type:func +BossSst_HeadLurk = 0x80A191D8; // type:func +BossSst_HeadSetupIntro = 0x80A19214; // type:func +BossSst_HeadIntro = 0x80A19360; // type:func +BossSst_HeadSetupWait = 0x80A1A178; // type:func +BossSst_HeadWait = 0x80A1A1C8; // type:func +BossSst_HeadSetupNeutral = 0x80A1A244; // type:func +BossSst_HeadNeutral = 0x80A1A264; // type:func +BossSst_HeadSetupDamagedHand = 0x80A1A408; // type:func +BossSst_HeadDamagedHand = 0x80A1A470; // type:func +BossSst_HeadSetupReadyCharge = 0x80A1A568; // type:func +BossSst_HeadReadyCharge = 0x80A1A5C0; // type:func +BossSst_HeadSetupCharge = 0x80A1A664; // type:func +BossSst_HeadCharge = 0x80A1A720; // type:func +BossSst_HeadSetupEndCharge = 0x80A1A980; // type:func +BossSst_HeadEndCharge = 0x80A1AA04; // type:func +BossSst_HeadSetupFrozenHand = 0x80A1AA74; // type:func +BossSst_HeadFrozenHand = 0x80A1AAC8; // type:func +BossSst_HeadSetupUnfreezeHand = 0x80A1AB10; // type:func +BossSst_HeadUnfreezeHand = 0x80A1AB5C; // type:func +BossSst_HeadSetupStunned = 0x80A1AB98; // type:func +BossSst_HeadStunned = 0x80A1AC38; // type:func +BossSst_HeadSetupVulnerable = 0x80A1AEBC; // type:func +BossSst_HeadVulnerable = 0x80A1AF5C; // type:func +BossSst_HeadSetupDamage = 0x80A1B05C; // type:func +BossSst_HeadDamage = 0x80A1B12C; // type:func +BossSst_HeadSetupRecover = 0x80A1B17C; // type:func +BossSst_HeadRecover = 0x80A1B208; // type:func +BossSst_SetCameraTargets = 0x80A1B39C; // type:func +BossSst_UpdateDeathCamera = 0x80A1B4C8; // type:func +BossSst_HeadSetupDeath = 0x80A1B654; // type:func +BossSst_HeadDeath = 0x80A1B7E8; // type:func +BossSst_HeadSetupThrash = 0x80A1BA38; // type:func +BossSst_HeadThrash = 0x80A1BAA0; // type:func +BossSst_HeadSetupDarken = 0x80A1BB1C; // type:func +BossSst_HeadDarken = 0x80A1BB64; // type:func +BossSst_HeadSetupFall = 0x80A1BD8C; // type:func +BossSst_HeadFall = 0x80A1BE24; // type:func +BossSst_HeadSetupMelt = 0x80A1BEC0; // type:func +BossSst_HeadMelt = 0x80A1BF10; // type:func +BossSst_HeadSetupFinish = 0x80A1BFC8; // type:func +BossSst_HeadFinish = 0x80A1C024; // type:func +BossSst_HandSetupWait = 0x80A1C31C; // type:func +BossSst_HandWait = 0x80A1C398; // type:func +BossSst_HandSetupDownbeat = 0x80A1C508; // type:func +BossSst_HandDownbeat = 0x80A1C57C; // type:func +BossSst_HandSetupDownbeatEnd = 0x80A1C6CC; // type:func +BossSst_HandDownbeatEnd = 0x80A1C728; // type:func +BossSst_HandSetupOffbeat = 0x80A1C81C; // type:func +BossSst_HandOffbeat = 0x80A1C890; // type:func +BossSst_HandSetupOffbeatEnd = 0x80A1C970; // type:func +BossSst_HandOffbeatEnd = 0x80A1C9BC; // type:func +BossSst_HandSetupEndSlam = 0x80A1CB00; // type:func +BossSst_HandEndSlam = 0x80A1CB74; // type:func +BossSst_HandSetupRetreat = 0x80A1CBB0; // type:func +BossSst_HandRetreat = 0x80A1CC58; // type:func +BossSst_HandSetupReadySlam = 0x80A1CE84; // type:func +BossSst_HandReadySlam = 0x80A1CEF0; // type:func +BossSst_HandSetupSlam = 0x80A1CFE0; // type:func +BossSst_HandSlam = 0x80A1D070; // type:func +BossSst_HandSetupReadySweep = 0x80A1D254; // type:func +BossSst_HandReadySweep = 0x80A1D2FC; // type:func +BossSst_HandSetupSweep = 0x80A1D420; // type:func +BossSst_HandSweep = 0x80A1D4AC; // type:func +BossSst_HandSetupReadyPunch = 0x80A1D6BC; // type:func +BossSst_HandReadyPunch = 0x80A1D724; // type:func +BossSst_HandSetupPunch = 0x80A1D780; // type:func +BossSst_HandPunch = 0x80A1D808; // type:func +BossSst_HandSetupReadyClap = 0x80A1D94C; // type:func +BossSst_HandReadyClap = 0x80A1DA3C; // type:func +BossSst_HandSetupClap = 0x80A1DC2C; // type:func +BossSst_HandClap = 0x80A1DC9C; // type:func +BossSst_HandSetupEndClap = 0x80A1DEC8; // type:func +BossSst_HandEndClap = 0x80A1DF34; // type:func +BossSst_HandSetupReadyGrab = 0x80A1DFD8; // type:func +BossSst_HandReadyGrab = 0x80A1E05C; // type:func +BossSst_HandSetupGrab = 0x80A1E104; // type:func +BossSst_HandGrab = 0x80A1E190; // type:func +BossSst_HandSetupCrush = 0x80A1E43C; // type:func +BossSst_HandCrush = 0x80A1E494; // type:func +BossSst_HandSetupEndCrush = 0x80A1E5AC; // type:func +BossSst_HandEndCrush = 0x80A1E5FC; // type:func +BossSst_HandSetupSwing = 0x80A1E638; // type:func +BossSst_HandSwing = 0x80A1E6C0; // type:func +BossSst_HandSetupReel = 0x80A1E9F4; // type:func +BossSst_HandReel = 0x80A1EA8C; // type:func +BossSst_HandSetupReadyShake = 0x80A1EBE4; // type:func +BossSst_HandReadyShake = 0x80A1EC34; // type:func +BossSst_HandSetupShake = 0x80A1ED9C; // type:func +BossSst_HandShake = 0x80A1EDB8; // type:func +BossSst_HandSetupReadyCharge = 0x80A1EF4C; // type:func +BossSst_HandReadyCharge = 0x80A1EFA0; // type:func +BossSst_HandSetupStunned = 0x80A1F118; // type:func +BossSst_HandStunned = 0x80A1F1C4; // type:func +BossSst_HandSetupDamage = 0x80A1F320; // type:func +BossSst_HandDamage = 0x80A1F37C; // type:func +BossSst_HandSetupThrash = 0x80A1F454; // type:func +BossSst_HandThrash = 0x80A1F4F0; // type:func +BossSst_HandSetupDarken = 0x80A1F6E4; // type:func +BossSst_HandDarken = 0x80A1F734; // type:func +BossSst_HandSetupFall = 0x80A1F7A8; // type:func +BossSst_HandFall = 0x80A1F7F8; // type:func +BossSst_HandSetupMelt = 0x80A1F87C; // type:func +BossSst_HandMelt = 0x80A1F8B8; // type:func +BossSst_HandSetupFinish = 0x80A1F930; // type:func +BossSst_HandFinish = 0x80A1F95C; // type:func +BossSst_HandSetupRecover = 0x80A1F988; // type:func +BossSst_HandRecover = 0x80A1F9DC; // type:func +BossSst_HandSetupFrozen = 0x80A1FA74; // type:func +BossSst_HandFrozen = 0x80A1FB40; // type:func +BossSst_HandSetupReadyBreakIce = 0x80A1FCA0; // type:func +BossSst_HandReadyBreakIce = 0x80A1FD54; // type:func +BossSst_HandSetupBreakIce = 0x80A1FE70; // type:func +BossSst_HandBreakIce = 0x80A1FE98; // type:func +BossSst_HandGrabPlayer = 0x80A2002C; // type:func +BossSst_HandReleasePlayer = 0x80A200CC; // type:func +BossSst_MoveAround = 0x80A20150; // type:func +BossSst_HandSelectAttack = 0x80A202DC; // type:func +BossSst_HandSetDamage = 0x80A203D8; // type:func +BossSst_HandSetInvulnerable = 0x80A20444; // type:func +BossSst_HeadSfx = 0x80A20484; // type:func +BossSst_HandCollisionCheck = 0x80A204B0; // type:func +BossSst_HeadCollisionCheck = 0x80A2063C; // type:func +BossSst_UpdateHand = 0x80A20788; // type:func +BossSst_UpdateHead = 0x80A20A98; // type:func +BossSst_OverrideHandDraw = 0x80A20D08; // type:func +BossSst_PostHandDraw = 0x80A20D58; // type:func +BossSst_OverrideHandTrailDraw = 0x80A20D94; // type:func +BossSst_DrawHand = 0x80A20DD8; // type:func +BossSst_OverrideHeadDraw = 0x80A21184; // type:func +BossSst_PostHeadDraw = 0x80A21988; // type:func +BossSst_DrawHead = 0x80A21A30; // type:func +BossSst_SpawnHeadShadow = 0x80A21E80; // type:func +BossSst_SpawnHandShadow = 0x80A21FAC; // type:func +BossSst_SpawnShockwave = 0x80A22060; // type:func +BossSst_SpawnIceCrystal = 0x80A2213C; // type:func +BossSst_SpawnIceShard = 0x80A223F8; // type:func +BossSst_IceShatter = 0x80A2264C; // type:func +BossSst_UpdateEffects = 0x80A22818; // type:func +BossSst_DrawEffects = 0x80A22ABC; // type:func +EnNy_Init = 0x80A252A0; // type:func +EnNy_Destroy = 0x80A253DC; // type:func +func_80ABCD40 = 0x80A25408; // type:func +func_80ABCD84 = 0x80A25450; // type:func +func_80ABCD94 = 0x80A25464; // type:func +func_80ABCDAC = 0x80A25480; // type:func +func_80ABCDBC = 0x80A25494; // type:func +EnNy_SetupTurnToStone = 0x80A254D8; // type:func +func_80ABCE38 = 0x80A25514; // type:func +func_80ABCE50 = 0x80A25530; // type:func +func_80ABCE90 = 0x80A25570; // type:func +func_80ABCEEC = 0x80A255CC; // type:func +EnNy_Move = 0x80A2562C; // type:func +EnNy_TurnToStone = 0x80A25740; // type:func +func_80ABD11C = 0x80A25800; // type:func +EnNy_CollisionCheck = 0x80A25874; // type:func +func_80ABD3B8 = 0x80A25A9C; // type:func +EnNy_Update = 0x80A25B84; // type:func +EnNy_SetupDie = 0x80A25E10; // type:func +EnNy_Die = 0x80A26094; // type:func +EnNy_UpdateDeath = 0x80A262A0; // type:func +EnNy_UpdateUnused = 0x80A262E0; // type:func +EnNy_Draw = 0x80A26410; // type:func +EnNy_DrawDeathEffect = 0x80A266E4; // type:func +EnFr_OrientUnderwater = 0x80A26BE0; // type:func +EnFr_Init = 0x80A26CF4; // type:func +EnFr_DrawIdle = 0x80A26DAC; // type:func +EnFr_DrawActive = 0x80A26DD4; // type:func +EnFr_Update = 0x80A26DE8; // type:func +EnFr_Destroy = 0x80A270E0; // type:func +EnFr_IsDivingIntoWater = 0x80A27114; // type:func +EnFr_DivingIntoWater = 0x80A27198; // type:func +EnFr_IsBelowLogSpot = 0x80A27244; // type:func +EnFr_IsAboveAndWithin30DistXZ = 0x80A272A0; // type:func +EnFr_DecrementBlinkTimer = 0x80A2731C; // type:func +EnFr_DecrementBlinkTimerUpdate = 0x80A27344; // type:func +EnFr_SetupJumpingOutOfWater = 0x80A273D4; // type:func +EnFr_JumpingOutOfWater = 0x80A27474; // type:func +EnFr_OrientOnLogSpot = 0x80A27614; // type:func +EnFr_ChooseJumpFromLogSpot = 0x80A276D4; // type:func +EnFr_JumpingUp = 0x80A277E8; // type:func +EnFr_JumpingBackIntoWater = 0x80A27928; // type:func +EnFr_SetScaleActive = 0x80A27A80; // type:func +EnFr_ButterflyPath = 0x80A27B88; // type:func +EnFr_UpdateActive = 0x80A27CE4; // type:func +EnFr_SetupJumpingUp = 0x80A27DC8; // type:func +EnFr_Idle = 0x80A27E68; // type:func +EnFr_Activate = 0x80A27F48; // type:func +EnFr_ActivateCheckFrogSong = 0x80A27FB0; // type:func +func_80A1BE98 = 0x80A28054; // type:func +EnFr_ListeningToOcarinaNotes = 0x80A280CC; // type:func +EnFr_ChildSong = 0x80A28218; // type:func +EnFr_ChildSongFirstTime = 0x80A28350; // type:func +EnFr_TalkBeforeFrogSong = 0x80A283A8; // type:func +EnFr_CheckOcarinaInputFrogSong = 0x80A28410; // type:func +EnFr_DeactivateButterfly = 0x80A2850C; // type:func +EnFr_GetNextNoteFrogSong = 0x80A28554; // type:func +EnFr_SetupFrogSong = 0x80A285D0; // type:func +EnFr_IsFrogSongComplete = 0x80A28644; // type:func +EnFr_OcarinaMistake = 0x80A286F4; // type:func +EnFr_ContinueFrogSong = 0x80A28750; // type:func +EnFr_SetupReward = 0x80A288F4; // type:func +EnFr_PrintTextBox = 0x80A28970; // type:func +EnFr_TalkBeforeReward = 0x80A289B0; // type:func +EnFr_SetReward = 0x80A28A18; // type:func +EnFr_Deactivate = 0x80A28B2C; // type:func +EnFr_GiveReward = 0x80A28C2C; // type:func +EnFr_SetIdle = 0x80A28C8C; // type:func +EnFr_UpdateIdle = 0x80A28CE0; // type:func +EnFr_OverrideLimbDraw = 0x80A28D0C; // type:func +EnFr_PostLimbDraw = 0x80A28D38; // type:func +EnFr_Draw = 0x80A28DF0; // type:func +ItemShield_SetupAction = 0x80A29670; // type:func +ItemShield_Init = 0x80A2967C; // type:func +ItemShield_Destroy = 0x80A297E4; // type:func +func_80B86AC8 = 0x80A29810; // type:func +func_80B86BC8 = 0x80A29914; // type:func +func_80B86CA8 = 0x80A299FC; // type:func +func_80B86F68 = 0x80A29CC0; // type:func +ItemShield_Update = 0x80A29DCC; // type:func +ItemShield_Draw = 0x80A29DF0; // type:func +BgIceShelter_InitColliders = 0x80A2A080; // type:func +BgIceShelter_InitDynaPoly = 0x80A2A1B4; // type:func +BgIceShelter_RotateY = 0x80A2A20C; // type:func +BgIceShelter_Init = 0x80A2A28C; // type:func +BgIceShelter_Destroy = 0x80A2A408; // type:func +BgIceShelter_SpawnSteamAround = 0x80A2A494; // type:func +BgIceShelter_SpawnSteamAlong = 0x80A2A708; // type:func +BgIceShelter_SetupIdle = 0x80A2A96C; // type:func +BgIceShelter_Idle = 0x80A2A988; // type:func +BgIceShelter_SetupMelt = 0x80A2AAC8; // type:func +BgIceShelter_Melt = 0x80A2AAE4; // type:func +BgIceShelter_Update = 0x80A2ACA8; // type:func +BgIceShelter_Draw = 0x80A2ACCC; // type:func +EnIceHono_XZDistanceSquared = 0x80A2B2C0; // type:func +EnIceHono_InitCapturableFlame = 0x80A2B2F0; // type:func +EnIceHono_InitDroppedFlame = 0x80A2B394; // type:func +EnIceHono_InitSmallFlame = 0x80A2B49C; // type:func +EnIceHono_Init = 0x80A2B504; // type:func +EnIceHono_Destroy = 0x80A2B664; // type:func +EnIceHono_InBottleRange = 0x80A2B6BC; // type:func +EnIceHono_SetupActionCapturableFlame = 0x80A2B7AC; // type:func +EnIceHono_CapturableFlame = 0x80A2B7D4; // type:func +EnIceHono_SetupActionDroppedFlame = 0x80A2B884; // type:func +EnIceHono_DropFlame = 0x80A2B8A8; // type:func +EnIceHono_SetupActionSpreadFlames = 0x80A2BA68; // type:func +EnIceHono_SpreadFlames = 0x80A2BA8C; // type:func +EnIceHono_SetupActionSmallFlame = 0x80A2BCE8; // type:func +EnIceHono_SmallFlameMove = 0x80A2BDBC; // type:func +EnIceHono_Update = 0x80A2BF14; // type:func +EnIceHono_Draw = 0x80A2C0A8; // type:func +ItemOcarina_SetupAction = 0x80A2C4B0; // type:func +ItemOcarina_Init = 0x80A2C4BC; // type:func +ItemOcarina_Destroy = 0x80A2C644; // type:func +ItemOcarina_Fly = 0x80A2C654; // type:func +ItemOcarina_GetThrown = 0x80A2C800; // type:func +func_80B864EC = 0x80A2C858; // type:func +func_80B865E0 = 0x80A2C94C; // type:func +ItemOcarina_DoNothing = 0x80A2C9AC; // type:func +ItemOcarina_StartSoTCutscene = 0x80A2C9BC; // type:func +ItemOcarina_WaitInWater = 0x80A2CA30; // type:func +ItemOcarina_Update = 0x80A2CB04; // type:func +ItemOcarina_Draw = 0x80A2CB28; // type:func +MagicDark_Init = 0x80A2CC80; // type:func +MagicDark_Destroy = 0x80A2CD64; // type:func +MagicDark_DiamondUpdate = 0x80A2CD9C; // type:func +MagicDark_DimLighting = 0x80A2CFE4; // type:func +MagicDark_OrbUpdate = 0x80A2D130; // type:func +MagicDark_DiamondDraw = 0x80A2D2D8; // type:func +MagicDark_OrbDraw = 0x80A2D540; // type:func +Demo6K_SetupAction = 0x80A2E4D0; // type:func +Demo6K_Init = 0x80A2E4DC; // type:func +Demo6K_Destroy = 0x80A2E8C4; // type:func +Demo6K_WaitForObject = 0x80A2E8F8; // type:func +func_80966E04 = 0x80A2E950; // type:func +func_80966E98 = 0x80A2E9E8; // type:func +func_80966F84 = 0x80A2EADC; // type:func +func_809670AC = 0x80A2EC04; // type:func +func_8096712C = 0x80A2EC84; // type:func +func_80967244 = 0x80A2ED9C; // type:func +func_80967410 = 0x80A2EF68; // type:func +func_809674E0 = 0x80A2F038; // type:func +func_809676A4 = 0x80A2F1FC; // type:func +func_8096784C = 0x80A2F3A4; // type:func +func_80967A04 = 0x80A2F560; // type:func +func_80967AD0 = 0x80A2F62C; // type:func +func_80967BF8 = 0x80A2F758; // type:func +func_80967DBC = 0x80A2F91C; // type:func +func_80967F10 = 0x80A2FA68; // type:func +Demo6K_Update = 0x80A2FB34; // type:func +func_80967FFC = 0x80A2FB58; // type:func +func_80968298 = 0x80A2FDB4; // type:func +func_8096865C = 0x80A30138; // type:func +func_809688C4 = 0x80A30358; // type:func +func_80968B70 = 0x80A305D4; // type:func +func_80968FB0 = 0x80A309D4; // type:func +func_809691BC = 0x80A30B98; // type:func +EnAnubiceTag_Init = 0x80A31230; // type:func +EnAnubiceTag_Destroy = 0x80A31280; // type:func +EnAnubiceTag_SpawnAnubis = 0x80A31290; // type:func +EnAnubiceTag_ManageAnubis = 0x80A31308; // type:func +EnAnubiceTag_Update = 0x80A3146C; // type:func +EnAnubiceTag_Draw = 0x80A31490; // type:func +BgHakaGate_Init = 0x80A31500; // type:func +BgHakaGate_Destroy = 0x80A317D0; // type:func +BgHakaGate_DoNothing = 0x80A3182C; // type:func +BgHakaGate_StatueInactive = 0x80A3183C; // type:func +BgHakaGate_StatueIdle = 0x80A31878; // type:func +BgHakaGate_StatueTurn = 0x80A31990; // type:func +BgHakaGate_FloorClosed = 0x80A31B74; // type:func +BgHakaGate_FloorOpen = 0x80A31CFC; // type:func +BgHakaGate_GateWait = 0x80A31D88; // type:func +BgHakaGate_GateOpen = 0x80A31DD8; // type:func +BgHakaGate_SkullOfTruth = 0x80A31E68; // type:func +BgHakaGate_FalseSkull = 0x80A31EC4; // type:func +BgHakaGate_Update = 0x80A31F44; // type:func +BgHakaGate_DrawFlame = 0x80A31F8C; // type:func +BgHakaGate_Draw = 0x80A32164; // type:func +BgSpot15Saku_Init = 0x80A325A0; // type:func +BgSpot15Saku_Destroy = 0x80A32654; // type:func +func_808B4930 = 0x80A32688; // type:func +func_808B4978 = 0x80A326D0; // type:func +func_808B4A04 = 0x80A3275C; // type:func +BgSpot15Saku_Update = 0x80A3278C; // type:func +BgSpot15Saku_Draw = 0x80A327C0; // type:func +BgJyaGoroiwa_UpdateCollider = 0x80A328E0; // type:func +BgJyaGoroiwa_InitCollider = 0x80A32938; // type:func +BgJyaGoroiwa_UpdateRotation = 0x80A329A0; // type:func +BgJyaGoroiwa_Init = 0x80A329E0; // type:func +BgJyaGoroiwa_Destroy = 0x80A32A74; // type:func +BgJyaGoroiwa_SetupMove = 0x80A32AA0; // type:func +BgJyaGoroiwa_Move = 0x80A32AD0; // type:func +BgJyaGoroiwa_SetupWait = 0x80A32D64; // type:func +BgJyaGoroiwa_Wait = 0x80A32D7C; // type:func +BgJyaGoroiwa_Update = 0x80A32DCC; // type:func +BgJyaGoroiwa_Draw = 0x80A32EB8; // type:func +BgJyaZurerukabe_InitDynaPoly = 0x80A33060; // type:func +func_8089B4C8 = 0x80A330B8; // type:func +BgJyaZurerukabe_Init = 0x80A33254; // type:func +BgJyaZurerukabe_Destroy = 0x80A33314; // type:func +func_8089B7B4 = 0x80A33360; // type:func +func_8089B7C4 = 0x80A33374; // type:func +func_8089B80C = 0x80A333C0; // type:func +func_8089B870 = 0x80A33428; // type:func +BgJyaZurerukabe_Update = 0x80A334F0; // type:func +BgJyaZurerukabe_Draw = 0x80A33548; // type:func +func_808958F0 = 0x80A33710; // type:func +BgJyaCobra_InitDynapoly = 0x80A33764; // type:func +BgJyaCobra_SpawnRay = 0x80A337BC; // type:func +func_80895A70 = 0x80A33824; // type:func +func_80895BEC = 0x80A339A4; // type:func +func_80895C74 = 0x80A33A28; // type:func +BgJyaCobra_UpdateShadowFromSide = 0x80A33CA8; // type:func +BgJyaCobra_UpdateShadowFromTop = 0x80A342D0; // type:func +BgJyaCobra_Init = 0x80A3458C; // type:func +BgJyaCobra_Destroy = 0x80A34678; // type:func +func_80896918 = 0x80A346AC; // type:func +func_80896950 = 0x80A346E8; // type:func +func_808969F8 = 0x80A34790; // type:func +func_80896ABC = 0x80A34858; // type:func +BgJyaCobra_Update = 0x80A349EC; // type:func +func_80896CB4 = 0x80A34A60; // type:func +func_80896D78 = 0x80A34AE8; // type:func +BgJyaCobra_DrawShadow = 0x80A34C14; // type:func +BgJyaCobra_Draw = 0x80A34E98; // type:func +BgJyaKanaami_InitDynaPoly = 0x80A35450; // type:func +BgJyaKanaami_Init = 0x80A354A8; // type:func +BgJyaKanaami_Destroy = 0x80A35528; // type:func +func_80899880 = 0x80A3555C; // type:func +func_80899894 = 0x80A35574; // type:func +func_8089993C = 0x80A3561C; // type:func +func_80899950 = 0x80A35634; // type:func +func_80899A08 = 0x80A356EC; // type:func +BgJyaKanaami_Update = 0x80A35700; // type:func +BgJyaKanaami_Draw = 0x80A35734; // type:func +Fishing_SetColliderElement = 0x80A35800; // type:func +Fishing_SeedRand = 0x80A35890; // type:func +Fishing_RandZeroOne = 0x80A358B0; // type:func +Fishing_SmoothStepToS = 0x80A35A68; // type:func +Fishing_SpawnRipple = 0x80A35AF4; // type:func +Fishing_SpawnDustSplash = 0x80A35C68; // type:func +Fishing_SpawnWaterDust = 0x80A35DB8; // type:func +Fishing_SpawnBubble = 0x80A35EF8; // type:func +Fishing_SpawnRainDrop = 0x80A3603C; // type:func +Fishing_InitPondProps = 0x80A36138; // type:func +Fishing_Init = 0x80A36424; // type:func +Fishing_Destroy = 0x80A36D34; // type:func +Fishing_UpdateEffects = 0x80A36DA0; // type:func +Fishing_DrawEffects = 0x80A3749C; // type:func +Fishing_DrawStreamSplash = 0x80A38014; // type:func +Fishing_IsAboveCounter = 0x80A38198; // type:func +Fishing_UpdateLine = 0x80A38258; // type:func +Fishing_UpdateLinePos = 0x80A387C4; // type:func +Fishing_DrawLureHook = 0x80A38974; // type:func +Fishing_UpdateSinkingLure = 0x80A38E20; // type:func +Fishing_DrawSinkingLure = 0x80A39110; // type:func +Fishing_DrawLureAndLine = 0x80A3940C; // type:func +Fishing_DrawRod = 0x80A39C70; // type:func +Fishing_UpdateLure = 0x80A3A564; // type:func +Fishing_SplashBySize = 0x80A3C0C8; // type:func +Fishing_SplashBySize2 = 0x80A3C368; // type:func +func_80B70ED4 = 0x80A3C550; // type:func +Fishing_FishLeapSfx = 0x80A3C8C4; // type:func +Fishing_HandleAquariumDialog = 0x80A3C984; // type:func +Fishing_UpdateFish = 0x80A3CADC; // type:func +Fishing_FishOverrideLimbDraw = 0x80A40904; // type:func +Fishing_FishPostLimbDraw = 0x80A409E0; // type:func +Fishing_LoachOverrideLimbDraw = 0x80A40A10; // type:func +Fishing_LoachPostLimbDraw = 0x80A40A74; // type:func +Fishing_DrawFish = 0x80A40AA4; // type:func +Fishing_HandleReedContact = 0x80A40CCC; // type:func +Fishing_HandleLilyPadContact = 0x80A40D8C; // type:func +Fishing_UpdatePondProps = 0x80A40E7C; // type:func +Fishing_DrawPondProps = 0x80A41130; // type:func +Fishing_UpdateGroupFishes = 0x80A41614; // type:func +Fishing_DrawGroupFishes = 0x80A41F34; // type:func +Fishing_HandleOwnerDialog = 0x80A42148; // type:func +Fishing_UpdateOwner = 0x80A42CBC; // type:func +Fishing_OwnerOverrideLimbDraw = 0x80A4469C; // type:func +Fishing_OwnerPostLimbDraw = 0x80A446C8; // type:func +Fishing_DrawOwner = 0x80A447A0; // type:func +ObjOshihiki_InitDynapoly = 0x80A4ED40; // type:func +ObjOshihiki_RotateXZ = 0x80A4ED98; // type:func +ObjOshihiki_StrongEnough = 0x80A4EDEC; // type:func +ObjOshihiki_ResetFloors = 0x80A4EE70; // type:func +ObjOshihiki_GetBlockUnder = 0x80A4EE9C; // type:func +ObjOshihiki_UpdateInitPos = 0x80A4EF2C; // type:func +ObjOshihiki_NoSwitchPress = 0x80A4F05C; // type:func +ObjOshihiki_CheckType = 0x80A4F128; // type:func +ObjOshihiki_SetScale = 0x80A4F178; // type:func +ObjOshihiki_SetTexture = 0x80A4F1B0; // type:func +ObjOshihiki_SetColor = 0x80A4F210; // type:func +ObjOshihiki_Init = 0x80A4F2B8; // type:func +ObjOshihiki_Destroy = 0x80A4F3E0; // type:func +ObjOshihiki_SetFloors = 0x80A4F414; // type:func +ObjOshihiki_GetHighestFloor = 0x80A4F574; // type:func +ObjOshihiki_SetGround = 0x80A4F6C0; // type:func +ObjOshihiki_CheckFloor = 0x80A4F718; // type:func +ObjOshihiki_CheckGround = 0x80A4F770; // type:func +ObjOshihiki_CheckWall = 0x80A4F7E8; // type:func +ObjOshihiki_MoveWithBlockUnder = 0x80A4FA3C; // type:func +ObjOshihiki_SetupOnScene = 0x80A4FB38; // type:func +ObjOshihiki_OnScene = 0x80A4FB70; // type:func +ObjOshihiki_SetupOnActor = 0x80A4FC5C; // type:func +ObjOshihiki_OnActor = 0x80A4FC9C; // type:func +ObjOshihiki_SetupPush = 0x80A4FE94; // type:func +ObjOshihiki_Push = 0x80A4FEC0; // type:func +ObjOshihiki_SetupFall = 0x80A500DC; // type:func +ObjOshihiki_Fall = 0x80A50134; // type:func +ObjOshihiki_Update = 0x80A50238; // type:func +ObjOshihiki_Draw = 0x80A502C0; // type:func +BgGateShutter_Init = 0x80A507F0; // type:func +BgGateShutter_Destroy = 0x80A508D8; // type:func +func_8087828C = 0x80A5090C; // type:func +func_80878300 = 0x80A50980; // type:func +func_808783AC = 0x80A50A30; // type:func +func_808783D4 = 0x80A50A58; // type:func +BgGateShutter_Update = 0x80A50B14; // type:func +BgGateShutter_Draw = 0x80A50B48; // type:func +EffDust_SetupAction = 0x80A50C80; // type:func +EffDust_SetupDraw = 0x80A50C8C; // type:func +EffDust_InitPosAndDistance = 0x80A50C98; // type:func +EffDust_Init = 0x80A50D10; // type:func +EffDust_Destroy = 0x80A50ED0; // type:func +EffDust_UpdateFunc_8099DB28 = 0x80A50EE0; // type:func +EffDust_UpdateFunc_8099DD74 = 0x80A5112C; // type:func +EffDust_UpdateFunc_8099DFC0 = 0x80A51378; // type:func +EffDust_Update = 0x80A5188C; // type:func +EffDust_DrawFunc_8099E4F4 = 0x80A518B0; // type:func +EffDust_DrawFunc_8099E784 = 0x80A51B04; // type:func +EffDust_Draw = 0x80A51E68; // type:func +BgSpot01Fusya_SetupAction = 0x80A52050; // type:func +BgSpot01Fusya_Init = 0x80A5205C; // type:func +BgSpot01Fusya_Destroy = 0x80A520D8; // type:func +func_808AAA50 = 0x80A520E8; // type:func +BgSpot01Fusya_Update = 0x80A521A8; // type:func +BgSpot01Fusya_Draw = 0x80A521CC; // type:func +BgSpot01Idohashira_PlayBreakSfx1 = 0x80A522F0; // type:func +BgSpot01Idohashira_PlayBreakSfx2 = 0x80A52318; // type:func +func_808AAD3C = 0x80A52350; // type:func +func_808AAE6C = 0x80A52488; // type:func +func_808AAF34 = 0x80A52554; // type:func +BgSpot01Idohashira_Destroy = 0x80A52718; // type:func +BgSpot01Idohashira_NotInCsMode = 0x80A5274C; // type:func +BgSpot01Idohashira_GetCue = 0x80A5276C; // type:func +func_808AB18C = 0x80A527B8; // type:func +func_808AB1DC = 0x80A5280C; // type:func +func_808AB29C = 0x80A528B0; // type:func +func_808AB3E8 = 0x80A529FC; // type:func +func_808AB3F8 = 0x80A52A10; // type:func +func_808AB414 = 0x80A52A30; // type:func +func_808AB444 = 0x80A52A5C; // type:func +func_808AB504 = 0x80A52B08; // type:func +func_808AB510 = 0x80A52B18; // type:func +func_808AB530 = 0x80A52B38; // type:func +func_808AB570 = 0x80A52B7C; // type:func +BgSpot01Idohashira_Update = 0x80A52B9C; // type:func +BgSpot01Idohashira_Init = 0x80A52BE4; // type:func +func_808AB700 = 0x80A52CFC; // type:func +BgSpot01Idohashira_Draw = 0x80A52D8C; // type:func +BgSpot01Idomizu_Init = 0x80A52EF0; // type:func +BgSpot01Idomizu_Destroy = 0x80A52F88; // type:func +BgSpot01Idomizu_UpdateWaterLevel = 0x80A52F98; // type:func +BgSpot01Idomizu_Update = 0x80A5304C; // type:func +BgSpot01Idomizu_Draw = 0x80A53070; // type:func +BgPoSyokudai_Init = 0x80A53210; // type:func +BgPoSyokudai_Destroy = 0x80A534B0; // type:func +BgPoSyokudai_Update = 0x80A53520; // type:func +BgPoSyokudai_Draw = 0x80A535A0; // type:func +BgGanonOtyuka_Init = 0x80A53B80; // type:func +BgGanonOtyuka_Destroy = 0x80A53C1C; // type:func +BgGanonOtyuka_WaitToFall = 0x80A53C50; // type:func +BgGanonOtyuka_Fall = 0x80A53EA0; // type:func +BgGanonOtyuka_DoNothing = 0x80A542E0; // type:func +BgGanonOtyuka_Update = 0x80A542F0; // type:func +BgGanonOtyuka_Draw = 0x80A54338; // type:func +func_808B3960 = 0x80A561C0; // type:func +BgSpot15Rrbox_RotatePoint = 0x80A56218; // type:func +func_808B3A34 = 0x80A5626C; // type:func +func_808B3A40 = 0x80A5627C; // type:func +func_808B3AAC = 0x80A562EC; // type:func +BgSpot15Rrbox_Init = 0x80A563D4; // type:func +BgSpot15Rrbox_Destroy = 0x80A564A4; // type:func +BgSpot15Rrbox_TrySnapToCheckedPoint = 0x80A564E0; // type:func +BgSpot15Rrbox_GetFloorHeight = 0x80A56620; // type:func +BgSpot15Rrbox_TrySnapToFloor = 0x80A567A0; // type:func +func_808B4010 = 0x80A56860; // type:func +func_808B4084 = 0x80A568D4; // type:func +func_808B40AC = 0x80A56900; // type:func +func_808B4178 = 0x80A569CC; // type:func +func_808B4194 = 0x80A569EC; // type:func +func_808B4380 = 0x80A56BD8; // type:func +func_808B43D0 = 0x80A56C28; // type:func +func_808B44B8 = 0x80A56CF4; // type:func +func_808B44CC = 0x80A56D0C; // type:func +BgSpot15Rrbox_Update = 0x80A56D30; // type:func +BgSpot15Rrbox_Draw = 0x80A56D9C; // type:func +BgUmaJump_Init = 0x80A56FA0; // type:func +BgUmaJump_Destroy = 0x80A5705C; // type:func +BgUmaJump_Update = 0x80A57090; // type:func +BgUmaJump_Draw = 0x80A570A0; // type:func +EnInsect_InitFlags = 0x80A57130; // type:func +EnInsect_XZDistanceSquared = 0x80A57154; // type:func +EnInsect_InBottleRange = 0x80A57184; // type:func +EnInsect_SetCrawlAnim = 0x80A57274; // type:func +EnInsect_TryFindNearbySoil = 0x80A572C0; // type:func +EnInsect_UpdateCrawlSfx = 0x80A57378; // type:func +EnInsect_Init = 0x80A5740C; // type:func +EnInsect_Destroy = 0x80A57658; // type:func +EnInsect_SetupSlowDown = 0x80A576C8; // type:func +EnInsect_SlowDown = 0x80A57718; // type:func +EnInsect_SetupCrawl = 0x80A578BC; // type:func +EnInsect_Crawl = 0x80A5790C; // type:func +EnInsect_SetupRunFromPlayer = 0x80A57B38; // type:func +EnInsect_RunFromPlayer = 0x80A57B88; // type:func +EnInsect_SetupCaught = 0x80A57D80; // type:func +EnInsect_Caught = 0x80A57DEC; // type:func +EnInsect_SetupDig = 0x80A57EE4; // type:func +EnInsect_Dig = 0x80A57F5C; // type:func +EnInsect_SetupWalkOnWater = 0x80A58180; // type:func +EnInsect_WalkOnWater = 0x80A581E0; // type:func +EnInsect_SetupDrown = 0x80A58514; // type:func +EnInsect_Drown = 0x80A5858C; // type:func +EnInsect_SetupDropped = 0x80A586BC; // type:func +EnInsect_Dropped = 0x80A58784; // type:func +EnInsect_Update = 0x80A58EB4; // type:func +EnInsect_Draw = 0x80A590FC; // type:func +EnButte_SelectFlightParams = 0x80A59650; // type:func +EnButte_ResetTransformationEffect = 0x80A596D4; // type:func +EnButte_UpdateTransformationEffect = 0x80A596F0; // type:func +EnButte_DrawTransformationEffect = 0x80A59728; // type:func +EnButte_Init = 0x80A59964; // type:func +EnButte_Destroy = 0x80A59AD8; // type:func +func_809CD56C = 0x80A59B04; // type:func +func_809CD634 = 0x80A59BCC; // type:func +EnButte_Turn = 0x80A59C94; // type:func +EnButte_SetupFlyAround = 0x80A59D30; // type:func +EnButte_FlyAround = 0x80A59D7C; // type:func +EnButte_SetupFollowLink = 0x80A5A160; // type:func +EnButte_FollowLink = 0x80A5A1AC; // type:func +EnButte_SetupTransformIntoFairy = 0x80A5A560; // type:func +EnButte_TransformIntoFairy = 0x80A5A5B0; // type:func +EnButte_SetupWaitToDie = 0x80A5A66C; // type:func +EnButte_WaitToDie = 0x80A5A68C; // type:func +EnButte_Update = 0x80A5A6BC; // type:func +EnButte_Draw = 0x80A5A7FC; // type:func +EnFish_XZDistanceSquared = 0x80A5AC20; // type:func +EnFish_SetInWaterAnimation = 0x80A5AC50; // type:func +EnFish_SetOutOfWaterAnimation = 0x80A5ACB4; // type:func +EnFish_BeginRespawn = 0x80A5AD18; // type:func +EnFish_SetCutsceneData = 0x80A5AD4C; // type:func +EnFish_ClearCutsceneData = 0x80A5ADE4; // type:func +EnFish_Init = 0x80A5AE0C; // type:func +EnFish_Destroy = 0x80A5AF50; // type:func +EnFish_SetYOffset = 0x80A5AF7C; // type:func +EnFish_InBottleRange = 0x80A5B034; // type:func +EnFish_CheckXZDistanceToPlayer = 0x80A5B124; // type:func +EnFish_Respawning_SetupSlowDown = 0x80A5B154; // type:func +EnFish_Respawning_SlowDown = 0x80A5B1AC; // type:func +EnFish_Respawning_SetupFollowChild = 0x80A5B2A0; // type:func +EnFish_Respawning_FollowChild = 0x80A5B2F8; // type:func +EnFish_Respawning_SetupFleePlayer = 0x80A5B48C; // type:func +EnFish_Respawning_FleePlayer = 0x80A5B4E4; // type:func +EnFish_Respawning_SetupApproachPlayer = 0x80A5B6D4; // type:func +EnFish_Respawning_ApproachPlayer = 0x80A5B72C; // type:func +EnFish_Dropped_SetupFall = 0x80A5B8F0; // type:func +EnFish_Dropped_Fall = 0x80A5B950; // type:func +EnFish_Dropped_SetupFlopOnGround = 0x80A5BA58; // type:func +EnFish_Dropped_FlopOnGround = 0x80A5BB9C; // type:func +EnFish_Dropped_SetupSwimAway = 0x80A5BD78; // type:func +EnFish_Dropped_SwimAway = 0x80A5BDEC; // type:func +EnFish_Unique_SetupSwimIdle = 0x80A5BFB4; // type:func +EnFish_Unique_SwimIdle = 0x80A5C00C; // type:func +EnFish_Cutscene_FlopOnGround = 0x80A5C234; // type:func +EnFish_Cutscene_WiggleFlyingThroughAir = 0x80A5C364; // type:func +EnFish_UpdateCutscene = 0x80A5C400; // type:func +EnFish_OrdinaryUpdate = 0x80A5C5C0; // type:func +EnFish_RespawningUpdate = 0x80A5C744; // type:func +EnFish_Update = 0x80A5C858; // type:func +EnFish_Draw = 0x80A5C904; // type:func +BgSpot08Iceblock_SetupAction = 0x80A5CD30; // type:func +BgSpot08Iceblock_InitDynaPoly = 0x80A5CD3C; // type:func +BgSpot08Iceblock_CheckParams = 0x80A5CD94; // type:func +BgSpot08Iceblock_Bobbing = 0x80A5CDF4; // type:func +BgSpot08Iceblock_SinkUnderPlayer = 0x80A5CE50; // type:func +BgSpot08Iceblock_SetWaterline = 0x80A5CF00; // type:func +BgSpot08Iceblock_MultVectorScalar = 0x80A5CF20; // type:func +BgSpot08Iceblock_CrossProduct = 0x80A5CF54; // type:func +BgSpot08Iceblock_NormalizeVector = 0x80A5CFC8; // type:func +BgSpot08Iceblock_Roll = 0x80A5D064; // type:func +BgSpot08Iceblock_SpawnTwinFloe = 0x80A5D3D8; // type:func +BgSpot08Iceblock_Init = 0x80A5D4D8; // type:func +BgSpot08Iceblock_Destroy = 0x80A5D6CC; // type:func +BgSpot08Iceblock_SetupFloatNonrotating = 0x80A5D700; // type:func +BgSpot08Iceblock_FloatNonrotating = 0x80A5D724; // type:func +BgSpot08Iceblock_SetupFloatRotating = 0x80A5D778; // type:func +BgSpot08Iceblock_FloatRotating = 0x80A5D79C; // type:func +BgSpot08Iceblock_SetupFloatOrbitingTwins = 0x80A5D7FC; // type:func +BgSpot08Iceblock_FloatOrbitingTwins = 0x80A5D820; // type:func +BgSpot08Iceblock_SetupNoAction = 0x80A5D8F8; // type:func +BgSpot08Iceblock_Update = 0x80A5D918; // type:func +BgSpot08Iceblock_Draw = 0x80A5D9B4; // type:func +ItemEtcetera_SetupAction = 0x80A5DD70; // type:func +ItemEtcetera_Init = 0x80A5DD7C; // type:func +ItemEtcetera_Destroy = 0x80A5DEFC; // type:func +ItemEtcetera_WaitForObject = 0x80A5DF0C; // type:func +func_80B85824 = 0x80A5DF64; // type:func +func_80B858B4 = 0x80A5DFFC; // type:func +ItemEtcetera_SpawnSparkles = 0x80A5E0DC; // type:func +ItemEtcetera_MoveFireArrowDown = 0x80A5E1EC; // type:func +func_80B85B28 = 0x80A5E27C; // type:func +ItemEtcetera_UpdateFireArrow = 0x80A5E2C4; // type:func +ItemEtcetera_Update = 0x80A5E344; // type:func +ItemEtcetera_DrawThroughLens = 0x80A5E368; // type:func +ItemEtcetera_Draw = 0x80A5E3C0; // type:func +ArrowFire_SetupAction = 0x80A5E640; // type:func +ArrowFire_Init = 0x80A5E64C; // type:func +ArrowFire_Destroy = 0x80A5E6C8; // type:func +ArrowFire_Charge = 0x80A5E6EC; // type:func +func_80865ECC = 0x80A5E7E0; // type:func +ArrowFire_Hit = 0x80A5E838; // type:func +ArrowFire_Fly = 0x80A5EA04; // type:func +ArrowFire_Update = 0x80A5EB58; // type:func +ArrowFire_Draw = 0x80A5EBAC; // type:func +ArrowIce_SetupAction = 0x80A60520; // type:func +ArrowIce_Init = 0x80A6052C; // type:func +ArrowIce_Destroy = 0x80A605A8; // type:func +ArrowIce_Charge = 0x80A605CC; // type:func +func_80867E8C = 0x80A606C0; // type:func +ArrowIce_Hit = 0x80A60718; // type:func +ArrowIce_Fly = 0x80A608E4; // type:func +ArrowIce_Update = 0x80A60A38; // type:func +ArrowIce_Draw = 0x80A60A8C; // type:func +ArrowLight_SetupAction = 0x80A62420; // type:func +ArrowLight_Init = 0x80A6242C; // type:func +ArrowLight_Destroy = 0x80A624A8; // type:func +ArrowLight_Charge = 0x80A624CC; // type:func +func_80869E6C = 0x80A625C0; // type:func +ArrowLight_Hit = 0x80A62618; // type:func +ArrowLight_Fly = 0x80A627E4; // type:func +ArrowLight_Update = 0x80A62938; // type:func +ArrowLight_Draw = 0x80A6298C; // type:func +ObjKibako_SpawnCollectible = 0x80A64330; // type:func +ObjKibako_ApplyGravity = 0x80A64390; // type:func +ObjKibako_InitCollider = 0x80A643C4; // type:func +ObjKibako_Init = 0x80A6441C; // type:func +ObjKibako_Destroy = 0x80A64494; // type:func +ObjKibako_AirBreak = 0x80A644C0; // type:func +ObjKibako_WaterBreak = 0x80A64740; // type:func +ObjKibako_SetupIdle = 0x80A649C0; // type:func +ObjKibako_Idle = 0x80A649DC; // type:func +ObjKibako_SetupHeld = 0x80A64BD8; // type:func +ObjKibako_Held = 0x80A64C0C; // type:func +ObjKibako_SetupThrown = 0x80A64CD8; // type:func +ObjKibako_Thrown = 0x80A64D38; // type:func +ObjKibako_Update = 0x80A64E74; // type:func +ObjKibako_Draw = 0x80A64E98; // type:func +ObjTsubo_SpawnCollectible = 0x80A65030; // type:func +ObjTsubo_ApplyGravity = 0x80A65090; // type:func +ObjTsubo_SnapToFloor = 0x80A650C4; // type:func +ObjTsubo_InitCollider = 0x80A65160; // type:func +ObjTsubo_Init = 0x80A651B8; // type:func +ObjTsubo_Destroy = 0x80A65288; // type:func +ObjTsubo_AirBreak = 0x80A652B4; // type:func +ObjTsubo_WaterBreak = 0x80A6553C; // type:func +ObjTsubo_SetupWaitForObject = 0x80A657D4; // type:func +ObjTsubo_WaitForObject = 0x80A657E8; // type:func +ObjTsubo_SetupIdle = 0x80A6585C; // type:func +ObjTsubo_Idle = 0x80A65870; // type:func +ObjTsubo_SetupLiftedUp = 0x80A65A80; // type:func +ObjTsubo_LiftedUp = 0x80A65AC4; // type:func +ObjTsubo_SetupThrown = 0x80A65B4C; // type:func +ObjTsubo_Thrown = 0x80A65C14; // type:func +ObjTsubo_Update = 0x80A65DA8; // type:func +ObjTsubo_Draw = 0x80A65DCC; // type:func +EnWonderItem_Destroy = 0x80A66020; // type:func +EnWonderItem_DropCollectible = 0x80A66064; // type:func +EnWonderItem_Init = 0x80A661C0; // type:func +EnWonderItem_MultitagFree = 0x80A6650C; // type:func +EnWonderItem_ProximityDrop = 0x80A66654; // type:func +EnWonderItem_InteractSwitch = 0x80A666BC; // type:func +EnWonderItem_ProximitySwitch = 0x80A666F0; // type:func +EnWonderItem_MultitagOrdered = 0x80A6677C; // type:func +EnWonderItem_BombSoldier = 0x80A668D8; // type:func +EnWonderItem_RollDrop = 0x80A66968; // type:func +EnWonderItem_Update = 0x80A669DC; // type:func +EnIk_Destroy = 0x80A66D50; // type:func +EnIk_SetupAction = 0x80A66DD0; // type:func +EnIk_InitImpl = 0x80A66DDC; // type:func +EnIk_HandleBlocking = 0x80A67028; // type:func +EnIk_FindBreakableProp = 0x80A670B8; // type:func +EnIk_SetupStandUp = 0x80A67158; // type:func +EnIk_StandUp = 0x80A67204; // type:func +EnIk_SetupIdle = 0x80A672E4; // type:func +EnIk_Idle = 0x80A67374; // type:func +EnIk_SetupWalkOrRun = 0x80A674F4; // type:func +EnIk_WalkOrRun = 0x80A675EC; // type:func +EnIk_SetupVerticalAttack = 0x80A67874; // type:func +EnIk_VerticalAttack = 0x80A67904; // type:func +EnIk_SetupPullOutAxe = 0x80A67AB8; // type:func +EnIk_PullOutAxe = 0x80A67B58; // type:func +EnIk_SetupDoubleHorizontalAttack = 0x80A67C14; // type:func +EnIk_DoubleHorizontalAttack = 0x80A67CAC; // type:func +EnIk_SetupRecoverFromHorizontalAttack = 0x80A67E1C; // type:func +EnIk_RecoverFromHorizontalAttack = 0x80A67EA8; // type:func +EnIk_SetupSingleHorizontalAttack = 0x80A67EF0; // type:func +EnIk_SingleHorizontalAttack = 0x80A67F80; // type:func +EnIk_SetupStopAndBlock = 0x80A68040; // type:func +EnIk_StopAndBlock = 0x80A680CC; // type:func +EnIk_SetupReactToAttack = 0x80A681E0; // type:func +EnIk_ReactToAttack = 0x80A68300; // type:func +EnIk_SetupDie = 0x80A683DC; // type:func +EnIk_Die = 0x80A68488; // type:func +EnIk_UpdateDamage = 0x80A68684; // type:func +EnIk_UpdateEnemy = 0x80A689F0; // type:func +EnIk_SetPrimEnvColors = 0x80A68C08; // type:func +EnIk_OverrideLimbDrawEnemy = 0x80A68CC0; // type:func +EnIk_PostLimbDrawEnemy = 0x80A68D80; // type:func +EnIk_DrawEnemy = 0x80A69194; // type:func +EnIk_StartMinibossBgm = 0x80A695CC; // type:func +EnIk_UpdateAction2Sfx = 0x80A695EC; // type:func +EnIk_PlayAxeSpawnSfx = 0x80A697B8; // type:func +EnIk_SpawnAxeSmoke = 0x80A69808; // type:func +EnIk_UpdateBgCheckInfo = 0x80A69A14; // type:func +EnIk_UpdateSkelAnime = 0x80A69A5C; // type:func +EnIk_GetCue = 0x80A69A80; // type:func +EnIk_SetStartPosRotFromCue = 0x80A69AA8; // type:func +EnIk_GetAnimCurFrame = 0x80A69B28; // type:func +EnIk_SetupCsAction0 = 0x80A69B34; // type:func +EnIk_SetupCsAction1 = 0x80A69B48; // type:func +EnIk_SetupCsAction2 = 0x80A69BD4; // type:func +EnIk_HandleEnemyChange = 0x80A69C54; // type:func +EnIk_PlayArmorFallSfx = 0x80A69C94; // type:func +EnIk_PlayDeathSfx = 0x80A69CDC; // type:func +EnIk_SetupCsAction3 = 0x80A69D50; // type:func +EnIk_SetupCsAction4 = 0x80A69E28; // type:func +EnIk_SetupCsAction5 = 0x80A69E64; // type:func +EnIk_CsAction3 = 0x80A69E80; // type:func +EnIk_CsAction4 = 0x80A69EB8; // type:func +EnIk_CsAction5 = 0x80A69EF8; // type:func +EnIk_OverrideLimbDrawDefeat = 0x80A69F34; // type:func +EnIk_PostLimbDrawDefeat = 0x80A69FA0; // type:func +EnIk_CsDrawDefeat = 0x80A6A1EC; // type:func +EnIk_HandleCsCues = 0x80A6A350; // type:func +EnIk_CsAction0 = 0x80A6A44C; // type:func +EnIk_CsAction1 = 0x80A6A46C; // type:func +EnIk_CsAction2 = 0x80A6A4A4; // type:func +EnIk_UpdateCutscene = 0x80A6A508; // type:func +EnIk_OverrideLimbDrawIntro = 0x80A6A550; // type:func +EnIk_PostLimbDrawIntro = 0x80A6A5D4; // type:func +EnIk_CsDrawNothing = 0x80A6A7C0; // type:func +EnIk_CsDrawIntro = 0x80A6A7D0; // type:func +EnIk_DrawCutscene = 0x80A6A934; // type:func +EnIk_CsInit = 0x80A6A97C; // type:func +EnIk_ChangeToEnemy = 0x80A6A9EC; // type:func +EnIk_StartDefeatCutscene = 0x80A6AA58; // type:func +EnIk_Init = 0x80A6AAEC; // type:func +DemoIk_Destroy = 0x80A6B3B0; // type:func +DemoIk_BgCheck = 0x80A6B3C0; // type:func +DemoIk_UpdateSkelAnime = 0x80A6B408; // type:func +DemoIk_GetCue = 0x80A6B42C; // type:func +DemoIk_CheckForCue = 0x80A6B454; // type:func +DemoIk_SetMove = 0x80A6B494; // type:func +DemoIk_EndMove = 0x80A6B4D4; // type:func +DemoIk_GetCurFrame = 0x80A6B4E8; // type:func +DemoIk_SetColors = 0x80A6B4F4; // type:func +DemoIk_GetCueChannel = 0x80A6B598; // type:func +DemoIk_Type1PlaySfx = 0x80A6B5C4; // type:func +DemoIk_SpawnDeadDb = 0x80A6B6C4; // type:func +DemoIk_MoveToStartPos = 0x80A6B868; // type:func +DemoIk_Type1Init = 0x80A6B8E8; // type:func +func_8098393C = 0x80A6BA04; // type:func +func_8098394C = 0x80A6BA18; // type:func +func_809839AC = 0x80A6BA7C; // type:func +func_809839D0 = 0x80A6BAA4; // type:func +DemoIk_Type1Action0 = 0x80A6BB64; // type:func +DemoIk_Type1Action1 = 0x80A6BB84; // type:func +DemoIk_Type1Action2 = 0x80A6BBBC; // type:func +DemoIk_Type1PostLimbDraw = 0x80A6BC24; // type:func +DemoIk_Type1Draw = 0x80A6BD20; // type:func +DemoIk_Type2Init = 0x80A6BE78; // type:func +DemoIk_Type2PlaySfxOnFrame = 0x80A6BF80; // type:func +DemoIk_Type2PlaySfx = 0x80A6BFE0; // type:func +func_80983FDC = 0x80A6C030; // type:func +func_80983FEC = 0x80A6C044; // type:func +func_8098402C = 0x80A6C084; // type:func +func_80984048 = 0x80A6C0A4; // type:func +DemoIk_Type2Action0 = 0x80A6C16C; // type:func +DemoIk_Type2Action1 = 0x80A6C18C; // type:func +DemoIk_Type2Action2 = 0x80A6C1AC; // type:func +DemoIk_Type2OverrideLimbDraw = 0x80A6C1E8; // type:func +DemoIk_Type2PostLimbDraw = 0x80A6C244; // type:func +DemoIk_Type2Draw = 0x80A6C414; // type:func +DemoIk_Update = 0x80A6C578; // type:func +DemoIk_DrawNothing = 0x80A6C5C0; // type:func +DemoIk_Draw = 0x80A6C5D0; // type:func +DemoIk_Init = 0x80A6C618; // type:func +EnSkj_ChangeAnim = 0x80A6C8C0; // type:func +EnSkj_SetupAction = 0x80A6C948; // type:func +EnSkj_CalculateCenter = 0x80A6C9A0; // type:func +EnSkj_SetNaviId = 0x80A6CA38; // type:func +EnSkj_Init = 0x80A6CABC; // type:func +EnSkj_Destroy = 0x80A6CE08; // type:func +EnSkj_RangeCheck = 0x80A6CE34; // type:func +EnSkj_GetItemXzRange = 0x80A6CEB0; // type:func +EnSkj_GetItemYRange = 0x80A6CEF8; // type:func +EnSkj_ShootNeedle = 0x80A6CF24; // type:func +EnSkj_SpawnBlood = 0x80A6D03C; // type:func +EnSkj_CollisionCheck = 0x80A6D194; // type:func +func_80AFEDF8 = 0x80A6D350; // type:func +EnSkj_Backflip = 0x80A6D3DC; // type:func +EnSkj_Fade = 0x80A6D424; // type:func +EnSkj_SetupWaitToShootNeedle = 0x80A6D4B4; // type:func +EnSkj_WaitToShootNeedle = 0x80A6D4F0; // type:func +EnSkj_SetupResetFight = 0x80A6D590; // type:func +EnSkj_SariasSongKidIdle = 0x80A6D5D4; // type:func +EnSkj_SetupDie = 0x80A6D6CC; // type:func +EnSkj_WaitForDeathAnim = 0x80A6D700; // type:func +func_80AFF1F0 = 0x80A6D754; // type:func +EnSkj_PickNextFightAction = 0x80A6D788; // type:func +func_80AFF2A0 = 0x80A6D808; // type:func +EnSkj_WaitForLandAnim = 0x80A6D84C; // type:func +func_80AFF334 = 0x80A6D8A0; // type:func +EnSkj_ResetFight = 0x80A6D8EC; // type:func +EnSkj_SetupStand = 0x80A6D93C; // type:func +EnSkj_Fight = 0x80A6D990; // type:func +EnSkj_SetupNeedleRecover = 0x80A6DB5C; // type:func +EnSkj_NeedleRecover = 0x80A6DB90; // type:func +EnSkj_SetupSpawnDeathEffect = 0x80A6DBCC; // type:func +EnSkj_SpawnDeathEffect = 0x80A6DBF4; // type:func +EnSkj_SetupWaitInRange = 0x80A6DD0C; // type:func +EnSkj_WaitInRange = 0x80A6DD44; // type:func +EnSkj_SetupWaitForSong = 0x80A6DF58; // type:func +EnSkj_WaitForSong = 0x80A6DF7C; // type:func +EnSkj_SetupAfterSong = 0x80A6E250; // type:func +EnSkj_AfterSong = 0x80A6E284; // type:func +EnSkj_SetupTalk = 0x80A6E2D8; // type:func +EnSkj_SariaSongTalk = 0x80A6E2F8; // type:func +func_80AFFE24 = 0x80A6E39C; // type:func +func_80AFFE44 = 0x80A6E3BC; // type:func +EnSkj_SetupPostSariasSong = 0x80A6E434; // type:func +EnSkj_ChangeModeAfterSong = 0x80A6E454; // type:func +EnSkj_SetupMaskTrade = 0x80A6E4BC; // type:func +EnSkj_StartMaskTrade = 0x80A6E4DC; // type:func +EnSkj_JumpFromStump = 0x80A6E544; // type:func +EnSkj_WaitForLanding = 0x80A6E5A8; // type:func +EnSkj_SetupWaitForLandAnimFinish = 0x80A6E5F8; // type:func +EnSkj_WaitForLandAnimFinish = 0x80A6E62C; // type:func +EnSkj_SetupWalkToPlayer = 0x80A6E680; // type:func +EnSkj_WalkToPlayer = 0x80A6E6C4; // type:func +EnSkj_SetupAskForMask = 0x80A6E760; // type:func +EnSkj_AskForMask = 0x80A6E7A8; // type:func +EnSkj_SetupTakeMask = 0x80A6E840; // type:func +EnSkj_TakeMask = 0x80A6E878; // type:func +EnSkj_SetupWaitForMaskTextClear = 0x80A6E910; // type:func +EnSkj_WaitForMaskTextClear = 0x80A6E930; // type:func +EnSkj_SetupWrongSong = 0x80A6E998; // type:func +EnSkj_WrongSong = 0x80A6E9D0; // type:func +EnSkj_SetupWaitForTextClear = 0x80A6EA24; // type:func +EnSkj_SariasSongWaitForTextClear = 0x80A6EA44; // type:func +EnSkj_OcarinaGameSetupWaitForPlayer = 0x80A6EABC; // type:func +EnSkj_OcarinaGameWaitForPlayer = 0x80A6EAFC; // type:func +EnSkj_IsLeavingGame = 0x80A6EB38; // type:func +EnSkj_SetupIdle = 0x80A6EB88; // type:func +EnSkj_Appear = 0x80A6EBBC; // type:func +EnSkj_OcarinaGameIdle = 0x80A6EBE4; // type:func +EnSkj_SetupPlayOcarinaGame = 0x80A6EC30; // type:func +EnSkj_PlayOcarinaGame = 0x80A6EC64; // type:func +EnSkj_SetupLeaveOcarinaGame = 0x80A6ECB0; // type:func +EnSkj_LeaveOcarinaGame = 0x80A6ECF8; // type:func +EnSkj_Update = 0x80A6ED40; // type:func +EnSkj_SariasSongShortStumpUpdate = 0x80A6EF24; // type:func +EnSkj_TurnPlayer = 0x80A6EF4C; // type:func +EnSkj_SetupWaitForOcarina = 0x80A6EF98; // type:func +EnSkj_WaitForOcarina = 0x80A6F054; // type:func +EnSkj_StartOcarinaMinigame = 0x80A6F0FC; // type:func +EnSkj_WaitForPlayback = 0x80A6F188; // type:func +EnSkj_FailedMiniGame = 0x80A6F3F8; // type:func +EnSkj_WaitForNextRound = 0x80A6F438; // type:func +EnSkj_OfferNextRound = 0x80A6F488; // type:func +EnSkj_WaitForOfferResponse = 0x80A6F4C4; // type:func +EnSkj_WonOcarinaMiniGame = 0x80A6F56C; // type:func +EnSkj_WaitToGiveReward = 0x80A6F5AC; // type:func +EnSkj_GiveOcarinaGameReward = 0x80A6F634; // type:func +EnSkj_FinishOcarinaGameRound = 0x80A6F6A8; // type:func +EnSkj_CleanupOcarinaGame = 0x80A6F744; // type:func +EnSkj_OcarinaMinigameShortStumpUpdate = 0x80A6F7C0; // type:func +EnSkj_OverrideLimbDraw = 0x80A6F844; // type:func +EnSkj_PostLimbDraw = 0x80A6F860; // type:func +EnSkj_TranslucentDL = 0x80A6F930; // type:func +EnSkj_OpaqueDL = 0x80A6F988; // type:func +EnSkj_Draw = 0x80A6F9C0; // type:func +EnSkjneedle_Init = 0x80A70210; // type:func +EnSkjneedle_Destroy = 0x80A702A8; // type:func +EnSkjNeedle_CollisionCheck = 0x80A702D4; // type:func +EnSkjneedle_Update = 0x80A70304; // type:func +EnSkjneedle_Draw = 0x80A703F4; // type:func +EnGSwitch_Init = 0x80A70520; // type:func +EnGSwitch_Destroy = 0x80A707B8; // type:func +EnGSwitch_Break = 0x80A707E4; // type:func +EnGSwitch_WaitForObject = 0x80A7098C; // type:func +EnGSwitch_SilverRupeeTracker = 0x80A70A24; // type:func +EnGSwitch_SilverRupeeIdle = 0x80A70B08; // type:func +EnGSwitch_SilverRupeeCollected = 0x80A70BF0; // type:func +EnGSwitch_GalleryRupee = 0x80A70CD4; // type:func +EnGSwitch_ArcheryPot = 0x80A71074; // type:func +EnGSwitch_Kill = 0x80A7135C; // type:func +EnGSwitch_Update = 0x80A7138C; // type:func +EnGSwitch_DrawPot = 0x80A714C0; // type:func +EnGSwitch_DrawRupee = 0x80A71554; // type:func +EnGSwitch_SpawnEffects = 0x80A71684; // type:func +EnGSwitch_UpdateEffects = 0x80A71798; // type:func +EnGSwitch_DrawEffects = 0x80A71958; // type:func +DemoExt_Destroy = 0x80A71D40; // type:func +DemoExt_Init = 0x80A71D50; // type:func +DemoExt_PlayVortexSFX = 0x80A71E08; // type:func +DemoExt_GetCue = 0x80A71E90; // type:func +DemoExt_SetupWait = 0x80A71EB8; // type:func +DemoExt_SetupMaintainVortex = 0x80A71EC8; // type:func +DemoExt_SetupDispellVortex = 0x80A71F54; // type:func +DemoExt_FinishClosing = 0x80A71F6C; // type:func +DemoExt_HandleCues = 0x80A71FD8; // type:func +DemoExt_SetScrollAndRotation = 0x80A72084; // type:func +DemoExt_SetColorsAndScales = 0x80A720D4; // type:func +DemoExt_Wait = 0x80A72210; // type:func +DemoExt_MaintainVortex = 0x80A72230; // type:func +DemoExt_DispellVortex = 0x80A7226C; // type:func +DemoExt_Update = 0x80A722AC; // type:func +DemoExt_DrawNothing = 0x80A722F4; // type:func +DemoExt_DrawVortex = 0x80A72304; // type:func +DemoExt_Draw = 0x80A72584; // type:func +DemoShd_SetupAction = 0x80A72690; // type:func +DemoShd_Init = 0x80A7269C; // type:func +DemoShd_Destroy = 0x80A726EC; // type:func +func_80991298 = 0x80A726FC; // type:func +DemoShd_Update = 0x80A72854; // type:func +DemoShd_Draw = 0x80A72878; // type:func +EnDns_Init = 0x80A74AA0; // type:func +EnDns_Destroy = 0x80A74C14; // type:func +EnDns_ChangeAnim = 0x80A74C40; // type:func +EnDns_CanBuyDekuNuts = 0x80A74CC8; // type:func +EnDns_CanBuyDekuSticks = 0x80A74D80; // type:func +EnDns_CanBuyPrice = 0x80A74E38; // type:func +EnDns_CanBuyDekuSeeds = 0x80A74E68; // type:func +EnDns_CanBuyDekuShield = 0x80A74F30; // type:func +EnDns_CanBuyBombs = 0x80A74F84; // type:func +EnDns_CanBuyArrows = 0x80A75024; // type:func +EnDns_CanBuyBottle = 0x80A750D4; // type:func +EnDns_PayPrice = 0x80A7512C; // type:func +EnDns_PayForDekuNuts = 0x80A75160; // type:func +EnDns_PayForHeartPiece = 0x80A75194; // type:func +EnDns_PayForBombs = 0x80A751DC; // type:func +EnDns_PayForArrows = 0x80A75210; // type:func +EnDns_PayForDekuStickUpgrade = 0x80A75244; // type:func +EnDns_PayForDekuNutUpgrade = 0x80A7528C; // type:func +EnDns_SetupIdle = 0x80A752D4; // type:func +EnDns_Idle = 0x80A75318; // type:func +EnDns_Talk = 0x80A753EC; // type:func +EnDns_OfferSaleItem = 0x80A75524; // type:func +EnDns_SetupSale = 0x80A7563C; // type:func +EnDns_Sale = 0x80A756A8; // type:func +EnDns_SetupBurrow = 0x80A756F4; // type:func +EnDns_SetupNoSaleBurrow = 0x80A757E8; // type:func +EnDns_Burrow = 0x80A75860; // type:func +EnDns_PostBurrow = 0x80A758DC; // type:func +EnDns_Update = 0x80A759E0; // type:func +EnDns_Draw = 0x80A75AD0; // type:func +ElfMsg_SetupAction = 0x80A75E30; // type:func +ElfMsg_KillCheck = 0x80A75E3C; // type:func +ElfMsg_Init = 0x80A75F74; // type:func +ElfMsg_Destroy = 0x80A76068; // type:func +ElfMsg_GetMessageId = 0x80A76078; // type:func +ElfMsg_CallNaviCuboid = 0x80A760A4; // type:func +ElfMsg_WithinXZDistance = 0x80A76174; // type:func +ElfMsg_CallNaviCylinder = 0x80A761C8; // type:func +ElfMsg_Update = 0x80A76290; // type:func +EnHonotrap_FlameCollisionCheck = 0x80A76420; // type:func +EnHonotrap_GetNormal = 0x80A764B4; // type:func +EnHonotrap_InitEye = 0x80A76548; // type:func +EnHonotrap_InitFlame = 0x80A766E4; // type:func +EnHonotrap_Init = 0x80A76824; // type:func +EnHonotrap_Destroy = 0x80A7687C; // type:func +EnHonotrap_SetupEyeIdle = 0x80A768C8; // type:func +EnHonotrap_EyeIdle = 0x80A768E4; // type:func +EnHonotrap_SetupEyeOpen = 0x80A7699C; // type:func +EnHonotrap_EyeOpen = 0x80A769F0; // type:func +EnHonotrap_SetupEyeAttack = 0x80A76AC0; // type:func +EnHonotrap_EyeAttack = 0x80A76AD8; // type:func +EnHonotrap_SetupEyeClose = 0x80A76B08; // type:func +EnHonotrap_EyeClose = 0x80A76B1C; // type:func +EnHonotrap_SetupFlameGrow = 0x80A76B68; // type:func +EnHonotrap_FlameGrow = 0x80A76B7C; // type:func +EnHonotrap_SetupFlameDrop = 0x80A76C10; // type:func +EnHonotrap_FlameDrop = 0x80A76C78; // type:func +EnHonotrap_SetupFlameMove = 0x80A76DBC; // type:func +EnHonotrap_FlameMove = 0x80A76E48; // type:func +EnHonotrap_SetupFlameChase = 0x80A77014; // type:func +EnHonotrap_FlameChase = 0x80A77054; // type:func +EnHonotrap_SetupFlameVanish = 0x80A77208; // type:func +EnHonotrap_FlameVanish = 0x80A7721C; // type:func +EnHonotrap_Update = 0x80A772AC; // type:func +EnHonotrap_DrawEye = 0x80A773F4; // type:func +EnHonotrap_DrawFlame = 0x80A774E4; // type:func +EnHonotrap_Draw = 0x80A7767C; // type:func +EnTuboTrap_Init = 0x80A77980; // type:func +EnTuboTrap_Destroy = 0x80A77A04; // type:func +EnTuboTrap_DropCollectible = 0x80A77A30; // type:func +EnTuboTrap_SpawnEffectsOnLand = 0x80A77A90; // type:func +EnTuboTrap_SpawnEffectsInWater = 0x80A77D04; // type:func +EnTuboTrap_HandleImpact = 0x80A77F84; // type:func +EnTuboTrap_WaitForProximity = 0x80A781AC; // type:func +EnTuboTrap_Levitate = 0x80A782B8; // type:func +EnTuboTrap_Fly = 0x80A78344; // type:func +EnTuboTrap_Update = 0x80A78414; // type:func +EnTuboTrap_Draw = 0x80A784D4; // type:func +ObjIcePoly_Init = 0x80A78620; // type:func +ObjIcePoly_Destroy = 0x80A787E0; // type:func +ObjIcePoly_Idle = 0x80A78830; // type:func +ObjIcePoly_Melt = 0x80A78A60; // type:func +ObjIcePoly_Update = 0x80A78D18; // type:func +ObjIcePoly_Draw = 0x80A78D3C; // type:func +BgSpot03Taki_ApplyOpeningAlpha = 0x80A78FD0; // type:func +BgSpot03Taki_Init = 0x80A7930C; // type:func +BgSpot03Taki_Destroy = 0x80A793BC; // type:func +BgSpot03Taki_HandleWaterfallState = 0x80A793F0; // type:func +BgSpot03Taki_Update = 0x80A795C4; // type:func +BgSpot03Taki_Draw = 0x80A795E8; // type:func +BgSpot07Taki_Init = 0x80A798F0; // type:func +BgSpot07Taki_Destroy = 0x80A7999C; // type:func +BgSpot07Taki_DoNothing = 0x80A799D0; // type:func +BgSpot07Taki_Update = 0x80A799E0; // type:func +BgSpot07Taki_Draw = 0x80A79A04; // type:func +EnFz_Init = 0x80A79EE0; // type:func +EnFz_Destroy = 0x80A7A060; // type:func +EnFz_UpdateTargetPos = 0x80A7A0B0; // type:func +EnFz_ReachedTarget = 0x80A7A1D0; // type:func +EnFz_Damaged = 0x80A7A220; // type:func +EnFz_SpawnIceSmokeHiddenState = 0x80A7A414; // type:func +EnFz_SpawnIceSmokeGrowingState = 0x80A7A420; // type:func +EnFz_SpawnIceSmokeActiveState = 0x80A7A500; // type:func +EnFz_ApplyDamage = 0x80A7A5C4; // type:func +EnFz_SetYawTowardsPlayer = 0x80A7A82C; // type:func +EnFz_SetupDisappear = 0x80A7A86C; // type:func +EnFz_Disappear = 0x80A7A89C; // type:func +EnFz_SetupWait = 0x80A7A91C; // type:func +EnFz_Wait = 0x80A7A95C; // type:func +EnFz_SetupAppear = 0x80A7A9AC; // type:func +EnFz_Appear = 0x80A7A9D8; // type:func +EnFz_SetupAimForMove = 0x80A7AA68; // type:func +EnFz_AimForMove = 0x80A7AAAC; // type:func +EnFz_SetupMoveTowardsPlayer = 0x80A7AAE8; // type:func +EnFz_MoveTowardsPlayer = 0x80A7AB1C; // type:func +EnFz_SetupAimForFreeze = 0x80A7AB58; // type:func +EnFz_AimForFreeze = 0x80A7AB88; // type:func +EnFz_SetupBlowSmoke = 0x80A7ABC4; // type:func +EnFz_BlowSmoke = 0x80A7ABFC; // type:func +EnFz_SetupDespawn = 0x80A7ADE8; // type:func +EnFz_Despawn = 0x80A7AE88; // type:func +EnFz_SetupMelt = 0x80A7AEB8; // type:func +EnFz_Melt = 0x80A7AEFC; // type:func +EnFz_SetupBlowSmokeStationary = 0x80A7AFC4; // type:func +EnFz_BlowSmokeStationary = 0x80A7B008; // type:func +EnFz_Update = 0x80A7B200; // type:func +EnFz_Draw = 0x80A7B390; // type:func +EnFz_SpawnIceSmokeNoFreeze = 0x80A7B54C; // type:func +EnFz_SpawnIceSmokeFreeze = 0x80A7B5F0; // type:func +EnFz_UpdateIceSmoke = 0x80A7B6AC; // type:func +EnFz_DrawEffects = 0x80A7B998; // type:func +EnPoRelay_Init = 0x80A7BEF0; // type:func +EnPoRelay_Destroy = 0x80A7C078; // type:func +EnPoRelay_SetupIdle = 0x80A7C0C0; // type:func +EnPoRelay_Vec3sToVec3f = 0x80A7C0FC; // type:func +EnPoRelay_SetupRace = 0x80A7C140; // type:func +EnPoRelay_SetupEndRace = 0x80A7C208; // type:func +EnPoRelay_CorrectY = 0x80A7C248; // type:func +EnPoRelay_Idle = 0x80A7C2F0; // type:func +EnPoRelay_Talk = 0x80A7C3AC; // type:func +EnPoRelay_Race = 0x80A7C420; // type:func +EnPoRelay_EndRace = 0x80A7C934; // type:func +EnPoRelay_Talk2 = 0x80A7C9F4; // type:func +EnPoRelay_DisappearAndReward = 0x80A7CACC; // type:func +EnPoRelay_Update = 0x80A7CF98; // type:func +EnPoRelay_PostLimbDraw = 0x80A7D08C; // type:func +EnPoRelay_Draw = 0x80A7D280; // type:func +BgRelayObjects_Init = 0x80A7D600; // type:func +BgRelayObjects_Destroy = 0x80A7D840; // type:func +func_808A90F4 = 0x80A7D8AC; // type:func +func_808A91AC = 0x80A7D968; // type:func +func_808A9234 = 0x80A7D9F0; // type:func +BgRelayObjects_DoNothing = 0x80A7DADC; // type:func +func_808A932C = 0x80A7DAEC; // type:func +func_808A939C = 0x80A7DB5C; // type:func +BgRelayObjects_Update = 0x80A7DC30; // type:func +BgRelayObjects_Draw = 0x80A7DC54; // type:func +EnDivingGame_Init = 0x80A7DDB0; // type:func +EnDivingGame_Destroy = 0x80A7DECC; // type:func +EnDivingGame_SpawnRuppy = 0x80A7DF0C; // type:func +EnDivingGame_HasMinigameFinished = 0x80A7E038; // type:func +func_809EDCB0 = 0x80A7E1E4; // type:func +EnDivingGame_Talk = 0x80A7E280; // type:func +EnDivingGame_HandlePlayChoice = 0x80A7E410; // type:func +func_809EE048 = 0x80A7E57C; // type:func +func_809EE0FC = 0x80A7E630; // type:func +func_809EE194 = 0x80A7E6C8; // type:func +EnDivingGame_SetupRupeeThrow = 0x80A7E728; // type:func +EnDivingGame_RupeeThrow = 0x80A7E93C; // type:func +EnDivingGame_SetupUnderwaterViewCs = 0x80A7EBFC; // type:func +func_809EE780 = 0x80A7ECB4; // type:func +func_809EE800 = 0x80A7ED34; // type:func +func_809EE8F0 = 0x80A7EE24; // type:func +func_809EE96C = 0x80A7EEA4; // type:func +func_809EEA00 = 0x80A7EF38; // type:func +func_809EEA90 = 0x80A7EFC8; // type:func +func_809EEAF8 = 0x80A7F034; // type:func +EnDivingGame_Update = 0x80A7F0C4; // type:func +EnDivingGame_EmptyDList = 0x80A7F2F0; // type:func +EnDivingGame_OverrideLimbDraw = 0x80A7F314; // type:func +EnDivingGame_Draw = 0x80A7F474; // type:func +EnKusa_SetupAction = 0x80A7F760; // type:func +EnKusa_SnapToFloor = 0x80A7F770; // type:func +EnKusa_DropCollectible = 0x80A7F814; // type:func +EnKusa_UpdateVelY = 0x80A7F8E0; // type:func +EnKusa_RandScaleVecToZero = 0x80A7F914; // type:func +EnKusa_SetScaleSmall = 0x80A7F998; // type:func +EnKusa_SpawnFragments = 0x80A7F9BC; // type:func +EnKusa_SpawnBugs = 0x80A7FD14; // type:func +EnKusa_InitCollider = 0x80A7FDD0; // type:func +EnKusa_Init = 0x80A7FE28; // type:func +EnKusa_Destroy = 0x80A7FF50; // type:func +EnKusa_SetupWaitForObject = 0x80A7FF7C; // type:func +EnKusa_WaitForObject = 0x80A7FFA0; // type:func +EnKusa_SetupMain = 0x80A80030; // type:func +EnKusa_Main = 0x80A80068; // type:func +EnKusa_SetupLiftedUp = 0x80A80230; // type:func +EnKusa_LiftedUp = 0x80A8026C; // type:func +EnKusa_SetupFall = 0x80A8034C; // type:func +EnKusa_Fall = 0x80A803B8; // type:func +EnKusa_SetupCut = 0x80A80648; // type:func +EnKusa_CutWaitRegrow = 0x80A80698; // type:func +EnKusa_DoNothing = 0x80A806CC; // type:func +EnKusa_SetupUprootedWaitRegrow = 0x80A806DC; // type:func +EnKusa_UprootedWaitRegrow = 0x80A80748; // type:func +EnKusa_SetupRegrow = 0x80A807AC; // type:func +EnKusa_Regrow = 0x80A80804; // type:func +EnKusa_Update = 0x80A8089C; // type:func +EnKusa_Draw = 0x80A80900; // type:func +ObjBean_InitCollider = 0x80A80C40; // type:func +ObjBean_InitDynaPoly = 0x80A80C98; // type:func +ObjBean_FindFloor = 0x80A80CF0; // type:func +func_80B8EBC8 = 0x80A80D58; // type:func +ObjBean_UpdatePosition = 0x80A80D78; // type:func +func_80B8EDF4 = 0x80A80F88; // type:func +func_80B8EE24 = 0x80A80FB8; // type:func +ObjBean_Move = 0x80A81090; // type:func +ObjBean_SetDrawMode = 0x80A810C0; // type:func +ObjBean_SetupPathCount = 0x80A810E4; // type:func +ObjBean_SetupPath = 0x80A81124; // type:func +ObjBean_FollowPath = 0x80A811A0; // type:func +ObjBean_CheckForHorseTrample = 0x80A81448; // type:func +ObjBean_Break = 0x80A814D8; // type:func +ObjBean_UpdateLeaves = 0x80A81750; // type:func +ObjBean_SetupLeavesStill = 0x80A8180C; // type:func +ObjBean_LeavesStill = 0x80A8187C; // type:func +ObjBean_SetupShakeLeaves = 0x80A818C0; // type:func +ObjBean_ShakeLeaves = 0x80A81938; // type:func +ObjBean_SetupShakeLeavesFast = 0x80A819BC; // type:func +ObjBean_ShakeLeavesFast = 0x80A81A00; // type:func +ObjBean_SetupGrow = 0x80A81A88; // type:func +ObjBean_Grow = 0x80A81A9C; // type:func +ObjBean_SetupFlattenLeaves = 0x80A81B00; // type:func +ObjBean_FlattenLeaves = 0x80A81B1C; // type:func +ObjBean_SetupGrown = 0x80A81B98; // type:func +ObjBean_Grown = 0x80A81BDC; // type:func +ObjBean_Init = 0x80A81C38; // type:func +ObjBean_Destroy = 0x80A81DF4; // type:func +ObjBean_SetupWaitForBean = 0x80A81E70; // type:func +ObjBean_WaitForBean = 0x80A81EA8; // type:func +func_80B8FE00 = 0x80A81F24; // type:func +func_80B8FE3C = 0x80A81F5C; // type:func +func_80B8FE6C = 0x80A81F8C; // type:func +func_80B8FEAC = 0x80A81FCC; // type:func +func_80B8FF50 = 0x80A82070; // type:func +func_80B8FF8C = 0x80A820A8; // type:func +func_80B90010 = 0x80A8212C; // type:func +func_80B90050 = 0x80A82168; // type:func +ObjBean_SetupWaitForWater = 0x80A82228; // type:func +ObjBean_WaitForWater = 0x80A82270; // type:func +ObjBean_SetupGrowWaterPhase1 = 0x80A82368; // type:func +ObjBean_GrowWaterPhase1 = 0x80A823A8; // type:func +ObjBean_SetupGrowWaterPhase2 = 0x80A823EC; // type:func +ObjBean_GrowWaterPhase2 = 0x80A82428; // type:func +ObjBean_SetupGrowWaterPhase3 = 0x80A824D8; // type:func +ObjBean_GrowWaterPhase3 = 0x80A82510; // type:func +ObjBean_SetupGrowWaterPhase4 = 0x80A82624; // type:func +ObjBean_GrowWaterPhase4 = 0x80A8265C; // type:func +ObjBean_SetupGrowWaterPhase5 = 0x80A826F8; // type:func +ObjBean_GrowWaterPhase5 = 0x80A82730; // type:func +ObjBean_SetupWaitForPlayer = 0x80A82788; // type:func +ObjBean_WaitForPlayer = 0x80A827B4; // type:func +ObjBean_SetupFly = 0x80A82828; // type:func +ObjBean_Fly = 0x80A8286C; // type:func +ObjBean_SetupWaitForStepOff = 0x80A8299C; // type:func +ObjBean_WaitForStepOff = 0x80A829C8; // type:func +func_80B908EC = 0x80A82A08; // type:func +func_80B90918 = 0x80A82A34; // type:func +func_80B90970 = 0x80A82A90; // type:func +func_80B909B0 = 0x80A82AD0; // type:func +func_80B909F8 = 0x80A82B18; // type:func +func_80B90A34 = 0x80A82B50; // type:func +ObjBean_Update = 0x80A82BF0; // type:func +ObjBean_DrawSoftSoilSpot = 0x80A82D80; // type:func +ObjBean_DrawBeanstalk = 0x80A82E08; // type:func +ObjBean_Draw = 0x80A82E94; // type:func +ObjBombiwa_InitCollision = 0x80A833D0; // type:func +ObjBombiwa_Init = 0x80A83428; // type:func +ObjBombiwa_Destroy = 0x80A834F4; // type:func +ObjBombiwa_Break = 0x80A83520; // type:func +ObjBombiwa_Update = 0x80A83720; // type:func +ObjBombiwa_Draw = 0x80A83830; // type:func +ObjSwitch_RotateY = 0x80A83940; // type:func +ObjSwitch_InitDynaPoly = 0x80A839C0; // type:func +ObjSwitch_InitJntSphCollider = 0x80A83A18; // type:func +ObjSwitch_InitTrisCollider = 0x80A83AB4; // type:func +ObjSwitch_SpawnIce = 0x80A83BD4; // type:func +ObjSwitch_SetOn = 0x80A83C48; // type:func +ObjSwitch_SetOff = 0x80A83CF4; // type:func +ObjSwitch_UpdateTwoTexScrollXY = 0x80A83D7C; // type:func +ObjSwitch_Init = 0x80A83DC4; // type:func +ObjSwitch_Destroy = 0x80A8405C; // type:func +ObjSwitch_FloorUpInit = 0x80A84100; // type:func +ObjSwitch_FloorUp = 0x80A84120; // type:func +ObjSwitch_FloorPressInit = 0x80A84290; // type:func +ObjSwitch_FloorPress = 0x80A842AC; // type:func +ObjSwitch_FloorDownInit = 0x80A8436C; // type:func +ObjSwitch_FloorDown = 0x80A84394; // type:func +ObjSwitch_FloorReleaseInit = 0x80A844E0; // type:func +ObjSwitch_FloorRelease = 0x80A844FC; // type:func +ObjSwitch_EyeIsHit = 0x80A845E0; // type:func +ObjSwitch_EyeFrozenInit = 0x80A84650; // type:func +ObjSwitch_EyeInit = 0x80A84664; // type:func +ObjSwitch_EyeOpenInit = 0x80A846BC; // type:func +ObjSwitch_EyeOpen = 0x80A846D4; // type:func +ObjSwitch_EyeClosingInit = 0x80A84740; // type:func +ObjSwitch_EyeClosing = 0x80A8475C; // type:func +ObjSwitch_EyeClosedInit = 0x80A847D8; // type:func +ObjSwitch_EyeClosed = 0x80A847F4; // type:func +ObjSwitch_EyeOpeningInit = 0x80A848B4; // type:func +ObjSwitch_EyeOpening = 0x80A848D0; // type:func +ObjSwitch_CrystalOffInit = 0x80A84960; // type:func +ObjSwitch_CrystalOff = 0x80A8498C; // type:func +ObjSwitch_CrystalTurnOnInit = 0x80A84AC4; // type:func +ObjSwitch_CrystalTurnOn = 0x80A84AE0; // type:func +ObjSwitch_CrystalOnInit = 0x80A84B68; // type:func +ObjSwitch_CrystalOn = 0x80A84B98; // type:func +ObjSwitch_CrystalTurnOffInit = 0x80A84C60; // type:func +ObjSwitch_CrystalTurnOff = 0x80A84C7C; // type:func +ObjSwitch_Update = 0x80A84D04; // type:func +ObjSwitch_DrawFloor = 0x80A84E40; // type:func +ObjSwitch_DrawFloorRusty = 0x80A84E84; // type:func +ObjSwitch_DrawEye = 0x80A84EB4; // type:func +ObjSwitch_DrawCrystal = 0x80A84FC8; // type:func +ObjSwitch_Draw = 0x80A85224; // type:func +ObjElevator_SetupAction = 0x80A85720; // type:func +func_80B92B08 = 0x80A8572C; // type:func +ObjElevator_Init = 0x80A85784; // type:func +ObjElevator_Destroy = 0x80A85814; // type:func +func_80B92C5C = 0x80A85848; // type:func +func_80B92C80 = 0x80A8586C; // type:func +func_80B92D20 = 0x80A8590C; // type:func +func_80B92D44 = 0x80A85930; // type:func +ObjElevator_Update = 0x80A859B4; // type:func +ObjElevator_Draw = 0x80A859E8; // type:func +ObjLift_SetupAction = 0x80A85AE0; // type:func +ObjLift_InitDynaPoly = 0x80A85AEC; // type:func +ObjLift_SpawnFragments = 0x80A85B44; // type:func +ObjLift_Init = 0x80A85DC8; // type:func +ObjLift_Destroy = 0x80A85EC8; // type:func +ObjLift_SetupWait = 0x80A85EFC; // type:func +ObjLift_Wait = 0x80A85F40; // type:func +ObjLift_SetupShake = 0x80A86030; // type:func +ObjLift_Shake = 0x80A8605C; // type:func +ObjLift_SetupFall = 0x80A861A4; // type:func +ObjLift_Fall = 0x80A86228; // type:func +ObjLift_Update = 0x80A8632C; // type:func +ObjLift_Draw = 0x80A86360; // type:func +ObjHsblock_SetupAction = 0x80A86500; // type:func +func_80B93B68 = 0x80A8650C; // type:func +func_80B93BF0 = 0x80A86564; // type:func +ObjHsblock_Init = 0x80A865E8; // type:func +ObjHsblock_Destroy = 0x80A866B8; // type:func +func_80B93D90 = 0x80A866EC; // type:func +func_80B93DB0 = 0x80A8670C; // type:func +func_80B93DF4 = 0x80A86750; // type:func +func_80B93E38 = 0x80A86798; // type:func +func_80B93E5C = 0x80A867BC; // type:func +ObjHsblock_Update = 0x80A86864; // type:func +ObjHsblock_Draw = 0x80A868B0; // type:func +EnOkarinaTag_Destroy = 0x80A86AD0; // type:func +EnOkarinaTag_Init = 0x80A86AE0; // type:func +func_80ABEF2C = 0x80A86C48; // type:func +func_80ABF0CC = 0x80A86DAC; // type:func +func_80ABF28C = 0x80A86F6C; // type:func +func_80ABF4C8 = 0x80A871B4; // type:func +func_80ABF708 = 0x80A873F4; // type:func +func_80ABF7CC = 0x80A874BC; // type:func +EnOkarinaTag_Update = 0x80A87580; // type:func +EnYabusameMark_Destroy = 0x80A87FD0; // type:func +EnYabusameMark_Init = 0x80A87FFC; // type:func +func_80B42F74 = 0x80A8813C; // type:func +EnYabusameMark_Update = 0x80A88380; // type:func +EnGoroiwa_UpdateCollider = 0x80A886A0; // type:func +EnGoroiwa_InitCollider = 0x80A8870C; // type:func +EnGoroiwa_UpdateFlags = 0x80A88774; // type:func +EnGoroiwa_Vec3fNormalize = 0x80A88798; // type:func +EnGoroiwa_SetSpeed = 0x80A8881C; // type:func +EnGoroiwa_FaceNextWaypoint = 0x80A88844; // type:func +EnGoroiwa_GetPrevWaypointDiff = 0x80A8891C; // type:func +EnGoroiw_CheckEndOfPath = 0x80A88A78; // type:func +EnGoroiwa_SetNextWaypoint = 0x80A88B2C; // type:func +EnGoroiwa_ReverseDirection = 0x80A88B5C; // type:func +EnGoroiwa_InitPath = 0x80A88B84; // type:func +EnGoroiwa_TeleportToWaypoint = 0x80A88BC4; // type:func +EnGoroiwa_InitRotation = 0x80A88C68; // type:func +EnGoroiwa_GetAscendDirection = 0x80A88C84; // type:func +EnGoroiwa_SpawnDust = 0x80A88D48; // type:func +EnGoroiwa_SpawnWaterEffects = 0x80A88F38; // type:func +EnGoroiwa_MoveAndFall = 0x80A8906C; // type:func +EnGoroiwa_Move = 0x80A891A0; // type:func +EnGoroiwa_MoveUpToNextWaypoint = 0x80A893CC; // type:func +EnGoroiwa_MoveDownToNextWaypoint = 0x80A894EC; // type:func +EnGoroiwa_UpdateRotation = 0x80A8984C; // type:func +EnGoroiwa_NextWaypoint = 0x80A899EC; // type:func +EnGoroiwa_SpawnFragments = 0x80A89A74; // type:func +EnGoroiwa_Init = 0x80A89D90; // type:func +EnGoroiwa_Destroy = 0x80A89EC0; // type:func +EnGoroiwa_SetupRoll = 0x80A89EEC; // type:func +EnGoroiwa_Roll = 0x80A89F2C; // type:func +EnGoroiwa_SetupMoveAndFallToGround = 0x80A8A1B0; // type:func +EnGoroiwa_MoveAndFallToGround = 0x80A8A224; // type:func +EnGoroiwa_SetupWait = 0x80A8A2C4; // type:func +EnGoroiwa_Wait = 0x80A8A320; // type:func +EnGoroiwa_SetupMoveUp = 0x80A8A360; // type:func +EnGoroiwa_MoveUp = 0x80A8A3B0; // type:func +EnGoroiwa_SetupMoveDown = 0x80A8A470; // type:func +EnGoroiwa_MoveDown = 0x80A8A4DC; // type:func +EnGoroiwa_Update = 0x80A8A5A4; // type:func +EnGoroiwa_Draw = 0x80A8A704; // type:func +EnExRuppy_Init = 0x80A8AA60; // type:func +EnExRuppy_Destroy = 0x80A8AE38; // type:func +EnExRuppy_SpawnSparkles = 0x80A8AE48; // type:func +EnExRuppy_DropIntoWater = 0x80A8B064; // type:func +EnExRuppy_EnterWater = 0x80A8B144; // type:func +EnExRuppy_Sink = 0x80A8B2B0; // type:func +EnExRuppy_WaitInGame = 0x80A8B3B0; // type:func +EnExRuppy_Kill = 0x80A8B508; // type:func +EnExRuppy_WaitToBlowUp = 0x80A8B54C; // type:func +EnExRuppy_WaitAsCollectible = 0x80A8B678; // type:func +EnExRuppy_GalleryTarget = 0x80A8B6FC; // type:func +EnExRuppy_Update = 0x80A8B75C; // type:func +EnExRuppy_Draw = 0x80A8B7E8; // type:func +EnToryo_Init = 0x80A8BB20; // type:func +EnToryo_Destroy = 0x80A8BD64; // type:func +EnToryo_TalkRespond = 0x80A8BD90; // type:func +EnToryo_DoneTalking = 0x80A8BF84; // type:func +EnToryo_ReactToExchangeItem = 0x80A8BFF0; // type:func +EnToryo_GetTextId = 0x80A8C05C; // type:func +EnToryo_HandleTalking = 0x80A8C128; // type:func +EnToryo_Idle = 0x80A8C2D8; // type:func +EnToryo_Update = 0x80A8C33C; // type:func +EnToryo_Draw = 0x80A8C474; // type:func +EnToryo_OverrideLimbDraw = 0x80A8C4D4; // type:func +EnToryo_PostLimbDraw = 0x80A8C564; // type:func +EnDaiku_ChangeAnim = 0x80A8C7B0; // type:func +EnDaiku_Init = 0x80A8C864; // type:func +EnDaiku_Destroy = 0x80A8CBAC; // type:func +EnDaiku_UpdateTalking = 0x80A8CBD8; // type:func +EnDaiku_UpdateText = 0x80A8CCF4; // type:func +EnDaiku_TentIdle = 0x80A8CFC4; // type:func +EnDaiku_Jailed = 0x80A8CFFC; // type:func +EnDaiku_WaitFreedom = 0x80A8D0CC; // type:func +EnDaiku_InitEscape = 0x80A8D130; // type:func +EnDaiku_EscapeRotate = 0x80A8D338; // type:func +EnDaiku_InitSubCamera = 0x80A8D3A4; // type:func +EnDaiku_UpdateSubCamera = 0x80A8D530; // type:func +EnDaiku_EscapeSuccess = 0x80A8D5E8; // type:func +EnDaiku_EscapeRun = 0x80A8D724; // type:func +EnDaiku_Update = 0x80A8D930; // type:func +EnDaiku_Draw = 0x80A8DA48; // type:func +EnDaiku_OverrideLimbDraw = 0x80A8DB70; // type:func +EnDaiku_PostLimbDraw = 0x80A8DBF4; // type:func +EnNwc_SetUpdate = 0x80A8DEF0; // type:func +EnNwc_ChickNoop = 0x80A8DEFC; // type:func +EnNwc_ChickBgCheck = 0x80A8DF10; // type:func +EnNwc_ChickFall = 0x80A8E00C; // type:func +EnNwc_UpdateChicks = 0x80A8E078; // type:func +EnNwc_DrawChicks = 0x80A8E278; // type:func +EnNwc_Init = 0x80A8E5D4; // type:func +EnNwc_Destroy = 0x80A8E760; // type:func +EnNwc_Idle = 0x80A8E78C; // type:func +EnNwc_Update = 0x80A8E7AC; // type:func +EnNwc_Draw = 0x80A8E800; // type:func +EnBlkobj_SetupAction = 0x80A8E910; // type:func +EnBlkobj_Init = 0x80A8E920; // type:func +EnBlkobj_Destroy = 0x80A8E9D0; // type:func +EnBlkobj_Wait = 0x80A8EA04; // type:func +EnBlkobj_SpawnDarkLink = 0x80A8EA58; // type:func +EnBlkobj_DarkLinkFight = 0x80A8EAD0; // type:func +EnBlkobj_DoNothing = 0x80A8EBAC; // type:func +EnBlkobj_Update = 0x80A8EBBC; // type:func +EnBlkobj_DrawAlpha = 0x80A8EBE0; // type:func +EnBlkobj_Draw = 0x80A8EC5C; // type:func +ItemInbox_Init = 0x80A8EE70; // type:func +ItemInbox_Destroy = 0x80A8EEA4; // type:func +ItemInbox_Wait = 0x80A8EEB4; // type:func +ItemInbox_Update = 0x80A8EEFC; // type:func +ItemInbox_Draw = 0x80A8EF20; // type:func +EnGe1_Init = 0x80A8EFD0; // type:func +EnGe1_Destroy = 0x80A8F294; // type:func +EnGe1_SetTalkAction = 0x80A8F2C0; // type:func +EnGe1_SetAnimationIdle = 0x80A8F3A0; // type:func +EnGe1_CheckAllCarpentersRescued = 0x80A8F424; // type:func +EnGe1_KickPlayer = 0x80A8F460; // type:func +EnGe1_SpotPlayer = 0x80A8F540; // type:func +EnGe1_WatchForPlayerFrontOnly = 0x80A8F5A0; // type:func +EnGe1_ChooseActionFromTextId = 0x80A8F658; // type:func +EnGe1_SetNormalText = 0x80A8F6EC; // type:func +EnGe1_WatchForAndSensePlayer = 0x80A8F71C; // type:func +EnGe1_GetReaction_ValleyFloor = 0x80A8F7E8; // type:func +EnGe1_WaitTillOpened_GTGGuard = 0x80A8F83C; // type:func +EnGe1_Open_GTGGuard = 0x80A8F88C; // type:func +EnGe1_SetupOpen_GTGGuard = 0x80A8F93C; // type:func +EnGe1_RefuseEntryTooPoor_GTGGuard = 0x80A8F9FC; // type:func +EnGe1_OfferOpen_GTGGuard = 0x80A8FA3C; // type:func +EnGe1_RefuseOpenNoCard_GTGGuard = 0x80A8FB2C; // type:func +EnGe1_CheckForCard_GTGGuard = 0x80A8FB70; // type:func +EnGe1_WaitGateOpen_GateOp = 0x80A8FBD8; // type:func +EnGe1_WaitUntilGateOpened_GateOp = 0x80A8FC4C; // type:func +EnGe1_OpenGate_GateOp = 0x80A8FC9C; // type:func +EnGe1_SetupOpenGate_GateOp = 0x80A8FD4C; // type:func +EnGe1_CheckGate_GateOp = 0x80A8FE18; // type:func +EnGe1_Talk_GateGuard = 0x80A8FE94; // type:func +EnGe1_GetReaction_GateGuard = 0x80A8FED8; // type:func +EnGe1_SetupWait_Archery = 0x80A8FF8C; // type:func +EnGe1_WaitTillItemGiven_Archery = 0x80A8FFC4; // type:func +EnGe1_BeginGiveItem_Archery = 0x80A900B8; // type:func +EnGe1_TalkWinPrize_Archery = 0x80A90180; // type:func +EnGe1_TalkTooPoor_Archery = 0x80A901E0; // type:func +EnGe1_WaitDoNothing = 0x80A90244; // type:func +EnGe1_BeginGame_Archery = 0x80A90254; // type:func +EnGe1_TalkOfferPlay_Archery = 0x80A903F4; // type:func +EnGe1_TalkNoPrize_Archery = 0x80A90454; // type:func +EnGe1_TalkAfterGame_Archery = 0x80A904A0; // type:func +EnGe1_TalkNoHorse_Archery = 0x80A905A4; // type:func +EnGe1_Wait_Archery = 0x80A905E8; // type:func +EnGe1_TurnToFacePlayer = 0x80A90680; // type:func +EnGe1_LookAtPlayer = 0x80A90798; // type:func +EnGe1_Update = 0x80A90874; // type:func +EnGe1_CueUpAnimation = 0x80A909BC; // type:func +EnGe1_StopFidget = 0x80A909FC; // type:func +EnGe1_OverrideLimbDraw = 0x80A90A54; // type:func +EnGe1_PostLimbDraw = 0x80A90BA8; // type:func +EnGe1_Draw = 0x80A90C14; // type:func +ObjBlockstop_Init = 0x80A91000; // type:func +ObjBlockstop_Destroy = 0x80A9105C; // type:func +ObjBlockstop_Update = 0x80A9106C; // type:func +EnSda_Init = 0x80A911A0; // type:func +EnSda_Destroy = 0x80A911B0; // type:func +EnSda_Update = 0x80A911C0; // type:func +EnSda_Draw = 0x80A911FC; // type:func +func_80AF8F60 = 0x80A91290; // type:func +func_80AF95C4 = 0x80A918F4; // type:func +func_80AF9C70 = 0x80A91F70; // type:func +EnClearTag_CreateDebrisEffect = 0x80A92890; // type:func +EnClearTag_CreateFireEffect = 0x80A92988; // type:func +EnClearTag_CreateSmokeEffect = 0x80A92A78; // type:func +EnClearTag_CreateFlashEffect = 0x80A92B9C; // type:func +EnClearTag_Destroy = 0x80A92C74; // type:func +EnClearTag_Init = 0x80A92CA0; // type:func +EnClearTag_CalculateFloorTangent = 0x80A92E64; // type:func +EnClearTag_Update = 0x80A92F20; // type:func +EnClearTag_Draw = 0x80A93CD4; // type:func +EnClearTag_UpdateEffects = 0x80A94268; // type:func +EnClearTag_DrawEffects = 0x80A94630; // type:func +EnNiwLady_Init = 0x80A9DE30; // type:func +EnNiwLady_Destroy = 0x80A9DF18; // type:func +EnNiwLady_ChoseAnimation = 0x80A9DF44; // type:func +func_80AB9F24 = 0x80A9E10C; // type:func +func_80ABA21C = 0x80A9E408; // type:func +func_80ABA244 = 0x80A9E434; // type:func +func_80ABA654 = 0x80A9E7B4; // type:func +func_80ABA778 = 0x80A9E8AC; // type:func +func_80ABA878 = 0x80A9E980; // type:func +func_80ABA9B8 = 0x80A9EAC4; // type:func +func_80ABAA9C = 0x80A9EBA8; // type:func +func_80ABAB08 = 0x80A9EC18; // type:func +func_80ABAC00 = 0x80A9ED10; // type:func +func_80ABAC84 = 0x80A9ED98; // type:func +func_80ABAD38 = 0x80A9EE40; // type:func +func_80ABAD7C = 0x80A9EE60; // type:func +EnNiwLady_Update = 0x80A9EF24; // type:func +EnNiwLady_EmptyDList = 0x80A9F18C; // type:func +EnNiwLady_OverrideLimbDraw = 0x80A9F1B0; // type:func +EnNiwLady_Draw = 0x80A9F30C; // type:func +EnGm_Init = 0x80A9F730; // type:func +EnGm_Destroy = 0x80A9F790; // type:func +func_80A3D7C8 = 0x80A9F7BC; // type:func +func_80A3D838 = 0x80A9F82C; // type:func +EnGm_UpdateEye = 0x80A9F9CC; // type:func +EnGm_SetTextID = 0x80A9FA44; // type:func +func_80A3DB04 = 0x80A9FAF8; // type:func +func_80A3DBF4 = 0x80A9FBE8; // type:func +func_80A3DC44 = 0x80A9FC3C; // type:func +func_80A3DD7C = 0x80A9FD78; // type:func +EnGm_ProcessChoiceIndex = 0x80A9FE10; // type:func +func_80A3DF00 = 0x80A9FF00; // type:func +func_80A3DF60 = 0x80A9FF64; // type:func +func_80A3DFBC = 0x80A9FFC4; // type:func +EnGm_Update = 0x80AA0078; // type:func +func_80A3E090 = 0x80AA009C; // type:func +EnGm_Draw = 0x80AA01FC; // type:func +EnMs_SetOfferText = 0x80AA0460; // type:func +EnMs_Init = 0x80AA04DC; // type:func +EnMs_Destroy = 0x80AA0600; // type:func +EnMs_Wait = 0x80AA062C; // type:func +EnMs_Talk = 0x80AA06D8; // type:func +EnMs_Sell = 0x80AA07F4; // type:func +EnMs_TalkAfterPurchase = 0x80AA0890; // type:func +EnMs_Update = 0x80AA08F0; // type:func +EnMs_Draw = 0x80AA09E8; // type:func +func_80A6E3A0 = 0x80AA0B50; // type:func +EnHs_Init = 0x80AA0B5C; // type:func +EnHs_Destroy = 0x80AA0CA0; // type:func +func_80A6E53C = 0x80AA0CCC; // type:func +func_80A6E5EC = 0x80AA0D80; // type:func +func_80A6E630 = 0x80AA0DC4; // type:func +func_80A6E6B0 = 0x80AA0E44; // type:func +func_80A6E6D8 = 0x80AA0E6C; // type:func +func_80A6E70C = 0x80AA0EA4; // type:func +func_80A6E740 = 0x80AA0EDC; // type:func +func_80A6E7BC = 0x80AA0F5C; // type:func +func_80A6E8CC = 0x80AA106C; // type:func +func_80A6E9AC = 0x80AA1148; // type:func +EnHs_Update = 0x80AA1290; // type:func +EnHs_OverrideLimbDraw = 0x80AA13FC; // type:func +EnHs_PostLimbDraw = 0x80AA14B8; // type:func +EnHs_Draw = 0x80AA14F8; // type:func +BgInGate_SetupAction = 0x80AA16F0; // type:func +BgInGate_Init = 0x80AA16FC; // type:func +BgInGate_Destroy = 0x80AA1818; // type:func +func_80892890 = 0x80AA184C; // type:func +BgInGate_DoNothing = 0x80AA194C; // type:func +BgInGate_Update = 0x80AA195C; // type:func +BgInGate_Draw = 0x80AA1980; // type:func +EnKanban_SetFloorRot = 0x80AA1A80; // type:func +EnKanban_Init = 0x80AA1B3C; // type:func +EnKanban_Destroy = 0x80AA1C64; // type:func +EnKanban_Message = 0x80AA1C9C; // type:func +EnKanban_Update = 0x80AA1D54; // type:func +EnKanban_Draw = 0x80AA35D0; // type:func +EnHeishi3_Init = 0x80AA4BD0; // type:func +EnHeishi3_Destroy = 0x80AA4CFC; // type:func +EnHeishi3_SetupGuardType = 0x80AA4D28; // type:func +EnHeishi3_StandSentinelInGrounds = 0x80AA4DD8; // type:func +EnHeishi3_StandSentinelInCastle = 0x80AA4F34; // type:func +EnHeishi3_CatchStart = 0x80AA50A4; // type:func +func_80A55BD4 = 0x80AA514C; // type:func +EnHeishi3_ResetAnimationToIdle = 0x80AA51E4; // type:func +func_80A55D00 = 0x80AA5278; // type:func +EnHeishi3_Update = 0x80AA5328; // type:func +EnHeishi3_OverrideLimbDraw = 0x80AA5408; // type:func +EnHeishi3_Draw = 0x80AA5470; // type:func +EnSyatekiNiw_Init = 0x80AA55A0; // type:func +EnSyatekiNiw_Destroy = 0x80AA56E8; // type:func +EnSyatekiNiw_UpdateRotations = 0x80AA5714; // type:func +EnSyatekiNiw_SetupDefault = 0x80AA5A70; // type:func +EnSyatekiNiw_Default = 0x80AA5AFC; // type:func +EnSyatekiNiw_SetupArchery = 0x80AA602C; // type:func +EnSyatekiNiw_Archery = 0x80AA60E4; // type:func +EnSyatekiNiw_ExitArchery = 0x80AA6560; // type:func +EnSyatekiNiw_SetupRemove = 0x80AA6580; // type:func +EnSyatekiNiw_Remove = 0x80AA6678; // type:func +EnSyatekiNiw_CheckHit = 0x80AA6834; // type:func +EnSyatekiNiw_Update = 0x80AA6904; // type:func +SyatekiNiw_OverrideLimbDraw = 0x80AA6C74; // type:func +EnSyatekiNiw_Draw = 0x80AA6DA4; // type:func +EnSyatekiNiw_SpawnFeather = 0x80AA6E50; // type:func +EnSyatekiNiw_UpdateEffects = 0x80AA6F40; // type:func +EnSyatekiNiw_DrawEffects = 0x80AA70FC; // type:func +EnAttackNiw_Init = 0x80AA7630; // type:func +EnAttackNiw_Destroy = 0x80AA7764; // type:func +func_809B5268 = 0x80AA7798; // type:func +func_809B55EC = 0x80AA7B20; // type:func +func_809B5670 = 0x80AA7BA4; // type:func +func_809B59B0 = 0x80AA7EE4; // type:func +func_809B5C18 = 0x80AA8154; // type:func +EnAttackNiw_Update = 0x80AA8218; // type:func +func_809B5F98 = 0x80AA84DC; // type:func +EnAttackNiw_Draw = 0x80AA8634; // type:func +BgSpot01Idosoko_SetupAction = 0x80AA8890; // type:func +BgSpot01Idosoko_Init = 0x80AA889C; // type:func +BgSpot01Idosoko_Destroy = 0x80AA893C; // type:func +func_808ABF54 = 0x80AA8970; // type:func +BgSpot01Idosoko_Update = 0x80AA8980; // type:func +BgSpot01Idosoko_Draw = 0x80AA89A4; // type:func +func_80AF5560 = 0x80AA8AA0; // type:func +EnSa_GetTextId = 0x80AA8B20; // type:func +EnSa_UpdateTalkState = 0x80AA8C34; // type:func +func_80AF57D8 = 0x80AA8D18; // type:func +func_80AF5894 = 0x80AA8DD8; // type:func +func_80AF58B8 = 0x80AA8E00; // type:func +func_80AF594C = 0x80AA8E94; // type:func +func_80AF59E0 = 0x80AA8F28; // type:func +func_80AF5A74 = 0x80AA8FBC; // type:func +func_80AF5B10 = 0x80AA9058; // type:func +func_80AF5BA4 = 0x80AA90EC; // type:func +func_80AF5C40 = 0x80AA9188; // type:func +func_80AF5CD4 = 0x80AA921C; // type:func +func_80AF5CE4 = 0x80AA9234; // type:func +EnSa_ChangeAnim = 0x80AA92DC; // type:func +func_80AF5DFC = 0x80AA934C; // type:func +func_80AF5F34 = 0x80AA9484; // type:func +func_80AF603C = 0x80AA958C; // type:func +func_80AF609C = 0x80AA95EC; // type:func +func_80AF6130 = 0x80AA9688; // type:func +func_80AF6170 = 0x80AA96CC; // type:func +EnSa_Init = 0x80AA9710; // type:func +EnSa_Destroy = 0x80AA9980; // type:func +func_80AF6448 = 0x80AA99AC; // type:func +func_80AF67D0 = 0x80AA9D38; // type:func +func_80AF683C = 0x80AA9DAC; // type:func +func_80AF68E4 = 0x80AA9E54; // type:func +func_80AF6B20 = 0x80AAA094; // type:func +EnSa_Update = 0x80AAA154; // type:func +EnSa_OverrideLimbDraw = 0x80AAA2E4; // type:func +EnSa_PostLimbDraw = 0x80AAA48C; // type:func +EnSa_Draw = 0x80AAA4E8; // type:func +EnWonderTalk_Destroy = 0x80AAAD10; // type:func +EnWonderTalk_Init = 0x80AAAD20; // type:func +func_80B391CC = 0x80AAADC8; // type:func +func_80B3943C = 0x80AAAF58; // type:func +func_80B395F0 = 0x80AAB0AC; // type:func +EnWonderTalk_Update = 0x80AAB29C; // type:func +BgGjyoBridge_Init = 0x80AAB3A0; // type:func +BgGjyoBridge_Destroy = 0x80AAB458; // type:func +func_808787A4 = 0x80AAB48C; // type:func +BgGjyoBridge_TriggerCutscene = 0x80AAB49C; // type:func +BgGjyoBridge_SpawnBridge = 0x80AAB5F4; // type:func +BgGjyoBridge_Update = 0x80AAB670; // type:func +BgGjyoBridge_Draw = 0x80AAB694; // type:func +EnDs_Init = 0x80AAB890; // type:func +EnDs_Destroy = 0x80AAB960; // type:func +EnDs_Talk = 0x80AAB970; // type:func +EnDs_TalkNoEmptyBottle = 0x80AAB9C0; // type:func +EnDs_TalkAfterGiveOddPotion = 0x80AABA2C; // type:func +EnDs_DisplayOddPotionText = 0x80AABA88; // type:func +EnDs_GiveOddPotion = 0x80AABAE8; // type:func +EnDs_TalkAfterBrewOddPotion = 0x80AABB54; // type:func +EnDs_BrewOddPotion3 = 0x80AABBD4; // type:func +EnDs_BrewOddPotion2 = 0x80AABC78; // type:func +EnDs_BrewOddPotion1 = 0x80AABCCC; // type:func +EnDs_OfferOddPotion = 0x80AABD6C; // type:func +EnDs_CheckRupeesAndBottle = 0x80AABE38; // type:func +EnDs_GiveBluePotion = 0x80AABE88; // type:func +EnDs_OfferBluePotion = 0x80AABEEC; // type:func +EnDs_Wait = 0x80AAC024; // type:func +EnDs_Update = 0x80AAC1A8; // type:func +EnDs_OverrideLimbDraw = 0x80AAC2B0; // type:func +EnDs_PostLimbDraw = 0x80AAC2F8; // type:func +EnDs_Draw = 0x80AAC338; // type:func +EnMk_Init = 0x80AAC4B0; // type:func +EnMk_Destroy = 0x80AAC5C8; // type:func +func_80AACA40 = 0x80AAC5F4; // type:func +func_80AACA94 = 0x80AAC644; // type:func +func_80AACB14 = 0x80AAC6CC; // type:func +func_80AACB6C = 0x80AAC728; // type:func +func_80AACBAC = 0x80AAC764; // type:func +func_80AACC04 = 0x80AAC7BC; // type:func +func_80AACCA0 = 0x80AAC858; // type:func +func_80AACD48 = 0x80AAC900; // type:func +func_80AACE2C = 0x80AAC9E4; // type:func +func_80AACEE8 = 0x80AACAA0; // type:func +func_80AACFA0 = 0x80AACB58; // type:func +func_80AAD014 = 0x80AACBD0; // type:func +EnMk_Wait = 0x80AACC3C; // type:func +EnMk_Update = 0x80AACE90; // type:func +EnMk_OverrideLimbDraw = 0x80AAD0DC; // type:func +EnMk_PostLimbDraw = 0x80AAD124; // type:func +EnMk_Draw = 0x80AAD164; // type:func +EnBomBowlMan_Init = 0x80AAD340; // type:func +EnBomBowlMan_Destroy = 0x80AAD500; // type:func +EnBomBowlMan_SetupWaitAsleep = 0x80AAD510; // type:func +EnBomBowlMan_WaitAsleep = 0x80AAD598; // type:func +EnBomBowlMan_TalkAsleep = 0x80AAD64C; // type:func +EnBomBowlMan_WakeUp = 0x80AAD6C4; // type:func +EnBomBowlMan_BlinkAwake = 0x80AAD748; // type:func +EnBomBowlMan_CheckBeatenDC = 0x80AAD844; // type:func +EnBomBowlMan_WaitNotBeatenDC = 0x80AAD970; // type:func +EnBomBowlMan_TalkNotBeatenDC = 0x80AAD9CC; // type:func +EnBomBowlMan_SetupRunGame = 0x80AADA3C; // type:func +EnBomBowlMan_RunGame = 0x80AADAC0; // type:func +EnBomBowlMan_HandlePlayChoice = 0x80AADCD0; // type:func +func_809C41FC = 0x80AADE8C; // type:func +EnBomBowlMan_SetupChooseShowPrize = 0x80AADFA8; // type:func +EnBomBowlMan_ChooseShowPrize = 0x80AAE0AC; // type:func +EnBomBowlMan_BeginPlayGame = 0x80AAE2F4; // type:func +EnBomBowlMan_Update = 0x80AAE3B0; // type:func +EnBomBowlMan_OverrideLimbDraw = 0x80AAE528; // type:func +EnBomBowlMan_Draw = 0x80AAE570; // type:func +EnBomBowlPit_Init = 0x80AAE880; // type:func +EnBomBowlPit_Destroy = 0x80AAE898; // type:func +EnBomBowlPit_SetupDetectHit = 0x80AAE8A8; // type:func +EnBomBowlPit_DetectHit = 0x80AAE8D4; // type:func +EnBomBowlPit_CameraDollyIn = 0x80AAEBCC; // type:func +EnBomBowlPit_SpawnPrize = 0x80AAEDA8; // type:func +EnBomBowlPit_SetupGivePrize = 0x80AAEE38; // type:func +EnBomBowlPit_GivePrize = 0x80AAEEF0; // type:func +EnBomBowlPit_WaitTillPrizeGiven = 0x80AAEFF4; // type:func +EnBomBowlPit_Reset = 0x80AAF050; // type:func +EnBomBowlPit_Update = 0x80AAF0D0; // type:func +EnOwl_Init = 0x80AAF1F0; // type:func +EnOwl_Destroy = 0x80AAF5D4; // type:func +EnOwl_LookAtLink = 0x80AAF600; // type:func +EnOwl_CheckInitTalk = 0x80AAF63C; // type:func +func_80ACA558 = 0x80AAF7A8; // type:func +func_80ACA5C8 = 0x80AAF81C; // type:func +func_80ACA62C = 0x80AAF87C; // type:func +func_80ACA690 = 0x80AAF8C8; // type:func +func_80ACA6C0 = 0x80AAF8F8; // type:func +func_80ACA71C = 0x80AAF954; // type:func +func_80ACA76C = 0x80AAF9A0; // type:func +func_80ACA7E0 = 0x80AAFA14; // type:func +EnOwl_ConfirmKokiriMessage = 0x80AAFAC0; // type:func +EnOwl_WaitOutsideKokiri = 0x80AAFB60; // type:func +func_80ACA998 = 0x80AAFBD8; // type:func +func_80ACAA54 = 0x80AAFC98; // type:func +func_80ACAAC0 = 0x80AAFD08; // type:func +EnOwl_WaitHyruleCastle = 0x80AAFD78; // type:func +func_80ACAB88 = 0x80AAFDDC; // type:func +func_80ACAC6C = 0x80AAFEC4; // type:func +EnOwl_WaitKakariko = 0x80AAFF34; // type:func +func_80ACAD34 = 0x80AAFF98; // type:func +func_80ACADF0 = 0x80AB0058; // type:func +EnOwl_WaitGerudo = 0x80AB00C8; // type:func +func_80ACAEB8 = 0x80AB012C; // type:func +func_80ACAF74 = 0x80AB01EC; // type:func +EnOwl_WaitLakeHylia = 0x80AB025C; // type:func +func_80ACB03C = 0x80AB02C0; // type:func +EnOwl_WaitZoraRiver = 0x80AB0334; // type:func +func_80ACB148 = 0x80AB03D4; // type:func +EnOwl_WaitHyliaShortcut = 0x80AB0434; // type:func +func_80ACB22C = 0x80AB04C0; // type:func +func_80ACB274 = 0x80AB050C; // type:func +EnOwl_WaitDeathMountainShortcut = 0x80AB0550; // type:func +func_80ACB344 = 0x80AB05E4; // type:func +func_80ACB3E0 = 0x80AB0684; // type:func +func_80ACB440 = 0x80AB06EC; // type:func +func_80ACB4FC = 0x80AB07AC; // type:func +EnOwl_WaitLWPreSaria = 0x80AB081C; // type:func +func_80ACB5C4 = 0x80AB0880; // type:func +func_80ACB680 = 0x80AB0940; // type:func +EnOwl_WaitLWPostSaria = 0x80AB09B0; // type:func +func_80ACB748 = 0x80AB0A14; // type:func +func_80ACB904 = 0x80AB0BD0; // type:func +func_80ACB994 = 0x80AB0C68; // type:func +EnOwl_WaitDefault = 0x80AB0D00; // type:func +func_80ACBAB8 = 0x80AB0D94; // type:func +func_80ACBC0C = 0x80AB0EE8; // type:func +func_80ACBD4C = 0x80AB1024; // type:func +func_80ACBEA0 = 0x80AB1178; // type:func +func_80ACBF50 = 0x80AB1228; // type:func +func_80ACC00C = 0x80AB12E4; // type:func +func_80ACC23C = 0x80AB14A8; // type:func +func_80ACC30C = 0x80AB1574; // type:func +func_80ACC390 = 0x80AB15F8; // type:func +func_80ACC460 = 0x80AB16C8; // type:func +func_80ACC540 = 0x80AB17A8; // type:func +func_80ACC5CC = 0x80AB1834; // type:func +func_80ACC624 = 0x80AB188C; // type:func +EnOwl_Update = 0x80AB1908; // type:func +EnOwl_OverrideLimbDraw = 0x80AB2058; // type:func +EnOwl_PostLimbUpdate = 0x80AB2184; // type:func +EnOwl_Draw = 0x80AB2208; // type:func +EnOwl_ChangeMode = 0x80AB22D4; // type:func +func_80ACD130 = 0x80AB234C; // type:func +func_80ACD1C4 = 0x80AB23E0; // type:func +func_80ACD220 = 0x80AB2440; // type:func +func_80ACD2CC = 0x80AB24EC; // type:func +func_80ACD4D4 = 0x80AB26F4; // type:func +EnIshi_InitCollider = 0x80AB2D90; // type:func +EnIshi_SnapToFloor = 0x80AB2E08; // type:func +EnIshi_SpawnFragmentsSmall = 0x80AB2EAC; // type:func +EnIshi_SpawnFragmentsLarge = 0x80AB3128; // type:func +EnIshi_SpawnDustSmall = 0x80AB3414; // type:func +EnIshi_SpawnDustLarge = 0x80AB3508; // type:func +EnIshi_DropCollectible = 0x80AB35FC; // type:func +EnIshi_Fall = 0x80AB366C; // type:func +func_80A7ED94 = 0x80AB36A0; // type:func +EnIshi_SpawnBugs = 0x80AB3724; // type:func +EnIshi_Init = 0x80AB37E0; // type:func +EnIshi_Destroy = 0x80AB397C; // type:func +EnIshi_SetupWait = 0x80AB39A8; // type:func +EnIshi_Wait = 0x80AB39BC; // type:func +EnIshi_SetupLiftedUp = 0x80AB3C14; // type:func +EnIshi_LiftedUp = 0x80AB3C3C; // type:func +EnIshi_SetupFly = 0x80AB3D10; // type:func +EnIshi_Fly = 0x80AB3E3C; // type:func +EnIshi_Update = 0x80AB41A8; // type:func +EnIshi_DrawSmall = 0x80AB41CC; // type:func +EnIshi_DrawLarge = 0x80AB41FC; // type:func +EnIshi_Draw = 0x80AB42A4; // type:func +ObjHana_Init = 0x80ABBEE0; // type:func +ObjHana_Destroy = 0x80ABBFDC; // type:func +ObjHana_Update = 0x80ABC028; // type:func +ObjHana_Draw = 0x80ABC098; // type:func +ObjLightswitch_InitCollider = 0x80ABC1F0; // type:func +ObjLightswitch_SetSwitchFlag = 0x80ABC28C; // type:func +ObjLightswitch_ClearSwitchFlag = 0x80ABC350; // type:func +ObjLightswitch_SpawnDisappearEffects = 0x80ABC3D0; // type:func +ObjLightswitch_Init = 0x80ABC5F8; // type:func +ObjLightswitch_Destroy = 0x80ABC78C; // type:func +ObjLightswitch_SetupOff = 0x80ABC7B8; // type:func +ObjLightswitch_Off = 0x80ABC7EC; // type:func +ObjLightswitch_SetupTurnOn = 0x80ABC8CC; // type:func +ObjLightswitch_TurnOn = 0x80ABC8F0; // type:func +ObjLightswitch_SetupOn = 0x80ABC9E4; // type:func +ObjLightswitch_On = 0x80ABCA20; // type:func +ObjLightswitch_SetupTurnOff = 0x80ABCB34; // type:func +ObjLightswitch_TurnOff = 0x80ABCB60; // type:func +ObjLightswitch_SetupDisappearDelay = 0x80ABCC50; // type:func +ObjLightswitch_DisappearDelay = 0x80ABCC6C; // type:func +ObjLightswitch_SetupDisappear = 0x80ABCCB4; // type:func +ObjLightswitch_Disappear = 0x80ABCCD0; // type:func +ObjLightswitch_Update = 0x80ABCD14; // type:func +ObjLightswitch_DrawOpa = 0x80ABCDF8; // type:func +ObjLightswitch_DrawXlu = 0x80ABD120; // type:func +ObjLightswitch_Draw = 0x80ABD3D0; // type:func +ObjMure2_SetPosShrubCircle = 0x80ABD620; // type:func +ObjMure2_SetPosShrubScattered = 0x80ABD73C; // type:func +ObjMure2_SetPosRockCircle = 0x80ABD83C; // type:func +ObjMure2_SetActorSpawnParams = 0x80ABD948; // type:func +ObjMure2_SpawnActors = 0x80ABD99C; // type:func +ObjMure2_CleanupAndDie = 0x80ABDAF8; // type:func +func_80B9A534 = 0x80ABDBF8; // type:func +ObjMure2_Init = 0x80ABDC8C; // type:func +ObjMure2_SetupWait = 0x80ABDCEC; // type:func +ObjMure2_Wait = 0x80ABDD00; // type:func +func_80B9A658 = 0x80ABDD24; // type:func +func_80B9A668 = 0x80ABDD38; // type:func +func_80B9A6E8 = 0x80ABDDB8; // type:func +func_80B9A6F8 = 0x80ABDDCC; // type:func +ObjMure2_Update = 0x80ABDE5C; // type:func +EnGo_SetupAction = 0x80ABE040; // type:func +EnGo_GetTextID = 0x80ABE04C; // type:func +EnGo_UpdateTalkState = 0x80ABE3DC; // type:func +EnGo_UpdateTalking = 0x80ABE7FC; // type:func +EnGo_ChangeAnim = 0x80ABE8BC; // type:func +EnGo_IsActorSpawned = 0x80ABE96C; // type:func +EnGo_GetPlayerTrackingYOffset = 0x80ABEACC; // type:func +func_80A3F060 = 0x80ABEB44; // type:func +func_80A3F0E4 = 0x80ABEBC8; // type:func +EnGo_IsCameraModified = 0x80ABEC40; // type:func +EnGo_ReverseAnimation = 0x80ABED44; // type:func +EnGo_UpdateShadow = 0x80ABED5C; // type:func +EnGo_FollowPath = 0x80ABEDE8; // type:func +EnGo_SetMovedPos = 0x80ABEFA4; // type:func +EnGo_SpawnDust = 0x80ABF07C; // type:func +EnGo_IsRollingOnGround = 0x80ABF2A8; // type:func +func_80A3F908 = 0x80ABF3F4; // type:func +EnGo_Init = 0x80ABF624; // type:func +EnGo_Destroy = 0x80ABF974; // type:func +func_80A3FEB4 = 0x80ABF9B4; // type:func +EnGo_StopRolling = 0x80ABF9F8; // type:func +func_80A4008C = 0x80ABFB8C; // type:func +EnGo_GoronLinkRolling = 0x80ABFC1C; // type:func +EnGo_FireGenericActionFunc = 0x80ABFD14; // type:func +EnGo_CurledUp = 0x80ABFD24; // type:func +EnGo_WakeUp = 0x80ABFE24; // type:func +func_80A40494 = 0x80ABFFA0; // type:func +func_80A405CC = 0x80AC00D8; // type:func +EnGo_BiggoronActionFunc = 0x80AC01EC; // type:func +func_80A408D8 = 0x80AC03E4; // type:func +func_80A40A54 = 0x80AC0560; // type:func +func_80A40B1C = 0x80AC0628; // type:func +EnGo_GetItem = 0x80AC0680; // type:func +func_80A40C78 = 0x80AC0788; // type:func +EnGo_Eyedrops = 0x80AC0870; // type:func +func_80A40DCC = 0x80AC08E0; // type:func +EnGo_Update = 0x80AC0964; // type:func +EnGo_DrawCurledUp = 0x80AC0A74; // type:func +EnGo_DrawRolling = 0x80AC0B40; // type:func +EnGo_OverrideLimbDraw = 0x80AC0C6C; // type:func +EnGo_PostLimbDraw = 0x80AC0E88; // type:func +EnGo_Draw = 0x80AC0EE4; // type:func +EnGo_SpawnEffectDust = 0x80AC1084; // type:func +EnGo_UpdateEffects = 0x80AC1128; // type:func +EnGo_DrawEffects = 0x80AC1234; // type:func +EnFu_Init = 0x80AC2680; // type:func +EnFu_Destroy = 0x80AC2794; // type:func +func_80A1D94C = 0x80AC27C0; // type:func +func_80A1DA04 = 0x80AC287C; // type:func +EnFu_WaitChild = 0x80AC2918; // type:func +func_80A1DB60 = 0x80AC29DC; // type:func +func_80A1DBA0 = 0x80AC2A1C; // type:func +func_80A1DBD4 = 0x80AC2A54; // type:func +EnFu_WaitForPlayback = 0x80AC2BC4; // type:func +EnFu_TeachSong = 0x80AC2C2C; // type:func +EnFu_WaitAdult = 0x80AC2CA8; // type:func +EnFu_Update = 0x80AC2DF8; // type:func +EnFu_OverrideLimbDraw = 0x80AC2FA0; // type:func +EnFu_PostLimbDraw = 0x80AC30FC; // type:func +EnFu_Draw = 0x80AC313C; // type:func +EnChanger_Destroy = 0x80AC33D0; // type:func +EnChanger_Init = 0x80AC33E0; // type:func +EnChanger_Wait = 0x80AC38FC; // type:func +EnChanger_OpenChests = 0x80AC39A0; // type:func +EnChanger_SetHeartPieceFlag = 0x80AC3B50; // type:func +EnChanger_Update = 0x80AC3BA0; // type:func +BgJyaMegami_InitDynaPoly = 0x80AC3DB0; // type:func +BgJyaMegami_InitCollider = 0x80AC3E08; // type:func +BgJyaMegami_SpawnEffect = 0x80AC3E5C; // type:func +BgJyaMegami_SetupSpawnEffect = 0x80AC40A0; // type:func +BgJyaMegami_Init = 0x80AC419C; // type:func +BgJyaMegami_Destroy = 0x80AC4230; // type:func +BgJyaMegami_SetupDetectLight = 0x80AC4278; // type:func +BgJyaMegami_DetectLight = 0x80AC4294; // type:func +BgJyaMegami_SetupExplode = 0x80AC4420; // type:func +BgJyaMegami_Explode = 0x80AC44B8; // type:func +BgJyaMegami_Update = 0x80AC4840; // type:func +BgJyaMegami_DrawFace = 0x80AC4864; // type:func +BgJyaMegami_DrawExplode = 0x80AC49A8; // type:func +BgJyaMegami_Draw = 0x80AC4B74; // type:func +BgJyaLift_InitDynapoly = 0x80AC4FA0; // type:func +BgJyaLift_Init = 0x80AC4FF8; // type:func +BgJyaLift_Destroy = 0x80AC50B4; // type:func +BgJyaLift_SetInitPosY = 0x80AC50F8; // type:func +BgJyaLift_DelayMove = 0x80AC511C; // type:func +BgJyaLift_SetupMove = 0x80AC51A0; // type:func +BgJyaLift_Move = 0x80AC51B4; // type:func +BgJyaLift_SetFinalPosY = 0x80AC52D8; // type:func +BgJyaLift_Update = 0x80AC52F0; // type:func +BgJyaLift_Draw = 0x80AC53E0; // type:func +BgJyaBigmirror_SetRoomFlag = 0x80AC54F0; // type:func +BgJyaBigmirror_HandleCobra = 0x80AC5560; // type:func +BgJyaBigmirror_SetBombiwaFlag = 0x80AC56F8; // type:func +BgJyaBigmirror_HandleMirRay = 0x80AC574C; // type:func +BgJyaBigmirror_Init = 0x80AC58F4; // type:func +BgJyaBigmirror_Destroy = 0x80AC5978; // type:func +BgJyaBigmirror_Update = 0x80AC5998; // type:func +BgJyaBigmirror_DrawLightBeam = 0x80AC59E8; // type:func +BgJyaBigmirror_Draw = 0x80AC5B74; // type:func +BgJyaBombchuiwa_SetupCollider = 0x80AC5D40; // type:func +BgJyaBombchuiwa_SetDrawFlags = 0x80AC5D94; // type:func +BgJyaBombchuiwa_Init = 0x80AC5DB8; // type:func +BgJyaBombchuiwa_Destroy = 0x80AC5E38; // type:func +BgJyaBombchuiwa_Break = 0x80AC5E64; // type:func +BgJyaBombchuiwa_SetupWaitForExplosion = 0x80AC60F0; // type:func +BgJyaBombchuiwa_WaitForExplosion = 0x80AC6128; // type:func +BgJyaBombchuiwa_CleanUpAfterExplosion = 0x80AC620C; // type:func +func_808949B8 = 0x80AC6264; // type:func +BgJyaBombchuiwa_SpawnLightRay = 0x80AC62F0; // type:func +BgJyaBombchuiwa_Update = 0x80AC6368; // type:func +BgJyaBombchuiwa_DrawRock = 0x80AC6394; // type:func +BgJyaBombchuiwa_DrawLight = 0x80AC641C; // type:func +BgJyaBombchuiwa_Draw = 0x80AC6678; // type:func +BgJyaAmishutter_InitDynaPoly = 0x80AC6880; // type:func +BgJyaAmishutter_Init = 0x80AC68D8; // type:func +BgJyaAmishutter_Destroy = 0x80AC6920; // type:func +BgJyaAmishutter_SetupWaitForPlayer = 0x80AC6954; // type:func +BgJyaAmishutter_WaitForPlayer = 0x80AC6968; // type:func +func_80893428 = 0x80AC69C4; // type:func +func_80893438 = 0x80AC69D8; // type:func +func_808934B0 = 0x80AC6A50; // type:func +func_808934C0 = 0x80AC6A64; // type:func +func_808934FC = 0x80AC6AA0; // type:func +func_8089350C = 0x80AC6AB4; // type:func +BgJyaAmishutter_Update = 0x80AC6B18; // type:func +BgJyaAmishutter_Draw = 0x80AC6B40; // type:func +BgJyaBombiwa_SetupDynaPoly = 0x80AC6C10; // type:func +BgJyaBombiwa_InitCollider = 0x80AC6C68; // type:func +BgJyaBombiwa_Init = 0x80AC6CBC; // type:func +BgJyaBombiwa_Destroy = 0x80AC6D3C; // type:func +BgJyaBombiwa_Break = 0x80AC6D84; // type:func +BgJyaBombiwa_Update = 0x80AC7018; // type:func +BgJyaBombiwa_Draw = 0x80AC70A8; // type:func +func_808B7710 = 0x80AC71D0; // type:func +func_808B7770 = 0x80AC722C; // type:func +BgSpot18Basket_Init = 0x80AC73E8; // type:func +BgSpot18Basket_Destroy = 0x80AC7534; // type:func +func_808B7AEC = 0x80AC757C; // type:func +func_808B7AFC = 0x80AC7590; // type:func +func_808B7B58 = 0x80AC75EC; // type:func +func_808B7B6C = 0x80AC7604; // type:func +func_808B7BB0 = 0x80AC7648; // type:func +func_808B7BCC = 0x80AC7668; // type:func +func_808B7D38 = 0x80AC77D4; // type:func +func_808B7D50 = 0x80AC77F0; // type:func +func_808B7F74 = 0x80AC7A14; // type:func +func_808B7FC0 = 0x80AC7A64; // type:func +func_808B818C = 0x80AC7C30; // type:func +func_808B81A0 = 0x80AC7C48; // type:func +BgSpot18Basket_Update = 0x80AC7EE0; // type:func +BgSpot18Basket_Draw = 0x80AC7FA4; // type:func +EnGanonOrgan_Init = 0x80AC81C0; // type:func +EnGanonOrgan_Destroy = 0x80AC81DC; // type:func +EnGanonOrgan_Update = 0x80AC81EC; // type:func +EnGanonOrgan_EmptyDList = 0x80AC8230; // type:func +func_80A280BC = 0x80AC8254; // type:func +func_80A28148 = 0x80AC82CC; // type:func +EnGanonOrgan_Draw = 0x80AC833C; // type:func +EnSiofuki_Init = 0x80ACF200; // type:func +EnSiofuki_Destroy = 0x80ACF41C; // type:func +func_80AFBDC8 = 0x80ACF450; // type:func +func_80AFBE8C = 0x80ACF510; // type:func +func_80AFC1D0 = 0x80ACF85C; // type:func +func_80AFC218 = 0x80ACF8A4; // type:func +func_80AFC34C = 0x80ACF9E0; // type:func +func_80AFC3C8 = 0x80ACFA64; // type:func +func_80AFC478 = 0x80ACFB1C; // type:func +func_80AFC544 = 0x80ACFBF0; // type:func +EnSiofuki_Update = 0x80ACFC28; // type:func +EnSiofuki_Draw = 0x80ACFC4C; // type:func +EnStream_SetupAction = 0x80ACFFB0; // type:func +EnStream_Init = 0x80ACFFBC; // type:func +EnStream_Destroy = 0x80AD0024; // type:func +func_80B0B81C = 0x80AD0034; // type:func +EnStream_SuckPlayer = 0x80AD0154; // type:func +EnStream_WaitForPlayer = 0x80AD02EC; // type:func +EnStream_Update = 0x80AD0340; // type:func +EnStream_Draw = 0x80AD0374; // type:func +EnMm_ChangeAnim = 0x80AD0540; // type:func +EnMm_Init = 0x80AD0664; // type:func +EnMm_Destroy = 0x80AD0820; // type:func +func_80AADA70 = 0x80AD084C; // type:func +func_80AADAA0 = 0x80AD0880; // type:func +EnMm_GetTextId = 0x80AD0A14; // type:func +func_80AADCD0 = 0x80AD0AB4; // type:func +EnMm_GetPointCount = 0x80AD0C34; // type:func +func_80AADE60 = 0x80AD0C48; // type:func +func_80AADEF0 = 0x80AD0CDC; // type:func +func_80AAE224 = 0x80AD1014; // type:func +func_80AAE294 = 0x80AD1084; // type:func +func_80AAE50C = 0x80AD12FC; // type:func +func_80AAE598 = 0x80AD1388; // type:func +EnMm_Update = 0x80AD1430; // type:func +EnMm_Draw = 0x80AD14A4; // type:func +EnMm_OverrideLimbDraw = 0x80AD1738; // type:func +EnMm_PostLimbDraw = 0x80AD17CC; // type:func +EnKo_AreObjectsAvailable = 0x80AD1BA0; // type:func +EnKo_AreObjectsLoaded = 0x80AD1CB8; // type:func +EnKo_IsOsAnimeAvailable = 0x80AD1D40; // type:func +EnKo_IsOsAnimeLoaded = 0x80AD1D90; // type:func +EnKo_GetTextIdChild = 0x80AD1DD0; // type:func +EnKo_GetTextIdAdult = 0x80AD2138; // type:func +EnKo_GetTextId = 0x80AD2410; // type:func +EnKo_UpdateTalkState = 0x80AD253C; // type:func +EnKo_GetForestQuestState = 0x80AD293C; // type:func +func_80A97BC0 = 0x80AD29C4; // type:func +func_80A97C7C = 0x80AD2A80; // type:func +EnKo_IsWithinTalkAngle = 0x80AD2B04; // type:func +func_80A97D68 = 0x80AD2B70; // type:func +func_80A97E18 = 0x80AD2C20; // type:func +func_80A97EB0 = 0x80AD2CBC; // type:func +func_80A97F20 = 0x80AD2D30; // type:func +func_80A97F70 = 0x80AD2D80; // type:func +func_80A98034 = 0x80AD2E44; // type:func +func_80A98124 = 0x80AD2F38; // type:func +func_80A98174 = 0x80AD2F88; // type:func +EnKo_ChildStart = 0x80AD306C; // type:func +EnKo_ChildStone = 0x80AD3174; // type:func +EnKo_ChildSaria = 0x80AD327C; // type:func +EnKo_AdultEnemy = 0x80AD3384; // type:func +EnKo_AdultSaved = 0x80AD348C; // type:func +func_80A9877C = 0x80AD3594; // type:func +EnKo_CanSpawn = 0x80AD3750; // type:func +EnKo_Blink = 0x80AD3A34; // type:func +func_80A98CD8 = 0x80AD3AF4; // type:func +EnKo_GetForestQuestState2 = 0x80AD3B4C; // type:func +func_80A98DB4 = 0x80AD3BD8; // type:func +func_80A98ECC = 0x80AD3CF0; // type:func +EnKo_Init = 0x80AD3DB8; // type:func +EnKo_Destroy = 0x80AD3E48; // type:func +func_80A99048 = 0x80AD3E74; // type:func +func_80A99384 = 0x80AD41A4; // type:func +func_80A99438 = 0x80AD4258; // type:func +func_80A99504 = 0x80AD4324; // type:func +func_80A99560 = 0x80AD4384; // type:func +func_80A995CC = 0x80AD43F4; // type:func +EnKo_Update = 0x80AD4530; // type:func +EnKo_OverrideLimbDraw = 0x80AD4694; // type:func +EnKo_PostLimbDraw = 0x80AD49F4; // type:func +EnKo_SetEnvColor = 0x80AD4AC4; // type:func +EnKo_Draw = 0x80AD4B30; // type:func +EnKz_GetTextIdChild = 0x80AD5CE0; // type:func +EnKz_GetTextIdAdult = 0x80AD5D3C; // type:func +EnKz_GetTextId = 0x80AD5DEC; // type:func +EnKz_UpdateTalkState = 0x80AD5E54; // type:func +EnKz_UpdateEyes = 0x80AD6078; // type:func +EnKz_UpdateTalking = 0x80AD60F0; // type:func +func_80A9CB18 = 0x80AD62AC; // type:func +EnKz_FollowPath = 0x80AD646C; // type:func +EnKz_SetMovedPos = 0x80AD65D8; // type:func +EnKz_Init = 0x80AD66A0; // type:func +EnKz_Destroy = 0x80AD682C; // type:func +EnKz_PreMweepWait = 0x80AD6858; // type:func +EnKz_SetupMweep = 0x80AD68C8; // type:func +EnKz_Mweep = 0x80AD69F4; // type:func +EnKz_StopMweep = 0x80AD6B60; // type:func +EnKz_Wait = 0x80AD6BC4; // type:func +EnKz_SetupGetItem = 0x80AD6C2C; // type:func +EnKz_StartTimer = 0x80AD6CC0; // type:func +EnKz_Update = 0x80AD6D58; // type:func +EnKz_OverrideLimbDraw = 0x80AD6E14; // type:func +EnKz_PostLimbDraw = 0x80AD6EE4; // type:func +EnKz_Draw = 0x80AD6F40; // type:func +EnWeatherTag_SetupAction = 0x80AD7280; // type:func +EnWeatherTag_Destroy = 0x80AD728C; // type:func +EnWeatherTag_Init = 0x80AD729C; // type:func +WeatherTag_CheckEnableWeatherEffect = 0x80AD7470; // type:func +WeatherTag_CheckRestoreWeather = 0x80AD7648; // type:func +EnWeatherTag_DisabledCloudyHyruleMarket = 0x80AD7808; // type:func +EnWeatherTag_EnabledCloudyHyruleMarket = 0x80AD7864; // type:func +EnWeatherTag_DisabledCloudyLonLonRanch = 0x80AD78B8; // type:func +EnWeatherTag_EnabledCloudyLonLonRanch = 0x80AD7914; // type:func +EnWeatherTag_DisabledCloudyDeathMountain = 0x80AD7968; // type:func +EnWeatherTag_EnabledCloudyDeathMountain = 0x80AD79C4; // type:func +EnWeatherTag_DisabledCloudySnow = 0x80AD7A18; // type:func +EnWeatherTag_EnabledCloudySnow = 0x80AD7A90; // type:func +EnWeatherTag_DisabledRainLakeHylia = 0x80AD7AFC; // type:func +EnWeatherTag_EnabledRainLakeHylia = 0x80AD7B80; // type:func +EnWeatherTag_DisabledCloudyRainThunderKakariko = 0x80AD7BF8; // type:func +EnWeatherTag_EnabledCloudyRainThunderKakariko = 0x80AD7C90; // type:func +EnWeatherTag_SetSandstormIntensity = 0x80AD7D1C; // type:func +EnWeatherTag_DisabledRainThunder = 0x80AD7E18; // type:func +EnWeatherTag_EnabledRainThunder = 0x80AD7EBC; // type:func +EnWeatherTag_Update = 0x80AD7F70; // type:func +BgSstFloor_Init = 0x80AD8170; // type:func +BgSstFloor_Destroy = 0x80AD81D8; // type:func +BgSstFloor_Update = 0x80AD820C; // type:func +BgSstFloor_Draw = 0x80AD8580; // type:func +EnAni_SetupAction = 0x80AD86D0; // type:func +EnAni_Init = 0x80AD86DC; // type:func +EnAni_Destroy = 0x80AD87F4; // type:func +EnAni_SetText = 0x80AD8820; // type:func +func_809B04F0 = 0x80AD885C; // type:func +func_809B0524 = 0x80AD8894; // type:func +func_809B0558 = 0x80AD88CC; // type:func +func_809B05F0 = 0x80AD8968; // type:func +func_809B064C = 0x80AD89CC; // type:func +func_809B07F8 = 0x80AD8B78; // type:func +func_809B0988 = 0x80AD8D08; // type:func +func_809B0994 = 0x80AD8D18; // type:func +func_809B0A28 = 0x80AD8DAC; // type:func +func_809B0A6C = 0x80AD8DF0; // type:func +EnAni_Update = 0x80AD8E9C; // type:func +EnAni_OverrideLimbDraw = 0x80AD9118; // type:func +EnAni_PostLimbDraw = 0x80AD9160; // type:func +EnAni_Draw = 0x80AD91A0; // type:func +EnExItem_Destroy = 0x80AD9440; // type:func +EnExItem_Init = 0x80AD9450; // type:func +EnExItem_WaitForObject = 0x80AD95AC; // type:func +EnExItem_BowlPrize = 0x80AD9928; // type:func +EnExItem_SetupBowlCounter = 0x80AD9B14; // type:func +EnExItem_BowlCounter = 0x80AD9B3C; // type:func +EnExItem_ExitChest = 0x80AD9B74; // type:func +EnExItem_FairyMagic = 0x80AD9BDC; // type:func +EnExItem_TargetPrizeApproach = 0x80AD9BF4; // type:func +EnExItem_TargetPrizeGive = 0x80AD9E48; // type:func +EnExItem_TargetPrizeFinish = 0x80AD9ED4; // type:func +EnExItem_Update = 0x80AD9F34; // type:func +EnExItem_Draw = 0x80AD9F88; // type:func +EnExItem_DrawItems = 0x80ADA038; // type:func +EnExItem_DrawHeartPiece = 0x80ADA09C; // type:func +EnExItem_DrawMagic = 0x80ADA0D0; // type:func +EnExItem_DrawKey = 0x80ADA118; // type:func +EnExItem_DrawRupee = 0x80ADA208; // type:func +BgJyaIronobj_InitCylinder = 0x80ADA5C0; // type:func +BgJyaIronobj_SpawnPillarParticles = 0x80ADA640; // type:func +BgJyaIronobj_SpawnThroneParticles = 0x80ADAABC; // type:func +BgJyaIronobj_Init = 0x80ADAEE8; // type:func +BgJyaIronobj_Destroy = 0x80ADAF7C; // type:func +func_808992D8 = 0x80ADAFC4; // type:func +func_808992E8 = 0x80ADAFD8; // type:func +BgJyaIronobj_Update = 0x80ADB118; // type:func +BgJyaIronobj_Draw = 0x80ADB13C; // type:func +En_Js_SetupAction = 0x80ADB370; // type:func +EnJs_Init = 0x80ADB37C; // type:func +EnJs_Destroy = 0x80ADB4A0; // type:func +func_80A88F64 = 0x80ADB4CC; // type:func +func_80A89008 = 0x80ADB574; // type:func +func_80A89078 = 0x80ADB5E8; // type:func +func_80A890C0 = 0x80ADB634; // type:func +func_80A8910C = 0x80ADB684; // type:func +func_80A89160 = 0x80ADB6D8; // type:func +func_80A891C4 = 0x80ADB740; // type:func +func_80A89294 = 0x80ADB814; // type:func +func_80A89304 = 0x80ADB888; // type:func +EnJs_Update = 0x80ADB8C0; // type:func +EnJs_OverrideLimbDraw = 0x80ADBB4C; // type:func +EnJs_PostLimbDraw = 0x80ADBB84; // type:func +EnJs_Draw = 0x80ADBBC4; // type:func +EnJsjutan_Init = 0x80ADBD40; // type:func +EnJsjutan_Destroy = 0x80ADBDD4; // type:func +func_80A89860 = 0x80ADBE08; // type:func +func_80A89A6C = 0x80ADC014; // type:func +EnJsjutan_Update = 0x80ADCAF4; // type:func +EnJsjutan_Draw = 0x80ADCBCC; // type:func +EnCs_ChangeAnim = 0x80AE1670; // type:func +EnCs_Init = 0x80AE1794; // type:func +EnCs_Destroy = 0x80AE1928; // type:func +EnCs_GetTalkState = 0x80AE1954; // type:func +EnCs_GetTextId = 0x80AE1A88; // type:func +EnCs_HandleTalking = 0x80AE1B0C; // type:func +EnCs_GetwaypointCount = 0x80AE1C58; // type:func +EnCs_GetPathPoint = 0x80AE1C6C; // type:func +EnCs_HandleWalking = 0x80AE1D00; // type:func +EnCs_Walk = 0x80AE1F18; // type:func +EnCs_Wait = 0x80AE20B8; // type:func +EnCs_Talk = 0x80AE2144; // type:func +EnCs_Update = 0x80AE2208; // type:func +EnCs_Draw = 0x80AE2378; // type:func +EnCs_OverrideLimbDraw = 0x80AE252C; // type:func +EnCs_PostLimbDraw = 0x80AE25BC; // type:func +EnMd_ReverseAnimation = 0x80AE28A0; // type:func +EnMd_UpdateAnimSequence_IdleToHalt = 0x80AE28C8; // type:func +EnMd_UpdateAnimSequence_HaltToCurious = 0x80AE295C; // type:func +EnMd_UpdateAnimSequence_WalkAway = 0x80AE29F0; // type:func +EnMd_UpdateAnimSequence_TwitchIdle_Unused = 0x80AE2AC8; // type:func +EnMd_UpdateAnimSequence_HaltToIdle = 0x80AE2B5C; // type:func +EnMd_UpdateAnimSequence_SurpriseToAnnoyed = 0x80AE2BF8; // type:func +EnMd_UpdateAnimSequence_SurpriseToIdle = 0x80AE2C8C; // type:func +EnMd_UpdateAnimSequence_CuriousToAnnoyed = 0x80AE2D28; // type:func +EnMd_UpdateAnimSequence_AnnoyedToHalt = 0x80AE2DBC; // type:func +EnMd_UpdateAnimSequence_IdleToAnnoyed = 0x80AE2E50; // type:func +EnMd_UpdateAnimSequence_StopWalking = 0x80AE2EE4; // type:func +EnMd_SetAnimSequence = 0x80AE2F80; // type:func +EnMd_UpdateAnimSequence = 0x80AE2F98; // type:func +EnMd_UpdateAnimSequence_WithTalking = 0x80AE3080; // type:func +EnMd_TrackMessageState = 0x80AE32D4; // type:func +EnMd_GetTextIdKokiriForest = 0x80AE3354; // type:func +EnMd_GetTextIdMidosHouse = 0x80AE343C; // type:func +EnMd_GetTextIdLostWoods = 0x80AE3470; // type:func +EnMd_GetTextId = 0x80AE34F0; // type:func +EnMd_UpdateTalkState = 0x80AE3560; // type:func +EnMd_ShouldSpawn = 0x80AE3698; // type:func +EnMd_UpdateEyes = 0x80AE373C; // type:func +EnMd_UpdateTalking = 0x80AE37B4; // type:func +EnMd_FollowPath = 0x80AE39D0; // type:func +EnMd_SetMovedPos = 0x80AE3B3C; // type:func +EnMd_UpdateAlphaByDistance = 0x80AE3C04; // type:func +EnMd_Init = 0x80AE3CB0; // type:func +EnMd_Destroy = 0x80AE3EAC; // type:func +EnMd_Idle = 0x80AE3ED8; // type:func +EnMd_Watch = 0x80AE3F5C; // type:func +EnMd_BlockPath = 0x80AE3FAC; // type:func +EnMd_ListenToOcarina = 0x80AE427C; // type:func +EnMd_Walk = 0x80AE4378; // type:func +EnMd_Update = 0x80AE44A0; // type:func +EnMd_OverrideLimbDraw = 0x80AE4560; // type:func +EnMd_PostLimbDraw = 0x80AE477C; // type:func +EnMd_Draw = 0x80AE47D8; // type:func +EnHy_FindSkelAndHeadObjects = 0x80AE4F10; // type:func +EnHy_AreSkelAndHeadObjectsLoaded = 0x80AE5024; // type:func +EnHy_FindOsAnimeObject = 0x80AE50AC; // type:func +EnHy_IsOsAnimeObjectLoaded = 0x80AE50FC; // type:func +EnHy_GiveItem = 0x80AE513C; // type:func +EnHy_GetTextId = 0x80AE5180; // type:func +EnHy_UpdateTalkState = 0x80AE59C8; // type:func +EnHy_UpdateEyes = 0x80AE5F14; // type:func +EnHy_InitCollider = 0x80AE5FD0; // type:func +EnHy_InitSetProperties = 0x80AE600C; // type:func +EnHy_UpdateCollider = 0x80AE60A4; // type:func +EnHy_OfferBuyBottledItem = 0x80AE61A8; // type:func +EnHy_UpdateNPC = 0x80AE62F0; // type:func +EnHy_ShouldSpawn = 0x80AE6460; // type:func +EnHy_Init = 0x80AE66FC; // type:func +EnHy_Destroy = 0x80AE678C; // type:func +EnHy_WaitForObjects = 0x80AE67B8; // type:func +EnHy_WatchDog = 0x80AE6A84; // type:func +EnHy_Walk = 0x80AE6B40; // type:func +EnHy_Fidget = 0x80AE6C0C; // type:func +EnHy_DoNothing = 0x80AE6C44; // type:func +EnHy_SetupPace = 0x80AE6C54; // type:func +EnHy_Pace = 0x80AE6CE0; // type:func +EnHy_WaitDogFoundRewardGiven = 0x80AE6E5C; // type:func +EnHy_FinishGivingDogFoundReward = 0x80AE6ECC; // type:func +EnHy_Update = 0x80AE6F7C; // type:func +EnHy_OverrideLimbDraw = 0x80AE705C; // type:func +EnHy_PostLimbDraw = 0x80AE73C8; // type:func +EnHy_SetEnvColor = 0x80AE74D4; // type:func +EnHy_Draw = 0x80AE7540; // type:func +EnGanonMant_Init = 0x80AE8850; // type:func +EnGanonMant_Destroy = 0x80AE886C; // type:func +EnGanonMant_Tear = 0x80AE887C; // type:func +EnGanonMant_UpdateStrand = 0x80AE8AD8; // type:func +EnGanonMant_UpdateVertices = 0x80AE909C; // type:func +EnGanonMant_Update = 0x80AE92C0; // type:func +EnGanonMant_DrawCloak = 0x80AE937C; // type:func +EnGanonMant_Draw = 0x80AE9498; // type:func +EnOkarinaEffect_SetupAction = 0x80AECA80; // type:func +EnOkarinaEffect_Destroy = 0x80AECA8C; // type:func +EnOkarinaEffect_Init = 0x80AECB0C; // type:func +EnOkarinaEffect_TriggerStorm = 0x80AECB54; // type:func +EnOkarinaEffect_ManageStorm = 0x80AECBE0; // type:func +EnOkarinaEffect_Update = 0x80AECDB0; // type:func +EnMag_ResetSram = 0x80AECE40; // type:func +EnMag_Init = 0x80AED004; // type:func +EnMag_Destroy = 0x80AED2A8; // type:func +EnMag_CheckSramResetCode = 0x80AED2B0; // type:func +EnMag_Update = 0x80AED3FC; // type:func +EnMag_DrawTextureI8 = 0x80AEDC5C; // type:func +EnMag_DrawEffectTextures = 0x80AEDE8C; // type:func +EnMag_DrawImageRGBA32 = 0x80AEE2EC; // type:func +EnMag_DrawCharTexture = 0x80AEE744; // type:func +EnMag_DrawInner = 0x80AEE8F8; // type:func +EnMag_Draw = 0x80AEFAC0; // type:func +DoorGerudo_Init = 0x80AF1E80; // type:func +DoorGerudo_Destroy = 0x80AF1F30; // type:func +func_809946BC = 0x80AF1F64; // type:func +func_80994750 = 0x80AF1FFC; // type:func +func_8099485C = 0x80AF2108; // type:func +func_8099496C = 0x80AF2218; // type:func +func_809949C8 = 0x80AF2274; // type:func +DoorGerudo_Update = 0x80AF22D0; // type:func +DoorGerudo_Draw = 0x80AF22F4; // type:func +ElfMsg2_SetupAction = 0x80AF2470; // type:func +ElfMsg2_KillCheck = 0x80AF247C; // type:func +ElfMsg2_Init = 0x80AF25B4; // type:func +ElfMsg2_Destroy = 0x80AF2674; // type:func +ElfMsg2_GetMessageId = 0x80AF2684; // type:func +ElfMsg2_WaitForTextClose = 0x80AF2698; // type:func +ElfMsg2_WaitForTextRead = 0x80AF2718; // type:func +ElfMsg2_WaitUntilActivated = 0x80AF2750; // type:func +ElfMsg2_Update = 0x80AF27CC; // type:func +DemoGt_Destroy = 0x80AF28E0; // type:func +DemoGt_PlayEarthquakeSfx = 0x80AF2928; // type:func +DemoGt_PlayExplosion1Sfx = 0x80AF2948; // type:func +DemoGt_PlayExplosion2Sfx = 0x80AF296C; // type:func +DemoGt_Rumble = 0x80AF2990; // type:func +DemoGt_SpawnDust = 0x80AF29C0; // type:func +func_8097D7D8 = 0x80AF2A50; // type:func +DemoGt_SpawnCloudRing = 0x80AF2BD8; // type:func +DemoGt_SpawnExplosionWithSound = 0x80AF2C38; // type:func +DemoGt_SpawnExplosionNoSound = 0x80AF2CEC; // type:func +func_8097DAC8 = 0x80AF2D40; // type:func +func_8097DD28 = 0x80AF2FA0; // type:func +func_8097DF70 = 0x80AF31E8; // type:func +func_8097E1D4 = 0x80AF344C; // type:func +func_8097E454 = 0x80AF36CC; // type:func +DemoGt_IsCutsceneIdle = 0x80AF391C; // type:func +DemoGt_GetCue = 0x80AF393C; // type:func +func_8097E704 = 0x80AF3988; // type:func +func_8097E744 = 0x80AF39C8; // type:func +func_8097E824 = 0x80AF3AA8; // type:func +func_8097ED64 = 0x80AF3FE4; // type:func +DemoGt_IsCutsceneLayer = 0x80AF401C; // type:func +func_8097EDD8 = 0x80AF4044; // type:func +func_8097EE44 = 0x80AF40BC; // type:func +func_8097EEA8_Init0 = 0x80AF4120; // type:func +func_8097EF00 = 0x80AF4178; // type:func +func_8097EF34 = 0x80AF41AC; // type:func +func_8097EF40 = 0x80AF41BC; // type:func +func_8097F0AC = 0x80AF4314; // type:func +func_8097F19C = 0x80AF43F8; // type:func +func_8097F1D8 = 0x80AF443C; // type:func +func_8097F280 = 0x80AF44E4; // type:func +func_8097F3EC = 0x80AF4658; // type:func +DemoGt_Update0 = 0x80AF4698; // type:func +DemoGt_Update8 = 0x80AF4710; // type:func +DemoGt_Draw1 = 0x80AF4788; // type:func +func_8097F904_Init1 = 0x80AF4B4C; // type:func +func_8097F960 = 0x80AF4BA8; // type:func +func_8097F96C = 0x80AF4BB8; // type:func +func_8097FA1C = 0x80AF4C4C; // type:func +func_8097FAFC = 0x80AF4D14; // type:func +func_8097FC1C = 0x80AF4E1C; // type:func +func_8097FCE4 = 0x80AF4ED0; // type:func +func_8097FD70 = 0x80AF4F4C; // type:func +func_8097FDDC = 0x80AF4FC0; // type:func +func_8097FED8 = 0x80AF50C0; // type:func +DemoGt_Update1 = 0x80AF5100; // type:func +DemoGt_Update9 = 0x80AF5150; // type:func +DemoGt_Draw2 = 0x80AF5198; // type:func +func_80980110_Init2 = 0x80AF52CC; // type:func +func_8098016C = 0x80AF5328; // type:func +func_80980178 = 0x80AF5338; // type:func +func_80980184 = 0x80AF5348; // type:func +func_80980218 = 0x80AF53DC; // type:func +func_809802AC = 0x80AF5470; // type:func +func_8098036C = 0x80AF5534; // type:func +func_80980430 = 0x80AF55FC; // type:func +func_80980504 = 0x80AF56BC; // type:func +func_809805D8 = 0x80AF577C; // type:func +func_809806B8 = 0x80AF5844; // type:func +func_8098078C = 0x80AF5904; // type:func +func_8098085C = 0x80AF59C0; // type:func +func_809809C0 = 0x80AF5B0C; // type:func +func_80980AD4 = 0x80AF5C10; // type:func +func_80980B68 = 0x80AF5C90; // type:func +func_80980BFC = 0x80AF5D10; // type:func +func_80980C90 = 0x80AF5D90; // type:func +func_80980D74 = 0x80AF5E7C; // type:func +DemoGt_Update2 = 0x80AF5EBC; // type:func +DemoGt_Update10 = 0x80AF5F00; // type:func +DemoGt_Draw3 = 0x80AF5F3C; // type:func +func_80980F00_Init5 = 0x80AF5FD8; // type:func +func_80980F58 = 0x80AF6030; // type:func +func_80980F8C = 0x80AF6068; // type:func +func_8098103C = 0x80AF611C; // type:func +DemoGt_Update3 = 0x80AF6180; // type:func +DemoGt_Update11 = 0x80AF61C4; // type:func +DemoGt_Update16 = 0x80AF6200; // type:func +DemoGt_Draw4 = 0x80AF6298; // type:func +func_809813CC_Init6 = 0x80AF6480; // type:func +func_80981424 = 0x80AF64D8; // type:func +func_80981458 = 0x80AF6510; // type:func +func_80981524 = 0x80AF65C8; // type:func +DemoGt_Update4 = 0x80AF662C; // type:func +DemoGt_Update12 = 0x80AF6670; // type:func +DemoGt_Update17 = 0x80AF66AC; // type:func +DemoGt_Draw5 = 0x80AF6744; // type:func +func_809818A4_Init7 = 0x80AF6920; // type:func +func_809818FC = 0x80AF6978; // type:func +func_80981930 = 0x80AF69B0; // type:func +DemoGt_Update5 = 0x80AF6A14; // type:func +DemoGt_Update13 = 0x80AF6A58; // type:func +DemoGt_Update18 = 0x80AF6A94; // type:func +DemoGt_Draw6 = 0x80AF6B2C; // type:func +func_80981C94_Init23 = 0x80AF6CE4; // type:func +func_80981CEC = 0x80AF6D3C; // type:func +func_80981D20 = 0x80AF6D74; // type:func +func_80981DC8 = 0x80AF6E1C; // type:func +DemoGt_Update6 = 0x80AF6E5C; // type:func +DemoGt_Update14 = 0x80AF6EA0; // type:func +DemoGt_Draw7 = 0x80AF6EE4; // type:func +func_80982054_Init24 = 0x80AF707C; // type:func +func_809820AC = 0x80AF70D4; // type:func +func_809820E0 = 0x80AF710C; // type:func +func_80982188 = 0x80AF71B4; // type:func +DemoGt_Update7 = 0x80AF71F4; // type:func +DemoGt_Update15 = 0x80AF7238; // type:func +DemoGt_Draw8 = 0x80AF727C; // type:func +DemoGt_Update = 0x80AF7418; // type:func +DemoGt_Init = 0x80AF7460; // type:func +DemoGt_Draw0 = 0x80AF7524; // type:func +DemoGt_Draw = 0x80AF7534; // type:func +EnPoField_Init = 0x80AF7EF0; // type:func +EnPoField_Destroy = 0x80AF80F8; // type:func +EnPoField_SetupWaitForSpawn = 0x80AF8158; // type:func +EnPoField_SetupAppear = 0x80AF821C; // type:func +EnPoField_SetupCirclePlayer = 0x80AF833C; // type:func +EnPoField_SetupFlee = 0x80AF83E4; // type:func +EnPoField_SetupDamage = 0x80AF8478; // type:func +EnPoField_SetupDeath = 0x80AF8534; // type:func +EnPoField_SetupDisappear = 0x80AF8588; // type:func +EnPoField_SetupSoulIdle = 0x80AF8600; // type:func +func_80AD42B0 = 0x80AF86B0; // type:func +func_80AD4384 = 0x80AF8784; // type:func +EnPoField_SetupSoulDisappear = 0x80AF883C; // type:func +EnPoField_SetupInteractWithSoul = 0x80AF8850; // type:func +EnPoField_CorrectYPos = 0x80AF8878; // type:func +EnPoField_SetFleeSpeed = 0x80AF895C; // type:func +EnPoField_WaitForSpawn = 0x80AF8A6C; // type:func +EnPoField_Appear = 0x80AF8CD4; // type:func +EnPoField_CirclePlayer = 0x80AF8E70; // type:func +EnPoField_Flee = 0x80AF90B0; // type:func +EnPoField_Damage = 0x80AF9254; // type:func +EnPoField_Death = 0x80AF92E4; // type:func +EnPoField_Disappear = 0x80AF96FC; // type:func +EnPoField_SoulIdle = 0x80AF97FC; // type:func +EnPoField_SoulUpdateProperties = 0x80AF98E0; // type:func +func_80AD587C = 0x80AF9C88; // type:func +func_80AD58D4 = 0x80AF9CE0; // type:func +EnPoField_SoulDisappear = 0x80AF9EE4; // type:func +EnPoField_SoulInteract = 0x80AF9F24; // type:func +EnPoField_TestForDamage = 0x80AFA084; // type:func +EnPoField_SpawnFlame = 0x80AFA11C; // type:func +EnPoField_UpdateFlame = 0x80AFA170; // type:func +EnPoField_DrawFlame = 0x80AFA29C; // type:func +func_80AD619C = 0x80AFA574; // type:func +func_80AD6330 = 0x80AFA708; // type:func +EnPoField_Update = 0x80AFA87C; // type:func +EnPoField_OverrideLimbDraw2 = 0x80AFA9A8; // type:func +EnPoField_PostLimDraw2 = 0x80AFAAB0; // type:func +EnPoField_Draw = 0x80AFACC0; // type:func +EnPoField_UpdateDead = 0x80AFAFA4; // type:func +EnPoField_DrawSoul = 0x80AFB000; // type:func +EfcErupc_SetupAction = 0x80AFB980; // type:func +EfcErupc_Init = 0x80AFB98C; // type:func +EfcErupc_Destroy = 0x80AFB9F8; // type:func +EfcErupc_UpdateAction = 0x80AFBA08; // type:func +EfcErupc_Update = 0x80AFBC54; // type:func +EfcErupc_Draw = 0x80AFBC90; // type:func +EfcErupc_DrawEffects = 0x80AFBFD0; // type:func +EfcErupc_UpdateEffects = 0x80AFC18C; // type:func +EfcErupc_SpawnEffect = 0x80AFC2B0; // type:func +EfcErupc_InitEffects = 0x80AFC37C; // type:func +BgZg_Destroy = 0x80AFC470; // type:func +func_808C0C50 = 0x80AFC4A4; // type:func +func_808C0C98 = 0x80AFC4EC; // type:func +func_808C0CC8 = 0x80AFC520; // type:func +func_808C0CD4 = 0x80AFC530; // type:func +func_808C0D08 = 0x80AFC564; // type:func +BgZg_Update = 0x80AFC608; // type:func +BgZg_Init = 0x80AFC650; // type:func +func_808C0EEC = 0x80AFC73C; // type:func +BgZg_Draw = 0x80AFC7B8; // type:func +EnHeishi4_Init = 0x80AFC8C0; // type:func +EnHeishi4_Destroy = 0x80AFCAA0; // type:func +func_80A56328 = 0x80AFCACC; // type:func +func_80A563BC = 0x80AFCB60; // type:func +func_80A56544 = 0x80AFCCE8; // type:func +func_80A56614 = 0x80AFCDAC; // type:func +func_80A5673C = 0x80AFCED4; // type:func +func_80A56874 = 0x80AFCFE8; // type:func +func_80A56900 = 0x80AFD074; // type:func +func_80A56994 = 0x80AFD108; // type:func +func_80A56A50 = 0x80AFD1C4; // type:func +func_80A56ACC = 0x80AFD240; // type:func +func_80A56B40 = 0x80AFD2B4; // type:func +EnHeishi4_Update = 0x80AFD428; // type:func +EnHeishi_OverrideLimbDraw = 0x80AFD58C; // type:func +EnHeishi4_Draw = 0x80AFD5F4; // type:func +func_80B533B0 = 0x80AFD7C0; // type:func +func_80B533FC = 0x80AFD80C; // type:func +EnZl3_Destroy = 0x80AFD850; // type:func +func_80B53468 = 0x80AFD87C; // type:func +func_80B53488 = 0x80AFD89C; // type:func +EnZl3_UpdateEyes = 0x80AFD8E8; // type:func +EnZl3_setEyeIndex = 0x80AFD970; // type:func +EnZl3_setMouthIndex = 0x80AFD988; // type:func +func_80B5357C = 0x80AFD9A0; // type:func +func_80B53614 = 0x80AFDA3C; // type:func +func_80B5366C = 0x80AFDA94; // type:func +func_80B536B4 = 0x80AFDADC; // type:func +func_80B536C4 = 0x80AFDAF0; // type:func +func_80B53764 = 0x80AFDB94; // type:func +func_80B537E8 = 0x80AFDC1C; // type:func +func_80B538B0 = 0x80AFDCE4; // type:func +EnZl3_UpdateSkelAnime = 0x80AFDD80; // type:func +func_80B5396C = 0x80AFDDA4; // type:func +func_80B53974 = 0x80AFDDB0; // type:func +func_80B53980 = 0x80AFDDC4; // type:func +func_80B53B64 = 0x80AFDFAC; // type:func +func_80B54360 = 0x80AFE7BC; // type:func +func_80B5458C = 0x80AFE9EC; // type:func +EnZl3_PostLimbDraw = 0x80AFF0E8; // type:func +func_80B54DB4 = 0x80AFF1B4; // type:func +func_80B54DC4 = 0x80AFF1C8; // type:func +func_80B54DD4 = 0x80AFF1DC; // type:func +func_80B54DE0 = 0x80AFF1EC; // type:func +func_80B54E14 = 0x80AFF224; // type:func +func_80B54EA4 = 0x80AFF2B4; // type:func +func_80B54EF4 = 0x80AFF308; // type:func +func_80B54F18 = 0x80AFF330; // type:func +func_80B54FB4 = 0x80AFF3D0; // type:func +func_80B55054 = 0x80AFF454; // type:func +func_80B550F0 = 0x80AFF4F4; // type:func +func_80B55144 = 0x80AFF548; // type:func +func_80B551E0 = 0x80AFF5E8; // type:func +func_80B55220 = 0x80AFF628; // type:func +func_80B55268 = 0x80AFF670; // type:func +func_80B552A8 = 0x80AFF6B0; // type:func +func_80B552DC = 0x80AFF6E4; // type:func +func_80B55334 = 0x80AFF740; // type:func +func_80B55368 = 0x80AFF774; // type:func +func_80B553B4 = 0x80AFF7C0; // type:func +func_80B553E8 = 0x80AFF7F4; // type:func +func_80B55408 = 0x80AFF814; // type:func +func_80B55444 = 0x80AFF850; // type:func +func_80B55550 = 0x80AFF954; // type:func +func_80B555A4 = 0x80AFF9B0; // type:func +func_80B55604 = 0x80AFFA18; // type:func +func_80B5566C = 0x80AFFA88; // type:func +func_80B556CC = 0x80AFFAF0; // type:func +func_80B5572C = 0x80AFFB58; // type:func +func_80B55780 = 0x80AFFBB4; // type:func +func_80B55808 = 0x80AFFC18; // type:func +func_80B5582C = 0x80AFFC40; // type:func +func_80B5585C = 0x80AFFC70; // type:func +func_80B558A8 = 0x80AFFCBC; // type:func +func_80B559C4 = 0x80AFFDDC; // type:func +func_80B55A58 = 0x80AFFE6C; // type:func +func_80B55A84 = 0x80AFFE98; // type:func +func_80B55AC4 = 0x80AFFED8; // type:func +func_80B55B04 = 0x80AFFF18; // type:func +func_80B55B38 = 0x80AFFF4C; // type:func +func_80B55B78 = 0x80AFFF8C; // type:func +func_80B55BAC = 0x80AFFFC0; // type:func +func_80B55C0C = 0x80B00024; // type:func +func_80B55C4C = 0x80B00064; // type:func +func_80B55C70 = 0x80B0008C; // type:func +func_80B55CCC = 0x80B000E4; // type:func +func_80B55D00 = 0x80B00118; // type:func +func_80B55DB0 = 0x80B001CC; // type:func +func_80B55E08 = 0x80B00224; // type:func +func_80B55E48 = 0x80B00264; // type:func +func_80B55E7C = 0x80B00298; // type:func +func_80B55EBC = 0x80B002D8; // type:func +func_80B55EF0 = 0x80B0030C; // type:func +func_80B55F38 = 0x80B00354; // type:func +func_80B55F6C = 0x80B00388; // type:func +func_80B5604C = 0x80B0046C; // type:func +func_80B56090 = 0x80B004B0; // type:func +func_80B56108 = 0x80B0052C; // type:func +func_80B56160 = 0x80B00584; // type:func +func_80B561A0 = 0x80B005C4; // type:func +func_80B561E0 = 0x80B00604; // type:func +func_80B56214 = 0x80B00638; // type:func +func_80B562F4 = 0x80B0071C; // type:func +func_80B5634C = 0x80B00774; // type:func +func_80B5638C = 0x80B007B4; // type:func +func_80B563C0 = 0x80B007E8; // type:func +func_80B56400 = 0x80B00828; // type:func +func_80B56434 = 0x80B0085C; // type:func +func_80B56474 = 0x80B0089C; // type:func +func_80B564A8 = 0x80B008D0; // type:func +func_80B56658 = 0x80B00A70; // type:func +func_80B566AC = 0x80B00ACC; // type:func +func_80B5670C = 0x80B00B34; // type:func +func_80B5676C = 0x80B00B9C; // type:func +func_80B567CC = 0x80B00C04; // type:func +func_80B5682C = 0x80B00C6C; // type:func +func_80B568B4 = 0x80B00CFC; // type:func +func_80B5691C = 0x80B00D6C; // type:func +func_80B5697C = 0x80B00DD4; // type:func +func_80B569E4 = 0x80B00E44; // type:func +func_80B56A68 = 0x80B00ED0; // type:func +func_80B56AE0 = 0x80B00F50; // type:func +func_80B56B54 = 0x80B00FCC; // type:func +func_80B56BA8 = 0x80B01028; // type:func +func_80B56C24 = 0x80B010AC; // type:func +func_80B56C84 = 0x80B01114; // type:func +func_80B56CE4 = 0x80B0117C; // type:func +func_80B56D44 = 0x80B011E4; // type:func +func_80B56DA4 = 0x80B0124C; // type:func +func_80B56DC8 = 0x80B01270; // type:func +func_80B56DEC = 0x80B01298; // type:func +func_80B56E38 = 0x80B012E4; // type:func +func_80B56EB8 = 0x80B01364; // type:func +func_80B56EE4 = 0x80B01394; // type:func +func_80B56F10 = 0x80B013C4; // type:func +func_80B56F8C = 0x80B01418; // type:func +func_80B56FAC = 0x80B01438; // type:func +func_80B57034 = 0x80B014C4; // type:func +func_80B57104 = 0x80B01598; // type:func +func_80B571A8 = 0x80B01640; // type:func +func_80B571FC = 0x80B01694; // type:func +func_80B57240 = 0x80B016D8; // type:func +func_80B57298 = 0x80B01730; // type:func +func_80B572F0 = 0x80B01788; // type:func +func_80B57324 = 0x80B017C0; // type:func +func_80B57350 = 0x80B017EC; // type:func +func_80B573C8 = 0x80B01864; // type:func +func_80B573FC = 0x80B01898; // type:func +func_80B57458 = 0x80B018F4; // type:func +func_80B57564 = 0x80B01A04; // type:func +func_80B575B0 = 0x80B01A58; // type:func +func_80B575D0 = 0x80B01A78; // type:func +func_80B575F0 = 0x80B01A98; // type:func +func_80B5764C = 0x80B01AF4; // type:func +func_80B576C8 = 0x80B01B74; // type:func +func_80B57704 = 0x80B01BB8; // type:func +func_80B5772C = 0x80B01BE4; // type:func +func_80B57754 = 0x80B01C10; // type:func +func_80B577BC = 0x80B01C7C; // type:func +func_80B57858 = 0x80B01D1C; // type:func +func_80B57890 = 0x80B01D58; // type:func +func_80B57A74 = 0x80B01F40; // type:func +func_80B57AAC = 0x80B01F78; // type:func +func_80B57AE0 = 0x80B01FAC; // type:func +func_80B57C54 = 0x80B02124; // type:func +func_80B57C7C = 0x80B0214C; // type:func +func_80B57C8C = 0x80B02160; // type:func +func_80B57CB4 = 0x80B02188; // type:func +func_80B57D60 = 0x80B02230; // type:func +func_80B57D80 = 0x80B02254; // type:func +func_80B57EAC = 0x80B0238C; // type:func +func_80B57EEC = 0x80B023D4; // type:func +func_80B57F1C = 0x80B02408; // type:func +func_80B57F84 = 0x80B02474; // type:func +func_80B58014 = 0x80B0250C; // type:func +func_80B58214 = 0x80B02718; // type:func +func_80B58268 = 0x80B02770; // type:func +func_80B582C8 = 0x80B027D0; // type:func +func_80B584B4 = 0x80B029BC; // type:func +func_80B58624 = 0x80B02B2C; // type:func +func_80B5884C = 0x80B02D5C; // type:func +func_80B58898 = 0x80B02DA8; // type:func +func_80B588E8 = 0x80B02DF8; // type:func +func_80B58938 = 0x80B02E48; // type:func +func_80B5899C = 0x80B02EB0; // type:func +func_80B58A1C = 0x80B02F30; // type:func +func_80B58A50 = 0x80B02F6C; // type:func +func_80B58AAC = 0x80B02FCC; // type:func +func_80B58C08 = 0x80B03128; // type:func +func_80B58D50 = 0x80B03270; // type:func +func_80B58DB0 = 0x80B032D8; // type:func +func_80B58E10 = 0x80B03340; // type:func +func_80B58E7C = 0x80B033B4; // type:func +func_80B58EF4 = 0x80B03434; // type:func +func_80B58F6C = 0x80B034B4; // type:func +func_80B58FDC = 0x80B0352C; // type:func +func_80B5904C = 0x80B035A4; // type:func +func_80B590BC = 0x80B0361C; // type:func +func_80B5912C = 0x80B03694; // type:func +func_80B591BC = 0x80B0372C; // type:func +func_80B5922C = 0x80B037A4; // type:func +func_80B592A8 = 0x80B03828; // type:func +func_80B59340 = 0x80B038C8; // type:func +func_80B593D0 = 0x80B03960; // type:func +func_80B5944C = 0x80B039E4; // type:func +func_80B59698 = 0x80B03BE0; // type:func +func_80B59768 = 0x80B03CB0; // type:func +func_80B59828 = 0x80B03D70; // type:func +func_80B59A80 = 0x80B03FD0; // type:func +func_80B59AD0 = 0x80B04020; // type:func +func_80B59B6C = 0x80B040BC; // type:func +func_80B59DB8 = 0x80B04304; // type:func +EnZl3_Update = 0x80B04374; // type:func +EnZl3_Init = 0x80B043BC; // type:func +EnZl3_OverrideLimbDraw = 0x80B0447C; // type:func +func_80B59FE8 = 0x80B044E4; // type:func +func_80B59FF4 = 0x80B044F4; // type:func +func_80B5A1D0 = 0x80B046A0; // type:func +EnZl3_Draw = 0x80B04848; // type:func +BossGanon2_InitRand = 0x80B05610; // type:func +BossGanon2_RandZeroOne = 0x80B05630; // type:func +func_808FD080 = 0x80B05758; // type:func +BossGanon2_SetObjectSegment = 0x80B057E8; // type:func +func_808FD210 = 0x80B0589C; // type:func +func_808FD27C = 0x80B0590C; // type:func +BossGanon2_Init = 0x80B059EC; // type:func +BossGanon2_Destroy = 0x80B05B1C; // type:func +func_808FD4D4 = 0x80B05B6C; // type:func +func_808FD5C4 = 0x80B05C5C; // type:func +func_808FD5F4 = 0x80B05C90; // type:func +func_808FF898 = 0x80B07F40; // type:func +func_808FFA24 = 0x80B080CC; // type:func +func_808FFAC8 = 0x80B08170; // type:func +func_808FFBBC = 0x80B08268; // type:func +func_808FFC84 = 0x80B08334; // type:func +func_808FFCFC = 0x80B083AC; // type:func +func_808FFDB0 = 0x80B08460; // type:func +func_808FFEBC = 0x80B08570; // type:func +func_808FFF90 = 0x80B08644; // type:func +func_808FFFE0 = 0x80B08694; // type:func +func_809000A0 = 0x80B08754; // type:func +func_80900104 = 0x80B087B4; // type:func +func_80900210 = 0x80B088C0; // type:func +func_8090026C = 0x80B0891C; // type:func +func_809002CC = 0x80B08980; // type:func +func_80900344 = 0x80B089F4; // type:func +func_80900580 = 0x80B08C30; // type:func +func_80900650 = 0x80B08D00; // type:func +func_80900818 = 0x80B08EC8; // type:func +func_80900890 = 0x80B08F40; // type:func +func_80901020 = 0x80B096D4; // type:func +func_8090109C = 0x80B09750; // type:func +func_8090120C = 0x80B098C0; // type:func +func_80902348 = 0x80B0AA04; // type:func +BossGanon2_CollisionCheck = 0x80B0ABE4; // type:func +BossGanon2_Update = 0x80B0AED8; // type:func +func_809034E4 = 0x80B0BBA4; // type:func +func_80903F38 = 0x80B0C5F8; // type:func +func_80904108 = 0x80B0C784; // type:func +func_80904340 = 0x80B0C988; // type:func +func_8090464C = 0x80B0CC78; // type:func +BossGanon2_OverrideLimbDraw = 0x80B0CE0C; // type:func +BossGanon2_PostLimbDraw = 0x80B0CF44; // type:func +func_80904D88 = 0x80B0D308; // type:func +func_80904FC8 = 0x80B0D50C; // type:func +func_8090523C = 0x80B0D730; // type:func +BossGanon2_PostLimbDraw2 = 0x80B0D9C0; // type:func +func_80905674 = 0x80B0DAEC; // type:func +BossGanon2_Draw = 0x80B0DD34; // type:func +BossGanon2_UpdateEffects = 0x80B0E1B4; // type:func +BossGanon2_DrawEffects = 0x80B0E4F8; // type:func +func_80906538 = 0x80B0E8F0; // type:func +BossGanon2_GenShadowTexture = 0x80B0EDB0; // type:func +BossGanon2_DrawShadowTexture = 0x80B0EE68; // type:func +EnKakasi_Destroy = 0x80B18480; // type:func +EnKakasi_Init = 0x80B184AC; // type:func +func_80A8F28C = 0x80B18574; // type:func +func_80A8F320 = 0x80B18608; // type:func +func_80A8F660 = 0x80B18948; // type:func +func_80A8F75C = 0x80B18A44; // type:func +func_80A8F8D0 = 0x80B18BC0; // type:func +func_80A8F9C8 = 0x80B18CAC; // type:func +func_80A8FAA4 = 0x80B18D8C; // type:func +func_80A8FBB8 = 0x80B18E90; // type:func +EnKakasi_Update = 0x80B18F28; // type:func +EnKakasi_Draw = 0x80B1902C; // type:func +EnTakaraMan_Destroy = 0x80B191C0; // type:func +EnTakaraMan_Init = 0x80B191D0; // type:func +func_80B176E0 = 0x80B1931C; // type:func +func_80B1778C = 0x80B193C8; // type:func +func_80B17934 = 0x80B19570; // type:func +func_80B17A6C = 0x80B196A8; // type:func +func_80B17AC4 = 0x80B19704; // type:func +func_80B17B14 = 0x80B19758; // type:func +EnTakaraMan_Update = 0x80B197BC; // type:func +EnTakaraMan_OverrideLimbDraw = 0x80B19894; // type:func +EnTakaraMan_Draw = 0x80B198FC; // type:func +ObjMakeoshihiki_Init = 0x80B19A80; // type:func +ObjMakeoshihiki_Draw = 0x80B19BF4; // type:func +OceffSpot_SetupAction = 0x80B19F10; // type:func +OceffSpot_Init = 0x80B19F1C; // type:func +OceffSpot_Destroy = 0x80B1A078; // type:func +OceffSpot_End = 0x80B1A108; // type:func +OceffSpot_Wait = 0x80B1A1D0; // type:func +OceffSpot_GrowCylinder = 0x80B1A20C; // type:func +OceffSpot_Update = 0x80B1A270; // type:func +OceffSpot_Draw = 0x80B1A548; // type:func +EndTitle_Init = 0x80B1AE40; // type:func +EndTitle_Destroy = 0x80B1AE6C; // type:func +EndTitle_Update = 0x80B1AE74; // type:func +EndTitle_DrawFull = 0x80B1AE7C; // type:func +EndTitle_DrawNintendoLogo = 0x80B1B4D8; // type:func +EnTorch_Init = 0x80B20880; // type:func +DemoEc_Destroy = 0x80B20970; // type:func +DemoEc_Init = 0x80B20994; // type:func +DemoEc_UpdateSkelAnime = 0x80B209DC; // type:func +DemoEc_UpdateBgFlags = 0x80B20A00; // type:func +func_8096D594 = 0x80B20A48; // type:func +func_8096D5D4 = 0x80B20A88; // type:func +func_8096D64C = 0x80B20B00; // type:func +DemoEc_UpdateEyes = 0x80B20B40; // type:func +DemoEc_SetEyeTexIndex = 0x80B20BC8; // type:func +DemoEc_InitSkelAnime = 0x80B20BE0; // type:func +DemoEc_ChangeAnimation = 0x80B20C58; // type:func +DemoEc_AllocColorDList = 0x80B20D14; // type:func +DemoEc_DrawSkeleton = 0x80B20D6C; // type:func +DemoEc_DrawSkeletonCustomColor = 0x80B20EFC; // type:func +DemoEc_UseDrawObject = 0x80B2115C; // type:func +DemoEc_UseAnimationObject = 0x80B211B8; // type:func +DemoEc_GetCue = 0x80B211F0; // type:func +DemoEc_SetStartPosRotFromCue = 0x80B21218; // type:func +DemoEc_InitIngo = 0x80B21298; // type:func +DemoEc_UpdateIngo = 0x80B21338; // type:func +DemoEc_DrawIngo = 0x80B21378; // type:func +DemoEc_InitTalon = 0x80B213AC; // type:func +DemoEc_UpdateTalon = 0x80B2144C; // type:func +DemoEc_DrawTalon = 0x80B2148C; // type:func +DemoEc_InitWindmillMan = 0x80B214C0; // type:func +DemoEc_UpdateWindmillMan = 0x80B21560; // type:func +DemoEc_DrawWindmillMan = 0x80B215A0; // type:func +DemoEc_InitKokiriBoy = 0x80B215D4; // type:func +DemoEc_InitDancingKokiriBoy = 0x80B21674; // type:func +DemoEc_UpdateKokiriBoy = 0x80B21718; // type:func +DemoEc_UpdateDancingKokiriBoy = 0x80B21758; // type:func +DemoEc_DrawKokiriBoy = 0x80B21778; // type:func +DemoEc_InitKokiriGirl = 0x80B217BC; // type:func +DemoEc_InitDancingKokiriGirl = 0x80B2185C; // type:func +DemoEc_UpdateKokiriGirl = 0x80B21900; // type:func +DemoEc_UpdateDancingKokiriGirl = 0x80B21948; // type:func +DemoEc_DrawKokiriGirl = 0x80B21968; // type:func +DemoEc_InitOldMan = 0x80B219BC; // type:func +DemoEc_UpdateOldMan = 0x80B21A5C; // type:func +DemoEc_DrawOldMan = 0x80B21AA4; // type:func +DemoEc_InitBeardedMan = 0x80B21AF8; // type:func +DemoEc_UpdateBeardedMan = 0x80B21B98; // type:func +DemoEc_DrawBeardedMan = 0x80B21BE0; // type:func +DemoEc_InitWoman = 0x80B21C34; // type:func +DemoEc_UpdateWoman = 0x80B21CD4; // type:func +DemoEc_DrawWoman = 0x80B21D1C; // type:func +DemoEc_InitOldWoman = 0x80B21D58; // type:func +DemoEc_UpdateOldWoman = 0x80B21DF8; // type:func +DemoEc_DrawOldWoman = 0x80B21E38; // type:func +DemoEc_InitBossCarpenter = 0x80B21E68; // type:func +DemoEc_UpdateBossCarpenter = 0x80B21F08; // type:func +DemoEc_DrawBossCarpenter = 0x80B21F48; // type:func +DemoEc_InitCarpenter = 0x80B21F74; // type:func +DemoEc_UpdateCarpenter = 0x80B22014; // type:func +DemoEc_CarpenterOverrideLimbDraw = 0x80B22054; // type:func +DemoEc_GetCarpenterPostLimbDList = 0x80B22158; // type:func +DemoEc_CarpenterPostLimbDraw = 0x80B221C0; // type:func +DemoEc_DrawCarpenter = 0x80B22244; // type:func +DemoEc_InitGerudo = 0x80B22280; // type:func +DemoEc_UpdateGerudo = 0x80B22324; // type:func +DemoEc_GetGerudoPostLimbDList = 0x80B2236C; // type:func +DemoEc_GerudoPostLimbDraw = 0x80B223C0; // type:func +DemoEc_DrawGerudo = 0x80B22444; // type:func +DemoEc_InitDancingZora = 0x80B22488; // type:func +DemoEc_UpdateDancingZora = 0x80B2252C; // type:func +DemoEc_DrawDancingZora = 0x80B22574; // type:func +DemoEc_InitKingZora = 0x80B225B0; // type:func +func_8096F1D4 = 0x80B22660; // type:func +func_8096F224 = 0x80B226B0; // type:func +func_8096F26C = 0x80B226F8; // type:func +func_8096F2B0 = 0x80B22740; // type:func +DemoEc_UpdateKingZora = 0x80B227A4; // type:func +func_8096F378 = 0x80B2280C; // type:func +func_8096F3D4 = 0x80B2286C; // type:func +DemoEc_DrawKingZora = 0x80B228B4; // type:func +DemoEc_InitMido = 0x80B228F0; // type:func +func_8096F4FC = 0x80B229A0; // type:func +func_8096F544 = 0x80B229E8; // type:func +func_8096F578 = 0x80B22A1C; // type:func +DemoEc_UpdateMido = 0x80B22A80; // type:func +func_8096F640 = 0x80B22AE8; // type:func +DemoEc_DrawMido = 0x80B22B48; // type:func +DemoEc_InitCucco = 0x80B22B84; // type:func +DemoEc_UpdateCucco = 0x80B22C54; // type:func +DemoEc_DrawCucco = 0x80B22C94; // type:func +DemoEc_InitCuccoLady = 0x80B22CC0; // type:func +DemoEc_UpdateCuccoLady = 0x80B22D64; // type:func +DemoEc_DrawCuccoLady = 0x80B22DAC; // type:func +DemoEc_InitPotionShopOwner = 0x80B22DE8; // type:func +DemoEc_UpdatePotionShopOwner = 0x80B22E8C; // type:func +DemoEc_DrawPotionShopOwner = 0x80B22ED4; // type:func +DemoEc_InitMaskShopOwner = 0x80B22F10; // type:func +DemoEc_UpdateMaskShopOwner = 0x80B22FB4; // type:func +DemoEc_DrawMaskShopOwner = 0x80B22FF4; // type:func +DemoEc_InitFishingOwner = 0x80B23024; // type:func +DemoEc_UpdateFishingOwner = 0x80B230C8; // type:func +DemoEc_FishingOwnerPostLimbDraw = 0x80B23110; // type:func +DemoEc_DrawFishingOwner = 0x80B23190; // type:func +DemoEc_InitBombchuShopOwner = 0x80B231D4; // type:func +DempEc_UpdateBombchuShopOwner = 0x80B23278; // type:func +DemoEc_DrawBombchuShopOwner = 0x80B232C0; // type:func +DemoEc_InitGorons = 0x80B232FC; // type:func +DemoEc_UpdateGorons = 0x80B23434; // type:func +DemoEc_DrawGorons = 0x80B2347C; // type:func +DemoEc_InitMalon = 0x80B234BC; // type:func +DemoEc_UpdateMalon = 0x80B23560; // type:func +DemoEc_DrawMalon = 0x80B235A8; // type:func +DemoEc_InitNpc = 0x80B235E8; // type:func +DemoEc_InitCommon = 0x80B23634; // type:func +DemoEc_Update = 0x80B23708; // type:func +DemoEc_DrawCommon = 0x80B23780; // type:func +DemoEc_Draw = 0x80B23790; // type:func +ShotSun_Init = 0x80B241D0; // type:func +ShotSun_Destroy = 0x80B2428C; // type:func +ShotSun_SpawnFairy = 0x80B242D0; // type:func +ShotSun_TriggerFairy = 0x80B24378; // type:func +ShotSun_UpdateFairySpawner = 0x80B24414; // type:func +ShotSun_UpdateHyliaSun = 0x80B24564; // type:func +ShotSun_Update = 0x80B2479C; // type:func +EnDyExtra_Destroy = 0x80B24890; // type:func +EnDyExtra_Init = 0x80B248A0; // type:func +EnDyExtra_WaitForTrigger = 0x80B24914; // type:func +EnDyExtra_FallAndKill = 0x80B249A8; // type:func +EnDyExtra_Update = 0x80B24A60; // type:func +EnDyExtra_Draw = 0x80B24ACC; // type:func +EnWonderTalk2_Destroy = 0x80B24E30; // type:func +EnWonderTalk2_Init = 0x80B24E40; // type:func +func_80B3A10C = 0x80B24FD0; // type:func +func_80B3A15C = 0x80B25020; // type:func +func_80B3A3D4 = 0x80B251A0; // type:func +func_80B3A4F8 = 0x80B25288; // type:func +EnWonderTalk2_DoNothing = 0x80B253D8; // type:func +EnWonderTalk2_Update = 0x80B253E8; // type:func +EnGe2_ChangeAction = 0x80B254D0; // type:func +EnGe2_Init = 0x80B25578; // type:func +EnGe2_Destroy = 0x80B25790; // type:func +Ge2_DetectPlayerInAction = 0x80B257BC; // type:func +Ge2_DetectPlayerInUpdate = 0x80B25868; // type:func +EnGe2_CheckAllCarpentersRescued = 0x80B25998; // type:func +EnGe2_CaptureClose = 0x80B259C4; // type:func +EnGe2_CaptureCharge = 0x80B25A98; // type:func +EnGe2_CaptureTurn = 0x80B25BCC; // type:func +EnGe2_KnockedOut = 0x80B25C44; // type:func +EnGe2_TurnPlayerSpotted = 0x80B25D3C; // type:func +EnGe2_AboutTurn = 0x80B25E44; // type:func +EnGe2_Walk = 0x80B25EFC; // type:func +EnGe2_Stand = 0x80B25FC4; // type:func +EnGe2_TurnToFacePlayer = 0x80B26004; // type:func +EnGe2_LookAtPlayer = 0x80B2611C; // type:func +EnGe2_SetActionAfterTalk = 0x80B26230; // type:func +EnGe2_WaitLookAtPlayer = 0x80B262F4; // type:func +EnGe2_WaitTillCardGiven = 0x80B26314; // type:func +EnGe2_GiveCard = 0x80B26378; // type:func +EnGe2_ForceTalk = 0x80B2640C; // type:func +EnGe2_SetupCapturePlayer = 0x80B26490; // type:func +EnGe2_MaintainColliderAndSetAnimState = 0x80B26500; // type:func +EnGe2_MoveAndBlink = 0x80B265A8; // type:func +EnGe2_UpdateFriendly = 0x80B26634; // type:func +EnGe2_UpdateAfterTalk = 0x80B2670C; // type:func +EnGe2_Update = 0x80B26760; // type:func +EnGe2_UpdateStunned = 0x80B26948; // type:func +EnGe2_OverrideLimbDraw = 0x80B26A7C; // type:func +EnGe2_PostLimbDraw = 0x80B26AC4; // type:func +EnGe2_Draw = 0x80B26B04; // type:func +ObjRoomtimer_Init = 0x80B26E70; // type:func +ObjRoomtimer_Destroy = 0x80B26EC4; // type:func +func_80B9D054 = 0x80B26EF8; // type:func +func_80B9D0B0 = 0x80B26F58; // type:func +ObjRoomtimer_Update = 0x80B27034; // type:func +EnSsh_SetupAction = 0x80B270C0; // type:func +EnSsh_SpawnShockwave = 0x80B270CC; // type:func +EnSsh_CreateBlureEffect = 0x80B27154; // type:func +EnSsh_CheckCeilingPos = 0x80B27250; // type:func +EnSsh_AddBlureVertex = 0x80B272E8; // type:func +EnSsh_AddBlureSpace = 0x80B273F0; // type:func +EnSsh_InitColliders = 0x80B2741C; // type:func +EnSsh_SetAnimation = 0x80B2755C; // type:func +EnSsh_SetWaitAnimation = 0x80B27690; // type:func +EnSsh_SetReturnAnimation = 0x80B276B0; // type:func +EnSsh_SetLandAnimation = 0x80B276E4; // type:func +EnSsh_SetDropAnimation = 0x80B27728; // type:func +EnSsh_SetStunned = 0x80B27778; // type:func +EnSsh_SetColliderScale = 0x80B277A4; // type:func +EnSsh_Damaged = 0x80B27918; // type:func +EnSsh_Turn = 0x80B279F4; // type:func +EnSsh_Stunned = 0x80B27AC8; // type:func +EnSsh_UpdateYaw = 0x80B27B68; // type:func +EnSsh_Bob = 0x80B27BA4; // type:func +EnSsh_IsCloseToLink = 0x80B27C10; // type:func +EnSsh_IsCloseToHome = 0x80B27CF8; // type:func +EnSsh_IsCloseToGround = 0x80B27D30; // type:func +EnSsh_Sway = 0x80B27D70; // type:func +EnSsh_CheckBodyStickHit = 0x80B27EB4; // type:func +EnSsh_CheckHitPlayer = 0x80B27F28; // type:func +EnSsh_CheckHitFront = 0x80B28030; // type:func +EnSsh_CheckHitBack = 0x80B2808C; // type:func +EnSsh_CollisionCheck = 0x80B28164; // type:func +EnSsh_SetBodyCylinderAC = 0x80B28218; // type:func +EnSsh_SetLegsCylinderAC = 0x80B2825C; // type:func +EnSsh_SetCylinderOC = 0x80B28314; // type:func +EnSsh_SetColliders = 0x80B284EC; // type:func +EnSsh_Init = 0x80B285B4; // type:func +EnSsh_Destroy = 0x80B28748; // type:func +EnSsh_Wait = 0x80B287C8; // type:func +EnSsh_Talk = 0x80B28824; // type:func +EnSsh_Idle = 0x80B28870; // type:func +EnSsh_Land = 0x80B28B08; // type:func +EnSsh_Drop = 0x80B28BF0; // type:func +EnSsh_Return = 0x80B28CF0; // type:func +EnSsh_UpdateColliderScale = 0x80B28DC4; // type:func +EnSsh_Start = 0x80B28E6C; // type:func +EnSsh_Update = 0x80B28EF4; // type:func +EnSsh_OverrideLimbDraw = 0x80B29014; // type:func +EnSsh_PostLimbDraw = 0x80B29104; // type:func +EnSsh_Draw = 0x80B29140; // type:func +EnSth_SetupAction = 0x80B296B0; // type:func +EnSth_Init = 0x80B296BC; // type:func +EnSth_SetupShapeColliderUpdate2AndDraw = 0x80B297B8; // type:func +EnSth_SetupAfterObjectLoaded = 0x80B2983C; // type:func +EnSth_Destroy = 0x80B29960; // type:func +EnSth_WaitForObject = 0x80B2998C; // type:func +EnSth_FacePlayer = 0x80B299E0; // type:func +EnSth_LookAtPlayer = 0x80B29AF8; // type:func +EnSth_RewardObtainedTalk = 0x80B29C0C; // type:func +EnSth_ParentRewardObtainedWait = 0x80B29C88; // type:func +EnSth_GivePlayerItem = 0x80B29D14; // type:func +EnSth_GiveReward = 0x80B29DB0; // type:func +EnSth_RewardUnobtainedTalk = 0x80B29E30; // type:func +EnSth_RewardUnobtainedWait = 0x80B29EAC; // type:func +EnSth_ChildRewardObtainedWait = 0x80B29F50; // type:func +EnSth_Update = 0x80B29FFC; // type:func +EnSth_Update2 = 0x80B2A020; // type:func +EnSth_OverrideLimbDraw = 0x80B2A124; // type:func +EnSth_PostLimbDraw = 0x80B2A280; // type:func +EnSth_AllocColorDList = 0x80B2A2F8; // type:func +EnSth_Draw = 0x80B2A364; // type:func +OceffWipe_Init = 0x80B2D770; // type:func +OceffWipe_Destroy = 0x80B2D7CC; // type:func +OceffWipe_Update = 0x80B2D818; // type:func +OceffWipe_Draw = 0x80B2D878; // type:func +EffectSsDust_Init = 0x80B2E4F0; // type:func +EffectSsDust_Draw = 0x80B2E6A4; // type:func +EffectSsDust_Update = 0x80B2E9EC; // type:func +EffectSsDust_UpdateFire = 0x80B2EAE4; // type:func +EffectSsKiraKira_Init = 0x80B2ED30; // type:func +EffectSsKiraKira_Draw = 0x80B2EED0; // type:func +func_809AABF0 = 0x80B2F0EC; // type:func +func_809AACAC = 0x80B2F1A4; // type:func +func_809AAD6C = 0x80B2F260; // type:func +EffectSsBomb_Init = 0x80B2F3A0; // type:func +EffectSsBomb_Draw = 0x80B2F468; // type:func +EffectSsBomb_Update = 0x80B2F6A0; // type:func +EffectSsBomb2_Init = 0x80B2F7D0; // type:func +EffectSsBomb2_DrawFade = 0x80B2F8C8; // type:func +EffectSsBomb2_DrawLayered = 0x80B2FAB8; // type:func +EffectSsBomb2_Update = 0x80B2FDEC; // type:func +EffectSsBlast_Init = 0x80B300D0; // type:func +EffectSsBlast_Draw = 0x80B3022C; // type:func +EffectSsBlast_Update = 0x80B30398; // type:func +EffectSsGSpk_Init = 0x80B30460; // type:func +EffectSsGSpk_Draw = 0x80B305D0; // type:func +EffectSsGSpk_Update = 0x80B307C4; // type:func +EffectSsGSpk_UpdateNoAccel = 0x80B308CC; // type:func +EffectSsDFire_Init = 0x80B30A10; // type:func +EffectSsDFire_Draw = 0x80B30B5C; // type:func +EffectSsDFire_Update = 0x80B30DA4; // type:func +EffectSsBubble_Init = 0x80B30F00; // type:func +EffectSsBubble_Draw = 0x80B31090; // type:func +EffectSsBubble_Update = 0x80B311E4; // type:func +EffectSsGRipple_Init = 0x80B31380; // type:func +EffectSsGRipple_DrawRipple = 0x80B314FC; // type:func +EffectSsGRipple_Draw = 0x80B316F8; // type:func +EffectSsGRipple_Update = 0x80B31730; // type:func +EffectSsGSplash_Init = 0x80B318E0; // type:func +EffectSsGSplash_Draw = 0x80B31B00; // type:func +EffectSsGSplash_Update = 0x80B31C08; // type:func +EffectSsGMagma_Init = 0x80B31D90; // type:func +EffectSsGMagma_Draw = 0x80B31EE8; // type:func +EffectSsGMagma_Update = 0x80B31F44; // type:func +EffectSsGFire_Init = 0x80B31FF0; // type:func +EffectSsGFire_Draw = 0x80B32130; // type:func +EffectSsGFire_Update = 0x80B321D8; // type:func +EffectSsLightning_Init = 0x80B32280; // type:func +EffectSsLightning_NewLightning = 0x80B32368; // type:func +EffectSsLightning_Draw = 0x80B3240C; // type:func +EffectSsLightning_Update = 0x80B326A4; // type:func +EffectSsDtBubble_Init = 0x80B32950; // type:func +EffectSsDtBubble_Draw = 0x80B32BA4; // type:func +EffectSsDtBubble_Update = 0x80B32DE4; // type:func +EffectSsHahen_CheckForObject = 0x80B32EE0; // type:func +EffectSsHahen_Init = 0x80B32F54; // type:func +EffectSsHahen_Draw = 0x80B330F0; // type:func +EffectSsHahen_DrawGray = 0x80B33250; // type:func +EffectSsHahen_Update = 0x80B333F8; // type:func +EffectSsStick_Init = 0x80B33520; // type:func +EffectSsStick_Draw = 0x80B33680; // type:func +EffectSsStick_Update = 0x80B33820; // type:func +EffectSsSibuki_Init = 0x80B338C0; // type:func +EffectSsSibuki_Draw = 0x80B33A78; // type:func +EffectSsSibuki_Update = 0x80B33C28; // type:func +EffectSsSibuki2_Init = 0x80B33F90; // type:func +EffectSsSibuki2_Draw = 0x80B34040; // type:func +EffectSsSibuki2_Update = 0x80B34224; // type:func +EffectSsGMagma2_Init = 0x80B342C0; // type:func +EffectSsGMagma2_Draw = 0x80B3448C; // type:func +EffectSsGMagma2_Update = 0x80B346A4; // type:func +EffectSsStone1_Init = 0x80B347D0; // type:func +EffectSsStone1_Draw = 0x80B3485C; // type:func +EffectSsStone1_Update = 0x80B34A58; // type:func +EffectSsHitMark_Init = 0x80B34B50; // type:func +EffectSsHitMark_Draw = 0x80B34C50; // type:func +EffectSsHitMark_Update = 0x80B34E5C; // type:func +EffectSsFhgFlash_Init = 0x80B350A0; // type:func +EffectSsFhgFlash_DrawLightBall = 0x80B353EC; // type:func +EffectSsFhgFlash_DrawShock = 0x80B355E0; // type:func +EffectSsFhgFlash_UpdateLightBall = 0x80B357EC; // type:func +EffectSsFhgFlash_UpdateShock = 0x80B35884; // type:func +EffectSsKFire_Init = 0x80B36020; // type:func +EffectSsKFire_Draw = 0x80B360F0; // type:func +EffectSsKFire_Update = 0x80B36358; // type:func +EffectSsSolderSrchBall_Init = 0x80B36460; // type:func +EffectSsSolderSrchBall_Update = 0x80B364E0; // type:func +EffectSsKakera_Init = 0x80B36610; // type:func +func_809A9818 = 0x80B3679C; // type:func +EffectSsKakera_Draw = 0x80B367D8; // type:func +func_809A9BA8 = 0x80B36AC4; // type:func +func_809A9C10 = 0x80B36B30; // type:func +func_809A9DC0 = 0x80B36CE0; // type:func +func_809A9DD8 = 0x80B36CFC; // type:func +func_809A9DEC = 0x80B36D18; // type:func +func_809A9E28 = 0x80B36D54; // type:func +func_809A9E68 = 0x80B36D94; // type:func +func_809A9E88 = 0x80B36DB4; // type:func +func_809A9F10 = 0x80B36E44; // type:func +func_809A9F4C = 0x80B36E84; // type:func +func_809A9FD8 = 0x80B36F18; // type:func +func_809AA0B8 = 0x80B36FF4; // type:func +func_809AA0EC = 0x80B3702C; // type:func +func_809AA230 = 0x80B37174; // type:func +EffectSsKakera_Update = 0x80B37374; // type:func +EffectSsIcePiece_Init = 0x80B376A0; // type:func +EffectSsIcePiece_Draw = 0x80B377EC; // type:func +EffectSsIcePiece_Update = 0x80B37A20; // type:func +EffectSsEnIce_Init = 0x80B37AE0; // type:func +EffectSsEnIce_Draw = 0x80B37D88; // type:func +EffectSsEnIce_UpdateFlying = 0x80B380F8; // type:func +EffectSsEnIce_Update = 0x80B382D0; // type:func +EffectSsFireTail_Init = 0x80B383A0; // type:func +EffectSsFireTail_Draw = 0x80B384BC; // type:func +EffectSsFireTail_Update = 0x80B389C4; // type:func +EffectSsEnFire_Init = 0x80B38AA0; // type:func +EffectSsEnFire_Draw = 0x80B38C68; // type:func +EffectSsEnFire_Update = 0x80B38F70; // type:func +EffectSsExtra_Init = 0x80B391F0; // type:func +EffectSsExtra_Draw = 0x80B39334; // type:func +EffectSsExtra_Update = 0x80B394E8; // type:func +EffectSsFcircle_Init = 0x80B395B0; // type:func +EffectSsFcircle_Draw = 0x80B39670; // type:func +EffectSsFcircle_Update = 0x80B3993C; // type:func +EffectSsDeadDb_Init = 0x80B39A60; // type:func +EffectSsDeadDb_Draw = 0x80B39B7C; // type:func +EffectSsDeadDb_Update = 0x80B39D50; // type:func +EffectSsDeadDd_Init = 0x80B39F40; // type:func +EffectSsDeadDd_Draw = 0x80B3A208; // type:func +EffectSsDeadDd_Update = 0x80B3A3D8; // type:func +EffectSsDeadDs_Init = 0x80B3A4D0; // type:func +EffectSsDeadDs_Draw = 0x80B3A5B8; // type:func +EffectSsDeadDs_Update = 0x80B3A88C; // type:func +EffectSsDeadSound_Init = 0x80B3A950; // type:func +EffectSsDeadSound_Update = 0x80B3A9DC; // type:func +OceffStorm_SetupAction = 0x80B3AA90; // type:func +OceffStorm_Init = 0x80B3AA9C; // type:func +OceffStorm_Destroy = 0x80B3AB6C; // type:func +OceffStorm_DefaultAction = 0x80B3ABB8; // type:func +OceffStorm_UnkAction = 0x80B3AD7C; // type:func +OceffStorm_Update = 0x80B3AD9C; // type:func +OceffStorm_Draw2 = 0x80B3AE08; // type:func +OceffStorm_Draw = 0x80B3AFB8; // type:func +EnWeiyer_Init = 0x80B3C640; // type:func +EnWeiyer_Destroy = 0x80B3C710; // type:func +func_80B32384 = 0x80B3C73C; // type:func +func_80B32434 = 0x80B3C7F0; // type:func +func_80B32494 = 0x80B3C850; // type:func +func_80B32508 = 0x80B3C8C4; // type:func +func_80B32538 = 0x80B3C8F8; // type:func +func_80B325A0 = 0x80B3C964; // type:func +func_80B32660 = 0x80B3CA24; // type:func +func_80B32724 = 0x80B3CAE8; // type:func +func_80B327B0 = 0x80B3CB74; // type:func +func_80B327D8 = 0x80B3CBA0; // type:func +func_80B32804 = 0x80B3CBD0; // type:func +func_80B328E8 = 0x80B3CCB4; // type:func +func_80B32C2C = 0x80B3CFF8; // type:func +func_80B32D30 = 0x80B3D0FC; // type:func +func_80B32DEC = 0x80B3D1B8; // type:func +func_80B32E34 = 0x80B3D204; // type:func +func_80B33018 = 0x80B3D3EC; // type:func +func_80B331CC = 0x80B3D5A0; // type:func +func_80B332B4 = 0x80B3D688; // type:func +func_80B33338 = 0x80B3D70C; // type:func +func_80B333B8 = 0x80B3D78C; // type:func +func_80B3349C = 0x80B3D870; // type:func +func_80B3368C = 0x80B3DA64; // type:func +EnWeiyer_Update = 0x80B3DB44; // type:func +EnWeiyer_OverrideLimbDraw = 0x80B3DCB8; // type:func +EnWeiyer_Draw = 0x80B3DCE8; // type:func +BgSpot05Soko_Init = 0x80B3E040; // type:func +BgSpot05Soko_Destroy = 0x80B3E14C; // type:func +func_808AE5A8 = 0x80B3E180; // type:func +func_808AE5B4 = 0x80B3E190; // type:func +func_808AE630 = 0x80B3E20C; // type:func +BgSpot05Soko_Update = 0x80B3E274; // type:func +BgSpot05Soko_Draw = 0x80B3E298; // type:func +BgJya1flift_InitDynapoly = 0x80B3E360; // type:func +BgJya1flift_InitCollision = 0x80B3E3B8; // type:func +BgJya1flift_Init = 0x80B3E40C; // type:func +BgJya1flift_Destroy = 0x80B3E504; // type:func +BgJya1flift_SetupWaitForSwitch = 0x80B3E55C; // type:func +BgJya1flift_WaitForSwitch = 0x80B3E57C; // type:func +BgJya1flift_SetupDoNothing = 0x80B3E5C0; // type:func +BgJya1flift_DoNothing = 0x80B3E5E0; // type:func +BgJya1flift_ChangeDirection = 0x80B3E5F0; // type:func +BgJya1flift_Move = 0x80B3E618; // type:func +BgJya1flift_ResetMoveDelay = 0x80B3E6FC; // type:func +BgJya1flift_DelayMove = 0x80B3E714; // type:func +BgJya1flift_Update = 0x80B3E754; // type:func +BgJya1flift_Draw = 0x80B3E870; // type:func +BgJyaHaheniron_ColliderInit = 0x80B3E9F0; // type:func +BgJyaHaheniron_SpawnFragments = 0x80B3EA44; // type:func +BgJyaHaheniron_Init = 0x80B3EC70; // type:func +BgJyaHaheniron_Destroy = 0x80B3ED3C; // type:func +BgJyaHaheniron_SetupChairCrumble = 0x80B3ED74; // type:func +BgJyaHaheniron_ChairCrumble = 0x80B3ED88; // type:func +BgJyaHaheniron_SetupPillarCrumble = 0x80B3EEC4; // type:func +BgJyaHaheniron_PillarCrumble = 0x80B3EED8; // type:func +BgJyaHaheniron_SetupRubbleCollide = 0x80B3EF58; // type:func +BgJyaHaheniron_RubbleCollide = 0x80B3EF6C; // type:func +BgJyaHaheniron_Update = 0x80B3EFD0; // type:func +BgJyaHaheniron_Draw = 0x80B3EFFC; // type:func +BgSpot12Gate_InitDynaPoly = 0x80B3F1E0; // type:func +BgSpot12Gate_Init = 0x80B3F238; // type:func +BgSpot12Gate_Destroy = 0x80B3F2B8; // type:func +func_808B30C0 = 0x80B3F2EC; // type:func +func_808B30D8 = 0x80B3F308; // type:func +func_808B3134 = 0x80B3F364; // type:func +func_808B314C = 0x80B3F380; // type:func +func_808B317C = 0x80B3F3B0; // type:func +func_808B318C = 0x80B3F3C4; // type:func +func_808B3274 = 0x80B3F4AC; // type:func +func_808B3298 = 0x80B3F4D4; // type:func +BgSpot12Gate_Update = 0x80B3F4E4; // type:func +BgSpot12Gate_Draw = 0x80B3F518; // type:func +func_808B3420 = 0x80B3F5F0; // type:func +BgSpot12Saku_Init = 0x80B3F648; // type:func +BgSpot12Saku_Destroy = 0x80B3F6C8; // type:func +func_808B3550 = 0x80B3F6FC; // type:func +func_808B357C = 0x80B3F72C; // type:func +func_808B35E4 = 0x80B3F794; // type:func +func_808B3604 = 0x80B3F7B4; // type:func +func_808B3714 = 0x80B3F8C4; // type:func +func_808B37AC = 0x80B3F958; // type:func +BgSpot12Saku_Update = 0x80B3F968; // type:func +BgSpot12Saku_Draw = 0x80B3F99C; // type:func +EnHintnuts_Init = 0x80B3FAB0; // type:func +EnHintnuts_Destroy = 0x80B3FC50; // type:func +EnHintnuts_HitByScrubProjectile1 = 0x80B3FC8C; // type:func +EnHintnuts_SetupWait = 0x80B3FD10; // type:func +EnHintnuts_SetupLookAround = 0x80B3FD90; // type:func +EnHintnuts_SetupThrowScrubProjectile = 0x80B3FDD8; // type:func +EnHintnuts_SetupStand = 0x80B3FE18; // type:func +EnHintnuts_SetupBurrow = 0x80B3FE80; // type:func +EnHintnuts_HitByScrubProjectile2 = 0x80B3FED0; // type:func +EnHintnuts_SetupRun = 0x80B3FFC0; // type:func +EnHintnuts_SetupTalk = 0x80B40008; // type:func +EnHintnuts_SetupLeave = 0x80B40054; // type:func +EnHintnuts_SetupFreeze = 0x80B40114; // type:func +EnHintnuts_Wait = 0x80B401C0; // type:func +EnHintnuts_LookAround = 0x80B40424; // type:func +EnHintnuts_Stand = 0x80B404A8; // type:func +EnHintnuts_ThrowNut = 0x80B4056C; // type:func +EnHintnuts_Burrow = 0x80B406A8; // type:func +EnHintnuts_BeginRun = 0x80B407BC; // type:func +EnHintnuts_BeginFreeze = 0x80B40820; // type:func +EnHintnuts_CheckProximity = 0x80B4085C; // type:func +EnHintnuts_Run = 0x80B408F0; // type:func +EnHintnuts_Talk = 0x80B40B80; // type:func +EnHintnuts_Leave = 0x80B40BEC; // type:func +EnHintnuts_Freeze = 0x80B40DA8; // type:func +EnHintnuts_ColliderCheck = 0x80B40ED4; // type:func +EnHintnuts_Update = 0x80B40F88; // type:func +EnHintnuts_OverrideLimbDraw = 0x80B41110; // type:func +EnHintnuts_Draw = 0x80B41244; // type:func +EnNutsball_Init = 0x80B414E0; // type:func +EnNutsball_Destroy = 0x80B4159C; // type:func +func_80ABBB34 = 0x80B415C8; // type:func +func_80ABBBA8 = 0x80B41640; // type:func +EnNutsball_Update = 0x80B41810; // type:func +EnNutsball_Draw = 0x80B4192C; // type:func +BgSpot00Break_Init = 0x80B41B00; // type:func +BgSpot00Break_Destroy = 0x80B41BAC; // type:func +BgSpot00Break_Update = 0x80B41BE0; // type:func +BgSpot00Break_Draw = 0x80B41BF0; // type:func +EnShopnuts_Init = 0x80B41CA0; // type:func +EnShopnuts_Destroy = 0x80B41DDC; // type:func +EnShopnuts_SetupIdle = 0x80B41E08; // type:func +EnShopnuts_SetupLookAround = 0x80B41E70; // type:func +EnShopnuts_SetupThrowNut = 0x80B41EB8; // type:func +EnShopnuts_SetupPeek = 0x80B41EF8; // type:func +EnShopnuts_SetupBurrow = 0x80B41F60; // type:func +EnShopnuts_SetupSpawnSalesman = 0x80B41FB0; // type:func +EnShopnuts_Idle = 0x80B42008; // type:func +EnShopnuts_LookAround = 0x80B4226C; // type:func +EnShopnuts_Peek = 0x80B422F0; // type:func +EnShopnuts_ThrowNut = 0x80B423B4; // type:func +EnShopnuts_Burrow = 0x80B424F0; // type:func +EnShopnuts_SpawnSalesman = 0x80B425B4; // type:func +EnShopnuts_ColliderCheck = 0x80B42650; // type:func +EnShopnuts_Update = 0x80B426B0; // type:func +EnShopnuts_OverrideLimbDraw = 0x80B427F0; // type:func +EnShopnuts_PostLimbDraw = 0x80B42828; // type:func +EnShopnuts_Draw = 0x80B429C8; // type:func +EnIt_Init = 0x80B42BB0; // type:func +EnIt_Destroy = 0x80B42C1C; // type:func +EnIt_Update = 0x80B42C48; // type:func +EnGeldB_SetupAction = 0x80B42D40; // type:func +EnGeldB_Init = 0x80B42D4C; // type:func +EnGeldB_Destroy = 0x80B42F70; // type:func +EnGeldB_ReactToPlayer = 0x80B42FD8; // type:func +EnGeldB_SetupWait = 0x80B433B0; // type:func +EnGeldB_Wait = 0x80B43444; // type:func +EnGeldB_SetupFlee = 0x80B435C8; // type:func +EnGeldB_Flee = 0x80B43660; // type:func +EnGeldB_SetupReady = 0x80B43788; // type:func +EnGeldB_Ready = 0x80B43810; // type:func +EnGeldB_SetupAdvance = 0x80B43AF4; // type:func +EnGeldB_Advance = 0x80B43B74; // type:func +EnGeldB_SetupRollForward = 0x80B44020; // type:func +EnGeldB_RollForward = 0x80B440D4; // type:func +EnGeldB_SetupPivot = 0x80B4422C; // type:func +EnGeldB_Pivot = 0x80B44278; // type:func +EnGeldB_SetupCircle = 0x80B44458; // type:func +EnGeldB_Circle = 0x80B4452C; // type:func +EnGeldB_SetupSpinDodge = 0x80B44B08; // type:func +EnGeldB_SpinDodge = 0x80B44C70; // type:func +EnGeldB_SetupSlash = 0x80B450C0; // type:func +EnGeldB_Slash = 0x80B45130; // type:func +EnGeldB_SetupSpinAttack = 0x80B45380; // type:func +EnGeldB_SpinAttack = 0x80B45414; // type:func +EnGeldB_SetupRollBack = 0x80B457C8; // type:func +EnGeldB_RollBack = 0x80B45844; // type:func +EnGeldB_SetupStunned = 0x80B45948; // type:func +EnGeldB_Stunned = 0x80B459F4; // type:func +EnGeldB_SetupDamaged = 0x80B45AB0; // type:func +EnGeldB_Damaged = 0x80B45B48; // type:func +EnGeldB_SetupJump = 0x80B45CF0; // type:func +EnGeldB_Jump = 0x80B45DA8; // type:func +EnGeldB_SetupBlock = 0x80B45E90; // type:func +EnGeldB_Block = 0x80B45F48; // type:func +EnGeldB_SetupSidestep = 0x80B46234; // type:func +EnGeldB_Sidestep = 0x80B463C4; // type:func +EnGeldB_SetupDefeated = 0x80B46AE4; // type:func +EnGeldB_Defeated = 0x80B46B88; // type:func +EnGeldB_TurnHead = 0x80B46C44; // type:func +EnGeldB_CollisionCheck = 0x80B46D44; // type:func +EnGeldB_Update = 0x80B46F10; // type:func +EnGeldB_OverrideLimbDraw = 0x80B470FC; // type:func +EnGeldB_PostLimbDraw = 0x80B47244; // type:func +EnGeldB_Draw = 0x80B474BC; // type:func +EnGeldB_DodgeRanged = 0x80B4782C; // type:func +OceffWipe2_Init = 0x80B480F0; // type:func +OceffWipe2_Destroy = 0x80B4814C; // type:func +OceffWipe2_Update = 0x80B48198; // type:func +OceffWipe2_Draw = 0x80B481F8; // type:func +OceffWipe3_Init = 0x80B49860; // type:func +OceffWipe3_Destroy = 0x80B498BC; // type:func +OceffWipe3_Update = 0x80B49908; // type:func +OceffWipe3_Draw = 0x80B49968; // type:func +EnNiwGirl_Init = 0x80B4AFB0; // type:func +EnNiwGirl_Destroy = 0x80B4B150; // type:func +EnNiwGirl_Jump = 0x80B4B160; // type:func +func_80AB9210 = 0x80B4B1E4; // type:func +EnNiwGirl_Talk = 0x80B4B398; // type:func +func_80AB94D0 = 0x80B4B4A8; // type:func +EnNiwGirl_Update = 0x80B4B59C; // type:func +EnNiwGirlOverrideLimbDraw = 0x80B4B7C4; // type:func +EnNiwGirl_Draw = 0x80B4B82C; // type:func +EnDog_PlayWalkSFX = 0x80B4BA80; // type:func +EnDog_PlayRunSFX = 0x80B4BAE8; // type:func +EnDog_PlayBarkSFX = 0x80B4BB50; // type:func +EnDog_PlayAnimAndSFX = 0x80B4BBB8; // type:func +EnDog_CanFollow = 0x80B4BD50; // type:func +EnDog_UpdateWaypoint = 0x80B4BDD4; // type:func +EnDog_Orient = 0x80B4BE60; // type:func +EnDog_Init = 0x80B4BF04; // type:func +EnDog_Destroy = 0x80B4C154; // type:func +EnDog_FollowPath = 0x80B4C180; // type:func +EnDog_ChooseMovement = 0x80B4C318; // type:func +EnDog_FollowPlayer = 0x80B4C408; // type:func +EnDog_RunAway = 0x80B4C588; // type:func +EnDog_FaceLink = 0x80B4C62C; // type:func +EnDog_Wait = 0x80B4C734; // type:func +EnDog_Update = 0x80B4C78C; // type:func +EnDog_OverrideLimbDraw = 0x80B4C858; // type:func +EnDog_PostLimbDraw = 0x80B4C874; // type:func +EnDog_Draw = 0x80B4C88C; // type:func +EnSi_Init = 0x80B4CC30; // type:func +EnSi_Destroy = 0x80B4CCC0; // type:func +func_80AFB748 = 0x80B4CCEC; // type:func +func_80AFB768 = 0x80B4CD10; // type:func +func_80AFB89C = 0x80B4CE44; // type:func +func_80AFB950 = 0x80B4CEFC; // type:func +EnSi_Update = 0x80B4CF90; // type:func +EnSi_Draw = 0x80B4D004; // type:func +BgSpot01Objects2_Init = 0x80B4D130; // type:func +BgSpot01Objects2_Destroy = 0x80B4D20C; // type:func +func_808AC22C = 0x80B4D21C; // type:func +func_808AC2BC = 0x80B4D2B0; // type:func +func_808AC474 = 0x80B4D460; // type:func +BgSpot01Objects2_Update = 0x80B4D470; // type:func +func_808AC4A4 = 0x80B4D494; // type:func +ObjComb_Break = 0x80B4D5F0; // type:func +ObjComb_ChooseItemDrop = 0x80B4D8E0; // type:func +ObjComb_Init = 0x80B4D9B0; // type:func +ObjComb_Destroy = 0x80B4DA20; // type:func +ObjComb_SetupWait = 0x80B4DA4C; // type:func +ObjComb_Wait = 0x80B4DA60; // type:func +ObjComb_Update = 0x80B4DB4C; // type:func +ObjComb_Draw = 0x80B4DBC4; // type:func +func_808B2180 = 0x80B4DE50; // type:func +func_808B2218 = 0x80B4DEE4; // type:func +BgSpot11Bakudankabe_Init = 0x80B4E1FC; // type:func +BgSpot11Bakudankabe_Destroy = 0x80B4E298; // type:func +BgSpot11Bakudankabe_Update = 0x80B4E2E0; // type:func +BgSpot11Bakudankabe_Draw = 0x80B4E37C; // type:func +ObjKibako2_InitCollider = 0x80B4E490; // type:func +ObjKibako2_Break = 0x80B4E4E8; // type:func +ObjKibako2_SpawnCollectible = 0x80B4E764; // type:func +ObjKibako2_Init = 0x80B4E7B4; // type:func +ObjKibako2_Destroy = 0x80B4E860; // type:func +ObjKibako2_Idle = 0x80B4E8A8; // type:func +ObjKibako2_Kill = 0x80B4E980; // type:func +ObjKibako2_Update = 0x80B4EA04; // type:func +ObjKibako2_Draw = 0x80B4EA28; // type:func +EnDntDemo_Destroy = 0x80B4EB50; // type:func +EnDntDemo_Init = 0x80B4EB60; // type:func +EnDntDemo_Judge = 0x80B4ECD0; // type:func +EnDntDemo_Results = 0x80B4F2F0; // type:func +EnDntDemo_Prize = 0x80B4F564; // type:func +EnDntDemo_Update = 0x80B4F640; // type:func +EnDntJiji_Init = 0x80B4F870; // type:func +EnDntJiji_Destroy = 0x80B4F950; // type:func +EnDntJiji_SetFlower = 0x80B4F97C; // type:func +EnDntJiji_SetupWait = 0x80B4F9BC; // type:func +EnDntJiji_Wait = 0x80B4FA6C; // type:func +EnDntJiji_SetupUp = 0x80B4FB24; // type:func +EnDntJiji_Up = 0x80B4FC08; // type:func +EnDntJiji_SetupUnburrow = 0x80B4FC78; // type:func +EnDntJiji_Unburrow = 0x80B4FD5C; // type:func +EnDntJiji_SetupWalk = 0x80B4FDE4; // type:func +EnDntJiji_Walk = 0x80B4FE94; // type:func +EnDntJiji_SetupBurrow = 0x80B4FFD0; // type:func +EnDntJiji_Burrow = 0x80B500C0; // type:func +EnDntJiji_SetupCower = 0x80B500EC; // type:func +EnDntJiji_Cower = 0x80B5022C; // type:func +EnDntJiji_SetupTalk = 0x80B502D0; // type:func +EnDntJiji_Talk = 0x80B50364; // type:func +EnDntJiji_SetupGivePrize = 0x80B50430; // type:func +EnDntJiji_GivePrize = 0x80B504A0; // type:func +EnDntJiji_SetupHide = 0x80B505B0; // type:func +EnDntJiji_Hide = 0x80B50648; // type:func +EnDntJiji_SetupReturn = 0x80B506B4; // type:func +EnDntJiji_Return = 0x80B50764; // type:func +EnDntJiji_Update = 0x80B508DC; // type:func +EnDntJiji_Draw = 0x80B50AB4; // type:func +EnDntNomal_Init = 0x80B50D90; // type:func +EnDntNomal_Destroy = 0x80B50EB8; // type:func +EnDntNomal_WaitForObject = 0x80B50F04; // type:func +EnDntNomal_SetFlower = 0x80B51054; // type:func +EnDntNomal_SetupTargetWait = 0x80B510AC; // type:func +EnDntNomal_TargetWait = 0x80B51154; // type:func +EnDntNomal_SetupTargetUnburrow = 0x80B51430; // type:func +EnDntNomal_TargetUnburrow = 0x80B5154C; // type:func +EnDntNomal_SetupTargetWalk = 0x80B515B8; // type:func +EnDntNomal_TargetWalk = 0x80B5165C; // type:func +EnDntNomal_TargetFacePlayer = 0x80B51748; // type:func +EnDntNomal_SetupTargetTalk = 0x80B517FC; // type:func +EnDntNomal_TargetTalk = 0x80B518A8; // type:func +EnDntNomal_SetupTargetGivePrize = 0x80B51950; // type:func +EnDntNomal_TargetGivePrize = 0x80B519E8; // type:func +EnDntNomal_TargetReturn = 0x80B51B50; // type:func +EnDntNomal_TargetBurrow = 0x80B51D20; // type:func +EnDntNomal_SetupStageWait = 0x80B51D8C; // type:func +EnDntNomal_StageWait = 0x80B51E44; // type:func +EnDntNomal_SetupStageUp = 0x80B51E70; // type:func +EnDntNomal_StageUp = 0x80B51F7C; // type:func +EnDntNomal_SetupStageUnburrow = 0x80B521B0; // type:func +EnDntNomal_StageUnburrow = 0x80B522A4; // type:func +EnDntNomal_SetupStageCelebrate = 0x80B5237C; // type:func +EnDntNomal_StageCelebrate = 0x80B52424; // type:func +EnDntNomal_SetupStageDance = 0x80B5262C; // type:func +EnDntNomal_StageDance = 0x80B5273C; // type:func +EnDntNomal_SetupStageHide = 0x80B528A0; // type:func +EnDntNomal_StageHide = 0x80B5297C; // type:func +EnDntNomal_StageAttackHide = 0x80B52B40; // type:func +EnDntNomal_SetupStageAttack = 0x80B52B74; // type:func +EnDntNomal_StageAttack = 0x80B52C40; // type:func +EnDntNomal_StageSetupReturn = 0x80B52F04; // type:func +EnDntNomal_StageReturn = 0x80B52FA8; // type:func +EnDntNomal_Update = 0x80B530AC; // type:func +EnDntNomal_OverrideLimbDraw = 0x80B53370; // type:func +EnDntNomal_PostLimbDraw = 0x80B53420; // type:func +EnDntNomal_DrawStageScrub = 0x80B534A8; // type:func +EnDntNomal_DrawTargetScrub = 0x80B53698; // type:func +EnGuest_Init = 0x80B53B90; // type:func +EnGuest_Destroy = 0x80B53BF0; // type:func +EnGuest_Update = 0x80B53C1C; // type:func +func_80A5046C = 0x80B53D8C; // type:func +func_80A50518 = 0x80B53E38; // type:func +func_80A5057C = 0x80B53EA0; // type:func +func_80A505CC = 0x80B53EF4; // type:func +func_80A50708 = 0x80B54034; // type:func +EnGuest_OverrideLimbDraw = 0x80B540A0; // type:func +EnGuest_Draw = 0x80B542C8; // type:func +BgBomGuard_SetupAction = 0x80B54530; // type:func +BgBomGuard_Init = 0x80B5453C; // type:func +BgBomGuard_Destroy = 0x80B545D8; // type:func +func_8086E638 = 0x80B5460C; // type:func +BgBomGuard_Update = 0x80B546D8; // type:func +EnHs2_Init = 0x80B54750; // type:func +EnHs2_Destroy = 0x80B54830; // type:func +func_80A6F0B4 = 0x80B5485C; // type:func +func_80A6F164 = 0x80B54910; // type:func +func_80A6F1A4 = 0x80B5494C; // type:func +EnHs2_Update = 0x80B54998; // type:func +EnHs2_OverrideLimbDraw = 0x80B54B04; // type:func +EnHs2_PostLimbDraw = 0x80B54B8C; // type:func +EnHs2_Draw = 0x80B54BCC; // type:func +DemoKekkai_CheckEventFlag = 0x80B54D30; // type:func +DemoKekkai_Init = 0x80B54D74; // type:func +DemoKekkai_Destroy = 0x80B54FA4; // type:func +DemoKekkai_SpawnParticles = 0x80B54FE4; // type:func +DemoKekkai_TowerBarrier = 0x80B55238; // type:func +DemoKekkai_Update = 0x80B55354; // type:func +DemoKekkai_TrialBarrierDispel = 0x80B55480; // type:func +DemoKekkai_TrialBarrierIdle = 0x80B555E0; // type:func +DemoKekkai_DrawTrialBarrier = 0x80B55704; // type:func +DemoKekkai_DrawTowerBarrier = 0x80B55C18; // type:func +func_808B02D0 = 0x80B56020; // type:func +func_808B0324 = 0x80B56074; // type:func +BgSpot08Bakudankabe_Init = 0x80B5636C; // type:func +BgSpot08Bakudankabe_Destroy = 0x80B5640C; // type:func +BgSpot08Bakudankabe_Update = 0x80B56454; // type:func +BgSpot08Bakudankabe_Draw = 0x80B56508; // type:func +func_808B6BC0 = 0x80B566C0; // type:func +BgSpot17Bakudankabe_Init = 0x80B569F0; // type:func +BgSpot17Bakudankabe_Destroy = 0x80B56A84; // type:func +BgSpot17Bakudankabe_Update = 0x80B56AB8; // type:func +BgSpot17Bakudankabe_Draw = 0x80B56B4C; // type:func +func_80B9A9D0 = 0x80B56DB0; // type:func +func_80B9AA90 = 0x80B56E70; // type:func +func_80B9ABA0 = 0x80B56F80; // type:func +func_80B9ACE4 = 0x80B570C4; // type:func +func_80B9ADCC = 0x80B571B0; // type:func +ObjMure3_Init = 0x80B572A4; // type:func +ObjMure3_Destroy = 0x80B57304; // type:func +func_80B9AF24 = 0x80B57314; // type:func +func_80B9AF34 = 0x80B57328; // type:func +func_80B9AF54 = 0x80B5734C; // type:func +func_80B9AF64 = 0x80B57360; // type:func +func_80B9AFEC = 0x80B573E8; // type:func +func_80B9AFFC = 0x80B573FC; // type:func +ObjMure3_Update = 0x80B57478; // type:func +EnTg_GetTextId = 0x80B57580; // type:func +EnTg_UpdateTalkState = 0x80B5761C; // type:func +EnTg_Init = 0x80B576D8; // type:func +EnTg_Destroy = 0x80B577AC; // type:func +EnTg_SpinIfNotTalking = 0x80B577EC; // type:func +EnTg_Update = 0x80B57810; // type:func +EnTg_OverrideLimbDraw = 0x80B57930; // type:func +EnTg_PostLimbDraw = 0x80B5794C; // type:func +EnTg_SetColor = 0x80B579A8; // type:func +EnTg_Draw = 0x80B57A14; // type:func +EnMu_SetupAction = 0x80B57C60; // type:func +EnMu_Interact = 0x80B57C6C; // type:func +EnMu_GetTextId = 0x80B57DCC; // type:func +EnMu_UpdateTalkState = 0x80B57E10; // type:func +EnMu_Init = 0x80B57E7C; // type:func +EnMu_Destroy = 0x80B57F54; // type:func +EnMu_Pose = 0x80B57F78; // type:func +EnMu_Update = 0x80B57FB0; // type:func +EnMu_OverrideLimbDraw = 0x80B580F8; // type:func +EnMu_PostLimbDraw = 0x80B581E4; // type:func +EnMu_DisplayListSetColor = 0x80B581FC; // type:func +EnMu_Draw = 0x80B58268; // type:func +EnGo2_SpawnEffectDust = 0x80B58580; // type:func +EnGo2_UpdateEffects = 0x80B58624; // type:func +EnGo2_DrawEffects = 0x80B58730; // type:func +EnGo2_SpawnDust = 0x80B58A28; // type:func +EnGo2_GetItem = 0x80B58C40; // type:func +EnGo2_GetDialogState = 0x80B58C84; // type:func +EnGo2_GoronFireGenericGetTextId = 0x80B58D04; // type:func +EnGo2_GetTextIdGoronCityRollingBig = 0x80B58D80; // type:func +EnGo2_UpdateTalkStateGoronCityRollingBig = 0x80B58E08; // type:func +EnGo2_GetTextIdGoronDmtBombFlower = 0x80B58F00; // type:func +EnGo2_UpdateTalkStateGoronDmtBombFlower = 0x80B58F3C; // type:func +EnGo2_GetTextIdGoronDmtRollingSmall = 0x80B59054; // type:func +EnGo2_UpdateTalkStateGoronDmtRollingSmall = 0x80B590AC; // type:func +EnGo2_GetTextIdGoronDmtDcEntrance = 0x80B590E8; // type:func +EnGo2_UpdateTalkStateGoronDmtDcEntrance = 0x80B59184; // type:func +EnGo2_GetTextIdGoronCityEntrance = 0x80B591E4; // type:func +EnGo2_UpdateTalkStateGoronCityEntrance = 0x80B59264; // type:func +EnGo2_GetTextIdGoronCityIsland = 0x80B592C4; // type:func +EnGo2_UpdateTalkStateGoronCityIsland = 0x80B59344; // type:func +EnGo2_GetTextIdGoronCityLowestFloor = 0x80B593A4; // type:func +EnGo2_UpdateTalkStateGoronCityLowestFloor = 0x80B59480; // type:func +EnGo2_GetTextIdGoronCityLink = 0x80B594E0; // type:func +EnGo2_UpdateTalkStateGoronCityLink = 0x80B595BC; // type:func +EnGo2_GetTextIdGoronDmtBiggoron = 0x80B597D4; // type:func +EnGo2_UpdateTalkStateGoronDmtBiggoron = 0x80B59854; // type:func +EnGo2_GetTextIdGoronFireGeneric = 0x80B59A68; // type:func +EnGo2_UpdateTalkStateGoronFireGeneric = 0x80B59AA0; // type:func +EnGo2_GetTextIdGoronCityStairwell = 0x80B59B3C; // type:func +EnGo2_UpdateTalkStateGoronCityStairwell = 0x80B59B8C; // type:func +EnGo2_GetTextIdGoronMarketBazaar = 0x80B59BEC; // type:func +EnGo2_UpdateTalkStateGoronMarketBazaar = 0x80B59C00; // type:func +EnGo2_GetTextIdGoronCityLostWoods = 0x80B59C3C; // type:func +EnGo2_UpdateTalkStateGoronCityLostWoods = 0x80B59CAC; // type:func +EnGo2_GetTextIdGoronDmtFairyHint = 0x80B59D0C; // type:func +EnGo2_UpdateTalkStateGoronDmtFairyHint = 0x80B59D64; // type:func +EnGo2_GetTextId = 0x80B59DA0; // type:func +EnGo2_UpdateTalkState = 0x80B59EE4; // type:func +func_80A44790 = 0x80B59FFC; // type:func +EnGo2_SetColliderDim = 0x80B5A0F8; // type:func +EnGo2_SetShape = 0x80B5A134; // type:func +EnGo2_CheckCollision = 0x80B5A1AC; // type:func +EnGo2_SwapInitialFrameAnimFrameCount = 0x80B5A308; // type:func +func_80A44AB0 = 0x80B5A320; // type:func +EnGo2_UpdateWaypoint = 0x80B5A4DC; // type:func +EnGo2_Orient = 0x80B5A558; // type:func +func_80A44D84 = 0x80B5A5FC; // type:func +EnGo2_IsWakingUp = 0x80B5A634; // type:func +EnGo2_IsRollingOnGround = 0x80B5A764; // type:func +EnGo2_BiggoronSetTextId = 0x80B5A900; // type:func +func_80A45288 = 0x80B5AB00; // type:func +func_80A45360 = 0x80B5ABDC; // type:func +EnGo2_RollForward = 0x80B5ACE8; // type:func +func_80A454CC = 0x80B5AD48; // type:func +EnGo2_GetTargetXZSpeed = 0x80B5ADF4; // type:func +EnGo2_IsCameraModified = 0x80B5AE98; // type:func +EnGo2_DefaultWakingUp = 0x80B5AFB4; // type:func +EnGo2_WakingUp = 0x80B5B00C; // type:func +EnGo2_BiggoronWakingUp = 0x80B5B07C; // type:func +EnGo2_SelectGoronWakingUp = 0x80B5B0CC; // type:func +EnGo2_EyeMouthTexState = 0x80B5B1B0; // type:func +EnGo2_SitDownAnimation = 0x80B5B284; // type:func +EnGo2_GetDustData = 0x80B5B39C; // type:func +EnGo2_RollingAnimation = 0x80B5B424; // type:func +EnGo2_WakeUp = 0x80B5B4D8; // type:func +EnGo2_GetItemAnimation = 0x80B5B5CC; // type:func +EnGo2_SetupRolling = 0x80B5B630; // type:func +EnGo2_StopRolling = 0x80B5B6D8; // type:func +EnGo2_IsFreeingGoronInFire = 0x80B5B798; // type:func +EnGo2_IsGoronDmtBombFlower = 0x80B5B830; // type:func +EnGo2_IsGoronRollingBig = 0x80B5B8B0; // type:func +EnGo2_IsGoronFireGeneric = 0x80B5B910; // type:func +EnGo2_IsGoronLinkReversing = 0x80B5B94C; // type:func +EnGo2_IsRolling = 0x80B5B9A8; // type:func +EnGo2_GoronLinkAnimation = 0x80B5BA3C; // type:func +EnGo2_GoronFireCamera = 0x80B5BB70; // type:func +EnGo2_GoronFireClearCamera = 0x80B5BC70; // type:func +EnGo2_BiggoronAnimation = 0x80B5BCB0; // type:func +EnGo2_Init = 0x80B5BD64; // type:func +EnGo2_Destroy = 0x80B5C1F8; // type:func +EnGo2_CurledUp = 0x80B5C208; // type:func +func_80A46B40 = 0x80B5C3DC; // type:func +EnGo2_GoronDmtBombFlowerAnimation = 0x80B5C574; // type:func +EnGo2_GoronRollingBigContinueRolling = 0x80B5C5F8; // type:func +EnGo2_ContinueRolling = 0x80B5C658; // type:func +EnGo2_SlowRolling = 0x80B5C6F0; // type:func +EnGo2_GroundRolling = 0x80B5C828; // type:func +EnGo2_ReverseRolling = 0x80B5C8C4; // type:func +EnGo2_SetupGetItem = 0x80B5C98C; // type:func +EnGo2_SetGetItem = 0x80B5CA00; // type:func +EnGo2_BiggoronEyedrops = 0x80B5CB08; // type:func +EnGo2_GoronLinkStopRolling = 0x80B5CD3C; // type:func +EnGo2_GoronFireGenericAction = 0x80B5CE2C; // type:func +EnGo2_Update = 0x80B5D158; // type:func +EnGo2_DrawCurledUp = 0x80B5D26C; // type:func +EnGo2_DrawRolling = 0x80B5D330; // type:func +EnGo2_OverrideLimbDraw = 0x80B5D46C; // type:func +EnGo2_PostLimbDraw = 0x80B5D688; // type:func +EnGo2_Draw = 0x80B5D6E4; // type:func +EnWf_SetupAction = 0x80B5E5C0; // type:func +EnWf_Init = 0x80B5E5CC; // type:func +EnWf_Destroy = 0x80B5E800; // type:func +EnWf_ChangeAction = 0x80B5E89C; // type:func +EnWf_SetupWaitToAppear = 0x80B5EC6C; // type:func +EnWf_WaitToAppear = 0x80B5ED14; // type:func +EnWf_SetupWait = 0x80B5EE48; // type:func +EnWf_Wait = 0x80B5EED0; // type:func +EnWf_SetupRunAtPlayer = 0x80B5F0EC; // type:func +EnWf_RunAtPlayer = 0x80B5F16C; // type:func +EnWf_SetupSearchForPlayer = 0x80B5F5EC; // type:func +EnWf_SearchForPlayer = 0x80B5F638; // type:func +EnWf_SetupRunAroundPlayer = 0x80B5F818; // type:func +EnWf_RunAroundPlayer = 0x80B5F914; // type:func +EnWf_SetupSlash = 0x80B5FE34; // type:func +EnWf_Slash = 0x80B5FEB0; // type:func +EnWf_SetupRecoilFromBlockedSlash = 0x80B60204; // type:func +EnWf_RecoilFromBlockedSlash = 0x80B602A0; // type:func +EnWf_SetupBackflipAway = 0x80B60498; // type:func +EnWf_BackflipAway = 0x80B60514; // type:func +EnWf_SetupStunned = 0x80B6061C; // type:func +EnWf_Stunned = 0x80B60694; // type:func +EnWf_SetupDamaged = 0x80B60750; // type:func +EnWf_Damaged = 0x80B607E8; // type:func +EnWf_SetupSomersaultAndAttack = 0x80B609F0; // type:func +EnWf_SomersaultAndAttack = 0x80B60AA8; // type:func +EnWf_SetupBlocking = 0x80B60B90; // type:func +EnWf_Blocking = 0x80B60C30; // type:func +EnWf_SetupSidestep = 0x80B60EB4; // type:func +EnWf_Sidestep = 0x80B6104C; // type:func +EnWf_SetupDie = 0x80B6159C; // type:func +EnWf_Die = 0x80B6164C; // type:func +func_80B36F40 = 0x80B61854; // type:func +EnWf_UpdateDamage = 0x80B6194C; // type:func +EnWf_Update = 0x80B61B1C; // type:func +EnWf_OverrideLimbDraw = 0x80B61D70; // type:func +EnWf_PostLimbDraw = 0x80B61DB4; // type:func +EnWf_Draw = 0x80B61F5C; // type:func +EnWf_DodgeRanged = 0x80B62118; // type:func +EnSkb_SetupAction = 0x80B628D0; // type:func +EnSkb_SpawnDebris = 0x80B628DC; // type:func +EnSkb_Init = 0x80B62A8C; // type:func +EnSkb_Destroy = 0x80B62C44; // type:func +EnSkb_DecideNextAction = 0x80B62C9C; // type:func +EnSkb_SetupRiseFromGround = 0x80B62D38; // type:func +EnSkb_RiseFromGround = 0x80B62D9C; // type:func +EnSkb_SetupDespawn = 0x80B62E88; // type:func +EnSkb_Despawn = 0x80B62F30; // type:func +EnSkb_SetupWalkForward = 0x80B62FE4; // type:func +EnSkb_WalkForward = 0x80B6307C; // type:func +EnSkb_SetupAttack = 0x80B6327C; // type:func +EnSkb_Attack = 0x80B63314; // type:func +EnSkb_SetupRecoil = 0x80B633C0; // type:func +EnSkb_Recoil = 0x80B6344C; // type:func +EnSkb_SetupStunned = 0x80B63488; // type:func +EnSkb_Stunned = 0x80B634E4; // type:func +EnSkb_SetupTakeDamage = 0x80B6358C; // type:func +EnSkb_TakeDamage = 0x80B63614; // type:func +EnSkb_SetupDeath = 0x80B63700; // type:func +EnSkb_Death = 0x80B637CC; // type:func +EnSkb_CheckDamage = 0x80B638B8; // type:func +EnSkb_Update = 0x80B63B68; // type:func +EnSkb_OverrideLimbDraw = 0x80B63C90; // type:func +EnSkb_PostLimbDraw = 0x80B63E60; // type:func +EnSkb_Draw = 0x80B63F08; // type:func +DemoGj_GetCollectibleType = 0x80B641C0; // type:func +DemoGj_GetCollectibleAmount = 0x80B641D4; // type:func +DemoGj_GetType = 0x80B641E8; // type:func +DemoGj_InitCylinder = 0x80B641F8; // type:func +DemoGj_HitByExplosion = 0x80B64240; // type:func +DemoGj_DestroyCylinder = 0x80B64278; // type:func +DemoGj_Destroy = 0x80B64330; // type:func +DemoGj_PlayExplosionSfx = 0x80B64374; // type:func +DemoGj_SpawnSmoke = 0x80B643AC; // type:func +DemoGj_DropCollectible = 0x80B64440; // type:func +DemoGj_Explode = 0x80B644D4; // type:func +DemoGj_IsCutsceneLayer = 0x80B64770; // type:func +DemoGj_FindGanon = 0x80B64798; // type:func +DemoGj_InitCommon = 0x80B647E4; // type:func +DemoGj_InitSetIndices = 0x80B6485C; // type:func +DemoGj_DrawCommon = 0x80B648C0; // type:func +DemoGj_DrawRotated = 0x80B6495C; // type:func +DemoGj_SetupRotation = 0x80B64A38; // type:func +func_809797E4 = 0x80B64FD0; // type:func +DemoGj_IsGanondorfRisingFromRubble = 0x80B65004; // type:func +DemoGj_IsGanondorfFloatingInAir = 0x80B65028; // type:func +DemoGj_SetupMovement = 0x80B6504C; // type:func +DemoGj_CheckIfTransformedIntoGanon = 0x80B65770; // type:func +DemoGj_InitRubblePile1 = 0x80B657A8; // type:func +func_8097A000 = 0x80B657D8; // type:func +DemoGj_SpawnSmokePreBattle1 = 0x80B65854; // type:func +func_8097A0E4 = 0x80B658C0; // type:func +func_8097A130 = 0x80B65914; // type:func +DemoGj_Update01 = 0x80B65948; // type:func +DemoGj_Update08 = 0x80B65980; // type:func +DemoGj_DrawRubble2 = 0x80B659B8; // type:func +DemoGj_DrawRotatedRubble2 = 0x80B659DC; // type:func +DemoGj_InitRubblePile2 = 0x80B65A00; // type:func +func_8097A238 = 0x80B65A30; // type:func +DemoGj_SpawnSmokePreBattle2 = 0x80B65AAC; // type:func +func_8097A320 = 0x80B65B1C; // type:func +func_8097A36C = 0x80B65B70; // type:func +DemoGj_Update02 = 0x80B65BA4; // type:func +DemoGj_Update09 = 0x80B65BDC; // type:func +DemoGj_DrawRubble3 = 0x80B65C14; // type:func +DemoGj_DrawRotatedRubble3 = 0x80B65C38; // type:func +DemoGj_InitRubblePile3 = 0x80B65C5C; // type:func +func_8097A474 = 0x80B65C8C; // type:func +func_8097A4F0 = 0x80B65D08; // type:func +func_8097A53C = 0x80B65D5C; // type:func +DemoGj_Update03 = 0x80B65D90; // type:func +DemoGj_Update10 = 0x80B65DC8; // type:func +DemoGj_DrawRubble4 = 0x80B65E00; // type:func +DemoGj_DrawRotatedRubble4 = 0x80B65E24; // type:func +DemoGj_InitRubblePile4 = 0x80B65E48; // type:func +func_8097A644 = 0x80B65E78; // type:func +func_8097A6C0 = 0x80B65EF4; // type:func +func_8097A70C = 0x80B65F48; // type:func +DemoGj_Update04 = 0x80B65F7C; // type:func +DemoGj_Update11 = 0x80B65FB4; // type:func +DemoGj_DrawRubble5 = 0x80B65FEC; // type:func +DemoGj_DrawRotatedRubble5 = 0x80B66010; // type:func +DemoGj_InitRubblePile5 = 0x80B66034; // type:func +func_8097A814 = 0x80B66064; // type:func +func_8097A890 = 0x80B660E0; // type:func +func_8097A8DC = 0x80B66134; // type:func +DemoGj_Update05 = 0x80B66168; // type:func +DemoGj_Update12 = 0x80B661A0; // type:func +DemoGj_DrawRubble6 = 0x80B661D8; // type:func +DemoGj_DrawRotatedRubble6 = 0x80B661FC; // type:func +DemoGj_InitRubblePile6 = 0x80B66220; // type:func +func_8097A9E4 = 0x80B66250; // type:func +func_8097AA60 = 0x80B662CC; // type:func +func_8097AAAC = 0x80B66320; // type:func +DemoGj_Update06 = 0x80B66354; // type:func +DemoGj_Update13 = 0x80B6638C; // type:func +DemoGj_DrawRubble7 = 0x80B663C4; // type:func +DemoGj_DrawRotatedRubble7 = 0x80B663E8; // type:func +DemoGj_InitRubblePile7 = 0x80B6640C; // type:func +func_8097ABB4 = 0x80B6643C; // type:func +DemoGj_SpawnSmokePreBattle3 = 0x80B664B8; // type:func +func_8097AC9C = 0x80B66528; // type:func +func_8097ACE8 = 0x80B6657C; // type:func +DemoGj_Update07 = 0x80B665B0; // type:func +DemoGj_Update14 = 0x80B665E8; // type:func +DemoGj_DrawRubbleTall = 0x80B66620; // type:func +DemoGj_DrawRotatedRubbleTall = 0x80B66644; // type:func +DemoGj_InitRubbleAroundArena = 0x80B66668; // type:func +DemoGj_UpdateRubbleAroundArena = 0x80B66698; // type:func +DemoGj_DrawRubbleAroundArena = 0x80B666E8; // type:func +DemoGj_InitDestructableRubble1 = 0x80B6670C; // type:func +func_8097AEE8 = 0x80B66794; // type:func +DemoGj_SetCylindersAsAC = 0x80B66928; // type:func +DemoGj_DirectedExplosion = 0x80B66994; // type:func +func_8097B128 = 0x80B669D0; // type:func +DemoGj_HasCylinderAnyExploded = 0x80B66A60; // type:func +func_8097B22C = 0x80B66ADC; // type:func +DemoGj_Update15 = 0x80B66BF4; // type:func +DemoGj_Update18 = 0x80B66C2C; // type:func +DemoGj_DrawDestructableRubble1 = 0x80B66C4C; // type:func +DemoGj_InitDestructableRubble2 = 0x80B66C70; // type:func +func_8097B450 = 0x80B66CF8; // type:func +DemoGj_SetCylindersAsAC2 = 0x80B66E48; // type:func +DemoGj_HasCylinderAnyExploded2 = 0x80B66EB4; // type:func +DemoGj_DirectedExplosion2 = 0x80B66F30; // type:func +func_8097B6C4 = 0x80B66F6C; // type:func +func_8097B750 = 0x80B66FFC; // type:func +DemoGj_Update16 = 0x80B67114; // type:func +DemoGj_Update19 = 0x80B6714C; // type:func +DemoGj_DemoGj_InitDestructableRubble2 = 0x80B6716C; // type:func +DemoGj_InitDestructableRubbleTall = 0x80B67190; // type:func +DemoGj_DirectedDoubleExplosion = 0x80B671DC; // type:func +func_8097B9BC = 0x80B67260; // type:func +func_8097BA48 = 0x80B672F0; // type:func +DemoGj_Update17 = 0x80B67424; // type:func +DemoGj_Update20 = 0x80B6745C; // type:func +DemoGj_DemoGj_InitDestructableRubbleTall = 0x80B6747C; // type:func +DemoGj_Update = 0x80B674A0; // type:func +DemoGj_Init = 0x80B674E8; // type:func +DemoGj_DrawNothing = 0x80B675F0; // type:func +DemoGj_Draw = 0x80B67600; // type:func +DemoGeff_Destroy = 0x80B67E70; // type:func +DemoGeff_Init = 0x80B67E80; // type:func +func_80977EA8 = 0x80B67EC8; // type:func +func_80977F80 = 0x80B67F64; // type:func +func_80978030 = 0x80B67FC0; // type:func +func_809781FC = 0x80B6818C; // type:func +func_809782A0 = 0x80B68230; // type:func +func_80978308 = 0x80B68298; // type:func +func_80978344 = 0x80B682D0; // type:func +func_80978370 = 0x80B68300; // type:func +func_809783D4 = 0x80B6834C; // type:func +DemoGeff_Update = 0x80B683E8; // type:func +func_809784D4 = 0x80B68430; // type:func +DemoGeff_Draw = 0x80B68440; // type:func +BgGndFiremeiro_Init = 0x80B68690; // type:func +BgGndFiremeiro_Destroy = 0x80B68744; // type:func +BgGndFiremeiro_Sink = 0x80B68784; // type:func +BgGndFiremeiro_Shake = 0x80B68840; // type:func +BgGndFiremeiro_Rise = 0x80B689E4; // type:func +BgGndFiremeiro_Update = 0x80B68AA4; // type:func +BgGndFiremeiro_Draw = 0x80B68AC8; // type:func +BgGndDarkmeiro_ToggleBlock = 0x80B68BE0; // type:func +BgGndDarkmeiro_Init = 0x80B68C6C; // type:func +BgGndDarkmeiro_Destroy = 0x80B68E98; // type:func +BgGndDarkmeiro_Noop = 0x80B68EE0; // type:func +BgGndDarkmeiro_UpdateBlockTimer = 0x80B68EF0; // type:func +BgGndDarkmeiro_UpdateStaticBlock = 0x80B690E4; // type:func +BgGndDarkmeiro_UpdateSwitchBlock = 0x80B690F4; // type:func +BgGndDarkmeiro_Update = 0x80B69158; // type:func +BgGndDarkmeiro_DrawInvisiblePath = 0x80B6917C; // type:func +BgGndDarkmeiro_DrawSwitchBlock = 0x80B691AC; // type:func +BgGndDarkmeiro_DrawStaticBlock = 0x80B692C4; // type:func +BgGndSoulmeiro_Init = 0x80B693A0; // type:func +BgGndSoulmeiro_Destroy = 0x80B694E4; // type:func +func_8087AF38 = 0x80B69520; // type:func +func_8087B284 = 0x80B6986C; // type:func +func_8087B350 = 0x80B69938; // type:func +BgGndSoulmeiro_Update = 0x80B6998C; // type:func +BgGndSoulmeiro_Draw = 0x80B699B8; // type:func +BgGndNisekabe_Init = 0x80B69C00; // type:func +BgGndNisekabe_Destroy = 0x80B69C3C; // type:func +BgGndNisekabe_Update = 0x80B69C4C; // type:func +BgGndNisekabe_Draw = 0x80B69C80; // type:func +BgGndIceblock_Init = 0x80B69D70; // type:func +BgGndIceblock_Destroy = 0x80B69E5C; // type:func +BgGndIceblock_SetPosition = 0x80B69E90; // type:func +BgGndIceblock_CheckForBlock = 0x80B69F9C; // type:func +BgGndIceblock_NextAction = 0x80B69FD8; // type:func +BgGndIceblock_SetNextPosition = 0x80B6A024; // type:func +BgGndIceblock_Idle = 0x80B6A354; // type:func +BgGndIceblock_Reset = 0x80B6A410; // type:func +BgGndIceblock_Fall = 0x80B6A4D4; // type:func +BgGndIceblock_Hole = 0x80B6A58C; // type:func +BgGndIceblock_Slide = 0x80B6A628; // type:func +BgGndIceblock_Update = 0x80B6A958; // type:func +BgGndIceblock_Draw = 0x80B6A97C; // type:func +BgYdanSp_Init = 0x80B6AE70; // type:func +BgYdanSp_Destroy = 0x80B6B258; // type:func +BgYdanSp_UpdateFloorWebCollision = 0x80B6B2A0; // type:func +BgYdanSp_BurnWeb = 0x80B6B374; // type:func +BgYdanSp_BurnFloorWeb = 0x80B6B3E4; // type:func +BgYdanSp_FloorWebBroken = 0x80B6B6B8; // type:func +BgYdanSp_FloorWebBreaking = 0x80B6B6F8; // type:func +BgYdanSp_FloorWebIdle = 0x80B6B8B8; // type:func +BgYdanSp_BurnWallWeb = 0x80B6BB94; // type:func +BgYdanSp_WallWebIdle = 0x80B6BECC; // type:func +BgYdanSp_Update = 0x80B6C00C; // type:func +BgYdanSp_Draw = 0x80B6C030; // type:func +func_80A2F180 = 0x80B6C590; // type:func +EnGb_Init = 0x80B6C5C0; // type:func +EnGb_Destroy = 0x80B6C9C0; // type:func +func_80A2F608 = 0x80B6CA1C; // type:func +func_80A2F760 = 0x80B6CB74; // type:func +func_80A2F7C0 = 0x80B6CBD4; // type:func +func_80A2F83C = 0x80B6CC50; // type:func +func_80A2F94C = 0x80B6CD6C; // type:func +func_80A2F9C0 = 0x80B6CDE4; // type:func +func_80A2FA50 = 0x80B6CE78; // type:func +func_80A2FB40 = 0x80B6CF68; // type:func +func_80A2FBB0 = 0x80B6CFDC; // type:func +func_80A2FC0C = 0x80B6D03C; // type:func +func_80A2FC70 = 0x80B6D0A4; // type:func +EnGb_Update = 0x80B6D1A8; // type:func +EnGb_Draw = 0x80B6D2E0; // type:func +EnGb_UpdateCagedSouls = 0x80B6D400; // type:func +EnGb_DrawCagedSouls = 0x80B6D758; // type:func +EnGs_Init = 0x80B6DCC0; // type:func +EnGs_Destroy = 0x80B6DD84; // type:func +func_80A4E3EC = 0x80B6DD94; // type:func +func_80A4E470 = 0x80B6DE1C; // type:func +func_80A4E648 = 0x80B6DFDC; // type:func +func_80A4E754 = 0x80B6E0EC; // type:func +func_80A4E910 = 0x80B6E2AC; // type:func +func_80A4EA08 = 0x80B6E3A8; // type:func +func_80A4EB3C = 0x80B6E4DC; // type:func +func_80A4ED34 = 0x80B6E6D4; // type:func +func_80A4F13C = 0x80B6EAE0; // type:func +func_80A4F700 = 0x80B6F0A4; // type:func +func_80A4F734 = 0x80B6F0D8; // type:func +func_80A4F77C = 0x80B6F120; // type:func +EnGs_Update = 0x80B6F19C; // type:func +EnGs_Draw = 0x80B6F334; // type:func +BgMizuBwall_RotateVec3f = 0x80B6FB30; // type:func +BgMizuBwall_Init = 0x80B6FB84; // type:func +BgMizuBwall_Destroy = 0x80B70400; // type:func +BgMizuBwall_SetAlpha = 0x80B70448; // type:func +BgMizuBwall_SpawnDebris = 0x80B705CC; // type:func +BgMizuBwall_Idle = 0x80B708A0; // type:func +BgMizuBwall_Break = 0x80B709A0; // type:func +BgMizuBwall_DoNothing = 0x80B709CC; // type:func +BgMizuBwall_Update = 0x80B709DC; // type:func +BgMizuBwall_Draw = 0x80B70A00; // type:func +BgMizuShutter_Init = 0x80B71000; // type:func +BgMizuShutter_Destroy = 0x80B71260; // type:func +BgMizuShutter_WaitForSwitch = 0x80B71294; // type:func +BgMizuShutter_WaitForCutscene = 0x80B71328; // type:func +BgMizuShutter_Move = 0x80B71374; // type:func +BgMizuShutter_WaitForTimer = 0x80B71560; // type:func +BgMizuShutter_Update = 0x80B715E0; // type:func +BgMizuShutter_Draw = 0x80B71604; // type:func +EnDaikuKakariko_ChangeAnim = 0x80B71800; // type:func +EnDaikuKakariko_Init = 0x80B718B4; // type:func +EnDaikuKakariko_Destroy = 0x80B71C0C; // type:func +EnDaikuKakariko_GetTalkState = 0x80B71C38; // type:func +EnDaikuKakariko_HandleTalking = 0x80B71CDC; // type:func +EnDaikuKakariko_Talk = 0x80B71E98; // type:func +EnDaikuKakariko_Wait = 0x80B71F6C; // type:func +EnDaikuKakariko_StopRunning = 0x80B72008; // type:func +EnDaikuKakariko_Run = 0x80B720B8; // type:func +EnDaikuKakariko_Update = 0x80B72438; // type:func +EnDaikuKakariko_OverrideLimbDraw = 0x80B725B0; // type:func +EnDaikuKakariko_PostLimbDraw = 0x80B72770; // type:func +EnDaikuKakariko_Draw = 0x80B727EC; // type:func +BgBowlWall_Init = 0x80B72BC0; // type:func +BgBowlWall_Destroy = 0x80B72C78; // type:func +BgBowlWall_SpawnBullseyes = 0x80B72CAC; // type:func +BgBowlWall_WaitForHit = 0x80B72E7C; // type:func +BgBowlWall_FallDoEffects = 0x80B72EA0; // type:func +BgBowlWall_FinishFall = 0x80B73154; // type:func +BgBowlWall_Reset = 0x80B73234; // type:func +BgBowlWall_Update = 0x80B732CC; // type:func +BgBowlWall_Draw = 0x80B73300; // type:func +EnWallTubo_Init = 0x80B73540; // type:func +EnWallTubo_Destroy = 0x80B73570; // type:func +EnWallTubo_FindGirl = 0x80B73580; // type:func +EnWallTubo_DetectChu = 0x80B735C4; // type:func +EnWallTubo_SetWallFall = 0x80B737E0; // type:func +EnWallTubo_Update = 0x80B7394C; // type:func +EnPoDesert_Init = 0x80B73A30; // type:func +EnPoDesert_Destroy = 0x80B73BA0; // type:func +EnPoDesert_SetNextPathPoint = 0x80B73BE8; // type:func +EnPoDesert_SetupMoveToNextPoint = 0x80B73D44; // type:func +EnPoDesert_SetupDisappear = 0x80B73D88; // type:func +EnPoDesert_UpdateSpeedModifier = 0x80B73DE8; // type:func +EnPoDesert_WaitForPlayer = 0x80B73E58; // type:func +EnPoDesert_MoveToNextPoint = 0x80B73F24; // type:func +EnPoDesert_Disappear = 0x80B740B8; // type:func +EnPoDesert_Update = 0x80B741A0; // type:func +EnPoDesert_OverrideLimbDraw = 0x80B74294; // type:func +EnPoDesert_PostLimbDraw = 0x80B74320; // type:func +EnPoDesert_Draw = 0x80B74574; // type:func +EnCrow_Init = 0x80B747F0; // type:func +EnCrow_Destroy = 0x80B748E0; // type:func +EnCrow_SetupFlyIdle = 0x80B7490C; // type:func +EnCrow_SetupDiveAttack = 0x80B74940; // type:func +EnCrow_SetupDamaged = 0x80B74974; // type:func +EnCrow_SetupDie = 0x80B74C94; // type:func +EnCrow_SetupTurnAway = 0x80B74CAC; // type:func +EnCrow_SetupRespawn = 0x80B74D34; // type:func +EnCrow_FlyIdle = 0x80B74E28; // type:func +EnCrow_DiveAttack = 0x80B75254; // type:func +EnCrow_Damaged = 0x80B753F8; // type:func +EnCrow_Die = 0x80B75520; // type:func +EnCrow_TurnAway = 0x80B755D0; // type:func +EnCrow_Respawn = 0x80B75674; // type:func +EnCrow_UpdateDamage = 0x80B75740; // type:func +EnCrow_Update = 0x80B757F0; // type:func +EnCrow_OverrideLimbDraw = 0x80B75A0C; // type:func +EnCrow_PostLimbDraw = 0x80B75AF8; // type:func +EnCrow_Draw = 0x80B75BB8; // type:func +DoorKiller_Init = 0x80B75E90; // type:func +DoorKiller_Destroy = 0x80B761E8; // type:func +DoorKiller_SpawnRubble = 0x80B76238; // type:func +DoorKiller_FallAsRubble = 0x80B763E0; // type:func +DoorKiller_IsHit = 0x80B764A0; // type:func +DoorKiller_SetAC = 0x80B764D4; // type:func +DoorKiller_Die = 0x80B76534; // type:func +DoorKiller_RiseBackUp = 0x80B76584; // type:func +DoorKiller_FallOver = 0x80B76734; // type:func +DoorKiller_Wobble = 0x80B76B00; // type:func +DoorKiller_WaitBeforeWobble = 0x80B76C70; // type:func +DoorKiller_Wait = 0x80B76CA4; // type:func +DoorKiller_UpdateTexture = 0x80B76F04; // type:func +DoorKiller_WaitForObject = 0x80B76F98; // type:func +DoorKiller_Update = 0x80B7704C; // type:func +DoorKiller_SetTexture = 0x80B77070; // type:func +DoorKiller_DrawDoor = 0x80B7709C; // type:func +DoorKiller_DrawRubble = 0x80B770F8; // type:func +func_808B27F0 = 0x80B77400; // type:func +func_808B280C = 0x80B77420; // type:func +BgSpot11Oasis_Init = 0x80B77534; // type:func +func_808B2970 = 0x80B77588; // type:func +func_808B2980 = 0x80B7759C; // type:func +func_808B29E0 = 0x80B775FC; // type:func +func_808B29F0 = 0x80B77610; // type:func +func_808B2AA8 = 0x80B776C8; // type:func +func_808B2AB8 = 0x80B776DC; // type:func +BgSpot11Oasis_Update = 0x80B776EC; // type:func +BgSpot11Oasis_Draw = 0x80B778E0; // type:func +BgSpot18Futa_Init = 0x80B77B30; // type:func +BgSpot18Futa_Destroy = 0x80B77B9C; // type:func +BgSpot18Futa_Update = 0x80B77BD0; // type:func +BgSpot18Futa_Draw = 0x80B77C34; // type:func +BgSpot18Shutter_Init = 0x80B77CD0; // type:func +BgSpot18Shutter_Destroy = 0x80B77E80; // type:func +func_808B95AC = 0x80B77EB4; // type:func +func_808B95B8 = 0x80B77EC4; // type:func +func_808B9618 = 0x80B77F24; // type:func +func_808B9698 = 0x80B77FAC; // type:func +func_808B971C = 0x80B78030; // type:func +BgSpot18Shutter_Update = 0x80B7810C; // type:func +BgSpot18Shutter_Draw = 0x80B78130; // type:func +EnMa3_GetTextId = 0x80B78220; // type:func +EnMa3_UpdateTalkState = 0x80B78358; // type:func +func_80AA2E54 = 0x80B785D8; // type:func +func_80AA2EC8 = 0x80B7864C; // type:func +func_80AA2F28 = 0x80B786B0; // type:func +EnMa3_UpdateEyes = 0x80B78708; // type:func +EnMa3_ChangeAnim = 0x80B78794; // type:func +EnMa3_Init = 0x80B78804; // type:func +EnMa3_Destroy = 0x80B78958; // type:func +func_80AA3200 = 0x80B78998; // type:func +EnMa3_Update = 0x80B789CC; // type:func +EnMa3_OverrideLimbDraw = 0x80B78AE0; // type:func +EnMa3_PostLimbDraw = 0x80B78D20; // type:func +EnMa3_Draw = 0x80B78DD4; // type:func +EnCow_RotateY = 0x80B791D0; // type:func +EnCow_SetColliderPos = 0x80B79268; // type:func +EnCow_SetTailPos = 0x80B7935C; // type:func +EnCow_Init = 0x80B793D8; // type:func +EnCow_Destroy = 0x80B79810; // type:func +EnCow_UpdateAnimation = 0x80B7985C; // type:func +EnCow_TalkEnd = 0x80B79A84; // type:func +EnCow_GiveMilkEnd = 0x80B79AFC; // type:func +EnCow_GiveMilkWait = 0x80B79B44; // type:func +EnCow_GiveMilk = 0x80B79BA8; // type:func +EnCow_CheckForEmptyBottle = 0x80B79C44; // type:func +EnCow_Talk = 0x80B79CD4; // type:func +EnCow_Idle = 0x80B79D48; // type:func +EnCow_IdleTail = 0x80B79E64; // type:func +EnCow_Update = 0x80B79FFC; // type:func +EnCow_UpdateTail = 0x80B7A278; // type:func +EnCow_OverrideLimbDraw = 0x80B7A364; // type:func +EnCow_PostLimbDraw = 0x80B7A3B4; // type:func +EnCow_Draw = 0x80B7A3F4; // type:func +EnCow_DrawTail = 0x80B7A454; // type:func +BgIceTurara_Init = 0x80B7A630; // type:func +BgIceTurara_Destroy = 0x80B7A70C; // type:func +BgIceTurara_Break = 0x80B7A754; // type:func +BgIceTurara_Stalagmite = 0x80B7A934; // type:func +BgIceTurara_Wait = 0x80B7A99C; // type:func +BgIceTurara_Shiver = 0x80B7A9D4; // type:func +BgIceTurara_Fall = 0x80B7AB40; // type:func +BgIceTurara_Regrow = 0x80B7AC98; // type:func +BgIceTurara_Update = 0x80B7ACE8; // type:func +BgIceTurara_Draw = 0x80B7AD0C; // type:func +func_80891AC0 = 0x80B7AE60; // type:func +BgIceShutter_Init = 0x80B7AEE8; // type:func +BgIceShutter_Destroy = 0x80B7B068; // type:func +func_80891CF4 = 0x80B7B09C; // type:func +func_80891D6C = 0x80B7B114; // type:func +func_80891DD4 = 0x80B7B17C; // type:func +BgIceShutter_Update = 0x80B7B1E4; // type:func +BgIceShutter_Draw = 0x80B7B208; // type:func +EnKakasi2_Init = 0x80B7B2D0; // type:func +EnKakasi2_Destroy = 0x80B7B42C; // type:func +func_80A90264 = 0x80B7B458; // type:func +func_80A904D8 = 0x80B7B5B0; // type:func +func_80A90578 = 0x80B7B650; // type:func +func_80A9062C = 0x80B7B704; // type:func +func_80A906C4 = 0x80B7B79C; // type:func +EnKakasi2_Update = 0x80B7B80C; // type:func +func_80A90948 = 0x80B7B8CC; // type:func +EnKakasi3_Destroy = 0x80B7B9F0; // type:func +EnKakasi3_Init = 0x80B7BA1C; // type:func +func_80A90E28 = 0x80B7BAE4; // type:func +func_80A90EBC = 0x80B7BB78; // type:func +func_80A911F0 = 0x80B7BEAC; // type:func +func_80A91284 = 0x80B7BF40; // type:func +func_80A91348 = 0x80B7C004; // type:func +func_80A915B8 = 0x80B7C27C; // type:func +func_80A91620 = 0x80B7C2E8; // type:func +func_80A91760 = 0x80B7C428; // type:func +func_80A917FC = 0x80B7C4C8; // type:func +func_80A9187C = 0x80B7C550; // type:func +func_80A918E4 = 0x80B7C5BC; // type:func +func_80A91A90 = 0x80B7C700; // type:func +EnKakasi3_Update = 0x80B7C800; // type:func +EnKakasi3_Draw = 0x80B7C8F8; // type:func +OceffWipe4_Init = 0x80B7CAD0; // type:func +OceffWipe4_Destroy = 0x80B7CB2C; // type:func +OceffWipe4_Update = 0x80B7CB50; // type:func +OceffWipe4_Draw = 0x80B7CBB0; // type:func +EnEg_PlayVoidOutSFX = 0x80B7DAB0; // type:func +EnEg_Destroy = 0x80B7DAD0; // type:func +EnEg_Init = 0x80B7DAE0; // type:func +func_809FFDC8 = 0x80B7DAF0; // type:func +EnEg_Update = 0x80B7DB88; // type:func +EnEg_Draw = 0x80B7DBD0; // type:func +BgMenkuriNisekabe_Init = 0x80B7DC60; // type:func +BgMenkuriNisekabe_Destroy = 0x80B7DC88; // type:func +BgMenkuriNisekabe_Update = 0x80B7DC98; // type:func +BgMenkuriNisekabe_Draw = 0x80B7DCCC; // type:func +EnZo_SpawnRipple = 0x80B7DDB0; // type:func +EnZo_SpawnBubble = 0x80B7DE44; // type:func +EnZo_SpawnSplash = 0x80B7DF74; // type:func +EnZo_UpdateEffectsRipples = 0x80B7E0E0; // type:func +EnZo_UpdateEffectsBubbles = 0x80B7E19C; // type:func +EnZo_UpdateEffectsSplashes = 0x80B7E2CC; // type:func +EnZo_DrawEffectsRipples = 0x80B7E404; // type:func +EnZo_DrawEffectsBubbles = 0x80B7E5B4; // type:func +EnZo_DrawEffectsSplashes = 0x80B7E760; // type:func +EnZo_TreadWaterRipples = 0x80B7E918; // type:func +EnZo_SpawnSplashes = 0x80B7E994; // type:func +EnZo_GetTextId = 0x80B7EB08; // type:func +EnZo_UpdateTalkState = 0x80B7ED7C; // type:func +EnZo_Blink = 0x80B7EEE0; // type:func +EnZo_Dialog = 0x80B7EF58; // type:func +EnZo_PlayerInProximity = 0x80B7F038; // type:func +EnZo_SetAnimation = 0x80B7F0D8; // type:func +EnZo_Init = 0x80B7F1D0; // type:func +EnZo_Destroy = 0x80B7F3D8; // type:func +EnZo_Standing = 0x80B7F3E8; // type:func +EnZo_Submerged = 0x80B7F4CC; // type:func +EnZo_Surface = 0x80B7F50C; // type:func +EnZo_TreadWater = 0x80B7F5F0; // type:func +EnZo_Dive = 0x80B7F7A0; // type:func +EnZo_Update = 0x80B7F8E8; // type:func +EnZo_OverrideLimbDraw = 0x80B7FAC8; // type:func +EnZo_PostLimbDraw = 0x80B7FCE8; // type:func +EnZo_Draw = 0x80B7FD44; // type:func +EffectSsIceSmoke_Init = 0x80B80370; // type:func +EffectSsIceSmoke_Draw = 0x80B80490; // type:func +EffectSsIceSmoke_Update = 0x80B80770; // type:func +ObjMakekinsuta_Init = 0x80B80850; // type:func +func_80B98320 = 0x80B80868; // type:func +ObjMakekinsuta_DoNothing = 0x80B8091C; // type:func +ObjMakekinsuta_Update = 0x80B8092C; // type:func +EnGe3_ChangeAction = 0x80B809A0; // type:func +EnGe3_Init = 0x80B80A48; // type:func +EnGe3_Destroy = 0x80B80B50; // type:func +EnGe3_TurnToFacePlayer = 0x80B80B7C; // type:func +EnGe3_LookAtPlayer = 0x80B80C94; // type:func +EnGe3_Wait = 0x80B80DA8; // type:func +EnGe3_WaitLookAtPlayer = 0x80B80E0C; // type:func +EnGe3_WaitTillCardGiven = 0x80B80E2C; // type:func +EnGe3_GiveCard = 0x80B80E90; // type:func +EnGe3_ForceTalk = 0x80B80F24; // type:func +EnGe3_UpdateCollision = 0x80B80FDC; // type:func +EnGe3_MoveAndBlink = 0x80B81084; // type:func +EnGe3_UpdateWhenNotTalking = 0x80B81110; // type:func +EnGe3_Update = 0x80B811C4; // type:func +EnGe3_OverrideLimbDraw = 0x80B81210; // type:func +EnGe3_PostLimbDraw = 0x80B81364; // type:func +EnGe3_Draw = 0x80B813C0; // type:func +ObjTimeblock_CalculateIsVisible = 0x80B815E0; // type:func +ObjTimeblock_SpawnDemoEffect = 0x80B816A0; // type:func +ObjTimeblock_ToggleSwitchFlag = 0x80B81714; // type:func +ObjTimeblock_Init = 0x80B8175C; // type:func +ObjTimeblock_Destroy = 0x80B81910; // type:func +ObjTimeblock_PlayerIsInRange = 0x80B81944; // type:func +ObjTimeblock_WaitForOcarina = 0x80B81A24; // type:func +ObjTimeblock_WaitForSong = 0x80B81AA4; // type:func +ObjTimeblock_SetupDoNothing = 0x80B81B1C; // type:func +ObjTimeblock_DoNothing = 0x80B81B30; // type:func +ObjTimeblock_SetupNormal = 0x80B81B40; // type:func +ObjTimeblock_Normal = 0x80B81B54; // type:func +func_80BA06AC = 0x80B81CD0; // type:func +ObjTimeblock_SetupAltBehaviorVisible = 0x80B81D80; // type:func +ObjTimeblock_AltBehaviorVisible = 0x80B81D94; // type:func +ObjTimeblock_SetupAltBehaviourNotVisible = 0x80B81E60; // type:func +ObjTimeblock_AltBehaviourNotVisible = 0x80B81E74; // type:func +ObjTimeblock_Update = 0x80B81F44; // type:func +ObjTimeblock_Draw = 0x80B81FCC; // type:func +ObjHamishi_InitCollision = 0x80B82230; // type:func +ObjHamishi_Shake = 0x80B82288; // type:func +ObjHamishi_Break = 0x80B82404; // type:func +ObjHamishi_Init = 0x80B826B0; // type:func +ObjHamishi_Destroy = 0x80B82798; // type:func +ObjHamishi_Update = 0x80B827C4; // type:func +ObjHamishi_Draw = 0x80B828F4; // type:func +EnZl4_SetActiveCamDir = 0x80B82A80; // type:func +EnZl4_SetActiveCamMove = 0x80B82B58; // type:func +EnZl4_GetTextId = 0x80B82BDC; // type:func +EnZl4_UpdateTalkState = 0x80B82C80; // type:func +EnZl4_UpdateFace = 0x80B82CBC; // type:func +EnZl4_SetMove = 0x80B82E0C; // type:func +func_80B5BB78 = 0x80B82E4C; // type:func +EnZl4_GetCueStartPos = 0x80B82E98; // type:func +EnZl4_SetupFromLegendCs = 0x80B82EDC; // type:func +EnZl4_InMovingAnim = 0x80B82FB4; // type:func +EnZl4_Init = 0x80B83084; // type:func +EnZl4_Destroy = 0x80B83240; // type:func +EnZl4_SetNextAnim = 0x80B8326C; // type:func +EnZl4_ReverseAnimation = 0x80B832C0; // type:func +EnZl4_CsWaitForPlayer = 0x80B832E8; // type:func +EnZl4_CsMeetPlayer = 0x80B83448; // type:func +EnZl4_CsAskStone = 0x80B83740; // type:func +EnZl4_CsAskName = 0x80B83C6C; // type:func +EnZl4_CsTellLegend = 0x80B84258; // type:func +EnZl4_CsLookWindow = 0x80B846B4; // type:func +EnZl4_CsWarnAboutGanon = 0x80B848F8; // type:func +EnZl4_CsMakePlan = 0x80B84DC0; // type:func +EnZl4_Cutscene = 0x80B85104; // type:func +EnZl4_Idle = 0x80B8537C; // type:func +EnZl4_TheEnd = 0x80B853F4; // type:func +EnZl4_Update = 0x80B855A4; // type:func +EnZl4_OverrideLimbDraw = 0x80B85654; // type:func +EnZl4_PostLimbDraw = 0x80B857E4; // type:func +EnZl4_Draw = 0x80B85840; // type:func +EnMm2_ChangeAnim = 0x80B874B0; // type:func +func_80AAEF70 = 0x80B875D4; // type:func +EnMm2_Init = 0x80B876A4; // type:func +EnMm2_Destroy = 0x80B8785C; // type:func +func_80AAF224 = 0x80B87888; // type:func +func_80AAF2BC = 0x80B87924; // type:func +func_80AAF330 = 0x80B87998; // type:func +func_80AAF3C0 = 0x80B87A28; // type:func +func_80AAF57C = 0x80B87BE4; // type:func +func_80AAF5EC = 0x80B87C58; // type:func +func_80AAF668 = 0x80B87CD4; // type:func +EnMm2_Update = 0x80B87DC8; // type:func +EnMm2_Draw = 0x80B87F10; // type:func +EnMm2_OverrideLimbDraw = 0x80B87FDC; // type:func +EnMm2_PostLimbDraw = 0x80B88064; // type:func +BgJyaBlock_Init = 0x80B88270; // type:func +BgJyaBlock_Destroy = 0x80B88328; // type:func +BgJyaBlock_Update = 0x80B8835C; // type:func +BgJyaBlock_Draw = 0x80B88380; // type:func +ObjWarp2block_Spawn = 0x80B884E0; // type:func +func_80BA1ECC = 0x80B885BC; // type:func +ObjWarp2block_SwapWithChild = 0x80B8873C; // type:func +func_80BA2218 = 0x80B8890C; // type:func +func_80BA228C = 0x80B8898C; // type:func +func_80BA2304 = 0x80B88A04; // type:func +ObjWarp2block_Init = 0x80B88A48; // type:func +ObjWarp2block_Destroy = 0x80B88B68; // type:func +ObjWarp2block_SetInactive = 0x80B88BA8; // type:func +ObjWarp2block_DoNothing = 0x80B88BC0; // type:func +func_80BA24E8 = 0x80B88BD0; // type:func +func_80BA24F8 = 0x80B88BE4; // type:func +func_80BA2600 = 0x80B88CC8; // type:func +func_80BA2610 = 0x80B88CDC; // type:func +ObjWarp2block_Update = 0x80B88D8C; // type:func +ObjWarp2block_Draw = 0x80B88DC8; // type:func diff --git a/tools/disasm/ique-cn/variables.txt b/tools/disasm/ique-cn/variables.txt new file mode 100644 index 0000000000..3103f86a63 --- /dev/null +++ b/tools/disasm/ique-cn/variables.txt @@ -0,0 +1,23 @@ +gCartHandle = 0x80009D60; // size:0x4 type:OSPiHandle* +gCurrentRegion = 0x80009F00; // size:0x4 type:u32 +__osRunQueue = 0x80009F38; // size:0x4 type:OSThread* +__osRunningThread = 0x80009F40; // size:0x4 type:OSThread* +__osFaultedThread = 0x80009F44; // size:0x4 type:OSThread* +__osHwIntTable = 0x8000A070; // size:0x28 +__osPiIntTable = 0x8000A098; // size:0x8 +__osShutdown = 0x8000A0FC; // size:0x4 type:u32 +__OSGlobalIntMask = 0x8000A100; // type:OSHWIntr +__osIntOffTable = 0x8000A670; // size:0x20 type:u8 +__osIntTable = 0x8000A690; // size:0x24 +__osRcpImTable = 0x8000A6C0; // type:u16 +__DriveRomHandle = 0x80010760; // size:0x74 type:OSPiHandle +__osThreadSave = 0x80012BE0; // type:OSThread +__osEventStateTab = 0x80012F40; // size:0x78 +gGameStateOverlayTable = 0x800F8F30; // size:0x120 type:GameStateOverlay +gRegEditor = 0x80127760; // size:0x4 type:RegEditor* +sZeldaArena = 0x80127C50; // size:0x24 type:Arena +gSegments = 0x80129048; // size:0x40 +sFaultDrawer = 0x8012E030; // size:0x3C type:FaultDrawer +sArenaLockMsg = 0x80137E40; // size:0x4 type:OSMesg +gSystemArena = 0x80137E50; // type:Arena +gSaveContext = 0x80137F40; // size:0x1428 type:SaveContext diff --git a/tools/extract_text.py b/tools/extract_text.py index 50b6923732..d9d9b50b61 100755 --- a/tools/extract_text.py +++ b/tools/extract_text.py @@ -1882,6 +1882,148 @@ class MessageDecoderNES(MessageDecoder): 0x47 : "BLACK", }[c] +# Chinese Characters ordered according to their appearance in nes_font_static. +# This unfortunately does not appear to match any standard encoding. +CHN_CHARS = """你借到了一\ +颗口袋鸡蛋过夜后就会孵出只,用完\ +别忘记把它还回去。归得克洛!与不\ +同很少啼叫个奇异蘑菇新鲜的都容易\ +变质快拿卡利科药店吧之知道这两人\ +间发生什么事但带迷失森林物原主偷\ +猎者锯定是那年轻留下炸弹枚卢比买\ +德库子可以装弓换破损格雷剑大城修\ +好交处方见卓拉王⋯兑券急切地希望\ +点铸卖掉巨刀铁匠师所造坚摧卷眼青\ +蛙趁凉海鲁湖世上最水在前送蠃啦骷\ +髅面具按戴试看着真像怪恐怖吓基顿\ +受欢迎哦兔兜帽长耳朵太爱让头起来\ +有女孩?理更多我们娱乐中心:保龄\ +球场想奖品吗秘密付钱才告诉玩次要\ +瞄准洞放鼠十机预备开始再差()捡\ +扔没能恢复正常请救其他兄弟给励诅\ +咒解除谢报呀啊被小消灭蜘蛛已经减\ +弱富办法越些验帮助寻找首先晚行动\ +第二住喜松柔土壤仔细观察周围全靠\ +成样因为种界每现徽章收集作战绩证\ +明征途状态窗此图标旁边数字显示目\ +量如果区名说里家族身感止错担需箭\ +关系强迫游戏著射击从台够五支武器\ +争取祝运堆软泥精灵选择或键并立即\ +时举置跑投掷疑型甚至飞檐走壁闪光\ +使敌眩晕旋镖攻远短钩条力链勾体获\ +自己根木棒挥舞站携浪费锤砸碎废沉\ +双手镜神井外也耗魔停笛塞尔达宝散\ +芒施展花风返避退火勋圣尼亚觉醒将\ +赐予茹特她萨莉娅魂纳波若暗英帕空\ +瓶红色命份绿蓝和抓伙伴活随呼唤鱼\ +非美豆园合适趣对纪念演奏各律重握\ +盾蹲防御移表滑反升级延伸距离倍套\ +件隔热穿潜服淹死坛充满靴浮悬缺摩\ +擦段勇敢相信超东哥猛龙胃做幸银臂\ +答应遵守诺言金焰入冷艳包钥匙打锁\ +门限于宫内老却驱喝进然域烁当位拨\ +查某层罗盘隐藏振石继续努哇公签临\ +西便箱意惊话左右赌徒值威增冰结授\ +艰苦训练该拥而荣义邪恶学步曲烈安\ +影梦幻镯拔虫员张据翡翠伟树托代传\ +碧商讲妖婆堡男情隆牛奶营养排销售\ +榜朋友搬日客碰烧毁折断斗习骑士又\ +承制尺码护炙侵害底溺掌丁妮席性危\ +往创建娜产罩刚清舒爽般暂脱参加嗯\ +顾片四整三房干稍候赛鳞跳深歌伊阳\ +摇篮雪壮管术接智慧气疲惫治疗伤且\ +硬技斩积蓄直释转效谈听束刻注嗨皇\ +探儿附近半思仅燃紫价高百索何输虽\ +惜幽妙愿勉网墙布藤蔓平爬屏幕顶端\ +挂旧梯嘿饰熄久通狭路慢躲调视角弯\ +旦侧落块推向兴引爆呢山坑楼绝总巧\ +脸私语足导写险雕流粘浑电尾巴几瞧\ +旗哪召跟拜访牧爸拯窟卜肚白马丢河\ +殿村云吹寒庄谁教沙漠盖侬夫等介联\ +声嘻曾领统疆怕鸟黑睛暴雨息初六聚\ +封印七认识必须未梭另渡船乘艘咯扇\ +许鬼板画廊扭天味冻音座锈漩涡吞嘛\ +牢固殊静墓培睡掘阅读式租货款仍;\ +载贪婪仇恨血腥历史诡计谜题亡闭今\ +业早招聘兼职杂指启遗极亮照闯穴伏\ +阻拦朝囚室贝泊泉黎童纯洁翻嘴陷野\ +研究考坏竟坐玛录钓磅分纹誓忠哈眠\ +瀑国务盯毯踩资瞎难倒阱塘屈镇径窄\ +慌允禁激颁喷扰砍持草泰沿实峡谷册\ +追赶市蜃崖灼宣疯狂滚伞脚共部免规\ +递登补肉歉刺杀节横纵礼貌米无孪姐\ +妹改池胆跃任句线范逃期待丽问闲泳\ +连北棵锐虑挤障碍盔甲假设温际顽皮\ +姆违盗贼蝴蝶崇象猫鹰凯普・博古化\ +笨朗匹雄赚寄卵幼突袭腹绦食笔竖枯\ +矮丛吃震撼吸败蜥蜴蝙蝠否则阿莫斯\ +母绕触傻遭汀幅敬诱泡挡沃衣炬黏背\ +抵权核挑壳肌缩邦苏透僵尸麻痹咬吉\ +乃穷尽裂拢娃傀儡亲巫低骨斧漏莱彼\ +塔扫描烟蛇弗扎挺八爪迪困陆嗜仙狼\ +懈贩麦判乔绽速嗄羞永稻终薇呵父程\ +工存氛笼令敏项欧谅众悍怎亏掏毕缓\ +冲酷俯瞰哼蚀功糟呸黄类篇论控括冒\ +度检单懂屋户致腾模嗒咔咋萎紧决呆\ +闷畏骗苗茁算猜残妇婴蔽唯响抚吵境\ +隙逝忆喂辈肩洋溢确迹凝髓混沌降健\ +耕耘星倾沛础堂万宗源本替缝惩罚遇\ +懒惰衷势维秩序抗衡旅顺叛愤辽阔茂\ +称讨厌靶饲求材耶谊噓遍谱议吼薄饶\ +稽齐懦抱千辛漂环配帝焦乎欠驯圈局\ +咩既劳祭伪弃耐岗唔佳搭档负责攀绍\ +忙提缠唉亳毛笑欣赏怜瓜奔啧踢志宜\ +仿楚挖由捕播谣勤陌杰骏鞭抽享栏逛\ +汊烦匆妈唱墟粗虐乡彻咕哝简优惠民\ +灰聪南澈卫熟悉故乌兆企抢夺拼粉番\ +群秒料肯赋婚诚邀斜诞及盛典拍轰植\ +矿采阴罕昏压悦饿忍咳弄舔醉怀尊严\ +滋农饥沮丧奋省撑脑灯隧派狗呜咣警\ +挪窜峙含痛夸艺撒谎昨炎痒泪稳况磨\ +休柱敲油菜盟骄傲献噢窒医甜鰓恼耽\ +搁孤丈订戒贵财惹腐剂融厚映妻狠泄\ +咿瞒咽恭涨嘎悔犹豫呃糕埃荡漾饵晃\ +约专剔窍.乱甩鳅剧竿杆符呱团饱犯\ +肃啵吟月诗碑奥扬舍副袖夏赖仆摆雇\ +疙瘩居簧车剩玻璃赔欺育珍床蛮啄、\ +稀栋柜鼻厉乏饭胡叮咚兵勃苛薪痴挣\ +馊扑良竭慷慨欲愚蠢嘉监狱喔港逆误\ +独划措颜奴罢洗俊罪偿牺牲劲岁恩账\ +珂艾组织伯社架桥碟卑鄙臭占讶兽刷\ +竞帐篷迟繁倦罐牌晨景田孔钻浓盒溜\ +街概盹敞扉文撞姑娘糊涂依辐微汇缚\ +宰摸侍垒扮惕估执悲拖累弥渴班搞谛\ +哀圆鸣俩善塌埋孙凶聊寃怨购涌劈狐\ +狸票闻哟唬摘愉呦棺溶褐肤颤逗娶逼\ +悠蒙漆彩丰""" +# Ensure the contents of the above is unique +assert len(set(CHN_CHARS)) == len(CHN_CHARS), (len(set(CHN_CHARS)), len(CHN_CHARS)) + +class MessageDecoderCHN(MessageDecoderNES): + def __init__(self) -> None: + # The CHN text encoding is mostly the same as the NES encoding, except it lacks + # the D-Pad Icon and has multi-byte sequences for Chinese characters. + super().__init__() + # Remove D-Pad Icon + self.extraction_charmap.pop(0xAB) + # Add Chinese Characters + for i,c in enumerate(CHN_CHARS): + self.extraction_charmap[0xA08C + i] = c + self.pop_char = self.pop_char_chn + + def pop_char_chn(self) -> int: + c = self.pop_byte() + # AA acts like a sort of escape sequence for single-byte + # chars that are >= 0xA0 that should not be interpreted + # as a multi-byte sequence + if c == 0xAA: + return self.pop_byte() + # For other chars >= 0xA0, it indicates a multi-byte sequence + if c >= 0xA0: + return (c << 8) | self.pop_byte() + # If neither of the above, treat as a single byte char + return c + class MessageTableDesc: def __init__(self, table_name : str, seg_name : str, decoder : MessageDecoder, parent : Optional[int]) -> None: self.table_name : str = table_name @@ -1895,6 +2037,9 @@ class MessageTableEntry: def __init__(self, text_id : int, box_type : int, box_pos : int, addr : int) -> None: self.text_id, self.box_type, self.box_pos, self.addr = text_id, box_type, box_pos, addr + def __str__(self) -> str: + return f"MessageTableEntry(0x{self.text_id:04X}, {self.box_type}, {self.box_pos}, 0x{self.addr:08X})" + @staticmethod def from_bin(data : bytes) -> "MessageTableEntry": text_id,info,addr = struct.unpack(">HBxI", data) @@ -1947,8 +2092,9 @@ class MessageEntry: # Valid for all languages out += self.define_message("DEFINE_MESSAGE", shared_box_type, shared_box_pos, self.data) else: - # Some NTSC messages have different box types/positions between JPN and NES, + # Some NTSC/iQue messages have different box types/positions between JPN and NES/CHN, # so emit both DEFINE_MESSAGE_JPN and DEFINE_MESSAGE_NES + assert len(self.data) == 4 assert self.data[0] is not None assert self.data[1] is not None assert self.data[2] is None @@ -1959,7 +2105,7 @@ class MessageEntry: # JPN only out += self.define_message("DEFINE_MESSAGE_JPN", self.data[0].box_type, self.data[0].box_pos, self.data) elif selection == (False,True,True,True): - # NES only + # NES/CHN only out += self.define_message("DEFINE_MESSAGE_NES", self.data[1].box_type, self.data[1].box_pos, self.data) else: # Other unimplemented cases @@ -2070,22 +2216,31 @@ def main(): jpn_decoder = MessageDecoderJPN() nes_decoder = MessageDecoderNES() + chn_decoder = MessageDecoderCHN() - message_tables : List[Optional[MessageTableDesc]] = [None for _ in range(4)] # JP, EN, FR, DE + message_tables : List[Optional[MessageTableDesc]] = [None for _ in range(4)] # JP, EN/CN, FR, DE message_table_staff : MessageTableDesc = None - if config.text_lang_pal: - message_tables[0] = None - message_tables[1] = MessageTableDesc("sNesMessageEntryTable", "nes_message_data_static", nes_decoder, None) - message_tables[2] = MessageTableDesc("sGerMessageEntryTable", "ger_message_data_static", nes_decoder, 1) - message_tables[3] = MessageTableDesc("sFraMessageEntryTable", "fra_message_data_static", nes_decoder, 1) - message_table_staff = MessageTableDesc("sStaffMessageEntryTable", "staff_message_data_static", nes_decoder, None) - else: + if config.text_lang == "NTSC": message_tables[0] = MessageTableDesc("sJpnMessageEntryTable", "jpn_message_data_static", jpn_decoder, None) message_tables[1] = MessageTableDesc("sNesMessageEntryTable", "nes_message_data_static", nes_decoder, None) message_tables[2] = None message_tables[3] = None message_table_staff = MessageTableDesc("sStaffMessageEntryTable", "staff_message_data_static", nes_decoder, None) + elif config.text_lang == "PAL": + message_tables[0] = None + message_tables[1] = MessageTableDesc("sNesMessageEntryTable", "nes_message_data_static", nes_decoder, None) + message_tables[2] = MessageTableDesc("sGerMessageEntryTable", "ger_message_data_static", nes_decoder, 1) + message_tables[3] = MessageTableDesc("sFraMessageEntryTable", "fra_message_data_static", nes_decoder, 1) + message_table_staff = MessageTableDesc("sStaffMessageEntryTable", "staff_message_data_static", nes_decoder, None) + elif config.text_lang == "CN": + message_tables[0] = MessageTableDesc("sJpnMessageEntryTable", "jpn_message_data_static", jpn_decoder, None) + message_tables[1] = MessageTableDesc("sNesMessageEntryTable", "nes_message_data_static", chn_decoder, None) + message_tables[2] = None + message_tables[3] = None + message_table_staff = MessageTableDesc("sStaffMessageEntryTable", "staff_message_data_static", nes_decoder, None) + else: + raise Exception(f"Unsupported text language: {config.text_lang}") messages = collect_messages(message_tables, baserom_segments_dir, config, code_vram, code_bin) staff_messages = collect_messages([message_table_staff], baserom_segments_dir, config, code_vram, code_bin) diff --git a/tools/ido_recomp/linux/5.3/as0 b/tools/ido_recomp/linux/5.3/as0 deleted file mode 100755 index cdac712e5f..0000000000 Binary files a/tools/ido_recomp/linux/5.3/as0 and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/as1 b/tools/ido_recomp/linux/5.3/as1 deleted file mode 100755 index f89911f80f..0000000000 Binary files a/tools/ido_recomp/linux/5.3/as1 and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/cc b/tools/ido_recomp/linux/5.3/cc deleted file mode 100755 index be5bed557d..0000000000 Binary files a/tools/ido_recomp/linux/5.3/cc and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/cfe b/tools/ido_recomp/linux/5.3/cfe deleted file mode 100755 index c257f65a62..0000000000 Binary files a/tools/ido_recomp/linux/5.3/cfe and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/err.english.cc b/tools/ido_recomp/linux/5.3/err.english.cc deleted file mode 100644 index 6976e38a95..0000000000 --- a/tools/ido_recomp/linux/5.3/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41936 41936 -41936 41977 41977 -41977 42018 42018 -42018 42090 42090 -42090 42162 42162 -42162 42205 42205 -42205 42267 42267 -42267 42294 42294 -42294 42309 42309 -42309 42338 42386 -42393 42425 42522 -42530 42577 42577 -42577 42623 42623 -42623 42643 42725 -42725 42748 42748 -42748 42829 42897 -42901 42952 42952 -42952 42978 43025 -43025 43116 43116 -43116 43171 43171 -43171 43204 43376 -43386 43453 43471 -43471 43547 43780 -43798 43921 44116 -44120 44120 44120 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -width of %s constant is smaller than size of type (%s) -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/linux/5.3/ugen b/tools/ido_recomp/linux/5.3/ugen deleted file mode 100755 index d356300bfc..0000000000 Binary files a/tools/ido_recomp/linux/5.3/ugen and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/ujoin b/tools/ido_recomp/linux/5.3/ujoin deleted file mode 100755 index 5a3162799e..0000000000 Binary files a/tools/ido_recomp/linux/5.3/ujoin and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/uld b/tools/ido_recomp/linux/5.3/uld deleted file mode 100755 index a65a2239ba..0000000000 Binary files a/tools/ido_recomp/linux/5.3/uld and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/umerge b/tools/ido_recomp/linux/5.3/umerge deleted file mode 100755 index 36fa5ac6e6..0000000000 Binary files a/tools/ido_recomp/linux/5.3/umerge and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/uopt b/tools/ido_recomp/linux/5.3/uopt deleted file mode 100755 index f446420873..0000000000 Binary files a/tools/ido_recomp/linux/5.3/uopt and /dev/null differ diff --git a/tools/ido_recomp/linux/5.3/usplit b/tools/ido_recomp/linux/5.3/usplit deleted file mode 100755 index 5aa4151ed4..0000000000 Binary files a/tools/ido_recomp/linux/5.3/usplit and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/as0 b/tools/ido_recomp/linux/7.1/as0 deleted file mode 100755 index 1a69a14a5b..0000000000 Binary files a/tools/ido_recomp/linux/7.1/as0 and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/as1 b/tools/ido_recomp/linux/7.1/as1 deleted file mode 100755 index 047cfdd7fd..0000000000 Binary files a/tools/ido_recomp/linux/7.1/as1 and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/cc b/tools/ido_recomp/linux/7.1/cc deleted file mode 100755 index 61c43ede1a..0000000000 Binary files a/tools/ido_recomp/linux/7.1/cc and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/cfe b/tools/ido_recomp/linux/7.1/cfe deleted file mode 100755 index 75235c1125..0000000000 Binary files a/tools/ido_recomp/linux/7.1/cfe and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/err.english.cc b/tools/ido_recomp/linux/7.1/err.english.cc deleted file mode 100644 index b5d5be36ef..0000000000 --- a/tools/ido_recomp/linux/7.1/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41944 41944 -41944 41985 41985 -41985 42026 42026 -42026 42098 42098 -42098 42170 42170 -42170 42213 42213 -42213 42275 42275 -42275 42302 42302 -42302 42317 42317 -42317 42346 42394 -42401 42433 42530 -42538 42585 42585 -42585 42631 42631 -42631 42651 42733 -42733 42756 42756 -42756 42837 42905 -42909 42960 42960 -42960 42986 43033 -43033 43124 43124 -43124 43179 43179 -43179 43212 43384 -43394 43461 43479 -43479 43555 43788 -43806 43929 44124 -44128 44128 44128 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -only %s bits of '%s' constant (type '%s') are explicitly given -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/linux/7.1/ugen b/tools/ido_recomp/linux/7.1/ugen deleted file mode 100755 index 32d8d0be6e..0000000000 Binary files a/tools/ido_recomp/linux/7.1/ugen and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/ujoin b/tools/ido_recomp/linux/7.1/ujoin deleted file mode 100755 index 49b35ba6a5..0000000000 Binary files a/tools/ido_recomp/linux/7.1/ujoin and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/uld b/tools/ido_recomp/linux/7.1/uld deleted file mode 100755 index 756d30cd43..0000000000 Binary files a/tools/ido_recomp/linux/7.1/uld and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/umerge b/tools/ido_recomp/linux/7.1/umerge deleted file mode 100755 index 569e56e767..0000000000 Binary files a/tools/ido_recomp/linux/7.1/umerge and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/uopt b/tools/ido_recomp/linux/7.1/uopt deleted file mode 100755 index 349d1d6ffd..0000000000 Binary files a/tools/ido_recomp/linux/7.1/uopt and /dev/null differ diff --git a/tools/ido_recomp/linux/7.1/usplit b/tools/ido_recomp/linux/7.1/usplit deleted file mode 100755 index 563c5f8a2e..0000000000 Binary files a/tools/ido_recomp/linux/7.1/usplit and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/as0 b/tools/ido_recomp/macos/5.3/as0 deleted file mode 100755 index 1d2b7a7254..0000000000 Binary files a/tools/ido_recomp/macos/5.3/as0 and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/as1 b/tools/ido_recomp/macos/5.3/as1 deleted file mode 100755 index 44fada1c50..0000000000 Binary files a/tools/ido_recomp/macos/5.3/as1 and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/cc b/tools/ido_recomp/macos/5.3/cc deleted file mode 100755 index 9e3c8f8c99..0000000000 Binary files a/tools/ido_recomp/macos/5.3/cc and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/cfe b/tools/ido_recomp/macos/5.3/cfe deleted file mode 100755 index 86d98c79d3..0000000000 Binary files a/tools/ido_recomp/macos/5.3/cfe and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/err.english.cc b/tools/ido_recomp/macos/5.3/err.english.cc deleted file mode 100644 index 6976e38a95..0000000000 --- a/tools/ido_recomp/macos/5.3/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41936 41936 -41936 41977 41977 -41977 42018 42018 -42018 42090 42090 -42090 42162 42162 -42162 42205 42205 -42205 42267 42267 -42267 42294 42294 -42294 42309 42309 -42309 42338 42386 -42393 42425 42522 -42530 42577 42577 -42577 42623 42623 -42623 42643 42725 -42725 42748 42748 -42748 42829 42897 -42901 42952 42952 -42952 42978 43025 -43025 43116 43116 -43116 43171 43171 -43171 43204 43376 -43386 43453 43471 -43471 43547 43780 -43798 43921 44116 -44120 44120 44120 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -width of %s constant is smaller than size of type (%s) -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/macos/5.3/ugen b/tools/ido_recomp/macos/5.3/ugen deleted file mode 100755 index add44a34df..0000000000 Binary files a/tools/ido_recomp/macos/5.3/ugen and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/ujoin b/tools/ido_recomp/macos/5.3/ujoin deleted file mode 100755 index 5e7ed4789d..0000000000 Binary files a/tools/ido_recomp/macos/5.3/ujoin and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/uld b/tools/ido_recomp/macos/5.3/uld deleted file mode 100755 index 64fc3899cf..0000000000 Binary files a/tools/ido_recomp/macos/5.3/uld and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/umerge b/tools/ido_recomp/macos/5.3/umerge deleted file mode 100755 index c66ef9f2fb..0000000000 Binary files a/tools/ido_recomp/macos/5.3/umerge and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/uopt b/tools/ido_recomp/macos/5.3/uopt deleted file mode 100755 index 0872f9c171..0000000000 Binary files a/tools/ido_recomp/macos/5.3/uopt and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/usplit b/tools/ido_recomp/macos/5.3/usplit deleted file mode 100755 index 2a7c351880..0000000000 Binary files a/tools/ido_recomp/macos/5.3/usplit and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/as0 b/tools/ido_recomp/macos/7.1/as0 deleted file mode 100755 index 9a2fd2f0af..0000000000 Binary files a/tools/ido_recomp/macos/7.1/as0 and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/as1 b/tools/ido_recomp/macos/7.1/as1 deleted file mode 100755 index e91f7d1a2f..0000000000 Binary files a/tools/ido_recomp/macos/7.1/as1 and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/cc b/tools/ido_recomp/macos/7.1/cc deleted file mode 100755 index b487956f20..0000000000 Binary files a/tools/ido_recomp/macos/7.1/cc and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/cfe b/tools/ido_recomp/macos/7.1/cfe deleted file mode 100755 index f86fc3743f..0000000000 Binary files a/tools/ido_recomp/macos/7.1/cfe and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/err.english.cc b/tools/ido_recomp/macos/7.1/err.english.cc deleted file mode 100644 index b5d5be36ef..0000000000 --- a/tools/ido_recomp/macos/7.1/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41944 41944 -41944 41985 41985 -41985 42026 42026 -42026 42098 42098 -42098 42170 42170 -42170 42213 42213 -42213 42275 42275 -42275 42302 42302 -42302 42317 42317 -42317 42346 42394 -42401 42433 42530 -42538 42585 42585 -42585 42631 42631 -42631 42651 42733 -42733 42756 42756 -42756 42837 42905 -42909 42960 42960 -42960 42986 43033 -43033 43124 43124 -43124 43179 43179 -43179 43212 43384 -43394 43461 43479 -43479 43555 43788 -43806 43929 44124 -44128 44128 44128 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -only %s bits of '%s' constant (type '%s') are explicitly given -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/macos/7.1/ugen b/tools/ido_recomp/macos/7.1/ugen deleted file mode 100755 index 1e9839b4eb..0000000000 Binary files a/tools/ido_recomp/macos/7.1/ugen and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/ujoin b/tools/ido_recomp/macos/7.1/ujoin deleted file mode 100755 index d2512e9341..0000000000 Binary files a/tools/ido_recomp/macos/7.1/ujoin and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/uld b/tools/ido_recomp/macos/7.1/uld deleted file mode 100755 index a746a8236e..0000000000 Binary files a/tools/ido_recomp/macos/7.1/uld and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/umerge b/tools/ido_recomp/macos/7.1/umerge deleted file mode 100755 index a561c08012..0000000000 Binary files a/tools/ido_recomp/macos/7.1/umerge and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/uopt b/tools/ido_recomp/macos/7.1/uopt deleted file mode 100755 index 30817f201d..0000000000 Binary files a/tools/ido_recomp/macos/7.1/uopt and /dev/null differ diff --git a/tools/ido_recomp/macos/7.1/usplit b/tools/ido_recomp/macos/7.1/usplit deleted file mode 100755 index 2472794531..0000000000 Binary files a/tools/ido_recomp/macos/7.1/usplit and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/as0.exe b/tools/ido_recomp/windows/5.3/as0.exe deleted file mode 100755 index 0c49260857..0000000000 Binary files a/tools/ido_recomp/windows/5.3/as0.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/as1.exe b/tools/ido_recomp/windows/5.3/as1.exe deleted file mode 100755 index 2d79cc536a..0000000000 Binary files a/tools/ido_recomp/windows/5.3/as1.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/cc.exe b/tools/ido_recomp/windows/5.3/cc.exe deleted file mode 100755 index 7c08eac812..0000000000 Binary files a/tools/ido_recomp/windows/5.3/cc.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/cfe.exe b/tools/ido_recomp/windows/5.3/cfe.exe deleted file mode 100755 index 2f5de5f18b..0000000000 Binary files a/tools/ido_recomp/windows/5.3/cfe.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/err.english.cc b/tools/ido_recomp/windows/5.3/err.english.cc deleted file mode 100644 index 6976e38a95..0000000000 --- a/tools/ido_recomp/windows/5.3/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41936 41936 -41936 41977 41977 -41977 42018 42018 -42018 42090 42090 -42090 42162 42162 -42162 42205 42205 -42205 42267 42267 -42267 42294 42294 -42294 42309 42309 -42309 42338 42386 -42393 42425 42522 -42530 42577 42577 -42577 42623 42623 -42623 42643 42725 -42725 42748 42748 -42748 42829 42897 -42901 42952 42952 -42952 42978 43025 -43025 43116 43116 -43116 43171 43171 -43171 43204 43376 -43386 43453 43471 -43471 43547 43780 -43798 43921 44116 -44120 44120 44120 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -width of %s constant is smaller than size of type (%s) -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/windows/5.3/ugen.exe b/tools/ido_recomp/windows/5.3/ugen.exe deleted file mode 100755 index 0f919c2348..0000000000 Binary files a/tools/ido_recomp/windows/5.3/ugen.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/ujoin.exe b/tools/ido_recomp/windows/5.3/ujoin.exe deleted file mode 100755 index f1397ee0c9..0000000000 Binary files a/tools/ido_recomp/windows/5.3/ujoin.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/uld.exe b/tools/ido_recomp/windows/5.3/uld.exe deleted file mode 100755 index d415d9ba00..0000000000 Binary files a/tools/ido_recomp/windows/5.3/uld.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/umerge.exe b/tools/ido_recomp/windows/5.3/umerge.exe deleted file mode 100755 index 23bf7b2516..0000000000 Binary files a/tools/ido_recomp/windows/5.3/umerge.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/uopt.exe b/tools/ido_recomp/windows/5.3/uopt.exe deleted file mode 100755 index 248beabc70..0000000000 Binary files a/tools/ido_recomp/windows/5.3/uopt.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/5.3/usplit.exe b/tools/ido_recomp/windows/5.3/usplit.exe deleted file mode 100755 index 6ac2a6382b..0000000000 Binary files a/tools/ido_recomp/windows/5.3/usplit.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/as0.exe b/tools/ido_recomp/windows/7.1/as0.exe deleted file mode 100755 index 346827a49d..0000000000 Binary files a/tools/ido_recomp/windows/7.1/as0.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/as1.exe b/tools/ido_recomp/windows/7.1/as1.exe deleted file mode 100755 index 7076875b9f..0000000000 Binary files a/tools/ido_recomp/windows/7.1/as1.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/cc.exe b/tools/ido_recomp/windows/7.1/cc.exe deleted file mode 100755 index 53bf834332..0000000000 Binary files a/tools/ido_recomp/windows/7.1/cc.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/cfe.exe b/tools/ido_recomp/windows/7.1/cfe.exe deleted file mode 100755 index 0286c3fa5a..0000000000 Binary files a/tools/ido_recomp/windows/7.1/cfe.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/err.english.cc b/tools/ido_recomp/windows/7.1/err.english.cc deleted file mode 100644 index b5d5be36ef..0000000000 --- a/tools/ido_recomp/windows/7.1/err.english.cc +++ /dev/null @@ -1,1260 +0,0 @@ -@ - 358 358 358 - 6464 6482 6553 - 6553 6593 6728 - 6728 6746 6803 - 6803 6808 6808 - 6808 6818 6818 - 6818 6826 6826 - 6826 6847 6847 - 6847 6875 6922 - 6922 6930 6930 - 6930 6939 6939 - 6939 6948 6948 - 6948 6974 7120 - 7120 7149 7204 - 7210 7248 7311 - 7317 7350 7442 - 7450 7497 7627 - 7635 7709 7930 - 7938 7975 8063 - 8071 8113 8253 - 8261 8289 8289 - 8298 8338 8445 - 8460 8502 8635 - 8650 8690 8819 - 8834 8857 8965 - 8965 9008 9113 - 9119 9142 9227 - 9235 9282 9451 - 9451 9462 9462 - 9462 9477 9477 - 9477 9497 9497 - 9497 9545 9545 - 9545 9584 9584 - 9584 9604 9662 - 9662 9682 9720 - 9720 9749 9749 - 9749 9788 9788 - 9788 9802 9802 - 9802 9829 9829 - 9829 9861 9861 - 9861 9904 9904 - 9904 9920 9920 - 9920 9962 9962 - 9962 9988 9988 - 9988 10014 10014 -10014 10035 10035 -10035 10054 10097 -10097 10115 10115 -10115 10147 10147 -10147 10183 10183 -10183 10208 10208 -10208 10236 10236 -10236 10269 10269 -10269 10304 10304 -10304 10328 10328 -10328 10351 10351 -10351 10371 10371 -10371 10402 10402 -10402 10447 10447 -10447 10497 10497 -10497 10533 10533 -10533 10598 10598 -10606 10630 10630 -10640 10671 10671 -10690 10719 10719 -10728 10752 10795 -10795 10837 10837 -10837 10876 10876 -10876 10900 10900 -10900 10948 10948 -10960 11021 11103 -11103 11128 11128 -11128 11153 11153 -11153 11216 11216 -11216 11239 11239 -11239 11303 11303 -11303 11347 11347 -11357 11393 11393 -11393 11432 11432 -11442 11494 11494 -11494 11536 11536 -11536 11595 11595 -11595 11622 11622 -11622 11684 11684 -11684 11726 11726 -11738 11778 11778 -11782 11813 11813 -11813 11850 11850 -11850 11900 12087 -12111 12120 12120 -12120 12129 12129 -12129 12158 12158 -12158 12192 12192 -12192 12237 12237 -12237 12273 12273 -12273 12326 12326 -12330 12366 12366 -12366 12423 12423 -12427 12482 12482 -12486 12560 12560 -12568 12631 12631 -12637 12691 12691 -12691 12743 12743 -12743 12785 12785 -12785 12826 12826 -12826 12865 12865 -12865 12883 12883 -12883 12946 12946 -12956 12995 12995 -13005 13066 13066 -13077 13163 13163 -13163 13211 13211 -13211 13270 13270 -13270 13318 13318 -13318 13350 13350 -13350 13387 13387 -13387 13428 13428 -13428 13464 13533 -13533 13580 13737 -13737 13776 13854 -13854 13913 13913 -13913 13950 13950 -13950 14118 14118 -14118 14150 14150 -14150 14163 14194 -14194 14224 14255 -14255 14275 14319 -14319 14353 14458 -14466 14484 14530 -14534 14567 14567 -14567 14635 14682 -14690 14742 14742 -14742 14789 14789 -14801 14875 14875 -14886 14947 14947 -14947 14992 14992 -14992 15035 15085 -15085 15134 15205 -15214 15267 15448 -15454 15496 16810 -16822 16875 16960 -16972 17053 17179 -17191 17236 17332 -17344 17491 17841 -17853 17939 18304 -18316 18471 18774 -18786 18952 19323 -19335 19364 19496 -19500 19527 19598 -19598 19613 19776 -19797 19808 19837 -19837 19862 19862 -19868 19927 20026 -20034 20075 20179 -20187 20223 20223 -20223 20290 20382 -20392 20441 20589 -20601 20656 20656 -20656 20699 20818 -20826 20860 21038 -21046 21094 21191 -21203 21236 21314 -21326 21395 21457 -21469 21502 21502 -21502 21587 21731 -21756 21789 21864 -21875 21901 21976 -22013 22059 22220 -22257 22397 22561 -22561 22595 22595 -22603 22623 22623 -22631 22667 22828 -22865 22919 22994 -23031 23059 23120 -23132 23201 23201 -23212 23274 23274 -23285 23345 23345 -23356 23393 23393 -23399 23431 23532 -23542 23587 23646 -23656 23697 23745 -23755 23796 23844 -23854 23876 23928 -23942 23971 24153 -24160 24243 24243 -24247 24273 24743 -24755 24784 24984 -24996 25034 25034 -25034 25075 25273 -25281 25332 25410 -25420 25467 25544 -25554 25583 25744 -25754 25783 26061 -26071 26111 26185 -26194 26239 26525 -26535 26568 26914 -26924 26951 26998 -27008 27035 27082 -27093 27120 27167 -27178 27206 27251 -27261 27289 27334 -27345 27391 27931 -27938 27959 28007 -28019 28037 28037 -28043 28069 28069 -28077 28147 28199 -28207 28266 28266 -28274 28306 28306 -28314 28339 28339 -28347 28404 28510 -28518 28567 28682 -28690 28728 28728 -28736 28782 29023 -29033 29085 29234 -29246 29303 29383 -29395 29432 29570 -29592 29631 29644 -29644 29693 29758 -29767 29810 29875 -29875 29911 29976 -29984 30014 30014 -30027 30086 30151 -30157 30223 30293 -30301 30369 30445 -30457 30511 30568 -30580 30630 30743 -30755 30812 30874 -30886 30959 31035 -31043 31076 31175 -31183 31243 31243 -31251 31323 31323 -31331 31433 31433 -31445 31544 31686 -31698 31740 31740 -31740 31783 31783 -31783 31824 31824 -31824 31873 31996 -32008 32056 32164 -32176 32210 32210 -32229 32271 32271 -32279 32323 32569 -32581 32642 32718 -32739 32779 32916 -32926 32953 33047 -33057 33116 33315 -33325 33373 33373 -33373 33407 33469 -33494 33527 33527 -33536 33573 33573 -33584 33650 33697 -33705 33763 33763 -33763 33797 33797 -33797 33829 33906 -33915 33976 33976 -33985 34016 34098 -34098 34133 34198 -34198 34261 34261 -34269 34312 34312 -34324 34363 34438 -34444 34530 34530 -34538 34596 34626 -34636 34675 34754 -34764 34821 34821 -34821 34867 34950 -34959 35016 35135 -35145 35198 35198 -35208 35266 35344 -35355 35382 35537 -35547 35576 35629 -35637 35705 35705 -35713 35764 35764 -35764 35784 35876 -35888 35932 35950 -35950 36013 36138 -36150 36191 36280 -36286 36314 36419 -36431 36516 36516 -36516 36554 36642 -36642 36689 36808 -36818 36881 37105 -37113 37183 37204 -37204 37225 37225 -37225 37255 37348 -37348 37388 37388 -37388 37454 37454 -37454 37518 37518 -37518 37584 37584 -37584 37717 37717 -37717 37752 37752 -37752 37783 37889 -37901 37928 38034 -38046 38115 38115 -38115 38140 38187 -38195 38219 38339 -38351 38422 38422 -38422 38486 38486 -38486 38555 38555 -38555 38619 38619 -38619 38641 38641 -38641 38758 38758 -38758 38929 38929 -38929 38975 39043 -39055 39084 39133 -39133 39175 39265 -39275 39310 39494 -39504 39547 39576 -39587 39614 39668 -39674 39697 39797 -39797 39845 40094 -40094 40158 40264 -40264 40369 40523 -40523 40593 40593 -40593 40629 40876 -40876 40911 40971 -40977 41026 41026 -41038 41077 41077 -41077 41116 41116 -41116 41156 41156 -41156 41195 41195 -41195 41237 41237 -41237 41285 41285 -41285 41304 41304 -41304 41371 41371 -41371 41429 41429 -41429 41491 41491 -41491 41519 41519 -41519 41572 41572 -41572 41642 41642 -41642 41676 41676 -41676 41713 41713 -41713 41751 41751 -41751 41792 41792 -41792 41856 41856 -41856 41881 41881 -41881 41944 41944 -41944 41985 41985 -41985 42026 42026 -42026 42098 42098 -42098 42170 42170 -42170 42213 42213 -42213 42275 42275 -42275 42302 42302 -42302 42317 42317 -42317 42346 42394 -42401 42433 42530 -42538 42585 42585 -42585 42631 42631 -42631 42651 42733 -42733 42756 42756 -42756 42837 42905 -42909 42960 42960 -42960 42986 43033 -43033 43124 43124 -43124 43179 43179 -43179 43212 43384 -43394 43461 43479 -43479 43555 43788 -43806 43929 44124 -44128 44128 44128 -Out of memory: %s -There is no more memory left in the system for compiling this program. -Internal Error Unknown Error Message %s -1) An internal error, while attempting to print an unavailable message -2) The error message file is inaccessible or has other problems -Unknown Signal %s -1) An unknown signal has been caught -2) 2 Nested signals -line -Warning: -Fatal: -Source not available -Too many errors... goodbye. -There is a limit of 30 errors before aborting. -Error: -reserved -reserved -Unknown Control Statement -1) The line begins with a '#' and is not of the form: - # "" -2) Please compile this program with the preprocessor enabled. -Unknown character %s ignored -The character is not part of the source character set. -2.2.1 -Unknown control character \%s ignored -The control character is not part of the source character set. -2.2.1 -Illegal character %s in exponent -1) Digits or sign expected after 'e' or 'E'. -2) Digits are expected after sign in exponent. -3.1.3.1 -Constant is out of range and may be truncated. -The constant is too large to be accurately represented and may be -truncated. The limits are in the system include file limits.h. -2.2.4.2 -Constant is out of range for a 32-bit data type, but accepted as written. -The constant is too large to fit in a 32-bit data type, but will be -accurately represented in a wider data type. The value may be truncated, -depending on its context. The limits are in the system include file -limits.h. -2.2.4.2 -Character constant size out of range -1) No characters in a character constant. -2) More than 4 bytes in a character constant. -3.1.3.4 -Wide character constant size out of range -1) No characters in the multibyte sequence (0 assumed). -2) More than 1 byte in the multi-byte sequence (only the first byte was converted). -3.1.3.4 -Invalid multibyte character -4.10.7.2 -Newline in string or character constant -1) Terminate your string or character constant with closing quotes. -2) Put a backslash before the newline. -3.1.3.4, 3.1.4 -Octal character escape too large: %s > %s -1) Terminate end of octal sequence with a non-octal character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Hex character escape too large: %s > %s -1) Terminate end of hex sequence with a non-hex character. -2) Select a character value within the limits. -Value may be truncated -3.1.3.4, 3.1.4 -Unexpected End-of-file -1) Unterminated string or character constant -2) Missing closing comment marker (*/) -3) File system problems -Unrecognized escape sequence in string \%s -Recognized escape sequences are \a, \b, \f, \n, \r, \t, and \v. -Character will be treated as un-escaped. -3.9.2 -Illegal octal digit %s -Octal constants, beginning with 0, must only have digits between 0 and 7, -inclusive. -3.1.3.2 -Unable to open temporary file for compiling %s -1) TMPDIR environment variable is set to a directory that you have no - permissions for. -2) The file system is full. -3) System errors beyond the scope of the compiler. -%s: Hangup -%s: Interrupt -%s: Quit (ASCII FS) -%s: Illegal instruction (not reset when caught) -%s: Trace trap (not reset when caught) -%s: IOT instruction -Also SIGABRT, used by abort, replace SIGIOT in the future -%s: EMT instruction -Also SIGXCPU, Exceeded CPU time limit -%s: Floating point exception -%s: Kill (cannot be caught or ignored) -%s: Bus error -%s: Segmentation violation -%s: Bad argument to system call -%s: Write on a pipe with no one to read it -%s: Alarm clock -%s: Software termination signal from kill -%s: User defined signal 1 -%s: User defined signal 2 -%s: Death of a child -Power-fail restart -%s: Also SIGXFSZ, exceeded file size limit -%s: Window change -%s: Handset, line status change -%s: Sendablestop signalnot from tty -%s: Stop signal from tty -%s: Pollable event occurred -%s: Input/Output possible signal -%s: Urgent condition on IO channel -%s: Window size changes -%s: Virtual time alarm -%s: Profiling alarm -%s: Continue a stopped process -%s: To readers pgrp upon background tty read -%s: Like TTIN for output if (tp->t_local<OSTOP) -%s: Resource lost (eg, record-lock) -'auto' and 'register' are not allowed in an external declaration -3.7(10) -must have function type -3.7.1(30) -Functions cannot return arrays -3.7.1(33), 3.3.2.2 -Declaration list not allowed -3.7.1(5) -Too many input files %s -The command line may contain only one file -cpp internal error: input stack underflow -cpp internal error: if stack underflow -Cannot open the file %s -No new-line character at the end of the file %s -2.1.1.2(30) -Fatal: Exceeded the limit of nesting level for #include file -Fatal: Exceeded the limit of nesting level for #include file. This limit -is 200. -Fail to read the file %s -Cannot write the file %s -%s: %s: An if directive is not terminated properly in the file -%s: %s: nested comment -%s:%s: Illegal macro name %s; macro name shall be an identifier -%s:%s: Illegal preprocessing token sequence -3.8.3(35) -%s:%s: Illegal macro parameter name -%s:%s: Non-unique macro parameter name -3.8.3(18) -%s:%s: Missing ')' in parameter list for #define %s -%s:%s: Missing ')' in macro instantiation -%s:%s: Bad punctuator in the parameter list for #define %s -%s:%s: Macro %s redefined. -%s:%s: # operator should be followed by a macro argument name -%s:%s: Badly formed constant expression%s -3.4(9), 3.8 -%s:%s: Division by zero in #if or #elif -3.8 -unknown command line option %s -extraneous input/output file name %s -%s: %s: Unterminated string or character constant -A preprocessing string or character constant token was not -terminated. Note that preprocessing directives are processed -after the source file has been divided into preprocessing tokens. -2.1.1.2(30) 3.1(18) 3.8 -%s: %s: -%s: %s: -%s: %s: Unterminated comment -%s: %s: Unknown directive type %s -%s: %s: #elif or #else after #else directive -%s: %s: Bad identifier after the %s -%s: %s: #%s accepts only one identifier as parameter -3.8 -%s: %s: Bad identifier after the %s -%s: %s: text following #%s violates the ANSI C standard. -3.8 -%s: %s: Bad character %s occurs after the # directive. -3.8 -%s: %s: the ## operator shall not be the %s token in the replacement list -3.8.3.3 -%s: %s: the defined operator takes identifier as operand only. -3.8.1 -%s: %s: Not in a conditional directive while using %s -%s: %s: Illegal filename specification for #include -%s: %s: Invalid file name %s for #include -%s: %s: Cannot open file %s for #include -%s: %s: Bad argument for #line command -%s: %s: #error %s -%s: %s: Tried to redefine predefined macro %s, attempt ignored -3.8.7(22) -%s: %s: Undefining predefined macro %s -3.8.7(22) -%s: %s: Undefined the ANSI standard library defined macro %s -4.1.2.1(9) -%s: %s: The number of arguments in the macro invocation does not match the definition -%s: %s: Illegal character %s in preprocessor if -%s: %s: Illegal character %s for number in preprocessor if -%s: %s: No string is allowed in preprocessor if -%s: %s: Not supported pragma %s -%s: %s: Not supported #pragma format -%s: %s: ANSI C does not allow #ident; %s -%s: %s: Not supported #ident format -This cpp extension accepts the following format: -#ident "any string" -%s: %s: Not supported #assert/#unassert format -This cpp extension accepts the following format: -#assert identifier -#assert identifier ( pp-tokens ) -#unassert identifier -#unassert identifier ( pp-tokens ) -%s: %s: Bad assertion predicate format -The correct syntax for this cpp extension is: -#assert identifier ( pp-token ) -%s: %s: directive is an upward-compatible ANSI C extension -%s: This option requires an argument -%s: %s: A macro has expanded recursively more than %s times. Further expansion will be disabled! Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper. -A status return from cpp to cfe -Syntax Error -The token read was unexpected. -Syntax Error -- cannot backup -The token read was unexpected. -Yacc stack overflow -The expression is too complicated to parse. -Trailing comma in enumerator list -The use of a trailing comma in an enumerator list is not standard C. There -may be portability problems. -3.5.2.2 -Empty declaration -Empty declarations are invalid in standard C. -3.5 -%s declared, but not referenced. -redeclaration of '%s'; previous declaration at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -'%s' undefined; reoccurrences will not be reported. -Non-function name referenced in function call. -3.3.2.2(18) -The number of arguments doesn't agree with the number in the declaration. -3.3.2.2(5) -'%s' section name longer than 8 characters. Name truncated. -'%s' is already placed by pragma alloc_text. -Cannot write ucode file while compiling %s -1) The file system is full -2) Permissions problem -Must have corresponding formal argument for '%s' -Parameter found in the declaration part, but not in the argument list. -3.7.1(7) -Non-prototype declaration is an obsolescent feature. -The use of function definitions with separate parameter identifier -and declaration lists (not prototype-format parameter type and -identifier declarators) is an obsolescent feature. -3.9.5 -Incompatible function declarations for %s -For two function types to be compatible, both shall specify compatible -return types. Moreover, the parameter type lists, if both are present, -shall agree in the number of parameters and in use of the ellipsis -terminator; corresponding parameters shall have compatible types. If -one type has a parameter type list and the other type is specified by -a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. If one type has a parameter type list and the -other is specified by a function definition that contains a (possibly -empty) identifier list, both shall agree in the number of parameters, -and the type of each prototype parameter shall be compatible with the -type that results from application of the default argument promotions -to the type of the corresponding identifier. (For each parameter -declared with function or array type, its type for these comparisons -is the one that results from conversion to a pointer type. For each -parameter declared with qualified type, its type for these comparisons -is the unqualified version of its declared type.) There you have it! -3.5.4.3(15) -Incompatible function return type for this function. -For two function types to be compatible, both shall specify compatible -return types. -3.5.4.3(15) -The number of parameters for function is different from the previous declaration -The parameter type lists, if both are present, shall agree in the -number of parameters and in use of the ellipsis terminator. -3.5.4.3(15) -Incompatible type for the function parameter -If both parameter type lists are present, corresponding -parameters shall have compatible types. -3.5.4.3(15) -Function %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour. -The redeclaration could cause arguments at a call site to be passed -inconsistently with what the function implementation expects, and -parameters would therefore be accessed erroneously when executing the -function body. Note that a float argument is promoted to a double -when passed (potentially through fp registers) to an unprototyped -function. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, ellipsis terminator not allowed -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the parameter list shall not have -an ellipsis terminator and the type of each parameter shall be -compatible with they type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other type is specified -by a function declarator that is not part of a function definition and -contains an empty identifier list, the type of each parameter shall be -compatible with the type that results from application of the default -argument promotions. -3.5.4.3(15) -prototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion -If one type has a parameter type list and the other is specified by a -function definition that contains a (possibly empty) identifier list, -both shall agree in the number of parameters, and the type of each -prototype parameter shall be compatible with the type that results -from application of the default argument promotions to the type of the -corresponding identifier. -3.5.4.3(15) -Empty declaration specifiers -Standard C requires at least a storage class specifier, type specifier, -or a type qualifier in declarations. 'extern int' assumed. -3.5 -Can't write to the file %s -1) The output file cannot be opened for writing. -2) Out of file space. -Duplicate '%s' -typedef, extern, static, auto, register, const, volatile may not -appear more than once in the same specifier list or qualifier list. -Duplicate occurrence ignored. -3.5.1(10) , 3.5.3(5) -Null input -There is nothing to compile. -Illegal type combination -3.5.2 -Missing ';' at end of structure / union member declaration -In standard C, each member declaration must be terminated by a ';'. A -terminating ';' is assumed. -3.5.2.1 -Missing member name in structure / union -In standard C, each member declaration have a member name. The missing -member is assumed to not exist. -3.5.2.1 -This variable is initialized twice. -Neither 'const' or 'volatile' have any effect on function results. -Qualifiers only apply to expressions designating an object that -can be altered or examined. -3.5.3(10) -An integer constant expression is required here. -The expression that defines the value of an enumeration constant -shall be an integral constant expression that has a value -representable as an int. -3.5.2.2(28) -(previous declaration of '%s' at line %s in file '%s') -Must be an integer type greater than zero. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -Array size cannot be a long long. -Arrays with more than 2^32 elements are not yet supported. -The array size must be either a char, signed or unsigned integer or -an enumerated type with a value greater than zero. -3.5.4.2 -bit-field '%s' width is not an integer constant -The expression that specifies the width of a bit-field shall be an -integral constant expression. -3.5.2.1(15) -bit-field '%s' width is negative -The expression that specifies the width of a bit-field shall be -non-negative. -3.5.2.1(15) -bit-field '%s' type required to be int, unsigned int, or signed int. -A bit-field shall have type int, unsigned int, or signed int. -3.5.2.1(30) -bit-field %s's type not integer. -Non-scalar type or pointer type to a non-object for increment or decrement operator. -The operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object. -3.3.2.4(37), 3.3.3.1(25) -Assign value to a function type. -An assignment operator shall have a modifiable lvalue as its left operand. -3.2.2.1(5) -Assign value to an array. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for variable of incomplete type. -The operand of increment and decrement operator shall be a modifiable -scalar lvalue. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -The left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment. -This is a restriction in our implementation, which can be worked -around by always accessing long long bit-fields indirectly (i.e. -by means of the '->' operator). -This expression is not an lvalue. -3.2.2.1 -Modified an rvalue. -3.2.2.1 -Change value for constant variable. -The operand of increment and decrement operators shall be modifiable -scalar lvalues. An assignment operator shall have a modifiable lvalue -as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Change value for constant field of a struct or union. -An assignment operator shall have a modifiable lvalue as its left operand. -3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5) -Dereferenced a non-pointer. -The operand of the unary * operator shall have pointer type. -3.3.3.2(39) -The operand of the unary + or - operator shall have arithmetic type. -3.3.3.3(6) -The operand of the unary ~ operator shall have integral type. -3.3.3.3(6) -The operand of the unary ! operator shall have scalar type. -3.3.3.3(6) -Constants must have arithmetic type. -3.1.3 -Bad type name for cast operator -The type name for the cast operator should either be void or a -qualified or unqualified scalar type. -3.3.4(22) -Improper cast of non-scalar type expression. -The operand for the cast operator shall be of scalar type. -3.3.4(23) -Cast a pointer into a non-integral type. -A pointer may be converted to an integral type. -3.3.4(31) -Cast a non-integral type into a pointer. -An integral type may be converted to a pointer. -3.3.4(31) -Duplicate member '%s' -Two members of a struct may not have the same name. -3.1.2.2(7,25) -Invalid constant expression. -Constant expressions shall not contain assignment, increment, decrement, -function-call, or comma operators, except when they are contained within -the operand of the sizeof operator. -3.4(9) -Constant expressions must be derived from a constant value or a constant -variable. -3.4 -Dangerous operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. This operand is NOT an lvalue, but we let it pass. -Note that a segmentation error with possible core dump will result -when the resulting address does not denote a valid (declared) -storage location. This feature will be discontinued in future -releases of the compiler! -3.3.3.2(36) -Unacceptable operand of '&'. -The operand of the unary & operator shall be either a function -designator or an lvalue that designates an object that is not a -bit-field and is not declared with the register storage-class -specifier. -3.3.3.2(36) -'&' before array or function; ignored -Unacceptable operand of sizeof operator. -The sizeof operator shall not be applied to an expression that has -function type or an incomplete type, to the parenthesized name of such -a type, or to an lvalue that designates a bit-field object. -3.3.3.4 -Unacceptable operand of a multiplicative operator. -Each of the operands of a multiplicative operator shall have arithmetic type. -3.3.5(18) -Unacceptable operand of the remainder operator -Each of the operands of the remainder (%) operator shall have integral type. -3.3.5(18) -Unacceptable operand of '+'. -For the + operator, either both operands shall have arithmetic type, or -one operand shall be a pointer to an object type and the other shall -have integral type. -3.3.6(39) -Unacceptable operand of '-'. -For the subtraction operator, one of the following shall hold: both operands -have arithmetic type; operands are pointers to qualified or unqualified -versions of compatible object types; or the left operand is a pointer -to an object type and the right operand has integral type. -3.3.6(39) -Unacceptable operand of shift operator. -Each of the operands of bitwise shift operators shall have integral type. -3.3.7(9) -Unacceptable operand of relational operator. -For relational operators, one of the following shall hold: both -operands have arithmetic type; both operands are pointers to qualified -or unqualified versions of compatible object types; or both operands -are pointers to qualified or unqualified versions of compatible -incomplete types. -3.3.8(32) -Unacceptable operand of == or != -For the == or != operator, one of the following shall hold: both operands -are pointers to qualified or unqualified versions of compatible types; one -operand is a pointer to an object or incomplete type and the other is a -pointer to a qualified or unqualified version of void; or one operand is -a pointer and the other is a null pointer constant. -3.3.9(21) -Unacceptable operand of &. -Each of the operands shall have integral type. -3.3.10(7) -Unacceptable operand of ^. -Each of the operands shall have integral type. -3.3.11(18) -Unacceptable operand of |. -Each of the operands shall have integral type. -3.3.12(30) -Unacceptable operand of &&. -Each of the operands shall have scalar type. -3.3.13(7) -Unacceptable operand of ||. -Each of the operands shall have scalar type. -3.3.14(20) -Unacceptable operand of conditional operator. -The first operand of conditional operator shall have scalar type. One -of the following shall hold for the second and third operands: -both operands have arithmetic type; both operands have compatible -structure or union types; both operands have void type; both operands -are pointers to qualified or unqualified versions of compatible types; -one operand is a pointer and the other is a null pointer constant; or -one operand is pointer to an object or incomplete type and the other -is a pointer to a qualified or unqualified version of void. -3.3.15 -Duplicate label '%s' -A label name can only occur once in a function. -3.1.2.1(25) -Division by zero. -3.3.5 -Subscripting a non-array. -3.3.2.1 -Subscripting an array of incomplete type which is not an object type. -The element of the array shall have an object type. -3.3.2.1 -Should only subscript an array with an integral expression -3.3.2.1 -Subscripting an unbounded array -3.3.2.1 -Array index out of range -3.3.2.1 -Selector requires struct/union pointer as left hand side -In K&R mode the expression is implicitly converted to the '.' selector -for a struct/union left-hand side. -3.3.2.3 -Selector requires struct/union as left hand side -In K&R mode the expression is implicitly converted to the '->' selector -for a struct/union pointer left-hand side. -3.3.2.3 -member of structure or union required -3.3.2.3 -types have different qualifier specifications -For two qualified types to be compatible, both shall have the -identically qualified version of a compatible type; qualified -and unqualified versions of a type are distinct types. For two -types to be compatible their types must be the same. -3.5.3(26) -Incompatible array type due to different array size -For two array types to be compatible, both shall have compatible element -types; if both size specifiers are present, they shall have the -same value. -3.5.4.2(11) -Incompatible array type due to incompatible element type -For two array types to be compatible, both shall have compatible element -types. -3.5.4.2(11) -Incompatible pointer type assignment -The type pointed to by the left-hand side of simple assignment -statement is incompatible with the type pointed to by the right-hand side. -3.3.16.1, 3.5.4.1(21) -Incompatible base type of pointer type -K&R feature. -Type %s of %s is incompatible with type %s of %s -Incompatible types can be resolved by casting or by other means. -3.3.16.1 -illegal combination of pointer and integer -Assigning an integral expression to a pointer is a bad practice. -Type for %s is incompatible with %s -Incompatible types can be resolved by casting or by other means. -3.1.2.6 -Bad operand type for += or -= -3.3.16.2(26) -A case or default label appears outside a switch statement -A case or default label shall appear only in a switch statement. -3.6.1 -The controlling expression of the if statement is not scalar type -The controlling expression of an if statement shall have scalar type. -3.6.4.1 -The controlling expression of switch statement is not integral type -The controlling expression of an switch statement shall have integral type. -3.6.4.2(20) -The case label is not an integral constant expression -The case label shall be an integral constant expression. -3.6.4.2(22) -Duplicate case label in the same switch statement -No two of the case constant expressions in the same switch statement -shall have the same value after conversion. -3.6.4.2(22) -More than one default label in the same switch statement -There may be at most one default label in a switch statement. -3.6.4.2(23) -The controlling expression of the iteration statement is not scalar -type -The controlling expression of a iteration statement shall have scalar -type. -3.6.5.1 -label '%s' used, but not defined -The identifier in a goto statement shall name a label located -somewhere in the enclosing function. -3.6.6.1 -A continue statement shall appear only in or as a loop body -3.6.6.2 -A break statement shall appear only in or as a switch body or loop body -3.6.6.3 -A return statement with an expression should not appear -in a function '%s', whose return type is void -3.6.6.4(24) -A return statement without an expression appears in a -function '%s', whose return type is not void -If a return statement without an expression is executed, and the value -of the function call is used by the caller, the behavior is undefined. -3.6.6.4(33) -Internal Error: statement stack underflow -Long double not supported; double assumed. -Long float not standard; double assumed. -Only 'register' allowed in parameter declaration -The only storage-class specifier that shall occur in a parameter -declaration is 'register'; illegal storage class ignored. -3.5.4.3(25) -Name(s) without types in a function declaration -An old-style function declaration is not allowed to have names -in the parameter list; useless names ignored -3.5.4.3(26) -Functions cannot return functions -3.7.1(33), 3.3.2.2 -Functions cannot return a non-object type -3.3.2.2 -enum declaration must contain enum literals -Although structs or unions may delay the declaration of their members, -a similar construction with enum does not exist and is not necessary, -as there can be no mutual dependencies between the declaration of an -enumerated type and any other type. -3.5.2.3(27) -Register qualification has no effect for this type of object -Register declarations for array, struct, and function types have -no effect. -3.5.1(16), 3.5.1(19) -Functions cannot be declared 'register' -The declaration of an identifier for a function that has block -scope shall have no explicit storage-class specifier other than -'extern'. -3.5.1(19) -'%s' cannot be initialized -The type of the entity to be initialized shall be an object type -or an array of unknown size. -3.5.7(32) -Cannot initialize 'extern' variable '%s' within a function -If the declaration of an identifier has block scope, and the -identifier has 'extern' or 'static' linkage, the declaration -shall have no initializer for the identifier; initialization -allowed anyway. -3.5.7(35) -initializing an 'extern' is an ANSI C extension -conflicting declarations for '%s' -'static' and 'extern' declarations conflict. Which is meant? -3.1.2.2(15), 3.1.2.2(27) -Too many initial values for '%s' -3.5.7(1) -incompatible types in initialization -3.3.16(35) -redefinition of '%s'; previous definition at line %s in file '%s' -Identifier redeclared in the same scope/block. -3.1.2.3 -bit-fields as members of a union are an ANSI C invention. -storage size for '%s' isn't known -type mismatch in initialization -Missing braces in a union initialization or illegally formed -initialization. -3.5.7(5) -union '%s' only allowed one initializer for the first member -3.5.7(5) -width of '%s' exceeds its type -the specified bitfield width is too large to be contained within a -bitfield type. -structure has no member named '%s' -This is allowed for compatibility with AT&T pcc-based compilers. -Reference of an expression of void type or an incomplete type. -3.2.2.1 -element size of an array shall not be zero -3.2.2.5(25) -invalid combination of type specifiers -Although order is unimportant, not all type specifiers can occur together. -3.5.2 -declaration must at least declare an identifier, tag, or the member of an enumeration -3.5(16) -at most one storage class may be given in the declaration -Duplicate occurrence ignored. -3.5.1(10) -size of function's return type is zero -The return type of a function must be void or an object type other than array. -3.7.1(33) -Expecting an integral return type from the main function -identifier missing from parameter declaration -Prototypes for function definitions require identifiers in parameter -declarations. -3.7.1(4) -only 'register' allowed for storage class for parameters -The declarations in the declaration list shall contain no storage class -other than 'register', and no initializations. -3.7.1(10) -parameters declarations can not have initializations -3.7.1(10) -only one instance of 'void' allowed in the parameter list -'void' must occur by itself (specifying that the function has no parameters). -3.5.4.3(1) -%s must have function type -1) An argument list must be explicitly present in the declarator; it cannot - be inherited from a typedef (3.5.4.3). -2) The declarator is not a function. -3.7.1(30) -Illegal hexadecimal constant -You have no digits after the 0x or 0X. 0x0 assumed. -3.1.3.2 -value overflows its type in this context. Value is set to be '%s'! -3.2.1.4 -value is outside range representable for type '%s' -missing member name -K&R mode permits a missing member name; otherwise, only bitfields can omit -the member name. -3.5.2.1(10) -useless keyword or type name in declaration -Type was ignored. -'%s' declared within and is limited to this function prototype -Possible program error, since parameter type checking will always fail -unless the type declaration is visible to the caller. -3.1.2.1(35) -Extra spaces within operator, %s assumed -In ANSI C, the compound assignment operator cannot have embedded -white space characters. -3.1.5 -missing size for array '%s' -Incomplete types permitted for identifiers with internal or -external linkage, but not automatic linkage. -3.1.2.5(10) -can't jump into (from outside of) the body of a 'try' or into either type of handler -'%s' missing, please #include excpt.h -excpt.h required to declare exception statements, intrinsics or compiler -runtime names. -local function declarations cannot be 'static' -A function declaration can only contain the storage-class 'static' -if it is at file scope. Declaration made 'extern'. -3.5.1(19) -static function '%s' declared and referenced, but not defined. -If an identifier declared with internal linkage is used in an -expression (other than as a part of the operand of a sizeof -operator), there shall be exactly one external definition for -the identifier in the translation unit. -3.7(12) -pragma argument '%s' must be declared prior to being used in a pragma -Pragma name ignored. -Pragma not supported -'%s' not enabled as intrinsic -It may have already appeared in a function pragma, or never occurred in -an intrinsic pragma. -'%s' is already enabled as an intrinsic -weak definition for '%s' is later redefined; pragma weak ignored. -definition of primary name '%s' not found; pragma weak ignored. -definition of secondary name '%s' not found; pragma weak ignored. -primary name '%s' is declared as a common or external, and is not defined -with initial value within this file; pragma weak ignored. -useless '%s' storage class ignored -array of functions not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -array of voids not allowed -The element type must be an object type representing a region -of data storage which can represent values. -3.1.2.5(23) -argument for pragma pack must be an integer constant; pragma ignored -'%s' has wrong tag type. -Identifier redeclared in the same scope/block. -3.1.2.3 -missing dimension bound -For multidimensional arrays, the constant bounds of the array may be -omitted only for the first member of the sequence. -3.1.2.5(23) -Internal error in parameters to function substr; loc: '%s'; len: '%s'. -Internal error in parameters to function insertstr; indx: '%s'. -Internal error in function get_tag_name; input is a non-tagged type. -Internal error in function gen_type_str -- not a type tree '%s' -Cannot open file '%s' -Prototype should be moved after tag or a typedef declaration. -Please look for comments in the extracted header file. -The extracted header file includes prototypes for static functions, -which should be removed, if you wish to include the header in a source file -other than the originator. -ANSI C requires formal parameter before "..." -This extension is meant to be used for compatibility with varargs.h -3.5.4.3(35) -syntax error: "&..." invalid -extension used to access "..." formal arguments. -function '%s' initialized like a variable -The type of entity to be initialized shall be an object type or an -array of unknown size. -3.5.7(31) -initializer not an array aggregate -The initializer for an object that has aggregate type shall be a -brace-enclosed list of initializers for the members of the aggregate, -written in increasing subscript or member order. -3.5.7(20) -'%s' type is incomplete; cannot initialize -Was the struct ever defined? -3.5.7.(31) -'%s' is not standard ANSI. -This keyword/type is not defined in strict ANSI mode. -3.1.1 -not a legal asm string -The first operand of an asm string should be, after argument substitution, -a legal assembly string. -The -float option will be ignored in ANSI mode. -The -float option is ignored, since otherwise program semantics would -violate the ANSI standard. In particular, fp constants are always -'double' with ANSI-C, while with -float the type of fp constants will -depend on the context and may be 'float'. -ANSI C support unavailable with C compiler bundled with RISC/os -The C compiler bundled with RISC/os does not support ANSI C. ANSI -C support requires a separate license. -Ignored invalid warning number(s) in -woff option, %s%s ! -Warning numbers must be in the range %s to %s. -The set of warning numbers in cfe is disjoint from the set of warning numbers -in accom, since accom warnings cannot be mapped one-to-one to cfe warnings. -'%s' not handled as an intrinsic due to incompatible argument types . -'__unalign' only qualifies pointers -'__unalign' indicates the object pointed at by pointer is unaligned (e.g., -int * __unalign p). This is an extension to ANSI C and like 'volatile' -and 'const' can follow the '*' in pointer declarations, but unlike both -cannot qualify a base type. -index expression is an anachronism -ANSI C++ doesn't support array index expressions in delete. -5.3.4 -member cannot be of function or incomplete type. -3.5.2.1(12) -Illegal lint option, '%s', is ignored. -cannot open header message buffer file -cannot write header message buffer file -cannot read header message buffer file -cannot seek in header message buffer file -struct/union/enum '%s' is used, but not defined -static '%s' unused -nonportable character comparison (chars may be signed or unsigned) -redundant comparison of unsigned with constant expression -redundant statement, control flow cannot reach this statement -'%s' may be used before set -function parameter '%s' is not used in function '%s' -'%s' can be const qualified, since it is not set within its lifetime. -'%s' is not used in function '%s' -'%s' set but unused in function '%s' -control may fall through %s statement -function '%s' has return(e); and return; -function '%s' may return random value to place of invocation %s -label without goto: '%s' -only %s bits of '%s' constant (type '%s') are explicitly given -explicit conversion from '%s' to '%s' %s -implicit conversion from '%s' to '%s' %s -'%s' may be indistinguishable from '%s' due to internal name truncation -Promoted formal parameter and promoted argument have incompatible types -No prototype for the definition of '%s' %s -References to '%s' are substituted by its literal initializer - (as included in %s) -============== -unsupported language linkage -string-literal specifies an unsupported linkage -7.4(1) -No prototype for the call to %s -To achieve better type-checking, there should be a full prototype for -the function being called. -3.5.4.3 -'inline' only applies to function declarations -leave statment can occur only within try body -Microsoft extension -Use of a Microsoft extension detected without usage of the -compiler option -msft. -No parameter mentioned -A file with no declarations or definitions is accepted as an extension to ANSI C -The translation unit must contain at least one external definition. -3.7 -Incompatible signed and unsigned version of a type -Yacc initialization error -Internal error: yacc cannot initialize itself. -The cfe option %s may not be in future releases. We suggest that you not use this option! -Incompatible char and unsigned char versions of a type -Lshift with undefined behaviour. -Lshift with a negative right operand, or a right operand that is greater -than or equal to the width in bits of the promoted left operand, results -in undefined behaviour. -3.3.7(11) -useless type name in declaration, possibly a semicolon is missing. -Type was ignored. -constant initializer expression is invalid (refers to automatic variables). -All the expressions in an initializer for an object that has static storage -duration or in the initializer list for an object that has aggregate or -union type shall be constant expressions. Otherwise, unexpected results -may occur. -3.5.7(32) and 3.4 -invalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression. -An address constant in a constant initializing expression can neither -initialize a bit-field nor be directly or indirectly converted to an -integral type of size different from an address type. -6.4 diff --git a/tools/ido_recomp/windows/7.1/ugen.exe b/tools/ido_recomp/windows/7.1/ugen.exe deleted file mode 100755 index 30577e396a..0000000000 Binary files a/tools/ido_recomp/windows/7.1/ugen.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/ujoin.exe b/tools/ido_recomp/windows/7.1/ujoin.exe deleted file mode 100755 index 18fc825bc3..0000000000 Binary files a/tools/ido_recomp/windows/7.1/ujoin.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/uld.exe b/tools/ido_recomp/windows/7.1/uld.exe deleted file mode 100755 index a0bb885938..0000000000 Binary files a/tools/ido_recomp/windows/7.1/uld.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/umerge.exe b/tools/ido_recomp/windows/7.1/umerge.exe deleted file mode 100755 index 3e6698adac..0000000000 Binary files a/tools/ido_recomp/windows/7.1/umerge.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/uopt.exe b/tools/ido_recomp/windows/7.1/uopt.exe deleted file mode 100755 index ae714d5280..0000000000 Binary files a/tools/ido_recomp/windows/7.1/uopt.exe and /dev/null differ diff --git a/tools/ido_recomp/windows/7.1/usplit.exe b/tools/ido_recomp/windows/7.1/usplit.exe deleted file mode 100755 index f61837d0fd..0000000000 Binary files a/tools/ido_recomp/windows/7.1/usplit.exe and /dev/null differ diff --git a/tools/msgenc.py b/tools/msgenc.py index b7a03a5b23..1483dcdc2d 100644 --- a/tools/msgenc.py +++ b/tools/msgenc.py @@ -13,18 +13,16 @@ def read_charmap(path : str, wchar : bool) -> Dict[str,str]: out_charmap = {} for k,v in charmap.items(): - v = v[wchar] - if v is None: - v = 0 assert isinstance(k, str) - assert v in (range(0xFFFF + 1) if wchar else range(0xFF + 1)) + assert isinstance(v, int) and v in range(0xFFFF + 1) k = repr(k)[1:-1] - if wchar: + if wchar or v > 0xFF: + # split value across two bytes u = (v >> 8) & 0xFF l = (v >> 0) & 0xFF - out_charmap[k] = f"0x{u:02X}, 0x{l:02X}," + out_charmap[k] = f"0x{u:02X},0x{l:02X}," else: out_charmap[k] = f"0x{v:02X}," @@ -62,7 +60,7 @@ def convert_text(text : str, encoding : str, charmap : Dict[str, str]) -> str: # flush text to_flush = string[run_start:i] if len(string[run_start:i]) != 0: - out += ",".join(f"0x{b:02X}" for b in to_flush.encode(encoding)) + out += ",".join(f"0x{b:02X}" for b in to_flush.encode(encoding, "replace")) out += "," if text is None: return @@ -126,24 +124,25 @@ def main(): ) parser.add_argument( "--encoding", - help="encoding (jpn or nes)", + help="base text encoding", required=True, type=str, - choices=("jpn", "nes"), + choices=("utf-8", "SHIFT-JIS"), ) parser.add_argument( "--charmap", help="path to charmap file specifying custom encoding elements", required=True, ) + parser.add_argument( + "--wchar", + help="force wide encoding", + required=False, + action="store_true" + ) args = parser.parse_args() - wchar,encoding = { - "jpn" : (True, "SHIFT-JIS"), - "nes" : (False, "raw-unicode-escape"), - }[args.encoding] - - charmap = read_charmap(args.charmap, wchar) + charmap = read_charmap(args.charmap, args.wchar) text = "" if args.input == "-": @@ -153,7 +152,7 @@ def main(): text = infile.read() text = remove_comments(text) - text = convert_text(text, encoding, charmap) + text = convert_text(text, args.encoding, charmap) if args.output == "-": sys.stdout.buffer.write(text.encode("utf-8")) diff --git a/tools/patch_ique_driverominit.py b/tools/patch_ique_driverominit.py new file mode 100755 index 0000000000..f7ca9daac2 --- /dev/null +++ b/tools/patch_ique_driverominit.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import struct, sys, argparse + +import elftools.elf.elffile + +# Patches driverominit.o to change bnez t6,3c to nop at offset 0x20 in the .text section + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + + parser.add_argument("file", help="input file") + args = parser.parse_args() + + with open(args.file, "r+b") as f: + elf = elftools.elf.elffile.ELFFile(f) + + text_offset = 0 + for section in elf.iter_sections(): + if section.name == ".text": + text_offset = section["sh_offset"] + break + + if text_offset == 0: + print("Error: .text section not found") + sys.exit(1) + + f.seek(text_offset + 0x20) + instruction = struct.unpack(">I", f.read(4))[0] + if instruction != 0x15C00006: # bnez t6,3c + print("Error: expected instruction not found, found 0x%08X" % instruction) + sys.exit(1) + + f.seek(text_offset + 0x20) + f.write(struct.pack(">I", 0x00000000)) # nop diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 472edb6964..b168afec86 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -33,3 +33,4 @@ ACTOR_DEBUG_PRINTF = "void" [decompme.compilers] "tools/ido_recomp/*/7.1/cc" = "ido7.1" "tools/ido_recomp/*/5.3/cc" = "ido5.3" +"tools/egcs/*/gcc" = "egcs_1.1.2-4c" diff --git a/tools/version_config.py b/tools/version_config.py index 9377637763..3516073f0d 100644 --- a/tools/version_config.py +++ b/tools/version_config.py @@ -23,8 +23,8 @@ class VersionConfig: checksums: list[str] # ROM offset to start of DMA table dmadata_start: int - # Whether the languages are PAL (EN/DE/FR) or not (JP/EN) - text_lang_pal: bool + # "NTSC" (JP/EN), "PAL" (EN/DE/FR), or "CN" (JP/CN) + text_lang: str # DMA segment information, in ROM order dmadata_segments: OrderedDict[str, SegmentInfo] # ROM pieces that are copied directly into the build with .incbin @@ -92,7 +92,7 @@ def load_version_config(version: str) -> VersionConfig: version=version, checksums=config.get("checksums", ["checksum"]), dmadata_start=config["dmadata_start"], - text_lang_pal=config["text_lang_pal"], + text_lang=config["text_lang"], dmadata_segments=load_dmadata_segments(version), incbins=incbins, variables=config["variables"],