mirror of https://github.com/zeldaret/mm.git
Extract assets to extracted (#1708)
This commit is contained in:
parent
15ddcac8a4
commit
f946162a89
68
Makefile
68
Makefile
|
@ -113,7 +113,7 @@ NM := $(MIPS_BINUTILS_PREFIX)nm
|
|||
OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy
|
||||
OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump
|
||||
|
||||
IINC := -Iinclude -Iinclude/libc -Isrc -I$(BUILD_DIR) -I.
|
||||
IINC := -Iinclude -Iinclude/libc -Isrc -I$(BUILD_DIR) -I. -I$(EXTRACTED_DIR)
|
||||
|
||||
ifeq ($(KEEP_MDEBUG),0)
|
||||
RM_MDEBUG = $(OBJCOPY) --remove-section .mdebug $@
|
||||
|
@ -286,20 +286,34 @@ SEQUENCE_DEP_FILES := $(foreach f,$(SEQUENCE_O_FILES),$(f:.o=.d))
|
|||
|
||||
SEQUENCE_TABLE := include/tables/sequence_table.h
|
||||
|
||||
## Assets binaries (PNGs, JPGs, etc)
|
||||
ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/audio*" -not -path "assets/c/*" -not -name "c" -not -path "assets/text")
|
||||
# Prevents building C files that will be #include'd
|
||||
ASSET_BIN_DIRS_C_FILES := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/code*" -not -path "assets/overlays*")
|
||||
# create extracted directory
|
||||
$(shell mkdir -p $(EXTRACTED_DIR))
|
||||
|
||||
ifneq ($(wildcard $(EXTRACTED_DIR)/assets),)
|
||||
ASSET_BIN_DIRS_EXTRACTED := $(shell find $(EXTRACTED_DIR)/assets -type d)
|
||||
else
|
||||
ASSET_BIN_DIRS_EXTRACTED :=
|
||||
endif
|
||||
ASSET_BIN_DIRS_COMMITTED := $(shell find assets -type d -not -path "assets/xml*" -not -path "assets/audio*" -not -path assets/text)
|
||||
ASSET_BIN_DIRS := $(ASSET_BIN_DIRS_EXTRACTED) $(ASSET_BIN_DIRS_COMMITTED)
|
||||
|
||||
ASSET_FILES_BIN := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.bin))
|
||||
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(BUILD_DIR)/$f)
|
||||
ASSET_FILES_BIN_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.bin))
|
||||
ASSET_FILES_BIN_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.bin))
|
||||
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN_EXTRACTED:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
|
||||
$(foreach f,$(ASSET_FILES_BIN_COMMITTED:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o))
|
||||
|
||||
TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png))
|
||||
TEXTURE_FILES_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg))
|
||||
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(BUILD_DIR)/$f) \
|
||||
TEXTURE_FILES_PNG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.png))
|
||||
TEXTURE_FILES_PNG_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.png))
|
||||
TEXTURE_FILES_JPG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.jpg))
|
||||
TEXTURE_FILES_JPG_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.jpg))
|
||||
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG_EXTRACTED:.png=.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
|
||||
$(foreach f,$(TEXTURE_FILES_PNG_COMMITTED:.png=.inc.c),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(TEXTURE_FILES_JPG_EXTRACTED:.jpg=.jpg.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
|
||||
$(foreach f,$(TEXTURE_FILES_JPG_COMMITTED:.jpg=.jpg.inc.c),$(BUILD_DIR)/$f)
|
||||
|
||||
ASSET_C_FILES_EXTRACTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.c)))
|
||||
ASSET_C_FILES_COMMITTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.c)))
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS_C_FILES),$(wildcard $(dir)/*.c))
|
||||
S_FILES := $(shell grep -F "\$$(BUILD_DIR)/asm" spec | sed 's/.*$$(BUILD_DIR)\/// ; s/\.o\".*/.s/') \
|
||||
$(shell grep -F "\$$(BUILD_DIR)/data" spec | sed 's/.*$$(BUILD_DIR)\/// ; s/\.o\".*/.s/')
|
||||
|
@ -308,6 +322,8 @@ BASEROM_FILES := $(shell grep -F "\$$(BUILD_DIR)/baserom" spec | sed 's/.*$$(BU
|
|||
ARCHIVES_O := $(shell grep -F ".yar.o" spec | sed 's/.*include "// ; s/.*$$(BUILD_DIR)\/// ; s/\.o\".*/.o/')
|
||||
O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(ASSET_C_FILES_EXTRACTED:.c=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
|
||||
$(foreach f,$(ASSET_C_FILES_COMMITTED:.c=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(BASEROM_FILES),$(BUILD_DIR)/$f.o) \
|
||||
$(foreach f,$(ARCHIVES_O),$(BUILD_DIR)/$f)
|
||||
|
||||
|
@ -325,7 +341,7 @@ LD_FINAL_FILES := $(foreach f,$(shell find linker_scripts/final/*.ld),$(BUILD_DI
|
|||
DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d)
|
||||
|
||||
# Other directories that need to be created in the build directory
|
||||
OTHER_DIRS := baserom dmadata $(shell find linker_scripts -type d)
|
||||
OTHER_DIRS := assets/text baserom dmadata $(shell find linker_scripts -type d)
|
||||
|
||||
# create build directories
|
||||
$(shell mkdir -p $(foreach dir, \
|
||||
|
@ -339,14 +355,16 @@ $(shell mkdir -p $(foreach dir, \
|
|||
$(SAMPLE_DIRS) \
|
||||
$(SAMPLEBANK_DIRS) \
|
||||
$(SOUNDFONT_DIRS) \
|
||||
$(SEQUENCE_DIRS), \
|
||||
$(SEQUENCE_DIRS) \
|
||||
$(ASSET_BIN_DIRS_COMMITTED),\
|
||||
$(BUILD_DIR)/$(dir)))
|
||||
ifneq ($(wildcard $(EXTRACTED_DIR)/assets),)
|
||||
$(shell mkdir -p $(foreach dir, \
|
||||
$(SAMPLE_EXTRACT_DIRS) \
|
||||
$(SAMPLEBANK_EXTRACT_DIRS) \
|
||||
$(SOUNDFONT_EXTRACT_DIRS) \
|
||||
$(SEQUENCE_EXTRACT_DIRS), \
|
||||
$(SEQUENCE_EXTRACT_DIRS) \
|
||||
$(ASSET_BIN_DIRS_EXTRACTED),\
|
||||
$(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)))
|
||||
endif
|
||||
|
||||
|
@ -453,10 +471,9 @@ clean:
|
|||
$(RM) -r $(BUILD_DIR)
|
||||
|
||||
assetclean:
|
||||
$(RM) -r $(ASSET_BIN_DIRS)
|
||||
$(RM) -r $(EXTRACTED_DIR)/assets
|
||||
$(RM) -r $(EXTRACTED_DIR)/text
|
||||
$(RM) -r $(BUILD_DIR)/assets
|
||||
$(RM) -r assets/text/*.h
|
||||
$(RM) -r $(EXTRACTED_DIR)/.extracted-assets.json
|
||||
|
||||
distclean: assetclean clean
|
||||
$(RM) -r asm data extracted
|
||||
|
@ -480,8 +497,8 @@ setup-audio:
|
|||
$(AUDIO_EXTRACT) -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml
|
||||
|
||||
assets:
|
||||
$(PYTHON) tools/extract_assets.py $(EXTRACTED_DIR)/baserom assets -j$(N_THREADS) -Z Wno-hardcoded-pointer -v $(VERSION)
|
||||
$(PYTHON) tools/text/msgdis.py $(EXTRACTED_DIR)/baserom assets/text -v $(VERSION)
|
||||
$(PYTHON) tools/extract_assets.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/assets -j$(N_THREADS) -Z Wno-hardcoded-pointer -v $(VERSION)
|
||||
$(PYTHON) tools/text/msgdis.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/text -v $(VERSION)
|
||||
$(AUDIO_EXTRACT) -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml
|
||||
|
||||
## Assembly generation
|
||||
|
@ -544,6 +561,11 @@ $(BUILD_DIR)/assets/%.o: assets/%.c
|
|||
$(OBJCOPY_BIN)
|
||||
$(RM_MDEBUG)
|
||||
|
||||
$(BUILD_DIR)/assets/%.o: $(EXTRACTED_DIR)/assets/%.c
|
||||
$(CC) -c $(CFLAGS) $(IINC) $(WARNINGS) $(C_DEFINES) $(MIPS_VERSION) $(ENDIAN) $(OPTFLAGS) -o $@ $<
|
||||
$(OBJCOPY_BIN)
|
||||
$(RM_MDEBUG)
|
||||
|
||||
$(BUILD_DIR)/%.yar.o: $(BUILD_DIR)/%.o
|
||||
$(MAKEYAR) $< $(@:.yar.o=.yar.bin) $(@:.yar.o=.symbols.o)
|
||||
$(OBJCOPY) -I binary -O elf32-big $(@:.yar.o=.yar.bin) $@
|
||||
|
@ -603,12 +625,18 @@ $(BUILD_DIR)/%.o: %.c
|
|||
|
||||
# Build C files from assets
|
||||
|
||||
$(BUILD_DIR)/%.inc.c: %.png
|
||||
$(BUILD_DIR)/assets/%.inc.c: assets/%.png
|
||||
$(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@
|
||||
|
||||
$(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png
|
||||
$(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@
|
||||
|
||||
$(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin
|
||||
$(ZAPD) bblb -eh -i $< -o $@
|
||||
|
||||
$(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
|
||||
$(ZAPD) bblb -eh -i $< -o $@
|
||||
|
||||
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg
|
||||
$(ZAPD) bren -eh -i $< -o $@
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
*.bin
|
||||
*.c
|
||||
*.h
|
||||
*.cfg
|
||||
*.vtx.inc
|
||||
*.dlist.inc
|
|
@ -1,2 +0,0 @@
|
|||
!*.c
|
||||
!*.h
|
|
@ -0,0 +1,20 @@
|
|||
#include "text/message_data.h"
|
||||
|
||||
/*
|
||||
* The following two messages should be kept last and in this order.
|
||||
* Message 0xFFFD must be last to not break the message debugger.
|
||||
* Message 0xFFFC must be immediately before message 0xFFFD to not break Font_LoadOrderedFont.
|
||||
*/
|
||||
|
||||
DEFINE_MESSAGE(0xFFFC, 0x00, 0x00,
|
||||
MSG(
|
||||
HEADER(0x0000, 0xFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
|
||||
)
|
||||
)
|
||||
|
||||
DEFINE_MESSAGE(0xFFFD, 0x00, 0x00,
|
||||
MSG(
|
||||
HEADER(0x0000, 0xFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
|
||||
"end!"
|
||||
)
|
||||
)
|
|
@ -0,0 +1 @@
|
|||
#include "text/message_data_staff.h"
|
4
spec
4
spec
|
@ -502,12 +502,12 @@ endseg
|
|||
|
||||
beginseg
|
||||
name "map_i_static"
|
||||
include "$(BUILD_DIR)/assets/c/archives/map_i_static/map_i_static.yar.o"
|
||||
include "$(BUILD_DIR)/assets/archives/map_i_static/map_i_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "map_grand_static"
|
||||
include "$(BUILD_DIR)/assets/c/archives/map_grand_static/map_grand_static.yar.o"
|
||||
include "$(BUILD_DIR)/assets/archives/map_grand_static/map_grand_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Overlay: ovl_En_Thiefbird
|
||||
* Description: Takkuri
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z_en_thiefbird.h"
|
||||
#include "overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h"
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Overlay: ovl_player_actor
|
||||
* Description: Player
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z64player.h"
|
||||
|
||||
#include "global.h"
|
||||
|
|
|
@ -104,6 +104,8 @@ def main():
|
|||
baseromSegmentsDir: Path = args.baserom_segments_dir
|
||||
outputDir: Path = args.output_dir
|
||||
|
||||
args.output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
global ZAPDArgs
|
||||
ZAPDArgs = ""
|
||||
if args.Z is not None:
|
||||
|
|
|
@ -108,11 +108,7 @@ def CalculateNonNamedAssets(mapFileList, assetsTracker):
|
|||
if not mapFile["name"].startswith("build/n64-us/assets/"):
|
||||
continue
|
||||
|
||||
if mapFile["name"].startswith("build/n64-us/assets/c"):
|
||||
assetCat = mapFile["name"].split("/")[4]
|
||||
else:
|
||||
assetCat = mapFile["name"].split("/")[3]
|
||||
|
||||
assetCat = mapFile["name"].split("/")[3]
|
||||
|
||||
for symbol in mapFile["symbols"]:
|
||||
symbolName = symbol["name"]
|
||||
|
@ -234,10 +230,8 @@ for line in map_file:
|
|||
|
||||
if section == ".data" or section == ".rodata":
|
||||
if obj_file.startswith("build/n64-us/assets/"):
|
||||
if obj_file.startswith("build/n64-us/assets/c"):
|
||||
assetCat = obj_file.split("/")[4]
|
||||
else:
|
||||
assetCat = obj_file.split("/")[3]
|
||||
|
||||
assetCat = obj_file.split("/")[3]
|
||||
|
||||
if objFileName in fileSectionFixer:
|
||||
assetCat = fileSectionFixer[objFileName]
|
||||
|
|
|
@ -3145,6 +3145,8 @@ def main():
|
|||
baserom_segments_dir : Path = args.baserom_segments_dir
|
||||
output_dir : Path = args.output_dir
|
||||
|
||||
args.output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# TODO: use version config instead to get code vram
|
||||
code_vram = 0x800A5AC0
|
||||
|
||||
|
@ -3171,10 +3173,9 @@ def main():
|
|||
message_data = []
|
||||
|
||||
for text_id in sorted(messages.keys()):
|
||||
# TODO: Add back when we start extracting assets to extracted
|
||||
# if text_id in (0xFFFC,0xFFFD):
|
||||
# # Skip committed text ids
|
||||
# continue
|
||||
if text_id in (0xFFFC,0xFFFD):
|
||||
# Skip committed text ids
|
||||
continue
|
||||
message_data.append(messages[text_id].decode())
|
||||
|
||||
message_data = "\n".join(message_data)
|
||||
|
|
Loading…
Reference in New Issue