add compatibilty for Windows build (#564)
* Add Windows Support * Modify readme instructions for windows building * Remove unused files * Modified extract_assets.py, new_extract_assets.py, and build.py to work on windows
This commit is contained in:
parent
49ab41f0c5
commit
4c4cb36b4d
|
|
@ -87,3 +87,8 @@ expected/*
|
|||
|
||||
# Doxygen
|
||||
docs/html/*
|
||||
|
||||
# windows build
|
||||
mingw64/
|
||||
.ash_history
|
||||
!tools/ido-recomp/*/*
|
||||
155
Makefile
155
Makefile
|
|
@ -7,7 +7,6 @@ default: all
|
|||
|
||||
# Preprocessor definitions
|
||||
DEFINES :=
|
||||
UNAME_S := $(shell uname -s)
|
||||
|
||||
#==============================================================================#
|
||||
# Build Options #
|
||||
|
|
@ -73,23 +72,7 @@ else ifeq ($(GRUCODE),f3dex2) # Fast3DEX2
|
|||
DEFINES += F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1
|
||||
endif
|
||||
|
||||
|
||||
|
||||
# USE_QEMU_IRIX - when ido is selected, select which way to emulate IRIX programs
|
||||
# 1 - use qemu-irix
|
||||
# 0 - statically recompile the IRIX programs
|
||||
USE_QEMU_IRIX ?= 0
|
||||
$(eval $(call validate-option,USE_QEMU_IRIX,0 1))
|
||||
|
||||
ifeq ($(COMPILER),ido)
|
||||
ifeq ($(USE_QEMU_IRIX),1)
|
||||
# Verify that qemu-irix exists
|
||||
QEMU_IRIX := $(call find-command,qemu-irix)
|
||||
ifeq (,$(QEMU_IRIX))
|
||||
$(error Using the IDO compiler requires qemu-irix. Please install qemu-irix package or set the QEMU_IRIX environment variable to the full qemu-irix binary path)
|
||||
endif
|
||||
endif
|
||||
|
||||
MIPSISET := -mips2
|
||||
else ifeq ($(COMPILER),gcc)
|
||||
NON_MATCHING := 1
|
||||
|
|
@ -134,7 +117,18 @@ endif
|
|||
# Whether to colorize build messages
|
||||
COLOR ?= 1
|
||||
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
DETECTED_OS=windows
|
||||
# Set Windows temporary directory to its environment variable
|
||||
export TMPDIR=$(TEMP)
|
||||
else
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S),Linux)
|
||||
DETECTED_OS=linux
|
||||
else ifeq ($(UNAME_S),Darwin)
|
||||
DETECTED_OS=macos
|
||||
endif
|
||||
endif
|
||||
|
||||
# display selected options unless 'make clean' or 'make distclean' is run
|
||||
ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
|
||||
|
|
@ -155,8 +149,6 @@ ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
|
|||
$(info =======================)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Universal Dependencies #
|
||||
#==============================================================================#
|
||||
|
|
@ -166,12 +158,33 @@ TOOLS_DIR := tools
|
|||
# (This is a bit hacky, but a lot of rules implicitly depend
|
||||
# on tools and assets, and we use directory globs further down
|
||||
# in the makefile that we want should cover assets.)
|
||||
ifeq ($(DETECTED_OS),windows)
|
||||
# because python3 is a command to trigger windows store, and python on windows it's just called python
|
||||
ifneq ($(PYTHON),)
|
||||
else ifneq ($(call find-command,python),)
|
||||
PYTHON := python
|
||||
else ifneq ($(call find-command,python3),)
|
||||
PYTHON := python3
|
||||
endif
|
||||
else
|
||||
PYTHON ?= python3
|
||||
endif
|
||||
|
||||
PYTHON := python3
|
||||
DUMMY != $(PYTHON) --version || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Unable to find python)
|
||||
endif
|
||||
|
||||
ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
||||
|
||||
# Make sure assets exist
|
||||
# Make tools if out of date
|
||||
DUMMY != make -C $(TOOLS_DIR)
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
$(info Building ROM...)
|
||||
|
||||
# Make sure assets exist
|
||||
NOEXTRACT ?= 0
|
||||
ifeq ($(NOEXTRACT),0)
|
||||
DUMMY != $(PYTHON) extract_assets.py $(VERSION) >&2 || echo FAIL
|
||||
|
|
@ -179,14 +192,6 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
|||
$(error Failed to extract assets)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Make tools if out of date
|
||||
DUMMY != make -s -C $(TOOLS_DIR) $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),all-except-recomp,) >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
$(info Building ROM...)
|
||||
|
||||
endif
|
||||
|
||||
|
||||
|
|
@ -259,27 +264,23 @@ GLOBAL_ASM_RACING_O_FILES = $(foreach file,$(GLOBAL_ASM_RACING_C_FILES),$(BUILD_
|
|||
#==============================================================================#
|
||||
|
||||
# detect prefix for MIPS toolchain
|
||||
ifneq ($(call find-command,mips-linux-gnu-ld),)
|
||||
CROSS := mips-linux-gnu-
|
||||
ifneq ($(CROSS),)
|
||||
else ifneq ($(call find-command,mips-linux-gnu-ld),)
|
||||
CROSS := mips-linux-gnu-
|
||||
else ifneq ($(call find-command,mips64-linux-gnu-ld),)
|
||||
CROSS := mips64-linux-gnu-
|
||||
CROSS := mips64-linux-gnu-
|
||||
else ifneq ($(call find-command,mips64-elf-ld),)
|
||||
CROSS := mips64-elf-
|
||||
CROSS := mips64-elf-
|
||||
else
|
||||
$(error Unable to detect a suitable MIPS toolchain installed)
|
||||
$(error Unable to detect a suitable MIPS toolchain installed)
|
||||
endif
|
||||
|
||||
AS := $(CROSS)as
|
||||
ifeq ($(COMPILER),gcc)
|
||||
CC := $(CROSS)gcc
|
||||
else
|
||||
ifeq ($(USE_QEMU_IRIX),1)
|
||||
IRIX_ROOT := $(TOOLS_DIR)/ido5.3_compiler
|
||||
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
else
|
||||
IDO_ROOT := $(TOOLS_DIR)/ido5.3_recomp
|
||||
CC := $(IDO_ROOT)/cc
|
||||
endif
|
||||
IDO_ROOT := $(TOOLS_DIR)/ido-recomp/$(DETECTED_OS)
|
||||
CC := $(IDO_ROOT)/cc
|
||||
endif
|
||||
LD := $(CROSS)ld
|
||||
AR := $(CROSS)ar
|
||||
|
|
@ -305,13 +306,15 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
|
|||
ifneq (,$(call find-command,clang))
|
||||
CPP := clang
|
||||
CPPFLAGS := -E -P -x c -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
else
|
||||
else ifneq (,$(call find-command,cpp))
|
||||
CPP := cpp
|
||||
CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
else
|
||||
$(error Unable to find cpp or clang)
|
||||
endif
|
||||
|
||||
# Check code syntax with host compiler
|
||||
CC_CHECK := gcc
|
||||
CC_CHECK ?= gcc
|
||||
CC_CHECK_CFLAGS := -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) -std=gnu90 -Wall -Wempty-body -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(DEF_INC_CFLAGS)
|
||||
|
||||
# C compiler options
|
||||
|
|
@ -330,13 +333,8 @@ OBJCOPYFLAGS = --pad-to=0xC00000 --gap-fill=0xFF
|
|||
|
||||
LDFLAGS = -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/$(TARGET).map --no-check-sections
|
||||
|
||||
ifeq ($(shell getconf LONG_BIT), 32)
|
||||
# Work around memory allocation bug in QEMU
|
||||
export QEMU_GUEST_BASE := 1
|
||||
else
|
||||
# Ensure that gcc treats the code as 32-bit
|
||||
CC_CHECK += -m32
|
||||
endif
|
||||
# Ensure that gcc treats the code as 32-bit
|
||||
CC_CHECK += -m32
|
||||
|
||||
# Prevent a crash with -sopt
|
||||
export LANG := C
|
||||
|
|
@ -359,8 +357,10 @@ EMULATOR = mupen64plus
|
|||
EMU_FLAGS = --noosd
|
||||
LOADER = loader64
|
||||
LOADER_FLAGS = -vwf
|
||||
SHA1SUM = sha1sum
|
||||
PRINT = printf
|
||||
SHA1SUM ?= sha1sum
|
||||
FALSE ?= false
|
||||
PRINT ?= printf
|
||||
TOUCH ?= touch
|
||||
|
||||
ifeq ($(COLOR),1)
|
||||
NO_COL := \033[0m
|
||||
|
|
@ -390,12 +390,12 @@ endef
|
|||
all: $(ROM)
|
||||
ifeq ($(COMPARE),1)
|
||||
@$(PRINT) "$(GREEN)Checking if ROM matches.. $(NO_COL)\n"
|
||||
@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && false)
|
||||
@$(SHA1SUM) -c $(TARGET).sha1 > $(NULL_OUT) && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && $(FALSE))
|
||||
endif
|
||||
|
||||
doc:
|
||||
$(PYTHON) tools/doxygen_symbol_gen.py
|
||||
doxygen
|
||||
$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py
|
||||
doxygen
|
||||
@$(PRINT) "$(GREEN)Documentation generated in docs/html$(NO_COL)\n"
|
||||
@$(PRINT) "$(GREEN)Results can be viewed by opening docs/html/index.html in a web browser$(NO_COL)\n"
|
||||
|
||||
|
|
@ -405,7 +405,7 @@ clean:
|
|||
distclean: distclean_assets
|
||||
$(RM) -r $(BUILD_DIR_BASE)
|
||||
./extract_assets.py --clean
|
||||
make -C tools clean
|
||||
make -C $(TOOLS_DIR) clean
|
||||
|
||||
distclean_assets: ;
|
||||
|
||||
|
|
@ -418,8 +418,6 @@ load: $(ROM)
|
|||
# Make sure build directory exists before compiling anything
|
||||
DUMMY != mkdir -p $(ALL_DIRS)
|
||||
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Texture Generation #
|
||||
#==============================================================================#
|
||||
|
|
@ -451,14 +449,14 @@ $(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0.s
|
|||
|
||||
$(BUILD_DIR)/%.mio0.s: $(BUILD_DIR)/%.mio0
|
||||
$(call print,Generating mio0 asm:,$<,$@)
|
||||
printf ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@
|
||||
$(PRINT) ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@
|
||||
|
||||
$(BUILD_DIR)/src/crash_screen.o: src/crash_screen.c
|
||||
@$(PRINT) "$(GREEN)Compiling Crash Screen: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(N64GRAPHICS) -i $(BUILD_DIR)/textures/crash_screen/crash_screen_font.ia1.inc.c -g textures/crash_screen/crash_screen_font.ia1.png -f ia1 -s u8
|
||||
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
|
||||
$(V)$(CC) -c $(CFLAGS) -o $@ $<
|
||||
$(PYTHON) tools/set_o32abi_bit.py $@
|
||||
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
|
||||
|
||||
#==============================================================================#
|
||||
# Common Textures Segment Generation #
|
||||
|
|
@ -481,7 +479,7 @@ $(BUILD_DIR)/src/data/common_textures.inc.o: src/data/common_textures.inc.c $(TE
|
|||
@$(PRINT) "$(GREEN)Compiling Common Textures: $(BLUE)$@ $(NO_COL)\n"
|
||||
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
|
||||
$(V)$(CC) -c $(CFLAGS) -o $@ $<
|
||||
$(PYTHON) tools/set_o32abi_bit.py $@
|
||||
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
|
||||
|
||||
|
||||
|
||||
|
|
@ -493,7 +491,7 @@ $(BUILD_DIR)/src/data/common_textures.inc.o: src/data/common_textures.inc.c $(TE
|
|||
%/course_textures.linkonly.c %/course_textures.linkonly.h: %/course_offsets.inc.c
|
||||
$(V)$(LINKONLY_GENERATOR) $(lastword $(subst /, ,$*))
|
||||
|
||||
# Its unclear why this is necessary. Everything I undesrtand about `make` says that just
|
||||
# Its unclear why this is necessary. Everything I undesrtand about `make` says that just
|
||||
# `$(BUILD_DIR)/%/course_displaylists.inc.o: %/course_textures.linkonly.h`
|
||||
# Should work identical to this. But in practice it doesn't :(
|
||||
COURSE_DISPLAYLIST_OFILES := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_displaylists.inc.o)
|
||||
|
|
@ -508,7 +506,7 @@ $(COURSE_DISPLAYLIST_OFILES): $(BUILD_DIR)/%/course_displaylists.inc.o: %/course
|
|||
%/course_displaylists.inc.bin: %/course_displaylists.inc.elf
|
||||
$(V)$(EXTRACT_DATA_FOR_MIO) $< $@
|
||||
|
||||
# Displaylists are packed using a custom format
|
||||
# Displaylists are packed using a custom format
|
||||
%/course_displaylists_packed.inc.bin: %/course_displaylists.inc.bin
|
||||
@$(PRINT) "$(GREEN)Compressing Course Displaylists: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(DLPACKER) $< $@
|
||||
|
|
@ -533,8 +531,7 @@ COURSE_GEOGRAPHY_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/cou
|
|||
|
||||
# Course vertices and displaylists are included together due to no alignment between the two files.
|
||||
%/course_geography.inc.mio0.s: %/course_vertices.inc.mio0 %/course_displaylists_packed.inc.bin
|
||||
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@
|
||||
|
||||
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
|
|
@ -557,8 +554,7 @@ COURSE_DATA_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_d
|
|||
$(V)$(MIO0TOOL) -c $< $@
|
||||
|
||||
%/course_data.inc.mio0.s: %/course_data.inc.mio0
|
||||
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
|
||||
|
||||
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
|
|
@ -572,7 +568,7 @@ $(BUILD_DIR)/%.o: %.c
|
|||
$(call print,Compiling:,$<,$@)
|
||||
$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
|
||||
$(V)$(CC) -c $(CFLAGS) -o $@ $<
|
||||
$(PYTHON) tools/set_o32abi_bit.py $@
|
||||
$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@
|
||||
|
||||
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
|
||||
$(call print,Compiling:,$<,$@)
|
||||
|
|
@ -582,15 +578,15 @@ $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
|
|||
$(BUILD_DIR)/%.o: %.s $(MIO0_FILES) $(RAW_TEXTURE_FILES)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
$(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
$(GLOBAL_ASM_OS_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
$(GLOBAL_ASM_OS_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
$(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
$(GLOBAL_ASM_AUDIO_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
$(GLOBAL_ASM_RACING_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
$(GLOBAL_ASM_RACING_O_FILES): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
#==============================================================================#
|
||||
# Libultra Definitions #
|
||||
|
|
@ -636,7 +632,8 @@ LDFLAGS += -R $(BUILD_DIR)/src/ending/ceremony_data.inc.elf
|
|||
$(V)$(MIO0TOOL) -c $< $@
|
||||
|
||||
%/ceremony_data.inc.mio0.s: %/ceremony_data.inc.mio0
|
||||
printf ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@
|
||||
$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Compile Startup Logo #
|
||||
|
|
@ -655,7 +652,7 @@ LDFLAGS += -R $(BUILD_DIR)/src/data/startup_logo.inc.elf
|
|||
$(V)$(MIO0TOOL) -c $< $@
|
||||
|
||||
%/startup_logo.inc.mio0.s: %/startup_logo.inc.mio0
|
||||
printf ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@
|
||||
$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@
|
||||
|
||||
#==============================================================================#
|
||||
# Compile Common Textures #
|
||||
|
|
@ -674,7 +671,7 @@ LDFLAGS += -R $(BUILD_DIR)/src/data/common_textures.inc.elf
|
|||
$(V)$(MIO0TOOL) -c $< $@
|
||||
|
||||
%/common_textures.inc.mio0.s: %/common_textures.inc.mio0
|
||||
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
|
||||
$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@
|
||||
|
||||
|
||||
|
||||
|
|
@ -697,12 +694,12 @@ $(ROM): $(ELF)
|
|||
$(call print,Building ROM:,$<,$@)
|
||||
$(V)$(OBJCOPY) $(OBJCOPYFLAGS) $< $(@:.z64=.bin) -O binary
|
||||
$(V)$(N64CKSUM) $(@:.z64=.bin) $@
|
||||
$(PYTHON) tools/doxygen_symbol_gen.py
|
||||
$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py
|
||||
|
||||
$(BUILD_DIR)/$(TARGET).hex: $(TARGET).z64
|
||||
xxd $< > $@
|
||||
|
||||
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
|
||||
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
|
||||
$(OBJDUMP) -D $< > $@
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ $(BLUESHELL_FRAMES) $(BLUESHELL_PALETTE): $(BLUESHELL_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BLUESHELL_EXPORT_SENTINEL): $(ASSET_DIR)/blueshell.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_blueshell
|
||||
distclean_blueshell:
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ $(BOMB_FRAMES) $(BOMB_PALETTE): $(BOMB_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BOMB_EXPORT_SENTINEL): $(ASSET_DIR)/bomb.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_bomb
|
||||
distclean_bomb:
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ $(PORTRAIT_PNG) $(SPECIAL_PORTRAIT_PNG) $(PORTRAIT_PALETTES) $(SPECIAL_PORTRAIT_
|
|||
|
||||
$(PORTRAIT_EXPORT_SENTINEL): $(ASSET_DIR)/character_portraits.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_character_portraits
|
||||
distclean_character_portraits:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(BOWSER_SELECT_PNG): $(BOWSER_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BOWSER_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/bowser_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_bowser_select
|
||||
distclean_bowser_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(DONKEYKONG_SELECT_PNG): $(DONKEYKONG_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(DONKEYKONG_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/donkeykong_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_donkeykong_select
|
||||
distclean_donkeykong_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(LUIGI_SELECT_PNG): $(LUIGI_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(LUIGI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/luigi_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_luigi_select
|
||||
distclean_luigi_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(MARIO_SELECT_PNG): $(MARIO_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(MARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/mario_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_mario_select
|
||||
distclean_mario_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(PEACH_SELECT_PNG): $(PEACH_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(PEACH_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/peach_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_peach_select
|
||||
distclean_peach_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(TOAD_SELECT_PNG): $(TOAD_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(TOAD_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/toad_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_toad_select
|
||||
distclean_toad_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(WARIO_SELECT_PNG): $(WARIO_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(WARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/wario_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_wario_select
|
||||
distclean_wario_select:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(YOSHI_SELECT_PNG): $(YOSHI_SELECT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(YOSHI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/yoshi_select.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_yoshi_select
|
||||
distclean_yoshi_select:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(COURSE_OUTLINE_PNG): $(COURSE_OUTLINE_EXPORT_SENTINEL) ;
|
|||
|
||||
$(COURSE_OUTLINE_EXPORT_SENTINEL): $(ASSET_DIR)/course_outlines.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_course_outlines
|
||||
distclean_course_outlines:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(COURSE_PREVIEW_PNG): $(COURSE_PREVIEW_EXPORT_SENTINEL) ;
|
|||
|
||||
$(COURSE_PREVIEW_EXPORT_SENTINEL): $(ASSET_DIR)/course_previews.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_course_previews
|
||||
distclean_course_previews:
|
||||
|
|
|
|||
|
|
@ -57,8 +57,10 @@ $(BANSHEE_BOARDWALK_DIR)/boo_frames.mio0: $(BANSHEE_BOARDWALK_DIR)/boo_frames.bi
|
|||
# $(DATA_DIR)/boo_frames.bin: $(DATA_DIR)/boo_frames.o
|
||||
# $(OBJCOPY) --only-section=.data -O binary $@ $<
|
||||
# cat'ing the files together is easier though
|
||||
CAT ?= cat
|
||||
|
||||
$(BANSHEE_BOARDWALK_DIR)/boo_frames.bin: $(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin)
|
||||
cat $^ > $@
|
||||
$(CAT) $^ > $@
|
||||
|
||||
$(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin): %.bin : %.png
|
||||
$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BOO_PALETTE)
|
||||
|
|
@ -79,7 +81,7 @@ $(BANSHEE_BOARDWALK_PNG): $(BANSHEE_BOARDWALK_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BANSHEE_BOARDWALK_EXPORT_SENTINEL): $(ASSET_DIR)/courses/banshee_boardwalk.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_banshee_boardwalk
|
||||
distclean_banshee_boardwalk:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ $(THWOMP_PALETTE) $(THWOMP_FACE_FRAMES) $(THOWMP_SIDE_PNG): $(BOWSERS_CASTLE_EXP
|
|||
|
||||
$(BOWSERS_CASTLE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/bowsers_castle.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_bowsers_castle
|
||||
distclean_bowsers_castle:
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ $(CHOCO_MOUNTAIN_PNG): $(CHOCO_MOUNTAIN_EXPORT_SENTINEL) ;
|
|||
|
||||
$(CHOCO_MOUNTAIN_EXPORT_SENTINEL): $(ASSET_DIR)/courses/choco_mountain.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_choco_mountain
|
||||
distclean_choco_mountain:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ $(DKS_JUNGLE_PARKWAY_PNG): $(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL) ;
|
|||
|
||||
$(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/dks_jungle_parkway.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_dks_junk_parkway
|
||||
distclean_dks_junk_parkway:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE) $(FRAPPE_SNOWLAND_SNOW_PALETTE) $(FRAPPE_SNOW
|
|||
|
||||
$(FRAPPE_SNOWLAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/frappe_snowland.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_frappe_snowland
|
||||
distclean_frappe_snowland:
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ $(KALIMARI_DESERT_PNG): $(KALIMARI_DESERT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(KALIMARI_DESERT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/kalimari_desert.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_kalimari_desert
|
||||
distclean_kalimari_desert:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ $(KOOPA_TROOPA_BEACH_CRAB_PALETTE) $(KOOPA_TROOPA_BEACH_CRAB_FRAMES) $(KOOPA_TRO
|
|||
|
||||
$(KOOPA_TROOPA_BEACH_EXPORT_SENTINEL): $(ASSET_DIR)/courses/koopa_troopa_beach.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_koopa_troopa_beach
|
||||
distclean_koopa_troopa_beach:
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ $(LUIGI_RACEWAY_PNG): $(LUIGI_RACEWAY_EXPORT_SENTINEL) ;
|
|||
|
||||
$(LUIGI_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/luigi_raceway.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_luigi_raceway
|
||||
distclean_luigi_raceway:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(PIRANHA_PLANT_FRAMES) $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE) $(MARIO_RACEWAY_S
|
|||
|
||||
$(PIRANHA_PLANT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/mario_raceway.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_mario_raceway
|
||||
distclean_mario_raceway:
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ $(MOO_MOO_FARM_SIGN_PNG) $(MOO_MOO_FARM_DIRT_PNG): $(MOO_MOO_FARM_EXPORT_SENTINE
|
|||
|
||||
$(MOO_MOO_FARM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/moo_moo_farm.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_moo_moo_farm
|
||||
distclean_moo_moo_farm:
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ $(RAINBOW_ROAD_PNG): $(RAINBOW_ROAD_EXPORT_SENTINEL) ;
|
|||
|
||||
$(RAINBOW_ROAD_EXPORT_SENTINEL): $(ASSET_DIR)/courses/rainbow_road.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_rainbow_road
|
||||
distclean_rainbow_road:
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ $(ROYAL_RACEWAY_PIRANHA_PLANT_PALETTE): $(ROYAL_RACEWAY_EXPORT_SENTINEL) ;
|
|||
|
||||
$(ROYAL_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/royal_raceway.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_royal_raceway
|
||||
distclean_royal_raceway:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ $(SHERBET_LAND_PNG) $(PENGUIN_PNG) $(SHERBET_LAND_ICE): $(SHERBET_LAND_EXPORT_SE
|
|||
|
||||
$(SHERBET_LAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/sherbet_land.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_sherbet_land
|
||||
distclean_sherbet_land:
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ $(TOADS_TURNPIKE_PNG): $(TOADS_TURNPIKE_EXPORT_SENTINEL) ;
|
|||
|
||||
$(TOADS_TURNPIKE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/toads_turnpike.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_toads_turnpike
|
||||
distclean_toads_turnpike:
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ $(WARIO_STADIUM_SIGN): $(WARIO_STADIUM_EXPORT_SENTINEL) ;
|
|||
|
||||
$(WARIO_STADIUM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/wario_stadium.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_wario_stadium
|
||||
distclean_wario_stadium:
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ $(YOSHI_VALLEY_PNG): $(YOSHI_VALLEY_EXPORT_SENTINEL) ;
|
|||
|
||||
$(YOSHI_VALLEY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/yoshi_valley.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_yoshi_valley
|
||||
distclean_yoshi_valley:
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ $(DEBUG_FONT_PNG) $(DEBUG_FONT_PALETTE): $(DEBUG_FONT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(DEBUG_FONT_EXPORT_SENTINEL): $(ASSET_DIR)/debug_font.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_debug_font
|
||||
distclean_debug_font:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ $(TROHPY_PNG) $(PODIUM_PNG): $(ENDING_CEREMONY_EXPORT_SENTINEL) ;
|
|||
|
||||
$(ENDING_CEREMONY_EXPORT_SENTINEL): $(ASSET_DIR)/ending_ceremony.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_ending_ceremony
|
||||
distclean_ending_ceremony:
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ $(FINISH_LINE_BANNER_PNG) $(FINISH_LINE_BANNER_PALETTE): $(FINISH_LINE_BANNER_EX
|
|||
|
||||
$(FINISH_LINE_BANNER_EXPORT_SENTINEL): $(ASSET_DIR)/finish_line_banner.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_finish_line_banner
|
||||
distclean_finish_line_banner:
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ $(GREENSHELL_FRAMES) $(GREENSHELL_PALETTE): $(GREENSHELL_EXPORT_SENTINEL) ;
|
|||
|
||||
$(GREENSHELL_EXPORT_SENTINEL): $(ASSET_DIR)/greenshell.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_greenshell
|
||||
distclean_greenshell:
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ $(HUD_TYPE_C_PORTRAIT_BORDER_PNG): $(HUD_TYPE_C_EXPORT_SENTINEL) ;
|
|||
|
||||
$(HUD_TYPE_C_EXPORT_SENTINEL): $(ASSET_DIR)/hud_type_c.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_hud_type_c
|
||||
distclean_hud_type_c:
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ $(ITEM_WINDOW_PNG) $(ITEM_WINDOW_PALETTES): $(ITEM_WINDOW_EXPORT_SENTINEL) ;
|
|||
|
||||
$(ITEM_WINDOW_EXPORT_SENTINEL): $(ASSET_DIR)/item_window.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_item_window
|
||||
distclean_item_window:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(BOWSER_KART_FRAME_PNG) $(BOWSER_KART_PALETTE_PNG): $(BOWSER_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BOWSER_EXPORT_SENTINEL): $(ASSET_DIR)/karts/bowser_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_bowser_kart
|
||||
distclean_bowser_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(DONKEYKONG_KART_FRAME_PNG) $(DONKEYKONG_KART_PALETTE_PNG): $(DONKEYKONG_EXPORT
|
|||
|
||||
$(DONKEYKONG_EXPORT_SENTINEL): $(ASSET_DIR)/karts/donkeykong_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_donkeykong_kart
|
||||
distclean_donkeykong_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(LUIGI_KART_FRAME_PNG) $(LUIGI_KART_PALETTE_PNG): $(LUIGI_EXPORT_SENTINEL) ;
|
|||
|
||||
$(LUIGI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/luigi_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_luigi_kart
|
||||
distclean_luigi_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(MARIO_KART_FRAME_PNG) $(MARIO_KART_PALETTE_PNG): $(MARIO_EXPORT_SENTINEL) ;
|
|||
|
||||
$(MARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/mario_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_mario_kart
|
||||
distclean_mario_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(PEACH_KART_FRAME_PNG) $(PEACH_KART_PALETTE_PNG): $(PEACH_EXPORT_SENTINEL) ;
|
|||
|
||||
$(PEACH_EXPORT_SENTINEL): $(ASSET_DIR)/karts/peach_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_peach_kart
|
||||
distclean_peach_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(TOAD_KART_FRAME_PNG) $(TOAD_KART_PALETTE_PNG): $(TOAD_EXPORT_SENTINEL) ;
|
|||
|
||||
$(TOAD_EXPORT_SENTINEL): $(ASSET_DIR)/karts/toad_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_toad_kart
|
||||
distclean_toad_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(WARIO_KART_FRAME_PNG) $(WARIO_KART_PALETTE_PNG): $(WARIO_EXPORT_SENTINEL) ;
|
|||
|
||||
$(WARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/wario_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_wario_kart
|
||||
distclean_wario_kart:
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ $(YOSHI_KART_FRAME_PNG) $(YOSHI_KART_PALETTE_PNG): $(YOSHI_EXPORT_SENTINEL) ;
|
|||
|
||||
$(YOSHI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/yoshi_kart.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_yoshi_kart
|
||||
distclean_yoshi_kart:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ $(BLUELIGHT_FRAMES) $(BLUELIGHT_PALETTE): $(BLUELIGHT_EXPORT_SENTINEL) ;
|
|||
|
||||
$(BLUELIGHT_EXPORT_SENTINEL): assets/lakitu/bluelight.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_bluelight
|
||||
distclean_lakitu_bluelight:
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ $(CHECKEREDFLAG_FRAMES) $(CHECKEREDFLAG_PALETTE): $(CHECKEREDFLAG_EXPORT_SENTINE
|
|||
|
||||
$(CHECKEREDFLAG_EXPORT_SENTINEL): assets/lakitu/checkeredflag.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_checkeredflag
|
||||
distclean_lakitu_checkeredflag:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(FINALLAP_FRAMES) $(FINALLAP_PALETTE): $(FINALLAP_EXPORT_SENTINEL) ;
|
|||
|
||||
$(FINALLAP_EXPORT_SENTINEL): assets/lakitu/finallap.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_finallap
|
||||
distclean_lakitu_finallap:
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ $(FISHING_FRAMES) $(FISHING_PALETTE): $(FISHING_EXPORT_SENTINEL) ;
|
|||
|
||||
$(FISHING_EXPORT_SENTINEL): assets/lakitu/fishing.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_fishing
|
||||
distclean_lakitu_fishing:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ $(NOLIGHTS_FRAMES) $(NOLIGHTS_PALETTE): $(NOLIGHTS_EXPORT_SENTINEL) ;
|
|||
|
||||
$(NOLIGHTS_EXPORT_SENTINEL): assets/lakitu/nolights.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_nolights
|
||||
distclean_lakitu_nolights:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(REDLIGHTS_FRAMES) $(REDLIGHTS_PALETTE): $(REDLIGHTS_EXPORT_SENTINEL) ;
|
|||
|
||||
$(REDLIGHTS_EXPORT_SENTINEL): assets/lakitu/redlights.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_redlights
|
||||
distclean_lakitu_redlights:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(REVERSE_FRAMES) $(REVERSE_PALETTE): $(REVERSE_EXPORT_SENTINEL) ;
|
|||
|
||||
$(REVERSE_EXPORT_SENTINEL): assets/lakitu/reverse.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_reverse
|
||||
distclean_lakitu_reverse:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ $(SECONDLAP_FRAMES) $(SECONDLAP_PALETTE): $(SECONDLAP_EXPORT_SENTINEL) ;
|
|||
|
||||
$(SECONDLAP_EXPORT_SENTINEL): assets/lakitu/secondlap.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_lakitu_secondlap
|
||||
distclean_lakitu_secondlap:
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ $(MINIMAP_ICONS_PNG): $(MINIMAP_ICONS_EXPORT_SENTINEL) ;
|
|||
|
||||
$(MINIMAP_ICONS_EXPORT_SENTINEL): $(ASSET_DIR)/minimap_icons.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_minimap_icons
|
||||
distclean_minimap_icons:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ $(ONOMATOPOEIA_PNG) $(ONOMATOPOEIA_PALETTE): $(ONOMATOPOEIA_EXPORT_SENTINEL) ;
|
|||
|
||||
$(ONOMATOPOEIA_EXPORT_SENTINEL): $(ASSET_DIR)/onomatopoeia.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_onomatopoeia
|
||||
distclean_onomatopoeia:
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ $(PLAYER_EMBLEM_PNGS) $(PLAYER_EMBLEM_PALETTE): $(PLAYER_EMBLEM_EXPORT_SENTINEL)
|
|||
|
||||
$(PLAYER_EMBLEM_EXPORT_SENTINEL): $(ASSET_DIR)/player_emblems.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_player_emblems
|
||||
distclean_player_emblems:
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ $(REFLECTION_MAP): $(STARTUP_LOGO_EXPORT_SENTINEL) ;
|
|||
|
||||
$(STARTUP_LOGO_EXPORT_SENTINEL): $(ASSET_DIR)/startup_logo.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_startup_logo
|
||||
distclean_startup_logo:
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ $(TREES_PNG) $(TREES_PALETTE) $(TREES_PALETTE_IMPORT): $(TREES_EXPORT_SENTINEL)
|
|||
|
||||
$(TREES_EXPORT_SENTINEL): $(ASSET_DIR)/trees.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_trees
|
||||
distclean_trees:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ $(UNUSED_TRAFFIC_LIGHT_PNG) $(UNUSED_TRAFFIC_LIGHT_PALETTE): $(UNUSED_TRAFFIC_LI
|
|||
|
||||
$(UNUSED_TRAFFIC_LIGHT_EXPORT_SENTINEL): $(ASSET_DIR)/unused_traffic_light.json
|
||||
$(ASSET_EXTRACT) $(BASEROM) $<
|
||||
touch $@
|
||||
$(TOUCH) $@
|
||||
|
||||
.PHONY: distclean_unused_traffic_light
|
||||
distclean_unused_traffic_light:
|
||||
|
|
|
|||
|
|
@ -1,101 +0,0 @@
|
|||
@page buildwindows Compiling for Windows
|
||||
## Compiling mk64 Decomp In Windows
|
||||
|
||||
***This method is not recommended nor supported. However, it is the only solution to build in W7/W8. WSL is the path of least resistance, use that not this***
|
||||
|
||||
> Building decomp using msys on Windows is a journey.. A journey akin to crawling over broken glass in the dark.
|
||||
- leogames
|
||||
|
||||
The extraneous and convoluted process to building mk64 decomp on Windows begins with disabling your anti-virus program or adding an exception to the mk64 decomp folder and the msys2 installation folder.
|
||||
Please note that this action may impact the security of your system. Prior to proceeding, make sure to understand the increased security risks that may result from this step. Nobody except you, is responsible and liable for your system and its security.
|
||||
|
||||
### Preamble
|
||||
Any misteps may require a complete uninstall of `MSYS2 MinGW x64` and restarting from the very beginning.
|
||||
It is unknown if `MSYS MinGW x32` is supported (most likely not).
|
||||
|
||||
### Step 1: Download MSYS2 MinGW x64
|
||||
|
||||
https://www.msys2.org/
|
||||
|
||||
Follow the initial instructions to update the base packages. Ignore installing any extra packages in-case they conflict with the below steps.
|
||||
|
||||
MinGW is a separate program from Msys2. However, it must be wrapped right into msys2.
|
||||
Compiling recomp requires steps using<br>`MSYS2 MSYS` *and* `MSYS2 MinGW x64`. The instructions will clearly differentiate which terminal program to launch and run in the section titles.
|
||||
|
||||
##### *Why flip-flop between both?*
|
||||
Compiling the recomp executable that generates the source files for compiling the compiler requires capstone. A disassembly, analysis, and reverse-engineering framework. Capstone is only available on `MSYS2 MinGW x64`. It is not available on `MSYS2 MSYS`. However, compiling the compiler itself requires
|
||||
`MSYS2 MSYS` because it contains an equivallent dependency for `mman`. A memory mapping library. `MSYS2 MinGW x64` does not contain an equivallent dependancy.
|
||||
|
||||
|
||||
### Step 2: Install Dependancies in MSYS2 MinGW x64
|
||||
```
|
||||
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-capstone pkgconf make python3 git
|
||||
```
|
||||
|
||||
### Step 3: Install Dependencies in MSYS2 MSYS
|
||||
```
|
||||
pacman -S gcc
|
||||
```
|
||||
|
||||
### Step 3.5: Rename include in recomp.cpp
|
||||
For some reason on Windows capstone is inside of a capstone folder.
|
||||
```
|
||||
#include <capstone/capstone.h>
|
||||
```
|
||||
|
||||
|
||||
### Step 4: Get Binutils
|
||||
Download and install the mips64 tool chain:
|
||||
https://github.com/N64-tools/mips64-gcc-toolchain
|
||||
|
||||
Merge the inner folders (bin, share, etc.) with the respective folders in `C:\msys64\mingw64\`
|
||||
|
||||
### Step 5: Compiling recomp.exe in MSYS2 MinGW x64
|
||||
In `MSYS2 MinGW x64` run in `mk64/tools/ido5.3_recomp/`:
|
||||
```
|
||||
g++ recomp.cpp -o recomp -g -lcapstone -Dugen53
|
||||
```
|
||||
|
||||
### Step 6: Generate Recomp Source Files in MSYS2 MinGW x64
|
||||
|
||||
Generate the .c files which will compile into the recomp binaries.
|
||||
mk64 requires the following compiler binaries: `as1, cc, cfe, copt, ugen, ujoin, uld, umerge, uopt`
|
||||
|
||||
In `MSYS2 MinGW x64` run in the directory `mk64/tools/ido5.3_recomp/`:
|
||||
```
|
||||
./recomp ../ido5.3_compiler/usr/lib/as1 > as1_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/cc > cc_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/cfe > cfe_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/copt > copt_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/ugen > ugen_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/ujoin > ujoin_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/uld > uld_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/umerge > umerge_c.c
|
||||
./recomp ../ido5.3_compiler/usr/lib/uopt > uopt_c.c
|
||||
```
|
||||
If you get an assertion failed error. Then the directory to the compiler is incorrect.
|
||||
The binary for cc is in `/ido5.3_compiler/usr/bin/` so do:
|
||||
```
|
||||
./recomp ../ido5.3_compiler/usr/bin/cc > cc_c.c
|
||||
```
|
||||
### Step 7: Compiling the recomp compiler in MSYS2 MSYS
|
||||
In `MSYS2 MSYS` run in the directory `mk64/tools/ido5.3_recomp/`:
|
||||
```
|
||||
gcc libc_impl.c as1_c.c -o as1 -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c cc_c.c -o cc -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c cfe_c.c -o cfe -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c copt_c.c -o copt -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c ugen_c.c -o ugen -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c ujoin_c.c -o ujoin -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c uld_c.c -o uld -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c umerge_c.c -o umerge -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
gcc libc_impl.c uopt_c.c -o uopt -g -fno-strict-aliasing -lm -no-pie -DIDO53 -O2
|
||||
```
|
||||
`-O2` is an optional optimization flag.
|
||||
|
||||
### Step 8: Compile mk64 in MSYS2 MinGW x64
|
||||
In `/mk64/` run:
|
||||
```
|
||||
make -j#
|
||||
```
|
||||
Replace # with your number of CPU cores for quicker compilation.
|
||||
|
|
@ -27,9 +27,16 @@ Review the [n64decomp/sm64](https://github.com/n64decomp/sm64) readme for instru
|
|||
|
||||
# Windows
|
||||
|
||||
Not recommended. Use WSL unless this is your only option.
|
||||
*N64 decomp does not mesh well with Windows. However, this process has been refined to be as painless as possible. WSL is a great alternative if issues arise.*
|
||||
|
||||
[Instructions here](buildwindows.html)
|
||||
### Requirements
|
||||
- Clone the repo or download the zip on your computer
|
||||
- Dowload toolchain from [here](https://github.com/coco875/mk64-tools/releases/download/v0.0.6/mips-tools-chain-windows.zip)
|
||||
|
||||
### Setup
|
||||
1. copy from mips-tools-chain-windows.zip the folder `mingw64` into tools folder in the repo
|
||||
2. Open a terminal (cmd or powershell) in the repo folder and run `"tools\mingw64\w64devkit.exe"` and after `make`
|
||||
3. Wait for the build to finish and Enjoy!
|
||||
|
||||
# macOS
|
||||
|
||||
|
|
@ -55,7 +62,6 @@ docker run --rm -v .:/mk64 mk64
|
|||
|
||||
For example:
|
||||
```bash
|
||||
docker run --rm -v .:/mk64 mk64 make -C tools
|
||||
docker run --rm -v .:/mk64 mk64 make
|
||||
```
|
||||
|
||||
|
|
@ -65,7 +71,6 @@ Place a US version of Mario Kart 64 called `baserom.us.z64` into the project fol
|
|||
|
||||
Run the following commands after pulling:
|
||||
```bash
|
||||
make -C tools
|
||||
make -j
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -137,11 +137,6 @@ def main():
|
|||
print(fname + " has the wrong hash! Found " + sha1 + ", expected " + expected_sha1)
|
||||
sys.exit(1)
|
||||
|
||||
# Make sure tools exist
|
||||
subprocess.check_call(
|
||||
["make", "-s", "-C", "tools/", "mio0", "n64graphics", "tkmk00"]
|
||||
)
|
||||
|
||||
# Go through the assets in roughly alphabetical order (but assets in the same
|
||||
# compressed block still go together).
|
||||
keys = sorted(list(todo.keys()), key=lambda k: todo[k][0][0])
|
||||
|
|
@ -212,7 +207,9 @@ def main():
|
|||
input = image[pos : pos + size]
|
||||
os.makedirs(os.path.dirname(asset), exist_ok=True)
|
||||
if asset.endswith(".png"):
|
||||
with tempfile.NamedTemporaryFile(prefix="asset") as tex_file:
|
||||
name_file = ""
|
||||
with tempfile.NamedTemporaryFile(prefix="asset", delete=False) as tex_file:
|
||||
name_file = tex_file.name
|
||||
tex_file.write(input)
|
||||
tex_file.flush()
|
||||
cmd = [
|
||||
|
|
@ -250,7 +247,8 @@ def main():
|
|||
"-c", ci_fmt,
|
||||
"-p", tmp_pal.name
|
||||
])
|
||||
subprocess.run(cmd, check=True)
|
||||
subprocess.run(cmd, check=True)
|
||||
os.remove(name_file)
|
||||
else:
|
||||
with open(asset, "wb") as f:
|
||||
f.write(input)
|
||||
|
|
|
|||
138
gfxdsm.js
138
gfxdsm.js
|
|
@ -1,138 +0,0 @@
|
|||
#!/bin/node
|
||||
const fs = require('fs');
|
||||
const { exit } = require('process');
|
||||
|
||||
/**
|
||||
* Call this script like
|
||||
*
|
||||
* node app.js input_file_here output_file_here
|
||||
*/
|
||||
if (process.argv.length !== 4 && process.argv.length !== 5 ) {
|
||||
console.error(`Error! Usage: ./${process.argv[1].split('/').slice(-1)[0]} input_file output_file`)
|
||||
exit(1);
|
||||
}
|
||||
// get the name of the file to read
|
||||
const f = fs.readFileSync(process.argv[2]);
|
||||
|
||||
let type;
|
||||
if (Number(process.argv[4]) > -1 && Number(process.argv[4]) < 3) {
|
||||
type = Number(process.argv[4]);
|
||||
} else {
|
||||
type = 2;
|
||||
}
|
||||
|
||||
// offset, type
|
||||
arr = [
|
||||
{o: "0x0", t: 3},
|
||||
{o: "0x19D0", t: 0}, // path
|
||||
{o: "0x1CF8", t: 0}, // more path? or spawn?
|
||||
// 0x5400
|
||||
];
|
||||
|
||||
let iter = 8;
|
||||
// spawn, vtx, ptr, gfx
|
||||
switch(type) {
|
||||
case 0: // Actor Spawn
|
||||
iter = 8;
|
||||
break;
|
||||
case 1: // Vtx
|
||||
iter = 16;
|
||||
break;
|
||||
case 2: // Ptr Addr
|
||||
iter = 8;
|
||||
break;
|
||||
}
|
||||
|
||||
// parse data to s16
|
||||
function p(offset) {
|
||||
const byteA = f[offset];
|
||||
const byteB = f[offset + 1];
|
||||
let sign = byteA & (1 << 7);
|
||||
let x = (((byteA & 0xFF) << 8) | (byteB & 0xFF));
|
||||
if (sign) {
|
||||
return 0xFFFF0000 | x; // fill in most significant bits with 1's
|
||||
} else {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
||||
// parse s8 to hex
|
||||
function s8(b) {
|
||||
if (typeof b === "undefined") {
|
||||
return "";
|
||||
}
|
||||
let res = b.toString(16).toUpperCase();
|
||||
if (res.length == 1) {
|
||||
return "0x0"+String(res);
|
||||
}
|
||||
return "0x"+res;
|
||||
}
|
||||
|
||||
function s32_h(b, offset) { // helper
|
||||
let str = f[b + offset].toString(16).toUpperCase()
|
||||
if (str.length == 1) {
|
||||
return "0"+str;
|
||||
} else {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
// parse s32 to hex
|
||||
function s32(b) {
|
||||
return res = "0x"+s32_h(b, 0) +
|
||||
s32_h(b, 1) +
|
||||
s32_h(b, 2) +
|
||||
s32_h(b, 3);
|
||||
}
|
||||
|
||||
// lines to output
|
||||
let k = [];
|
||||
switch(type) {
|
||||
case 0:
|
||||
k.push("struct ActorSpawnData d_course__dl[] = {");
|
||||
break;
|
||||
case 1:
|
||||
k.push("Vtx_t d_course__dl[] = {");
|
||||
break;
|
||||
case 2:
|
||||
k.push("TrackSections d_course__dl[] = {");
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < f.length; i += iter) {
|
||||
// X Y Z
|
||||
|
||||
switch(type) {
|
||||
case 0: // Spawn location { x, y, z}, { flag }
|
||||
k.push(" {{ "+p(i + 0)+", "+p(i + 2)+", "+p(i + 4)+" }, { "+p(i + 6)+" }},");
|
||||
break;
|
||||
case 1: // Vtx {x, y, z}, { flag }, { t1, t2 }, { r, g, b, a }
|
||||
k.push(" {{ "+p(i + 0)+", "+p(i + 2)+", "+p(i + 4)+" }, { "+p(i + 6)+" }, { "+p(i + 8)+", "+p(i + 10)+" }, {"+s8(f[i + 12], 16)+", "+s8(f[i + 13], 16)+", "+s8(f[i + 14])+", "+s8(f[i + 15])+" }},");
|
||||
break;
|
||||
case 2: // Ptr addr
|
||||
k.push(" {{ "+s32(i + 0)+" }, { "+s32(i + 4)+" }},");
|
||||
break;
|
||||
}
|
||||
|
||||
// check if this is a glabel line
|
||||
//let n = i.match(/glabel D_([0-9A-F]*)$/);
|
||||
// if it is
|
||||
//if (n) {
|
||||
// the number will be in the second? item in the array - convert it to a numbers
|
||||
// let newLast = Number(`0x${n[1]}`)
|
||||
//if (last != 0) { // not the first line? add the skip info
|
||||
// k.push(`.skip ${newLast-last}`) // .skip ##
|
||||
// k.push('') // blank line
|
||||
//}
|
||||
//last = newLast; // save what the last glbael line was
|
||||
//k.push(i) // glabel D_###
|
||||
//}
|
||||
//if (i > 100) {break;}
|
||||
}
|
||||
// might need additional logical here to output the last lines after the last glabel?
|
||||
// for now, just copy the last line from the original file
|
||||
//k.push(b.slice(-1)[0])
|
||||
k.push("};");
|
||||
// write this to the file name in the second arg
|
||||
//fs.writeFileSync(process.argv[3], k.join("\n")+"\n");
|
||||
console.log(k.join("\n")+"\n");
|
||||
exit(0);
|
||||
7
permuter
7
permuter
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# note, this quick hack only works with three arguments.
|
||||
# if you're trying to use four arguments, you need to add another `$4` etc.
|
||||
|
||||
python3 tools/decomp-permuter/permuter.py $1 $2 $3
|
||||
|
||||
|
|
@ -7,8 +7,6 @@ CFLAGS := -I . -Wall -Wextra -Wno-unused-parameter -pedantic -std=c99 -O2 -s
|
|||
# Tools to compile
|
||||
PROGRAMS := mio0 n64graphics displaylist_packer n64cksum tkmk00 extract_data_for_mio
|
||||
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Source Files and Flags for Each Tool #
|
||||
#==============================================================================#
|
||||
|
|
@ -30,18 +28,12 @@ n64cksum_CFLAGS := -DN64CKSUM_STANDALONE
|
|||
|
||||
extract_data_for_mio_SOURCES := extract_data_for_mio.c
|
||||
|
||||
|
||||
# Build tools and recomp
|
||||
all: $(PROGRAMS) subsystem
|
||||
|
||||
# Build recomp
|
||||
subsystem:
|
||||
$(MAKE) -C ido5.3_recomp
|
||||
all: $(PROGRAMS)
|
||||
|
||||
# Remove generated files
|
||||
clean:
|
||||
$(RM) $(PROGRAMS)
|
||||
$(MAKE) -C ido5.3_recomp clean
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,868 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import tempfile
|
||||
import struct
|
||||
import copy
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
|
||||
MAX_FN_SIZE = 100
|
||||
|
||||
EI_NIDENT = 16
|
||||
EI_CLASS = 4
|
||||
EI_DATA = 5
|
||||
EI_VERSION = 6
|
||||
EI_OSABI = 7
|
||||
EI_ABIVERSION = 8
|
||||
STN_UNDEF = 0
|
||||
|
||||
SHN_UNDEF = 0
|
||||
SHN_ABS = 0xfff1
|
||||
SHN_COMMON = 0xfff2
|
||||
SHN_XINDEX = 0xffff
|
||||
SHN_LORESERVE = 0xff00
|
||||
|
||||
STT_NOTYPE = 0
|
||||
STT_OBJECT = 1
|
||||
STT_FUNC = 2
|
||||
STT_SECTION = 3
|
||||
STT_FILE = 4
|
||||
STT_COMMON = 5
|
||||
STT_TLS = 6
|
||||
|
||||
STB_LOCAL = 0
|
||||
STB_GLOBAL = 1
|
||||
STB_WEAK = 2
|
||||
|
||||
STV_DEFAULT = 0
|
||||
STV_INTERNAL = 1
|
||||
STV_HIDDEN = 2
|
||||
STV_PROTECTED = 3
|
||||
|
||||
SHT_NULL = 0
|
||||
SHT_PROGBITS = 1
|
||||
SHT_SYMTAB = 2
|
||||
SHT_STRTAB = 3
|
||||
SHT_RELA = 4
|
||||
SHT_HASH = 5
|
||||
SHT_DYNAMIC = 6
|
||||
SHT_NOTE = 7
|
||||
SHT_NOBITS = 8
|
||||
SHT_REL = 9
|
||||
SHT_SHLIB = 10
|
||||
SHT_DYNSYM = 11
|
||||
SHT_INIT_ARRAY = 14
|
||||
SHT_FINI_ARRAY = 15
|
||||
SHT_PREINIT_ARRAY = 16
|
||||
SHT_GROUP = 17
|
||||
SHT_SYMTAB_SHNDX = 18
|
||||
SHT_MIPS_GPTAB = 0x70000003
|
||||
SHT_MIPS_DEBUG = 0x70000005
|
||||
SHT_MIPS_REGINFO = 0x70000006
|
||||
SHT_MIPS_OPTIONS = 0x7000000d
|
||||
|
||||
SHF_WRITE = 0x1
|
||||
SHF_ALLOC = 0x2
|
||||
SHF_EXECINSTR = 0x4
|
||||
SHF_MERGE = 0x10
|
||||
SHF_STRINGS = 0x20
|
||||
SHF_INFO_LINK = 0x40
|
||||
SHF_LINK_ORDER = 0x80
|
||||
SHF_OS_NONCONFORMING = 0x100
|
||||
SHF_GROUP = 0x200
|
||||
SHF_TLS = 0x400
|
||||
|
||||
R_MIPS_32 = 2
|
||||
R_MIPS_26 = 4
|
||||
R_MIPS_HI16 = 5
|
||||
R_MIPS_LO16 = 6
|
||||
|
||||
|
||||
class ElfHeader:
|
||||
"""
|
||||
typedef struct {
|
||||
unsigned char e_ident[EI_NIDENT];
|
||||
Elf32_Half e_type;
|
||||
Elf32_Half e_machine;
|
||||
Elf32_Word e_version;
|
||||
Elf32_Addr e_entry;
|
||||
Elf32_Off e_phoff;
|
||||
Elf32_Off e_shoff;
|
||||
Elf32_Word e_flags;
|
||||
Elf32_Half e_ehsize;
|
||||
Elf32_Half e_phentsize;
|
||||
Elf32_Half e_phnum;
|
||||
Elf32_Half e_shentsize;
|
||||
Elf32_Half e_shnum;
|
||||
Elf32_Half e_shstrndx;
|
||||
} Elf32_Ehdr;
|
||||
"""
|
||||
|
||||
def __init__(self, data):
|
||||
self.e_ident = data[:EI_NIDENT]
|
||||
self.e_type, self.e_machine, self.e_version, self.e_entry, self.e_phoff, self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize, self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx = struct.unpack('>HHIIIIIHHHHHH', data[EI_NIDENT:])
|
||||
assert self.e_ident[EI_CLASS] == 1 # 32-bit
|
||||
assert self.e_ident[EI_DATA] == 2 # big-endian
|
||||
assert self.e_type == 1 # relocatable
|
||||
assert self.e_machine == 8 # MIPS I Architecture
|
||||
assert self.e_phoff == 0 # no program header
|
||||
assert self.e_shoff != 0 # section header
|
||||
assert self.e_shstrndx != SHN_UNDEF
|
||||
|
||||
def to_bin(self):
|
||||
return self.e_ident + struct.pack('>HHIIIIIHHHHHH', self.e_type,
|
||||
self.e_machine, self.e_version, self.e_entry, self.e_phoff,
|
||||
self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize,
|
||||
self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx)
|
||||
|
||||
|
||||
class Symbol:
|
||||
"""
|
||||
typedef struct {
|
||||
Elf32_Word st_name;
|
||||
Elf32_Addr st_value;
|
||||
Elf32_Word st_size;
|
||||
unsigned char st_info;
|
||||
unsigned char st_other;
|
||||
Elf32_Half st_shndx;
|
||||
} Elf32_Sym;
|
||||
"""
|
||||
|
||||
def __init__(self, data, strtab):
|
||||
self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx = struct.unpack('>IIIBBH', data)
|
||||
assert self.st_shndx != SHN_XINDEX, "too many sections (SHN_XINDEX not supported)"
|
||||
self.bind = st_info >> 4
|
||||
self.type = st_info & 15
|
||||
self.name = strtab.lookup_str(self.st_name)
|
||||
self.visibility = self.st_other & 3
|
||||
|
||||
def to_bin(self):
|
||||
st_info = (self.bind << 4) | self.type
|
||||
return struct.pack('>IIIBBH', self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx)
|
||||
|
||||
|
||||
class Relocation:
|
||||
def __init__(self, data, sh_type):
|
||||
self.sh_type = sh_type
|
||||
if sh_type == SHT_REL:
|
||||
self.r_offset, self.r_info = struct.unpack('>II', data)
|
||||
else:
|
||||
self.r_offset, self.r_info, self.r_addend = struct.unpack('>III', data)
|
||||
self.sym_index = self.r_info >> 8
|
||||
self.rel_type = self.r_info & 0xff
|
||||
|
||||
def to_bin(self):
|
||||
self.r_info = (self.sym_index << 8) | self.rel_type
|
||||
if self.sh_type == SHT_REL:
|
||||
return struct.pack('>II', self.r_offset, self.r_info)
|
||||
else:
|
||||
return struct.pack('>III', self.r_offset, self.r_info, self.r_addend)
|
||||
|
||||
|
||||
class Section:
|
||||
"""
|
||||
typedef struct {
|
||||
Elf32_Word sh_name;
|
||||
Elf32_Word sh_type;
|
||||
Elf32_Word sh_flags;
|
||||
Elf32_Addr sh_addr;
|
||||
Elf32_Off sh_offset;
|
||||
Elf32_Word sh_size;
|
||||
Elf32_Word sh_link;
|
||||
Elf32_Word sh_info;
|
||||
Elf32_Word sh_addralign;
|
||||
Elf32_Word sh_entsize;
|
||||
} Elf32_Shdr;
|
||||
"""
|
||||
|
||||
def __init__(self, header, data, index):
|
||||
self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize = struct.unpack('>IIIIIIIIII', header)
|
||||
assert not self.sh_flags & SHF_LINK_ORDER
|
||||
if self.sh_entsize != 0:
|
||||
assert self.sh_size % self.sh_entsize == 0
|
||||
if self.sh_type == SHT_NOBITS:
|
||||
self.data = ''
|
||||
else:
|
||||
self.data = data[self.sh_offset:self.sh_offset + self.sh_size]
|
||||
self.index = index
|
||||
self.relocated_by = []
|
||||
|
||||
@staticmethod
|
||||
def from_parts(sh_name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data, index):
|
||||
header = struct.pack('>IIIIIIIIII', sh_name, sh_type, sh_flags, 0, 0, len(data), sh_link, sh_info, sh_addralign, sh_entsize)
|
||||
return Section(header, data, index)
|
||||
|
||||
def lookup_str(self, index):
|
||||
assert self.sh_type == SHT_STRTAB
|
||||
to = self.data.find(b'\0', index)
|
||||
assert to != -1
|
||||
return self.data[index:to].decode('utf-8')
|
||||
|
||||
def add_str(self, string):
|
||||
assert self.sh_type == SHT_STRTAB
|
||||
ret = len(self.data)
|
||||
self.data += bytes(string, 'utf-8') + b'\0'
|
||||
return ret
|
||||
|
||||
def is_rel(self):
|
||||
return self.sh_type == SHT_REL or self.sh_type == SHT_RELA
|
||||
|
||||
def header_to_bin(self):
|
||||
if self.sh_type != SHT_NOBITS:
|
||||
self.sh_size = len(self.data)
|
||||
return struct.pack('>IIIIIIIIII', self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize)
|
||||
|
||||
def late_init(self, sections):
|
||||
if self.sh_type == SHT_SYMTAB:
|
||||
self.init_symbols(sections)
|
||||
elif self.is_rel():
|
||||
self.rel_target = sections[self.sh_info]
|
||||
self.rel_target.relocated_by.append(self)
|
||||
self.init_relocs()
|
||||
|
||||
def find_symbol(self, name):
|
||||
assert self.sh_type == SHT_SYMTAB
|
||||
for s in self.symbol_entries:
|
||||
if s.name == name:
|
||||
return (s.st_shndx, s.st_value)
|
||||
return None
|
||||
|
||||
def init_symbols(self, sections):
|
||||
assert self.sh_type == SHT_SYMTAB
|
||||
assert self.sh_entsize == 16
|
||||
self.strtab = sections[self.sh_link]
|
||||
entries = []
|
||||
for i in range(0, self.sh_size, self.sh_entsize):
|
||||
entries.append(Symbol(self.data[i:i+self.sh_entsize], self.strtab))
|
||||
self.symbol_entries = entries
|
||||
|
||||
def init_relocs(self):
|
||||
assert self.is_rel()
|
||||
entries = []
|
||||
for i in range(0, self.sh_size, self.sh_entsize):
|
||||
entries.append(Relocation(self.data[i:i+self.sh_entsize], self.sh_type))
|
||||
self.relocations = entries
|
||||
|
||||
def local_symbols(self):
|
||||
assert self.sh_type == SHT_SYMTAB
|
||||
return self.symbol_entries[:self.sh_info]
|
||||
|
||||
def global_symbols(self):
|
||||
assert self.sh_type == SHT_SYMTAB
|
||||
return self.symbol_entries[self.sh_info:]
|
||||
|
||||
|
||||
class ElfFile:
|
||||
def __init__(self, data):
|
||||
self.data = data
|
||||
assert data[:4] == b'\x7fELF', "not an ELF file"
|
||||
|
||||
self.elf_header = ElfHeader(data[0:52])
|
||||
|
||||
offset, size = self.elf_header.e_shoff, self.elf_header.e_shentsize
|
||||
null_section = Section(data[offset:offset + size], data, 0)
|
||||
num_sections = self.elf_header.e_shnum or null_section.sh_size
|
||||
|
||||
self.sections = [null_section]
|
||||
for i in range(1, num_sections):
|
||||
ind = offset + i * size
|
||||
self.sections.append(Section(data[ind:ind + size], data, i))
|
||||
|
||||
symtab = None
|
||||
for s in self.sections:
|
||||
if s.sh_type == SHT_SYMTAB:
|
||||
assert not symtab
|
||||
symtab = s
|
||||
assert symtab is not None
|
||||
self.symtab = symtab
|
||||
|
||||
shstr = self.sections[self.elf_header.e_shstrndx]
|
||||
for s in self.sections:
|
||||
s.name = shstr.lookup_str(s.sh_name)
|
||||
s.late_init(self.sections)
|
||||
|
||||
def find_section(self, name):
|
||||
for s in self.sections:
|
||||
if s.name == name:
|
||||
return s
|
||||
return None
|
||||
|
||||
def add_section(self, name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data):
|
||||
shstr = self.sections[self.elf_header.e_shstrndx]
|
||||
sh_name = shstr.add_str(name)
|
||||
s = Section.from_parts(sh_name=sh_name, sh_type=sh_type,
|
||||
sh_flags=sh_flags, sh_link=sh_link, sh_info=sh_info,
|
||||
sh_addralign=sh_addralign, sh_entsize=sh_entsize, data=data,
|
||||
index=len(self.sections))
|
||||
self.sections.append(s)
|
||||
s.name = name
|
||||
s.late_init(self.sections)
|
||||
return s
|
||||
|
||||
def drop_irrelevant_sections(self):
|
||||
# We can only drop sections at the end, since otherwise section
|
||||
# references might be wrong. Luckily, these sections typically are.
|
||||
while self.sections[-1].sh_type in [SHT_MIPS_DEBUG, SHT_MIPS_GPTAB]:
|
||||
self.sections.pop()
|
||||
|
||||
def write(self, filename):
|
||||
outfile = open(filename, 'wb')
|
||||
outidx = 0
|
||||
def write_out(data):
|
||||
nonlocal outidx
|
||||
outfile.write(data)
|
||||
outidx += len(data)
|
||||
def pad_out(align):
|
||||
if align and outidx % align:
|
||||
write_out(b'\0' * (align - outidx % align))
|
||||
|
||||
self.elf_header.e_shnum = len(self.sections)
|
||||
write_out(self.elf_header.to_bin())
|
||||
|
||||
for s in self.sections:
|
||||
if s.sh_type != SHT_NOBITS and s.sh_type != SHT_NULL:
|
||||
pad_out(s.sh_addralign)
|
||||
s.sh_offset = outidx
|
||||
write_out(s.data)
|
||||
|
||||
pad_out(4)
|
||||
self.elf_header.e_shoff = outidx
|
||||
for s in self.sections:
|
||||
write_out(s.header_to_bin())
|
||||
|
||||
outfile.seek(0)
|
||||
outfile.write(self.elf_header.to_bin())
|
||||
outfile.close()
|
||||
|
||||
|
||||
def is_temp_name(name):
|
||||
return name.startswith('_asmpp_')
|
||||
|
||||
class GlobalState:
|
||||
def __init__(self, min_instr_count, skip_instr_count):
|
||||
# A value that hopefully never appears as a 32-bit rodata constant (or we
|
||||
# miscompile late rodata). Increases by 1 in each step.
|
||||
self.late_rodata_hex = 0xE0123456
|
||||
self.namectr = 0
|
||||
self.min_instr_count = min_instr_count
|
||||
self.skip_instr_count = skip_instr_count
|
||||
|
||||
def make_name(self, cat):
|
||||
self.namectr += 1
|
||||
return '_asmpp_{}{}'.format(cat, self.namectr)
|
||||
|
||||
class GlobalAsmBlock:
|
||||
def __init__(self):
|
||||
self.cur_section = '.text'
|
||||
self.asm_conts = []
|
||||
self.late_rodata_asm_conts = []
|
||||
self.late_rodata_alignment = 0
|
||||
self.text_glabels = []
|
||||
self.fn_section_sizes = {
|
||||
'.text': 0,
|
||||
'.data': 0,
|
||||
'.bss': 0,
|
||||
'.rodata': 0,
|
||||
'.late_rodata': 0,
|
||||
}
|
||||
self.fn_ins_inds = []
|
||||
self.num_lines = 0
|
||||
|
||||
def add_sized(self, size, line):
|
||||
if self.cur_section in ['.text', '.late_rodata']:
|
||||
assert size % 4 == 0, "size must be a multiple of 4 on line: " + line
|
||||
assert size >= 0
|
||||
self.fn_section_sizes[self.cur_section] += size
|
||||
if self.cur_section == '.text':
|
||||
assert self.text_glabels, ".text block without an initial glabel"
|
||||
self.fn_ins_inds.append((self.num_lines, size // 4))
|
||||
|
||||
def process_line(self, line):
|
||||
line = re.sub(r'/\*.*?\*/', '', line)
|
||||
line = re.sub(r'#.*', '', line)
|
||||
line = line.strip()
|
||||
changed_section = False
|
||||
if line.startswith('glabel ') and self.cur_section == '.text':
|
||||
self.text_glabels.append(line.split()[1])
|
||||
if not line:
|
||||
pass # empty line
|
||||
elif line.startswith('glabel ') or (' ' not in line and line.endswith(':')):
|
||||
pass # label
|
||||
elif line.startswith('.section') or line in ['.text', '.data', '.rdata', '.rodata', '.bss', '.late_rodata']:
|
||||
# section change
|
||||
self.cur_section = '.rodata' if line == '.rdata' else line.split(',')[0].split()[-1]
|
||||
assert self.cur_section in ['.data', '.text', '.rodata', '.late_rodata', '.bss'], \
|
||||
"unrecognized .section directive"
|
||||
changed_section = True
|
||||
elif line.startswith('.late_rodata_alignment'):
|
||||
assert self.cur_section == '.late_rodata'
|
||||
self.late_rodata_alignment = int(line.split()[1])
|
||||
assert self.late_rodata_alignment in [4, 8]
|
||||
changed_section = True
|
||||
elif line.startswith('.incbin'):
|
||||
self.add_sized(int(line.split(',')[-1].strip(), 0), line)
|
||||
elif line.startswith('.word') or line.startswith('.float'):
|
||||
self.add_sized(4 * len(line.split(',')), line)
|
||||
elif line.startswith('.double'):
|
||||
self.add_sized(8 * len(line.split(',')), line)
|
||||
elif line.startswith('.space'):
|
||||
self.add_sized(int(line.split()[1], 0), line)
|
||||
elif line.startswith('.'):
|
||||
# .macro, .ascii, .asciiz, .balign, .align, ...
|
||||
assert False, 'not supported yet: ' + line
|
||||
else:
|
||||
# Unfortunately, macros are hard to support for .rodata --
|
||||
# we don't know how how space they will expand to before
|
||||
# running the assembler, but we need that information to
|
||||
# construct the C code. So if we need that we'll either
|
||||
# need to run the assembler twice (at least in some rare
|
||||
# cases), or change how this program is invoked.
|
||||
# Similarly, we can't currently deal with pseudo-instructions
|
||||
# that expand to several real instructions.
|
||||
assert self.cur_section == '.text', "instruction or macro call in non-.text section? not supported: " + line
|
||||
self.add_sized(4, line)
|
||||
if self.cur_section == '.late_rodata':
|
||||
if not changed_section:
|
||||
self.late_rodata_asm_conts.append(line)
|
||||
else:
|
||||
self.asm_conts.append(line)
|
||||
self.num_lines += 1
|
||||
|
||||
def finish(self, state):
|
||||
src = [''] * (self.num_lines + 1)
|
||||
late_rodata = []
|
||||
late_rodata_fn_output = []
|
||||
|
||||
if self.fn_section_sizes['.late_rodata'] > 0:
|
||||
# Generate late rodata by emitting unique float constants.
|
||||
# This requires 3 instructions for each 4 bytes of rodata.
|
||||
# If we know alignment, we can use doubles, which give 3
|
||||
# instructions for 8 bytes of rodata.
|
||||
size = self.fn_section_sizes['.late_rodata'] // 4
|
||||
skip_next = False
|
||||
for i in range(size):
|
||||
if skip_next:
|
||||
skip_next = False
|
||||
continue
|
||||
if (state.late_rodata_hex & 0xffff) == 0:
|
||||
# Avoid lui
|
||||
state.late_rodata_hex += 1
|
||||
dummy_bytes = struct.pack('>I', state.late_rodata_hex)
|
||||
state.late_rodata_hex += 1
|
||||
late_rodata.append(dummy_bytes)
|
||||
if self.late_rodata_alignment == 4 * ((i + 1) % 2 + 1) and i + 1 < size:
|
||||
late_rodata.append(dummy_bytes)
|
||||
fval, = struct.unpack('>d', dummy_bytes * 2)
|
||||
late_rodata_fn_output.append('*(volatile double*)0 = {};'.format(fval))
|
||||
skip_next = True
|
||||
else:
|
||||
fval, = struct.unpack('>f', dummy_bytes)
|
||||
late_rodata_fn_output.append('*(volatile float*)0 = {}f;'.format(fval))
|
||||
late_rodata_fn_output.append('')
|
||||
late_rodata_fn_output.append('')
|
||||
|
||||
text_name = None
|
||||
if self.fn_section_sizes['.text'] > 0 or late_rodata_fn_output:
|
||||
text_name = state.make_name('func')
|
||||
src[0] = 'void {}(void) {{'.format(text_name)
|
||||
src[self.num_lines] = '}'
|
||||
instr_count = self.fn_section_sizes['.text'] // 4
|
||||
assert instr_count >= state.min_instr_count, "too short .text block"
|
||||
tot_emitted = 0
|
||||
tot_skipped = 0
|
||||
fn_emitted = 0
|
||||
fn_skipped = 0
|
||||
rodata_stack = late_rodata_fn_output[::-1]
|
||||
for (line, count) in self.fn_ins_inds:
|
||||
for _ in range(count):
|
||||
if (fn_emitted > MAX_FN_SIZE and instr_count - tot_emitted > state.min_instr_count and
|
||||
(not rodata_stack or rodata_stack[-1])):
|
||||
# Don't let functions become too large. When a function reaches 284
|
||||
# instructions, and -O2 -framepointer flags are passed, the IRIX
|
||||
# compiler decides it is a great idea to start optimizing more.
|
||||
fn_emitted = 0
|
||||
fn_skipped = 0
|
||||
src[line] += ' }} void {}(void) {{ '.format(state.make_name('large_func'))
|
||||
if fn_skipped < state.skip_instr_count:
|
||||
fn_skipped += 1
|
||||
tot_skipped += 1
|
||||
elif rodata_stack:
|
||||
src[line] += rodata_stack.pop()
|
||||
else:
|
||||
src[line] += '*(volatile int*)0 = 0;'
|
||||
tot_emitted += 1
|
||||
fn_emitted += 1
|
||||
if rodata_stack:
|
||||
size = len(late_rodata_fn_output) // 3
|
||||
available = instr_count - tot_skipped
|
||||
print("late rodata to text ratio is too high: {} / {} must be <= 1/3"
|
||||
.format(size, available), file=sys.stderr)
|
||||
print("add a .late_rodata_alignment (4|8) to the .late_rodata "
|
||||
"block to double the allowed ratio.", file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
rodata_name = None
|
||||
if self.fn_section_sizes['.rodata'] > 0:
|
||||
rodata_name = state.make_name('rodata')
|
||||
output_line += ' const char {}[{}] = {{1}};'.format(rodata_name, self.fn_section_sizes['.rodata'])
|
||||
|
||||
data_name = None
|
||||
if self.fn_section_sizes['.data'] > 0:
|
||||
data_name = state.make_name('data')
|
||||
output_line += ' char {}[{}] = {{1}};'.format(data_name, self.fn_section_sizes['.data'])
|
||||
|
||||
bss_name = None
|
||||
if self.fn_section_sizes['.bss'] > 0:
|
||||
bss_name = state.make_name('bss')
|
||||
output_line += ' char {}[{}];'.format(bss_name, self.fn_section_sizes['.bss'])
|
||||
|
||||
fn = (self.text_glabels, self.asm_conts, late_rodata, self.late_rodata_asm_conts,
|
||||
{
|
||||
'.text': (text_name, self.fn_section_sizes['.text']),
|
||||
'.data': (data_name, self.fn_section_sizes['.data']),
|
||||
'.rodata': (rodata_name, self.fn_section_sizes['.rodata']),
|
||||
'.bss': (bss_name, self.fn_section_sizes['.bss']),
|
||||
})
|
||||
return src, fn
|
||||
|
||||
def parse_source(f, print_source, opt, framepointer):
|
||||
if opt == 'O2':
|
||||
if framepointer:
|
||||
min_instr_count = 6
|
||||
skip_instr_count = 5
|
||||
else:
|
||||
min_instr_count = 2
|
||||
skip_instr_count = 1
|
||||
elif opt == 'g':
|
||||
if framepointer:
|
||||
min_instr_count = 7
|
||||
skip_instr_count = 7
|
||||
else:
|
||||
min_instr_count = 4
|
||||
skip_instr_count = 4
|
||||
else:
|
||||
assert opt == 'g3'
|
||||
if framepointer:
|
||||
min_instr_count = 4
|
||||
skip_instr_count = 4
|
||||
else:
|
||||
min_instr_count = 2
|
||||
skip_instr_count = 2
|
||||
|
||||
state = GlobalState(min_instr_count, skip_instr_count)
|
||||
|
||||
global_asm = None
|
||||
asm_functions = []
|
||||
output_lines = []
|
||||
|
||||
for raw_line in f:
|
||||
raw_line = raw_line.rstrip()
|
||||
line = raw_line.lstrip()
|
||||
|
||||
# Print exactly one output line per source line, to make compiler
|
||||
# errors have correct line numbers. These will be overridden with
|
||||
# reasonable content further down.
|
||||
output_lines.append('')
|
||||
|
||||
if global_asm is not None:
|
||||
if line.startswith(')'):
|
||||
src, fn = global_asm.finish(state)
|
||||
for i, line2 in enumerate(src):
|
||||
output_lines[start_index + i] = line2
|
||||
asm_functions.append(fn)
|
||||
global_asm = None
|
||||
else:
|
||||
global_asm.process_line(line)
|
||||
else:
|
||||
if line == 'GLOBAL_ASM(':
|
||||
global_asm = GlobalAsmBlock()
|
||||
start_index = len(output_lines)
|
||||
elif line.startswith('GLOBAL_ASM("') and line.endswith('")'):
|
||||
global_asm = GlobalAsmBlock()
|
||||
fname = line[len('GLOBAL_ASM') + 2 : -2]
|
||||
with open(fname) as f:
|
||||
for line2 in f:
|
||||
global_asm.process_line(line2)
|
||||
src, fn = global_asm.finish(state)
|
||||
output_lines[-1] = ''.join(src)
|
||||
asm_functions.append(fn)
|
||||
global_asm = None
|
||||
else:
|
||||
output_lines[-1] = raw_line
|
||||
|
||||
if print_source:
|
||||
for line in output_lines:
|
||||
print(line)
|
||||
|
||||
return asm_functions
|
||||
|
||||
def fixup_objfile(objfile_name, functions, asm_prelude, assembler):
|
||||
SECTIONS = ['.data', '.text', '.rodata', '.bss']
|
||||
|
||||
with open(objfile_name, 'rb') as f:
|
||||
objfile = ElfFile(f.read())
|
||||
|
||||
prev_locs = {
|
||||
'.text': 0,
|
||||
'.data': 0,
|
||||
'.rodata': 0,
|
||||
'.bss': 0,
|
||||
}
|
||||
to_copy = {
|
||||
'.text': [],
|
||||
'.data': [],
|
||||
'.rodata': [],
|
||||
}
|
||||
asm = []
|
||||
late_rodata = []
|
||||
late_rodata_asm = []
|
||||
late_rodata_source_name = None
|
||||
|
||||
# Generate an assembly file with all the assembly we need to fill in. For
|
||||
# simplicity we pad with nops/.space so that addresses match exactly, so we
|
||||
# don't have to fix up relocations/symbol references.
|
||||
all_text_glabels = set()
|
||||
for (text_glabels, body, fn_late_rodata, fn_late_rodata_body, data) in functions:
|
||||
ifdefed = False
|
||||
for sectype, (temp_name, size) in data.items():
|
||||
if temp_name is None:
|
||||
continue
|
||||
assert size > 0
|
||||
loc = objfile.symtab.find_symbol(temp_name)
|
||||
if loc is None:
|
||||
ifdefed = True
|
||||
break
|
||||
loc = loc[1]
|
||||
prev_loc = prev_locs[sectype]
|
||||
assert loc >= prev_loc, sectype
|
||||
if loc != prev_loc:
|
||||
asm.append('.section ' + sectype)
|
||||
if sectype == '.text':
|
||||
for i in range((loc - prev_loc) // 4):
|
||||
asm.append('nop')
|
||||
else:
|
||||
asm.append('.space {}'.format(loc - prev_loc))
|
||||
if sectype != '.bss':
|
||||
to_copy[sectype].append((loc, size))
|
||||
prev_locs[sectype] = loc + size
|
||||
if not ifdefed:
|
||||
all_text_glabels.update(text_glabels)
|
||||
late_rodata.extend(fn_late_rodata)
|
||||
late_rodata_asm.extend(fn_late_rodata_body)
|
||||
asm.append('.text')
|
||||
for line in body:
|
||||
asm.append(line)
|
||||
if late_rodata_asm:
|
||||
late_rodata_source_name = '_asmpp_late_rodata'
|
||||
asm.append('.rdata')
|
||||
asm.append('glabel {}'.format(late_rodata_source_name))
|
||||
asm.extend(late_rodata_asm)
|
||||
|
||||
o_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.o', delete=False)
|
||||
o_name = o_file.name
|
||||
o_file.close()
|
||||
s_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.s', delete=False)
|
||||
s_name = s_file.name
|
||||
try:
|
||||
s_file.write(asm_prelude + b'\n')
|
||||
for line in asm:
|
||||
s_file.write(line.encode('utf-8') + b'\n')
|
||||
s_file.close()
|
||||
ret = os.system(assembler + " " + s_name + " -o " + o_name)
|
||||
if ret != 0:
|
||||
raise Exception("failed to assemble")
|
||||
with open(o_name, 'rb') as f:
|
||||
asm_objfile = ElfFile(f.read())
|
||||
|
||||
# Remove some clutter from objdump output
|
||||
objfile.drop_irrelevant_sections()
|
||||
|
||||
# Unify reginfo sections
|
||||
target_reginfo = objfile.find_section('.reginfo')
|
||||
source_reginfo_data = list(asm_objfile.find_section('.reginfo').data)
|
||||
data = list(target_reginfo.data)
|
||||
for i in range(20):
|
||||
data[i] |= source_reginfo_data[i]
|
||||
target_reginfo.data = bytes(data)
|
||||
|
||||
# Move over section contents
|
||||
modified_text_positions = set()
|
||||
last_rodata_pos = 0
|
||||
for sectype in SECTIONS:
|
||||
if sectype == '.bss':
|
||||
continue
|
||||
source = asm_objfile.find_section(sectype)
|
||||
target = objfile.find_section(sectype)
|
||||
if source is None or not to_copy[sectype]:
|
||||
continue
|
||||
assert target is not None, "must have a section to overwrite: " + sectype
|
||||
data = list(target.data)
|
||||
for (pos, count) in to_copy[sectype]:
|
||||
data[pos:pos + count] = source.data[pos:pos + count]
|
||||
if sectype == '.text':
|
||||
assert count % 4 == 0
|
||||
assert pos % 4 == 0
|
||||
for i in range(count // 4):
|
||||
modified_text_positions.add(pos + 4 * i)
|
||||
elif sectype == '.rodata':
|
||||
last_rodata_pos = pos + count
|
||||
target.data = bytes(data)
|
||||
|
||||
# Move over late rodata. This is heuristic, sadly, since I can't think
|
||||
# of another way of doing it.
|
||||
moved_late_rodata = {}
|
||||
if late_rodata:
|
||||
source = asm_objfile.find_section('.rodata')
|
||||
target = objfile.find_section('.rodata')
|
||||
source_pos = asm_objfile.symtab.find_symbol(late_rodata_source_name)
|
||||
assert source_pos is not None and source_pos[0] == source.index
|
||||
source_pos = source_pos[1]
|
||||
new_data = list(target.data)
|
||||
for dummy_bytes in late_rodata:
|
||||
pos = target.data.index(dummy_bytes, last_rodata_pos)
|
||||
new_data[pos:pos+4] = source.data[source_pos:source_pos+4]
|
||||
moved_late_rodata[source_pos] = pos
|
||||
last_rodata_pos = pos + 4
|
||||
source_pos += 4
|
||||
target.data = bytes(new_data)
|
||||
|
||||
# Merge strtab data.
|
||||
strtab_adj = len(objfile.symtab.strtab.data)
|
||||
objfile.symtab.strtab.data += asm_objfile.symtab.strtab.data
|
||||
|
||||
# Find relocated symbols
|
||||
relocated_symbols = set()
|
||||
for sectype in SECTIONS:
|
||||
for obj in [asm_objfile, objfile]:
|
||||
sec = obj.find_section(sectype)
|
||||
if sec is None:
|
||||
continue
|
||||
for reltab in sec.relocated_by:
|
||||
for rel in reltab.relocations:
|
||||
relocated_symbols.add(obj.symtab.symbol_entries[rel.sym_index])
|
||||
|
||||
# Move over symbols, deleting the temporary function labels.
|
||||
# Sometimes this naive procedure results in duplicate symbols, or UNDEF
|
||||
# symbols that are also defined the same .o file. Hopefully that's fine.
|
||||
# Skip over local symbols that aren't used relocated against, to avoid
|
||||
# conflicts.
|
||||
new_local_syms = [s for s in objfile.symtab.local_symbols() if not is_temp_name(s.name)]
|
||||
new_global_syms = [s for s in objfile.symtab.global_symbols() if not is_temp_name(s.name)]
|
||||
for i, s in enumerate(asm_objfile.symtab.symbol_entries):
|
||||
is_local = (i < asm_objfile.symtab.sh_info)
|
||||
if is_local and s not in relocated_symbols:
|
||||
continue
|
||||
if is_temp_name(s.name):
|
||||
continue
|
||||
if s.st_shndx not in [SHN_UNDEF, SHN_ABS]:
|
||||
section_name = asm_objfile.sections[s.st_shndx].name
|
||||
assert section_name in SECTIONS, "Generated assembly .o must only have symbols for .text, .data, .rodata, ABS and UNDEF, but found {}".format(section_name)
|
||||
s.st_shndx = objfile.find_section(section_name).index
|
||||
# glabel's aren't marked as functions, making objdump output confusing. Fix that.
|
||||
if s.name in all_text_glabels:
|
||||
s.type = STT_FUNC
|
||||
if objfile.sections[s.st_shndx].name == '.rodata' and s.st_value in moved_late_rodata:
|
||||
s.st_value = moved_late_rodata[s.st_value]
|
||||
s.st_name += strtab_adj
|
||||
if is_local:
|
||||
new_local_syms.append(s)
|
||||
else:
|
||||
new_global_syms.append(s)
|
||||
new_syms = new_local_syms + new_global_syms
|
||||
for i, s in enumerate(new_syms):
|
||||
s.new_index = i
|
||||
objfile.symtab.data = b''.join(s.to_bin() for s in new_syms)
|
||||
objfile.symtab.sh_info = len(new_local_syms)
|
||||
|
||||
# Move over relocations
|
||||
for sectype in SECTIONS:
|
||||
source = asm_objfile.find_section(sectype)
|
||||
target = objfile.find_section(sectype)
|
||||
|
||||
if target is not None:
|
||||
# fixup relocation symbol indices, since we butchered them above
|
||||
for reltab in target.relocated_by:
|
||||
nrels = []
|
||||
for rel in reltab.relocations:
|
||||
if sectype == '.text' and rel.r_offset in modified_text_positions:
|
||||
# don't include relocations for late_rodata dummy code
|
||||
continue
|
||||
# hopefully we don't have relocations for local or
|
||||
# temporary symbols, so new_index exists
|
||||
rel.sym_index = objfile.symtab.symbol_entries[rel.sym_index].new_index
|
||||
nrels.append(rel)
|
||||
reltab.relocations = nrels
|
||||
reltab.data = b''.join(rel.to_bin() for rel in nrels)
|
||||
|
||||
if not source:
|
||||
continue
|
||||
|
||||
target_reltab = objfile.find_section('.rel' + sectype)
|
||||
target_reltaba = objfile.find_section('.rela' + sectype)
|
||||
for reltab in source.relocated_by:
|
||||
for rel in reltab.relocations:
|
||||
rel.sym_index = asm_objfile.symtab.symbol_entries[rel.sym_index].new_index
|
||||
if sectype == '.rodata' and rel.r_offset in moved_late_rodata:
|
||||
rel.r_offset = moved_late_rodata[rel.r_offset]
|
||||
new_data = b''.join(rel.to_bin() for rel in reltab.relocations)
|
||||
if reltab.sh_type == SHT_REL:
|
||||
if not target_reltab:
|
||||
target_reltab = objfile.add_section('.rel' + sectype,
|
||||
sh_type=SHT_REL, sh_flags=0,
|
||||
sh_link=objfile.symtab.index, sh_info=target.index,
|
||||
sh_addralign=4, sh_entsize=8, data=b'')
|
||||
target_reltab.data += new_data
|
||||
else:
|
||||
if not target_reltaba:
|
||||
target_reltaba = objfile.add_section('.rela' + sectype,
|
||||
sh_type=SHT_RELA, sh_flags=0,
|
||||
sh_link=objfile.symtab.index, sh_info=target.index,
|
||||
sh_addralign=4, sh_entsize=12, data=b'')
|
||||
target_reltaba.data += new_data
|
||||
|
||||
objfile.write(objfile_name)
|
||||
finally:
|
||||
s_file.close()
|
||||
os.remove(s_name)
|
||||
try:
|
||||
os.remove(o_name)
|
||||
except:
|
||||
pass
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Pre-process .c files and post-process .o files to enable embedding assembly into C.")
|
||||
parser.add_argument('filename', help="path to .c code")
|
||||
parser.add_argument('--post-process', dest='objfile', help="path to .o file to post-process")
|
||||
parser.add_argument('--assembler', dest='assembler', help="assembler command (e.g. \"mips-linux-gnu-as -march=vr4300 -mabi=32\")")
|
||||
parser.add_argument('--asm-prelude', dest='asm_prelude', help="path to a file containing a prelude to the assembly file (with .set and .macro directives, e.g.)")
|
||||
parser.add_argument('-framepointer', dest='framepointer', action='store_true')
|
||||
parser.add_argument('-g3', dest='g3', action='store_true')
|
||||
group = parser.add_mutually_exclusive_group(required=True)
|
||||
group.add_argument('-O2', dest='o2', action='store_true')
|
||||
group.add_argument('-g', dest='o2', action='store_false')
|
||||
args = parser.parse_args()
|
||||
opt = 'O2' if args.o2 else 'g'
|
||||
if args.g3:
|
||||
if opt != 'O2':
|
||||
print("-g3 is only supported together with -O2", file=sys.stderr)
|
||||
exit(1)
|
||||
opt = 'g3'
|
||||
|
||||
if args.objfile is None:
|
||||
with open(args.filename) as f:
|
||||
parse_source(f, print_source=True, opt=opt, framepointer=args.framepointer)
|
||||
else:
|
||||
assert args.assembler is not None, "must pass assembler command"
|
||||
with open(args.filename) as f:
|
||||
functions = parse_source(f, print_source=False, opt=opt, framepointer=args.framepointer)
|
||||
if not functions:
|
||||
return
|
||||
asm_prelude = b''
|
||||
if args.asm_prelude:
|
||||
with open(args.asm_prelude, 'rb') as f:
|
||||
asm_prelude = f.read()
|
||||
fixup_objfile(args.objfile, functions, asm_prelude, args.assembler)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -5,6 +5,8 @@ import shlex
|
|||
import subprocess
|
||||
import tempfile
|
||||
import uuid
|
||||
import sys
|
||||
sys.path.append("tools/asm_processor")
|
||||
import asm_processor
|
||||
|
||||
# Boolean for debugging purposes
|
||||
|
|
|
|||
|
|
@ -2580,10 +2580,10 @@ Variable Name | Memory Address
|
|||
[rspF3DBootStart](@ref rspF3DBootStart) | 0x800D8F70
|
||||
[rspF3DBootEnd](@ref rspF3DBootEnd) | 0x800D9040
|
||||
[gspF3DEXTextStart](@ref gspF3DEXTextStart) | 0x800D9040
|
||||
[gspF3DEXTextEnd](@ref gspF3DEXTextEnd) | 0x800DA420
|
||||
[gspF3DLXTextStart](@ref gspF3DLXTextStart) | 0x800DA420
|
||||
[gspF3DLXTextEnd](@ref gspF3DLXTextEnd) | 0x800DB830
|
||||
[gspF3DEXTextEnd](@ref gspF3DEXTextEnd) | 0x800DA420
|
||||
[rspAspMainStart](@ref rspAspMainStart) | 0x800DB830
|
||||
[gspF3DLXTextEnd](@ref gspF3DLXTextEnd) | 0x800DB830
|
||||
[rspAspMainEnd](@ref rspAspMainEnd) | 0x800DC4A0
|
||||
[gVblankHandler1](@ref gVblankHandler1) | 0x800DC4A0
|
||||
[gVblankHandler2](@ref gVblankHandler2) | 0x800DC4A4
|
||||
|
|
@ -3746,8 +3746,8 @@ Variable Name | Memory Address
|
|||
[gspF3DEXDataStart](@ref gspF3DEXDataStart) | 0x800F3D00
|
||||
[gspF3DEXDataEnd](@ref gspF3DEXDataEnd) | 0x800F4500
|
||||
[gspF3DLXDataStart](@ref gspF3DLXDataStart) | 0x800F4500
|
||||
[rspAspMainDataStart](@ref rspAspMainDataStart) | 0x800F4D00
|
||||
[gspF3DLXDataEnd](@ref gspF3DLXDataEnd) | 0x800F4D00
|
||||
[rspAspMainDataStart](@ref rspAspMainDataStart) | 0x800F4D00
|
||||
[rspAspMainDataEnd](@ref rspAspMainDataEnd) | 0x800F5000
|
||||
[sSawtoothWaves](@ref sSawtoothWaves) | 0x800F5000
|
||||
[sTriangleWaves](@ref sTriangleWaves) | 0x800F5200
|
||||
|
|
@ -18733,66 +18733,66 @@ Variable Name | Memory Address
|
|||
[gCosineTable](@ref gCosineTable) | 0x802BB370
|
||||
[gArctanTable](@ref gArctanTable) | 0x802BF370
|
||||
[gTextureMarioFace00](@ref gTextureMarioFace00) | 0x0A000000
|
||||
[gTextureMarioFace00_end](@ref gTextureMarioFace00_end) | 0x0A000CD4
|
||||
[gTextureMarioFace01](@ref gTextureMarioFace01) | 0x0A000CD4
|
||||
[gTextureMarioFace01_end](@ref gTextureMarioFace01_end) | 0x0A001994
|
||||
[gTextureMarioFace00_end](@ref gTextureMarioFace00_end) | 0x0A000CD4
|
||||
[gTextureMarioFace02](@ref gTextureMarioFace02) | 0x0A001994
|
||||
[gTextureMarioFace02_end](@ref gTextureMarioFace02_end) | 0x0A002650
|
||||
[gTextureMarioFace01_end](@ref gTextureMarioFace01_end) | 0x0A001994
|
||||
[gTextureMarioFace03](@ref gTextureMarioFace03) | 0x0A002650
|
||||
[gTextureMarioFace04](@ref gTextureMarioFace04) | 0x0A0032BC
|
||||
[gTextureMarioFace02_end](@ref gTextureMarioFace02_end) | 0x0A002650
|
||||
[gTextureMarioFace03_end](@ref gTextureMarioFace03_end) | 0x0A0032BC
|
||||
[gTextureMarioFace04_end](@ref gTextureMarioFace04_end) | 0x0A003F08
|
||||
[gTextureMarioFace04](@ref gTextureMarioFace04) | 0x0A0032BC
|
||||
[gTextureMarioFace05](@ref gTextureMarioFace05) | 0x0A003F08
|
||||
[gTextureMarioFace05_end](@ref gTextureMarioFace05_end) | 0x0A004B48
|
||||
[gTextureMarioFace04_end](@ref gTextureMarioFace04_end) | 0x0A003F08
|
||||
[gTextureMarioFace06](@ref gTextureMarioFace06) | 0x0A004B48
|
||||
[gTextureMarioFace05_end](@ref gTextureMarioFace05_end) | 0x0A004B48
|
||||
[gTextureMarioFace07](@ref gTextureMarioFace07) | 0x0A00585C
|
||||
[gTextureMarioFace06_end](@ref gTextureMarioFace06_end) | 0x0A00585C
|
||||
[gTextureMarioFace08](@ref gTextureMarioFace08) | 0x0A006568
|
||||
[gTextureMarioFace07_end](@ref gTextureMarioFace07_end) | 0x0A006568
|
||||
[gTextureMarioFace09](@ref gTextureMarioFace09) | 0x0A00726C
|
||||
[gTextureMarioFace08_end](@ref gTextureMarioFace08_end) | 0x0A00726C
|
||||
[gTextureMarioFace10](@ref gTextureMarioFace10) | 0x0A007F4C
|
||||
[gTextureMarioFace09](@ref gTextureMarioFace09) | 0x0A00726C
|
||||
[gTextureMarioFace09_end](@ref gTextureMarioFace09_end) | 0x0A007F4C
|
||||
[gTextureMarioFace10](@ref gTextureMarioFace10) | 0x0A007F4C
|
||||
[gTextureMarioFace11](@ref gTextureMarioFace11) | 0x0A008C48
|
||||
[gTextureMarioFace10_end](@ref gTextureMarioFace10_end) | 0x0A008C48
|
||||
[gTextureMarioFace12](@ref gTextureMarioFace12) | 0x0A009944
|
||||
[gTextureMarioFace11_end](@ref gTextureMarioFace11_end) | 0x0A009944
|
||||
[gTextureMarioFace12](@ref gTextureMarioFace12) | 0x0A009944
|
||||
[gTextureMarioFace13](@ref gTextureMarioFace13) | 0x0A00A688
|
||||
[gTextureMarioFace12_end](@ref gTextureMarioFace12_end) | 0x0A00A688
|
||||
[gTextureMarioFace13_end](@ref gTextureMarioFace13_end) | 0x0A00B3DC
|
||||
[gTextureMarioFace14](@ref gTextureMarioFace14) | 0x0A00B3DC
|
||||
[gTextureMarioFace14_end](@ref gTextureMarioFace14_end) | 0x0A00C180
|
||||
[gTextureMarioFace13_end](@ref gTextureMarioFace13_end) | 0x0A00B3DC
|
||||
[gTextureMarioFace15](@ref gTextureMarioFace15) | 0x0A00C180
|
||||
[gTextureMarioFace15_end](@ref gTextureMarioFace15_end) | 0x0A00CF20
|
||||
[gTextureMarioFace14_end](@ref gTextureMarioFace14_end) | 0x0A00C180
|
||||
[gTextureMarioFace16](@ref gTextureMarioFace16) | 0x0A00CF20
|
||||
[gTextureMarioFace15_end](@ref gTextureMarioFace15_end) | 0x0A00CF20
|
||||
[gTextureLuigiFace00](@ref gTextureLuigiFace00) | 0x0A00DA64
|
||||
[gTextureMarioFace16_end](@ref gTextureMarioFace16_end) | 0x0A00DA64
|
||||
[gTextureLuigiFace01](@ref gTextureLuigiFace01) | 0x0A00E680
|
||||
[gTextureLuigiFace00_end](@ref gTextureLuigiFace00_end) | 0x0A00E680
|
||||
[gTextureLuigiFace01](@ref gTextureLuigiFace01) | 0x0A00E680
|
||||
[gTextureLuigiFace01_end](@ref gTextureLuigiFace01_end) | 0x0A00F2A0
|
||||
[gTextureLuigiFace02](@ref gTextureLuigiFace02) | 0x0A00F2A0
|
||||
[gTextureLuigiFace02_end](@ref gTextureLuigiFace02_end) | 0x0A00FEC0
|
||||
[gTextureLuigiFace03](@ref gTextureLuigiFace03) | 0x0A00FEC0
|
||||
[gTextureLuigiFace02_end](@ref gTextureLuigiFace02_end) | 0x0A00FEC0
|
||||
[gTextureLuigiFace03_end](@ref gTextureLuigiFace03_end) | 0x0A010AA8
|
||||
[gTextureLuigiFace04](@ref gTextureLuigiFace04) | 0x0A010AA8
|
||||
[gTextureLuigiFace04_end](@ref gTextureLuigiFace04_end) | 0x0A011690
|
||||
[gTextureLuigiFace05](@ref gTextureLuigiFace05) | 0x0A011690
|
||||
[gTextureLuigiFace04_end](@ref gTextureLuigiFace04_end) | 0x0A011690
|
||||
[gTextureLuigiFace06](@ref gTextureLuigiFace06) | 0x0A01225C
|
||||
[gTextureLuigiFace05_end](@ref gTextureLuigiFace05_end) | 0x0A01225C
|
||||
[gTextureLuigiFace06_end](@ref gTextureLuigiFace06_end) | 0x0A012E84
|
||||
[gTextureLuigiFace07](@ref gTextureLuigiFace07) | 0x0A012E84
|
||||
[gTextureLuigiFace08](@ref gTextureLuigiFace08) | 0x0A013AB8
|
||||
[gTextureLuigiFace07_end](@ref gTextureLuigiFace07_end) | 0x0A013AB8
|
||||
[gTextureLuigiFace09](@ref gTextureLuigiFace09) | 0x0A014744
|
||||
[gTextureLuigiFace08](@ref gTextureLuigiFace08) | 0x0A013AB8
|
||||
[gTextureLuigiFace08_end](@ref gTextureLuigiFace08_end) | 0x0A014744
|
||||
[gTextureLuigiFace10](@ref gTextureLuigiFace10) | 0x0A0153C4
|
||||
[gTextureLuigiFace09](@ref gTextureLuigiFace09) | 0x0A014744
|
||||
[gTextureLuigiFace09_end](@ref gTextureLuigiFace09_end) | 0x0A0153C4
|
||||
[gTextureLuigiFace10_end](@ref gTextureLuigiFace10_end) | 0x0A016054
|
||||
[gTextureLuigiFace10](@ref gTextureLuigiFace10) | 0x0A0153C4
|
||||
[gTextureLuigiFace11](@ref gTextureLuigiFace11) | 0x0A016054
|
||||
[gTextureLuigiFace10_end](@ref gTextureLuigiFace10_end) | 0x0A016054
|
||||
[gTextureLuigiFace11_end](@ref gTextureLuigiFace11_end) | 0x0A016D14
|
||||
[gTextureLuigiFace12](@ref gTextureLuigiFace12) | 0x0A016D14
|
||||
[gTextureLuigiFace12_end](@ref gTextureLuigiFace12_end) | 0x0A017A44
|
||||
[gTextureLuigiFace13](@ref gTextureLuigiFace13) | 0x0A017A44
|
||||
[gTextureLuigiFace12_end](@ref gTextureLuigiFace12_end) | 0x0A017A44
|
||||
[gTextureLuigiFace14](@ref gTextureLuigiFace14) | 0x0A018770
|
||||
[gTextureLuigiFace13_end](@ref gTextureLuigiFace13_end) | 0x0A018770
|
||||
[gTextureLuigiFace15](@ref gTextureLuigiFace15) | 0x0A0194B8
|
||||
|
|
@ -18801,68 +18801,68 @@ Variable Name | Memory Address
|
|||
[gTextureLuigiFace16](@ref gTextureLuigiFace16) | 0x0A01A20C
|
||||
[gTextureLuigiFace16_end](@ref gTextureLuigiFace16_end) | 0x0A01AC44
|
||||
[gTexturePeachFace00](@ref gTexturePeachFace00) | 0x0A01AC44
|
||||
[gTexturePeachFace00_end](@ref gTexturePeachFace00_end) | 0x0A01BAFC
|
||||
[gTexturePeachFace01](@ref gTexturePeachFace01) | 0x0A01BAFC
|
||||
[gTexturePeachFace00_end](@ref gTexturePeachFace00_end) | 0x0A01BAFC
|
||||
[gTexturePeachFace01_end](@ref gTexturePeachFace01_end) | 0x0A01C9A8
|
||||
[gTexturePeachFace02](@ref gTexturePeachFace02) | 0x0A01C9A8
|
||||
[gTexturePeachFace02_end](@ref gTexturePeachFace02_end) | 0x0A01D864
|
||||
[gTexturePeachFace03](@ref gTexturePeachFace03) | 0x0A01D864
|
||||
[gTexturePeachFace02_end](@ref gTexturePeachFace02_end) | 0x0A01D864
|
||||
[gTexturePeachFace04](@ref gTexturePeachFace04) | 0x0A01E71C
|
||||
[gTexturePeachFace03_end](@ref gTexturePeachFace03_end) | 0x0A01E71C
|
||||
[gTexturePeachFace05](@ref gTexturePeachFace05) | 0x0A01F5A4
|
||||
[gTexturePeachFace04_end](@ref gTexturePeachFace04_end) | 0x0A01F5A4
|
||||
[gTexturePeachFace06](@ref gTexturePeachFace06) | 0x0A020444
|
||||
[gTexturePeachFace05](@ref gTexturePeachFace05) | 0x0A01F5A4
|
||||
[gTexturePeachFace05_end](@ref gTexturePeachFace05_end) | 0x0A020444
|
||||
[gTexturePeachFace07](@ref gTexturePeachFace07) | 0x0A02130C
|
||||
[gTexturePeachFace06](@ref gTexturePeachFace06) | 0x0A020444
|
||||
[gTexturePeachFace06_end](@ref gTexturePeachFace06_end) | 0x0A02130C
|
||||
[gTexturePeachFace07_end](@ref gTexturePeachFace07_end) | 0x0A0221FC
|
||||
[gTexturePeachFace07](@ref gTexturePeachFace07) | 0x0A02130C
|
||||
[gTexturePeachFace08](@ref gTexturePeachFace08) | 0x0A0221FC
|
||||
[gTexturePeachFace07_end](@ref gTexturePeachFace07_end) | 0x0A0221FC
|
||||
[gTexturePeachFace08_end](@ref gTexturePeachFace08_end) | 0x0A02310C
|
||||
[gTexturePeachFace09](@ref gTexturePeachFace09) | 0x0A02310C
|
||||
[gTexturePeachFace09_end](@ref gTexturePeachFace09_end) | 0x0A0240C0
|
||||
[gTexturePeachFace10](@ref gTexturePeachFace10) | 0x0A0240C0
|
||||
[gTexturePeachFace10_end](@ref gTexturePeachFace10_end) | 0x0A0250A4
|
||||
[gTexturePeachFace11](@ref gTexturePeachFace11) | 0x0A0250A4
|
||||
[gTexturePeachFace10_end](@ref gTexturePeachFace10_end) | 0x0A0250A4
|
||||
[gTexturePeachFace11_end](@ref gTexturePeachFace11_end) | 0x0A0260F0
|
||||
[gTexturePeachFace12](@ref gTexturePeachFace12) | 0x0A0260F0
|
||||
[gTexturePeachFace13](@ref gTexturePeachFace13) | 0x0A027128
|
||||
[gTexturePeachFace12_end](@ref gTexturePeachFace12_end) | 0x0A027128
|
||||
[gTexturePeachFace14](@ref gTexturePeachFace14) | 0x0A02810C
|
||||
[gTexturePeachFace13_end](@ref gTexturePeachFace13_end) | 0x0A02810C
|
||||
[gTexturePeachFace15](@ref gTexturePeachFace15) | 0x0A0290A0
|
||||
[gTexturePeachFace14](@ref gTexturePeachFace14) | 0x0A02810C
|
||||
[gTexturePeachFace14_end](@ref gTexturePeachFace14_end) | 0x0A0290A0
|
||||
[gTexturePeachFace15_end](@ref gTexturePeachFace15_end) | 0x0A02A028
|
||||
[gTexturePeachFace15](@ref gTexturePeachFace15) | 0x0A0290A0
|
||||
[gTexturePeachFace16](@ref gTexturePeachFace16) | 0x0A02A028
|
||||
[gTexturePeachFace15_end](@ref gTexturePeachFace15_end) | 0x0A02A028
|
||||
[gTexturePeachFace16_end](@ref gTexturePeachFace16_end) | 0x0A02AED0
|
||||
[gTextureToadFace00](@ref gTextureToadFace00) | 0x0A02AED0
|
||||
[gTextureToadFace00_end](@ref gTextureToadFace00_end) | 0x0A02B88C
|
||||
[gTextureToadFace01](@ref gTextureToadFace01) | 0x0A02B88C
|
||||
[gTextureToadFace00_end](@ref gTextureToadFace00_end) | 0x0A02B88C
|
||||
[gTextureToadFace02](@ref gTextureToadFace02) | 0x0A02C240
|
||||
[gTextureToadFace01_end](@ref gTextureToadFace01_end) | 0x0A02C240
|
||||
[gTextureToadFace02_end](@ref gTextureToadFace02_end) | 0x0A02CBFC
|
||||
[gTextureToadFace03](@ref gTextureToadFace03) | 0x0A02CBFC
|
||||
[gTextureToadFace03_end](@ref gTextureToadFace03_end) | 0x0A02D5B4
|
||||
[gTextureToadFace04](@ref gTextureToadFace04) | 0x0A02D5B4
|
||||
[gTextureToadFace05](@ref gTextureToadFace05) | 0x0A02DF70
|
||||
[gTextureToadFace03_end](@ref gTextureToadFace03_end) | 0x0A02D5B4
|
||||
[gTextureToadFace04_end](@ref gTextureToadFace04_end) | 0x0A02DF70
|
||||
[gTextureToadFace05](@ref gTextureToadFace05) | 0x0A02DF70
|
||||
[gTextureToadFace06](@ref gTextureToadFace06) | 0x0A02E910
|
||||
[gTextureToadFace05_end](@ref gTextureToadFace05_end) | 0x0A02E910
|
||||
[gTextureToadFace06_end](@ref gTextureToadFace06_end) | 0x0A02F2A8
|
||||
[gTextureToadFace07](@ref gTextureToadFace07) | 0x0A02F2A8
|
||||
[gTextureToadFace07_end](@ref gTextureToadFace07_end) | 0x0A02FC74
|
||||
[gTextureToadFace08](@ref gTextureToadFace08) | 0x0A02FC74
|
||||
[gTextureToadFace09](@ref gTextureToadFace09) | 0x0A030628
|
||||
[gTextureToadFace08_end](@ref gTextureToadFace08_end) | 0x0A030628
|
||||
[gTextureToadFace10](@ref gTextureToadFace10) | 0x0A031010
|
||||
[gTextureToadFace09](@ref gTextureToadFace09) | 0x0A030628
|
||||
[gTextureToadFace09_end](@ref gTextureToadFace09_end) | 0x0A031010
|
||||
[gTextureToadFace11](@ref gTextureToadFace11) | 0x0A031A24
|
||||
[gTextureToadFace10](@ref gTextureToadFace10) | 0x0A031010
|
||||
[gTextureToadFace10_end](@ref gTextureToadFace10_end) | 0x0A031A24
|
||||
[gTextureToadFace11](@ref gTextureToadFace11) | 0x0A031A24
|
||||
[gTextureToadFace12](@ref gTextureToadFace12) | 0x0A03247C
|
||||
[gTextureToadFace11_end](@ref gTextureToadFace11_end) | 0x0A03247C
|
||||
[gTextureToadFace13](@ref gTextureToadFace13) | 0x0A032EDC
|
||||
[gTextureToadFace12_end](@ref gTextureToadFace12_end) | 0x0A032EDC
|
||||
[gTextureToadFace14](@ref gTextureToadFace14) | 0x0A03395C
|
||||
[gTextureToadFace13_end](@ref gTextureToadFace13_end) | 0x0A03395C
|
||||
[gTextureToadFace14](@ref gTextureToadFace14) | 0x0A03395C
|
||||
[gTextureToadFace15](@ref gTextureToadFace15) | 0x0A0343D0
|
||||
[gTextureToadFace14_end](@ref gTextureToadFace14_end) | 0x0A0343D0
|
||||
[gTextureToadFace15_end](@ref gTextureToadFace15_end) | 0x0A034E30
|
||||
|
|
@ -18871,94 +18871,94 @@ Variable Name | Memory Address
|
|||
[gTextureToadFace16_end](@ref gTextureToadFace16_end) | 0x0A035794
|
||||
[gTextureYoshiFace00_end](@ref gTextureYoshiFace00_end) | 0x0A036280
|
||||
[gTextureYoshiFace01](@ref gTextureYoshiFace01) | 0x0A036280
|
||||
[gTextureYoshiFace01_end](@ref gTextureYoshiFace01_end) | 0x0A036D64
|
||||
[gTextureYoshiFace02](@ref gTextureYoshiFace02) | 0x0A036D64
|
||||
[gTextureYoshiFace02_end](@ref gTextureYoshiFace02_end) | 0x0A037844
|
||||
[gTextureYoshiFace01_end](@ref gTextureYoshiFace01_end) | 0x0A036D64
|
||||
[gTextureYoshiFace03](@ref gTextureYoshiFace03) | 0x0A037844
|
||||
[gTextureYoshiFace02_end](@ref gTextureYoshiFace02_end) | 0x0A037844
|
||||
[gTextureYoshiFace04](@ref gTextureYoshiFace04) | 0x0A0382F8
|
||||
[gTextureYoshiFace03_end](@ref gTextureYoshiFace03_end) | 0x0A0382F8
|
||||
[gTextureYoshiFace04_end](@ref gTextureYoshiFace04_end) | 0x0A038D68
|
||||
[gTextureYoshiFace05](@ref gTextureYoshiFace05) | 0x0A038D68
|
||||
[gTextureYoshiFace05_end](@ref gTextureYoshiFace05_end) | 0x0A0397B0
|
||||
[gTextureYoshiFace06](@ref gTextureYoshiFace06) | 0x0A0397B0
|
||||
[gTextureYoshiFace07](@ref gTextureYoshiFace07) | 0x0A03A2D4
|
||||
[gTextureYoshiFace06_end](@ref gTextureYoshiFace06_end) | 0x0A03A2D4
|
||||
[gTextureYoshiFace08](@ref gTextureYoshiFace08) | 0x0A03AD00
|
||||
[gTextureYoshiFace07](@ref gTextureYoshiFace07) | 0x0A03A2D4
|
||||
[gTextureYoshiFace07_end](@ref gTextureYoshiFace07_end) | 0x0A03AD00
|
||||
[gTextureYoshiFace08_end](@ref gTextureYoshiFace08_end) | 0x0A03B6BC
|
||||
[gTextureYoshiFace08](@ref gTextureYoshiFace08) | 0x0A03AD00
|
||||
[gTextureYoshiFace09](@ref gTextureYoshiFace09) | 0x0A03B6BC
|
||||
[gTextureYoshiFace09_end](@ref gTextureYoshiFace09_end) | 0x0A03C068
|
||||
[gTextureYoshiFace08_end](@ref gTextureYoshiFace08_end) | 0x0A03B6BC
|
||||
[gTextureYoshiFace10](@ref gTextureYoshiFace10) | 0x0A03C068
|
||||
[gTextureYoshiFace10_end](@ref gTextureYoshiFace10_end) | 0x0A03CA28
|
||||
[gTextureYoshiFace09_end](@ref gTextureYoshiFace09_end) | 0x0A03C068
|
||||
[gTextureYoshiFace11](@ref gTextureYoshiFace11) | 0x0A03CA28
|
||||
[gTextureYoshiFace12](@ref gTextureYoshiFace12) | 0x0A03D438
|
||||
[gTextureYoshiFace10_end](@ref gTextureYoshiFace10_end) | 0x0A03CA28
|
||||
[gTextureYoshiFace11_end](@ref gTextureYoshiFace11_end) | 0x0A03D438
|
||||
[gTextureYoshiFace13](@ref gTextureYoshiFace13) | 0x0A03DE94
|
||||
[gTextureYoshiFace12](@ref gTextureYoshiFace12) | 0x0A03D438
|
||||
[gTextureYoshiFace12_end](@ref gTextureYoshiFace12_end) | 0x0A03DE94
|
||||
[gTextureYoshiFace13](@ref gTextureYoshiFace13) | 0x0A03DE94
|
||||
[gTextureYoshiFace14](@ref gTextureYoshiFace14) | 0x0A03E974
|
||||
[gTextureYoshiFace13_end](@ref gTextureYoshiFace13_end) | 0x0A03E974
|
||||
[gTextureYoshiFace14_end](@ref gTextureYoshiFace14_end) | 0x0A03F47C
|
||||
[gTextureYoshiFace15](@ref gTextureYoshiFace15) | 0x0A03F47C
|
||||
[gTextureYoshiFace14_end](@ref gTextureYoshiFace14_end) | 0x0A03F47C
|
||||
[gTextureYoshiFace15_end](@ref gTextureYoshiFace15_end) | 0x0A03FF94
|
||||
[gTextureYoshiFace16](@ref gTextureYoshiFace16) | 0x0A03FF94
|
||||
[gTextureYoshiFace16_end](@ref gTextureYoshiFace16_end) | 0x0A040ABC
|
||||
[gTextureDkFace00](@ref gTextureDkFace00) | 0x0A040ABC
|
||||
[gTextureDkFace00_end](@ref gTextureDkFace00_end) | 0x0A0418A8
|
||||
[gTextureDkFace01](@ref gTextureDkFace01) | 0x0A0418A8
|
||||
[gTextureDkFace02](@ref gTextureDkFace02) | 0x0A0426B0
|
||||
[gTextureDkFace00_end](@ref gTextureDkFace00_end) | 0x0A0418A8
|
||||
[gTextureDkFace01_end](@ref gTextureDkFace01_end) | 0x0A0426B0
|
||||
[gTextureDkFace03](@ref gTextureDkFace03) | 0x0A043490
|
||||
[gTextureDkFace02](@ref gTextureDkFace02) | 0x0A0426B0
|
||||
[gTextureDkFace02_end](@ref gTextureDkFace02_end) | 0x0A043490
|
||||
[gTextureDkFace04](@ref gTextureDkFace04) | 0x0A044240
|
||||
[gTextureDkFace03](@ref gTextureDkFace03) | 0x0A043490
|
||||
[gTextureDkFace03_end](@ref gTextureDkFace03_end) | 0x0A044240
|
||||
[gTextureDkFace04](@ref gTextureDkFace04) | 0x0A044240
|
||||
[gTextureDkFace05](@ref gTextureDkFace05) | 0x0A044FE8
|
||||
[gTextureDkFace04_end](@ref gTextureDkFace04_end) | 0x0A044FE8
|
||||
[gTextureDkFace05_end](@ref gTextureDkFace05_end) | 0x0A045DCC
|
||||
[gTextureDkFace06](@ref gTextureDkFace06) | 0x0A045DCC
|
||||
[gTextureDkFace05_end](@ref gTextureDkFace05_end) | 0x0A045DCC
|
||||
[gTextureDkFace06_end](@ref gTextureDkFace06_end) | 0x0A046BF8
|
||||
[gTextureDkFace07](@ref gTextureDkFace07) | 0x0A046BF8
|
||||
[gTextureDkFace07_end](@ref gTextureDkFace07_end) | 0x0A047A8C
|
||||
[gTextureDkFace08](@ref gTextureDkFace08) | 0x0A047A8C
|
||||
[gTextureDkFace08_end](@ref gTextureDkFace08_end) | 0x0A048968
|
||||
[gTextureDkFace07_end](@ref gTextureDkFace07_end) | 0x0A047A8C
|
||||
[gTextureDkFace09](@ref gTextureDkFace09) | 0x0A048968
|
||||
[gTextureDkFace08_end](@ref gTextureDkFace08_end) | 0x0A048968
|
||||
[gTextureDkFace10](@ref gTextureDkFace10) | 0x0A0498B0
|
||||
[gTextureDkFace09_end](@ref gTextureDkFace09_end) | 0x0A0498B0
|
||||
[gTextureDkFace10_end](@ref gTextureDkFace10_end) | 0x0A04A7E8
|
||||
[gTextureDkFace11](@ref gTextureDkFace11) | 0x0A04A7E8
|
||||
[gTextureDkFace11_end](@ref gTextureDkFace11_end) | 0x0A04B76C
|
||||
[gTextureDkFace12](@ref gTextureDkFace12) | 0x0A04B76C
|
||||
[gTextureDkFace11_end](@ref gTextureDkFace11_end) | 0x0A04B76C
|
||||
[gTextureDkFace13](@ref gTextureDkFace13) | 0x0A04C770
|
||||
[gTextureDkFace12_end](@ref gTextureDkFace12_end) | 0x0A04C770
|
||||
[gTextureDkFace13_end](@ref gTextureDkFace13_end) | 0x0A04D730
|
||||
[gTextureDkFace14](@ref gTextureDkFace14) | 0x0A04D730
|
||||
[gTextureDkFace14_end](@ref gTextureDkFace14_end) | 0x0A04E67C
|
||||
[gTextureDkFace15](@ref gTextureDkFace15) | 0x0A04E67C
|
||||
[gTextureDkFace16](@ref gTextureDkFace16) | 0x0A04F57C
|
||||
[gTextureDkFace14_end](@ref gTextureDkFace14_end) | 0x0A04E67C
|
||||
[gTextureDkFace15_end](@ref gTextureDkFace15_end) | 0x0A04F57C
|
||||
[gTextureDkFace16_end](@ref gTextureDkFace16_end) | 0x0A0504D0
|
||||
[gTextureDkFace16](@ref gTextureDkFace16) | 0x0A04F57C
|
||||
[gTextureWarioFace00](@ref gTextureWarioFace00) | 0x0A0504D0
|
||||
[gTextureWarioFace01](@ref gTextureWarioFace01) | 0x0A051630
|
||||
[gTextureDkFace16_end](@ref gTextureDkFace16_end) | 0x0A0504D0
|
||||
[gTextureWarioFace00_end](@ref gTextureWarioFace00_end) | 0x0A051630
|
||||
[gTextureWarioFace01](@ref gTextureWarioFace01) | 0x0A051630
|
||||
[gTextureWarioFace01_end](@ref gTextureWarioFace01_end) | 0x0A052774
|
||||
[gTextureWarioFace02](@ref gTextureWarioFace02) | 0x0A052774
|
||||
[gTextureWarioFace03](@ref gTextureWarioFace03) | 0x0A0538C8
|
||||
[gTextureWarioFace02_end](@ref gTextureWarioFace02_end) | 0x0A0538C8
|
||||
[gTextureWarioFace04](@ref gTextureWarioFace04) | 0x0A054A30
|
||||
[gTextureWarioFace03_end](@ref gTextureWarioFace03_end) | 0x0A054A30
|
||||
[gTextureWarioFace04](@ref gTextureWarioFace04) | 0x0A054A30
|
||||
[gTextureWarioFace05](@ref gTextureWarioFace05) | 0x0A055B84
|
||||
[gTextureWarioFace04_end](@ref gTextureWarioFace04_end) | 0x0A055B84
|
||||
[gTextureWarioFace05_end](@ref gTextureWarioFace05_end) | 0x0A056CE0
|
||||
[gTextureWarioFace06](@ref gTextureWarioFace06) | 0x0A056CE0
|
||||
[gTextureWarioFace06_end](@ref gTextureWarioFace06_end) | 0x0A057E54
|
||||
[gTextureWarioFace07](@ref gTextureWarioFace07) | 0x0A057E54
|
||||
[gTextureWarioFace07_end](@ref gTextureWarioFace07_end) | 0x0A05902C
|
||||
[gTextureWarioFace06_end](@ref gTextureWarioFace06_end) | 0x0A057E54
|
||||
[gTextureWarioFace08](@ref gTextureWarioFace08) | 0x0A05902C
|
||||
[gTextureWarioFace07_end](@ref gTextureWarioFace07_end) | 0x0A05902C
|
||||
[gTextureWarioFace09](@ref gTextureWarioFace09) | 0x0A05A254
|
||||
[gTextureWarioFace08_end](@ref gTextureWarioFace08_end) | 0x0A05A254
|
||||
[gTextureWarioFace09_end](@ref gTextureWarioFace09_end) | 0x0A05B4C0
|
||||
[gTextureWarioFace10](@ref gTextureWarioFace10) | 0x0A05B4C0
|
||||
[gTextureWarioFace11](@ref gTextureWarioFace11) | 0x0A05C7A0
|
||||
[gTextureWarioFace10_end](@ref gTextureWarioFace10_end) | 0x0A05C7A0
|
||||
[gTextureWarioFace11](@ref gTextureWarioFace11) | 0x0A05C7A0
|
||||
[gTextureWarioFace11_end](@ref gTextureWarioFace11_end) | 0x0A05DAA8
|
||||
[gTextureWarioFace12](@ref gTextureWarioFace12) | 0x0A05DAA8
|
||||
[gTextureWarioFace12_end](@ref gTextureWarioFace12_end) | 0x0A05ED8C
|
||||
|
|
@ -18967,34 +18967,34 @@ Variable Name | Memory Address
|
|||
[gTextureWarioFace14](@ref gTextureWarioFace14) | 0x0A0600B0
|
||||
[gTextureWarioFace14_end](@ref gTextureWarioFace14_end) | 0x0A06139C
|
||||
[gTextureWarioFace15](@ref gTextureWarioFace15) | 0x0A06139C
|
||||
[gTextureWarioFace16](@ref gTextureWarioFace16) | 0x0A062668
|
||||
[gTextureWarioFace15_end](@ref gTextureWarioFace15_end) | 0x0A062668
|
||||
[gTextureWarioFace16](@ref gTextureWarioFace16) | 0x0A062668
|
||||
[gTextureWarioFace16_end](@ref gTextureWarioFace16_end) | 0x0A0637E0
|
||||
[gTextureBowserFace00](@ref gTextureBowserFace00) | 0x0A0637E0
|
||||
[gTextureBowserFace00_end](@ref gTextureBowserFace00_end) | 0x0A064AC8
|
||||
[gTextureBowserFace01](@ref gTextureBowserFace01) | 0x0A064AC8
|
||||
[gTextureBowserFace01_end](@ref gTextureBowserFace01_end) | 0x0A065D7C
|
||||
[gTextureBowserFace02](@ref gTextureBowserFace02) | 0x0A065D7C
|
||||
[gTextureBowserFace02_end](@ref gTextureBowserFace02_end) | 0x0A067044
|
||||
[gTextureBowserFace01_end](@ref gTextureBowserFace01_end) | 0x0A065D7C
|
||||
[gTextureBowserFace03](@ref gTextureBowserFace03) | 0x0A067044
|
||||
[gTextureBowserFace02_end](@ref gTextureBowserFace02_end) | 0x0A067044
|
||||
[gTextureBowserFace03_end](@ref gTextureBowserFace03_end) | 0x0A068310
|
||||
[gTextureBowserFace04](@ref gTextureBowserFace04) | 0x0A068310
|
||||
[gTextureBowserFace05](@ref gTextureBowserFace05) | 0x0A0695B4
|
||||
[gTextureBowserFace04_end](@ref gTextureBowserFace04_end) | 0x0A0695B4
|
||||
[gTextureBowserFace05](@ref gTextureBowserFace05) | 0x0A0695B4
|
||||
[gTextureBowserFace06](@ref gTextureBowserFace06) | 0x0A06A840
|
||||
[gTextureBowserFace05_end](@ref gTextureBowserFace05_end) | 0x0A06A840
|
||||
[gTextureBowserFace07](@ref gTextureBowserFace07) | 0x0A06BB1C
|
||||
[gTextureBowserFace06_end](@ref gTextureBowserFace06_end) | 0x0A06BB1C
|
||||
[gTextureBowserFace07](@ref gTextureBowserFace07) | 0x0A06BB1C
|
||||
[gTextureBowserFace08](@ref gTextureBowserFace08) | 0x0A06CE04
|
||||
[gTextureBowserFace07_end](@ref gTextureBowserFace07_end) | 0x0A06CE04
|
||||
[gTextureBowserFace08_end](@ref gTextureBowserFace08_end) | 0x0A06E0F4
|
||||
[gTextureBowserFace09](@ref gTextureBowserFace09) | 0x0A06E0F4
|
||||
[gTextureBowserFace08_end](@ref gTextureBowserFace08_end) | 0x0A06E0F4
|
||||
[gTextureBowserFace09_end](@ref gTextureBowserFace09_end) | 0x0A06F410
|
||||
[gTextureBowserFace10](@ref gTextureBowserFace10) | 0x0A06F410
|
||||
[gTextureBowserFace10_end](@ref gTextureBowserFace10_end) | 0x0A0706DC
|
||||
[gTextureBowserFace11](@ref gTextureBowserFace11) | 0x0A0706DC
|
||||
[gTextureBowserFace12](@ref gTextureBowserFace12) | 0x0A071A18
|
||||
[gTextureBowserFace11_end](@ref gTextureBowserFace11_end) | 0x0A071A18
|
||||
[gTextureBowserFace12](@ref gTextureBowserFace12) | 0x0A071A18
|
||||
[gTextureBowserFace13](@ref gTextureBowserFace13) | 0x0A072DBC
|
||||
[gTextureBowserFace12_end](@ref gTextureBowserFace12_end) | 0x0A072DBC
|
||||
[gTextureBowserFace14](@ref gTextureBowserFace14) | 0x0A074138
|
||||
|
|
@ -19029,12 +19029,12 @@ Variable Name | Memory Address
|
|||
[gTextureTrophySilver](@ref gTextureTrophySilver) | 0x0A0AEFEC
|
||||
[gTextureTrophySilver_end](@ref gTextureTrophySilver_end) | 0x0A0AF614
|
||||
[gTextureTrophyBronze](@ref gTextureTrophyBronze) | 0x0A0AF614
|
||||
[gTextureTrophyBronze_end](@ref gTextureTrophyBronze_end) | 0x0A0AFC00
|
||||
[gTextureCupGold](@ref gTextureCupGold) | 0x0A0AFC00
|
||||
[gTextureTrophyBronze_end](@ref gTextureTrophyBronze_end) | 0x0A0AFC00
|
||||
[gTextureCupSilver](@ref gTextureCupSilver) | 0x0A0B058C
|
||||
[gTextureCupGold_end](@ref gTextureCupGold_end) | 0x0A0B058C
|
||||
[gTextureCupSilver_end](@ref gTextureCupSilver_end) | 0x0A0B0F10
|
||||
[gTextureCupBronze](@ref gTextureCupBronze) | 0x0A0B0F10
|
||||
[gTextureCupSilver_end](@ref gTextureCupSilver_end) | 0x0A0B0F10
|
||||
[gTextureCupBronze_end](@ref gTextureCupBronze_end) | 0x0A0B17B4
|
||||
[gTexturePushStartButton](@ref gTexturePushStartButton) | 0x0A0B17B4
|
||||
[gTextureCopyright1996](@ref gTextureCopyright1996) | 0x0A0B2B94
|
||||
|
|
@ -19046,16 +19046,16 @@ Variable Name | Memory Address
|
|||
[gTexture7E56E4](@ref gTexture7E56E4) | 0x0A0BBCB4
|
||||
[gTexture7E56E4_end](@ref gTexture7E56E4_end) | 0x0A0BCE1F
|
||||
[gTextureSmallFont0](@ref gTextureSmallFont0) | 0x0A0BCE20
|
||||
[gTextureSmallFont0_end](@ref gTextureSmallFont0_end) | 0x0A0BCEB0
|
||||
[gTextureSmallFont1](@ref gTextureSmallFont1) | 0x0A0BCEB0
|
||||
[gTextureSmallFont0_end](@ref gTextureSmallFont0_end) | 0x0A0BCEB0
|
||||
[gTextureSmallFont2](@ref gTextureSmallFont2) | 0x0A0BCF08
|
||||
[gTextureSmallFont1_end](@ref gTextureSmallFont1_end) | 0x0A0BCF08
|
||||
[gTextureSmallFont3](@ref gTextureSmallFont3) | 0x0A0BCFA0
|
||||
[gTextureSmallFont2_end](@ref gTextureSmallFont2_end) | 0x0A0BCFA0
|
||||
[gTextureSmallFont3](@ref gTextureSmallFont3) | 0x0A0BCFA0
|
||||
[gTextureSmallFont3_end](@ref gTextureSmallFont3_end) | 0x0A0BD034
|
||||
[gTextureSmallFont4](@ref gTextureSmallFont4) | 0x0A0BD034
|
||||
[gTextureSmallFont4_end](@ref gTextureSmallFont4_end) | 0x0A0BD0BC
|
||||
[gTextureSmallFont5](@ref gTextureSmallFont5) | 0x0A0BD0BC
|
||||
[gTextureSmallFont4_end](@ref gTextureSmallFont4_end) | 0x0A0BD0BC
|
||||
[gTextureSmallFont6](@ref gTextureSmallFont6) | 0x0A0BD154
|
||||
[gTextureSmallFont5_end](@ref gTextureSmallFont5_end) | 0x0A0BD154
|
||||
[gTextureSmallFont6_end](@ref gTextureSmallFont6_end) | 0x0A0BD1F0
|
||||
|
|
@ -19064,52 +19064,52 @@ Variable Name | Memory Address
|
|||
[gTextureSmallFont7_end](@ref gTextureSmallFont7_end) | 0x0A0BD260
|
||||
[gTextureSmallFont9](@ref gTextureSmallFont9) | 0x0A0BD2F0
|
||||
[gTextureSmallFont8_end](@ref gTextureSmallFont8_end) | 0x0A0BD2F0
|
||||
[gTextureN64ControllerPakDataSelect](@ref gTextureN64ControllerPakDataSelect) | 0x0A0BD390
|
||||
[gTextureSmallFont9_end](@ref gTextureSmallFont9_end) | 0x0A0BD390
|
||||
[gTextureEraseDataRecordConfirmation](@ref gTextureEraseDataRecordConfirmation) | 0x0A0BE4B8
|
||||
[gTextureN64ControllerPakDataSelect](@ref gTextureN64ControllerPakDataSelect) | 0x0A0BD390
|
||||
[gTextureN64ControllerPakDataSelect_end](@ref gTextureN64ControllerPakDataSelect_end) | 0x0A0BE4B8
|
||||
[gTextureEraseDataRecordConfirmation](@ref gTextureEraseDataRecordConfirmation) | 0x0A0BE4B8
|
||||
[gTextureEraseDataRecordConfirmation_end](@ref gTextureEraseDataRecordConfirmation_end) | 0x0A0BF4AC
|
||||
[gTextureRecordNotErased](@ref gTextureRecordNotErased) | 0x0A0BF4AC
|
||||
[gTexturePlaceN64ControllerPakIntoController1](@ref gTexturePlaceN64ControllerPakIntoController1) | 0x0A0BFD7C
|
||||
[gTextureRecordNotErased_end](@ref gTextureRecordNotErased_end) | 0x0A0BFD7C
|
||||
[gTexturePleaseReinsertOriginalN64ControllerPak](@ref gTexturePleaseReinsertOriginalN64ControllerPak) | 0x0A0C09C8
|
||||
[gTexturePlaceN64ControllerPakIntoController1](@ref gTexturePlaceN64ControllerPakIntoController1) | 0x0A0BFD7C
|
||||
[gTexturePlaceN64ControllerPakIntoController1_end](@ref gTexturePlaceN64ControllerPakIntoController1_end) | 0x0A0C09C8
|
||||
[gTexturePleaseReinsertOriginalN64ControllerPak_end](@ref gTexturePleaseReinsertOriginalN64ControllerPak_end) | 0x0A0C16A0
|
||||
[gTexturePleaseReinsertOriginalN64ControllerPak](@ref gTexturePleaseReinsertOriginalN64ControllerPak) | 0x0A0C09C8
|
||||
[gTextureErasingSelectedRecord](@ref gTextureErasingSelectedRecord) | 0x0A0C16A0
|
||||
[gTexturePleaseReinsertOriginalN64ControllerPak_end](@ref gTexturePleaseReinsertOriginalN64ControllerPak_end) | 0x0A0C16A0
|
||||
[gTextureSelectRecord](@ref gTextureSelectRecord) | 0x0A0C22A4
|
||||
[gTextureErasingSelectedRecord_end](@ref gTextureErasingSelectedRecord_end) | 0x0A0C22A4
|
||||
[gTextureTextEnd](@ref gTextureTextEnd) | 0x0A0C261C
|
||||
[gTextureSelectRecord_end](@ref gTextureSelectRecord_end) | 0x0A0C261C
|
||||
[gTextureTextEnd_end](@ref gTextureTextEnd_end) | 0x0A0C274C
|
||||
[gTextureTableOfContents](@ref gTextureTableOfContents) | 0x0A0C274C
|
||||
[gTextureTableOfContents_end](@ref gTextureTableOfContents_end) | 0x0A0C2B78
|
||||
[gTextureTextEnd_end](@ref gTextureTextEnd_end) | 0x0A0C274C
|
||||
[gTextureTextHash](@ref gTextureTextHash) | 0x0A0C2B78
|
||||
[gTextureTableOfContents_end](@ref gTextureTableOfContents_end) | 0x0A0C2B78
|
||||
[gTextureTextHash_end](@ref gTextureTextHash_end) | 0x0A0C2BF8
|
||||
[gTextureTextGameData](@ref gTextureTextGameData) | 0x0A0C2BF8
|
||||
[gTextureTextPages](@ref gTextureTextPages) | 0x0A0C2EBC
|
||||
[gTextureTextGameData_end](@ref gTextureTextGameData_end) | 0x0A0C2EBC
|
||||
[gTextureTextPagesFree](@ref gTextureTextPagesFree) | 0x0A0C307C
|
||||
[gTextureTextPages](@ref gTextureTextPages) | 0x0A0C2EBC
|
||||
[gTextureTextPages_end](@ref gTextureTextPages_end) | 0x0A0C307C
|
||||
[gTextureTextPagesFree](@ref gTextureTextPagesFree) | 0x0A0C307C
|
||||
[gTextureTextPagesFree_end](@ref gTextureTextPagesFree_end) | 0x0A0C3340
|
||||
[gTextureTextErase](@ref gTextureTextErase) | 0x0A0C3340
|
||||
[gTextureTextErase_end](@ref gTextureTextErase_end) | 0x0A0C34E0
|
||||
[gTextureTextQuit](@ref gTextureTextQuit) | 0x0A0C34E0
|
||||
[gTextureTextErase_end](@ref gTextureTextErase_end) | 0x0A0C34E0
|
||||
[gTextureTextQuit_end](@ref gTextureTextQuit_end) | 0x0A0C3628
|
||||
[gTexture7ED058](@ref gTexture7ED058) | 0x0A0C3628
|
||||
[gTexture7ED290](@ref gTexture7ED290) | 0x0A0C3860
|
||||
[gTexture7ED058_end](@ref gTexture7ED058_end) | 0x0A0C3860
|
||||
[gTexture7ED50C](@ref gTexture7ED50C) | 0x0A0C3ADC
|
||||
[gTexture7ED290_end](@ref gTexture7ED290_end) | 0x0A0C3ADC
|
||||
[gTexture7ED6A4](@ref gTexture7ED6A4) | 0x0A0C3C74
|
||||
[gTexture7ED50C_end](@ref gTexture7ED50C_end) | 0x0A0C3C74
|
||||
[gTextureTinyFont0](@ref gTextureTinyFont0) | 0x0A0C4004
|
||||
[gTexture7ED6A4](@ref gTexture7ED6A4) | 0x0A0C3C74
|
||||
[gTexture7ED6A4_end](@ref gTexture7ED6A4_end) | 0x0A0C4004
|
||||
[gTextureTinyFont0](@ref gTextureTinyFont0) | 0x0A0C4004
|
||||
[gTextureTinyFont0_end](@ref gTextureTinyFont0_end) | 0x0A0C4078
|
||||
[gTextureTinyFont1](@ref gTextureTinyFont1) | 0x0A0C4078
|
||||
[gTextureTinyFont1_end](@ref gTextureTinyFont1_end) | 0x0A0C40C0
|
||||
[gTextureTinyFont2](@ref gTextureTinyFont2) | 0x0A0C40C0
|
||||
[gTextureTinyFont3](@ref gTextureTinyFont3) | 0x0A0C4134
|
||||
[gTextureTinyFont2_end](@ref gTextureTinyFont2_end) | 0x0A0C4134
|
||||
[gTextureTinyFont3](@ref gTextureTinyFont3) | 0x0A0C4134
|
||||
[gTextureTinyFont3_end](@ref gTextureTinyFont3_end) | 0x0A0C41A4
|
||||
[gTextureTinyFont4](@ref gTextureTinyFont4) | 0x0A0C41A4
|
||||
[gTextureTinyFont5](@ref gTextureTinyFont5) | 0x0A0C4200
|
||||
|
|
@ -19120,70 +19120,70 @@ Variable Name | Memory Address
|
|||
[gTextureTinyFont7](@ref gTextureTinyFont7) | 0x0A0C42E8
|
||||
[gTextureTinyFont8](@ref gTextureTinyFont8) | 0x0A0C4348
|
||||
[gTextureTinyFont7_end](@ref gTextureTinyFont7_end) | 0x0A0C4348
|
||||
[gTextureTinyFont9](@ref gTextureTinyFont9) | 0x0A0C43C0
|
||||
[gTextureTinyFont8_end](@ref gTextureTinyFont8_end) | 0x0A0C43C0
|
||||
[gTextureTinyFont9_end](@ref gTextureTinyFont9_end) | 0x0A0C4434
|
||||
[gTextureTinyFont9](@ref gTextureTinyFont9) | 0x0A0C43C0
|
||||
[gTextureTinyFontA](@ref gTextureTinyFontA) | 0x0A0C4434
|
||||
[gTextureTinyFont9_end](@ref gTextureTinyFont9_end) | 0x0A0C4434
|
||||
[gTextureTinyFontA_end](@ref gTextureTinyFontA_end) | 0x0A0C44A0
|
||||
[gTextureTinyFontB](@ref gTextureTinyFontB) | 0x0A0C44A0
|
||||
[gTextureTinyFontC](@ref gTextureTinyFontC) | 0x0A0C451C
|
||||
[gTextureTinyFontB_end](@ref gTextureTinyFontB_end) | 0x0A0C451C
|
||||
[gTextureTinyFontD](@ref gTextureTinyFontD) | 0x0A0C4590
|
||||
[gTextureTinyFontC_end](@ref gTextureTinyFontC_end) | 0x0A0C4590
|
||||
[gTextureTinyFontE](@ref gTextureTinyFontE) | 0x0A0C4600
|
||||
[gTextureTinyFontD_end](@ref gTextureTinyFontD_end) | 0x0A0C4600
|
||||
[gTextureTinyFontF](@ref gTextureTinyFontF) | 0x0A0C4674
|
||||
[gTextureTinyFontE](@ref gTextureTinyFontE) | 0x0A0C4600
|
||||
[gTextureTinyFontE_end](@ref gTextureTinyFontE_end) | 0x0A0C4674
|
||||
[gTextureTinyFontG](@ref gTextureTinyFontG) | 0x0A0C46D8
|
||||
[gTextureTinyFontF](@ref gTextureTinyFontF) | 0x0A0C4674
|
||||
[gTextureTinyFontF_end](@ref gTextureTinyFontF_end) | 0x0A0C46D8
|
||||
[gTextureTinyFontH](@ref gTextureTinyFontH) | 0x0A0C474C
|
||||
[gTextureTinyFontG](@ref gTextureTinyFontG) | 0x0A0C46D8
|
||||
[gTextureTinyFontG_end](@ref gTextureTinyFontG_end) | 0x0A0C474C
|
||||
[gTextureTinyFontH_end](@ref gTextureTinyFontH_end) | 0x0A0C47C4
|
||||
[gTextureTinyFontH](@ref gTextureTinyFontH) | 0x0A0C474C
|
||||
[gTextureTinyFontI](@ref gTextureTinyFontI) | 0x0A0C47C4
|
||||
[gTextureTinyFontI_end](@ref gTextureTinyFontI_end) | 0x0A0C480C
|
||||
[gTextureTinyFontH_end](@ref gTextureTinyFontH_end) | 0x0A0C47C4
|
||||
[gTextureTinyFontJ](@ref gTextureTinyFontJ) | 0x0A0C480C
|
||||
[gTextureTinyFontI_end](@ref gTextureTinyFontI_end) | 0x0A0C480C
|
||||
[gTextureTinyFontK](@ref gTextureTinyFontK) | 0x0A0C4860
|
||||
[gTextureTinyFontJ_end](@ref gTextureTinyFontJ_end) | 0x0A0C4860
|
||||
[gTextureTinyFontL](@ref gTextureTinyFontL) | 0x0A0C48D0
|
||||
[gTextureTinyFontK_end](@ref gTextureTinyFontK_end) | 0x0A0C48D0
|
||||
[gTextureTinyFontM](@ref gTextureTinyFontM) | 0x0A0C491C
|
||||
[gTextureTinyFontL](@ref gTextureTinyFontL) | 0x0A0C48D0
|
||||
[gTextureTinyFontL_end](@ref gTextureTinyFontL_end) | 0x0A0C491C
|
||||
[gTextureTinyFontN](@ref gTextureTinyFontN) | 0x0A0C4998
|
||||
[gTextureTinyFontM](@ref gTextureTinyFontM) | 0x0A0C491C
|
||||
[gTextureTinyFontM_end](@ref gTextureTinyFontM_end) | 0x0A0C4998
|
||||
[gTextureTinyFontN_end](@ref gTextureTinyFontN_end) | 0x0A0C4A14
|
||||
[gTextureTinyFontN](@ref gTextureTinyFontN) | 0x0A0C4998
|
||||
[gTextureTinyFontO](@ref gTextureTinyFontO) | 0x0A0C4A14
|
||||
[gTextureTinyFontP](@ref gTextureTinyFontP) | 0x0A0C4A8C
|
||||
[gTextureTinyFontN_end](@ref gTextureTinyFontN_end) | 0x0A0C4A14
|
||||
[gTextureTinyFontO_end](@ref gTextureTinyFontO_end) | 0x0A0C4A8C
|
||||
[gTextureTinyFontP_end](@ref gTextureTinyFontP_end) | 0x0A0C4AF8
|
||||
[gTextureTinyFontP](@ref gTextureTinyFontP) | 0x0A0C4A8C
|
||||
[gTextureTinyFontQ](@ref gTextureTinyFontQ) | 0x0A0C4AF8
|
||||
[gTextureTinyFontP_end](@ref gTextureTinyFontP_end) | 0x0A0C4AF8
|
||||
[gTextureTinyFontQ_end](@ref gTextureTinyFontQ_end) | 0x0A0C4B70
|
||||
[gTextureTinyFontR](@ref gTextureTinyFontR) | 0x0A0C4B70
|
||||
[gTextureTinyFontR_end](@ref gTextureTinyFontR_end) | 0x0A0C4BE4
|
||||
[gTextureTinyFontS](@ref gTextureTinyFontS) | 0x0A0C4BE4
|
||||
[gTextureTinyFontS_end](@ref gTextureTinyFontS_end) | 0x0A0C4C54
|
||||
[gTextureTinyFontT](@ref gTextureTinyFontT) | 0x0A0C4C54
|
||||
[gTextureTinyFontS_end](@ref gTextureTinyFontS_end) | 0x0A0C4C54
|
||||
[gTextureTinyFontU](@ref gTextureTinyFontU) | 0x0A0C4CA8
|
||||
[gTextureTinyFontT_end](@ref gTextureTinyFontT_end) | 0x0A0C4CA8
|
||||
[gTextureTinyFontV](@ref gTextureTinyFontV) | 0x0A0C4D0C
|
||||
[gTextureTinyFontU_end](@ref gTextureTinyFontU_end) | 0x0A0C4D0C
|
||||
[gTextureTinyFontV](@ref gTextureTinyFontV) | 0x0A0C4D0C
|
||||
[gTextureTinyFontW](@ref gTextureTinyFontW) | 0x0A0C4D6C
|
||||
[gTextureTinyFontV_end](@ref gTextureTinyFontV_end) | 0x0A0C4D6C
|
||||
[gTextureTinyFontX](@ref gTextureTinyFontX) | 0x0A0C4DE8
|
||||
[gTextureTinyFontW_end](@ref gTextureTinyFontW_end) | 0x0A0C4DE8
|
||||
[gTextureTinyFontX](@ref gTextureTinyFontX) | 0x0A0C4DE8
|
||||
[gTextureTinyFontX_end](@ref gTextureTinyFontX_end) | 0x0A0C4E54
|
||||
[gTextureTinyFontY](@ref gTextureTinyFontY) | 0x0A0C4E54
|
||||
[gTextureTinyFontY_end](@ref gTextureTinyFontY_end) | 0x0A0C4EA4
|
||||
[gTextureTinyFontZ](@ref gTextureTinyFontZ) | 0x0A0C4EA4
|
||||
[gTextureTinyFontExclamationMark](@ref gTextureTinyFontExclamationMark) | 0x0A0C4F0C
|
||||
[gTextureTinyFontZ_end](@ref gTextureTinyFontZ_end) | 0x0A0C4F0C
|
||||
[gTextureTinyFontExclamationMark](@ref gTextureTinyFontExclamationMark) | 0x0A0C4F0C
|
||||
[gTextureTinyFontDoubleQuote](@ref gTextureTinyFontDoubleQuote) | 0x0A0C4F54
|
||||
[gTextureTinyFontExclamationMark_end](@ref gTextureTinyFontExclamationMark_end) | 0x0A0C4F54
|
||||
[gTextureTinyFontDoubleQuote_end](@ref gTextureTinyFontDoubleQuote_end) | 0x0A0C4F8C
|
||||
[gTextureTinyFontHash](@ref gTextureTinyFontHash) | 0x0A0C4F8C
|
||||
[gTextureTinyFontDoubleQuote_end](@ref gTextureTinyFontDoubleQuote_end) | 0x0A0C4F8C
|
||||
[gTextureTinyFontHash_end](@ref gTextureTinyFontHash_end) | 0x0A0C4FFC
|
||||
[gTextureTinyFontSingleQuote](@ref gTextureTinyFontSingleQuote) | 0x0A0C4FFC
|
||||
[gTextureTinyFontAsterisk](@ref gTextureTinyFontAsterisk) | 0x0A0C502C
|
||||
[gTextureTinyFontSingleQuote_end](@ref gTextureTinyFontSingleQuote_end) | 0x0A0C502C
|
||||
[gTextureTinyFontAsterisk](@ref gTextureTinyFontAsterisk) | 0x0A0C502C
|
||||
[gTextureTinyFontPlus](@ref gTextureTinyFontPlus) | 0x0A0C5098
|
||||
[gTextureTinyFontAsterisk_end](@ref gTextureTinyFontAsterisk_end) | 0x0A0C5098
|
||||
[gTextureTinyFontPlus_end](@ref gTextureTinyFontPlus_end) | 0x0A0C50E8
|
||||
|
|
@ -19194,60 +19194,60 @@ Variable Name | Memory Address
|
|||
[gTextureTinyFontMinus_end](@ref gTextureTinyFontMinus_end) | 0x0A0C514C
|
||||
[gTextureTinyFontForwardSlash](@ref gTextureTinyFontForwardSlash) | 0x0A0C517C
|
||||
[gTextureTinyFontComma_end](@ref gTextureTinyFontComma_end) | 0x0A0C517C
|
||||
[gTextureTinyFontForwardSlash_end](@ref gTextureTinyFontForwardSlash_end) | 0x0A0C51CC
|
||||
[gTextureTinyFontColon](@ref gTextureTinyFontColon) | 0x0A0C51CC
|
||||
[gTextureTinyFontColon_end](@ref gTextureTinyFontColon_end) | 0x0A0C5204
|
||||
[gTextureTinyFontForwardSlash_end](@ref gTextureTinyFontForwardSlash_end) | 0x0A0C51CC
|
||||
[gTexture7EEC34](@ref gTexture7EEC34) | 0x0A0C5204
|
||||
[gTextureTinyFontQuestion](@ref gTextureTinyFontQuestion) | 0x0A0C5254
|
||||
[gTextureTinyFontColon_end](@ref gTextureTinyFontColon_end) | 0x0A0C5204
|
||||
[gTexture7EEC34_end](@ref gTexture7EEC34_end) | 0x0A0C5254
|
||||
[gTexture7EECE4](@ref gTexture7EECE4) | 0x0A0C52B4
|
||||
[gTextureTinyFontQuestion](@ref gTextureTinyFontQuestion) | 0x0A0C5254
|
||||
[gTextureTinyFontQuestion_end](@ref gTextureTinyFontQuestion_end) | 0x0A0C52B4
|
||||
[gTexture7EECE4](@ref gTexture7EECE4) | 0x0A0C52B4
|
||||
[gTexture7EECE4_end](@ref gTexture7EECE4_end) | 0x0A0C5344
|
||||
[gTexture7EED74](@ref gTexture7EED74) | 0x0A0C5344
|
||||
[gTexture7EED74_end](@ref gTexture7EED74_end) | 0x0A0C5380
|
||||
[gTexture7EEDB0](@ref gTexture7EEDB0) | 0x0A0C5380
|
||||
[gTexture7EEDB0_end](@ref gTexture7EEDB0_end) | 0x0A0C53B8
|
||||
[gTexture7EED74_end](@ref gTexture7EED74_end) | 0x0A0C5380
|
||||
[gTexture7EEDE8](@ref gTexture7EEDE8) | 0x0A0C53B8
|
||||
[gTexture7EEE20](@ref gTexture7EEE20) | 0x0A0C53F0
|
||||
[gTexture7EEDB0_end](@ref gTexture7EEDB0_end) | 0x0A0C53B8
|
||||
[gTexture7EEDE8_end](@ref gTexture7EEDE8_end) | 0x0A0C53F0
|
||||
[gTexture7EEE20](@ref gTexture7EEE20) | 0x0A0C53F0
|
||||
[gTexture7EEE7C](@ref gTexture7EEE7C) | 0x0A0C544C
|
||||
[gTexture7EEE20_end](@ref gTexture7EEE20_end) | 0x0A0C544C
|
||||
[gTexture7EEE7C_end](@ref gTexture7EEE7C_end) | 0x0A0C54A0
|
||||
[gTexture7EEED0](@ref gTexture7EEED0) | 0x0A0C54A0
|
||||
[gTexture7EEED0_end](@ref gTexture7EEED0_end) | 0x0A0C550C
|
||||
[gTexture7EEE7C_end](@ref gTexture7EEE7C_end) | 0x0A0C54A0
|
||||
[gTexture7EEF3C](@ref gTexture7EEF3C) | 0x0A0C550C
|
||||
[gTexture7EEF90](@ref gTexture7EEF90) | 0x0A0C5560
|
||||
[gTexture7EEED0_end](@ref gTexture7EEED0_end) | 0x0A0C550C
|
||||
[gTexture7EEF3C_end](@ref gTexture7EEF3C_end) | 0x0A0C5560
|
||||
[gTexture7EEFF4](@ref gTexture7EEFF4) | 0x0A0C55C4
|
||||
[gTexture7EEF90](@ref gTexture7EEF90) | 0x0A0C5560
|
||||
[gTexture7EEF90_end](@ref gTexture7EEF90_end) | 0x0A0C55C4
|
||||
[gTexture7EEFF4_end](@ref gTexture7EEFF4_end) | 0x0A0C5628
|
||||
[gTexture7EEFF4](@ref gTexture7EEFF4) | 0x0A0C55C4
|
||||
[gTexture7EF058](@ref gTexture7EF058) | 0x0A0C5628
|
||||
[gTexture7EF0B4](@ref gTexture7EF0B4) | 0x0A0C5684
|
||||
[gTexture7EEFF4_end](@ref gTexture7EEFF4_end) | 0x0A0C5628
|
||||
[gTexture7EF058_end](@ref gTexture7EF058_end) | 0x0A0C5684
|
||||
[gTexture7EF110](@ref gTexture7EF110) | 0x0A0C56E0
|
||||
[gTexture7EF0B4](@ref gTexture7EF0B4) | 0x0A0C5684
|
||||
[gTexture7EF0B4_end](@ref gTexture7EF0B4_end) | 0x0A0C56E0
|
||||
[gTexture7EF110](@ref gTexture7EF110) | 0x0A0C56E0
|
||||
[gTexture7EF17C](@ref gTexture7EF17C) | 0x0A0C574C
|
||||
[gTexture7EF110_end](@ref gTexture7EF110_end) | 0x0A0C574C
|
||||
[gTexture7EF1F0](@ref gTexture7EF1F0) | 0x0A0C57C0
|
||||
[gTexture7EF17C_end](@ref gTexture7EF17C_end) | 0x0A0C57C0
|
||||
[gTexture7EF250](@ref gTexture7EF250) | 0x0A0C5820
|
||||
[gTexture7EF1F0](@ref gTexture7EF1F0) | 0x0A0C57C0
|
||||
[gTexture7EF1F0_end](@ref gTexture7EF1F0_end) | 0x0A0C5820
|
||||
[gTexture7EF250_end](@ref gTexture7EF250_end) | 0x0A0C5888
|
||||
[gTexture7EF250](@ref gTexture7EF250) | 0x0A0C5820
|
||||
[gTexture7EF2B8](@ref gTexture7EF2B8) | 0x0A0C5888
|
||||
[gTexture7EF250_end](@ref gTexture7EF250_end) | 0x0A0C5888
|
||||
[gTexture7EF314](@ref gTexture7EF314) | 0x0A0C58E4
|
||||
[gTexture7EF2B8_end](@ref gTexture7EF2B8_end) | 0x0A0C58E4
|
||||
[gTexture7EF388](@ref gTexture7EF388) | 0x0A0C5958
|
||||
[gTexture7EF314_end](@ref gTexture7EF314_end) | 0x0A0C5958
|
||||
[gTexture7EF388_end](@ref gTexture7EF388_end) | 0x0A0C59C8
|
||||
[gTexture7EF3F8](@ref gTexture7EF3F8) | 0x0A0C59C8
|
||||
[gTexture7EF3F8_end](@ref gTexture7EF3F8_end) | 0x0A0C5A40
|
||||
[gTexture7EF470](@ref gTexture7EF470) | 0x0A0C5A40
|
||||
[gTexture7EF4E4](@ref gTexture7EF4E4) | 0x0A0C5AB4
|
||||
[gTexture7EF3F8_end](@ref gTexture7EF3F8_end) | 0x0A0C5A40
|
||||
[gTexture7EF470_end](@ref gTexture7EF470_end) | 0x0A0C5AB4
|
||||
[gTexture7EF4E4](@ref gTexture7EF4E4) | 0x0A0C5AB4
|
||||
[gTexture7EF554](@ref gTexture7EF554) | 0x0A0C5B24
|
||||
[gTexture7EF4E4_end](@ref gTexture7EF4E4_end) | 0x0A0C5B24
|
||||
[gTexture7EF554_end](@ref gTexture7EF554_end) | 0x0A0C5B90
|
||||
[gTexture7EF5C0](@ref gTexture7EF5C0) | 0x0A0C5B90
|
||||
[gTexture7EF554_end](@ref gTexture7EF554_end) | 0x0A0C5B90
|
||||
[gTexture7EF620](@ref gTexture7EF620) | 0x0A0C5BF0
|
||||
[gTexture7EF5C0_end](@ref gTexture7EF5C0_end) | 0x0A0C5BF0
|
||||
[gTexture7EF620_end](@ref gTexture7EF620_end) | 0x0A0C5C64
|
||||
|
|
@ -19258,20 +19258,20 @@ Variable Name | Memory Address
|
|||
[gTexture7EF77C](@ref gTexture7EF77C) | 0x0A0C5D4C
|
||||
[gTexture7EF7E8](@ref gTexture7EF7E8) | 0x0A0C5DB8
|
||||
[gTexture7EF77C_end](@ref gTexture7EF77C_end) | 0x0A0C5DB8
|
||||
[gTexture7EF7E8_end](@ref gTexture7EF7E8_end) | 0x0A0C5E2C
|
||||
[gTexture7EF85C](@ref gTexture7EF85C) | 0x0A0C5E2C
|
||||
[gTexture7EF7E8_end](@ref gTexture7EF7E8_end) | 0x0A0C5E2C
|
||||
[gTexture7EF8C8](@ref gTexture7EF8C8) | 0x0A0C5E98
|
||||
[gTexture7EF85C_end](@ref gTexture7EF85C_end) | 0x0A0C5E98
|
||||
[gTexture7EF93C](@ref gTexture7EF93C) | 0x0A0C5F0C
|
||||
[gTexture7EF8C8_end](@ref gTexture7EF8C8_end) | 0x0A0C5F0C
|
||||
[gTexture7EF93C_end](@ref gTexture7EF93C_end) | 0x0A0C5F84
|
||||
[gTexture7EF9B4](@ref gTexture7EF9B4) | 0x0A0C5F84
|
||||
[gTexture7EF9B4_end](@ref gTexture7EF9B4_end) | 0x0A0C5FFC
|
||||
[gTexture7EF93C_end](@ref gTexture7EF93C_end) | 0x0A0C5F84
|
||||
[gTexture7EFA2C](@ref gTexture7EFA2C) | 0x0A0C5FFC
|
||||
[gTexture7EF9B4_end](@ref gTexture7EF9B4_end) | 0x0A0C5FFC
|
||||
[gTexture7EFA2C_end](@ref gTexture7EFA2C_end) | 0x0A0C6078
|
||||
[gTexture7EFAA8](@ref gTexture7EFAA8) | 0x0A0C6078
|
||||
[gTexture7EFB00](@ref gTexture7EFB00) | 0x0A0C60D0
|
||||
[gTexture7EFAA8_end](@ref gTexture7EFAA8_end) | 0x0A0C60D0
|
||||
[gTexture7EFB00](@ref gTexture7EFB00) | 0x0A0C60D0
|
||||
[gTexture7EFB00_end](@ref gTexture7EFB00_end) | 0x0A0C6134
|
||||
[gTexture7EFB64](@ref gTexture7EFB64) | 0x0A0C6134
|
||||
[gTexture7EFB64_end](@ref gTexture7EFB64_end) | 0x0A0C618C
|
||||
|
|
@ -19282,68 +19282,68 @@ Variable Name | Memory Address
|
|||
[gTexture7EFCAC](@ref gTexture7EFCAC) | 0x0A0C627C
|
||||
[gTexture7EFD00](@ref gTexture7EFD00) | 0x0A0C62D0
|
||||
[gTexture7EFCAC_end](@ref gTexture7EFCAC_end) | 0x0A0C62D0
|
||||
[gTexture7EFD00_end](@ref gTexture7EFD00_end) | 0x0A0C6330
|
||||
[gTexture7EFD60](@ref gTexture7EFD60) | 0x0A0C6330
|
||||
[gTexture7EFD00_end](@ref gTexture7EFD00_end) | 0x0A0C6330
|
||||
[gTexture7EFDD4](@ref gTexture7EFDD4) | 0x0A0C63A4
|
||||
[gTexture7EFD60_end](@ref gTexture7EFD60_end) | 0x0A0C63A4
|
||||
[gTexture7EFE48](@ref gTexture7EFE48) | 0x0A0C6418
|
||||
[gTexture7EFDD4_end](@ref gTexture7EFDD4_end) | 0x0A0C6418
|
||||
[gTexture7EFE48_end](@ref gTexture7EFE48_end) | 0x0A0C6470
|
||||
[gTexture7EFEA0](@ref gTexture7EFEA0) | 0x0A0C6470
|
||||
[gTexture7EFF2C](@ref gTexture7EFF2C) | 0x0A0C64FC
|
||||
[gTexture7EFEA0_end](@ref gTexture7EFEA0_end) | 0x0A0C64FC
|
||||
[gTexture7EFF90](@ref gTexture7EFF90) | 0x0A0C6560
|
||||
[gTexture7EFF2C](@ref gTexture7EFF2C) | 0x0A0C64FC
|
||||
[gTexture7EFF2C_end](@ref gTexture7EFF2C_end) | 0x0A0C6560
|
||||
[gTexture7F0000](@ref gTexture7F0000) | 0x0A0C65D0
|
||||
[gTexture7EFF90](@ref gTexture7EFF90) | 0x0A0C6560
|
||||
[gTexture7EFF90_end](@ref gTexture7EFF90_end) | 0x0A0C65D0
|
||||
[gTexture7F0000_end](@ref gTexture7F0000_end) | 0x0A0C663C
|
||||
[gTexture7F0000](@ref gTexture7F0000) | 0x0A0C65D0
|
||||
[gTexture7F006C](@ref gTexture7F006C) | 0x0A0C663C
|
||||
[gTexture7F0000_end](@ref gTexture7F0000_end) | 0x0A0C663C
|
||||
[gTexture7F00D8](@ref gTexture7F00D8) | 0x0A0C66A8
|
||||
[gTexture7F006C_end](@ref gTexture7F006C_end) | 0x0A0C66A8
|
||||
[gTexture7F00D8_end](@ref gTexture7F00D8_end) | 0x0A0C6728
|
||||
[gTexture7F0158](@ref gTexture7F0158) | 0x0A0C6728
|
||||
[gTexture7F01D0](@ref gTexture7F01D0) | 0x0A0C67A0
|
||||
[gTexture7F0158_end](@ref gTexture7F0158_end) | 0x0A0C67A0
|
||||
[gTexture7F023C](@ref gTexture7F023C) | 0x0A0C680C
|
||||
[gTexture7F01D0_end](@ref gTexture7F01D0_end) | 0x0A0C680C
|
||||
[gTexture7F02B4](@ref gTexture7F02B4) | 0x0A0C6884
|
||||
[gTexture7F023C](@ref gTexture7F023C) | 0x0A0C680C
|
||||
[gTexture7F023C_end](@ref gTexture7F023C_end) | 0x0A0C6884
|
||||
[gTexture7F02B4](@ref gTexture7F02B4) | 0x0A0C6884
|
||||
[gTexture7F02B4_end](@ref gTexture7F02B4_end) | 0x0A0C68FC
|
||||
[gTexture7F032C](@ref gTexture7F032C) | 0x0A0C68FC
|
||||
[gTexture7F0390](@ref gTexture7F0390) | 0x0A0C6960
|
||||
[gTexture7F032C_end](@ref gTexture7F032C_end) | 0x0A0C6960
|
||||
[gTexture7F0390](@ref gTexture7F0390) | 0x0A0C6960
|
||||
[gTexture7F0404](@ref gTexture7F0404) | 0x0A0C69D4
|
||||
[gTexture7F0390_end](@ref gTexture7F0390_end) | 0x0A0C69D4
|
||||
[gTexture7F0470](@ref gTexture7F0470) | 0x0A0C6A40
|
||||
[gTexture7F0404_end](@ref gTexture7F0404_end) | 0x0A0C6A40
|
||||
[gTexture7F04EC](@ref gTexture7F04EC) | 0x0A0C6ABC
|
||||
[gTexture7F0470_end](@ref gTexture7F0470_end) | 0x0A0C6ABC
|
||||
[gTexture7F055C](@ref gTexture7F055C) | 0x0A0C6B2C
|
||||
[gTexture7F04EC](@ref gTexture7F04EC) | 0x0A0C6ABC
|
||||
[gTexture7F04EC_end](@ref gTexture7F04EC_end) | 0x0A0C6B2C
|
||||
[gTexture7F055C_end](@ref gTexture7F055C_end) | 0x0A0C6BC0
|
||||
[gTexture7F055C](@ref gTexture7F055C) | 0x0A0C6B2C
|
||||
[gTexture7F05F0](@ref gTexture7F05F0) | 0x0A0C6BC0
|
||||
[gTexture7F055C_end](@ref gTexture7F055C_end) | 0x0A0C6BC0
|
||||
[gTexture7F0670](@ref gTexture7F0670) | 0x0A0C6C40
|
||||
[gTexture7F05F0_end](@ref gTexture7F05F0_end) | 0x0A0C6C40
|
||||
[gTexture7F0670_end](@ref gTexture7F0670_end) | 0x0A0C6CBC
|
||||
[gTexture7F06EC](@ref gTexture7F06EC) | 0x0A0C6CBC
|
||||
[gTexture7F0670_end](@ref gTexture7F0670_end) | 0x0A0C6CBC
|
||||
[gTexture7F06EC_end](@ref gTexture7F06EC_end) | 0x0A0C6D38
|
||||
[gTexture7F0768](@ref gTexture7F0768) | 0x0A0C6D38
|
||||
[gTexture7F0768_end](@ref gTexture7F0768_end) | 0x0A0C6DB0
|
||||
[gTexture7F07E0](@ref gTexture7F07E0) | 0x0A0C6DB0
|
||||
[gTexture7F0768_end](@ref gTexture7F0768_end) | 0x0A0C6DB0
|
||||
[gTexture7F07E0_end](@ref gTexture7F07E0_end) | 0x0A0C6E28
|
||||
[gTexture7F0858](@ref gTexture7F0858) | 0x0A0C6E28
|
||||
[gTexture7F0858_end](@ref gTexture7F0858_end) | 0x0A0C6EA8
|
||||
[gTexture7F08D8](@ref gTexture7F08D8) | 0x0A0C6EA8
|
||||
[gTexture7F0858_end](@ref gTexture7F0858_end) | 0x0A0C6EA8
|
||||
[gTexture7F0948](@ref gTexture7F0948) | 0x0A0C6F18
|
||||
[gTexture7F08D8_end](@ref gTexture7F08D8_end) | 0x0A0C6F18
|
||||
[gTexture7F09D0](@ref gTexture7F09D0) | 0x0A0C6FA0
|
||||
[gTexture7F0948_end](@ref gTexture7F0948_end) | 0x0A0C6FA0
|
||||
[gTexture7F09D0](@ref gTexture7F09D0) | 0x0A0C6FA0
|
||||
[gTexture7F09D0_end](@ref gTexture7F09D0_end) | 0x0A0C700C
|
||||
[gTexture7F0A3C](@ref gTexture7F0A3C) | 0x0A0C700C
|
||||
[gTexture7F0A3C_end](@ref gTexture7F0A3C_end) | 0x0A0C708C
|
||||
[gTexture7F0ABC](@ref gTexture7F0ABC) | 0x0A0C708C
|
||||
[gTexture7F0ABC_end](@ref gTexture7F0ABC_end) | 0x0A0C7104
|
||||
[gTexture7F0B34](@ref gTexture7F0B34) | 0x0A0C7104
|
||||
[gTexture7F0ABC_end](@ref gTexture7F0ABC_end) | 0x0A0C7104
|
||||
[gTexture7F0B34_end](@ref gTexture7F0B34_end) | 0x0A0C7180
|
||||
[gTexture7F0BB0](@ref gTexture7F0BB0) | 0x0A0C7180
|
||||
[gTexture7F0BB0_end](@ref gTexture7F0BB0_end) | 0x0A0C71F4
|
||||
|
|
@ -19352,24 +19352,24 @@ Variable Name | Memory Address
|
|||
[gTexture7F0C24_end](@ref gTexture7F0C24_end) | 0x0A0C7264
|
||||
[gTexture7F0C94_end](@ref gTexture7F0C94_end) | 0x0A0C72DC
|
||||
[gTexture7F0D0C](@ref gTexture7F0D0C) | 0x0A0C72DC
|
||||
[gTexture7F0D0C_end](@ref gTexture7F0D0C_end) | 0x0A0C735C
|
||||
[gTexture7F0D8C](@ref gTexture7F0D8C) | 0x0A0C735C
|
||||
[gTexture7F0DEC](@ref gTexture7F0DEC) | 0x0A0C73BC
|
||||
[gTexture7F0D0C_end](@ref gTexture7F0D0C_end) | 0x0A0C735C
|
||||
[gTexture7F0D8C_end](@ref gTexture7F0D8C_end) | 0x0A0C73BC
|
||||
[gTexture7F0DEC](@ref gTexture7F0DEC) | 0x0A0C73BC
|
||||
[gTexture7F0E5C](@ref gTexture7F0E5C) | 0x0A0C742C
|
||||
[gTexture7F0DEC_end](@ref gTexture7F0DEC_end) | 0x0A0C742C
|
||||
[gTexture7F0E5C_end](@ref gTexture7F0E5C_end) | 0x0A0C74B4
|
||||
[gTexture7F0EE4](@ref gTexture7F0EE4) | 0x0A0C74B4
|
||||
[gTexture7F0F5C](@ref gTexture7F0F5C) | 0x0A0C752C
|
||||
[gTexture7F0E5C_end](@ref gTexture7F0E5C_end) | 0x0A0C74B4
|
||||
[gTexture7F0EE4_end](@ref gTexture7F0EE4_end) | 0x0A0C752C
|
||||
[gTexture7F0F5C_end](@ref gTexture7F0F5C_end) | 0x0A0C75A8
|
||||
[gTexture7F0F5C](@ref gTexture7F0F5C) | 0x0A0C752C
|
||||
[gTexture7F0FD8](@ref gTexture7F0FD8) | 0x0A0C75A8
|
||||
[gTexture7F0F5C_end](@ref gTexture7F0F5C_end) | 0x0A0C75A8
|
||||
[gTexture7F0FD8_end](@ref gTexture7F0FD8_end) | 0x0A0C7608
|
||||
[gTexture7F1038](@ref gTexture7F1038) | 0x0A0C7608
|
||||
[gTexture7F109C](@ref gTexture7F109C) | 0x0A0C766C
|
||||
[gTexture7F1038_end](@ref gTexture7F1038_end) | 0x0A0C766C
|
||||
[gTexture7F109C_end](@ref gTexture7F109C_end) | 0x0A0C76F4
|
||||
[gTexture7F109C](@ref gTexture7F109C) | 0x0A0C766C
|
||||
[gTexture7F1124](@ref gTexture7F1124) | 0x0A0C76F4
|
||||
[gTexture7F109C_end](@ref gTexture7F109C_end) | 0x0A0C76F4
|
||||
[gTexture7F11F4](@ref gTexture7F11F4) | 0x0A0C77C4
|
||||
[gTexture7F12C4](@ref gTexture7F12C4) | 0x0A0C7894
|
||||
[gTexture7F1394](@ref gTexture7F1394) | 0x0A0C7964
|
||||
|
|
@ -19607,54 +19607,54 @@ Variable Name | Memory Address
|
|||
[gTexturePlayerSelect](@ref gTexturePlayerSelect) | 0x0B000000
|
||||
[gTexturePlayerSelect_end](@ref gTexturePlayerSelect_end) | 0x0B000C00
|
||||
[gTextureOption](@ref gTextureOption) | 0x0B000C00
|
||||
[gTextureNameDK](@ref gTextureNameDK) | 0x0B001500
|
||||
[gTextureOption_end](@ref gTextureOption_end) | 0x0B001500
|
||||
[gTextureNameDK_end](@ref gTextureNameDK_end) | 0x0B001700
|
||||
[gTextureNameDK](@ref gTextureNameDK) | 0x0B001500
|
||||
[gTextureNameToad](@ref gTextureNameToad) | 0x0B001700
|
||||
[gTextureNameDK_end](@ref gTextureNameDK_end) | 0x0B001700
|
||||
[gTextureNameToad_end](@ref gTextureNameToad_end) | 0x0B001900
|
||||
[gTextureNameBowser](@ref gTextureNameBowser) | 0x0B001900
|
||||
[gTextureNameBowser_end](@ref gTextureNameBowser_end) | 0x0B001B00
|
||||
[gTextureNameLuigi](@ref gTextureNameLuigi) | 0x0B001B00
|
||||
[gTextureNameMario](@ref gTextureNameMario) | 0x0B001D00
|
||||
[gTextureNameBowser_end](@ref gTextureNameBowser_end) | 0x0B001B00
|
||||
[gTextureNameLuigi_end](@ref gTextureNameLuigi_end) | 0x0B001D00
|
||||
[gTextureNamePeach](@ref gTextureNamePeach) | 0x0B001F00
|
||||
[gTextureNameMario](@ref gTextureNameMario) | 0x0B001D00
|
||||
[gTextureNameMario_end](@ref gTextureNameMario_end) | 0x0B001F00
|
||||
[gTextureNameWario](@ref gTextureNameWario) | 0x0B002100
|
||||
[gTextureNamePeach](@ref gTextureNamePeach) | 0x0B001F00
|
||||
[gTextureNamePeach_end](@ref gTextureNamePeach_end) | 0x0B002100
|
||||
[gTextureNameWario](@ref gTextureNameWario) | 0x0B002100
|
||||
[gTextureNameYoshi](@ref gTextureNameYoshi) | 0x0B002300
|
||||
[gTextureNameWario_end](@ref gTextureNameWario_end) | 0x0B002300
|
||||
[gTextureNameYoshi_end](@ref gTextureNameYoshi_end) | 0x0B002500
|
||||
[gTextureTitleMarioRaceway](@ref gTextureTitleMarioRaceway) | 0x0B002500
|
||||
[gTextureNameYoshi_end](@ref gTextureNameYoshi_end) | 0x0B002500
|
||||
[gTextureTitleChocoMountain](@ref gTextureTitleChocoMountain) | 0x0B002A00
|
||||
[gTextureTitleMarioRaceway_end](@ref gTextureTitleMarioRaceway_end) | 0x0B002A00
|
||||
[gTextureTitleChocoMountain_end](@ref gTextureTitleChocoMountain_end) | 0x0B002F00
|
||||
[gTextureTitleBowsersCastle](@ref gTextureTitleBowsersCastle) | 0x0B002F00
|
||||
[gTextureTitleChocoMountain_end](@ref gTextureTitleChocoMountain_end) | 0x0B002F00
|
||||
[gTextureTitleBowsersCastle_end](@ref gTextureTitleBowsersCastle_end) | 0x0B003400
|
||||
[gTextureTitleBansheeBoardwalk](@ref gTextureTitleBansheeBoardwalk) | 0x0B003400
|
||||
[gTextureTitleBansheeBoardwalk_end](@ref gTextureTitleBansheeBoardwalk_end) | 0x0B003A00
|
||||
[gTextureTitleYoshiValley](@ref gTextureTitleYoshiValley) | 0x0B003A00
|
||||
[gTextureTitleBansheeBoardwalk_end](@ref gTextureTitleBansheeBoardwalk_end) | 0x0B003A00
|
||||
[gTextureTitleYoshiValley_end](@ref gTextureTitleYoshiValley_end) | 0x0B003E00
|
||||
[gTextureTitleFrappeSnowland](@ref gTextureTitleFrappeSnowland) | 0x0B003E00
|
||||
[gTextureTitleKoopaTroopaBeach](@ref gTextureTitleKoopaTroopaBeach) | 0x0B004300
|
||||
[gTextureTitleFrappeSnowland_end](@ref gTextureTitleFrappeSnowland_end) | 0x0B004300
|
||||
[gTextureTitleKoopaTroopaBeach](@ref gTextureTitleKoopaTroopaBeach) | 0x0B004300
|
||||
[gTextureTitleKoopaTroopaBeach_end](@ref gTextureTitleKoopaTroopaBeach_end) | 0x0B004800
|
||||
[gTextureTitleRoyalRaceway](@ref gTextureTitleRoyalRaceway) | 0x0B004800
|
||||
[gTextureTitleRoyalRaceway_end](@ref gTextureTitleRoyalRaceway_end) | 0x0B004C00
|
||||
[gTextureTitleLuigiRaceway](@ref gTextureTitleLuigiRaceway) | 0x0B004C00
|
||||
[gTextureTitleMooMooFarm](@ref gTextureTitleMooMooFarm) | 0x0B005000
|
||||
[gTextureTitleLuigiRaceway_end](@ref gTextureTitleLuigiRaceway_end) | 0x0B005000
|
||||
[gTextureTitleMooMooFarm_end](@ref gTextureTitleMooMooFarm_end) | 0x0B005400
|
||||
[gTextureTitleToadsTurnpike](@ref gTextureTitleToadsTurnpike) | 0x0B005400
|
||||
[gTextureTitleKalimariDesert](@ref gTextureTitleKalimariDesert) | 0x0B005900
|
||||
[gTextureTitleMooMooFarm_end](@ref gTextureTitleMooMooFarm_end) | 0x0B005400
|
||||
[gTextureTitleToadsTurnpike_end](@ref gTextureTitleToadsTurnpike_end) | 0x0B005900
|
||||
[gTextureTitleKalimariDesert_end](@ref gTextureTitleKalimariDesert_end) | 0x0B005D00
|
||||
[gTextureTitleKalimariDesert](@ref gTextureTitleKalimariDesert) | 0x0B005900
|
||||
[gTextureTitleSherbetLand](@ref gTextureTitleSherbetLand) | 0x0B005D00
|
||||
[gTextureTitleSherbetLand_end](@ref gTextureTitleSherbetLand_end) | 0x0B006100
|
||||
[gTextureTitleKalimariDesert_end](@ref gTextureTitleKalimariDesert_end) | 0x0B005D00
|
||||
[gTextureTitleRainbowRoad](@ref gTextureTitleRainbowRoad) | 0x0B006100
|
||||
[gTextureTitleSherbetLand_end](@ref gTextureTitleSherbetLand_end) | 0x0B006100
|
||||
[gTextureTitleWarioStadium](@ref gTextureTitleWarioStadium) | 0x0B006500
|
||||
[gTextureTitleRainbowRoad_end](@ref gTextureTitleRainbowRoad_end) | 0x0B006500
|
||||
[gTextureTitleWarioStadium_end](@ref gTextureTitleWarioStadium_end) | 0x0B006A00
|
||||
[gTextureTitleBlockFort](@ref gTextureTitleBlockFort) | 0x0B006A00
|
||||
[gTextureTitleWarioStadium_end](@ref gTextureTitleWarioStadium_end) | 0x0B006A00
|
||||
[gTextureTitleBlockFort_end](@ref gTextureTitleBlockFort_end) | 0x0B006D00
|
||||
[gTextureTitleSkyscraper](@ref gTextureTitleSkyscraper) | 0x0B006D00
|
||||
[gTextureTitleDoubleDeck](@ref gTextureTitleDoubleDeck) | 0x0B007100
|
||||
|
|
@ -19669,22 +19669,22 @@ Variable Name | Memory Address
|
|||
[gTextureMapSelect_end](@ref gTextureMapSelect_end) | 0x0B008A00
|
||||
[gTextureMenuMushroomCup](@ref gTextureMenuMushroomCup) | 0x0B008E00
|
||||
[gTextureMenuFlowerCup_end](@ref gTextureMenuFlowerCup_end) | 0x0B008E00
|
||||
[gTextureMenuMushroomCup_end](@ref gTextureMenuMushroomCup_end) | 0x0B009200
|
||||
[gTextureMenuStarCup](@ref gTextureMenuStarCup) | 0x0B009200
|
||||
[gTextureMenuMushroomCup_end](@ref gTextureMenuMushroomCup_end) | 0x0B009200
|
||||
[gTextureMenuSpecialCup](@ref gTextureMenuSpecialCup) | 0x0B009600
|
||||
[gTextureMenuStarCup_end](@ref gTextureMenuStarCup_end) | 0x0B009600
|
||||
[gTextureGameSelect](@ref gTextureGameSelect) | 0x0B009A00
|
||||
[gTextureMenuSpecialCup_end](@ref gTextureMenuSpecialCup_end) | 0x0B009A00
|
||||
[gTextureMenu1PGame](@ref gTextureMenu1PGame) | 0x0B00A600
|
||||
[gTextureGameSelect_end](@ref gTextureGameSelect_end) | 0x0B00A600
|
||||
[gTextureMenu1PGame_end](@ref gTextureMenu1PGame_end) | 0x0B00AB00
|
||||
[gTextureMenu1PGame](@ref gTextureMenu1PGame) | 0x0B00A600
|
||||
[gTextureMenu2PGame](@ref gTextureMenu2PGame) | 0x0B00AB00
|
||||
[gTextureMenu3PGame](@ref gTextureMenu3PGame) | 0x0B00B200
|
||||
[gTextureMenu1PGame_end](@ref gTextureMenu1PGame_end) | 0x0B00AB00
|
||||
[gTextureMenu2PGame_end](@ref gTextureMenu2PGame_end) | 0x0B00B200
|
||||
[gTextureMenu4PGame](@ref gTextureMenu4PGame) | 0x0B00BC00
|
||||
[gTextureMenu3PGame](@ref gTextureMenu3PGame) | 0x0B00B200
|
||||
[gTextureMenu3PGame_end](@ref gTextureMenu3PGame_end) | 0x0B00BC00
|
||||
[gTextureMenu4PGame_end](@ref gTextureMenu4PGame_end) | 0x0B00C700
|
||||
[gTextureMenu4PGame](@ref gTextureMenu4PGame) | 0x0B00BC00
|
||||
[gTextureMenuModeBattle](@ref gTextureMenuModeBattle) | 0x0B00C700
|
||||
[gTextureMenu4PGame_end](@ref gTextureMenu4PGame_end) | 0x0B00C700
|
||||
[gTextureMenuModeTimeTrials](@ref gTextureMenuModeTimeTrials) | 0x0B00CA00
|
||||
[gTextureMenuModeBattle_end](@ref gTextureMenuModeBattle_end) | 0x0B00CA00
|
||||
[gTextureMenuModeMarioGP](@ref gTextureMenuModeMarioGP) | 0x0B00CE00
|
||||
|
|
@ -19695,36 +19695,36 @@ Variable Name | Memory Address
|
|||
[gTextureMenuModeVS_end](@ref gTextureMenuModeVS_end) | 0x0B00D500
|
||||
[gTextureMenuLOption_end](@ref gTextureMenuLOption_end) | 0x0B00D800
|
||||
[gTextureMenuRData](@ref gTextureMenuRData) | 0x0B00D800
|
||||
[gTextureMenuRData_end](@ref gTextureMenuRData_end) | 0x0B00DB00
|
||||
[gTextureMenu50cc](@ref gTextureMenu50cc) | 0x0B00DB00
|
||||
[gTextureMenu50cc_end](@ref gTextureMenu50cc_end) | 0x0B00DD00
|
||||
[gTextureMenuRData_end](@ref gTextureMenuRData_end) | 0x0B00DB00
|
||||
[gTextureMenu100cc](@ref gTextureMenu100cc) | 0x0B00DD00
|
||||
[gTextureMenu150cc](@ref gTextureMenu150cc) | 0x0B00DF00
|
||||
[gTextureMenu50cc_end](@ref gTextureMenu50cc_end) | 0x0B00DD00
|
||||
[gTextureMenu100cc_end](@ref gTextureMenu100cc_end) | 0x0B00DF00
|
||||
[gTextureMenu150cc](@ref gTextureMenu150cc) | 0x0B00DF00
|
||||
[gTextureMenuExtra](@ref gTextureMenuExtra) | 0x0B00E100
|
||||
[gTextureMenu150cc_end](@ref gTextureMenu150cc_end) | 0x0B00E100
|
||||
[gTextureMenuWithoutItem](@ref gTextureMenuWithoutItem) | 0x0B00E300
|
||||
[gTextureMenuExtra_end](@ref gTextureMenuExtra_end) | 0x0B00E300
|
||||
[gTextureMenuWithoutItem_end](@ref gTextureMenuWithoutItem_end) | 0x0B00E600
|
||||
[gTextureMenuWithItem](@ref gTextureMenuWithItem) | 0x0B00E600
|
||||
[gTextureMenuWithItem_end](@ref gTextureMenuWithItem_end) | 0x0B00E900
|
||||
[gTextureMenuBegin](@ref gTextureMenuBegin) | 0x0B00E900
|
||||
[gTextureMenuWithItem_end](@ref gTextureMenuWithItem_end) | 0x0B00E900
|
||||
[gTextureMenuGhost](@ref gTextureMenuGhost) | 0x0B00EB00
|
||||
[gTextureMenuBegin_end](@ref gTextureMenuBegin_end) | 0x0B00EB00
|
||||
[gTextureMenuData](@ref gTextureMenuData) | 0x0B00ED00
|
||||
[gTextureMenuGhost_end](@ref gTextureMenuGhost_end) | 0x0B00ED00
|
||||
[gTextureMenuData_end](@ref gTextureMenuData_end) | 0x0B00EF00
|
||||
[gTextureMenuOK](@ref gTextureMenuOK) | 0x0B00EF00
|
||||
[gTextureBackgroundBlueSky](@ref gTextureBackgroundBlueSky) | 0x0B00F100
|
||||
[gTextureMenuOK_end](@ref gTextureMenuOK_end) | 0x0B00F100
|
||||
[gTextureBackgroundBlueSky](@ref gTextureBackgroundBlueSky) | 0x0B00F100
|
||||
[gTextureBackgroundBlueSky_end](@ref gTextureBackgroundBlueSky_end) | 0x0B01BF00
|
||||
[gTextureBackgroundSunset](@ref gTextureBackgroundSunset) | 0x0B01BF00
|
||||
[gTextureGreenGoldStripe](@ref gTextureGreenGoldStripe) | 0x0B025300
|
||||
[gTextureBackgroundSunset_end](@ref gTextureBackgroundSunset_end) | 0x0B025300
|
||||
[gTextureGoldStripe](@ref gTextureGoldStripe) | 0x0B025F00
|
||||
[gTextureGreenGoldStripe](@ref gTextureGreenGoldStripe) | 0x0B025300
|
||||
[gTextureGreenGoldStripe_end](@ref gTextureGreenGoldStripe_end) | 0x0B025F00
|
||||
[gTextureWhiteStripe](@ref gTextureWhiteStripe) | 0x0B026600
|
||||
[gTextureGoldStripe](@ref gTextureGoldStripe) | 0x0B025F00
|
||||
[gTextureGoldStripe_end](@ref gTextureGoldStripe_end) | 0x0B026600
|
||||
[gTextureWhiteStripe](@ref gTextureWhiteStripe) | 0x0B026600
|
||||
[gTexturePinkBar](@ref gTexturePinkBar) | 0x0B026700
|
||||
[gTextureWhiteStripe_end](@ref gTextureWhiteStripe_end) | 0x0B026700
|
||||
[gTexturePinkBar_end](@ref gTexturePinkBar_end) | 0x0B026C00
|
||||
|
|
@ -19819,64 +19819,64 @@ Variable Name | Memory Address
|
|||
[d_course_big_donut_packed](@ref d_course_big_donut_packed) | 0x0F001B84
|
||||
[music_sequence_table_header](@ref music_sequence_table_header) | 0x0025FD00
|
||||
[music_sequence_table](@ref music_sequence_table) | 0x0025FD04
|
||||
[music_sequence_table_end](@ref music_sequence_table_end) | 0x0025FE00
|
||||
[seq_00](@ref seq_00) | 0x0025FE00
|
||||
[music_sequence_table_end](@ref music_sequence_table_end) | 0x0025FE00
|
||||
[seq_01](@ref seq_01) | 0x00262630
|
||||
[seq_00_end](@ref seq_00_end) | 0x00262630
|
||||
[seq_02](@ref seq_02) | 0x00264160
|
||||
[seq_01_end](@ref seq_01_end) | 0x00264160
|
||||
[seq_02](@ref seq_02) | 0x00264160
|
||||
[seq_02_end](@ref seq_02_end) | 0x00264EC0
|
||||
[seq_03](@ref seq_03) | 0x00264EC0
|
||||
[seq_03_end](@ref seq_03_end) | 0x002668D0
|
||||
[seq_04](@ref seq_04) | 0x002668D0
|
||||
[seq_04_end](@ref seq_04_end) | 0x00268570
|
||||
[seq_05](@ref seq_05) | 0x00268570
|
||||
[seq_04_end](@ref seq_04_end) | 0x00268570
|
||||
[seq_05_end](@ref seq_05_end) | 0x0026A4E0
|
||||
[seq_06](@ref seq_06) | 0x0026A4E0
|
||||
[seq_06_end](@ref seq_06_end) | 0x0026C3C0
|
||||
[seq_07](@ref seq_07) | 0x0026C3C0
|
||||
[seq_06_end](@ref seq_06_end) | 0x0026C3C0
|
||||
[seq_07_end](@ref seq_07_end) | 0x0026DA90
|
||||
[seq_08](@ref seq_08) | 0x0026DA90
|
||||
[seq_08_end](@ref seq_08_end) | 0x0026FE60
|
||||
[seq_09](@ref seq_09) | 0x0026FE60
|
||||
[seq_08_end](@ref seq_08_end) | 0x0026FE60
|
||||
[seq_09_end](@ref seq_09_end) | 0x00271660
|
||||
[seq_0A](@ref seq_0A) | 0x00271660
|
||||
[seq_0B](@ref seq_0B) | 0x00273140
|
||||
[seq_0A_end](@ref seq_0A_end) | 0x00273140
|
||||
[seq_0C](@ref seq_0C) | 0x00273730
|
||||
[seq_0B_end](@ref seq_0B_end) | 0x00273730
|
||||
[seq_0D](@ref seq_0D) | 0x00273B00
|
||||
[seq_0C_end](@ref seq_0C_end) | 0x00273B00
|
||||
[seq_0D_end](@ref seq_0D_end) | 0x00273E60
|
||||
[seq_0D](@ref seq_0D) | 0x00273B00
|
||||
[seq_0E](@ref seq_0E) | 0x00273E60
|
||||
[seq_0D_end](@ref seq_0D_end) | 0x00273E60
|
||||
[seq_0E_end](@ref seq_0E_end) | 0x00274140
|
||||
[seq_0F](@ref seq_0F) | 0x00274140
|
||||
[seq_0F_end](@ref seq_0F_end) | 0x00274600
|
||||
[seq_10](@ref seq_10) | 0x00274600
|
||||
[seq_10_end](@ref seq_10_end) | 0x00275A10
|
||||
[seq_11](@ref seq_11) | 0x00275A10
|
||||
[seq_11_end](@ref seq_11_end) | 0x002760F0
|
||||
[seq_12](@ref seq_12) | 0x002760F0
|
||||
[seq_13](@ref seq_13) | 0x002793E0
|
||||
[seq_11_end](@ref seq_11_end) | 0x002760F0
|
||||
[seq_12_end](@ref seq_12_end) | 0x002793E0
|
||||
[seq_13](@ref seq_13) | 0x002793E0
|
||||
[seq_14](@ref seq_14) | 0x00279AA0
|
||||
[seq_13_end](@ref seq_13_end) | 0x00279AA0
|
||||
[seq_15](@ref seq_15) | 0x00279F50
|
||||
[seq_14_end](@ref seq_14_end) | 0x00279F50
|
||||
[seq_15_end](@ref seq_15_end) | 0x0027B0B0
|
||||
[seq_16](@ref seq_16) | 0x0027B0B0
|
||||
[seq_17](@ref seq_17) | 0x0027B3C0
|
||||
[seq_15_end](@ref seq_15_end) | 0x0027B0B0
|
||||
[seq_16_end](@ref seq_16_end) | 0x0027B3C0
|
||||
[seq_17](@ref seq_17) | 0x0027B3C0
|
||||
[seq_17_end](@ref seq_17_end) | 0x0027C670
|
||||
[seq_18](@ref seq_18) | 0x0027C670
|
||||
[seq_19](@ref seq_19) | 0x0027CC70
|
||||
[seq_18_end](@ref seq_18_end) | 0x0027CC70
|
||||
[seq_1A](@ref seq_1A) | 0x0027E350
|
||||
[seq_19_end](@ref seq_19_end) | 0x0027E350
|
||||
[seq_1A_end](@ref seq_1A_end) | 0x0027EE20
|
||||
[seq_1A](@ref seq_1A) | 0x0027E350
|
||||
[seq_1B](@ref seq_1B) | 0x0027EE20
|
||||
[seq_1B_end](@ref seq_1B_end) | 0x0027FAA0
|
||||
[seq_1A_end](@ref seq_1A_end) | 0x0027EE20
|
||||
[seq_1C](@ref seq_1C) | 0x0027FAA0
|
||||
[seq_1B_end](@ref seq_1B_end) | 0x0027FAA0
|
||||
[seq_1D](@ref seq_1D) | 0x002821F0
|
||||
[seq_1C_end](@ref seq_1C_end) | 0x002821F0
|
||||
[seq_1D_end](@ref seq_1D_end) | 0x00282E70
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue