From a416d40eeac94e84c9749c0412b28bb0c6900c4b Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Sat, 14 Aug 2021 09:42:57 +0200 Subject: [PATCH] Organize folders and build system to prepare for small revamp Goals include: * To recover emulator code into a working state (using SDL2 as I cannot use the Windows library) * To allow memory management in emulator to not mirror the intricacies of the calculator version (eg. aSystemStack, aVRAMBuffer, etc) * To recover actual printf-style error messages on the calculator * To use the standard library and avoid random reimplementations of functions * And other code cleanups that are only possible with CGDoom-specific header files, instead of the mix in platform.h and os.h --- .gitignore | 7 +- CGDOOM-minisdk/CGDOOM/Makefile | 40 ------- ...CGDOOM_SELECTED.png => CGDOOM_SELECTED.png | Bin ...OM_UNSELECTED.png => CGDOOM_UNSELECTED.png | Bin .../CGDOOM/CG_Doom.g3a => CGDoom.g3a | Bin 320496 -> 320496 bytes Makefile | 101 ++++++++++++++++++ {CGDOOM-minisdk/CGDOOM => src-cg}/platform.h | 5 - {cgemul => src-sdl2}/emul.c | 0 {cgemul => src-sdl2}/emul.h | 0 {cgemul => src-sdl2}/keyboard.hpp | 0 {cgemul => src-sdl2}/platform.h | 0 {cgemul => src-sdl2}/tastatur.bmp | Bin {cgemul => src-sdl2}/tastatur.c | 0 13 files changed, 103 insertions(+), 50 deletions(-) delete mode 100644 CGDOOM-minisdk/CGDOOM/Makefile rename CGDOOM-minisdk/CGDOOM/CGDOOM_SELECTED.png => CGDOOM_SELECTED.png (100%) rename CGDOOM-minisdk/CGDOOM/CGDOOM_UNSELECTED.png => CGDOOM_UNSELECTED.png (100%) rename CGDOOM-minisdk/CGDOOM/CG_Doom.g3a => CGDoom.g3a (99%) create mode 100644 Makefile rename {CGDOOM-minisdk/CGDOOM => src-cg}/platform.h (94%) rename {cgemul => src-sdl2}/emul.c (100%) rename {cgemul => src-sdl2}/emul.h (100%) rename {cgemul => src-sdl2}/keyboard.hpp (100%) rename {cgemul => src-sdl2}/platform.h (100%) rename {cgemul => src-sdl2}/tastatur.bmp (100%) rename {cgemul => src-sdl2}/tastatur.c (100%) diff --git a/.gitignore b/.gitignore index 450ab33..5e0bebf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ -*.o -CG_Doom.bin -CG_Doom.elf -CG_Doom.map -doom.wad +build-cg/ +build-sdl2/ diff --git a/CGDOOM-minisdk/CGDOOM/Makefile b/CGDOOM-minisdk/CGDOOM/Makefile deleted file mode 100644 index 485d864..0000000 --- a/CGDOOM-minisdk/CGDOOM/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -CC=sh-elf-gcc -CPP=sh-elf-g++ -OBJCOPY=sh-elf-objcopy -MKG3A=mkg3a -RM=rm -CFLAGS=-m4a-nofpu -mb -fgcse-sm -fgcse-las -fgcse-after-reload -Isrc -O3 -fmerge-all-constants -mhitachi -fuse-linker-plugin -fstrict-volatile-bitfields -Wall -Wextra -Wno-sign-compare -Wno-unused-but-set-variable -Wno-unused-but-set-parameter -I../../../../include -lgcc -L../../../../lib -I./ -I../../cgdoom -D_FXCG_MINICOMPAT -LDFLAGS=$(CFLAGS) -nostartfiles -T../../../../toolchain/prizm.x -Wl,-static -lfxcg -lgcc -Wl,-Map=$(PROJ_NAME).map -CSOURCES=$(wildcard ../../cgdoom/*.c) -ASMSOURCES=$(wildcard ../../cgdoom/*.s) -OBJECTS=$(CSOURCES:.c=.o) $(ASMSOURCES:.s=.o) -PROJ_NAME=CG_Doom -BIN=$(PROJ_NAME).bin -ELF=$(PROJ_NAME).elf -ADDIN=$(PROJ_NAME).g3a - -all: $(ADDIN) - - -$(ADDIN): $(BIN) - $(MKG3A) -n : -i uns:CGDOOM_UNSELECTED.png -i sel:CGDOOM_SELECTED.png $< $@ - -.s.o: - $(CC) -c $(CFLAGS) $< -o $@ - -.c.o: - $(CC) -c $(CFLAGS) $< -o $@ - -.cpp.o: - $(CC) -c $(CFLAGS) $< -o $@ - -.cc.o: - $(CC) -c $(CFLAGS) $< -o $@ - -$(ELF): $(OBJECTS) - $(CC) $(OBJECTS) $(LDFLAGS) -o $@ -$(BIN): $(ELF) - $(OBJCOPY) -O binary $(PROJ_NAME).elf $(BIN) - -clean: - rm -f $(OBJECTS) $(PROJ_NAME).bin $(PROJ_NAME).elf $(ADDIN) diff --git a/CGDOOM-minisdk/CGDOOM/CGDOOM_SELECTED.png b/CGDOOM_SELECTED.png similarity index 100% rename from CGDOOM-minisdk/CGDOOM/CGDOOM_SELECTED.png rename to CGDOOM_SELECTED.png diff --git a/CGDOOM-minisdk/CGDOOM/CGDOOM_UNSELECTED.png b/CGDOOM_UNSELECTED.png similarity index 100% rename from CGDOOM-minisdk/CGDOOM/CGDOOM_UNSELECTED.png rename to CGDOOM_UNSELECTED.png diff --git a/CGDOOM-minisdk/CGDOOM/CG_Doom.g3a b/CGDoom.g3a similarity index 99% rename from CGDOOM-minisdk/CGDOOM/CG_Doom.g3a rename to CGDoom.g3a index 6579540e70bc94ec33f648e5b7026c1c040d89e5..60f17af30effe5711af88c8ad8da80b585bf7bda 100644 GIT binary patch delta 87 zcmexxT=>Ir;R(u&RU1_l7}<>VjEs!THZ$7&XWT4c_W>7in32iZee-@kN5Ir;R(u&7dNUXFtQox85tTGY-Y6k&$wB@?gK93Fe9_Gd;I2oe2$Dw0&N0} SZ30Yf0?gY4Sl(Y|ya)jGcO4M` diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5af1474 --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +# Makefile for the fx-CG 50 / Graph 90+E version of CGDoom. +# Two target platforms: fx-CG and native (SDL2). + +### Project structure. + +NAME := CGDoom +SRC := $(wildcard cgdoom/*.c cgdoom/*.s) + +CFLAGS := -I cgdoom +# Extra optimization passes just in case +CFLAGS += -O3 -fgcse-sm -fgcse-las -fgcse-after-reload -fmerge-all-constants +# We remove some warnings that come up a lot in Doom +CFLAGS += -Wall -Wextra -Wno-sign-compare -Wno-unused-but-set-variable -Wno-unused-but-set-parameter + +LDFLAGS := + +### fx-CG 50 build. + +CG_CC := sh-elf-gcc +CG_OBJCOPY := sh-elf-objcopy + +# The libfxcg install folder (adjust to your needs) +LIBFXCG_ROOT := ../.. + +# Platform selection +CG_CFLAGS := $(CFLAGS) -I src-cg -m4a-nofpu -mb -mhitachi +# Enforce strict access size in volatile bitfields, needed for PRAM mainly +CG_CFLAGS += -fstrict-volatile-bitfields +# We use libfxcg and libc within the libfxcg repository +CG_CFLAGS += -I $(LIBFXCG_ROOT)/include -D_FXCG_MINICOMPAT + +# Libraries specific to libfxcg and the cross-compiler +CG_LDFLAGS := $(LDFLAGS) -L $(LIBFXCG_ROOT)/lib -lfxcg -lgcc +# The build is mostly free-standing, with the libfxcg linker script +CG_LDFLAGS += -nostartfiles -T $(LIBFXCG_ROOT)/toolchain/prizm.x +# Generate a map of every function and global variable for debugging +CG_LDFLAGS += -Wl,-Map=build-cg/$(NAME).map + +CG_SRC := $(SRC) $(wildcard src-fxcg/*.c src-fxcg/*.s) +CG_OBJ := $(CG_SRC:cgdoom/%=build-cg/%.o) + +### Native SDL2 build. + +CC ?= gcc + +SDL2_CFLAGS := $(CFLAGS) -I src-sdl2 -DCG_EMULATOR $(pkg-config sdl2 --cflags) +SDL2_LDFLAGS := $(LDFLAGS) $(pkg-config sdl2 --libs) + +SDL2_SRC := $(SRC) $(wildcard src-sdl2/*.c) +SDL2_OBJ := $(SDL2_SRC:cgdoom/%=build-sdl2/%.o) + +### Build rules. + +all: all-cg50 + +#~ + +all-cg50: $(NAME).g3a + +$(NAME).g3a: build-cg/$(NAME).bin + mkg3a -n : -i uns:CGDOOM_UNSELECTED.png -i sel:CGDOOM_SELECTED.png $< $@ + +build-cg/%.s.o: cgdoom/%.s | build-cg/ + $(CG_CC) $(CG_CFLAGS) -c $< -o $@ + +build-cg/%.c.o: cgdoom/%.c | build-cg/ + $(CG_CC) $(CG_CFLAGS) -c $< -o $@ + +build-cg/%.c.o: src-cg/%.c | build-cg/ + $(CG_CC) $(CG_CFLAGS) -c $< -o $@ + +build-cg/$(NAME).elf: $(CG_OBJ) + $(CG_CC) $(CG_CFLAGS) $(CG_LDFLAGS) $^ -o $@ + +build-cg/$(NAME).bin: build-cg/$(NAME).elf + $(CG_OBJCOPY) -O binary $< $@ + +#~ + +all-sdl2: $(NAME) + +$(NAME): $(SDL2_OBJ) + $(CC) $(SDL2_CFLAGS) $(SDL2_LDFLAGS) $^ -o $@ + +build-sdl2/%.c.o: cgdoom/%.c | build-sdl2/ + $(CC) $(SDL2_CFLAGS) -c $< -o $@ + +build-sdl2/%.c.o: src-sdl2/%.c | build-sdl2/ + $(CC) $(SDL2_CFLAGS) -c $< -o $@ + +#~ + +clean: + rm -rf build-cg/ build-sdl2/ + +%/: + @ mkdir -p $@ + +.PRECIOUS: %/ build-cg/%.d build-sdl2/%.d + +include $(wildcard build-cg/*.d build-sdl2/*.d) diff --git a/CGDOOM-minisdk/CGDOOM/platform.h b/src-cg/platform.h similarity index 94% rename from CGDOOM-minisdk/CGDOOM/platform.h rename to src-cg/platform.h index 9a514af..f782983 100644 --- a/CGDOOM-minisdk/CGDOOM/platform.h +++ b/src-cg/platform.h @@ -97,11 +97,6 @@ enum { #define WIDTH 384 #define HEIGHT 216 -#define KEY_PRGM_OPTN 68 -#define KEY_PRGM_MENU 48 -#define KEY_PRGM_POWER 57 -#define KEY_PRGM_EXE 31 - #define EmulHack_Sleep(x) #define ASSERT(x) #define InitFlashSimu(filename) diff --git a/cgemul/emul.c b/src-sdl2/emul.c similarity index 100% rename from cgemul/emul.c rename to src-sdl2/emul.c diff --git a/cgemul/emul.h b/src-sdl2/emul.h similarity index 100% rename from cgemul/emul.h rename to src-sdl2/emul.h diff --git a/cgemul/keyboard.hpp b/src-sdl2/keyboard.hpp similarity index 100% rename from cgemul/keyboard.hpp rename to src-sdl2/keyboard.hpp diff --git a/cgemul/platform.h b/src-sdl2/platform.h similarity index 100% rename from cgemul/platform.h rename to src-sdl2/platform.h diff --git a/cgemul/tastatur.bmp b/src-sdl2/tastatur.bmp similarity index 100% rename from cgemul/tastatur.bmp rename to src-sdl2/tastatur.bmp diff --git a/cgemul/tastatur.c b/src-sdl2/tastatur.c similarity index 100% rename from cgemul/tastatur.c rename to src-sdl2/tastatur.c