ys2-intro/loader/samples/minexample/Makefile
2025-11-25 01:03:37 +07:00

238 lines
4.7 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
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 = \
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
LZPRGS = \
island_map.lz.prg
default: diskimage
tellarch:
@$(ECHO) $(ARCH)
loader: $(LOADER)
$(LOADER): $(LOADERCFG)
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) INSTALL=0a00 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)
$(RM) $@
$(CC1541) -n "otomata labs" -i " 2025" \
-f "ys2intro" -w $< \
-f "sid" -w use_this_sid.bin \
-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 \
$@
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
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