From 46f64263ea3962c6e948f69d84f95b4f1ac6623a Mon Sep 17 00:00:00 2001 From: aglab2 Date: Tue, 24 Aug 2021 21:28:30 +0800 Subject: [PATCH 1/3] Move most of the 'game' to engine segment to avoid 1MB limit --- Makefile | 2 +- enhancements/mem_error_screen.patch | 16 ++++++++-------- sm64.ld | 12 ++++++++---- src/{game => boot}/main.c | 14 +++++++------- src/{game => boot}/memory.c | 8 ++++---- 5 files changed, 28 insertions(+), 24 deletions(-) rename src/{game => boot}/main.c (98%) rename src/{game => boot}/memory.c (99%) diff --git a/Makefile b/Makefile index 9c5c5deb..36d56e15 100644 --- a/Makefile +++ b/Makefile @@ -312,7 +312,7 @@ ACTOR_DIR := actors LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h))) # Directories containing source files -SRC_DIRS += src src/game src/engine src/audio src/menu src/buffers actors levels bin data assets asm lib sound +SRC_DIRS += src src/boot src/game src/engine src/audio src/menu src/buffers actors levels bin data assets asm lib sound LIBZ_SRC_DIRS := src/libz GODDARD_SRC_DIRS := src/goddard src/goddard/dynlists BIN_DIRS := bin bin/$(VERSION) diff --git a/enhancements/mem_error_screen.patch b/enhancements/mem_error_screen.patch index 5fc92436..5752b8c1 100644 --- a/enhancements/mem_error_screen.patch +++ b/enhancements/mem_error_screen.patch @@ -6,7 +6,7 @@ index f50b7622..124c7ec6 100644 $(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h -+$(BUILD_DIR)/src/game/mem_error_screen.o: $(BUILD_DIR)/include/text_strings.h ++$(BUILD_DIR)/src/boot/mem_error_screen.o: $(BUILD_DIR)/include/text_strings.h #==============================================================================# @@ -137,14 +137,14 @@ index d41a91c8..7d047236 100644 struct LevelCommand *level_script_execute(struct LevelCommand *cmd); -diff --git a/src/game/main.c b/src/game/main.c +diff --git a/src/boot/main.c b/src/boot/main.c index 1a9d9e7e..f4f7a9e5 100644 ---- a/src/game/main.c -+++ b/src/game/main.c +--- a/src/boot/main.c ++++ b/src/boot/main.c @@ -11,6 +11,7 @@ #include "segments.h" - #include "main.h" - #include "rumble_init.h" + #include "game/main.h" + #include "game/rumble_init.h" +#include "mem_error_screen.h" // Message IDs @@ -172,11 +172,11 @@ index 1a9d9e7e..f4f7a9e5 100644 osStartThread(&gGameLoopThread); while (TRUE) { -diff --git a/src/game/mem_error_screen.c b/src/game/mem_error_screen.c +diff --git a/src/boot/mem_error_screen.c b/src/boot/mem_error_screen.c new file mode 100644 index 00000000..f432927c --- /dev/null -+++ b/src/game/mem_error_screen.c ++++ b/src/boot/mem_error_screen.c @@ -0,0 +1,104 @@ +/* clang-format off */ +/* diff --git a/sm64.ld b/sm64.ld index 199613c7..7cdc883f 100755 --- a/sm64.ld +++ b/sm64.ld @@ -130,7 +130,7 @@ SECTIONS { KEEP(BUILD_DIR/asm/entry.o(.text)); - BUILD_DIR/src/game*.o(.text); + BUILD_DIR/src/boot*.o(.text); BUILD_DIR/src/hvqm*.o(.text); BUILD_DIR/src/gdb*.o(.text); BUILD_DIR/src/usb*.o(.text); @@ -148,7 +148,7 @@ SECTIONS lib/PR/hvqm/hvqm2sp1.o(.text); /* data */ - BUILD_DIR/src/game*.o(.*data*); + BUILD_DIR/src/boot*.o(.*data*); BUILD_DIR/src/gdb*.o(.*data*); BUILD_DIR/src/usb*.o(.*data*); BUILD_DIR/src/audio*.o(.*data*); @@ -164,7 +164,7 @@ SECTIONS lib/PR/hvqm/hvqm2sp1.o(.data*); /* rodata */ - BUILD_DIR/src/game*.o(.rodata*); + BUILD_DIR/src/boot*.o(.rodata*); BUILD_DIR/src/gdb*.o(.*rodata*); BUILD_DIR/src/usb*.o(.rodata*); BUILD_DIR/src/audio*.o(.rodata*); @@ -182,7 +182,7 @@ SECTIONS END_SEG(main) BEGIN_NOLOAD(main) { - BUILD_DIR/src/game*.o(.*bss*); + BUILD_DIR/src/boot*.o(.*bss*); BUILD_DIR/src/hvqm*.o(.*bss*); BUILD_DIR/src/gdb*.o(.*bss*); BUILD_DIR/src/usb*.o(.*bss*); @@ -208,16 +208,20 @@ SECTIONS BEGIN_SEG(engine, .) { + BUILD_DIR/src/game*.o(.text); BUILD_DIR/src/engine*.o(.text); /* data */ + BUILD_DIR/src/game*.o(.*data*); BUILD_DIR/src/engine*.o(.data*); BUILD_DIR/src/engine*.o(.sdata*); /* rodata */ + BUILD_DIR/src/game*.o(.rodata*); BUILD_DIR/src/engine*.o(.rodata*); } END_SEG(engine) BEGIN_NOLOAD(engine) { + BUILD_DIR/src/game*.o(.*bss*); BUILD_DIR/src/engine*.o(.bss*); . = ALIGN(0x40); } diff --git a/src/game/main.c b/src/boot/main.c similarity index 98% rename from src/game/main.c rename to src/boot/main.c index f2e25f43..73b0cc04 100644 --- a/src/game/main.c +++ b/src/boot/main.c @@ -5,15 +5,15 @@ #include "sm64.h" #include "audio/external.h" -#include "game_init.h" -#include "memory.h" -#include "sound_init.h" -#include "profiler.h" +#include "game/game_init.h" +#include "game/memory.h" +#include "game/sound_init.h" +#include "game/profiler.h" #include "buffers/buffers.h" #include "segments.h" -#include "main.h" -#include "rumble_init.h" -#include "version.h" +#include "game/main.h" +#include "game/rumble_init.h" +#include "game/version.h" #ifdef UNF #include "usb/usb.h" #include "usb/debug.h" diff --git a/src/game/memory.c b/src/boot/memory.c similarity index 99% rename from src/game/memory.c rename to src/boot/memory.c index 6903ecd9..2be00d28 100644 --- a/src/game/memory.c +++ b/src/boot/memory.c @@ -5,10 +5,10 @@ #define INCLUDED_FROM_MEMORY_C #include "buffers/buffers.h" -#include "slidec.h" -#include "game_init.h" -#include "main.h" -#include "memory.h" +#include "game/slidec.h" +#include "game/game_init.h" +#include "game/main.h" +#include "game/memory.h" #include "segment_symbols.h" #include "segments.h" #ifdef GZIP From 57b7e5aec37d37439162e13f6aaa986a1c017f9b Mon Sep 17 00:00:00 2001 From: aglab2 Date: Wed, 25 Aug 2021 08:44:51 +0800 Subject: [PATCH 2/3] Removed gdb references from ld --- sm64.ld | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sm64.ld b/sm64.ld index 7cdc883f..b96f01ec 100755 --- a/sm64.ld +++ b/sm64.ld @@ -132,7 +132,6 @@ SECTIONS BUILD_DIR/src/boot*.o(.text); BUILD_DIR/src/hvqm*.o(.text); - BUILD_DIR/src/gdb*.o(.text); BUILD_DIR/src/usb*.o(.text); BUILD_DIR/src/audio*.o(.text); #if defined(ISVPRINT) || defined(UNF) @@ -149,7 +148,6 @@ SECTIONS /* data */ BUILD_DIR/src/boot*.o(.*data*); - BUILD_DIR/src/gdb*.o(.*data*); BUILD_DIR/src/usb*.o(.*data*); BUILD_DIR/src/audio*.o(.*data*); #if defined(ISVPRINT) || defined(UNF) @@ -165,7 +163,6 @@ SECTIONS /* rodata */ BUILD_DIR/src/boot*.o(.rodata*); - BUILD_DIR/src/gdb*.o(.*rodata*); BUILD_DIR/src/usb*.o(.rodata*); BUILD_DIR/src/audio*.o(.rodata*); #if defined(ISVPRINT) || defined(UNF) @@ -184,7 +181,6 @@ SECTIONS { BUILD_DIR/src/boot*.o(.*bss*); BUILD_DIR/src/hvqm*.o(.*bss*); - BUILD_DIR/src/gdb*.o(.*bss*); BUILD_DIR/src/usb*.o(.*bss*); BUILD_DIR/src/audio*.o(.*bss*); #if defined(ISVPRINT) || defined(UNF) From e43c9463d5ff53fee2db018b3be35eae50a4171e Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Wed, 25 Aug 2021 16:09:31 -0400 Subject: [PATCH 3/3] Move decompression code to boot segment --- src/{game => boot}/decompress.s | 0 src/boot/memory.c | 2 +- src/{game => boot}/rnc1.s | 0 src/{game => boot}/rnc2.s | 0 src/{game => boot}/slidec.h | 0 src/{game => boot}/slidec.s | 0 6 files changed, 1 insertion(+), 1 deletion(-) rename src/{game => boot}/decompress.s (100%) rename src/{game => boot}/rnc1.s (100%) rename src/{game => boot}/rnc2.s (100%) rename src/{game => boot}/slidec.h (100%) rename src/{game => boot}/slidec.s (100%) diff --git a/src/game/decompress.s b/src/boot/decompress.s similarity index 100% rename from src/game/decompress.s rename to src/boot/decompress.s diff --git a/src/boot/memory.c b/src/boot/memory.c index 2be00d28..367104b6 100644 --- a/src/boot/memory.c +++ b/src/boot/memory.c @@ -5,7 +5,7 @@ #define INCLUDED_FROM_MEMORY_C #include "buffers/buffers.h" -#include "game/slidec.h" +#include "slidec.h" #include "game/game_init.h" #include "game/main.h" #include "game/memory.h" diff --git a/src/game/rnc1.s b/src/boot/rnc1.s similarity index 100% rename from src/game/rnc1.s rename to src/boot/rnc1.s diff --git a/src/game/rnc2.s b/src/boot/rnc2.s similarity index 100% rename from src/game/rnc2.s rename to src/boot/rnc2.s diff --git a/src/game/slidec.h b/src/boot/slidec.h similarity index 100% rename from src/game/slidec.h rename to src/boot/slidec.h diff --git a/src/game/slidec.s b/src/boot/slidec.s similarity index 100% rename from src/game/slidec.s rename to src/boot/slidec.s