# makefile for zblast SD (Amstrad CPC version)
#
# This needs zmac, available from:
# - ftp://ftp.nvg.ntnu.no/pub/cpc/utils/cpc/zmac.zip
#   (includes Windows binary and source code)
# and cpcxfs, available from:
# - ftp://ftp.nvg.ntnu.no/pub/cpc/utils/cpc/cpcxfs.zip
#   (also includes Windows binary and source code)

# Locations of the C compiler, cpcxfs and zmac

CC=mingw32-gcc
CPCXFS=cpcxfs
ZMAC=zmac

# Command-line options to use with the C compiler

CFLAGS=-Wall -O0

# Commands for copying and deleting files

CP=cp -f
RM=rm -f

# Extension (suffix) for executable files (.exe if using Windows, blank if using
# Linux)

exec_suffix=.exe

# Locations of zblast SD development and game DSK files

ZBLAST_SD_DSK_DEV=zblastsd_dev.dsk
ZBLAST_SD_DSK_GAME=zblastsd.dsk


all: $(ZBLAST_SD_DSK_GAME)

$(ZBLAST_SD_DSK_GAME): zblastsd.bin zblastsd.scr zblastsd.
	$(CPCXFS) -f -nd $(ZBLAST_SD_DSK_GAME)
	$(CPCXFS) $(ZBLAST_SD_DSK_GAME) -b -f -p zblastsd. -p zblastsd.scr \
	-p zblastsd.bin

# The main game

zblastsd.bin: main.asm levels.asm sound.asm music.asm tune.dat sprites.dat \
  font.dat
	$(ZMAC) -A -l -o zblastsd.bin main.asm

tune.dat: macrospec.csf lilting.csf tuneconv$(exec_suffix)
	$(RM) tmpfreq.dat
	./tuneconv <macrospec.csf 2>tmpfreq.dat |sed '/:/s/^/mac_/' >tune.dat
	./tuneconv <lilting.csf 2>freq.dat |sed '/:/s/^/lil_/' >>tune.dat
	echo 'freqtable:' >>tune.dat
	sed 's/^/defw /' <freq.dat >>tune.dat

tuneconv$(exec_suffix): tuneconv.c
	$(CC) $(CFLAGS) -o tuneconv$(exec_suffix) tuneconv.c -lm

sprites.dat font.dat: sprtodat$(exec_suffix) $(ZBLAST_SD_DSK_DEV)
	$(CPCXFS) $(ZBLAST_SD_DSK_DEV) -b -f -g sprites.scr
	sprtodat$(exec_suffix) sprites.scr sprites.dat font.dat

sprtodat$(exec_suffix): sprtodat.c
	$(CC) $(CFLAGS) -o sprtodat$(exec_suffix) sprtodat.c

# The title screen

zblastsd.scr: bmptoscr$(exec_suffix) zblastsd.bmp
	bmptoscr$(exec_suffix) zblastsd.bmp zblastsd.scr

bmptoscr$(exec_suffix): bmptoscr.c
	$(CC) $(CFLAGS) -o bmptoscr$(exec_suffix) bmptoscr.c

# The loader for the title screen and game

zblastsd.: loader.asm
	$(ZMAC) -A -l -o zblastsd. loader.asm

install:
	$(CP) zblastsd.dsk ..

clean:
	$(RM) bmptoscr$(exec_suffix) sprtodat$(exec_suffix) tuneconv$(exec_suffix)
	$(RM) zblastsd. zblastsd.scr zblastsd.bin
	$(RM) font.dat freq.dat sprites.dat tmpfreq.dat tune.dat
	$(RM) sprites.scr

distclean: clean
	$(RM) $(ZBLAST_SD_DSK_GAME)
