New asset extraction utility (#306)

* Add new asset extraction tool. Changes motivated by the quirks of how kart animation frames are stored
 in the ROM.

    each frame has a palette that is actually
    composed of 2 other, incomplete palettes. As such, the existent
    extract.py isn't really able to handle them.

* Move a variety of assets to new extract tool
---------

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
Tyler McGavran 2023-06-17 17:13:06 -04:00 committed by GitHub
parent 000ed6d960
commit 1b67ee01df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
85 changed files with 73088 additions and 59816 deletions

5
.gitignore vendored
View File

@ -64,7 +64,12 @@ expected/*
/bin/*
/textures/**/*.png
/textures/**/*.bin
/assets/**/.export
/assets/**/*.bin
/assets/**/*.png
/assets/**/*.mio0
/assets/**/*.raw
/assets/**/*.inc.c
/music/**/*.m64
/sound/**/*.m64
/sound/**/*.aiff

View File

@ -21,6 +21,8 @@ ifeq ($(VERSION),us)
TARGET := mk64.us
endif
BASEROM := baserom.$(VERSION).z64
# COMPILER - selects the C compiler to use
# ido - uses the SGI IRIS Development Option compiler, which is used to build
# an original matching N64 ROM
@ -39,18 +41,21 @@ BUILD_DIR_BASE := build
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)
# Directories containing source files
ASSET_DIR := assets
BIN_DIR := bin
DATA_DIR := data
INCLUDE_DIRS := include
SRC_DIRS := src src/audio src/os src/os/math courses
ASM_DIRS := asm asm/audio asm/os asm/os/non_matchings data data/sound_data
ASM_DIRS := asm asm/audio asm/os asm/os/non_matchings $(DATA_DIR) $(DATA_DIR)/sound_data $(DATA_DIR)/karts
COURSE_DIRS := $(shell find courses -mindepth 2 -type d)
TEXTURES_DIR = textures
TEXTURE_DIRS := textures/common
ALL_DIRS = $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(COURSE_DIRS) $(INCLUDE_DIRS) $(ASM_DIRS) $(ALL_KARTS_DIRS) $(TEXTURES_DIR)/raw \
$(TEXTURES_DIR)/standalone $(TEXTURES_DIR)/startup_logo $(TEXTURES_DIR)/crash_screen $(TEXTURES_DIR)/trophy $(TEXTURES_DIR)/courses \
$(TEXTURES_DIR)/standalone $(TEXTURES_DIR)/startup_logo $(TEXTURES_DIR)/crash_screen $(TEXTURES_DIR)/trophy $(TEXTURES_DIR)/courses \
$(TEXTURES_DIR)/courses/tlut $(TEXTURES_DIR)/courses/tlut2 $(TEXTURE_DIRS) $(TEXTURE_DIRS)/tlut $(TEXTURES_DIR)/courses/tlut3 \
$(TEXTURE_DIRS)/tlut2)
$(TEXTURE_DIRS)/tlut2 $(BIN_DIR))
################### Universal Dependencies ###################
@ -190,6 +195,7 @@ DLSYMGEN = $(PYTHON) $(TOOLS_DIR)/generate_segment_headers.py
MODELSYMGEN = $(PYTHON) $(TOOLS_DIR)/generate_vertice_count.py
BIN2C = $(PYTHON) $(TOOLS_DIR)/bin2c.py
EXTRACT_DATA_FOR_MIO := $(TOOLS_DIR)/extract_data_for_mio
ASSET_EXTRACT := $(PYTHON) $(TOOLS_DIR)/new_extract_assets.py
EMULATOR = mupen64plus
EMU_FLAGS = --noosd
LOADER = loader64
@ -214,7 +220,7 @@ endif
clean:
$(RM) -r $(BUILD_DIR)
distclean:
distclean: distclean_assets
$(RM) -r $(BUILD_DIR_BASE)
./extract_assets.py --clean
make -C tools clean
@ -265,7 +271,17 @@ $(BUILD_DIR)/src/startup_logo.inc.o: src/startup_logo.inc.c
$(CC) -c $(CFLAGS) -o $@ $<
$(PYTHON) tools/set_o32abi_bit.py $@
############################### Assets ###############################
ASSET_INCLUDES := $(shell find $(ASSET_DIR)/include -type f -name *.mk)
ASSET_DIRECTORIES :=
$(foreach inc,$(ASSET_INCLUDES),$(eval include $(inc)))
distclean_assets:
rm -rf $(ASSET_DIRECTORIES)
##########################################################################################
TEXTURE_FILES := $(foreach dir,$(TEXTURE_DIRS),$(subst .png, , $(wildcard $(dir)/*)))
#TEXTURE_FILES_C := $(foreach file,$(TEXTURE_FILES),$(BUILD_DIR)/$(file:.png=.inc.c))
@ -314,7 +330,7 @@ COURSE_PACKED_DL_O := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/packed_dl
$(COURSE_PACKED_DL):
$(LD) -t -e 0 -Ttext=07000000 -Map $(@D)/packed.inc.elf.map -o $(@D)/packed.inc.elf $(@D)/packed.inc.o --no-check-sections
# Generate header for packed displaylists
$(DLSYMGEN)
# $(DLSYMGEN)
$(V)$(EXTRACT_DATA_FOR_MIO) $(@D)/packed.inc.elf $(@D)/packed.inc.bin
$(DLPACKER) $(@D)/packed.inc.bin $(@D)/packed_dl.inc.bin
@ -322,7 +338,7 @@ $(COURSE_PACKED_DL):
$(COURSE_MODEL_TARGETS) : $(BUILD_DIR)/%/model.inc.mio0.o : %/model.inc.c $(COURSE_PACKED_DL)
$(LD) -t -e 0 -Ttext=0F000000 -Map $(@D)/model.inc.elf.map -o $(@D)/model.inc.elf $(@D)/model.inc.o --no-check-sections
# Generate model vertice count header
$(MODELSYMGEN)
#$(MODELSYMGEN)
$(V)$(EXTRACT_DATA_FOR_MIO) $(@D)/model.inc.elf $(@D)/model.inc.bin
$(MIO0TOOL) -c $(@D)/model.inc.bin $(@D)/model.inc.mio0
printf ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$(@D)/model.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/packed_dl.inc.bin\"\n\n.balign 0x10\n" > $(@D)/model.inc.mio0.s
@ -450,7 +466,7 @@ test: $(TARGET).z64
load: $(TARGET).z64
$(LOADER) $(LOADER_FLAGS) $<
.PHONY: all clean distclean default diff test load
.PHONY: all clean distclean distclean_assets default diff test load
.SECONDARY:
# Remove built-in rules, to improve build/us/courses/star_cup/bowsers_castle/model.inc.mio0.performance

View File

@ -81,34 +81,9 @@ TEXTURE_DATA_MIO0_NAMES := \
texture_6961E0 \
texture_696488 \
texture_6967FC \
texture_696BAC \
texture_696E3C \
texture_697138 \
texture_69743C \
texture_6977F0 \
texture_697B10 \
texture_697E80 \
texture_69811C \
texture_698378 \
texture_69859C \
texture_6987FC \
texture_698A40 \
texture_698C60 \
texture_698E38 \
texture_698FF4 \
texture_6991F8 \
texture_699500 \
texture_699E24 \
texture_69A154 \
texture_69A4C0 \
texture_69F158 \
texture_69F390 \
texture_69F5E4 \
texture_69F9C0 \
texture_69FD6C \
texture_69FF30 \
texture_6A010C \
texture_6A0350 \
texture_ghosts
TEXTURE_DATA_MIO0_FILES := $(addprefix $(BUILD_DIR)/bin/,$(addsuffix .mio0,$(TEXTURE_DATA_MIO0_NAMES)))

12234
assets.json

File diff suppressed because it is too large Load Diff

11
assets/blueshell.json Normal file
View File

@ -0,0 +1,11 @@
{
"gTLUTBlueShell": {"output_dir": "blueshell", "rom_offset": "0x132B50", "block_offset": "0x05038", "width": 16, "height": 16, "type": "rgba16"},
"gTextureBlueShell01": {"output_dir": "blueshell", "rom_offset": "0x68FE20", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell02": {"output_dir": "blueshell", "rom_offset": "0x69004C", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell03": {"output_dir": "blueshell", "rom_offset": "0x690284", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell04": {"output_dir": "blueshell", "rom_offset": "0x6904C4", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell05": {"output_dir": "blueshell", "rom_offset": "0x690708", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell06": {"output_dir": "blueshell", "rom_offset": "0x690960", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell07": {"output_dir": "blueshell", "rom_offset": "0x690BBC", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"},
"gTextureBlueShell08": {"output_dir": "blueshell", "rom_offset": "0x690DF8", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTBlueShell"}
}

View File

@ -0,0 +1,19 @@
{
"bowser_face_00": {"output_dir": "bowser", "rom_offset": "0x78D210", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_01": {"output_dir": "bowser", "rom_offset": "0x78E4F8", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_02": {"output_dir": "bowser", "rom_offset": "0x78F7AC", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_03": {"output_dir": "bowser", "rom_offset": "0x790A74", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_04": {"output_dir": "bowser", "rom_offset": "0x791D40", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_05": {"output_dir": "bowser", "rom_offset": "0x792FE4", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_06": {"output_dir": "bowser", "rom_offset": "0x794270", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_07": {"output_dir": "bowser", "rom_offset": "0x79554C", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_08": {"output_dir": "bowser", "rom_offset": "0x796834", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_09": {"output_dir": "bowser", "rom_offset": "0x797B24", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_10": {"output_dir": "bowser", "rom_offset": "0x798E40", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_11": {"output_dir": "bowser", "rom_offset": "0x79A10C", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_12": {"output_dir": "bowser", "rom_offset": "0x79B448", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_13": {"output_dir": "bowser", "rom_offset": "0x79C7EC", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_14": {"output_dir": "bowser", "rom_offset": "0x79DB68", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_15": {"output_dir": "bowser", "rom_offset": "0x79EEAC", "width": 64, "height": 64, "type": "rgba16"},
"bowser_face_16": {"output_dir": "bowser", "rom_offset": "0x7A01F4", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"donkeykong_face_00": {"output_dir": "donkeykong", "rom_offset": "0x76A4EC", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_01": {"output_dir": "donkeykong", "rom_offset": "0x76B2D8", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_02": {"output_dir": "donkeykong", "rom_offset": "0x76C0E0", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_03": {"output_dir": "donkeykong", "rom_offset": "0x76CEC0", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_04": {"output_dir": "donkeykong", "rom_offset": "0x76DC70", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_05": {"output_dir": "donkeykong", "rom_offset": "0x76EA18", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_06": {"output_dir": "donkeykong", "rom_offset": "0x76F7FC", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_07": {"output_dir": "donkeykong", "rom_offset": "0x770628", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_08": {"output_dir": "donkeykong", "rom_offset": "0x7714BC", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_09": {"output_dir": "donkeykong", "rom_offset": "0x772398", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_10": {"output_dir": "donkeykong", "rom_offset": "0x7732E0", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_11": {"output_dir": "donkeykong", "rom_offset": "0x774218", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_12": {"output_dir": "donkeykong", "rom_offset": "0x77519C", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_13": {"output_dir": "donkeykong", "rom_offset": "0x7761A0", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_14": {"output_dir": "donkeykong", "rom_offset": "0x777160", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_15": {"output_dir": "donkeykong", "rom_offset": "0x7780AC", "width": 64, "height": 64, "type": "rgba16"},
"donkeykong_face_16": {"output_dir": "donkeykong", "rom_offset": "0x778FAC", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"luigi_face_00": {"output_dir": "luigi", "rom_offset": "0x737494", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_01": {"output_dir": "luigi", "rom_offset": "0x7380B0", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_02": {"output_dir": "luigi", "rom_offset": "0x738CD0", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_03": {"output_dir": "luigi", "rom_offset": "0x7398F0", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_04": {"output_dir": "luigi", "rom_offset": "0x73A4D8", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_05": {"output_dir": "luigi", "rom_offset": "0x73B0C0", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_06": {"output_dir": "luigi", "rom_offset": "0x73BC8C", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_07": {"output_dir": "luigi", "rom_offset": "0x73C8B4", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_08": {"output_dir": "luigi", "rom_offset": "0x73D4E8", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_09": {"output_dir": "luigi", "rom_offset": "0x73E174", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_10": {"output_dir": "luigi", "rom_offset": "0x73EDF4", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_11": {"output_dir": "luigi", "rom_offset": "0x73FA84", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_12": {"output_dir": "luigi", "rom_offset": "0x740744", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_13": {"output_dir": "luigi", "rom_offset": "0x741474", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_14": {"output_dir": "luigi", "rom_offset": "0x7421A0", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_15": {"output_dir": "luigi", "rom_offset": "0x742EE8", "width": 64, "height": 64, "type": "rgba16"},
"luigi_face_16": {"output_dir": "luigi", "rom_offset": "0x743C3C", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"mario_face_00": {"output_dir": "mario", "rom_offset": "0x729A30", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_01": {"output_dir": "mario", "rom_offset": "0x72A704", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_02": {"output_dir": "mario", "rom_offset": "0x72B3C4", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_03": {"output_dir": "mario", "rom_offset": "0x72C080", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_04": {"output_dir": "mario", "rom_offset": "0x72CCEC", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_05": {"output_dir": "mario", "rom_offset": "0x72D938", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_06": {"output_dir": "mario", "rom_offset": "0x72E578", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_07": {"output_dir": "mario", "rom_offset": "0x72F28C", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_08": {"output_dir": "mario", "rom_offset": "0x72FF98", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_09": {"output_dir": "mario", "rom_offset": "0x730C9C", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_10": {"output_dir": "mario", "rom_offset": "0x73197C", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_11": {"output_dir": "mario", "rom_offset": "0x732678", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_12": {"output_dir": "mario", "rom_offset": "0x733374", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_13": {"output_dir": "mario", "rom_offset": "0x7340B8", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_14": {"output_dir": "mario", "rom_offset": "0x734E0C", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_15": {"output_dir": "mario", "rom_offset": "0x735BB0", "width": 64, "height": 64, "type": "rgba16"},
"mario_face_16": {"output_dir": "mario", "rom_offset": "0x736950", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"peach_face_00": {"output_dir": "peach", "rom_offset": "0x744674", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_01": {"output_dir": "peach", "rom_offset": "0x74552C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_02": {"output_dir": "peach", "rom_offset": "0x7463D8", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_03": {"output_dir": "peach", "rom_offset": "0x747294", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_04": {"output_dir": "peach", "rom_offset": "0x74814C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_05": {"output_dir": "peach", "rom_offset": "0x748FD4", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_06": {"output_dir": "peach", "rom_offset": "0x749E74", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_07": {"output_dir": "peach", "rom_offset": "0x74AD3C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_08": {"output_dir": "peach", "rom_offset": "0x74BC2C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_09": {"output_dir": "peach", "rom_offset": "0x74CB3C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_10": {"output_dir": "peach", "rom_offset": "0x74DAF0", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_11": {"output_dir": "peach", "rom_offset": "0x74EAD4", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_12": {"output_dir": "peach", "rom_offset": "0x74FB20", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_13": {"output_dir": "peach", "rom_offset": "0x750B58", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_14": {"output_dir": "peach", "rom_offset": "0x751B3C", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_15": {"output_dir": "peach", "rom_offset": "0x752AD0", "width": 64, "height": 64, "type": "rgba16"},
"peach_face_16": {"output_dir": "peach", "rom_offset": "0x753A58", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"toad_face_00": {"output_dir": "toad", "rom_offset": "0x754900", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_01": {"output_dir": "toad", "rom_offset": "0x7552BC", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_02": {"output_dir": "toad", "rom_offset": "0x755C70", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_03": {"output_dir": "toad", "rom_offset": "0x75662C", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_04": {"output_dir": "toad", "rom_offset": "0x756FE4", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_05": {"output_dir": "toad", "rom_offset": "0x7579A0", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_06": {"output_dir": "toad", "rom_offset": "0x758340", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_07": {"output_dir": "toad", "rom_offset": "0x758CD8", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_08": {"output_dir": "toad", "rom_offset": "0x7596A4", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_09": {"output_dir": "toad", "rom_offset": "0x75A058", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_10": {"output_dir": "toad", "rom_offset": "0x75AA40", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_11": {"output_dir": "toad", "rom_offset": "0x75B454", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_12": {"output_dir": "toad", "rom_offset": "0x75BEAC", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_13": {"output_dir": "toad", "rom_offset": "0x75C90C", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_14": {"output_dir": "toad", "rom_offset": "0x75D38C", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_15": {"output_dir": "toad", "rom_offset": "0x75DE00", "width": 64, "height": 64, "type": "rgba16"},
"toad_face_16": {"output_dir": "toad", "rom_offset": "0x75E860", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"wario_face_00": {"output_dir": "wario", "rom_offset": "0x779F00", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_01": {"output_dir": "wario", "rom_offset": "0x77B060", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_02": {"output_dir": "wario", "rom_offset": "0x77C1A4", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_03": {"output_dir": "wario", "rom_offset": "0x77D2F8", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_04": {"output_dir": "wario", "rom_offset": "0x77E460", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_05": {"output_dir": "wario", "rom_offset": "0x77F5B4", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_06": {"output_dir": "wario", "rom_offset": "0x780710", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_07": {"output_dir": "wario", "rom_offset": "0x781884", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_08": {"output_dir": "wario", "rom_offset": "0x782A5C", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_09": {"output_dir": "wario", "rom_offset": "0x783C84", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_10": {"output_dir": "wario", "rom_offset": "0x784EF0", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_11": {"output_dir": "wario", "rom_offset": "0x7861D0", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_12": {"output_dir": "wario", "rom_offset": "0x7874D8", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_13": {"output_dir": "wario", "rom_offset": "0x7887BC", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_14": {"output_dir": "wario", "rom_offset": "0x789AE0", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_15": {"output_dir": "wario", "rom_offset": "0x78ADCC", "width": 64, "height": 64, "type": "rgba16"},
"wario_face_16": {"output_dir": "wario", "rom_offset": "0x78C098", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,19 @@
{
"yoshi_face_00": {"output_dir": "yoshi", "rom_offset": "0x75F1C4", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_01": {"output_dir": "yoshi", "rom_offset": "0x75FCB0", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_02": {"output_dir": "yoshi", "rom_offset": "0x760794", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_03": {"output_dir": "yoshi", "rom_offset": "0x761274", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_04": {"output_dir": "yoshi", "rom_offset": "0x761D28", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_05": {"output_dir": "yoshi", "rom_offset": "0x762798", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_06": {"output_dir": "yoshi", "rom_offset": "0x7631E0", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_07": {"output_dir": "yoshi", "rom_offset": "0x763D04", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_08": {"output_dir": "yoshi", "rom_offset": "0x764730", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_09": {"output_dir": "yoshi", "rom_offset": "0x7650EC", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_10": {"output_dir": "yoshi", "rom_offset": "0x765A98", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_11": {"output_dir": "yoshi", "rom_offset": "0x766458", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_12": {"output_dir": "yoshi", "rom_offset": "0x766E68", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_13": {"output_dir": "yoshi", "rom_offset": "0x7678C4", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_14": {"output_dir": "yoshi", "rom_offset": "0x7683A4", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_15": {"output_dir": "yoshi", "rom_offset": "0x768EAC", "width": 64, "height": 64, "type": "rgba16"},
"yoshi_face_16": {"output_dir": "yoshi", "rom_offset": "0x7699C4", "width": 64, "height": 64, "type": "rgba16"}
}

View File

@ -0,0 +1,11 @@
{
"gTLUTFinishLineBanner": {"output_dir": "finish_line_banner", "rom_offset": "0x132B50", "block_offset": "0x0", "width": 16, "height": 16, "type": "rgba16"},
"gTextureFinishLineBanner1": {"output_dir": "finish_line_banner", "rom_offset": "0x696BAC", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner2": {"output_dir": "finish_line_banner", "rom_offset": "0x696E3C", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner3": {"output_dir": "finish_line_banner", "rom_offset": "0x697138", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner4": {"output_dir": "finish_line_banner", "rom_offset": "0x69743C", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner5": {"output_dir": "finish_line_banner", "rom_offset": "0x6977F0", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner6": {"output_dir": "finish_line_banner", "rom_offset": "0x697B10", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner7": {"output_dir": "finish_line_banner", "rom_offset": "0x697E80", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"},
"gTextureFinishLineBanner8": {"output_dir": "finish_line_banner", "rom_offset": "0x69811C", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTFinishLineBanner"}
}

11
assets/greenshell.json Normal file
View File

@ -0,0 +1,11 @@
{
"gTLUTGreenShell": {"output_dir": "greenshell", "rom_offset": "0x132B50", "block_offset": "0x04E38", "width": 16, "height": 16, "type": "rgba16"},
"gTextureGreenShell01": {"output_dir": "greenshell", "rom_offset": "0x68EB50", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell02": {"output_dir": "greenshell", "rom_offset": "0x68EDA0", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell03": {"output_dir": "greenshell", "rom_offset": "0x68EFF0", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell04": {"output_dir": "greenshell", "rom_offset": "0x68F248", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell05": {"output_dir": "greenshell", "rom_offset": "0x68F4A8", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell06": {"output_dir": "greenshell", "rom_offset": "0x68F700", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell07": {"output_dir": "greenshell", "rom_offset": "0x68F96C", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"},
"gTextureGreenShell08": {"output_dir": "greenshell", "rom_offset": "0x68FBCC", "width": 32, "height": 32, "type": "ci8", "tlut": "gTLUTGreenShell"}
}

View File

@ -0,0 +1,31 @@
BLUE_SHELL_DIR := assets/blueshell
BLUE_SHELL_PALETTE := $(BLUE_SHELL_DIR)/gTLUTBlueShell.png
BLUE_SHELL_FRAMES := \
$(BLUE_SHELL_DIR)/gTextureBlueShell1.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell2.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell3.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell4.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell5.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell6.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell7.png \
$(BLUE_SHELL_DIR)/gTextureBlueShell8.png
BLUE_SHELL_EXPORT_SENTINEL := $(BLUE_SHELL_DIR)/.export
ASSET_DIRECTORIES += $(BLUE_SHELL_DIR)
$(BLUE_SHELL_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BLUE_SHELL_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(BLUE_SHELL_PALETTE:%.png=%.inc.c)
$(BLUE_SHELL_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(BLUE_SHELL_FRAMES) $(BLUE_SHELL_PALETTE): $(BLUE_SHELL_EXPORT_SENTINEL) ;
$(BLUE_SHELL_EXPORT_SENTINEL): $(ASSET_DIR)/blueshell.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
BOWSER_SELECT_DIR := assets/character_select/bowser
BOWSER_SELECT_PNG := \
$(BOWSER_SELECT_DIR)/bowser_face_00.png \
$(BOWSER_SELECT_DIR)/bowser_face_01.png \
$(BOWSER_SELECT_DIR)/bowser_face_02.png \
$(BOWSER_SELECT_DIR)/bowser_face_03.png \
$(BOWSER_SELECT_DIR)/bowser_face_04.png \
$(BOWSER_SELECT_DIR)/bowser_face_05.png \
$(BOWSER_SELECT_DIR)/bowser_face_06.png \
$(BOWSER_SELECT_DIR)/bowser_face_07.png \
$(BOWSER_SELECT_DIR)/bowser_face_08.png \
$(BOWSER_SELECT_DIR)/bowser_face_09.png \
$(BOWSER_SELECT_DIR)/bowser_face_10.png \
$(BOWSER_SELECT_DIR)/bowser_face_11.png \
$(BOWSER_SELECT_DIR)/bowser_face_12.png \
$(BOWSER_SELECT_DIR)/bowser_face_13.png \
$(BOWSER_SELECT_DIR)/bowser_face_14.png \
$(BOWSER_SELECT_DIR)/bowser_face_15.png \
$(BOWSER_SELECT_DIR)/bowser_face_16.png
BOWSER_SELECT_EXPORT_SENTINEL := $(BOWSER_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(BOWSER_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(BOWSER_SELECT_PNG:%.png=%.mio0)
$(BOWSER_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(BOWSER_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(BOWSER_SELECT_PNG): $(BOWSER_SELECT_EXPORT_SENTINEL) ;
$(BOWSER_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/bowser_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
DONKEYKONG_SELECT_DIR := assets/character_select/donkeykong
DONKEYKONG_SELECT_PNG := \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_00.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_01.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_02.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_03.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_04.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_05.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_06.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_07.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_08.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_09.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_10.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_11.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_12.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_13.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_14.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_15.png \
$(DONKEYKONG_SELECT_DIR)/donkeykong_face_16.png
DONKEYKONG_SELECT_EXPORT_SENTINEL := $(DONKEYKONG_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(DONKEYKONG_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(DONKEYKONG_SELECT_PNG:%.png=%.mio0)
$(DONKEYKONG_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(DONKEYKONG_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(DONKEYKONG_SELECT_PNG): $(DONKEYKONG_SELECT_EXPORT_SENTINEL) ;
$(DONKEYKONG_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/donkeykong_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
LUIGI_SELECT_DIR := assets/character_select/luigi
LUIGI_SELECT_PNG := \
$(LUIGI_SELECT_DIR)/luigi_face_00.png \
$(LUIGI_SELECT_DIR)/luigi_face_01.png \
$(LUIGI_SELECT_DIR)/luigi_face_02.png \
$(LUIGI_SELECT_DIR)/luigi_face_03.png \
$(LUIGI_SELECT_DIR)/luigi_face_04.png \
$(LUIGI_SELECT_DIR)/luigi_face_05.png \
$(LUIGI_SELECT_DIR)/luigi_face_06.png \
$(LUIGI_SELECT_DIR)/luigi_face_07.png \
$(LUIGI_SELECT_DIR)/luigi_face_08.png \
$(LUIGI_SELECT_DIR)/luigi_face_09.png \
$(LUIGI_SELECT_DIR)/luigi_face_10.png \
$(LUIGI_SELECT_DIR)/luigi_face_11.png \
$(LUIGI_SELECT_DIR)/luigi_face_12.png \
$(LUIGI_SELECT_DIR)/luigi_face_13.png \
$(LUIGI_SELECT_DIR)/luigi_face_14.png \
$(LUIGI_SELECT_DIR)/luigi_face_15.png \
$(LUIGI_SELECT_DIR)/luigi_face_16.png
LUIGI_SELECT_EXPORT_SENTINEL := $(LUIGI_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(LUIGI_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(LUIGI_SELECT_PNG:%.png=%.mio0)
$(LUIGI_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(LUIGI_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(LUIGI_SELECT_PNG): $(LUIGI_SELECT_EXPORT_SENTINEL) ;
$(LUIGI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/luigi_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
MARIO_SELECT_DIR := assets/character_select/mario
MARIO_SELECT_PNG := \
$(MARIO_SELECT_DIR)/mario_face_00.png \
$(MARIO_SELECT_DIR)/mario_face_01.png \
$(MARIO_SELECT_DIR)/mario_face_02.png \
$(MARIO_SELECT_DIR)/mario_face_03.png \
$(MARIO_SELECT_DIR)/mario_face_04.png \
$(MARIO_SELECT_DIR)/mario_face_05.png \
$(MARIO_SELECT_DIR)/mario_face_06.png \
$(MARIO_SELECT_DIR)/mario_face_07.png \
$(MARIO_SELECT_DIR)/mario_face_08.png \
$(MARIO_SELECT_DIR)/mario_face_09.png \
$(MARIO_SELECT_DIR)/mario_face_10.png \
$(MARIO_SELECT_DIR)/mario_face_11.png \
$(MARIO_SELECT_DIR)/mario_face_12.png \
$(MARIO_SELECT_DIR)/mario_face_13.png \
$(MARIO_SELECT_DIR)/mario_face_14.png \
$(MARIO_SELECT_DIR)/mario_face_15.png \
$(MARIO_SELECT_DIR)/mario_face_16.png
MARIO_SELECT_EXPORT_SENTINEL := $(MARIO_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(MARIO_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(MARIO_SELECT_PNG:%.png=%.mio0)
$(MARIO_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(MARIO_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(MARIO_SELECT_PNG): $(MARIO_SELECT_EXPORT_SENTINEL) ;
$(MARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/mario_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
PEACH_SELECT_DIR := assets/character_select/peach
PEACH_SELECT_PNG := \
$(PEACH_SELECT_DIR)/peach_face_00.png \
$(PEACH_SELECT_DIR)/peach_face_01.png \
$(PEACH_SELECT_DIR)/peach_face_02.png \
$(PEACH_SELECT_DIR)/peach_face_03.png \
$(PEACH_SELECT_DIR)/peach_face_04.png \
$(PEACH_SELECT_DIR)/peach_face_05.png \
$(PEACH_SELECT_DIR)/peach_face_06.png \
$(PEACH_SELECT_DIR)/peach_face_07.png \
$(PEACH_SELECT_DIR)/peach_face_08.png \
$(PEACH_SELECT_DIR)/peach_face_09.png \
$(PEACH_SELECT_DIR)/peach_face_10.png \
$(PEACH_SELECT_DIR)/peach_face_11.png \
$(PEACH_SELECT_DIR)/peach_face_12.png \
$(PEACH_SELECT_DIR)/peach_face_13.png \
$(PEACH_SELECT_DIR)/peach_face_14.png \
$(PEACH_SELECT_DIR)/peach_face_15.png \
$(PEACH_SELECT_DIR)/peach_face_16.png
PEACH_SELECT_EXPORT_SENTINEL := $(PEACH_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(PEACH_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(PEACH_SELECT_PNG:%.png=%.mio0)
$(PEACH_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(PEACH_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(PEACH_SELECT_PNG): $(PEACH_SELECT_EXPORT_SENTINEL) ;
$(PEACH_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/peach_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
TOAD_SELECT_DIR := assets/character_select/toad
TOAD_SELECT_PNG := \
$(TOAD_SELECT_DIR)/toad_face_00.png \
$(TOAD_SELECT_DIR)/toad_face_01.png \
$(TOAD_SELECT_DIR)/toad_face_02.png \
$(TOAD_SELECT_DIR)/toad_face_03.png \
$(TOAD_SELECT_DIR)/toad_face_04.png \
$(TOAD_SELECT_DIR)/toad_face_05.png \
$(TOAD_SELECT_DIR)/toad_face_06.png \
$(TOAD_SELECT_DIR)/toad_face_07.png \
$(TOAD_SELECT_DIR)/toad_face_08.png \
$(TOAD_SELECT_DIR)/toad_face_09.png \
$(TOAD_SELECT_DIR)/toad_face_10.png \
$(TOAD_SELECT_DIR)/toad_face_11.png \
$(TOAD_SELECT_DIR)/toad_face_12.png \
$(TOAD_SELECT_DIR)/toad_face_13.png \
$(TOAD_SELECT_DIR)/toad_face_14.png \
$(TOAD_SELECT_DIR)/toad_face_15.png \
$(TOAD_SELECT_DIR)/toad_face_16.png
TOAD_SELECT_EXPORT_SENTINEL := $(TOAD_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(TOAD_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(TOAD_SELECT_PNG:%.png=%.mio0)
$(TOAD_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(TOAD_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(TOAD_SELECT_PNG): $(TOAD_SELECT_EXPORT_SENTINEL) ;
$(TOAD_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/toad_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
WARIO_SELECT_DIR := assets/character_select/wario
WARIO_SELECT_PNG := \
$(WARIO_SELECT_DIR)/wario_face_00.png \
$(WARIO_SELECT_DIR)/wario_face_01.png \
$(WARIO_SELECT_DIR)/wario_face_02.png \
$(WARIO_SELECT_DIR)/wario_face_03.png \
$(WARIO_SELECT_DIR)/wario_face_04.png \
$(WARIO_SELECT_DIR)/wario_face_05.png \
$(WARIO_SELECT_DIR)/wario_face_06.png \
$(WARIO_SELECT_DIR)/wario_face_07.png \
$(WARIO_SELECT_DIR)/wario_face_08.png \
$(WARIO_SELECT_DIR)/wario_face_09.png \
$(WARIO_SELECT_DIR)/wario_face_10.png \
$(WARIO_SELECT_DIR)/wario_face_11.png \
$(WARIO_SELECT_DIR)/wario_face_12.png \
$(WARIO_SELECT_DIR)/wario_face_13.png \
$(WARIO_SELECT_DIR)/wario_face_14.png \
$(WARIO_SELECT_DIR)/wario_face_15.png \
$(WARIO_SELECT_DIR)/wario_face_16.png
WARIO_SELECT_EXPORT_SENTINEL := $(WARIO_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(WARIO_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(WARIO_SELECT_PNG:%.png=%.mio0)
$(WARIO_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(WARIO_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(WARIO_SELECT_PNG): $(WARIO_SELECT_EXPORT_SENTINEL) ;
$(WARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/wario_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,38 @@
YOSHI_SELECT_DIR := assets/character_select/yoshi
YOSHI_SELECT_PNG := \
$(YOSHI_SELECT_DIR)/yoshi_face_00.png \
$(YOSHI_SELECT_DIR)/yoshi_face_01.png \
$(YOSHI_SELECT_DIR)/yoshi_face_02.png \
$(YOSHI_SELECT_DIR)/yoshi_face_03.png \
$(YOSHI_SELECT_DIR)/yoshi_face_04.png \
$(YOSHI_SELECT_DIR)/yoshi_face_05.png \
$(YOSHI_SELECT_DIR)/yoshi_face_06.png \
$(YOSHI_SELECT_DIR)/yoshi_face_07.png \
$(YOSHI_SELECT_DIR)/yoshi_face_08.png \
$(YOSHI_SELECT_DIR)/yoshi_face_09.png \
$(YOSHI_SELECT_DIR)/yoshi_face_10.png \
$(YOSHI_SELECT_DIR)/yoshi_face_11.png \
$(YOSHI_SELECT_DIR)/yoshi_face_12.png \
$(YOSHI_SELECT_DIR)/yoshi_face_13.png \
$(YOSHI_SELECT_DIR)/yoshi_face_14.png \
$(YOSHI_SELECT_DIR)/yoshi_face_15.png \
$(YOSHI_SELECT_DIR)/yoshi_face_16.png
YOSHI_SELECT_EXPORT_SENTINEL := $(YOSHI_SELECT_DIR)/.export
ASSET_DIRECTORIES += $(YOSHI_SELECT_DIR)
$(BUILD_DIR)/data/course_player_selection.o: $(YOSHI_SELECT_PNG:%.png=%.mio0)
$(YOSHI_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(YOSHI_SELECT_PNG:%.png=%.bin) : %.bin : %.png
$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16
$(YOSHI_SELECT_PNG): $(YOSHI_SELECT_EXPORT_SENTINEL) ;
$(YOSHI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/yoshi_select.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,36 @@
FINISH_LINE_BANNER_DIR := assets/finish_line_banner
FINISH_LINE_BANNER_PALETTE := $(FINISH_LINE_BANNER_DIR)/gTLUTFinishLineBanner.png
FINISH_LINE_BANNER_PNG := \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner1.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner2.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner3.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner4.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner5.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner6.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner7.png \
$(FINISH_LINE_BANNER_DIR)/gTextureFinishLineBanner8.png
FINISH_LINE_BANNER_EXPORT_SENTINEL := $(FINISH_LINE_BANNER_DIR)/.export
ASSET_DIRECTORIES += $(FINISH_LINE_BANNER_DIR)
$(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(FINISH_LINE_BANNER_PNG:%.png=%.mio0)
$(FINISH_LINE_BANNER_PNG:%.png=%.mio0): %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(FINISH_LINE_BANNER_PNG:%.png=%.bin): %.bin : %.png
$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FINISH_LINE_BANNER_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(FINISH_LINE_BANNER_PALETTE:%.png=%.inc.c)
$(FINISH_LINE_BANNER_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(FINISH_LINE_BANNER_PNG) $(FINISH_LINE_BANNER_PALETTE): $(FINISH_LINE_BANNER_EXPORT_SENTINEL) ;
$(FINISH_LINE_BANNER_EXPORT_SENTINEL): $(ASSET_DIR)/finish_line_banner.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,31 @@
GREENSHELL_DIR := assets/greenshell
GREENSHELL_PALETTE := $(GREENSHELL_DIR)/gTLUTGreenShell.png
GREENSHELL_FRAMES := \
$(GREENSHELL_DIR)/gTextureGreenShell01.png \
$(GREENSHELL_DIR)/gTextureGreenShell02.png \
$(GREENSHELL_DIR)/gTextureGreenShell03.png \
$(GREENSHELL_DIR)/gTextureGreenShell04.png \
$(GREENSHELL_DIR)/gTextureGreenShell05.png \
$(GREENSHELL_DIR)/gTextureGreenShell06.png \
$(GREENSHELL_DIR)/gTextureGreenShell07.png \
$(GREENSHELL_DIR)/gTextureGreenShell08.png
GREENSHELL_EXPORT_SENTINEL := $(GREENSHELL_DIR)/.export
ASSET_DIRECTORIES += $(GREENSHELL_DIR)
$(GREENSHELL_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(GREENSHELL_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(GREENSHELL_PALETTE:%.png=%.inc.c)
$(GREENSHELL_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(GREENSHELL_FRAMES) $(GREENSHELL_PALETTE): $(GREENSHELL_EXPORT_SENTINEL) ;
$(GREENSHELL_EXPORT_SENTINEL): $(ASSET_DIR)/greenshell.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,55 @@
ITEM_WINDOW_DIR := assets/item_window
ITEM_WINDOW_PALETTES := \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowNone.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowBanana.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowBananaBunch.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowMushroom.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowDoubleMushroom.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowTripleMushroom.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowSuperMushroom.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowBlueShell.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowBoo.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowGreenShell.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowTripleGreenShell.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowRedShell.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowTripleRedShell.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowStar.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowThunderBolt.png \
$(ITEM_WINDOW_DIR)/gTLUTItemWindowFakeItemBox.png
ITEM_WINDOW_PNG := \
$(ITEM_WINDOW_DIR)/gTextureItemWindowNone.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowBanana.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowBananaBunch.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowMushroom.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowDoubleMushroom.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowTripleMushroom.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowSuperMushroom.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowBlueShell.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowBoo.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowGreenShell.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowTripleGreenShell.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowRedShell.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowTripleRedShell.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowStar.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowThunderBolt.png \
$(ITEM_WINDOW_DIR)/gTextureItemWindowFakeItemBox.png
ITEM_WINDOW_EXPORT_SENTINEL := $(ITEM_WINDOW_DIR)/.export
ASSET_DIRECTORIES += $(ITEM_WINDOW_DIR)
$(BUILD_DIR)/src/common_textures.inc.o: $(ITEM_WINDOW_PNG:%.png=%.inc.c) $(ITEM_WINDOW_PALETTES:%.png=%.inc.c)
$(ITEM_WINDOW_DIR)/gTexture%.inc.c: $(ITEM_WINDOW_DIR)/gTexture%.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(ITEM_WINDOW_DIR)/gTLUT$*.png
$(ITEM_WINDOW_PALETTES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(ITEM_WINDOW_PNG) $(ITEM_WINDOW_PALETTES): $(ITEM_WINDOW_EXPORT_SENTINEL) ;
$(ITEM_WINDOW_EXPORT_SENTINEL): $(ASSET_DIR)/item_window.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
BLUELIGHT_DIR := assets/lakitu/bluelight
BLUELIGHT_PALETTE := $(BLUELIGHT_DIR)/gTLUTLakituBlueLight.png
BLUELIGHT_FRAMES := \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight1.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight2.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight3.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight4.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight5.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight6.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight7.png \
$(BLUELIGHT_DIR)/gTextureLakituBlueLight8.png
BLUELIGHT_EXPORT_SENTINEL := $(BLUELIGHT_DIR)/.export
ASSET_DIRECTORIES += $(BLUELIGHT_DIR)
$(BLUELIGHT_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BLUELIGHT_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(BLUELIGHT_PALETTE:%.png=%.inc.c)
$(BLUELIGHT_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(BLUELIGHT_FRAMES) $(BLUELIGHT_PALETTE): $(BLUELIGHT_EXPORT_SENTINEL) ;
$(BLUELIGHT_EXPORT_SENTINEL): assets/lakitu/bluelight.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,55 @@
CHECKEREDFLAG_DIR := assets/lakitu/checkeredflag
CHECKEREDFLAG_PALETTE := $(CHECKEREDFLAG_DIR)/gTLUTLakituCheckeredFlag.png
CHECKEREDFLAG_FRAMES := \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag01.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag02.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag03.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag04.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag05.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag06.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag07.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag08.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag09.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag10.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag11.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag12.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag13.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag14.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag15.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag16.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag17.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag18.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag19.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag20.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag21.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag22.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag23.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag24.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag25.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag26.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag27.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag28.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag29.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag30.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag31.png \
$(CHECKEREDFLAG_DIR)/gTextureLakituCheckeredFlag32.png
CHECKEREDFLAG_EXPORT_SENTINEL := $(CHECKEREDFLAG_DIR)/.export
ASSET_DIRECTORIES += $(CHECKEREDFLAG_DIR)
$(CHECKEREDFLAG_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(CHECKEREDFLAG_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(CHECKEREDFLAG_PALETTE:%.png=%.inc.c)
$(CHECKEREDFLAG_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(CHECKEREDFLAG_FRAMES) $(CHECKEREDFLAG_PALETTE): $(CHECKEREDFLAG_EXPORT_SENTINEL) ;
$(CHECKEREDFLAG_EXPORT_SENTINEL): assets/lakitu/checkeredflag.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,39 @@
FINALLAP_DIR := assets/lakitu/finallap
FINALLAP_PALETTE := $(FINALLAP_DIR)/gTLUTLakituFinalLap.png
FINALLAP_FRAMES := \
$(FINALLAP_DIR)/gTextureLakituFinalLap01.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap02.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap03.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap04.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap05.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap06.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap07.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap08.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap09.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap10.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap11.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap12.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap13.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap14.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap15.png \
$(FINALLAP_DIR)/gTextureLakituFinalLap16.png
FINALLAP_EXPORT_SENTINEL := $(FINALLAP_DIR)/.export
ASSET_DIRECTORIES += $(FINALLAP_DIR)
$(FINALLAP_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FINALLAP_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(FINALLAP_PALETTE:%.png=%.inc.c)
$(FINALLAP_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(FINALLAP_FRAMES) $(FINALLAP_PALETTE): $(FINALLAP_EXPORT_SENTINEL) ;
$(FINALLAP_EXPORT_SENTINEL): assets/lakitu/finallap.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,27 @@
FISHING_DIR := assets/lakitu/fishing
FISHING_PALETTE := $(FISHING_DIR)/gTLUTLakituFishing.png
FISHING_FRAMES := \
$(FISHING_DIR)/gTextureLakituFishing1.png \
$(FISHING_DIR)/gTextureLakituFishing2.png \
$(FISHING_DIR)/gTextureLakituFishing3.png \
$(FISHING_DIR)/gTextureLakituFishing4.png
FISHING_EXPORT_SENTINEL := $(FISHING_DIR)/.export
ASSET_DIRECTORIES += $(FISHING_DIR)
$(FISHING_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FISHING_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(FISHING_PALETTE:%.png=%.inc.c)
$(FISHING_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(FISHING_FRAMES) $(FISHING_PALETTE): $(FISHING_EXPORT_SENTINEL) ;
$(FISHING_EXPORT_SENTINEL): assets/lakitu/fishing.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,31 @@
NOLIGHTS_DIR := assets/lakitu/nolights
NOLIGHTS_PALETTE := $(NOLIGHTS_DIR)/gTLUTLakituNoLights.png
NOLIGHTS_FRAMES := \
$(NOLIGHTS_DIR)/gTextureLakituNoLights1.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights2.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights3.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights4.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights5.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights6.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights7.png \
$(NOLIGHTS_DIR)/gTextureLakituNoLights8.png
NOLIGHTS_EXPORT_SENTINEL := $(NOLIGHTS_DIR)/.export
ASSET_DIRECTORIES += $(NOLIGHTS_DIR)
$(NOLIGHTS_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(NOLIGHTS_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(NOLIGHTS_PALETTE:%.png=%.inc.c)
$(NOLIGHTS_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(NOLIGHTS_FRAMES) $(NOLIGHTS_PALETTE): $(NOLIGHTS_EXPORT_SENTINEL) ;
$(NOLIGHTS_EXPORT_SENTINEL): assets/lakitu/nolights.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,39 @@
REDLIGHTS_DIR := assets/lakitu/redlights
REDLIGHTS_PALETTE := $(REDLIGHTS_DIR)/gTLUTLakituRedLights.png
REDLIGHTS_FRAMES := \
$(REDLIGHTS_DIR)/gTextureLakituRedLights01.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights02.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights03.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights04.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights05.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights06.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights07.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights08.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights09.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights10.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights11.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights12.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights13.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights14.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights15.png \
$(REDLIGHTS_DIR)/gTextureLakituRedLights16.png
REDLIGHTS_EXPORT_SENTINEL := $(REDLIGHTS_DIR)/.export
ASSET_DIRECTORIES += $(REDLIGHTS_DIR)
$(REDLIGHTS_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(REDLIGHTS_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(REDLIGHTS_PALETTE:%.png=%.inc.c)
$(REDLIGHTS_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(REDLIGHTS_FRAMES) $(REDLIGHTS_PALETTE): $(REDLIGHTS_EXPORT_SENTINEL) ;
$(REDLIGHTS_EXPORT_SENTINEL): assets/lakitu/redlights.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,39 @@
REVERSE_DIR := assets/lakitu/reverse
REVERSE_PALETTE := $(REVERSE_DIR)/gTLUTLakituReverse.png
REVERSE_FRAMES := \
$(REVERSE_DIR)/gTextureLakituReverse01.png \
$(REVERSE_DIR)/gTextureLakituReverse02.png \
$(REVERSE_DIR)/gTextureLakituReverse03.png \
$(REVERSE_DIR)/gTextureLakituReverse04.png \
$(REVERSE_DIR)/gTextureLakituReverse05.png \
$(REVERSE_DIR)/gTextureLakituReverse06.png \
$(REVERSE_DIR)/gTextureLakituReverse07.png \
$(REVERSE_DIR)/gTextureLakituReverse08.png \
$(REVERSE_DIR)/gTextureLakituReverse09.png \
$(REVERSE_DIR)/gTextureLakituReverse10.png \
$(REVERSE_DIR)/gTextureLakituReverse11.png \
$(REVERSE_DIR)/gTextureLakituReverse12.png \
$(REVERSE_DIR)/gTextureLakituReverse13.png \
$(REVERSE_DIR)/gTextureLakituReverse14.png \
$(REVERSE_DIR)/gTextureLakituReverse15.png \
$(REVERSE_DIR)/gTextureLakituReverse16.png
REVERSE_EXPORT_SENTINEL := $(REVERSE_DIR)/.export
ASSET_DIRECTORIES += $(REVERSE_DIR)
$(REVERSE_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(REVERSE_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(REVERSE_PALETTE:%.png=%.inc.c)
$(REVERSE_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(REVERSE_FRAMES) $(REVERSE_PALETTE): $(REVERSE_EXPORT_SENTINEL) ;
$(REVERSE_EXPORT_SENTINEL): assets/lakitu/reverse.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,39 @@
SECONDLAP_DIR := assets/lakitu/secondlap
SECONDLAP_PALETTE := $(SECONDLAP_DIR)/gTLUTLakituSecondLap.png
SECONDLAP_FRAMES := \
$(SECONDLAP_DIR)/gTextureLakituSecondLap01.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap02.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap03.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap04.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap05.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap06.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap07.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap08.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap09.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap10.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap11.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap12.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap13.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap14.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap15.png \
$(SECONDLAP_DIR)/gTextureLakituSecondLap16.png
SECONDLAP_EXPORT_SENTINEL := $(SECONDLAP_DIR)/.export
ASSET_DIRECTORIES += $(SECONDLAP_DIR)
$(SECONDLAP_FRAMES:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(SECONDLAP_PALETTE)
$(BUILD_DIR)/src/common_textures.inc.o: $(SECONDLAP_PALETTE:%.png=%.inc.c)
$(SECONDLAP_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(SECONDLAP_FRAMES) $(SECONDLAP_PALETTE): $(SECONDLAP_EXPORT_SENTINEL) ;
$(SECONDLAP_EXPORT_SENTINEL): assets/lakitu/secondlap.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,28 @@
MINIMAP_ICONS_DIR := assets/minimap_icons
MINIMAP_ICONS_PNG := \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapFinishLine.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartMario.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartLuigi.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartYoshi.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartToad.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartDonkeyKong.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartWario.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartPeach.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapKartBowser.png \
$(MINIMAP_ICONS_DIR)/gTextureMiniMapProgressDot.png
MINIMAP_ICONS_EXPORT_SENTINEL := $(MINIMAP_ICONS_DIR)/.export
ASSET_DIRECTORIES += $(MINIMAP_ICONS_DIR)
$(BUILD_DIR)/src/common_textures.inc.o: $(MINIMAP_ICONS_PNG:%.png=%.inc.c)
$(MINIMAP_ICONS_PNG:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(MINIMAP_ICONS_PNG): $(MINIMAP_ICONS_EXPORT_SENTINEL) ;
$(MINIMAP_ICONS_EXPORT_SENTINEL): $(ASSET_DIR)/minimap_icons.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,34 @@
ONOMATOPOEIA_DIR := assets/onomatopoeia
ONOMATOPOEIA_PALETTE := $(ONOMATOPOEIA_DIR)/gTLUTOnomatopoeia.png
ONOMATOPOEIA_PNG := \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaCrash1.png \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaCrash2.png \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaWhrrrr1.png \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaWhrrrr2.png \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaPoomp1.png \
$(ONOMATOPOEIA_DIR)/gTextureOnomatopoeiaPoomp2.png \
$(ONOMATOPOEIA_DIR)/gTextureBalloon1.png \
$(ONOMATOPOEIA_DIR)/gTextureBalloon2.png
ONOMATOPOEIA_EXPORT_SENTINEL := $(ONOMATOPOEIA_DIR)/.export
ASSET_DIRECTORIES += $(ONOMATOPOEIA_DIR)
$(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(ONOMATOPOEIA_PNG:%.png=%.mio0)
$(ONOMATOPOEIA_PNG:%.png=%.mio0): %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(ONOMATOPOEIA_PNG:%.png=%.bin): %.bin : %.png
$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(ONOMATOPOEIA_PALETTE)
$(ONOMATOPOEIA_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(ONOMATOPOEIA_PNG) $(ONOMATOPOEIA_PALETTE): $(ONOMATOPOEIA_EXPORT_SENTINEL) ;
$(ONOMATOPOEIA_EXPORT_SENTINEL): $(ASSET_DIR)/onomatopoeia.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

View File

@ -0,0 +1,37 @@
PIRANHA_PLANT_DIR := assets/piranha_plant
PIRANHA_PLANT_PALETTE := $(PIRANHA_PLANT_DIR)/gTLUTPiranhaPlant.png
PIRANHA_PLANT_FRAMES := \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant1.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant2.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant3.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant4.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant5.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant6.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant7.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant8.png \
$(PIRANHA_PLANT_DIR)/gTexturePiranhaPlant9.png
PIRANHA_PLANT_EXPORT_SENTINEL := $(PIRANHA_PLANT_DIR)/.export
ASSET_DIRECTORIES += $(PIRANHA_PLANT_DIR)
$(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(PIRANHA_PLANT_FRAMES:%.png=%.mio0)
$(PIRANHA_PLANT_FRAMES:%.png=%.mio0): %.mio0 : %.bin
$(MIO0TOOL) -c $< $@
$(PIRANHA_PLANT_FRAMES:%.png=%.bin): %.bin : %.png
$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(PIRANHA_PLANT_PALETTE)
$(BUILD_DIR)/courses/flower_cup/mario_raceway/course_data.inc.o: $(PIRANHA_PLANT_PALETTE:%.png=%.inc.c)
$(PIRANHA_PLANT_PALETTE:%.png=%.inc.c): %.inc.c : %.png
$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16
$(PIRANHA_PLANT_FRAMES) $(PIRANHA_PLANT_PALETTE): $(PIRANHA_PLANT_EXPORT_SENTINEL) ;
$(PIRANHA_PLANT_EXPORT_SENTINEL): $(ASSET_DIR)/piranha_plant.json
$(ASSET_EXTRACT) $(BASEROM) $<
touch $@

35
assets/item_window.json Normal file
View File

@ -0,0 +1,35 @@
{
"gTextureItemWindowNone": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1FED8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowNone"},
"gTextureItemWindowBanana": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x203D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowBanana"},
"gTextureItemWindowBananaBunch": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x208D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowBananaBunch"},
"gTextureItemWindowMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x20DD8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowMushroom"},
"gTextureItemWindowDoubleMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x212D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowDoubleMushroom"},
"gTextureItemWindowTripleMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x217D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowTripleMushroom"},
"gTextureItemWindowSuperMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x21CD8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowSuperMushroom"},
"gTextureItemWindowBlueShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x221D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowBlueShell"},
"gTextureItemWindowBoo": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x226D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowBoo"},
"gTextureItemWindowGreenShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x22BD8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowGreenShell"},
"gTextureItemWindowTripleGreenShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x230D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowTripleGreenShell"},
"gTextureItemWindowRedShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x235D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowRedShell"},
"gTextureItemWindowTripleRedShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x23AD8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowTripleRedShell"},
"gTextureItemWindowStar": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x23FD8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowStar"},
"gTextureItemWindowThunderBolt": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x244D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowThunderBolt"},
"gTextureItemWindowFakeItemBox": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x249D8", "width": 40, "height": 32, "type": "ci8", "tlut": "gTLUTItemWindowFakeItemBox"},
"gTLUTItemWindowNone": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1DED8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowBanana": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1E0D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowBananaBunch": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1E2D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1E4D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowDoubleMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1E6D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowTripleMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1E8D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowSuperMushroom": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1EAD8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowBlueShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1ECD8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowBoo": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1EED8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowGreenShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1F0D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowTripleGreenShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1F2D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowRedShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1F4D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowTripleRedShell": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1F6D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowStar": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1F8D8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowThunderBolt": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1FAD8", "width": 16, "height": 16, "type": "rgba16"},
"gTLUTItemWindowFakeItemBox": {"output_dir": "item_window", "rom_offset": "0x132B50", "block_offset": "0x1FCD8", "width": 16, "height": 16, "type": "rgba16"}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1480
assets/karts/luigi_kart.json Normal file

File diff suppressed because it is too large Load Diff

1480
assets/karts/mario_kart.json Normal file

File diff suppressed because it is too large Load Diff

1480
assets/karts/peach_kart.json Normal file

File diff suppressed because it is too large Load Diff

1480
assets/karts/toad_kart.json Normal file

File diff suppressed because it is too large Load Diff

1480
assets/karts/wario_kart.json Normal file

File diff suppressed because it is too large Load Diff

1480
assets/karts/yoshi_kart.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
{
"gTLUTLakituBlueLight": {"output_dir": "bluelight", "rom_offset": "0x132B50", "block_offset": "0x252D8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituBlueLight1": {"output_dir": "bluelight", "rom_offset": "0x6B84C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight2": {"output_dir": "bluelight", "rom_offset": "0x6B9480", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight3": {"output_dir": "bluelight", "rom_offset": "0x6BA440", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight4": {"output_dir": "bluelight", "rom_offset": "0x6BB400", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight5": {"output_dir": "bluelight", "rom_offset": "0x6BC3C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight6": {"output_dir": "bluelight", "rom_offset": "0x6BD380", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight7": {"output_dir": "bluelight", "rom_offset": "0x6BE340", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"},
"gTextureLakituBlueLight8": {"output_dir": "bluelight", "rom_offset": "0x6BF300", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituBlueLight"}
}

View File

@ -0,0 +1,35 @@
{
"gTLUTLakituCheckeredFlag": {"output_dir": "checkeredflag", "rom_offset": "0x132B50", "block_offset": "0x254D8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituCheckeredFlag01": {"output_dir": "checkeredflag", "rom_offset": "0x6C02C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag02": {"output_dir": "checkeredflag", "rom_offset": "0x6C1280", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag03": {"output_dir": "checkeredflag", "rom_offset": "0x6C2240", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag04": {"output_dir": "checkeredflag", "rom_offset": "0x6C3200", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag05": {"output_dir": "checkeredflag", "rom_offset": "0x6C41C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag06": {"output_dir": "checkeredflag", "rom_offset": "0x6C5180", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag07": {"output_dir": "checkeredflag", "rom_offset": "0x6C6140", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag08": {"output_dir": "checkeredflag", "rom_offset": "0x6C7100", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag09": {"output_dir": "checkeredflag", "rom_offset": "0x6C80C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag10": {"output_dir": "checkeredflag", "rom_offset": "0x6C9080", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag11": {"output_dir": "checkeredflag", "rom_offset": "0x6CA040", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag12": {"output_dir": "checkeredflag", "rom_offset": "0x6CB000", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag13": {"output_dir": "checkeredflag", "rom_offset": "0x6CBFC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag14": {"output_dir": "checkeredflag", "rom_offset": "0x6CCF80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag15": {"output_dir": "checkeredflag", "rom_offset": "0x6CDF40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag16": {"output_dir": "checkeredflag", "rom_offset": "0x6CEF00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag17": {"output_dir": "checkeredflag", "rom_offset": "0x6CFEC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag18": {"output_dir": "checkeredflag", "rom_offset": "0x6D0E80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag19": {"output_dir": "checkeredflag", "rom_offset": "0x6D1E40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag20": {"output_dir": "checkeredflag", "rom_offset": "0x6D2E00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag21": {"output_dir": "checkeredflag", "rom_offset": "0x6D3DC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag22": {"output_dir": "checkeredflag", "rom_offset": "0x6D4D80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag23": {"output_dir": "checkeredflag", "rom_offset": "0x6D5D40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag24": {"output_dir": "checkeredflag", "rom_offset": "0x6D6D00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag25": {"output_dir": "checkeredflag", "rom_offset": "0x6D7CC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag26": {"output_dir": "checkeredflag", "rom_offset": "0x6D8C80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag27": {"output_dir": "checkeredflag", "rom_offset": "0x6D9C40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag28": {"output_dir": "checkeredflag", "rom_offset": "0x6DAC00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag29": {"output_dir": "checkeredflag", "rom_offset": "0x6DBBC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag30": {"output_dir": "checkeredflag", "rom_offset": "0x6DCB80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag31": {"output_dir": "checkeredflag", "rom_offset": "0x6DDB40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"},
"gTextureLakituCheckeredFlag32": {"output_dir": "checkeredflag", "rom_offset": "0x6DEB00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituCheckeredFlag"}
}

View File

@ -0,0 +1,19 @@
{
"gTLUTLakituFinalLap": {"output_dir": "finallap", "rom_offset": "0x132B50", "block_offset": "0x258D8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituFinalLap01": {"output_dir": "finallap", "rom_offset": "0x6EF6C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap02": {"output_dir": "finallap", "rom_offset": "0x6F0680", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap03": {"output_dir": "finallap", "rom_offset": "0x6F1640", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap04": {"output_dir": "finallap", "rom_offset": "0x6F2600", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap05": {"output_dir": "finallap", "rom_offset": "0x6F35C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap06": {"output_dir": "finallap", "rom_offset": "0x6F4580", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap07": {"output_dir": "finallap", "rom_offset": "0x6F5540", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap08": {"output_dir": "finallap", "rom_offset": "0x6F6500", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap09": {"output_dir": "finallap", "rom_offset": "0x6F74C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap10": {"output_dir": "finallap", "rom_offset": "0x6F8480", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap11": {"output_dir": "finallap", "rom_offset": "0x6F9440", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap12": {"output_dir": "finallap", "rom_offset": "0x6FA400", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap13": {"output_dir": "finallap", "rom_offset": "0x6FB3C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap14": {"output_dir": "finallap", "rom_offset": "0x6FC380", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap15": {"output_dir": "finallap", "rom_offset": "0x6FD340", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"},
"gTextureLakituFinalLap16": {"output_dir": "finallap", "rom_offset": "0x6FE300", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituFinalLap"}
}

View File

@ -0,0 +1,7 @@
{
"gTLUTLakituFishing": {"output_dir": "fishing", "rom_offset": "0x132B50", "block_offset": "0x25CD8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituFishing1": {"output_dir": "fishing", "rom_offset": "0x70EEC0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituFishing"},
"gTextureLakituFishing2": {"output_dir": "fishing", "rom_offset": "0x70FE80", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituFishing"},
"gTextureLakituFishing3": {"output_dir": "fishing", "rom_offset": "0x710E40", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituFishing"},
"gTextureLakituFishing4": {"output_dir": "fishing", "rom_offset": "0x711E00", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituFishing"}
}

View File

@ -0,0 +1,11 @@
{
"gTLUTLakituNoLights": {"output_dir": "nolights", "rom_offset": "0x132B50", "block_offset": "0x24ED8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituNoLights1": {"output_dir": "nolights", "rom_offset": "0x6A0AC0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights2": {"output_dir": "nolights", "rom_offset": "0x6A1A80", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights3": {"output_dir": "nolights", "rom_offset": "0x6A2A40", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights4": {"output_dir": "nolights", "rom_offset": "0x6A3A00", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights5": {"output_dir": "nolights", "rom_offset": "0x6A49C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights6": {"output_dir": "nolights", "rom_offset": "0x6A5980", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights7": {"output_dir": "nolights", "rom_offset": "0x6A6940", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"},
"gTextureLakituNoLights8": {"output_dir": "nolights", "rom_offset": "0x6A7900", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituNoLights"}
}

View File

@ -0,0 +1,19 @@
{
"gTLUTLakituRedLights": {"output_dir": "redlights", "rom_offset": "0x132B50", "block_offset": "0x250D8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituRedLights01": {"output_dir": "redlights", "rom_offset": "0x6A88C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights02": {"output_dir": "redlights", "rom_offset": "0x6A9880", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights03": {"output_dir": "redlights", "rom_offset": "0x6AA840", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights04": {"output_dir": "redlights", "rom_offset": "0x6AB800", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights05": {"output_dir": "redlights", "rom_offset": "0x6AC7C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights06": {"output_dir": "redlights", "rom_offset": "0x6AD780", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights07": {"output_dir": "redlights", "rom_offset": "0x6AE740", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights08": {"output_dir": "redlights", "rom_offset": "0x6AF700", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights09": {"output_dir": "redlights", "rom_offset": "0x6B06C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights10": {"output_dir": "redlights", "rom_offset": "0x6B1680", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights11": {"output_dir": "redlights", "rom_offset": "0x6B2640", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights12": {"output_dir": "redlights", "rom_offset": "0x6B3600", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights13": {"output_dir": "redlights", "rom_offset": "0x6B45C0", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights14": {"output_dir": "redlights", "rom_offset": "0x6B5580", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights15": {"output_dir": "redlights", "rom_offset": "0x6B6540", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"},
"gTextureLakituRedLights16": {"output_dir": "redlights", "rom_offset": "0x6B7500", "width": 56, "height": 72, "type": "ci8", "tlut": "gTLUTLakituRedLights"}
}

View File

@ -0,0 +1,19 @@
{
"gTLUTLakituReverse": {"output_dir": "reverse", "rom_offset": "0x132B50", "block_offset": "0x25AD8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituReverse01": {"output_dir": "reverse", "rom_offset": "0x6FF2C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse02": {"output_dir": "reverse", "rom_offset": "0x700280", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse03": {"output_dir": "reverse", "rom_offset": "0x701240", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse04": {"output_dir": "reverse", "rom_offset": "0x702200", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse05": {"output_dir": "reverse", "rom_offset": "0x7031C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse06": {"output_dir": "reverse", "rom_offset": "0x704180", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse07": {"output_dir": "reverse", "rom_offset": "0x705140", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse08": {"output_dir": "reverse", "rom_offset": "0x706100", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse09": {"output_dir": "reverse", "rom_offset": "0x7070C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse10": {"output_dir": "reverse", "rom_offset": "0x708080", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse11": {"output_dir": "reverse", "rom_offset": "0x709040", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse12": {"output_dir": "reverse", "rom_offset": "0x70A000", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse13": {"output_dir": "reverse", "rom_offset": "0x70AFC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse14": {"output_dir": "reverse", "rom_offset": "0x70BF80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse15": {"output_dir": "reverse", "rom_offset": "0x70CF40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"},
"gTextureLakituReverse16": {"output_dir": "reverse", "rom_offset": "0x70DF00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituReverse"}
}

View File

@ -0,0 +1,19 @@
{
"gTLUTLakituSecondLap": {"output_dir": "secondlap", "rom_offset": "0x132B50", "block_offset": "0x256D8", "width": 16, "height": 16, "type": "rgba16"},
"gTextureLakituSecondLap01": {"output_dir": "secondlap", "rom_offset": "0x6DFAC0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap02": {"output_dir": "secondlap", "rom_offset": "0x6E0A80", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap03": {"output_dir": "secondlap", "rom_offset": "0x6E1A40", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap04": {"output_dir": "secondlap", "rom_offset": "0x6E2A00", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap05": {"output_dir": "secondlap", "rom_offset": "0x6E39C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap06": {"output_dir": "secondlap", "rom_offset": "0x6E4980", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap07": {"output_dir": "secondlap", "rom_offset": "0x6E5940", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap08": {"output_dir": "secondlap", "rom_offset": "0x6E6900", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap09": {"output_dir": "secondlap", "rom_offset": "0x6E78C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap10": {"output_dir": "secondlap", "rom_offset": "0x6E8880", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap11": {"output_dir": "secondlap", "rom_offset": "0x6E9840", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap12": {"output_dir": "secondlap", "rom_offset": "0x6EA800", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap13": {"output_dir": "secondlap", "rom_offset": "0x6EB7C0", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap14": {"output_dir": "secondlap", "rom_offset": "0x6EC780", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap15": {"output_dir": "secondlap", "rom_offset": "0x6ED740", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"},
"gTextureLakituSecondLap16": {"output_dir": "secondlap", "rom_offset": "0x6EE700", "width": 72, "height": 56, "type": "ci8", "tlut": "gTLUTLakituSecondLap"}
}

12
assets/minimap_icons.json Normal file
View File

@ -0,0 +1,12 @@
{
"gTextureMiniMapFinishLine": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CC58", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartMario": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CCD8", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartLuigi": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CD58", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartYoshi": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CDD8", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartToad": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CE58", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartDonkeyKong": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CED8", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartWario": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CF58", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartPeach": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2CFD8", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapKartBowser": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2D058", "width": 8, "height": 8, "type": "rgba16"},
"gTextureMiniMapProgressDot": {"output_dir": "minimap_icons", "rom_offset": "0x132B50", "block_offset": "0x2D0D8", "width": 8, "height": 8, "type": "rgba16"}
}

11
assets/onomatopoeia.json Normal file
View File

@ -0,0 +1,11 @@
{
"gTLUTOnomatopoeia": {"output_dir": "onomatopoeia", "rom_offset": "0xE5ED0", "width": 16, "height": 16, "type": "rgba16"},
"gTextureOnomatopoeiaCrash1": {"output_dir": "onomatopoeia", "rom_offset": "0x69F158", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureOnomatopoeiaCrash2": {"output_dir": "onomatopoeia", "rom_offset": "0x69F390", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureOnomatopoeiaWhrrrr1": {"output_dir": "onomatopoeia", "rom_offset": "0x69F5E4", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureOnomatopoeiaWhrrrr2": {"output_dir": "onomatopoeia", "rom_offset": "0x69F9C0", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureOnomatopoeiaPoomp1": {"output_dir": "onomatopoeia", "rom_offset": "0x69FD6C", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureOnomatopoeiaPoomp2": {"output_dir": "onomatopoeia", "rom_offset": "0x69FF30", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureBalloon1": {"output_dir": "onomatopoeia", "rom_offset": "0x6A010C", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"},
"gTextureBalloon2": {"output_dir": "onomatopoeia", "rom_offset": "0x6A0350", "width": 64, "height": 32, "type": "ci8", "tlut": "gTLUTOnomatopoeia"}
}

12
assets/piranha_plant.json Normal file
View File

@ -0,0 +1,12 @@
{
"gTLUTPiranhaPlant": {"output_dir": "piranha_plant", "rom_offset": "0x8284D0", "block_offset": "0x6750", "width": 16, "height": 16, "type": "rgba16"},
"gTexturePiranhaPlant1": {"output_dir": "piranha_plant", "rom_offset": "0x698378", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant2": {"output_dir": "piranha_plant", "rom_offset": "0x69859C", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant3": {"output_dir": "piranha_plant", "rom_offset": "0x6987FC", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant4": {"output_dir": "piranha_plant", "rom_offset": "0x698A40", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant5": {"output_dir": "piranha_plant", "rom_offset": "0x698C60", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant6": {"output_dir": "piranha_plant", "rom_offset": "0x698E38", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant7": {"output_dir": "piranha_plant", "rom_offset": "0x698FF4", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant8": {"output_dir": "piranha_plant", "rom_offset": "0x6991F8", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"},
"gTexturePiranhaPlant9": {"output_dir": "piranha_plant", "rom_offset": "0x699500", "width": 32, "height": 64, "type": "ci8", "tlut": "gTLUTPiranhaPlant"}
}

View File

@ -3594,7 +3594,7 @@ struct ActorSpawnData d_course_mario_raceway_spawn[] = {
// 0x6740 tlut for gTexture698378 / gTexturePiranhaPlant
u8 d_course_mario_raceway_piranha_plant_tlut[] = {
#include "textures/courses/gTLUTPiranhaPlant.rgba16.inc.c"
#include "assets/piranha_plant/gTLUTPiranhaPlant.inc.c"
};
// 0x6950

View File

@ -9,682 +9,682 @@
.align 2, 0x00
glabel gTextureMarioFace00
.incbin "textures/standalone/mario_face_00.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_00.mio0"
glabel gTextureMarioFace00_end
.align 2, 0x00
glabel gTextureMarioFace01
.incbin "textures/standalone/mario_face_01.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_01.mio0"
glabel gTextureMarioFace01_end
.align 2, 0x00
glabel gTextureMarioFace02
.incbin "textures/standalone/mario_face_02.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_02.mio0"
glabel gTextureMarioFace02_end
.align 2, 0x00
glabel gTextureMarioFace03
.incbin "textures/standalone/mario_face_03.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_03.mio0"
glabel gTextureMarioFace03_end
.align 2, 0x00
glabel gTextureMarioFace04
.incbin "textures/standalone/mario_face_04.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_04.mio0"
glabel gTextureMarioFace04_end
.align 2, 0x00
glabel gTextureMarioFace05
.incbin "textures/standalone/mario_face_05.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_05.mio0"
glabel gTextureMarioFace05_end
.align 2, 0x00
glabel gTextureMarioFace06
.incbin "textures/standalone/mario_face_06.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_06.mio0"
glabel gTextureMarioFace06_end
.align 2, 0x00
glabel gTextureMarioFace07
.incbin "textures/standalone/mario_face_07.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_07.mio0"
glabel gTextureMarioFace07_end
.align 2, 0x00
glabel gTextureMarioFace08
.incbin "textures/standalone/mario_face_08.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_08.mio0"
glabel gTextureMarioFace08_end
.align 2, 0x00
glabel gTextureMarioFace09
.incbin "textures/standalone/mario_face_09.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_09.mio0"
glabel gTextureMarioFace09_end
.align 2, 0x00
glabel gTextureMarioFace10
.incbin "textures/standalone/mario_face_10.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_10.mio0"
glabel gTextureMarioFace10_end
.align 2, 0x00
glabel gTextureMarioFace11
.incbin "textures/standalone/mario_face_11.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_11.mio0"
glabel gTextureMarioFace11_end
.align 2, 0x00
glabel gTextureMarioFace12
.incbin "textures/standalone/mario_face_12.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_12.mio0"
glabel gTextureMarioFace12_end
.align 2, 0x00
glabel gTextureMarioFace13
.incbin "textures/standalone/mario_face_13.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_13.mio0"
glabel gTextureMarioFace13_end
.align 2, 0x00
glabel gTextureMarioFace14
.incbin "textures/standalone/mario_face_14.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_14.mio0"
glabel gTextureMarioFace14_end
.align 2, 0x00
glabel gTextureMarioFace15
.incbin "textures/standalone/mario_face_15.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_15.mio0"
glabel gTextureMarioFace15_end
.align 2, 0x00
glabel gTextureMarioFace16
.incbin "textures/standalone/mario_face_16.rgba16.mio0"
.incbin "assets/character_select/mario/mario_face_16.mio0"
glabel gTextureMarioFace16_end
.align 2, 0x00
glabel gTextureLuigiFace00
.incbin "textures/standalone/luigi_face_00.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_00.mio0"
glabel gTextureLuigiFace00_end
.align 2, 0x00
glabel gTextureLuigiFace01
.incbin "textures/standalone/luigi_face_01.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_01.mio0"
glabel gTextureLuigiFace01_end
.align 2, 0x00
glabel gTextureLuigiFace02
.incbin "textures/standalone/luigi_face_02.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_02.mio0"
glabel gTextureLuigiFace02_end
.align 2, 0x00
glabel gTextureLuigiFace03
.incbin "textures/standalone/luigi_face_03.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_03.mio0"
glabel gTextureLuigiFace03_end
.align 2, 0x00
glabel gTextureLuigiFace04
.incbin "textures/standalone/luigi_face_04.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_04.mio0"
glabel gTextureLuigiFace04_end
.align 2, 0x00
glabel gTextureLuigiFace05
.incbin "textures/standalone/luigi_face_05.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_05.mio0"
glabel gTextureLuigiFace05_end
.align 2, 0x00
glabel gTextureLuigiFace06
.incbin "textures/standalone/luigi_face_06.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_06.mio0"
glabel gTextureLuigiFace06_end
.align 2, 0x00
glabel gTextureLuigiFace07
.incbin "textures/standalone/luigi_face_07.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_07.mio0"
glabel gTextureLuigiFace07_end
.align 2, 0x00
glabel gTextureLuigiFace08
.incbin "textures/standalone/luigi_face_08.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_08.mio0"
glabel gTextureLuigiFace08_end
.align 2, 0x00
glabel gTextureLuigiFace09
.incbin "textures/standalone/luigi_face_09.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_09.mio0"
glabel gTextureLuigiFace09_end
.align 2, 0x00
glabel gTextureLuigiFace10
.incbin "textures/standalone/luigi_face_10.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_10.mio0"
glabel gTextureLuigiFace10_end
.align 2, 0x00
glabel gTextureLuigiFace11
.incbin "textures/standalone/luigi_face_11.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_11.mio0"
glabel gTextureLuigiFace11_end
.align 2, 0x00
glabel gTextureLuigiFace12
.incbin "textures/standalone/luigi_face_12.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_12.mio0"
glabel gTextureLuigiFace12_end
.align 2, 0x00
glabel gTextureLuigiFace13
.incbin "textures/standalone/luigi_face_13.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_13.mio0"
glabel gTextureLuigiFace13_end
.align 2, 0x00
glabel gTextureLuigiFace14
.incbin "textures/standalone/luigi_face_14.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_14.mio0"
glabel gTextureLuigiFace14_end
.align 2, 0x00
glabel gTextureLuigiFace15
.incbin "textures/standalone/luigi_face_15.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_15.mio0"
glabel gTextureLuigiFace15_end
.align 2, 0x00
glabel gTextureLuigiFace16
.incbin "textures/standalone/luigi_face_16.rgba16.mio0"
.incbin "assets/character_select/luigi/luigi_face_16.mio0"
glabel gTextureLuigiFace16_end
.align 2, 0x00
glabel gTexturePeachFace00
.incbin "textures/standalone/peach_face_00.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_00.mio0"
glabel gTexturePeachFace00_end
.align 2, 0x00
glabel gTexturePeachFace01
.incbin "textures/standalone/peach_face_01.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_01.mio0"
glabel gTexturePeachFace01_end
.align 2, 0x00
glabel gTexturePeachFace02
.incbin "textures/standalone/peach_face_02.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_02.mio0"
glabel gTexturePeachFace02_end
.align 2, 0x00
glabel gTexturePeachFace03
.incbin "textures/standalone/peach_face_03.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_03.mio0"
glabel gTexturePeachFace03_end
.align 2, 0x00
glabel gTexturePeachFace04
.incbin "textures/standalone/peach_face_04.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_04.mio0"
glabel gTexturePeachFace04_end
.align 2, 0x00
glabel gTexturePeachFace05
.incbin "textures/standalone/peach_face_05.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_05.mio0"
glabel gTexturePeachFace05_end
.align 2, 0x00
glabel gTexturePeachFace06
.incbin "textures/standalone/peach_face_06.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_06.mio0"
glabel gTexturePeachFace06_end
.align 2, 0x00
glabel gTexturePeachFace07
.incbin "textures/standalone/peach_face_07.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_07.mio0"
glabel gTexturePeachFace07_end
.align 2, 0x00
glabel gTexturePeachFace08
.incbin "textures/standalone/peach_face_08.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_08.mio0"
glabel gTexturePeachFace08_end
.align 2, 0x00
glabel gTexturePeachFace09
.incbin "textures/standalone/peach_face_09.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_09.mio0"
glabel gTexturePeachFace09_end
.align 2, 0x00
glabel gTexturePeachFace10
.incbin "textures/standalone/peach_face_10.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_10.mio0"
glabel gTexturePeachFace10_end
.align 2, 0x00
glabel gTexturePeachFace11
.incbin "textures/standalone/peach_face_11.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_11.mio0"
glabel gTexturePeachFace11_end
.align 2, 0x00
glabel gTexturePeachFace12
.incbin "textures/standalone/peach_face_12.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_12.mio0"
glabel gTexturePeachFace12_end
.align 2, 0x00
glabel gTexturePeachFace13
.incbin "textures/standalone/peach_face_13.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_13.mio0"
glabel gTexturePeachFace13_end
.align 2, 0x00
glabel gTexturePeachFace14
.incbin "textures/standalone/peach_face_14.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_14.mio0"
glabel gTexturePeachFace14_end
.align 2, 0x00
glabel gTexturePeachFace15
.incbin "textures/standalone/peach_face_15.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_15.mio0"
glabel gTexturePeachFace15_end
.align 2, 0x00
glabel gTexturePeachFace16
.incbin "textures/standalone/peach_face_16.rgba16.mio0"
.incbin "assets/character_select/peach/peach_face_16.mio0"
glabel gTexturePeachFace16_end
.align 2, 0x00
glabel gTextureToadFace00
.incbin "textures/standalone/toad_face_00.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_00.mio0"
glabel gTextureToadFace00_end
.align 2, 0x00
glabel gTextureToadFace01
.incbin "textures/standalone/toad_face_01.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_01.mio0"
glabel gTextureToadFace01_end
.align 2, 0x00
glabel gTextureToadFace02
.incbin "textures/standalone/toad_face_02.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_02.mio0"
glabel gTextureToadFace02_end
.align 2, 0x00
glabel gTextureToadFace03
.incbin "textures/standalone/toad_face_03.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_03.mio0"
glabel gTextureToadFace03_end
.align 2, 0x00
glabel gTextureToadFace04
.incbin "textures/standalone/toad_face_04.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_04.mio0"
glabel gTextureToadFace04_end
.align 2, 0x00
glabel gTextureToadFace05
.incbin "textures/standalone/toad_face_05.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_05.mio0"
glabel gTextureToadFace05_end
.align 2, 0x00
glabel gTextureToadFace06
.incbin "textures/standalone/toad_face_06.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_06.mio0"
glabel gTextureToadFace06_end
.align 2, 0x00
glabel gTextureToadFace07
.incbin "textures/standalone/toad_face_07.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_07.mio0"
glabel gTextureToadFace07_end
.align 2, 0x00
glabel gTextureToadFace08
.incbin "textures/standalone/toad_face_08.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_08.mio0"
glabel gTextureToadFace08_end
.align 2, 0x00
glabel gTextureToadFace09
.incbin "textures/standalone/toad_face_09.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_09.mio0"
glabel gTextureToadFace09_end
.align 2, 0x00
glabel gTextureToadFace10
.incbin "textures/standalone/toad_face_10.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_10.mio0"
glabel gTextureToadFace10_end
.align 2, 0x00
glabel gTextureToadFace11
.incbin "textures/standalone/toad_face_11.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_11.mio0"
glabel gTextureToadFace11_end
.align 2, 0x00
glabel gTextureToadFace12
.incbin "textures/standalone/toad_face_12.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_12.mio0"
glabel gTextureToadFace12_end
.align 2, 0x00
glabel gTextureToadFace13
.incbin "textures/standalone/toad_face_13.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_13.mio0"
glabel gTextureToadFace13_end
.align 2, 0x00
glabel gTextureToadFace14
.incbin "textures/standalone/toad_face_14.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_14.mio0"
glabel gTextureToadFace14_end
.align 2, 0x00
glabel gTextureToadFace15
.incbin "textures/standalone/toad_face_15.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_15.mio0"
glabel gTextureToadFace15_end
.align 2, 0x00
glabel gTextureToadFace16
.incbin "textures/standalone/toad_face_16.rgba16.mio0"
.incbin "assets/character_select/toad/toad_face_16.mio0"
glabel gTextureToadFace16_end
.align 2, 0x00
glabel gTextureYoshiFace00
.incbin "textures/standalone/yoshi_face_00.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_00.mio0"
glabel gTextureYoshiFace00_end
.align 2, 0x00
glabel gTextureYoshiFace01
.incbin "textures/standalone/yoshi_face_01.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_01.mio0"
glabel gTextureYoshiFace01_end
.align 2, 0x00
glabel gTextureYoshiFace02
.incbin "textures/standalone/yoshi_face_02.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_02.mio0"
glabel gTextureYoshiFace02_end
.align 2, 0x00
glabel gTextureYoshiFace03
.incbin "textures/standalone/yoshi_face_03.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_03.mio0"
glabel gTextureYoshiFace03_end
.align 2, 0x00
glabel gTextureYoshiFace04
.incbin "textures/standalone/yoshi_face_04.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_04.mio0"
glabel gTextureYoshiFace04_end
.align 2, 0x00
glabel gTextureYoshiFace05
.incbin "textures/standalone/yoshi_face_05.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_05.mio0"
glabel gTextureYoshiFace05_end
.align 2, 0x00
glabel gTextureYoshiFace06
.incbin "textures/standalone/yoshi_face_06.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_06.mio0"
glabel gTextureYoshiFace06_end
.align 2, 0x00
glabel gTextureYoshiFace07
.incbin "textures/standalone/yoshi_face_07.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_07.mio0"
glabel gTextureYoshiFace07_end
.align 2, 0x00
glabel gTextureYoshiFace08
.incbin "textures/standalone/yoshi_face_08.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_08.mio0"
glabel gTextureYoshiFace08_end
.align 2, 0x00
glabel gTextureYoshiFace09
.incbin "textures/standalone/yoshi_face_09.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_09.mio0"
glabel gTextureYoshiFace09_end
.align 2, 0x00
glabel gTextureYoshiFace10
.incbin "textures/standalone/yoshi_face_10.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_10.mio0"
glabel gTextureYoshiFace10_end
.align 2, 0x00
glabel gTextureYoshiFace11
.incbin "textures/standalone/yoshi_face_11.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_11.mio0"
glabel gTextureYoshiFace11_end
.align 2, 0x00
glabel gTextureYoshiFace12
.incbin "textures/standalone/yoshi_face_12.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_12.mio0"
glabel gTextureYoshiFace12_end
.align 2, 0x00
glabel gTextureYoshiFace13
.incbin "textures/standalone/yoshi_face_13.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_13.mio0"
glabel gTextureYoshiFace13_end
.align 2, 0x00
glabel gTextureYoshiFace14
.incbin "textures/standalone/yoshi_face_14.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_14.mio0"
glabel gTextureYoshiFace14_end
.align 2, 0x00
glabel gTextureYoshiFace15
.incbin "textures/standalone/yoshi_face_15.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_15.mio0"
glabel gTextureYoshiFace15_end
.align 2, 0x00
glabel gTextureYoshiFace16
.incbin "textures/standalone/yoshi_face_16.rgba16.mio0"
.incbin "assets/character_select/yoshi/yoshi_face_16.mio0"
glabel gTextureYoshiFace16_end
.align 2, 0x00
glabel gTextureDkFace00
.incbin "textures/standalone/dk_face_00.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_00.mio0"
glabel gTextureDkFace00_end
.align 2, 0x00
glabel gTextureDkFace01
.incbin "textures/standalone/dk_face_01.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_01.mio0"
glabel gTextureDkFace01_end
.align 2, 0x00
glabel gTextureDkFace02
.incbin "textures/standalone/dk_face_02.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_02.mio0"
glabel gTextureDkFace02_end
.align 2, 0x00
glabel gTextureDkFace03
.incbin "textures/standalone/dk_face_03.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_03.mio0"
glabel gTextureDkFace03_end
.align 2, 0x00
glabel gTextureDkFace04
.incbin "textures/standalone/dk_face_04.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_04.mio0"
glabel gTextureDkFace04_end
.align 2, 0x00
glabel gTextureDkFace05
.incbin "textures/standalone/dk_face_05.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_05.mio0"
glabel gTextureDkFace05_end
.align 2, 0x00
glabel gTextureDkFace06
.incbin "textures/standalone/dk_face_06.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_06.mio0"
glabel gTextureDkFace06_end
.align 2, 0x00
glabel gTextureDkFace07
.incbin "textures/standalone/dk_face_07.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_07.mio0"
glabel gTextureDkFace07_end
.align 2, 0x00
glabel gTextureDkFace08
.incbin "textures/standalone/dk_face_08.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_08.mio0"
glabel gTextureDkFace08_end
.align 2, 0x00
glabel gTextureDkFace09
.incbin "textures/standalone/dk_face_09.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_09.mio0"
glabel gTextureDkFace09_end
.align 2, 0x00
glabel gTextureDkFace10
.incbin "textures/standalone/dk_face_10.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_10.mio0"
glabel gTextureDkFace10_end
.align 2, 0x00
glabel gTextureDkFace11
.incbin "textures/standalone/dk_face_11.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_11.mio0"
glabel gTextureDkFace11_end
.align 2, 0x00
glabel gTextureDkFace12
.incbin "textures/standalone/dk_face_12.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_12.mio0"
glabel gTextureDkFace12_end
.align 2, 0x00
glabel gTextureDkFace13
.incbin "textures/standalone/dk_face_13.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_13.mio0"
glabel gTextureDkFace13_end
.align 2, 0x00
glabel gTextureDkFace14
.incbin "textures/standalone/dk_face_14.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_14.mio0"
glabel gTextureDkFace14_end
.align 2, 0x00
glabel gTextureDkFace15
.incbin "textures/standalone/dk_face_15.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_15.mio0"
glabel gTextureDkFace15_end
.align 2, 0x00
glabel gTextureDkFace16
.incbin "textures/standalone/dk_face_16.rgba16.mio0"
.incbin "assets/character_select/donkeykong/donkeykong_face_16.mio0"
glabel gTextureDkFace16_end
.align 2, 0x00
glabel gTextureWarioFace00
.incbin "textures/standalone/wario_face_00.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_00.mio0"
glabel gTextureWarioFace00_end
.align 2, 0x00
glabel gTextureWarioFace01
.incbin "textures/standalone/wario_face_01.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_01.mio0"
glabel gTextureWarioFace01_end
.align 2, 0x00
glabel gTextureWarioFace02
.incbin "textures/standalone/wario_face_02.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_02.mio0"
glabel gTextureWarioFace02_end
.align 2, 0x00
glabel gTextureWarioFace03
.incbin "textures/standalone/wario_face_03.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_03.mio0"
glabel gTextureWarioFace03_end
.align 2, 0x00
glabel gTextureWarioFace04
.incbin "textures/standalone/wario_face_04.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_04.mio0"
glabel gTextureWarioFace04_end
.align 2, 0x00
glabel gTextureWarioFace05
.incbin "textures/standalone/wario_face_05.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_05.mio0"
glabel gTextureWarioFace05_end
.align 2, 0x00
glabel gTextureWarioFace06
.incbin "textures/standalone/wario_face_06.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_06.mio0"
glabel gTextureWarioFace06_end
.align 2, 0x00
glabel gTextureWarioFace07
.incbin "textures/standalone/wario_face_07.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_07.mio0"
glabel gTextureWarioFace07_end
.align 2, 0x00
glabel gTextureWarioFace08
.incbin "textures/standalone/wario_face_08.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_08.mio0"
glabel gTextureWarioFace08_end
.align 2, 0x00
glabel gTextureWarioFace09
.incbin "textures/standalone/wario_face_09.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_09.mio0"
glabel gTextureWarioFace09_end
.align 2, 0x00
glabel gTextureWarioFace10
.incbin "textures/standalone/wario_face_10.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_10.mio0"
glabel gTextureWarioFace10_end
.align 2, 0x00
glabel gTextureWarioFace11
.incbin "textures/standalone/wario_face_11.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_11.mio0"
glabel gTextureWarioFace11_end
.align 2, 0x00
glabel gTextureWarioFace12
.incbin "textures/standalone/wario_face_12.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_12.mio0"
glabel gTextureWarioFace12_end
.align 2, 0x00
glabel gTextureWarioFace13
.incbin "textures/standalone/wario_face_13.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_13.mio0"
glabel gTextureWarioFace13_end
.align 2, 0x00
glabel gTextureWarioFace14
.incbin "textures/standalone/wario_face_14.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_14.mio0"
glabel gTextureWarioFace14_end
.align 2, 0x00
glabel gTextureWarioFace15
.incbin "textures/standalone/wario_face_15.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_15.mio0"
glabel gTextureWarioFace15_end
.align 2, 0x00
glabel gTextureWarioFace16
.incbin "textures/standalone/wario_face_16.rgba16.mio0"
.incbin "assets/character_select/wario/wario_face_16.mio0"
glabel gTextureWarioFace16_end
.align 2, 0x00
glabel gTextureBowserFace00
.incbin "textures/standalone/bowser_face_00.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_00.mio0"
glabel gTextureBowserFace00_end
.align 2, 0x00
glabel gTextureBowserFace01
.incbin "textures/standalone/bowser_face_01.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_01.mio0"
glabel gTextureBowserFace01_end
.align 2, 0x00
glabel gTextureBowserFace02
.incbin "textures/standalone/bowser_face_02.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_02.mio0"
glabel gTextureBowserFace02_end
.align 2, 0x00
glabel gTextureBowserFace03
.incbin "textures/standalone/bowser_face_03.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_03.mio0"
glabel gTextureBowserFace03_end
.align 2, 0x00
glabel gTextureBowserFace04
.incbin "textures/standalone/bowser_face_04.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_04.mio0"
glabel gTextureBowserFace04_end
.align 2, 0x00
glabel gTextureBowserFace05
.incbin "textures/standalone/bowser_face_05.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_05.mio0"
glabel gTextureBowserFace05_end
.align 2, 0x00
glabel gTextureBowserFace06
.incbin "textures/standalone/bowser_face_06.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_06.mio0"
glabel gTextureBowserFace06_end
.align 2, 0x00
glabel gTextureBowserFace07
.incbin "textures/standalone/bowser_face_07.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_07.mio0"
glabel gTextureBowserFace07_end
.align 2, 0x00
glabel gTextureBowserFace08
.incbin "textures/standalone/bowser_face_08.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_08.mio0"
glabel gTextureBowserFace08_end
.align 2, 0x00
glabel gTextureBowserFace09
.incbin "textures/standalone/bowser_face_09.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_09.mio0"
glabel gTextureBowserFace09_end
.align 2, 0x00
glabel gTextureBowserFace10
.incbin "textures/standalone/bowser_face_10.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_10.mio0"
glabel gTextureBowserFace10_end
.align 2, 0x00
glabel gTextureBowserFace11
.incbin "textures/standalone/bowser_face_11.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_11.mio0"
glabel gTextureBowserFace11_end
.align 2, 0x00
glabel gTextureBowserFace12
.incbin "textures/standalone/bowser_face_12.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_12.mio0"
glabel gTextureBowserFace12_end
.align 2, 0x00
glabel gTextureBowserFace13
.incbin "textures/standalone/bowser_face_13.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_13.mio0"
glabel gTextureBowserFace13_end
.align 2, 0x00
glabel gTextureBowserFace14
.incbin "textures/standalone/bowser_face_14.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_14.mio0"
glabel gTextureBowserFace14_end
.align 2, 0x00
glabel gTextureBowserFace15
.incbin "textures/standalone/bowser_face_15.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_15.mio0"
glabel gTextureBowserFace15_end
.align 2, 0x00
glabel gTextureBowserFace16
.incbin "textures/standalone/bowser_face_16.rgba16.mio0"
.incbin "assets/character_select/bowser/bowser_face_16.mio0"
glabel gTextureBowserFace16_end
.align 2, 0x00

File diff suppressed because it is too large Load Diff

5915
data/karts/bowser_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/donkeykong_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/luigi_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/mario_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/peach_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/toad_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/wario_kart.s Normal file

File diff suppressed because it is too large Load Diff

5915
data/karts/yoshi_kart.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1324,72 +1324,72 @@ glabel gTexture6967FC
.incbin "bin/texture_6967FC.mio0"
.balign 4, 0x00
glabel gTexture696BAC
.incbin "bin/texture_696BAC.mio0"
glabel gTextureFinishLineBanner1
.incbin "assets/finish_line_banner/gTextureFinishLineBanner1.mio0"
.balign 4, 0x00
glabel gTexture696E3C
.incbin "bin/texture_696E3C.mio0"
glabel gTextureFinishLineBanner2
.incbin "assets/finish_line_banner/gTextureFinishLineBanner2.mio0"
.balign 4, 0x00
glabel gTexture697138
.incbin "bin/texture_697138.mio0"
glabel gTextureFinishLineBanner3
.incbin "assets/finish_line_banner/gTextureFinishLineBanner3.mio0"
.balign 4, 0x00
glabel gTexture69743C
.incbin "bin/texture_69743C.mio0"
glabel gTextureFinishLineBanner4
.incbin "assets/finish_line_banner/gTextureFinishLineBanner4.mio0"
.balign 4, 0x00
glabel gTexture6977F0
.incbin "bin/texture_6977F0.mio0"
glabel gTextureFinishLineBanner5
.incbin "assets/finish_line_banner/gTextureFinishLineBanner5.mio0"
.balign 4, 0x00
glabel gTexture697B10
.incbin "bin/texture_697B10.mio0"
glabel gTextureFinishLineBanner6
.incbin "assets/finish_line_banner/gTextureFinishLineBanner6.mio0"
.balign 4, 0x00
glabel gTexture697E80
.incbin "bin/texture_697E80.mio0"
glabel gTextureFinishLineBanner7
.incbin "assets/finish_line_banner/gTextureFinishLineBanner7.mio0"
.balign 4, 0x00
glabel gTexture69811C
.incbin "bin/texture_69811C.mio0"
glabel gTextureFinishLineBanner8
.incbin "assets/finish_line_banner/gTextureFinishLineBanner8.mio0"
.balign 4, 0x00
glabel gTexture698378
.incbin "bin/texture_698378.mio0"
glabel gTexturePiranhaPlant1
.incbin "assets/piranha_plant/gTexturePiranhaPlant1.mio0"
.balign 4, 0x00
glabel gTexture69859C
.incbin "bin/texture_69859C.mio0"
glabel gTexturePiranhaPlant2
.incbin "assets/piranha_plant/gTexturePiranhaPlant2.mio0"
.balign 4, 0x00
glabel gTexture6987FC
.incbin "bin/texture_6987FC.mio0"
glabel gTexturePiranhaPlant3
.incbin "assets/piranha_plant/gTexturePiranhaPlant3.mio0"
.balign 4, 0x00
glabel gTexture698A40
.incbin "bin/texture_698A40.mio0"
glabel gTexturePiranhaPlant4
.incbin "assets/piranha_plant/gTexturePiranhaPlant4.mio0"
.balign 4, 0x00
glabel gTexture698C60
.incbin "bin/texture_698C60.mio0"
glabel gTexturePiranhaPlant5
.incbin "assets/piranha_plant/gTexturePiranhaPlant5.mio0"
.balign 4, 0x00
glabel gTexture698E38
.incbin "bin/texture_698E38.mio0"
glabel gTexturePiranhaPlant6
.incbin "assets/piranha_plant/gTexturePiranhaPlant6.mio0"
.balign 4, 0x00
glabel gTexture698FF4
.incbin "bin/texture_698FF4.mio0"
glabel gTexturePiranhaPlant7
.incbin "assets/piranha_plant/gTexturePiranhaPlant7.mio0"
.balign 4, 0x00
glabel gTexture6991F8
.incbin "bin/texture_6991F8.mio0"
glabel gTexturePiranhaPlant8
.incbin "assets/piranha_plant/gTexturePiranhaPlant8.mio0"
.balign 4, 0x00
glabel gTexture699500
.incbin "bin/texture_699500.mio0"
glabel gTexturePiranhaPlant9
.incbin "assets/piranha_plant/gTexturePiranhaPlant9.mio0"
.balign 4, 0x00
glabel gTexture6997E0
@ -1528,36 +1528,36 @@ glabel gTexture69EFE0
.incbin "textures/standalone/texture_69EFE0.i4.mio0"
.balign 4, 0x00
glabel gTexture69F158
.incbin "bin/texture_69F158.mio0"
glabel gTextureOnomatopoeiaCrash1
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaCrash1.mio0"
.balign 4, 0x00
glabel gTexture69F390
.incbin "bin/texture_69F390.mio0"
glabel gTextureOnomatopoeiaCrash2
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaCrash2.mio0"
.balign 4, 0x00
glabel gTexture69F5E4
.incbin "bin/texture_69F5E4.mio0"
glabel gTextureOnomatopoeiaWhrrrr1
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaWhrrrr1.mio0"
.balign 4, 0x00
glabel gTexture69F9C0
.incbin "bin/texture_69F9C0.mio0"
glabel gTextureOnomatopoeiaWhrrrr2
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaWhrrrr2.mio0"
.balign 4, 0x00
glabel gTexture69FD6C
.incbin "bin/texture_69FD6C.mio0"
glabel gTextureOnomatopoeiaPoomp1
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaPoomp1.mio0"
.balign 4, 0x00
glabel gTexture69FF30
.incbin "bin/texture_69FF30.mio0"
glabel gTextureOnomatopoeiaPoomp2
.incbin "assets/onomatopoeia/gTextureOnomatopoeiaPoomp2.mio0"
.balign 4, 0x00
glabel gTexture6A010C
.incbin "bin/texture_6A010C.mio0"
glabel gTextureBalloon1
.incbin "assets/onomatopoeia/gTextureBalloon1.mio0"
.balign 4, 0x00
glabel gTexture6A0350
.incbin "bin/texture_6A0350.mio0"
glabel gTextureBalloon2
.incbin "assets/onomatopoeia/gTextureBalloon2.mio0"
.balign 4, 0x00
glabel gTextureLightningBolt0

View File

@ -44,123 +44,123 @@ glabel music_sequence_table_end
.align 4, 0x00
glabel seq_00
.incbin "music/seq_00.m64"
.incbin "music/00_seq_00.m64"
glabel seq_00_end
glabel seq_01
.incbin "music/seq_01.m64"
.incbin "music/01_title_screen.m64"
glabel seq_01_end
glabel seq_02
.incbin "music/seq_02.m64"
.incbin "music/02_main_menu.m64"
glabel seq_02_end
glabel seq_03
.incbin "music/seq_03.m64"
.incbin "music/03_racways_wario_stadium.m64"
glabel seq_03_end
glabel seq_04
.incbin "music/seq_04.m64"
.incbin "music/04_moo_moo_fame_yoshi_valley.m64"
glabel seq_04_end
glabel seq_05
.incbin "music/seq_05.m64"
.incbin "music/05_choco_mountain.m64"
glabel seq_05_end
glabel seq_06
.incbin "music/seq_06.m64"
.incbin "music/06_koopa_troopa_beach.m64"
glabel seq_06_end
glabel seq_07
.incbin "music/seq_07.m64"
.incbin "music/07_banshee_boardwalk.m64"
glabel seq_07_end
glabel seq_08
.incbin "music/seq_08.m64"
.incbin "music/08_seq_08.m64"
glabel seq_08_end
glabel seq_09
.incbin "music/seq_09.m64"
.incbin "music/09_seq_09.m64"
glabel seq_09_end
glabel seq_0A
.incbin "music/seq_0A.m64"
.incbin "music/10_kalimari_desert.m64"
glabel seq_0A_end
glabel seq_0B
.incbin "music/seq_0B.m64"
.incbin "music/11_start_grid_gp_vs.m64"
glabel seq_0B_end
glabel seq_0C
.incbin "music/seq_0C.m64"
.incbin "music/12_final_lap_fanfare.m64"
glabel seq_0C_end
glabel seq_0D
.incbin "music/seq_0D.m64"
.incbin "music/13_finish_1st_place.m64"
glabel seq_0D_end
glabel seq_0E
.incbin "music/seq_0E.m64"
.incbin "music/14_finish_2nd_4th_place.m64"
glabel seq_0E_end
glabel seq_0F
.incbin "music/seq_0F.m64"
.incbin "music/15_finish_5th_8th_place.m64"
glabel seq_0F_end
glabel seq_10
.incbin "music/seq_10.m64"
.incbin "music/16_seq_10.m64"
glabel seq_10_end
glabel seq_11
.incbin "music/seq_11.m64"
.incbin "music/17_star_jingle.m64"
glabel seq_11_end
glabel seq_12
.incbin "music/seq_12.m64"
.incbin "music/18_rainbow_road.m64"
glabel seq_12_end
glabel seq_13
.incbin "music/seq_13.m64"
.incbin "music/19_maybe_boo_item.m64"
glabel seq_13_end
glabel seq_14
.incbin "music/seq_14.m64"
.incbin "music/20_game_over.m64"
glabel seq_14_end
glabel seq_15
.incbin "music/seq_15.m64"
.incbin "music/21_toads_turnpike.m64"
glabel seq_15_end
glabel seq_16
.incbin "music/seq_16.m64"
.incbin "music/22_start_gird_time_attack.m64"
glabel seq_16_end
glabel seq_17
.incbin "music/seq_17.m64"
.incbin "music/23_vs_battle_results.m64"
glabel seq_17_end
glabel seq_18
.incbin "music/seq_18.m64"
.incbin "music/24_losing_results.m64"
glabel seq_18_end
glabel seq_19
.incbin "music/seq_19.m64"
.incbin "music/25_battle_arenas.m64"
glabel seq_19_end
glabel seq_1A
.incbin "music/seq_1A.m64"
.incbin "music/26_award_ceremony_buildup.m64"
glabel seq_1A_end
glabel seq_1B
.incbin "music/seq_1B.m64"
.incbin "music/27_award_ceremony_1st_3rd.m64"
glabel seq_1B_end
glabel seq_1C
.incbin "music/seq_1C.m64"
.incbin "music/28_staff_roll.m64"
glabel seq_1C_end
glabel seq_1D
.incbin "music/seq_1D.m64"
.incbin "music/29_award_ceremony_4th_8th.m64"
glabel seq_1D_end
# Unknown region BE90D0-BE90E0 [10]
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

View File

@ -454,7 +454,14 @@ SECTIONS
/* compressed kart textures and palettes */
BEGIN_SEG(kart_textures, 0x0F000000)
{
BUILD_DIR/data/kart_textures.o(.data);
BUILD_DIR/data/karts/luigi_kart.o(.data);
BUILD_DIR/data/karts/mario_kart.o(.data);
BUILD_DIR/data/karts/yoshi_kart.o(.data);
BUILD_DIR/data/karts/peach_kart.o(.data);
BUILD_DIR/data/karts/wario_kart.o(.data);
BUILD_DIR/data/karts/toad_kart.o(.data);
BUILD_DIR/data/karts/donkeykong_kart.o(.data);
BUILD_DIR/data/karts/bowser_kart.o(.data);
BUILD_DIR/courses/staff_ghosts.inc.o(.data);
. = ALIGN(0x10);
}

View File

@ -4,7 +4,7 @@
#include <types.h>
#include <PR/gbi.h>
extern s8 D_0D000000[];
extern s8 gTLUTFinishLineBanner[];
extern s8 D_0D000200[];
extern Vtx D_0D001200[];
extern Vtx D_0D001210[];

View File

@ -27,8 +27,8 @@ extern s8 D_03008000[];
extern s8 D_03008800[];
*/
s8 D_0D000000[] = { // tlut
#include "textures/common/132B50_00000_tlut.rgba16.inc.c"
s8 gTLUTFinishLineBanner[] = { // tlut
#include "assets/finish_line_banner/gTLUTFinishLineBanner.inc.c"
};
s8 D_0D000200[] = { // tlut
@ -215,7 +215,7 @@ Gfx D_0D001828[] = {
Gfx D_0D001840[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPLoadTLUT_pal256(D_0D000000),
gsDPLoadTLUT_pal256(gTLUTFinishLineBanner),
gsDPSetTextureLUT(G_TT_RGBA16),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_CI, G_IM_SIZ_8b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD),
@ -634,11 +634,11 @@ s8 D_0D004C68[] = {
};
s8 gTLUTGreenShell[] = {
#include "textures/common/gTLUTGreenShell.rgba16.inc.c"
#include "assets/greenshell/gTLUTGreenShell.inc.c"
};
// 5038
s8 gTLUTBlueShell[] = {
#include "textures/common/gTLUTBlueShell.rgba16.inc.c"
#include "assets/blueshell/gTLUTBlueShell.inc.c"
};
//s32 fileSplitPad[4] = { 0 };
@ -2588,143 +2588,143 @@ s8 gTexturePortraitBombKartAndQuestionMark[] = {
// 1DED8 tlut item frames
s8 gTLUTItemWindowNone[] = {
#include "textures/common/tlut/gTextureItemWindowNone.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowNone.inc.c"
};
s8 gTLUTItemWindowBanana[] = {
#include "textures/common/tlut/gTextureItemWindowBanana.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowBanana.inc.c"
};
s8 gTLUTItemWindowBananaBunch[] = {
#include "textures/common/tlut/gTextureItemWindowBananaBunch.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowBananaBunch.inc.c"
};
s8 gTLUTItemWindowMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowMushroom.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowMushroom.inc.c"
};
s8 gTLUTItemWindowDoubleMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowDoubleMushroom.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowDoubleMushroom.inc.c"
};
s8 gTLUTItemWindowTripleMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowTripleMushroom.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowTripleMushroom.inc.c"
};
s8 gTLUTItemWindowSuperMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowSuperMushroom.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowSuperMushroom.inc.c"
};
s8 gTLUTItemWindowBlueShell[] = {
#include "textures/common/tlut/gTextureItemWindowBlueShell.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowBlueShell.inc.c"
};
s8 gTLUTItemWindowBoo[] = {
#include "textures/common/tlut/gTextureItemWindowBoo.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowBoo.inc.c"
};
s8 gTLUTItemWindowGreenShell[] = {
#include "textures/common/tlut/gTextureItemWindowGreenShell.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowGreenShell.inc.c"
};
s8 gTLUTItemWindowTripleGreenShell[] = {
#include "textures/common/tlut/gTextureItemWindowTripleGreenShell.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowTripleGreenShell.inc.c"
};
s8 gTLUTItemWindowRedShell[] = {
#include "textures/common/tlut/gTextureItemWindowRedShell.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowRedShell.inc.c"
};
s8 gTLUTItemWindowTripleRedShell[] = {
#include "textures/common/tlut/gTextureItemWindowTripleRedShell.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowTripleRedShell.inc.c"
};
s8 gTLUTItemWindowStar[] = {
#include "textures/common/tlut/gTextureItemWindowStar.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowStar.inc.c"
};
s8 gTLUTItemWindowThunderBolt[] = {
#include "textures/common/tlut/gTextureItemWindowThunderBolt.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowThunderBolt.inc.c"
};
s8 gTLUTItemWindowFakeItemBox[] = {
#include "textures/common/tlut/gTextureItemWindowFakeItemBox.rgba16.ci8.tlut.inc.c"
#include "assets/item_window/gTLUTItemWindowFakeItemBox.inc.c"
};
// UI Item Frames
s8 gTextureItemWindowNone[] = {
#include "textures/common/tlut/gTextureItemWindowNone.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowNone.inc.c"
};
s8 gTextureItemWindowBanana[] = {
#include "textures/common/tlut/gTextureItemWindowBanana.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowBanana.inc.c"
};
s8 gTextureItemWindowBananaBunch[] = {
#include "textures/common/tlut/gTextureItemWindowBananaBunch.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowBananaBunch.inc.c"
};
s8 gTextureItemWindowMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowMushroom.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowMushroom.inc.c"
};
s8 gTextureItemWindowDoubleMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowDoubleMushroom.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowDoubleMushroom.inc.c"
};
s8 gTextureItemWindowTripleMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowTripleMushroom.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowTripleMushroom.inc.c"
};
s8 gTextureItemWindowSuperMushroom[] = {
#include "textures/common/tlut/gTextureItemWindowSuperMushroom.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowSuperMushroom.inc.c"
};
s8 gTextureItemWindowBlueShell[] = {
#include "textures/common/tlut/gTextureItemWindowBlueShell.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowBlueShell.inc.c"
};
s8 gTextureItemWindowBoo[] = {
#include "textures/common/tlut/gTextureItemWindowBoo.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowBoo.inc.c"
};
s8 gTextureItemWindowGreenShell[] = {
#include "textures/common/tlut/gTextureItemWindowGreenShell.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowGreenShell.inc.c"
};
s8 gTextureItemWindowTripleGreenShell[] = {
#include "textures/common/tlut/gTextureItemWindowTripleGreenShell.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowTripleGreenShell.inc.c"
};
s8 gTextureItemWindowRedShell[] = {
#include "textures/common/tlut/gTextureItemWindowRedShell.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowRedShell.inc.c"
};
s8 gTextureItemWindowTripleRedShell[] = {
#include "textures/common/tlut/gTextureItemWindowTripleRedShell.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowTripleRedShell.inc.c"
};
s8 gTextureItemWindowStar[] = {
#include "textures/common/tlut/gTextureItemWindowStar.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowStar.inc.c"
};
s8 gTextureItemWindowThunderBolt[] = {
#include "textures/common/tlut/gTextureItemWindowThunderBolt.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowThunderBolt.inc.c"
};
s8 gTextureItemWindowFakeItemBox[] = {
#include "textures/common/tlut/gTextureItemWindowFakeItemBox.rgba16.ci8.inc.c"
#include "assets/item_window/gTextureItemWindowFakeItemBox.inc.c"
};
s8 gTLUTLakituCountdown[][512] = {
{
#include "textures/common/gTLUTLakituNoLights.rgba16.inc.c"
#include "assets/lakitu/nolights/gTLUTLakituNoLights.inc.c"
},
{
#include "textures/common/gTLUTLakituRedLights.rgba16.inc.c"
#include "assets/lakitu/redlights/gTLUTLakituRedLights.inc.c"
},
{
#include "textures/common/gTLUTLakituBlueLight.rgba16.inc.c"
#include "assets/lakitu/bluelight/gTLUTLakituBlueLight.inc.c"
}
};
@ -2737,23 +2737,23 @@ s8 gTLUTLakituCountdown[][512] = {
*/
s8 gTLUTLakituCheckeredFlag[] = {
#include "textures/common/gTLUTLakituCheckeredFlag.rgba16.inc.c"
#include "assets/lakitu/checkeredflag/gTLUTLakituCheckeredFlag.inc.c"
};
s8 gTLUTLakituSecondLap[] = {
#include "textures/common/gTLUTLakituSecondLap.rgba16.inc.c"
#include "assets/lakitu/secondlap/gTLUTLakituSecondLap.inc.c"
};
s8 gTLUTLakituFinalLap[] = {
#include "textures/common/gTLUTLakituFinalLap.rgba16.inc.c"
#include "assets/lakitu/finallap/gTLUTLakituFinalLap.inc.c"
};
s8 gTLUTLakituReverse[] = {
#include "textures/common/gTLUTLakituReverse.rgba16.inc.c"
#include "assets/lakitu/reverse/gTLUTLakituReverse.inc.c"
};
s8 gTLUTLakituFishing[] = {
#include "textures/common/gTLUTLakituFishing.rgba16.inc.c"
#include "assets/lakitu/fishing/gTLUTLakituFishing.inc.c"
};
// unused traffic light tlut
@ -2873,36 +2873,36 @@ s8 D_0D02C858[] = {
// minimap cars
s8 gTextureMiniMapFinishLine[] = {
#include "textures/common/gTextureMiniMapFinishLine.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapFinishLine.inc.c"
};
s8 gMiniMapKartTextures[][128] = {
{ // Mario
#include "textures/common/gTextureMiniMapKartMario.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartMario.inc.c"
},
{ // Luigi
#include "textures/common/gTextureMiniMapKartLuigi.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartLuigi.inc.c"
},
{ // Yoshi
#include "textures/common/gTextureMiniMapKartYoshi.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartYoshi.inc.c"
},
{ // Toad
#include "textures/common/gTextureMiniMapKartToad.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartToad.inc.c"
},
{ // Donkey Kong
#include "textures/common/gTextureMiniMapKartDonkeyKong.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartDonkeyKong.inc.c"
},
{ // Wario
#include "textures/common/gTextureMiniMapKartWario.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartWario.inc.c"
},
{ // Peach
#include "textures/common/gTextureMiniMapKartPeach.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartPeach.inc.c"
},
{ // Bowser
#include "textures/common/gTextureMiniMapKartBowser.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapKartBowser.inc.c"
},
};
s8 gTextureMiniMapProgressDot[] = {
#include "textures/common/gTextureMiniMapProgressDot.rgba16.inc.c"
#include "assets/minimap_icons/gTextureMiniMapProgressDot.inc.c"
};

@ -1 +1 @@
Subproject commit 3b9cfa5a18cab2d11107790a17719642488cdb9d
Subproject commit 87029d024f81936fd03be9137a37b7793b0e9e86

View File

@ -304,9 +304,15 @@ int comp_rgba(const rgba left, const rgba right) {
* If found, return the index in pal it was found out
* Otherwise, return -1
**/
int get_color_index(const rgba comp, const rgba *pal, int pal_size) {
int get_color_index(const rgba comp, const rgba *pal, int mask_value, int pal_size) {
int pal_idx;
for (pal_idx = 0; pal_idx < pal_size; pal_idx++) {
// The starting values used here are super specific to MK64, they're not really portable to anything else
if (mask_value == 0) {
pal_idx = 0;
} else {
pal_idx = 0xC0;
}
for (; pal_idx < pal_size; pal_idx++) {
if (comp_rgba(comp, pal[pal_idx]) == 1) return pal_idx;
}
ERROR("Could not find a color in the palette\n");
@ -320,13 +326,19 @@ int get_color_index(const rgba comp, const rgba *pal, int pal_size) {
* If a value in img is not found in pal, return 0, indicating an error
* Returns 1 if all values in img are found somewhere in pal
**/
int imgpal2rawci(uint8_t *rawci, const rgba *img, const rgba *pal, int raw_size, int img_size, int pal_size) {
int imgpal2rawci(uint8_t *rawci, const rgba *img, const rgba *pal, const uint8_t *wheel_mask, int raw_size, int img_size, int pal_size) {
int img_idx;
int pal_idx;
int mask_value;
memset(rawci, 0, raw_size);
for (img_idx = 0; img_idx < img_size; img_idx++) {
pal_idx = get_color_index(img[img_idx], pal, pal_size);
if (wheel_mask != NULL) {
mask_value = wheel_mask[img_idx];
} else {
mask_value = 0;
}
pal_idx = get_color_index(img[img_idx], pal, mask_value, pal_size);
if (pal_idx != -1) {
rawci[img_idx] = pal_idx;
} else {
@ -646,6 +658,7 @@ typedef struct
char *img_filename;
char *bin_filename;
char *pal_filename;
char *mask_filename;
tool_mode mode;
write_encoding encoding;
unsigned int bin_offset;
@ -663,6 +676,7 @@ static const graphics_config default_config =
.img_filename = NULL,
.bin_filename = NULL,
.pal_filename = NULL,
.mask_filename = NULL,
.mode = MODE_EXPORT,
.encoding = ENCODING_RAW,
.bin_offset = 0,
@ -769,6 +783,7 @@ static void print_usage(void)
" -s SCHEME output scheme: raw, u8 (hex), u64 (hex) (default: %s)\n"
" -w WIDTH export texture width (default: %d)\n"
" -h HEIGHT export texture height (default: %d)\n"
" -M MASK_FILE Wheel mask file\n"
"CI arguments:\n"
" -c CI_FORMAT CI palette format: rgba16, ia16 (default: %s)\n"
" -p PAL_FILE palette binary file to import/export from/to\n"
@ -867,6 +882,10 @@ static int parse_arguments(int argc, char *argv[], graphics_config *config)
if (i++ >= argc) return 0;
magicFiller = strtol(argv[i], NULL, 16);
break;
case 'M':
if (i++ >= argc) return 0;
config->mask_filename = argv[i];
break;
default:
return 0;
break;
@ -1148,7 +1167,9 @@ int main(int argc, char *argv[])
break;
case MODE_EXPORT_CI:
{
FILE *mask_fp;
uint8_t *rawci;
uint8_t *wheel_mask;
int img_length;
int pal_length;
int ci_length;
@ -1200,7 +1221,24 @@ int main(int argc, char *argv[])
img_length = config.width * config.height;
ci_length = img_length * config.format.depth / 8;
rawci = malloc(ci_length);
conversion_success = imgpal2rawci(rawci, imgr, palr, ci_length, img_length, pal_length);
if (config.mask_filename != NULL) {
mask_fp = fopen(config.mask_filename, "rb");
if (!mask_fp) {
ERROR("Error opening \"%s\"\n", config.mask_filename);
return -1;
}
wheel_mask = malloc(img_length);
flength = fread(wheel_mask, 1, img_length, mask_fp);
if (flength != img_length) {
ERROR("Error reading %d bytes from \"%s\"\n", img_length, config.mask_filename);
return -1;
}
} else {
wheel_mask = NULL;
}
conversion_success = imgpal2rawci(rawci, imgr, palr, wheel_mask, ci_length, img_length, pal_length);
if (!conversion_success) {
ERROR("Error converting PNG and TLUT to CI\n");
exit(EXIT_FAILURE);

259
tools/new_extract_assets.py Normal file
View File

@ -0,0 +1,259 @@
#!/usr/bin/env python3
import os
import sys
import math
import json
import shutil
import struct
import tempfile
import subprocess
# Maps asset names to temporary files containing the raw asset data
# Only really useful for asset groups that use shared palettes
# Otherwise, its a little overkill
raw_asset_files = dict()
assets_requested = set()
def get_asset_raw(baserom, asset):
global raw_asset_files
global assets_requested
asset_name = asset["name"]
# If available, return a saved file handle to the asset
if asset_name in raw_asset_files:
raw_asset_files[asset_name].seek(0)
return raw_asset_files[asset_name]
# Otherwise, extract it
raw_file = extract_asset(baserom, asset)
# If the asset has been requested before, save the file handle
if asset_name in assets_requested:
raw_asset_files[asset_name] = raw_file
# Otherwise, just mark the asset as being requested once before
else:
assets_requested.add(asset_name)
return raw_file
def extract_asset(baserom, asset):
rom_offset = int(asset["rom_offset"], 16)
baserom.seek(rom_offset)
asset_magic = baserom.read(4)
if asset_magic == b"MIO0":
asset_block = extract_mio0_block(baserom, asset)
elif asset_magic == b"TKMK":
asset_block = extract_tkmk_block(baserom, asset)
else: # Raw asset, no compression
# This is silly
asset_block = baserom
asset_block.seek(rom_offset)
return asset_from_block(asset_block, asset)
def asset_from_block(asset_block, asset):
if asset["type"] in { "ia1" }:
asset_size = ((asset["width"] * asset["height"]) + 7) // 8
elif asset["type"] in { "ci4", "ia4", "i4" }:
asset_size = ((asset["width"] * asset["height"]) + 1) // 2
elif asset["type"] in { "ci8", "ia8", "i8" }:
asset_size = asset["width"] * asset["height"]
elif asset["type"] in { "ia16", "rgba16" }:
asset_size = asset["width"] * asset["height"] * 2
elif asset["type"] in { "rgba32" }:
asset_size = asset["width"] * asset["height"] * 4
elif asset["type"] in { "bin" }:
asset_size = asset["size"]
else:
print("TODO: raise an exception here")
return None
# If not specified, assume the asset begins at the start of the block
block_offset = int(asset.get("block_offset", "0x0"), 16)
# The SEEK_CUR here is incredibly silly, but its done to make the
# similarly silly raw block handling work.
# For MIO0 and TKMK this should make no difference
asset_block.seek(block_offset, os.SEEK_CUR)
asset_data = asset_block.read(asset_size)
asset_file = tempfile.NamedTemporaryFile(mode="wb", prefix="raw_asset_")
asset_file.write(asset_data)
asset_file.flush()
return asset_file
# This dict maps ROM offsets to file-like objects. This way we don't have to keep
# decompressing/collecting the same block of MIO0 data from the baserom
mio0_blocks = dict()
mio0s_requested = set()
def extract_mio0_block(baserom, asset):
global mio0_blocks
global mio0s_requested
rom_offset = asset["rom_offset"]
if rom_offset in mio0_blocks:
mio0_blocks[rom_offset].seek(0)
return mio0_blocks[rom_offset]
mio0_file = tempfile.NamedTemporaryFile(mode="rb", prefix="mio0_block_")
subprocess.run(
[
"./tools/mio0",
"-d",
"-o", rom_offset,
baserom.name,
mio0_file.name,
],
check=True
)
if rom_offset in mio0s_requested:
mio0_blocks[rom_offset] = mio0_file
else:
mio0s_requested.add(rom_offset)
return mio0_file
def extract_tkmk_block(baserom, asset):
rom_offset = asset["rom_offset"]
alpha = asset.get("alpha", "0x01")
tkmk_block = tempfile.NamedTemporaryFile(mode="rb", prefix="tkmk_block_")
subprocess.run(
[
"./tools/tkmk00",
"-d",
"-o", rom_offset,
"-a", alpha,
baserom.name,
tkmk_block.name,
],
check=True,
)
return tkmk_block
def export_stitched_palette(baserom, asset, asset_list):
palette_raw = tempfile.NamedTemporaryFile(mode="wb", prefix="stitched_palette")
# For stitched palettes, expect the "tlut" key to be a list of strings
for tlut_name in asset["tlut"]:
tlut = asset_list[tlut_name]
tlut_file = get_asset_raw(baserom, tlut)
with open(tlut_file.name, "rb") as f:
shutil.copyfileobj(f, palette_raw)
palette_raw.flush()
output_dir = os.path.join(asset["output_dir"], "stitched_palettes")
stitched_file_name = os.path.join(output_dir, f'{asset["name"]}_stitched_palette.png')
os.makedirs(output_dir, exist_ok=True)
cmd = [
"./tools/n64graphics",
"-e", palette_raw.name,
"-g", stitched_file_name,
# While hard coding stuff like this is usually bad, its justifiable here
"-f", "rgba16",
"-w", "16",
"-h", "16",
]
subprocess.run(cmd, check=True)
return palette_raw
def export_wheel_mask(asset_file, asset):
output_dir = os.path.join(asset["output_dir"], "wheel_masks")
wheel_mask_file_name = os.path.join(output_dir, f'{asset["name"]}_wheel_mask.raw')
os.makedirs(output_dir, exist_ok=True)
with open(asset_file.name, "rb") as f, open(wheel_mask_file_name, mode="wb") as wheel_mask:
for index in f.read():
# This is super-duper specific to MK64
if index < 0xC0:
wheel_mask.write((0).to_bytes(1, "big"))
else:
wheel_mask.write((1).to_bytes(1, "big"))
def export_image(baserom, asset, asset_list):
asset_file = get_asset_raw(baserom, asset)
asset_png_filename = os.path.join(asset["output_dir"], f'{asset["name"]}.png')
os.makedirs(asset["output_dir"], exist_ok=True)
cmd = [
"./tools/n64graphics",
"-e", asset_file.name,
"-g", asset_png_filename,
"-f", asset["type"],
"-w", str(asset["width"]),
"-h", str(asset["height"]),
]
if asset["type"] in ("ci4", "ci8"):
# This is hightly specific to MK64:
# Some TLUT images have a "stitched palette". This means that they're palette is actually
# two smaller palettes stitched together.
if "stitched_palette" in asset.get("meta", set()):
palette_file = export_stitched_palette(baserom, asset, asset_list)
# If the image uses a "stitched palette" we need to create a "wheel mask" file too
export_wheel_mask(asset_file, asset)
# The palette is "normal", expect the "tlut" key to be a single string
else:
tlut = asset_list[asset["tlut"]]
palette_file = get_asset_raw(baserom, tlut)
cmd.extend([
"-c", "rgba16", # I don't think anything other than rgba16 is even valid for N64 stuff...
"-p", palette_file.name
])
subprocess.run(cmd, check=True)
def export_bin(baserom, asset):
asset_filename = os.path.join({asset["output_dir"]}, f'{asset["name"]}.{asset["type"]}')
os.makedirs(asset["output_dir"], exist_ok=True)
with open(asset_filename, "wb") as asset_file:
baserom.seek(int(asset["rom_offset"], 16))
asset_data = baserom.read(int(asset["size"], 16))
asset_file.write(asset_data)
# TODO: use a proper argument parser
baserom_name = sys.argv[1]
# really, this should be a list of json files, that way we can just do $< in the Makefile
assest_json_file = sys.argv[2]
image_types = { "rgba16", "rgba32", "ci4", "ci8", "i4", "i8", "ia4", "ia8", "ia16", "ia1" }
# Types that extracted as-is from the ROM. No decompression or converting, just rip the bytes out of the ROM
# Hopefully some day in the future we'll be able to properly extract m64 types (music of one variety or another)
raw_types = { "bin", "m64" }
try:
with open(baserom_name, "rb") as baserom, open(assest_json_file, "r") as json_file:
asset_list = json.load(json_file)
for asset_name, asset in asset_list.items():
# Kind of silly, but makes assets easier to work with
asset["name"] = asset_name
# All output directories are relative to the directory the json file resides in
asset["output_dir"] = os.path.join(os.path.dirname(os.path.realpath(assest_json_file)), asset["output_dir"])
for asset_name, asset in asset_list.items():
if asset["type"] in image_types:
export_image(baserom, asset, asset_list)
elif asset["type"] in raw_types:
export_bin(baserom, asset)
else:
# Should we raise here?
print(f"Unexpected asset type {0}", asset["type"])
except Exception as e:
print(e.strerror)