TARG = VAntAGE
VERSION = 1.11
CC = @gcc
LD = @gcc
ASM = @nasmw
ASMFLAGS = -f coff -dUSE_STACK

CFLAGS = -fomit-frame-pointer -O4 -march=pentium \
	-Werror -Wall -W -Wno-sign-compare -Wno-unused \
	-Wpointer-arith -Wbad-function-cast -Wcast-align -Waggregate-return \
	-Wstrict-prototypes -g
CDEFS = -DHAS_YM2203=1


LDFLAGS = 

MAIN_OBJS = main.o mz80.oa twk.o twkmode.o key.o fixed.o \
		keyasm.o blit.o boards.o sound.o \
		unzip.o fileio.o dip.o ui.o mem.o joy.o control.o video.o \
		sidewind.oa psxpad.o gpadpro.o pcx.o vidasm.oa vesa.o


BOARD_OBJS = galvid.o galsnd.o scramvid.o scramsnd.o \
		pacvid.o vanvnsnd.o phnxvid.o phnxsnd.o \
		invvid.o dkvid.o dksnd.o amdvid.o \
		frogvid.o frogsnd.o mcrstvid.o mcrstsnd.o \
		bjvid.o bjsnd.o zaxvid.o zaxsnd.o \
		1942vid.o 1942snd.o pyanvid.o pyansnd.o \
		mrdovid.o mrdosnd.o galagvid.o pengovid.o scobrvid.o \
		doctlvid.o doctlsnd.o ldybvid.o ldybsnd.o \
		jrpacvid.o 1943vid.o 1943snd.o \
		gsmkevid.o gyrodvid.o

SOUND_OBJS = namcosnd.o ay8910.o sn76496.o fm.o ym2203.o

ALL_OBJS = $(MAIN_OBJS) $(BOARD_OBJS) $(SOUND_OBJS)


COMHEAD = main.h globals.h boards.h video.h vdefs.h

GALAG_DEP = galagbrd.h galagvid.h galagmem.h
GAL_DEP	= galbrd.h galvid.h galmem.h galsnd.h
SCRAM_DEP = scrambrd.h scramvid.h scrammem.h scramsnd.h
PAC_DEP = pacbrd.h pacvid.h pacmem.h vanvnsnd.h
PHNX_DEP = phnxbrd.h phnxvid.h phnxmem.h phnxsnd.h
INV_DEP = invbrd.h invvid.h invmem.h
DK_DEP = dkbrd.h dkvid.h dkmem.h dksnd.h
AMD_DEP = amdbrd.h amdvid.h amdmem.h
FROG_DEP = frogbrd.h frogvid.h frogmem.h
MCRST_DEP = mcrstbrd.h mcrstvid.h mcrstmem.h mcrstsnd.h
BJ_DEP = bjbrd.h bjvid.h bjsnd.h bjmem.h
ZAX_DEP = zaxbrd.h zaxvid.h zaxmem.h zaxsnd.h
1942_DEP = 1942brd.h 1942vid.h 1942snd.h 1942mem.h
POOYAN_DEP = pyanbrd.h pyanvid.h pyanmem.h pyansnd.h
MRDO_DEP = mrdobrd.h mrdovid.h mrdomem.h mrdosnd.h
PENGO_DEP = pengobrd.h pengovid.h pengomem.h
SCOBRA_DEP = scobrbrd.h scobrvid.h scobrmem.h
DOCASTLE_DEP = doctlbrd.h doctlvid.h doctlsnd.h doctlmem.h
LADYBUG_DEP = ldybbrd.h ldybvid.h ldybmem.h ldybsnd.h
JRPACMAN_DEP = jrpacbrd.h jrpacvid.h jrpacmem.h
1943_DEP = 1943brd.h 1943vid.h 1943mem.h 1943snd.h
GUNSMOKE_DEP = gsmkebrd.h gsmkevid.h gsmkemem.h
GYRODINE_DEP = gyrodbrd.h gyrodvid.h gyrodmem.h

BOARD_DEP = $(GAL_DEP) $(SCRAM_DEP) $(PAC_DEP) $(PHNX_DEP) \
			$(INV_DEP) $(DK_DEP) $(AMD_DEP) $(FROG_DEP) \
			$(MCRST_DEP) $(BJ_DEP) $(ZAX_DEP) $(1942_DEP) \
			$(POOYAN_DEP) $(GALAG_DEP) $(MRDO_DEP) $(PENGO_DEP) \
			$(SCOBRA_DEP) $(DOCASTLE_DEP) $(LADYBUG_DEP) $(JRPACMAN_DEP) \
			$(1943_DEP) $(GUNSMOKE_DEP) $(GYRODINE_DEP)


all: info $(TARG).exe

info:
	@echo ======================
	@echo compiling $(TARG) $(VERSION)
	@echo ======================

$(TARG).exe: $(ALL_OBJS)
	@echo =====================
	@echo linking $(TARG) $(VERSION)
	@echo =====================
	$(LD) $(LDFLAGS) $(ALL_OBJS) -lz -laudio -o $@




%.o: %.c
	@echo compiling $<
	$(CC)  $(CFLAGS) $(CDEFS) -c $< -o $@


%.o: %.s
	@echo assembling $<
	$(CC) -x assembler-with-cpp $(CFLAGS) -o $@ -c $<

%.oa: %.asm
	@echo assembling $<
	$(ASM) -o $@ $(ASMFLAGS) $<




clean:
	@echo ==============================
	@echo Clearing build for $(TARG) $(VERSION)
	@echo ==============================
	@echo Deleting objects
	@del *.o
	@del *.oa
	@echo Deleting binaries
	@del $(TARG).exe


#CORE
main.o : main.c $(COMHEAD) $(BOARD_DEP)
mz80.oa: mz80.asm
twk.o: twk.c twk_lc.h $(COMHEAD)
twkmode.o: twkmode.s
key.o: key.c key_lc.h $(COMHEAD)
keyasm.o: keyasm.s nkeys.h
boards.o: boards.c $(COMHEAD) $(BOARD_DEP)
blit.o: blit.s $(COMHEAD)
sound.o: sound.c $(COMHEAD)
vide.o: video.c $(COMHEAD)
fixed.o: fixed.c $(COMHEAD)
unzip.o: unzip.c unzip.h
fileio.o: fileio.c $(COMHEAD)
dip.o: dip.c $(COMHEAD) dip.h
ui.o: ui.c $(COMHEAD) ui_lc.h
mem.o: mem.c $(COMHEAD)
joy.o: joy.c $(COMHEAD)
sidewind.oa: sidewind.asm
psxpad.o: psxpad.c psxpad.h
pcx.o: pcx.c $(COMHEAD)
gpadpro.o: gpadpro.c $(COMHEAD)
control.o: control.c $(COMHEAD)
vidasm.oa: vidasm.asm $(COMHEAD)
vesa.o: vesa.c $(COMHEAD)

#BOARDS
galvid.o: galvid.c $(COMHEAD) $(GAL_DEP)
galsnd.o: galsnd.c $(COMHEAD) $(GAL_DEP)
scramvid.o: scramvid.c $(COMHEAD) $(SCRAM_DEP)
scramsnd.o: scramsnd.c $(COMHEAD) $(SCRAM_DEP)
pacvid.o: pacvid.c $(COMHEAD) $(PAC_DEP)
vanvnsnd.o: vanvnsnd.c $(COMHEAD) $(PAC_DEP)
phnxvid.o: phnxvid.c $(COMHEAD) $(PHNX_DEP)
phnxsnd.o: phnxsnd.c $(COMHEAD) $(PHNX_DEP)
invvid.o: invvid.c $(COMHEAD) $(INV_DEP)
dkvid.o: dkvid.c $(COMHEAD) $(DK_DEP)
dksnd.o: dksnd.c $(COMHEAD) $(DK_DEP)
amdvid.o: amdvid.c $(COMHEAD) $(AMD_DEP)
frogvid.o: frogvid.c $(COMHEAD) $(FROG_DEP)
frogsnd.o: frogsnd.c $(COMHEAD) $(FROG_DEP)
mcrstvid.o: mcrstvid.c $(COMHEAD) $(MCRST_DEP)
mcrstsnd.o: mcrstsnd.c $(COMHEAD) $(MCRST_DEP)
bjvid.o: bjvid.c $(COMHEAD) $(BJ_DEP)
bjsnd.o: bjsnd.c $(COMHEAD) $(BJ_DEP)
zaxvid.o: zaxvid.c $(COMHEAD) $(ZAX_DEP)
zaxsnd.o: zaxsnd.c $(COMHEAD) $(ZAX_DEP)
1942vid.o: 1942vid.c $(COMHEAD) $(1942_DEP)
1942snd.o: 1942snd.c $(COMHEAD) $(1942_DEP)
pyanvid.o: pyanvid.c $(COMHEAD) $(POOYAN_DEP)
pyansnd.o: pyansnd.c $(COMHEAD) $(POOYAN_DEP)
galagvid.o: galagvid.c $(COMHEAD) $(GALAG_DEP)
mrdovid.o: mrdovid.c $(COMHEAD) $(MRDO_DEP)
mrdosnd.o: mrdosnd.c $(COMHEAD) $(MRDO_DEP)
pengovid.o: pengovid.c $(COMHEAD) $(PENGO_DEP)
scobrvid.o: scobrvid.c $(COMHEAD) $(SCOBRA_DEP)
doctlvid.o: doctlvid.c $(COMHEAD) $(DOCASTLE_DEP)
doctlsnd.o: doctlsnd.c $(COMHEAD) $(DOCASTLE_DEP)
ldybvid.o: ldybvid.c $(COMHEAD) $(LADYBUG_DEP)
ldybsnd.o: ldybsnd.c $(COMHEAD) $(LADYBUG_DEP)
jrpacvid.o: jrpacvid.c $(COMHEAD) $(JRPACMAN_DEP)
1943vid.o: 1943vid.c $(COMHEAD) $(1943_DEP)
1943snd.o: 1943snd.c $(COMHEAD) $(1943_DEP)
gsmkevid.o: gsmkevid.c $(COMHEAD) $(GUNSMOKE_DEP)
gyrodvid.o: gyrodvid.c $(COMHEAD) $(GYRODINE_DEP)

#SOUND
namcosnd.o: namcosnd.c $(COMHEAD)
ay8910.o: ay8910.c ay8910.h
sn76496.o: sn76496.c sn76496.h
fm.o: fm.c fm.h
ym2203.o: ym2203.c ym2203.h fm.h ay8910.h

