From 912c367b1ea49abaac238366f531d28fc4bd7562 Mon Sep 17 00:00:00 2001 From: Pierre Goacolou Date: Wed, 11 Nov 2020 11:30:33 +0100 Subject: [PATCH] base --- Makefile | 208 ++++++++++++++++++++++++++++++++++++++ assets-cg/icon-cg-sel.png | Bin 0 -> 8388 bytes assets-cg/icon-cg-uns.png | Bin 0 -> 4629 bytes assets-fx/icon-fx.png | Bin 0 -> 7417 bytes assets-fx/img/tilemap.png | Bin 0 -> 142 bytes project.cfg | 89 ++++++++++++++++ 6 files changed, 297 insertions(+) create mode 100644 Makefile create mode 100644 assets-cg/icon-cg-sel.png create mode 100644 assets-cg/icon-cg-uns.png create mode 100644 assets-fx/icon-fx.png create mode 100644 assets-fx/img/tilemap.png create mode 100644 project.cfg diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..370dbbb --- /dev/null +++ b/Makefile @@ -0,0 +1,208 @@ +#! /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_FX) +CFLAGSCG = $(CFLAGS) $(CFLAGS_CG) $(INCLUDE_CG) + +# 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) + +# Determine the compiler install and include path +GCC_BASE_FX := $(shell $(TOOLCHAIN_FX)-gcc --print-search-dirs | grep install | sed 's/install: //') +GCC_BASE_CG := $(shell $(TOOLCHAIN_CG)-gcc --print-search-dirs | grep install | sed 's/install: //') +GCC_INCLUDE_FX := $(GCC_BASE_FX)/include +GCC_INCLUDE_CG := $(GCC_BASE_CG)/include + +# +# 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 "$(TARGET_FX)" .g1a).elf +BIN_FX := $(ELF_FX:.elf=.bin) + +ELF_CG := build-cg/$(shell basename "$(TARGET_CG)" .g3a).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_FX) +build-cg/%.S.o: %.S + @ mkdir -p $(dir $@) + $(TOOLCHAIN_CG)-gcc -c $< -o $@ $(INCLUDE_CG) + +# 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.$*) + +# Custom conversions +build-fx/assets/%.o: assets-fx/% + @ mkdir -p $(dir $@) + fxconv --custom $< -o $@ $(FXCONVFX) type:$(subst /,,$(dir $*)) name:$(subst /,_,$(basename $*)) +build-cg/assets/%.o: assets-cg/% + @ mkdir -p $(dir $@) + fxconv --custom $< -o $@ $(FXCONVCG) type:$(subst /,,$(dir $*)) name:$(subst /,_,$(basename $*)) + +# +# 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/assets-cg/icon-cg-sel.png b/assets-cg/icon-cg-sel.png new file mode 100644 index 0000000000000000000000000000000000000000..7137b504cfd44f62f3105ce7a203b9100a557d0f GIT binary patch literal 8388 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 ag#Q8hHNm}t`+-sb0000 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 LNkvXXu0mjfMjhGA literal 0 HcmV?d00001 diff --git a/assets-fx/icon-fx.png b/assets-fx/icon-fx.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1edbdfe5e1d4159b58428d7503b4b94955072d GIT binary patch literal 7417 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 literal 0 HcmV?d00001 diff --git a/project.cfg b/project.cfg new file mode 100644 index 0000000..651ebb7 --- /dev/null +++ b/project.cfg @@ -0,0 +1,89 @@ +#--- +# fxSDK project configuration file for binnword +#--- + +# Project name, should be at most 8 bytes long. +# (You can also specify NAME_G1A or NAME_G3A to override individually.) +NAME := binnword + +# Internal name, should be '@' followed by at most 7 uppercase letters. +# WARNING: If this convention is not followed, the add-in might not appear in +# the main menu of the calculator! +INTERNAL := @binword + +# Output file name. The default is to take , replace spaces with dashes, +# and add .g1a (or .g3a). You can specify a different folder if you want. +TARGET_FX := +TARGET_CG := + +# fx-9860G icon location +ICON_FX = assets-fx/icon-fx.png +# fx-CG 50 icon locations +ICON_CG_UNS = assets-cg/icon-cg-uns.png +ICON_CG_SEL = assets-cg/icon-cg-sel.png + +#--- +# Toolchain selection +#--- + +# Toolchain for fx9860g. Please see also CFLAGS_FX below. +TOOLCHAIN_FX := sh-elf + +# Toolchain for fxcg50. Please see also CFLAGS_CG below. +TOOLCHAIN_CG := sh-elf + +#--- +# Compiler flags +#--- + +# Base compiler flags for the fxSDK, you usually want to keep these. +CFLAGS := -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields + +# Platform-specific compiler flags. +# <> If you are using sh3eb-elf, use -m3. (You can do this on both FX and CG.) +# <> If you are using sh4eb-elf, use -m4-nofpu. (Not ideal on FX but works.) +# <> If you are using sh4eb-nofpu-elf, then your compiler will likely use the +# FPU and cause problems on the calculator. Consider another configuration. +# <> If you are using an sh-elf with several targets, specify whichever you +# support. I recommend -m3 on FX and -m4-nofpu on CG. +# Please see also TOOLCHAIN_FX and TOOLCHAIN_CG above. +CFLAGS_FX := -D FX9860G -m3 +CFLAGS_CG := -D FXCG50 -m4-nofpu + +# Additional compiler flags, change to your own taste! +CFLAGS += -Wall -Wextra -Wno-missing-field-initializers -Os + +# Include paths. Add one -I option for each folder from which you want to +# be able to include files with #include<>. The Makefile provides a variable +# GCC_INCLUDE_FX/GCC_INCLUDE_CG that represents the default include folder, +# which is useful for some libraries such as OpenLibm. +INCLUDE_FX = -I include +INCLUDE_CG = -I include + +# Libraries. Add one -l option for each library you are using, and also +# suitable -L options if you have library files in custom folders. To use +# fxlib, add libfx.a to the project directory and use "-L . -lfx". +LIBS_FX := +LIBS_CG := + +# Base linker flags for the fxSDK, you usually want to keep these. +LDFLAGS_FX := -T fx9860g.ld -lgint-fx $(LIBS_FX) -lgint-fx -lgcc +LDFLAGS_CG := -T fxcg50.ld -lgint-cg $(LIBS_CG) -lgint-cg -lgcc + +# Additional linker flags, if you need any. +LDFLAGS := + +# Additional platform-specific linker flags. +LDFLAGS_FX += -Wl,-Map=build-fx/map +LDFLAGS_CG += -Wl,-Map=build-cg/map + +#--- +# File conversion parameters +#--- + +# Here you can add fxconv options for each converted file, individually. +# The syntax is ".". For example, to specify the parameters for a +# font named "hexa.png", you might write: +# +# FONT.hexa.png = charset:print grid.size:3x5 grid.padding:1 +IMG.tilemap.png :=