From a59390d090850a64674c399151cac1017ff61d87 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Mon, 22 Mar 2021 20:41:19 +0100 Subject: [PATCH] Switch to new fxsdk build system Wrote CMakeLists.txt, modified scripts, renamed files, etc. --- CMakeLists.txt | 94 ++++++++++ Makefile | 194 -------------------- README.md | 4 +- assets-cg/{icon-cg-sel.png => icon-sel.png} | Bin assets-cg/{icon-cg-uns.png => icon-uns.png} | Bin assets-cg/img/fxconv-metadata.txt | 78 ++++++++ build.sh | 16 -- compile_level.py => compile_levels.py | 0 update_levels.sh | 5 + 9 files changed, 179 insertions(+), 212 deletions(-) create mode 100644 CMakeLists.txt delete mode 100755 Makefile rename assets-cg/{icon-cg-sel.png => icon-sel.png} (100%) rename assets-cg/{icon-cg-uns.png => icon-uns.png} (100%) create mode 100644 assets-cg/img/fxconv-metadata.txt delete mode 100755 build.sh rename compile_level.py => compile_levels.py (100%) create mode 100755 update_levels.sh diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..50475c3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,94 @@ +# Configure with [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.18) +project(AST3) + +include(GenerateG1A) +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.1 REQUIRED) + +include_directories(include) + +add_custom_command( + OUTPUT + "${CMAKE_CURRENT_LIST_DIR}/src/times.c" + "${CMAKE_CURRENT_LIST_DIR}/include/define.h" + COMMENT "Generate src/times.c & include/define.h" + COMMAND python3 time.py + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + DEPENDS time.py times.lvl) + +add_custom_command( + OUTPUT "${CMAKE_CURRENT_LIST_DIR}/src/setlevel.c" + COMMENT "Generate src/setlevel.c" + COMMAND sh update_levels.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + DEPENDS update_levels.sh compile_levels.py + editor/levels/0.lvl + editor/levels/1.lvl + editor/levels/2.lvl + editor/levels/3.lvl + editor/levels/4.lvl + editor/levels/5.lvl + editor/levels/6.lvl + editor/levels/7.lvl + editor/levels/8.lvl + editor/levels/9.lvl + editor/levels/10.lvl + editor/levels/11.lvl + editor/levels/12.lvl + editor/levels/13.lvl + editor/levels/14.lvl + editor/levels/15.lvl + editor/levels/16.lvl) + +set(SOURCES + src/collide.c + src/drawlevel.c + src/main.c + src/menu.c + src/save.c + src/setlevel.c + src/times.c) + +set(ASSETS) +set(ASSETS_fx) +set(ASSETS_cg + assets-cg/img/appear.png + assets-cg/img/appearblock.png + assets-cg/img/blackout.png + assets-cg/img/chock.png + assets-cg/img/chrono1.png + assets-cg/img/chrono2.png + assets-cg/img/chrono2appear.png + assets-cg/img/coin.png + assets-cg/img/damaged.png + assets-cg/img/dead.png + assets-cg/img/end.png + assets-cg/img/endscreen.png + assets-cg/img/ice.png + assets-cg/img/key1.png + assets-cg/img/key2.png + assets-cg/img/key2block.png + assets-cg/img/key2blockvoid.png + assets-cg/img/keyblock.png + assets-cg/img/medals.png + assets-cg/img/menu.png + assets-cg/img/new.png + assets-cg/img/player.png + assets-cg/img/solid_0.png + assets-cg/img/speedrun.png + assets-cg/img/switch.png) + +set(FLAGS -Wall -Wextra -Os) + +fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) + +add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) +target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS}) +target_link_libraries(${PROJECT_NAME} Gint::Gint) + +generate_g3a(TARGET ${PROJECT_NAME} OUTPUT "${PROJECT_NAME}.g3a" + NAME "${PROJECT_NAME}" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) diff --git a/Makefile b/Makefile deleted file mode 100755 index 1106c98..0000000 --- a/Makefile +++ /dev/null @@ -1,194 +0,0 @@ -#! /usr/bin/make -f -# Default Makefile for fxSDK add-ins. This file was probably copied there by -# the [fxsdk] program. -#--- - -# -# Configuration -# - -include project.cfg - -# Compiler flags -CFLAGSFX := $(CFLAGS) $(CFLAGS_FX) $(INCLUDE) -CFLAGSCG := $(CFLAGS) $(CFLAGS_CG) $(INCLUDE) - -# Linker flags -LDFLAGSFX := $(LDFLAGS) $(LDFLAGS_FX) -LDFLAGSCG := $(LDFLAGS) $(LDFLAGS_CG) - -# Dependency list generation flags -depflags = -MMD -MT $@ -MF $(@:.o=.d) -MP -# ELF to binary flags -BINFLAGS := -R .bss -R .gint_bss - -# G1A and G3A generation flags -NAME_G1A ?= $(NAME) -NAME_G3A ?= $(NAME) -G1AF := -i "$(ICON_FX)" -n "$(NAME_G1A)" --internal="$(INTERNAL)" -G3AF := -n basic:"$(NAME_G3A)" -i uns:"$(ICON_CG_UNS)" -i sel:"$(ICON_CG_SEL)" - -ifeq "$(TOOLCHAIN_FX)" "" -TOOLCHAIN_FX := sh3eb-elf -endif - -ifeq "$(TOOLCHAIN_CG)" "" -TOOLCHAIN_CG := sh4eb-elf -endif - -# fxconv flags -FXCONVFX := --fx --toolchain=$(TOOLCHAIN_FX) -FXCONVCG := --cg --toolchain=$(TOOLCHAIN_CG) - -# -# File listings -# - -NULL := -TARGET := $(subst $(NULL) $(NULL),-,$(NAME)) - -ifeq "$(TARGET_FX)" "" -TARGET_FX := $(TARGET).g1a -endif - -ifeq "$(TARGET_CG)" "" -TARGET_CG := $(TARGET).g3a -endif - -ELF_FX := build-fx/$(shell basename -s .g1a $(TARGET_FX)).elf -BIN_FX := $(ELF_FX:.elf=.bin) - -ELF_CG := build-cg/$(shell basename -s .g3a $(TARGET_CG)).elf -BIN_CG := $(ELF_CG:.elf=.bin) - -# Source files -src := $(wildcard src/*.[csS] \ - src/*/*.[csS] \ - src/*/*/*.[csS] \ - src/*/*/*/*.[csS]) -assets-fx := $(wildcard assets-fx/*/*) -assets-cg := $(wildcard assets-cg/*/*) - -# Object files -obj-fx := $(src:%=build-fx/%.o) \ - $(assets-fx:assets-fx/%=build-fx/assets/%.o) -obj-cg := $(src:%=build-cg/%.o) \ - $(assets-cg:assets-cg/%=build-cg/assets/%.o) - -# Additional dependencies -deps-fx := $(ICON_FX) -deps-cg := $(ICON_CG_UNS) $(ICON_CG_SEL) - -# All targets -all := -ifneq "$(wildcard build-fx)" "" -all += all-fx -endif -ifneq "$(wildcard build-cg)" "" -all += all-cg -endif - -# -# Build rules -# - -all: $(all) - -all-fx: $(TARGET_FX) -all-cg: $(TARGET_CG) - -$(TARGET_FX): $(obj-fx) $(deps-fx) - @ mkdir -p $(dir $@) - $(TOOLCHAIN_FX)-gcc -o $(ELF_FX) $(obj-fx) $(CFLAGSFX) $(LDFLAGSFX) - $(TOOLCHAIN_FX)-objcopy -O binary $(BINFLAGS) $(ELF_FX) $(BIN_FX) - fxg1a $(BIN_FX) -o $@ $(G1AF) - -$(TARGET_CG): $(obj-cg) $(deps-cg) - @ mkdir -p $(dir $@) - $(TOOLCHAIN_CG)-gcc -o $(ELF_CG) $(obj-cg) $(CFLAGSCG) $(LDFLAGSCG) - $(TOOLCHAIN_CG)-objcopy -O binary $(BINFLAGS) $(ELF_CG) $(BIN_CG) - mkg3a $(G3AF) $(BIN_CG) $@ - -# C sources -build-fx/%.c.o: %.c - @ mkdir -p $(dir $@) - $(TOOLCHAIN_FX)-gcc -c $< -o $@ $(CFLAGSFX) $(depflags) -build-cg/%.c.o: %.c - @ mkdir -p $(dir $@) - $(TOOLCHAIN_CG)-gcc -c $< -o $@ $(CFLAGSCG) $(depflags) - -# Assembler sources -build-fx/%.s.o: %.s - @ mkdir -p $(dir $@) - $(TOOLCHAIN_FX)-gcc -c $< -o $@ -build-cg/%.s.o: %.s - @ mkdir -p $(dir $@) - $(TOOLCHAIN_CG)-gcc -c $< -o $@ - -# Preprocessed assembler sources -build-fx/%.S.o: %.S - @ mkdir -p $(dir $@) - $(TOOLCHAIN_FX)-gcc -c $< -o $@ $(INCLUDE) -build-cg/%.S.o: %.S - @ mkdir -p $(dir $@) - $(TOOLCHAIN_CG)-gcc -c $< -o $@ $(INCLUDE) - -# Images -build-fx/assets/img/%.o: assets-fx/img/% - @ mkdir -p $(dir $@) - fxconv --bopti-image $< -o $@ $(FXCONVFX) name:img_$(basename $*) $(IMG.$*) -build-cg/assets/img/%.o: assets-cg/img/% - @ mkdir -p $(dir $@) - fxconv --bopti-image $< -o $@ $(FXCONVCG) name:img_$(basename $*) $(IMG.$*) - -# Fonts -build-fx/assets/fonts/%.o: assets-fx/fonts/% - @ mkdir -p $(dir $@) - fxconv -f $< -o $@ $(FXCONVFX) name:font_$(basename $*) $(FONT.$*) -build-cg/assets/fonts/%.o: assets-cg/fonts/% - @ mkdir -p $(dir $@) - fxconv -f $< -o $@ $(FXCONVCG) name:font_$(basename $*) $(FONT.$*) - -# Binaries -build-fx/assets/bin/%.o: assets-fx/bin/% - @ mkdir -p $(dir $@) - fxconv -b $< -o $@ $(FXCONVFX) name:bin_$(basename $*) $(BIN.$*) -build-cg/assets/bin/%.o: assets-cg/bin/% - @ mkdir -p $(dir $@) - fxconv -b $< -o $@ $(FXCONVCG) name:bin_$(basename $*) $(BIN.$*) - -# -# Cleaning and utilities -# - -# Dependency information --include $(shell find build* -name *.d 2> /dev/null) -build-fx/%.d: ; -build-cg/%.d: ; -.PRECIOUS: build-fx build-cg build-fx/%.d build-cg/%.d %/ - -clean-fx: - @ rm -rf build-fx/ -clean-cg: - @ rm -rf build-cg/ - -distclean-fx: clean-fx - @ rm -f $(TARGET_FX) -distclean-cg: clean-cg - @ rm -f $(TARGET_CG) - -clean: clean-fx clean-cg - -distclean: distclean-fx distclean-cg - -install-fx: $(TARGET_FX) - p7 send -f $< -install-cg: $(TARGET_CG) - @ while [[ ! -h /dev/Prizm1 ]]; do sleep 0.25; done - @ while ! mount /dev/Prizm1; do sleep 0.25; done - @ rm -f /mnt/prizm/$< - @ cp $< /mnt/prizm - @ umount /dev/Prizm1 - @- eject /dev/Prizm1 - -.PHONY: all all-fx all-cg clean distclean install-fx install-cg diff --git a/README.md b/README.md index 709500f..54ce4cb 100755 --- a/README.md +++ b/README.md @@ -12,12 +12,12 @@ Ceci est une adaptation utilisant Gint de Lephenixnoir pour avoir un jeu plus pl ## Éditer le jeu : -Clone ce dépot : +Clone ce dépot : `$ git clone https://gitea.planet-casio.com/Tituya/AST3_C && cd AST3_C` Pour ouvrir l'éditeur de niveau (Python et Pygame obligatoire). `$ ./editor.sh` Pour compiler le jeu (fxsdk + gint obligatoire). -`$ ./build.sh` +`$ fxsdk build-cg` diff --git a/assets-cg/icon-cg-sel.png b/assets-cg/icon-sel.png similarity index 100% rename from assets-cg/icon-cg-sel.png rename to assets-cg/icon-sel.png diff --git a/assets-cg/icon-cg-uns.png b/assets-cg/icon-uns.png similarity index 100% rename from assets-cg/icon-cg-uns.png rename to assets-cg/icon-uns.png diff --git a/assets-cg/img/fxconv-metadata.txt b/assets-cg/img/fxconv-metadata.txt new file mode 100644 index 0000000..59af998 --- /dev/null +++ b/assets-cg/img/fxconv-metadata.txt @@ -0,0 +1,78 @@ +appear.png: + type:bopti-image + name: img_appear +appearblock.png: + type:bopti-image + name: img_appearblock +blackout.png: + type:bopti-image + name: img_blackout +chock.png: + type:bopti-image + name: img_chock +chrono1.png: + type:bopti-image + name: img_chrono1 +chrono2.png: + type:bopti-image + name: img_chrono2 +chrono2appear.png: + type:bopti-image + name: img_chrono2appear +coin.png: + type:bopti-image + name: img_coin +damaged.png: + type:bopti-image + name: img_damaged +dead.png: + type:bopti-image + name: img_dead +end.png: + type:bopti-image + name: img_end +endscreen.png: + type:bopti-image + name: img_endscreen +fxconv-metadata.txt: + type:bopti-image + name: img_metadata +ice.png: + type:bopti-image + name: img_ice +key1.png: + type:bopti-image + name: img_key1 +key2.png: + type:bopti-image + name: img_key2 +key2block.png: + type:bopti-image + name: img_key2block +key2blockvoid.png: + type:bopti-image + name: img_key2blockvoid +keyblock.png: + type:bopti-image + name: img_keyblock +medals.png: + type:bopti-image + name: img_medals +menu.png: + type:bopti-image + name: img_menu +new.png: + type:bopti-image + name: img_new +player.png: + type:bopti-image + name: img_player +solid_0.png: + type:bopti-image + name: img_solid_0 +speedrun.png: + type:bopti-image + name: img_speedrun +switch.png: + type:bopti-image + name: img_switch diff --git a/build.sh b/build.sh deleted file mode 100755 index 1ae425b..0000000 --- a/build.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -echo "making define.h from editor" -rm include/define.h -echo "#define LEVEL_MAX $(ls editor/levels/[^0]*.lvl | wc -l) -#define PLAYER_HEIGHT 11 -#define FPS 70" > include/define.h -echo "done" -echo "making setlevel.c from editor" -python3 compile_level.py -echo "done" -echo "making times.c from times.lvl" -python3 time.py -echo "done" -echo "building for cg" -fxsdk build-cg -echo "done" diff --git a/compile_level.py b/compile_levels.py similarity index 100% rename from compile_level.py rename to compile_levels.py diff --git a/update_levels.sh b/update_levels.sh new file mode 100755 index 0000000..a4f6fa0 --- /dev/null +++ b/update_levels.sh @@ -0,0 +1,5 @@ +#!/bin/sh +echo "#define LEVEL_MAX $(ls editor/levels/[^0]*.lvl | wc -l) +#define PLAYER_HEIGHT 11 +#define FPS 70" > include/define.h +python3 compile_levels.py