# Name of the target to make
TARGETNAME = roboplay

# Destination of final file
DEST := dsk\\

# Fusion-C location
FUSION-C_INC = ..
FUSION-C_LIB = ../fusion-c/lib

# Addr code
ADDR_CODE = 0x180

CFLAGS = --disable-warning 196 -mz80 --no-std-crt0 --opt-code-size -I $(FUSION-C_INC)
LDFLAGS = --code-loc $(ADDR_CODE) --data-loc 0 -L $(FUSION-C_LIB)/ fusion.lib

REL = crt0msx_msxdos_advanced.rel opl4.rel psg.rel dos2.rel memory.rel file.rel keyboard.rel m3u.rel scc.rel opm.rel

PLAYERS = mod.ply raw.ply dro.ply d00.ply sop.ply vgm.ply imf.ply mbm.ply mus.ply pro.ply mid.ply mid_fm.ply sbm.ply sng.ply mwm.ply mfm.ply rad.ply

all: $(TARGETNAME).com $(PLAYERS) yrw801.dat fm.data waves.dat clean

$(TARGETNAME).com: $(REL)
	@sdcc $(CFLAGS) $(TARGETNAME).c $(REL) $(LDFLAGS)
	@hex2bin -e com $(TARGETNAME).ihx
	@copy $(TARGETNAME).com $(DEST) /y > NUL
	@del $(TARGETNAME).com

yrw801.dat: yrw801.c yrw801_index.rel
	@sdcc $(CFLAGS) $< $(basename $<)_index.rel --code-loc 0x8102
	@hex2bin -e dat $(basename $<).ihx
	@copy $@ $(DEST) /y

fm.dat: fm.data
	@copy $< $(DEST)$@

waves.dat: waves.c wavepatches.rel
	@sdcc $(CFLAGS) $< wavepatches.rel --code-loc 0x8000
	@hex2bin -e dat $(basename $<).ihx
	@copy $@ $(DEST) /y

%.ply: %.no_tracker
	@hex2bin -e ply $(basename $(<F)).ihx
	@copy $(basename $(<F)).ply $(DEST) /y > NUL

%.trk: %.tracker
	@hex2bin -e ply $(basename $(<F)).ihx
	@copy $(basename $(<F)).ply $(DEST) /y > NUL

%.no_tracker: players\%.c player.rel 
	@echo -----------------------------------------
	sdcc $(CFLAGS) $^ --code-loc 0x4100 --data-loc 0

%.tracker: players\%.c player.rel tracker.rel 
	@echo -----------------------------------------
	sdcc $(CFLAGS) $^ --code-loc 0x4100 --data-loc 0

%.rel: %.c
	@sdcc $(CFLAGS) -c $<

%.rel: %.s
	@sdasz80 -o $<	

clean:
	@del /Q *.com *.asm *.lst *.sym *.bin *.ihx *.lk *.map *.noi *.rel *.o *.ply *.dat *.tbl
