mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Lets do this again.
This commit is contained in:
@@ -12,6 +12,13 @@ VERSION := us_1.0
|
||||
NON_MATCHING ?= 0
|
||||
$(eval $(call validate-option,NON_MATCHING,0 1))
|
||||
|
||||
COMPILE_ASSETS ?= 0
|
||||
$(eval $(call validate-option,COMPILE_ASSETS,0 1))
|
||||
|
||||
ifeq ($(COMPILE_ASSETS),1)
|
||||
DUMMY != ./tools/dkr_assets_tool -c ./assets $(VERSION)
|
||||
endif
|
||||
|
||||
ifeq ($(VERSION),us_1.0)
|
||||
DEFINES += VERSION_US_1_0=1
|
||||
endif
|
||||
@@ -111,6 +118,11 @@ endif
|
||||
endif
|
||||
endif
|
||||
|
||||
################################
|
||||
|
||||
# Removes the enums_cache if it exists in the build folde, incase someone modified the include/enums.h file.
|
||||
DUMMY != rm -Rf build/enums_cache
|
||||
|
||||
################ Target Executable and Sources ###############
|
||||
|
||||
# BUILD_DIR is location where all build artifacts are placed
|
||||
@@ -175,8 +187,8 @@ FixPath = $(subst /,,$1)
|
||||
|
||||
N64CRC = $(TOOLS_DIR)/n64crc
|
||||
FIXCHECKSUMS = python3 $(TOOLS_DIR)/python/calc_func_checksums.py $(VERSION)
|
||||
TEXBUILDER = $(TOOLS_DIR)/dkr_texbuilder
|
||||
COMPRESS = $(TOOLS_DIR)/dkr_decompressor -c
|
||||
COMPRESS = $(TOOLS_DIR)/dkr_assets_tool -fc
|
||||
BUILDER = $(TOOLS_DIR)/dkr_assets_tool -b $(VERSION) ./assets
|
||||
|
||||
LIB_DIRS := lib/
|
||||
ASM_DIRS := asm/ asm/boot/ asm/assets/ lib/asm/ lib/asm/non_decompilable
|
||||
@@ -208,8 +220,6 @@ CC_CHECK_CFLAGS += -Wno-builtin-declaration-mismatch -Wno-pointer-to-int-cast -W
|
||||
|
||||
####################### ASSETS #########################
|
||||
|
||||
# TODO: Clean this up if possible
|
||||
|
||||
# All the asset subfolders to create in the build folder.
|
||||
ASSETS_DIRS := audio bin fonts ids levels levels/headers levels/models levels/names levels/objectMaps misc objects objects/animations objects/headers objects/models particles particles/behaviors particles/particles sprites text text/game text/menu textures textures/2d textures/3d tt_ghosts unknown_0 ucode
|
||||
|
||||
@@ -218,100 +228,67 @@ UCODE_DIR = ucode/$(VERSION)
|
||||
|
||||
ASSETS_COPY = cp
|
||||
|
||||
AUDIO_IN_DIR = $(ASSETS_DIR)/audio
|
||||
AUDIO_OUT_DIR = $(BUILD_DIR)/audio
|
||||
ALL_ASSETS_BUILT += $(patsubst $(AUDIO_IN_DIR)/%.bin,$(AUDIO_OUT_DIR)/%.bin,$(wildcard $(AUDIO_IN_DIR)/*.bin))
|
||||
# Makes name uppercase, and also replaces '/' with '_' for subfolders.
|
||||
# Doing all those subst calls *should* be faster than `$(shell echo '$1' | tr '[:lower:]' '[:upper:]')
|
||||
GET_VAR_NAME = $(subst /,_,$(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,$(subst y,Y,$(subst z,Z,$1)))))))))))))))))))))))))))
|
||||
|
||||
BIN_IN_DIR = $(ASSETS_DIR)/bin
|
||||
BIN_OUT_DIR = $(BUILD_DIR)/bin
|
||||
ALL_ASSETS_BUILT += $(patsubst $(BIN_IN_DIR)/%.bin,$(BIN_OUT_DIR)/%.bin,$(wildcard $(BIN_IN_DIR)/*.bin))
|
||||
# $1 = Input/Output directories name
|
||||
define DEFINE_BINARY_FILES
|
||||
ALL_ASSETS_BUILT += $(patsubst $($1_IN_DIR)/%.bin,$($1_OUT_DIR)/%.bin,$(wildcard $($1_IN_DIR)/*.bin))
|
||||
endef
|
||||
# $1 = Input/Output directories name
|
||||
define DEFINE_COMPRESSED_BINARY_FILES
|
||||
ALL_ASSETS_BUILT += $(patsubst $($1_IN_DIR)/%.cbin,$($1_OUT_DIR)/%.bin,$(wildcard $($1_IN_DIR)/*.cbin))
|
||||
endef
|
||||
# $1 = Input/Output directories name
|
||||
define DEFINE_JSON_FILES
|
||||
ALL_ASSETS_BUILT += $(patsubst $($1_IN_DIR)/%.json,$($1_OUT_DIR)/%.bin,$(wildcard $($1_IN_DIR)/*.json))
|
||||
endef
|
||||
# $1 = Input/Output directories name
|
||||
define DEFINE_JSON_AND_BINARY_FILES
|
||||
$(eval $(call DEFINE_JSON_FILES,$1))
|
||||
$(eval $(call DEFINE_BINARY_FILES,$1))
|
||||
endef
|
||||
|
||||
FONTS_IN_DIR = $(ASSETS_DIR)/fonts
|
||||
FONTS_OUT_DIR = $(BUILD_DIR)/fonts
|
||||
ALL_ASSETS_BUILT += $(patsubst $(FONTS_IN_DIR)/%.bin,$(FONTS_OUT_DIR)/%.bin,$(wildcard $(FONTS_IN_DIR)/*.bin))
|
||||
# $1 = folder name, $2 = define function
|
||||
define DEFINE_SECTION_FILES
|
||||
$(eval VAR_NAME := $(call GET_VAR_NAME,$1))
|
||||
$(eval $(VAR_NAME)_IN_DIR = $(ASSETS_DIR)/$1)
|
||||
$(eval $(VAR_NAME)_OUT_DIR = $(BUILD_DIR)/$1)
|
||||
$(eval $(call $2,$(VAR_NAME)))
|
||||
endef
|
||||
|
||||
IDS_IN_DIR = $(ASSETS_DIR)/ids
|
||||
IDS_OUT_DIR = $(BUILD_DIR)/ids
|
||||
ALL_ASSETS_BUILT += $(patsubst $(IDS_IN_DIR)/%.bin,$(IDS_OUT_DIR)/%.bin,$(wildcard $(IDS_IN_DIR)/*.bin))
|
||||
###### Define section files into the ALL_ASSETS_BUILT variable ######
|
||||
|
||||
LEVELS_IN_DIR = $(ASSETS_DIR)/levels
|
||||
LEVELS_OUT_DIR = $(BUILD_DIR)/levels
|
||||
LEVEL_HEADERS_IN_DIR = $(LEVELS_IN_DIR)/headers
|
||||
LEVEL_HEADERS_OUT_DIR = $(LEVELS_OUT_DIR)/headers
|
||||
LEVEL_MODELS_IN_DIR = $(LEVELS_IN_DIR)/models
|
||||
LEVEL_MODELS_OUT_DIR = $(LEVELS_OUT_DIR)/models
|
||||
LEVEL_NAMES_IN_DIR = $(LEVELS_IN_DIR)/names
|
||||
LEVEL_NAMES_OUT_DIR = $(LEVELS_OUT_DIR)/names
|
||||
LEVEL_OBJMAPS_IN_DIR = $(LEVELS_IN_DIR)/objectMaps
|
||||
LEVEL_OBJMAPS_OUT_DIR = $(LEVELS_OUT_DIR)/objectMaps
|
||||
ALL_ASSETS_BUILT += $(patsubst $(LEVEL_HEADERS_IN_DIR)/%.bin,$(LEVEL_HEADERS_OUT_DIR)/%.bin,$(wildcard $(LEVEL_HEADERS_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(LEVEL_MODELS_IN_DIR)/%.cbin,$(LEVEL_MODELS_OUT_DIR)/%.bin,$(wildcard $(LEVEL_MODELS_IN_DIR)/*.cbin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(LEVEL_NAMES_IN_DIR)/%.bin,$(LEVEL_NAMES_OUT_DIR)/%.bin,$(wildcard $(LEVEL_NAMES_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(LEVEL_OBJMAPS_IN_DIR)/%.cbin,$(LEVEL_OBJMAPS_OUT_DIR)/%.bin,$(wildcard $(LEVEL_OBJMAPS_IN_DIR)/*.cbin))
|
||||
|
||||
MISC_IN_DIR = $(ASSETS_DIR)/misc
|
||||
MISC_OUT_DIR = $(BUILD_DIR)/misc
|
||||
ALL_ASSETS_BUILT += $(patsubst $(MISC_IN_DIR)/%.bin,$(MISC_OUT_DIR)/%.bin,$(wildcard $(MISC_IN_DIR)/*.bin))
|
||||
|
||||
OBJECTS_IN_DIR = $(ASSETS_DIR)/objects
|
||||
OBJECTS_OUT_DIR = $(BUILD_DIR)/objects
|
||||
OBJECT_ANIMS_IN_DIR = $(OBJECTS_IN_DIR)/animations
|
||||
OBJECT_ANIMS_OUT_DIR = $(OBJECTS_OUT_DIR)/animations
|
||||
OBJECT_HEADERS_IN_DIR = $(OBJECTS_IN_DIR)/headers
|
||||
OBJECT_HEADERS_OUT_DIR = $(OBJECTS_OUT_DIR)/headers
|
||||
OBJECT_MODELS_IN_DIR = $(OBJECTS_IN_DIR)/models
|
||||
OBJECT_MODELS_OUT_DIR = $(OBJECTS_OUT_DIR)/models
|
||||
ALL_ASSETS_BUILT += $(patsubst $(OBJECTS_IN_DIR)/%.bin,$(OBJECTS_OUT_DIR)/%.bin,$(wildcard $(OBJECTS_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(OBJECT_ANIMS_IN_DIR)/%.cbin,$(OBJECT_ANIMS_OUT_DIR)/%.bin,$(wildcard $(OBJECT_ANIMS_IN_DIR)/*.cbin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(OBJECT_HEADERS_IN_DIR)/%.bin,$(OBJECT_HEADERS_OUT_DIR)/%.bin,$(wildcard $(OBJECT_HEADERS_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(OBJECT_MODELS_IN_DIR)/%.cbin,$(OBJECT_MODELS_OUT_DIR)/%.bin,$(wildcard $(OBJECT_MODELS_IN_DIR)/*.cbin))
|
||||
|
||||
PARTICLES_IN_DIR = $(ASSETS_DIR)/particles
|
||||
PARTICLES_OUT_DIR = $(BUILD_DIR)/particles
|
||||
PART_BEHAVIORS_IN_DIR = $(PARTICLES_IN_DIR)/behaviors
|
||||
PART_BEHAVIORS_OUT_DIR = $(PARTICLES_OUT_DIR)/behaviors
|
||||
PART_PARTICLES_IN_DIR = $(PARTICLES_IN_DIR)/particles
|
||||
PART_PARTICLES_OUT_DIR = $(PARTICLES_OUT_DIR)/particles
|
||||
ALL_ASSETS_BUILT += $(patsubst $(PART_BEHAVIORS_IN_DIR)/%.bin,$(PART_BEHAVIORS_OUT_DIR)/%.bin,$(wildcard $(PART_BEHAVIORS_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(PART_PARTICLES_IN_DIR)/%.bin,$(PART_PARTICLES_OUT_DIR)/%.bin,$(wildcard $(PART_PARTICLES_IN_DIR)/*.bin))
|
||||
|
||||
SPRITES_IN_DIR = $(ASSETS_DIR)/sprites
|
||||
SPRITES_OUT_DIR = $(BUILD_DIR)/sprites
|
||||
ALL_ASSETS_BUILT += $(patsubst $(SPRITES_IN_DIR)/%.bin,$(SPRITES_OUT_DIR)/%.bin,$(wildcard $(SPRITES_IN_DIR)/*.bin))
|
||||
|
||||
TEXT_IN_DIR = $(ASSETS_DIR)/text
|
||||
TEXT_OUT_DIR = $(BUILD_DIR)/text
|
||||
TEXT_GAME_IN_DIR = $(TEXT_IN_DIR)/game
|
||||
TEXT_GAME_OUT_DIR = $(TEXT_OUT_DIR)/game
|
||||
TEXT_MENU_IN_DIR = $(TEXT_IN_DIR)/menu
|
||||
TEXT_MENU_OUT_DIR = $(TEXT_OUT_DIR)/menu
|
||||
ALL_ASSETS_BUILT += $(patsubst $(TEXT_GAME_IN_DIR)/%.bin,$(TEXT_GAME_OUT_DIR)/%.bin,$(wildcard $(TEXT_GAME_IN_DIR)/*.bin))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(TEXT_MENU_IN_DIR)/%.bin,$(TEXT_MENU_OUT_DIR)/%.bin,$(wildcard $(TEXT_MENU_IN_DIR)/*.bin))
|
||||
|
||||
TEXTURES_IN_DIR = $(ASSETS_DIR)/textures
|
||||
TEXTURES_OUT_DIR = $(BUILD_DIR)/textures
|
||||
TEXTURES_2D_IN_DIR = $(TEXTURES_IN_DIR)/2d
|
||||
TEXTURES_2D_OUT_DIR = $(TEXTURES_OUT_DIR)/2d
|
||||
TEXTURES_3D_IN_DIR = $(TEXTURES_IN_DIR)/3d
|
||||
TEXTURES_3D_OUT_DIR = $(TEXTURES_OUT_DIR)/3d
|
||||
ALL_ASSETS_BUILT += $(patsubst $(TEXTURES_2D_IN_DIR)/%.png,$(TEXTURES_2D_OUT_DIR)/%.bin,$(wildcard $(TEXTURES_2D_IN_DIR)/*.png))
|
||||
ALL_ASSETS_BUILT += $(patsubst $(TEXTURES_3D_IN_DIR)/%.png,$(TEXTURES_3D_OUT_DIR)/%.bin,$(wildcard $(TEXTURES_3D_IN_DIR)/*.png))
|
||||
|
||||
TT_GHOSTS_IN_DIR = $(ASSETS_DIR)/tt_ghosts
|
||||
TT_GHOSTS_OUT_DIR = $(BUILD_DIR)/tt_ghosts
|
||||
ALL_ASSETS_BUILT += $(patsubst $(TT_GHOSTS_IN_DIR)/%.bin,$(TT_GHOSTS_OUT_DIR)/%.bin,$(wildcard $(TT_GHOSTS_IN_DIR)/*.bin))
|
||||
|
||||
UNKNOWN_0_IN_DIR = $(ASSETS_DIR)/unknown_0
|
||||
UNKNOWN_0_OUT_DIR = $(BUILD_DIR)/unknown_0
|
||||
ALL_ASSETS_BUILT += $(patsubst $(UNKNOWN_0_IN_DIR)/%.bin,$(UNKNOWN_0_OUT_DIR)/%.bin,$(wildcard $(UNKNOWN_0_IN_DIR)/*.bin))
|
||||
$(call DEFINE_SECTION_FILES,audio,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,bin,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,fonts,DEFINE_JSON_AND_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,ids,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,levels/headers,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,levels/models,DEFINE_COMPRESSED_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,levels/names,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,levels/objectMaps,DEFINE_COMPRESSED_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,misc,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,objects,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,objects/animations,DEFINE_COMPRESSED_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,objects/headers,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,objects/models,DEFINE_COMPRESSED_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,particles/behaviors,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,particles/particles,DEFINE_BINARY_FILES)
|
||||
$(call DEFINE_SECTION_FILES,sprites,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,text/game,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,text/menu,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,textures/2d,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,textures/3d,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,tt_ghosts,DEFINE_JSON_FILES)
|
||||
$(call DEFINE_SECTION_FILES,unknown_0,DEFINE_BINARY_FILES)
|
||||
|
||||
# Microcode
|
||||
UCODE_IN_DIR = $(UCODE_DIR)
|
||||
UCODE_OUT_DIR = $(BUILD_DIR)/ucode
|
||||
UCODE = $(wildcard $(UCODE_IN_DIR)/*.bin)
|
||||
ALL_ASSETS_BUILT += $(patsubst $(UCODE_IN_DIR)/%.bin,$(UCODE_OUT_DIR)/%.bin,$(UCODE))
|
||||
|
||||
#ALL_ASSETS_BUILT := $(ANIMATIONS_BUILT) $(AUDIO_BUILT) $(BILLBOARDS_BUILT) $(BINS_BUILT) $(CHEATS_BUILT) $(FONTS_BUILT) $(LEVELS_BUILT) $(OBJECTS_BUILT) $(TEXTURES_BUILT) $(PARTICLES_BUILT) $(TEXT_BUILT) $(TT_GHOSTS_BUILT) $(UCODE_BUILT) $(LUT_BUILT)
|
||||
|
||||
####################### LIBULTRA #########################
|
||||
|
||||
$(BUILD_DIR)/lib/%.o: OPT_FLAGS := -O2 -Xfullwarn
|
||||
@@ -388,98 +365,55 @@ dont_remove_asset_files: $(ALL_ASSETS_BUILT)
|
||||
|
||||
# All assets should output a .bin file
|
||||
|
||||
$(AUDIO_OUT_DIR)/%.bin: $(AUDIO_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
# $1 = folder name, $2 = Print Message
|
||||
define CREATE_BINARY_ASSET_TARGET
|
||||
$(eval VAR_NAME := $(call GET_VAR_NAME,$1))
|
||||
$$($$(VAR_NAME)_OUT_DIR)/%.bin: $$($$(VAR_NAME)_IN_DIR)/%.bin
|
||||
$$(call print,$2:,$$<,$$@)
|
||||
$$(V)$$(ASSETS_COPY) $$^ $$@
|
||||
endef
|
||||
|
||||
$(BIN_OUT_DIR)/%.bin: $(BIN_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(FONTS_OUT_DIR)/%.bin: $(FONTS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(IDS_OUT_DIR)/%.bin: $(IDS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(LEVEL_HEADERS_OUT_DIR)/%.bin: $(LEVEL_HEADERS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
# $1 = folder name, $2 = Print Message
|
||||
define CREATE_COMPRESSED_ASSET_TARGET
|
||||
$(eval VAR_NAME := $(call GET_VAR_NAME,$1))
|
||||
$$($$(VAR_NAME)_OUT_DIR)/%.bin: $$($$(VAR_NAME)_IN_DIR)/%.cbin
|
||||
$$(call print,$2:,$$<,$$@)
|
||||
$$(V)$$(COMPRESS) $$^ $$@
|
||||
endef
|
||||
|
||||
$(LEVEL_MODELS_OUT_DIR)/%.bin: $(LEVEL_MODELS_IN_DIR)/%.cbin
|
||||
$(call print,Compressing:,$<,$@)
|
||||
$(V)$(COMPRESS) $^ $@
|
||||
|
||||
$(LEVEL_NAMES_OUT_DIR)/%.bin: $(LEVEL_NAMES_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
# $1 = folder name, $2 = Print Message
|
||||
define CREATE_JSON_ASSET_TARGET
|
||||
$(eval VAR_NAME := $(call GET_VAR_NAME,$1))
|
||||
$$($$(VAR_NAME)_OUT_DIR)/%.bin: $$($$(VAR_NAME)_IN_DIR)/%.json
|
||||
$$(call print,$2:,$$<,$$@)
|
||||
$$(V)$$(BUILDER) $$^ $$@
|
||||
endef
|
||||
|
||||
$(LEVEL_OBJMAPS_OUT_DIR)/%.bin: $(LEVEL_OBJMAPS_IN_DIR)/%.cbin
|
||||
$(call print,Compressing:,$<,$@)
|
||||
$(V)$(COMPRESS) $^ $@
|
||||
|
||||
$(MISC_OUT_DIR)/%.bin: $(MISC_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(OBJECTS_OUT_DIR)/%.bin: $(OBJECTS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(OBJECT_ANIMS_OUT_DIR)/%.bin: $(OBJECT_ANIMS_IN_DIR)/%.cbin
|
||||
$(call print,Compressing:,$<,$@)
|
||||
$(V)$(COMPRESS) $^ $@
|
||||
|
||||
$(OBJECT_HEADERS_OUT_DIR)/%.bin: $(OBJECT_HEADERS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(OBJECT_MODELS_OUT_DIR)/%.bin: $(OBJECT_MODELS_IN_DIR)/%.cbin
|
||||
$(call print,Compressing:,$<,$@)
|
||||
$(V)$(COMPRESS) $^ $@
|
||||
|
||||
$(PART_BEHAVIORS_OUT_DIR)/%.bin: $(PART_BEHAVIORS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(PART_PARTICLES_OUT_DIR)/%.bin: $(PART_PARTICLES_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(SPRITES_OUT_DIR)/%.bin: $(SPRITES_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(TEXT_GAME_OUT_DIR)/%.bin: $(TEXT_GAME_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(TEXT_MENU_OUT_DIR)/%.bin: $(TEXT_MENU_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(TEXTURES_2D_OUT_DIR)/%.bin: $(TEXTURES_2D_IN_DIR)/%.png
|
||||
$(call print,Building Texture:,$<,$@)
|
||||
$(V)$(TEXBUILDER) $^ $@
|
||||
|
||||
$(TEXTURES_3D_OUT_DIR)/%.bin: $(TEXTURES_3D_IN_DIR)/%.png
|
||||
$(call print,Building Texture:,$<,$@)
|
||||
$(V)$(TEXBUILDER) $^ $@
|
||||
|
||||
$(TEXT_MENU_OUT_DIR)/%.bin: $(TEXT_MENU_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(TT_GHOSTS_OUT_DIR)/%.bin: $(TT_GHOSTS_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
$(UNKNOWN_0_OUT_DIR)/%.bin: $(UNKNOWN_0_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,audio,Copying Audio Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,bin,Copying Bin Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,fonts,Copying Fonts Binary))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,fonts,Building Fonts))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,ids,Copying IDs Binary))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,levels/headers,Building Level Header))
|
||||
$(eval $(call CREATE_COMPRESSED_ASSET_TARGET,levels/models,Compressing Level Model Binary))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,levels/names,Building Level Name))
|
||||
$(eval $(call CREATE_COMPRESSED_ASSET_TARGET,levels/objectMaps,Compressing Level Object Map Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,misc,Copying Misc Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,objects,Copying Object Binary))
|
||||
$(eval $(call CREATE_COMPRESSED_ASSET_TARGET,objects/animations,Compressing Object Animation Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,objects/headers,Copying Object Header Binary))
|
||||
$(eval $(call CREATE_COMPRESSED_ASSET_TARGET,objects/models,Compressing Object Model Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,particles/behaviors,Copying Particle Behavior Binary))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,particles/particles,Copying Particle Binary))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,sprites,Building Sprite))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,text/game,Building Game Text))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,text/menu,Building Menu Text))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,textures/2d,Building Texture (2D)))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,textures/3d,Building Texture (3D)))
|
||||
$(eval $(call CREATE_JSON_ASSET_TARGET,tt_ghosts,Building T.T. Ghost))
|
||||
$(eval $(call CREATE_BINARY_ASSET_TARGET,unknown_0,Copying Unknown_0 Binary))
|
||||
|
||||
# Microcode target
|
||||
$(UCODE_OUT_DIR)/%.bin: $(UCODE_IN_DIR)/%.bin
|
||||
$(call print,Copying:,$<,$@)
|
||||
$(V)$(ASSETS_COPY) $^ $@
|
||||
|
||||
+9392
-9319
File diff suppressed because it is too large
Load Diff
Regular → Executable
+1041
-558
File diff suppressed because one or more lines are too long
+3
-6
@@ -9,7 +9,7 @@ fi
|
||||
echo 'Extracting Assets...'
|
||||
|
||||
# Remove assets directory if it exists.
|
||||
ASSETS_DIR="./assets/$1"
|
||||
ASSETS_DIR="./assets/vanilla/$1"
|
||||
if [ -d "$ASSETS_DIR" ]; then
|
||||
rm -r $ASSETS_DIR
|
||||
fi
|
||||
@@ -20,13 +20,10 @@ if [ -d "$UCODE_DIR" ]; then
|
||||
rm -r $UCODE_DIR
|
||||
fi
|
||||
|
||||
if ! ./tools/dkr_extractor "$1" ./extract-ver ./baseroms . ; then
|
||||
if ! ./tools/dkr_assets_tool -e "$1" ./assets ./extract-ver ./baseroms . ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Generate the linker file (dkr.ld)
|
||||
./generate_ld.sh "$1"
|
||||
|
||||
echo 'Done.'
|
||||
|
||||
exit 0
|
||||
exit 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,65 @@
|
||||
#ifndef ENUMS_H
|
||||
#define ENUMS_H
|
||||
|
||||
/* All the enums defined here can be used in asset files */
|
||||
|
||||
typedef enum Vehicle {
|
||||
VEHICLE_CAR,
|
||||
VEHICLE_HOVERCRAFT,
|
||||
VEHICLE_PLANE,
|
||||
} Vehicle;
|
||||
|
||||
typedef enum Language {
|
||||
LANGUAGE_ENGLISH,
|
||||
LANGUAGE_GERMAN,
|
||||
LANGUAGE_FRENCH,
|
||||
LANGUAGE_JAPANESE,
|
||||
} Language;
|
||||
|
||||
typedef enum World {
|
||||
WORLD_NONE = -1, // This enum starts at -1 instead of 0.
|
||||
WORLD_CENTRAL_AREA,
|
||||
WORLD_DINO_DOMAIN,
|
||||
WORLD_SHERBET_ISLAND,
|
||||
WORLD_SNOWFLAKE_MOUNTAIN,
|
||||
WORLD_DRAGON_FOREST,
|
||||
WORLD_FUTURE_FUN_LAND,
|
||||
} World;
|
||||
|
||||
typedef enum RaceType {
|
||||
RACETYPE_DEFAULT = 0,
|
||||
RACETYPE_HORSESHOE_GULCH = 3,
|
||||
RACETYPE_HUBWORLD = 5,
|
||||
RACETYPE_CUTSCENE_1 = 6, // Not sure what the difference between these two are.
|
||||
RACETYPE_CUTSCENE_2 = 7,
|
||||
RACETYPE_BOSS = 8,
|
||||
RACETYPE_CHALLENGE_BATTLE = 64,
|
||||
RACETYPE_CHALLENGE_BANANAS = 65,
|
||||
RACETYPE_CHALLENGE_EGGS = 66,
|
||||
} RaceType;
|
||||
|
||||
typedef enum HorizontalAlignmentFlags {
|
||||
HORZ_ALIGN_LEFT = 0,
|
||||
HORZ_ALIGN_RIGHT = 1,
|
||||
HORZ_ALIGN_CENTER = 4,
|
||||
} HorizontalAlignmentFlags;
|
||||
|
||||
typedef enum VerticalAlignmentFlags {
|
||||
VERT_ALIGN_TOP = 0,
|
||||
VERT_ALIGN_BOTTOM = 2,
|
||||
VERT_ALIGN_MIDDLE = 8,
|
||||
} VerticalAlignmentFlags;
|
||||
|
||||
typedef enum AlignmentFlags {
|
||||
ALIGN_TOP_LEFT = VERT_ALIGN_TOP | HORZ_ALIGN_LEFT,
|
||||
ALIGN_TOP_CENTER = VERT_ALIGN_TOP | HORZ_ALIGN_CENTER,
|
||||
ALIGN_TOP_RIGHT = VERT_ALIGN_TOP | HORZ_ALIGN_RIGHT,
|
||||
ALIGN_MIDDLE_LEFT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_LEFT,
|
||||
ALIGN_MIDDLE_CENTER = VERT_ALIGN_MIDDLE | HORZ_ALIGN_CENTER,
|
||||
ALIGN_MIDDLE_RIGHT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_RIGHT,
|
||||
ALIGN_BOTTOM_LEFT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_LEFT,
|
||||
ALIGN_BOTTOM_CENTER = VERT_ALIGN_BOTTOM | HORZ_ALIGN_CENTER,
|
||||
ALIGN_BOTTOM_RIGHT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_RIGHT,
|
||||
} AlignmentFlags;
|
||||
|
||||
#endif
|
||||
+28
-23
@@ -3,39 +3,44 @@ CXX := g++
|
||||
CFLAGS := -I . -Wall -Wextra -Wno-unused-parameter -pedantic -std=c99 -O2 -s
|
||||
LDFLAGS := -lm
|
||||
PROGRAMS := n64crc
|
||||
CXX_PROGRAMS := dkr_cheats_encryptor dkr_decompressor dkr_extractor dkr_texbuilder
|
||||
CXX_PROGRAMS := dkr_assets_tool
|
||||
|
||||
BUILD_DIR := dkr_assets_tool_classes/_build
|
||||
|
||||
ENUMS_HEADER := ../include/enums.h
|
||||
|
||||
# From: https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make/18258352#18258352
|
||||
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
||||
|
||||
default: all
|
||||
|
||||
n64crc_SOURCES := n64crc.c
|
||||
|
||||
dkr_cheats_encryptor_SOURCES := dkr_cheats_encryptor.cpp
|
||||
|
||||
dkr_decompressor_SOURCES := dkr_decompressor.cpp $(wildcard dkr_decompressor_src/*.cpp dkr_decompressor_src/*.c)
|
||||
dkr_decompressor_CXXFLAGS := -lstdc++fs -lcrypto -lssl
|
||||
|
||||
dkr_extractor_SOURCES := dkr_extractor.cpp $(wildcard dkr_decompressor_src/*.cpp dkr_decompressor_src/*.c dkr_extractor_classes/*.cpp n64graphics/*.c)
|
||||
dkr_extractor_CXXFLAGS := -lstdc++fs -lcrypto -lssl -lpthread
|
||||
|
||||
dkr_texbuilder_SOURCES := dkr_texbuilder.cpp $(wildcard dkr_decompressor_src/*.cpp dkr_decompressor_src/*.c n64graphics/*.c)
|
||||
dkr_texbuilder_CXXFLAGS := -lstdc++fs
|
||||
|
||||
all: $(PROGRAMS) $(CXX_PROGRAMS)
|
||||
|
||||
clean:
|
||||
$(RM) $(PROGRAMS) $(CXX_PROGRAMS)
|
||||
rm -Rf $(PROGRAMS) $(CXX_PROGRAMS) $(BUILD_DIR)
|
||||
|
||||
define COMPILE
|
||||
$(1): $($1_SOURCES)
|
||||
$(CC) $(CFLAGS) $($1_CFLAGS) $$^ -o $$@ $(LDFLAGS) $($1_LDFLAGS)
|
||||
endef
|
||||
n64crc: n64crc.c
|
||||
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
|
||||
|
||||
define COMPILE_CXX
|
||||
$(1): $($1_SOURCES)
|
||||
$(CXX) $$^ -o $$@ $($1_CXXFLAGS) $(LDFLAGS) $($1_LDFLAGS)
|
||||
endef
|
||||
dkr_assets_tool_CPP_FILES := dkr_assets_tool.cpp \
|
||||
$(call rwildcard,dkr_assets_tool_classes,*.cpp)
|
||||
|
||||
$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p))))
|
||||
$(foreach p,$(CXX_PROGRAMS),$(eval $(call COMPILE_CXX,$(p))))
|
||||
dkr_assets_tool_C_FILES := $(call rwildcard,dkr_assets_tool_classes,*.c)
|
||||
|
||||
dkr_assets_tool_OBJ_FILES := $(foreach file,$(dkr_assets_tool_C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
|
||||
$(foreach file,$(dkr_assets_tool_CPP_FILES),$(BUILD_DIR)/$(file:.cpp=.o))
|
||||
|
||||
DUMMY != mkdir -p $(sort $(dir $(dkr_assets_tool_OBJ_FILES)))
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c
|
||||
$(CXX) -c $^ -o $@ --std=c++17 -lstdc++fs -lcrypto -lssl -lpthread $(LDFLAGS)
|
||||
$(BUILD_DIR)/%.o: %.cpp
|
||||
$(CXX) -c $< -o $@ --std=c++17 -lstdc++fs -lcrypto -lssl -lpthread $(LDFLAGS)
|
||||
|
||||
dkr_assets_tool: $(dkr_assets_tool_OBJ_FILES)
|
||||
$(CXX) $^ -o $@ --std=c++17 -lstdc++fs -lcrypto -lssl -lpthread $(LDFLAGS)
|
||||
|
||||
.PHONY: all clean default
|
||||
|
||||
|
||||
Executable
BIN
Binary file not shown.
@@ -0,0 +1,315 @@
|
||||
/**
|
||||
* This tool handles everything assets-related including extracting and building.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "dkr_assets_tool_classes/common/util.h"
|
||||
#include "dkr_assets_tool_classes/extractor/extractor.h"
|
||||
#include "dkr_assets_tool_classes/builder/builder.h"
|
||||
#include "dkr_assets_tool_classes/make_asset_files/asset_enums_header.h"
|
||||
#include "dkr_assets_tool_classes/make_asset_files/asset_asm_data.h"
|
||||
#include "dkr_assets_tool_classes/compiler/compiler.h"
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
void print_usage() {
|
||||
std::cout << "---- Usages -------------------------------------------------------------" << std::endl;
|
||||
std::cout << "Extracting assets: ./dkr_assets_tool -e <version> <configs path> <baseroms path> <output path>" << std::endl;
|
||||
std::cout << "Building an asset: ./dkr_assets_tool -b <version> <assets path> <source path> <output path>" << std::endl;
|
||||
std::cout << "Creating includes: ./dkr_assets_tool -i <version> <assets path> <include directory> <build directory> <asm output directory>" << std::endl;
|
||||
std::cout << "Compiling assets: ./dkr_assets_tool -c <version> <assets path>" << std::endl;
|
||||
std::cout << "Compress file: ./dkr_assets_tool -fc <input_filename> <output_filename>" << std::endl;
|
||||
std::cout << "Decompress file: ./dkr_assets_tool -fd <input_filename> <output_filename>" << std::endl;
|
||||
std::cout << "-------------------------------------------------------------------------" << std::endl;
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
typedef enum _ToolType {
|
||||
TT_DO_NOTHING,
|
||||
TT_EXTRACT,
|
||||
TT_BUILD,
|
||||
TT_ASSET_INCLUDES,
|
||||
TT_ASSET_COMPILE,
|
||||
TT_ASSET_COMPRESS_FILE,
|
||||
TT_ASSET_DECOMPRESS_FILE,
|
||||
} ToolType;
|
||||
|
||||
typedef struct _CmdArgOptions {
|
||||
ToolType type;
|
||||
std::vector<std::string> paths;
|
||||
} CmdArgOptions;
|
||||
|
||||
CmdArgOptions options;
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
typedef enum _CurrentParseOption {
|
||||
PO_NONE,
|
||||
PO_TYPE
|
||||
} CurrentParseOption;
|
||||
|
||||
template <class T>
|
||||
void invalid_arg_error(T arg) {
|
||||
std::cout << "Error: Invalid argument \"" << arg << "\"" << std::endl;
|
||||
}
|
||||
|
||||
std::string get_cmd_from_parse_option(ToolType type) {
|
||||
switch(type) {
|
||||
case TT_EXTRACT: return "-e";
|
||||
case TT_BUILD: return "-b";
|
||||
case TT_ASSET_INCLUDES: return "-i";
|
||||
case TT_ASSET_COMPILE: return "-c";
|
||||
case TT_ASSET_COMPRESS_FILE: return "-fc";
|
||||
case TT_ASSET_DECOMPRESS_FILE: return "-fd";
|
||||
}
|
||||
return "(Invalid option)";
|
||||
}
|
||||
|
||||
bool parse_options(int argc, char *argv[]) {
|
||||
std::vector<std::string> args(argv, argv+argc);
|
||||
|
||||
if(argc == 1) {
|
||||
return false; // Display usage
|
||||
}
|
||||
|
||||
// Parse options from command line.
|
||||
bool parsingCmd = false;
|
||||
int curOptionState = 0;
|
||||
int curOptionArgs = 0;
|
||||
CurrentParseOption curOption = PO_NONE;
|
||||
for (size_t i = 1; i < args.size(); ++i) {
|
||||
if(args[i][0] == '-') {
|
||||
if(parsingCmd) {
|
||||
std::cout << "Error: Not enough args for the current command \""
|
||||
<< get_cmd_from_parse_option(options.type) << "\"" << std::endl;
|
||||
return false;
|
||||
}
|
||||
if(args[i] == "-e") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 1;
|
||||
options.type = TT_EXTRACT;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-b") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 2;
|
||||
options.type = TT_BUILD;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-i") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 3;
|
||||
options.type = TT_ASSET_INCLUDES;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-c") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 4;
|
||||
options.type = TT_ASSET_COMPILE;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-fc") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 5;
|
||||
options.type = TT_ASSET_COMPRESS_FILE;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-fd") {
|
||||
curOption = PO_TYPE;
|
||||
curOptionState = 6;
|
||||
options.type = TT_ASSET_DECOMPRESS_FILE;
|
||||
parsingCmd = true;
|
||||
} else if(args[i] == "-h") {
|
||||
return false;
|
||||
} else {
|
||||
std::cout << "Error: Invalid option " << args[i] << std::endl;
|
||||
return false;
|
||||
}
|
||||
curOptionArgs = 0;
|
||||
} else {
|
||||
if(!parsingCmd) {
|
||||
std::cout << "Error: Too many args for the current command \""
|
||||
<< get_cmd_from_parse_option(options.type) << "\"" << std::endl;
|
||||
return false;
|
||||
}
|
||||
switch(curOption) {
|
||||
case PO_TYPE:
|
||||
switch(curOptionState) {
|
||||
case 1: // Extractor
|
||||
switch(curOptionArgs) {
|
||||
case 0: // version
|
||||
case 1: // assets directory
|
||||
case 2: // configs directory
|
||||
case 3: // baseroms directory
|
||||
options.paths.push_back(args[i]);
|
||||
break;
|
||||
case 4: // output
|
||||
options.paths.push_back(args[i]);
|
||||
// End of arguments.
|
||||
parsingCmd = false;
|
||||
curOption = PO_NONE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2: // Builder
|
||||
switch(curOptionArgs) {
|
||||
case 0: // version
|
||||
case 1: // assets directory
|
||||
case 2: // source path
|
||||
options.paths.push_back(args[i]);
|
||||
break;
|
||||
case 3: // output
|
||||
options.paths.push_back(args[i]);
|
||||
// End of arguments.
|
||||
parsingCmd = false;
|
||||
curOption = PO_NONE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3: // Asset header
|
||||
switch(curOptionArgs) {
|
||||
case 0: // Assets directory
|
||||
case 1: // Enum file output path
|
||||
case 2: // Build directory
|
||||
case 3: // Asm output directory
|
||||
options.paths.push_back(args[i]);
|
||||
break;
|
||||
case 4: // DKR version
|
||||
options.paths.push_back(args[i]);
|
||||
// End of arguments.
|
||||
parsingCmd = false;
|
||||
curOption = PO_NONE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4: // Compile assets
|
||||
case 5: // Compress file
|
||||
case 6: // Decompress file
|
||||
switch(curOptionArgs) {
|
||||
case 0: // Assets directory / Input filename
|
||||
options.paths.push_back(args[i]);
|
||||
break;
|
||||
case 1: // version / Output filename
|
||||
options.paths.push_back(args[i]);
|
||||
// End of arguments.
|
||||
parsingCmd = false;
|
||||
curOption = PO_NONE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: // This should hopefully never get called
|
||||
std::cout << "Error: You should not be seeing this message." << std::endl;
|
||||
return false;
|
||||
}
|
||||
curOptionArgs++;
|
||||
}
|
||||
}
|
||||
|
||||
if(parsingCmd) {
|
||||
std::cout << "Error: Not enough args for the current command \""
|
||||
<< get_cmd_from_parse_option(options.type) << "\"" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if(!parse_options(argc, argv)) {
|
||||
print_usage();
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch(options.type) {
|
||||
case TT_EXTRACT:
|
||||
{
|
||||
std::string version = options.paths[0]; // us_1.0
|
||||
std::string assetsDir = options.paths[1]; // <root>/assets
|
||||
std::string configsPath = options.paths[2]; // <root>/extract-ver
|
||||
std::string baseromsPath = options.paths[3]; // <root>/baseroms
|
||||
std::string outputPath = options.paths[4]; // <root>
|
||||
|
||||
set_assets_folder_path(assetsDir + "/vanilla");
|
||||
set_version(version);
|
||||
|
||||
Extractor extractor(version, configsPath, baseromsPath, outputPath);
|
||||
}
|
||||
break;
|
||||
case TT_BUILD:
|
||||
{
|
||||
std::string version = options.paths[0]; // us_1.0
|
||||
std::string assetsDir = options.paths[1]; // <root>/assets
|
||||
std::string sourcePath = options.paths[2]; // Input .json filepath
|
||||
std::string outputPath = options.paths[3]; // Output .bin filepath
|
||||
|
||||
set_assets_folder_path(assetsDir);
|
||||
set_version(version);
|
||||
|
||||
Builder builder(sourcePath, outputPath);
|
||||
}
|
||||
break;
|
||||
case TT_ASSET_INCLUDES:
|
||||
{
|
||||
std::string version = options.paths[0]; // us_1.0
|
||||
std::string assetsDir = options.paths[1]; // <root>/assets
|
||||
std::string includeDir = options.paths[2]; // <root>/include
|
||||
std::string buildDir = options.paths[3]; // <root>/build
|
||||
std::string assetsAsmDir = options.paths[4]; // <root>/asm/assets
|
||||
|
||||
set_assets_folder_path(assetsDir);
|
||||
set_version(version);
|
||||
|
||||
AssetEnumsHeader assetEnumsHeader(includeDir);
|
||||
AssetAsmIncludes assetAsmIncludes(assetsDir + "/" + version, buildDir + "/" + version, assetsAsmDir);
|
||||
}
|
||||
break;
|
||||
case TT_ASSET_COMPILE:
|
||||
{
|
||||
std::string version = options.paths[0]; // us_1.0
|
||||
std::string assetsDir = options.paths[1]; // <root>/assets
|
||||
|
||||
set_assets_folder_path(assetsDir);
|
||||
set_version(version);
|
||||
|
||||
AssetCompiler compiler();
|
||||
}
|
||||
break;
|
||||
case TT_ASSET_COMPRESS_FILE:
|
||||
case TT_ASSET_DECOMPRESS_FILE:
|
||||
{
|
||||
DKRCompression compression;
|
||||
std::string inputFilename = options.paths[0];
|
||||
std::string outputFilename = options.paths[1];
|
||||
std::vector<uint8_t> inputBinary, outputBinary;
|
||||
|
||||
if(compression.readBinaryFile(inputBinary, inputFilename))
|
||||
{
|
||||
if(inputBinary.size() == 0) {
|
||||
compression.writeBinaryFile(inputBinary, outputFilename);
|
||||
} else {
|
||||
if (options.type == TT_ASSET_COMPRESS_FILE)
|
||||
{
|
||||
outputBinary = compression.compressBuffer(inputBinary);
|
||||
}
|
||||
else if (options.type == TT_ASSET_DECOMPRESS_FILE)
|
||||
{
|
||||
outputBinary = compression.decompressBuffer(inputBinary);
|
||||
}
|
||||
compression.writeBinaryFile(outputBinary, outputFilename);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "Could not read file: " << inputFilename << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user