diff --git a/Makefile b/Makefile index 751dc0fe..0b5ae585 100644 --- a/Makefile +++ b/Makefile @@ -132,13 +132,19 @@ else ifeq ($(GRUCODE),super3d) # Super3D DEFINES += SUPER3D_GBI=1 F3D_NEW=1 endif +LIBRARIES := gcc nustd hvqm2 z goddard + # TEXT ENGINES # s2dex_text_engine - Text Engine by someone2639 TEXT_ENGINE := none ifeq ($(TEXT_ENGINE), s2dex_text_engine) DEFINES += S2DEX_GBI_2=1 S2DEX_TEXT_ENGINE=1 + LIBRARIES += s2d_engine + DUMMY != make -C src/s2d_engine COPY_DIR=$(shell pwd)/lib/ endif +# add more text engines here +LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i)) ifeq ($(COMPILER),gcc) NON_MATCHING := 1 @@ -754,7 +760,7 @@ $(BUILD_DIR)/libz.a: $(LIBZ_O_FILES) # Link SM64 ELF file $(ELF): $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a @$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n" - $(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib -lgcc -lnustd -lhvqm2 -lz -lgoddard -u sprintf -u osMapTLB + $(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB # Build ROM $(ROM): $(ELF) diff --git a/actors/group0.c b/actors/group0.c index f852e6c6..9304a97f 100644 --- a/actors/group0.c +++ b/actors/group0.c @@ -25,3 +25,8 @@ #include "white_particle_small/model.inc.c" #include "sparkle_animation/model.inc.c" + +#ifdef S2DEX_TEXT_ENGINE +#include "src/s2d_engine/config.h" +#include FONT_C_FILE +#endif diff --git a/sm64.ld b/sm64.ld index 976b232d..94c570a0 100755 --- a/sm64.ld +++ b/sm64.ld @@ -130,6 +130,9 @@ SECTIONS BUILD_DIR/src/gdb*.o(.text); BUILD_DIR/src/usb*.o(.text); BUILD_DIR/src/audio*.o(.text); +#ifdef S2DEX_TEXT_ENGINE + lib/libs2d_engine.a:*(.text); +#endif #if defined(ISVPRINT) || defined(UNF) */libultra_d.a:*.o(.text); #else @@ -147,6 +150,9 @@ SECTIONS BUILD_DIR/src/gdb*.o(.*data*); BUILD_DIR/src/usb*.o(.*data*); BUILD_DIR/src/audio*.o(.*data*); +#ifdef S2DEX_TEXT_ENGINE + lib/libs2d_engine.a:*(.*data*); +#endif #if defined(ISVPRINT) || defined(UNF) */libultra_d.a:*.o(.*data*); #else @@ -163,6 +169,9 @@ SECTIONS BUILD_DIR/src/gdb*.o(.*rodata*); BUILD_DIR/src/usb*.o(.rodata*); BUILD_DIR/src/audio*.o(.rodata*); +#ifdef S2DEX_TEXT_ENGINE + lib/libs2d_engine.a:*(.rodata*); +#endif #if defined(ISVPRINT) || defined(UNF) */libultra_d.a:*.o(.*rodata*); #else @@ -182,6 +191,9 @@ SECTIONS BUILD_DIR/src/gdb*.o(.*bss*); BUILD_DIR/src/usb*.o(.*bss*); BUILD_DIR/src/audio*.o(.*bss*); +#ifdef S2DEX_TEXT_ENGINE + lib/libs2d_engine.a:*(.*bss*); +#endif #if defined(ISVPRINT) || defined(UNF) */libultra_d.a:*.o(COMMON); */libultra_d.a:*.o(.scommon); diff --git a/src/game/area.c b/src/game/area.c index 3298ef98..77b2d127 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -403,6 +403,13 @@ void render_game(void) { gWarpTransDelay--; } } + if (gMarioObject &&gMarioState) { + #include "s2d_engine/init.h" + #include "s2d_engine/s2d_print.h" + s2d_init(); + s2d_print_alloc(50, 50, ALIGN_LEFT, SCALE "25" "BRUH MOMentum i guess"); + s2d_stop(); + } } else { render_text_labels(); if (D_8032CE78 != NULL) { diff --git a/src/s2d_engine/Makefile b/src/s2d_engine/Makefile index a06d890a..6873a033 100644 --- a/src/s2d_engine/Makefile +++ b/src/s2d_engine/Makefile @@ -1,6 +1,8 @@ # Makefile for s2d_engine.a -TARGET = s2d_engine.a +TARGET = libs2d_engine.a + +default: all BUILD_DIR ?= build DUMMY != mkdir -p $(BUILD_DIR) @@ -18,14 +20,22 @@ FULL_I_DIRS = $(addprefix $(INCLUDE_BASE),$(I_DIRS)) I_FLAGS = $(foreach i,$(FULL_I_DIRS),-I$(i)) TARGET_CFLAGS = -nostdinc -I include/libc -DTARGET_N64 -DF3DEX_GBI_2 -DNON_MATCHING -DAVOID_UB -CFLAGS := -Wall $(TARGET_CFLAGS) $(I_FLAGS) -march=vr4300 -mtune=vr4300 -mfix4300 -mabi=32 -mno-shared -G 0 -fno-PIC -mno-abicalls -fno-zero-initialized-in-bss -fno-toplevel-reorder -Wno-missing-braces +CFLAGS := -Wall $(TARGET_CFLAGS) $(I_FLAGS) -fno-stack-protector -march=vr4300 -mtune=vr4300 -mfix4300 -mabi=32 -mno-shared -G 0 -fno-PIC -mno-abicalls -fno-zero-initialized-in-bss -fno-toplevel-reorder -Wno-missing-braces -default: all all: $(BUILD_DIR)/$(TARGET) +clean: + rm -r build/ + +COPY_DIR := none +ifeq ($(COPY_DIR),none) + $(error S2DEX Text Engine: No COPY_DIR defined!) +endif + $(BUILD_DIR)/$(TARGET): $(O_FILES) $(AR) rcs -o $@ $(O_FILES) + cp $@ $(COPY_DIR) $(BUILD_DIR)/%.o: %.c $(CC) -c $(CFLAGS) -o $@ $<