246 lines
4.9 KiB
Makefile
246 lines
4.9 KiB
Makefile
|
|
ifeq ($(PLATFORM),)
|
|
_PLATFORM_ = c64
|
|
else ifeq ($(PLATFORM),c116)
|
|
_PLATFORM_ = c16
|
|
else ifeq ($(PLATFORM),plus4)
|
|
_PLATFORM_ = c16
|
|
else
|
|
_PLATFORM_ = $(PLATFORM)
|
|
endif
|
|
|
|
ifeq ($(NO_VICE),)
|
|
NO_VICE = 0
|
|
endif
|
|
|
|
|
|
ifneq ($(_PLATFORM_),c64)
|
|
ifneq ($(_PLATFORM_),c128)
|
|
ifneq ($(_PLATFORM_),c16)
|
|
$(error invalid platform $(_PLATFORM_) specified)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ARCH = $(shell uname | tr "[a-z]" "[A-Z]" | tr -c -d "[A-Z]")
|
|
|
|
ifneq ($(findstring CYGWINNT,$(ARCH)),)
|
|
ifeq (CYGWINNT,$(ARCH))
|
|
ARCH = WIN32
|
|
else
|
|
ARCH = WIN64
|
|
endif
|
|
endif
|
|
ifneq ($(findstring DARWIN,$(ARCH)),)
|
|
ARCH = MACOSX
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifneq ($(NO_VICE),0)
|
|
ifneq ($(findstring WIN,$(ARCH)),)
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 1
|
|
else
|
|
USE_PLUS4EMU = 1
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifeq ($(ARCH),MACOSX)
|
|
# MacOSX, these programs must be installed as applications
|
|
VICE = xplus4
|
|
PLUS4EMU = open /Applications/plus4emu.app --args
|
|
else
|
|
VICE = xplus4
|
|
PLUS4EMU = plus4emu
|
|
ifeq ($(ARCH),WIN64)
|
|
YAPE = YapeWin64
|
|
else
|
|
YAPE = Yape
|
|
endif
|
|
endif
|
|
else
|
|
ifeq ($(_PLATFORM_),c128)
|
|
VICE = x128
|
|
USE_VICE = 1
|
|
else
|
|
VICE = x64
|
|
USE_VICE = 1
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(USE_VICE),1)
|
|
EMU = $(VICE) -drive8type 1541 -drive9type 0 -autostart
|
|
EMU71 = $(VICE) -drive8type 1571 -drive9type 0 -autostart
|
|
else
|
|
EMU = $(PLUS4EMU) -disk
|
|
endif
|
|
|
|
|
|
ECHO = echo
|
|
PRINTF = printf
|
|
|
|
AS = cl65
|
|
LD = ld65
|
|
C1541 = c1541
|
|
CC1541 = ../../tools/cc1541/cc1541
|
|
ZX02 = zx02/build/zx02
|
|
ZX02_SRC = zx02
|
|
FURC64 = furC64
|
|
PYTHON = python3
|
|
|
|
MKDIR = mkdir -p
|
|
RM = rm -f
|
|
ifeq ($(ARCH),MACOSX)
|
|
RMDIR = rmdir # XXX TODO xargs to remove .DS_Store
|
|
else
|
|
RMDIR = rmdir
|
|
endif
|
|
CAT = cat
|
|
|
|
|
|
.PHONY: default loader assemble diskimage run clean distclean wipe
|
|
.PHONY: tellarch
|
|
|
|
|
|
BUILDDIR = ../../build
|
|
INTERMDIR = ../../build/intermediate
|
|
LOADER_SRC = ../../src
|
|
LOADER = $(BUILDDIR)/loader-$(_PLATFORM_).prg
|
|
|
|
RESOURCESDIR = ../resources
|
|
|
|
NAME = minexample
|
|
|
|
SOURCE = $(NAME).s
|
|
LOADERCFG = loaderconfig.inc
|
|
ASSEMBLE = $(INTERMDIR)/$(NAME)-uncompressed-$(_PLATFORM_).prg
|
|
DISKIMAGE = $(BUILDDIR)/$(NAME)-$(_PLATFORM_).d64
|
|
|
|
AS_FLAGS = -Wa -I../../../shared -I ../../include -u __EXEHDR__
|
|
|
|
ZX0PRGS = \
|
|
use_this_sid.zx0.prg \
|
|
badguy.zx0.prg \
|
|
title_320-prepared.zx0.prg \
|
|
tower.zx0.prg \
|
|
tower_beam.zx0.prg \
|
|
field.zx0.prg \
|
|
falling_star.zx0.prg \
|
|
lilia.zx0.prg \
|
|
lilia_hero.zx0.prg \
|
|
island.zx0.prg \
|
|
clouds.zx0.prg
|
|
|
|
LZPRGS = \
|
|
island_map.lz.prg
|
|
|
|
|
|
default: diskimage
|
|
|
|
|
|
tellarch:
|
|
@$(ECHO) $(ARCH)
|
|
|
|
|
|
loader: $(LOADER)
|
|
|
|
$(LOADER): $(LOADERCFG)
|
|
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) INSTALL=0b00 RESIDENT=0900 ZP=02 prg
|
|
|
|
|
|
assemble: $(ASSEMBLE)
|
|
|
|
$(ASSEMBLE): $(SOURCE) $(LOADER) $(LOADERCFG)
|
|
$(MKDIR) $(BUILDDIR)
|
|
$(MKDIR) $(INTERMDIR)
|
|
ifeq ($(_PLATFORM_),c64)
|
|
$(AS) $(AS_FLAGS) -C c64-asm.cfg -Wa -DPLATFORM=64 -o $@ $<
|
|
else ifeq ($(_PLATFORM_),c128)
|
|
$(AS) $(AS_FLAGS) -t c128 -Wa -DPLATFORM=128 -o $@ $<
|
|
else
|
|
$(AS) $(AS_FLAGS) -t c16 -Wa -DPLATFORM=16 -o $@ $<
|
|
endif
|
|
|
|
|
|
diskimage: $(DISKIMAGE)
|
|
|
|
$(DISKIMAGE): $(ASSEMBLE) $(CC1541) $(ZX0PRGS) $(LZPRGS) font.bin
|
|
$(RM) $@
|
|
$(CC1541) -n "otomata labs" -i " 2025" \
|
|
-f "ys2intro" -w $< \
|
|
-f "song0" -w use_this_sid.zx0.prg \
|
|
-f "badguy" -w badguy.zx0.prg \
|
|
-f "font" -w font.bin \
|
|
-f "intrbmp" -w title_320-prepared.zx0.prg \
|
|
-f "tower" -w tower.zx0.prg \
|
|
-f "towerbm" -w tower_beam.zx0.prg \
|
|
-f "field" -w field.zx0.prg \
|
|
-f "fallstar" -w falling_star.zx0.prg \
|
|
-f "lilia" -w lilia.zx0.prg \
|
|
-f "lilhero" -w lilia_hero.zx0.prg \
|
|
-f "island" -w island.zx0.prg \
|
|
-f "islandmap" -w island_map.lz.prg \
|
|
-f "clouds" -w clouds.zx0.prg \
|
|
$@
|
|
|
|
|
|
ifneq ($(USE_YAPE),0)
|
|
run: $(DISKIMAGE)
|
|
$(YAPE) "..\..\build\$^"
|
|
else
|
|
run: $(DISKIMAGE)
|
|
$(EMU) $(realpath $^)
|
|
|
|
run71: $(DISKIMAGE)
|
|
$(EMU71) $(realpath $^)
|
|
endif
|
|
|
|
$(INTERMDIR)/%.prg: $(RESOURCESDIR)/%.bin
|
|
$(PRINTF) '\000\140' | $(CAT) - $? > $@ # octal 140 = hex 60
|
|
|
|
$(CC1541):
|
|
make -C $(LOADER_SRC) cc1541
|
|
|
|
$(ZX02):
|
|
make -C $(ZX02_SRC) build/zx02
|
|
|
|
%.zx0.prg: %.bin $(ZX02)
|
|
$(ZX02) $< $@.tmp
|
|
$(PRINTF) "\x00\x80" | cat - $@.tmp > $@
|
|
$(RM) $@.tmp
|
|
|
|
%.lz.prg: %.bin
|
|
$(PYTHON) aart_lz.py $< $@.tmp
|
|
$(PRINTF) "\x00\x90" | cat - $@.tmp > $@
|
|
$(RM) $@.tmp
|
|
|
|
use_this_sid.bin: ys2_port_legato.fur
|
|
cd $(FURC64) && ./convert.sh $(abspath $<)
|
|
cp $(FURC64)/asm/song.bin $@
|
|
|
|
clean:
|
|
-$(RM) $(ZX0PRGS) $(LZPRGS)
|
|
-$(RM) *.o $(ASSEMBLE) $(DISKIMAGE)
|
|
-$(RM) -rf $(INTERMDIR)
|
|
-$(RM) $(BUILDDIR)/loader-c64.prg
|
|
-$(RM) $(BUILDDIR)/loader-c128.prg
|
|
-$(RM) $(BUILDDIR)/loader-c16.prg
|
|
-$(RMDIR) $(BUILDDIR)
|
|
|
|
distclean:
|
|
-$(MAKE) -C $(LOADER_SRC) clean
|
|
|
|
wipe: distclean clean
|