mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Use different linker script for nonmatching builds (#505)
* got overzealous with the alignments * small knowledge improvement on models * true * add enum size entries for easy ref * bgload names I forgot to merge in * transition memes * absinthe * brug * anguish * hell * getting there * misery * Update README.md * Update include/structs.h Co-authored-by: Ryan Myers <ryan.p.myers@gmail.com> * format moment * Delete object_animate.s * Update obj_animate.s * remembered to rename this * clear mem properly * Update waves.c * custom linker override for nonmatching builds * fix warns * format * Update Makefile * Update dkr.custom.ld * Update Makefile * Update waves.c * Update audio_spatial.c * Update dkr.custom.ld * Update dkr.custom.ld * Update Makefile --------- Co-authored-by: Ryan Myers <ryan.p.myers@gmail.com>
This commit is contained in:
+1
-2
@@ -54,8 +54,7 @@ __pycache__/
|
||||
*__pycache__/
|
||||
expected/
|
||||
.*/
|
||||
*.ld
|
||||
*/*.ld
|
||||
ver/*.ld
|
||||
*.map
|
||||
*/*.map
|
||||
*auto.txt
|
||||
|
||||
@@ -91,6 +91,10 @@ O_FILES := $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file).o) \
|
||||
$(foreach file,$(C_FILES),$(BUILD_DIR)/$(file).o) \
|
||||
$(foreach file,$(BIN_FILES),$(BUILD_DIR)/$(file).o)
|
||||
|
||||
O_FILES_LD := $(filter-out $(BUILD_DIR)/asm/assets/assets.s.o, \
|
||||
$(foreach file,$(S_FILES),$(BUILD_DIR)/$(file).o) \
|
||||
$(foreach file,$(C_FILES),$(BUILD_DIR)/$(file).o))
|
||||
|
||||
find-command = $(shell which $(1) 2>/dev/null)
|
||||
|
||||
# Tools
|
||||
@@ -212,9 +216,15 @@ ifneq ($(filter x86_64%,$(UNAME_M)),)
|
||||
endif
|
||||
|
||||
TARGET = $(BUILD_DIR)/$(BASENAME).$(REGION).$(VERSION)
|
||||
LD_FLAGS :=
|
||||
ifeq ($(NON_MATCHING), 0)
|
||||
LD_SCRIPT = ver/$(BASENAME).$(REGION).$(VERSION).ld
|
||||
else
|
||||
LD_SCRIPT = mods/dkr.custom.ld
|
||||
LD_FLAGS += $(O_FILES_LD)
|
||||
endif
|
||||
|
||||
LD_FLAGS = -T $(LD_SCRIPT) -T $(SYMBOLS_DIR)/undefined_syms.txt -Map $(TARGET).map
|
||||
LD_FLAGS += -T $(LD_SCRIPT) -T $(SYMBOLS_DIR)/undefined_syms.txt -Map $(TARGET).map
|
||||
|
||||
ASM_PROCESSOR_DIR := $(TOOLS_DIR)/asm-processor
|
||||
ASM_PROCESSOR = $(PYTHON) $(ASM_PROCESSOR_DIR)/build.py
|
||||
@@ -356,7 +366,7 @@ distclean: clean
|
||||
rm -rf $(ASM_DIRS)
|
||||
rm -rf $(BIN_DIRS)
|
||||
rm -f $(SYMBOLS_DIR)/*auto.$(REGION).$(VERSION).txt
|
||||
rm -f $(LD_SCRIPT)
|
||||
rm -f ver/$(BASENAME).$(REGION).$(VERSION).ld
|
||||
|
||||
distcleanall: cleanall
|
||||
rm -rf asm
|
||||
@@ -476,11 +486,6 @@ $(BUILD_DIR)/asm/header.s.o: src/hasm/header.s | $(ALL_ASSETS_BUILT)
|
||||
$(V)$(AS) $(ASFLAGS) -o $(BUILD_DIR)/asm/header.s.o $<
|
||||
|
||||
ifeq ($(NON_MATCHING),1)
|
||||
# Specifically override llcvt file for NON_MATCHING builds
|
||||
$(BUILD_DIR)/$(LIBULTRA_DIR)/src/libc/llcvt.c.o: src/hasm/llmuldiv_gcc.s | $(ALL_ASSETS_BUILT)
|
||||
$(call print,Assembling llmuldiv_gcc:,$<,$@)
|
||||
$(V)$(AS) $(ASFLAGS) --defsym NON_MATCHING=1 -o $(BUILD_DIR)/$(LIBULTRA_DIR)/src/libc/llcvt.c.o $<
|
||||
|
||||
# If doing a NON_MATCHING build, and the custom boot file exists, use that.
|
||||
ifneq ("$(wildcard $(BOOT_CUSTOM))","")
|
||||
$(BUILD_DIR)/assets/boot.bin.o: $(BOOT_CUSTOM) | $(ALL_ASSETS_BUILT)
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
SECTIONS
|
||||
{
|
||||
__romPos = 0;
|
||||
header_ROM_START = __romPos;
|
||||
header_VRAM = ADDR(.header);
|
||||
.header : AT(header_ROM_START) SUBALIGN(16)
|
||||
{
|
||||
FILL(0x00000000);
|
||||
header_DATA_START = .;
|
||||
build/asm/header.s.o(.data);
|
||||
header_DATA_END = .;
|
||||
header_DATA_SIZE = ABSOLUTE(header_DATA_END - header_DATA_START);
|
||||
}
|
||||
__romPos += SIZEOF(.header);
|
||||
header_ROM_END = __romPos;
|
||||
header_VRAM_END = .;
|
||||
|
||||
boot_ROM_START = __romPos;
|
||||
boot_VRAM = ADDR(.boot);
|
||||
.boot : AT(boot_ROM_START) SUBALIGN(16)
|
||||
{
|
||||
FILL(0x00000000);
|
||||
boot_DATA_START = .;
|
||||
build/assets/boot.bin.o(.data);
|
||||
boot_DATA_END = .;
|
||||
boot_DATA_SIZE = ABSOLUTE(boot_DATA_END - boot_DATA_START);
|
||||
}
|
||||
__romPos += SIZEOF(.boot);
|
||||
boot_ROM_END = __romPos;
|
||||
boot_VRAM_END = .;
|
||||
|
||||
main_ROM_START = __romPos;
|
||||
main_VRAM = ADDR(.main);
|
||||
.main 0x80000400 : AT(main_ROM_START) SUBALIGN(16)
|
||||
{
|
||||
/* Text */
|
||||
FILL(0x00000000);
|
||||
main_TEXT_START = .;
|
||||
build/src/hasm/entrypoint.s.o(.text);
|
||||
build/src*.o(.text);
|
||||
build/libultra/src*.o(.text);
|
||||
build/asm/data/ucode_audio.s.o(.text);
|
||||
build/asm/data/ucode_boot.s.o(.text);
|
||||
build/asm/data/ucode_f3ddkr_dram.s.o(.text);
|
||||
build/asm/data/ucode_f3ddkr_fifo.s.o(.text);
|
||||
build/asm/data/ucode_f3ddkr_xbus.s.o(.text);
|
||||
build/asm/data/ucode_unknown_2.s.o(.text);
|
||||
/* Data */
|
||||
main_TEXT_END = .;
|
||||
main_TEXT_SIZE = ABSOLUTE(main_TEXT_END - main_TEXT_START);
|
||||
main_DATA_START = .;
|
||||
build/src*.o(.data*);
|
||||
build/libultra/src*.o(.data);
|
||||
build/asm/data/data_audio.s.o(.data);
|
||||
build/asm/data/data_f3ddkr_dram.s.o(.data);
|
||||
build/asm/data/data_f3ddkr_fifo.s.o(.data);
|
||||
build/asm/data/data_f3ddkr_xbus.s.o(.data);
|
||||
build/asm/data/data_unknown_2.s.o(.data);
|
||||
/* Rodata */
|
||||
main_DATA_END = .;
|
||||
main_DATA_SIZE = ABSOLUTE(main_DATA_END - main_DATA_START);
|
||||
main_RODATA_START = .;
|
||||
build/src*.o(.rodata*);
|
||||
build/libultra/src*.o(.rodata*);
|
||||
. = ALIGN(., 16);
|
||||
main_RODATA_END = .;
|
||||
main_RODATA_SIZE = ABSOLUTE(main_RODATA_END - main_RODATA_START);
|
||||
}
|
||||
main_bss_VRAM = ADDR(.main_bss);
|
||||
.main_bss (NOLOAD) : SUBALIGN(16)
|
||||
{
|
||||
FILL(0x00000000);
|
||||
main_BSS_START = .;
|
||||
|
||||
build/src*.o(.*bss*);
|
||||
build/libultra/src*.o(.*bss*);
|
||||
. = ALIGN(., 16);
|
||||
main_BSS_END = .;
|
||||
main_BSS_SIZE = ABSOLUTE(main_BSS_END - main_BSS_START);
|
||||
}
|
||||
__romPos += SIZEOF(.main);
|
||||
__romPos = ALIGN(__romPos, 16);
|
||||
. = ALIGN(., 16);
|
||||
main_ROM_END = __romPos;
|
||||
main_VRAM_END = .;
|
||||
|
||||
assets_ROM_START = __romPos;
|
||||
assets_VRAM = ADDR(.assets);
|
||||
.assets main_VRAM_END : AT(assets_ROM_START) SUBALIGN(16)
|
||||
{
|
||||
FILL(0x00000000);
|
||||
assets_DATA_START = .;
|
||||
build/assets/assets.bin.o(.data);
|
||||
assets_DATA_END = .;
|
||||
assets_DATA_SIZE = ABSOLUTE(assets_DATA_END - assets_DATA_START);
|
||||
}
|
||||
__romPos += SIZEOF(.assets);
|
||||
assets_ROM_END = __romPos;
|
||||
assets_VRAM_END = .;
|
||||
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(*);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -21,7 +21,7 @@ OSThread gThread3; // OSThread for thread 3
|
||||
void mainproc(void) {
|
||||
osInitialize();
|
||||
#ifdef AVOID_UB
|
||||
bzero(&gMainMemoryPool, RAM_END - (s32) (&gMainMemoryPool));
|
||||
bzero(&gMainMemoryPool, RAM_END - (s32) (&main_BSS_START));
|
||||
#endif
|
||||
osCreateThread(&gThread1, 1, &thread1_main, 0, &gThread1Stack[STACKSIZE(STACK_IDLE)], OS_PRIORITY_IDLE);
|
||||
osStartThread(&gThread1);
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "macros.h"
|
||||
#include <ultra64.h>
|
||||
|
||||
extern u8 *main_BSS_START[];
|
||||
|
||||
void mainproc(void);
|
||||
void thread1_main(void *);
|
||||
void thread3_verify_stack(void);
|
||||
|
||||
Reference in New Issue
Block a user