ys2-intro/loader/samples/standalone/Makefile
2025-11-13 19:07:39 +03:00

254 lines
5.1 KiB
Makefile
Executable file

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
else
VICE = x64
endif
endif
ifneq ($(USE_PLUS4EMU),0)
EMU = $(PLUS4EMU) -disk
else
EMU = $(VICE) -drive8type 1541 -drive9type 0 -autostart
endif
EMU70 = $(VICE) -drive8type 1570 -drive9type 0 -autostart
ECHO = echo
PRINTF = printf
AS = ca65
LD = ld65
PU = ../../tools/pucrunch/pucrunch
PU_SOURCE = ../../tools/pucrunch
CC1541 = ../../tools/cc1541
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 link compress diskimage run clean distclean wipe
.PHONY: tellarch
BUILDDIR = ../../build
INTERMDIR = ../../build/intermediate
LOADER_SRC = ../../src
LOADER = $(BUILDDIR)/loader-$(_PLATFORM_).lib
RESOURCESDIR = ../resources
PIC1 = $(INTERMDIR)/pic1.bin
PIC2 = $(INTERMDIR)/pic2.bin
ifeq ($(_PLATFORM_),c16)
STARTTRACK = 25
STARTSECTOR = 13
INTERLEAVE = 3
SKEW = 13
DEMO = $(RESOURCESDIR)/threeve.prg
DEMONAME = "threeve"
else ifeq ($(_PLATFORM_),c128)
STARTTRACK = 19
STARTSECTOR = 0
INTERLEAVE = 3
SKEW = 13
DEMO = $(RESOURCESDIR)/doom_c128.prg
DEMONAME = "doom c128"
else
STARTTRACK = 18
STARTSECTOR = 16
INTERLEAVE = 3
SKEW = 1
DEMO = $(RESOURCESDIR)/oxyron_oneder.prg
DEMONAME = "oneder /oxy"
endif
NAME = standalone
SOURCE = $(NAME).s
LOADERCFG = loaderconfig.inc
ASSEMBLE = $(INTERMDIR)/$(NAME)-$(_PLATFORM_).o
LINK = $(INTERMDIR)/$(NAME)-uncompressed-$(_PLATFORM_).prg
COMPRESS = $(INTERMDIR)/$(NAME)-$(_PLATFORM_).prg
DISKIMAGE = $(BUILDDIR)/$(NAME)-$(_PLATFORM_).d64
AS_FLAGS = -I ../../../shared -I ../../include -I $(LOADER) -D EXTCONFIGPATH
PU_FLAGS = -d -l 0x1c01 -x 0x1c01 -i 1
default: diskimage
tellarch:
@$(ECHO) $(ARCH)
loader: $(LOADER)
$(LOADER): $(LOADERCFG)
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) lib
assemble: $(ASSEMBLE)
$(ASSEMBLE): $(SOURCE) $(LOADERCFG)
$(MKDIR) $(BUILDDIR)
$(MKDIR) $(INTERMDIR)
ifeq ($(_PLATFORM_),c64)
$(AS) $(AS_FLAGS) -t c64 -Wa -D PLATFORM=64 -o $@ $<
else ifeq ($(_PLATFORM_),c128)
$(AS) $(AS_FLAGS) -t c128 -Wa -DPLATFORM=128 -o $@ $<
else
$(AS) $(AS_FLAGS) -t c16 -Wa -D PLATFORM=16 -o $@ $<
endif
link: $(LINK)
$(LINK): Linkfile-$(_PLATFORM_) $(ASSEMBLE) $(LOADER)
$(LD) -o $@ -C $^
compress: $(COMPRESS)
$(COMPRESS): $(LINK) $(PU)
ifeq ($(_PLATFORM_),c64)
$(PU) $(PU_FLAGS) -c64 -g 0x37 $< $@
else ifeq ($(_PLATFORM_),c128)
$(PU) $(PU_FLAGS) -c128 $< $@
else
$(PU) $(PU_FLAGS) -c16 $< $@
endif
diskimage: $(DISKIMAGE)
$(DISKIMAGE): $(COMPRESS) $(DEMO) $(PIC1) $(PIC2) $(CC1541)/cc1541
$(CC1541)/cc1541 -v -n "normal is boring" -i plush -S $(INTERLEAVE) -t \
\
-f "standalone" -s 8 -w $(COMPRESS) \
\
-f $(DEMONAME) -r $(STARTTRACK) -b $(STARTSECTOR) -F -$(SKEW) -w $(DEMO) \
-f pic1 -r 18 -E -w $(PIC1) \
-f pic2 -r 18 -E -w $(PIC2) \
\
$@
ifneq ($(USE_YAPE),0)
run: $(DISKIMAGE)
$(YAPE) "..\..\build\$(NAME)-$(_PLATFORM_).d64"
else
run: $(DISKIMAGE)
ifneq ($(USE_PLUS4EMU),0)
$(EMU) $(realpath $^)
else
$(EMU) $(realpath $^):standalone
endif
run70: $(DISKIMAGE)
$(EMU70) $(realpath $^):standalone
endif
$(INTERMDIR)/%.bin: $(RESOURCESDIR)/%.bin
$(PRINTF) '\000\140' | $(CAT) - $? > $@ # octal 140 = hex 60
$(CC1541)/cc1541: $(CC1541)/cc1541.c
$(MAKE) -C $(CC1541) cc1541
clean:
-$(RM) $(ASSEMBLE) $(LINK) $(COMPRESS) $(DISKIMAGE)
-$(RM) -rf $(INTERMDIR)
-$(RM) $(BUILDDIR)/loader-c64.lib
-$(RM) $(BUILDDIR)/loader-c128.lib
-$(RM) $(BUILDDIR)/loader-c16.lib
-$(RMDIR) $(BUILDDIR)
distclean:
-$(MAKE) -C $(LOADER_SRC) clean
$(MAKE) -C $(CC1541) clean
wipe: distclean clean
$(PU):
$(MAKE) -C $(PU_SOURCE)