#
# Bagman - Apple //e 128K - Makefile
#
# Cross-assembles with Merlin32, builds ProDOS .po disk image with Cadius
#

TARGETNAME = BAGMAN
VOLNAME    = BAGMAN
DISKIMAGE  = bagman.po
BASEIMAGE  = base.po
BUILDDIR   = _build

# Build timestamp - captured when make starts, stamped into asm/build_info.s
BUILD_DATE := $(shell date +'%Y-%m-%d')
BUILD_TIME := $(shell date +'%H:%M:%S')

# Detect platform and set tool paths
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
  ASM      = merlin32
  CADIUS   = cadius
  LZSA     = lzsa
  KEGSDIR  = $(HOME)/dev/kegs.1.38
  KEGS     = open $(KEGSDIR)/KEGSMAC.app
else
  ASM      = merlin32.exe
  CADIUS   = cadius.exe
  LZSA     = /mnt/f/dev/f256/merlin32/bin/lzsa.exe
  KEGSDIR  = /mnt/c/dev/kegs/kegs.1.38
  KEGS     = $(KEGSDIR)/kegswin.exe
endif

help:
	@echo ""
	@echo "$(TARGETNAME) Makefile"
	@echo "-------------------------------------------------"
	@echo " make art    - Convert source artwork to assembly"
	@echo " make build  - Assemble with Merlin32"
	@echo " make image  - Build bootable .PO disk image"
	@echo " make kegs   - Build / Run on KEGS"
	@echo " make clean  - Remove intermediate/target files"
	@echo "-------------------------------------------------"
	@echo ""

art:
	python3 tools/gen_tiles.py assets/play1.dhr#062000 assets/play2.dhr#062000 assets/play3.dhr#062000 --collision assets/collision1.png assets/collision2.png assets/collision3.png > asm/screendata.s
	$(LZSA) -f 2 -r assets/maps.bin assets/maps.lzsa2
	$(LZSA) -f 2 -r assets/tileatlas.bin assets/tileatlas.lzsa2
	python3 tools/gen_shifted_sprites.py assets/sprites.dhr#062000 asm/spritedata.s asm/spriteinit.s
	$(LZSA) -f 2 -r assets/spriteatlas.bin assets/spriteatlas.lzsa2
	python3 tools/gen_font.py assets/namco.dhr#062000 asm/fontdata.s

.PHONY: asm/build_info.s
asm/build_info.s:
	@echo "* Auto-generated build information"  > asm/build_info.s
	@echo "BUILD_DATE ASC \"$(BUILD_DATE) \""   >> asm/build_info.s
	@echo "BUILD_TIME ASC \"$(BUILD_TIME)\""    >> asm/build_info.s

build: art asm/build_info.s
	$(ASM) -v macros asm/bagman.s
	mv asm/bagman $(TARGETNAME).SYSTEM

image: build
	@echo "Creating $(DISKIMAGE)..."
	cp $(BASEIMAGE) $(DISKIMAGE)
	@mkdir -p $(BUILDDIR)
	cp $(TARGETNAME).SYSTEM $(BUILDDIR)/
	cp _FileInformation.txt $(BUILDDIR)/
	-$(CADIUS) DELETEFILE $(DISKIMAGE) /$(VOLNAME)/$(TARGETNAME).SYSTEM 2>/dev/null
	$(CADIUS) ADDFOLDER $(DISKIMAGE) /$(VOLNAME)/ $(BUILDDIR)
	@rm -rf $(BUILDDIR)
	@echo "Done. Disk image: $(DISKIMAGE)"

kegs: image
ifeq ($(UNAME_S),Darwin)
	cp $(DISKIMAGE) $(KEGSDIR)/$(DISKIMAGE)
	@sed -i '' 's|^s7d1 = .*|s7d1 = $(DISKIMAGE)|' $(KEGSDIR)/config.kegs
	$(KEGS)
else
	cd $(KEGSDIR) && ./kegswin.exe
endif

clean:
	rm -rf $(TARGETNAME).SYSTEM $(DISKIMAGE) asm/bagman asm/build_info.s $(BUILDDIR)

.PHONY: help art build image kegs clean
