#====================================================================
#
# Makefile	General work files
#
#====================================================================
#
#====================================================================
#	Paths
#====================================================================
#
DRIVE  = e:
#
HOME   = \tg
#
OBJ    = $(HOME)\object
#
CRY    = $(HOME)\cry
#
RLD    = $(HOME)\rle
#
INC    = $(DRIVE)\incfiles
#
SAM    = $(HOME)\samples
#
SCR    = $(HOME)\scores
#
#====================================================================
#	Macro & Assembler flags
#====================================================================
#
MAC = 	mac -fb -g -u -rl -i$(INC) -o $(DRIVE)$@
#
MACS = 	mac -fb -g -u -rl -i$(INC) -o $(DRIVE)$@
#
MACG = 	mac -fb -u -rp -i$(CRY) -o $(DRIVE)$@
#
MACR = 	mac -fb -g -u -rl -i$(RLD) -o $(DRIVE)$@
#
STADDR = 10000
#
ALNFLAGS = -g -e -s -rl -a 802000 10000 4000 
#
INCFILES = $(INC)\blit.inc $(INC)\jaguar.inc memdefs.inc 
#
MJINC = $(INC)\jaguar.inc memdefs.inc
GPUINC = $(MJINC) $(INC)\blit.inc $(INC)\ccdefs.inc
#
#====================================================================
#	Groups of 3d files for make
#====================================================================
UTIL = $(OBJ)\system.o $(OBJ)\math.o $(OBJ)\graphic.o $(OBJ)\marker.o $(OBJ)\marker2.o \
	$(OBJ)\vardefs.o $(OBJ)\threed.o $(OBJ)\rll.o $(OBJ)\last.o $(OBJ)\limz.o

GAME = $(OBJ)\car.o $(OBJ)\new.o $(OBJ)\vehicle.o main.o $(OBJ)\menu.o \
	$(OBJ)\pclip.o  $(OBJ)\bitmap.o $(OBJ)\romdata.o

SOUND = $(OBJ)\rmusic.o $(OBJ)\fulsyn.oj $(OBJ)\scores.o

CARS = cars\vehic.mon

SHAPES = d3d\3d.mon lake\build.mon sea\sea.mon build\build.mon italy\build.mon circuit1\circuit1.mon bridges\bridge.mon people\people.mon neweos\neweos.mon
	
TRACK = track\track.mon barr\barrier.mon hills\hill.mon mini\mini.mon carpet\carpet.mon tunnel\tunnel.mon

TITLE = title\title.mon

RLE = $(RLD)\title1.rle $(RLD)\tree.rle $(RLD)\spark5.rle $(RLD)\pause4.rle \
	$(RLD)\map0.rle $(RLD)\map1.rle $(RLD)\map2.rle $(RLD)\map3.rle $(RLD)\map4.rle \
	$(RLD)\map5.rle $(RLD)\map6.rle $(RLD)\map7.rle $(RLD)\map8.rle $(RLD)\map9.rle \
	$(RLD)\cftop2.rle $(RLD)\cfside2.rle $(RLD)\reb1d.rle $(RLD)\configs.rle \
	$(RLD)\hall.rle $(RLD)\tourn.rle $(RLD)\top.rle $(RLD)\race.rle $(RLD)\smoke3.rle $(RLD)\grass3.rle

RLP = $(RLD)\gfx4.rlp $(RLD)\gfx5-6.pal $(RLD)\sky2.rlp $(RLD)\sky2new.pal $(RLD)\sky2rain.pal $(RLD)\sky2fog.pal \
	$(RLD)\sky2dark.pal $(RLD)\newus.rlp $(RLD)\newgb.rlp $(RLD)\conset4.rlp \
	$(RLD)\credata.rlp $(RLD)\credreb.rlp $(RLD)\credall.pal $(RLD)\sun4.rlp $(RLD)\sun4.pal \
	$(RLD)\fontaz!.rlp $(RLD)\fontaz00.pal 

FDE = $(RLD)\ca01.fde $(RLD)\ca02.fde $(RLD)\ca03.fde $(RLD)\ca04.fde $(RLD)\ca05.fde $(RLD)\ca06.fde \
	$(RLD)\ca07.fde $(RLD)\ca08.fde $(RLD)\ca09.fde $(RLD)\ca10.fde $(RLD)\ca11.fde $(RLD)\ca12.fde \
	$(RLD)\ca13.fde $(RLD)\ca14.fde $(RLD)\ca15.fde 

BMP = $(CRY)\font.cry $(CRY)\x_c_spee.cry $(CRY)\postxt.cry $(CRY)\x_c_mph.cry $(CRY)\x_c_gear.cry \
	$(CRY)\rain3.j1 $(CRY)\car64.cry $(CRY)\slash.cry \
	$(CRY)\sb1.cry $(CRY)\sb2.cry $(CRY)\sb3.cry $(CRY)\sb4.cry  $(CRY)\sb5.cry  $(CRY)\sb6.cry \
	$(CRY)\sb7.cry $(CRY)\sb8.cry $(CRY)\sb9.cry $(CRY)\sb10.cry $(CRY)\sb11.cry $(CRY)\sb12.cry 

DATA = $(OBJ)\cry.o $(OBJ)\su3d.o $(OBJ)\tracks.o $(OBJ)\mini.o 
#====================================================================
#	Default Rules
#====================================================================
.SUFFIXES:	.o .s

.s.o:
	mac -fb -u -i$(INC) -o $@ $*

.SUFFIXES:	.o .gas

.gas.o:
	mac -fb -g -u -rp -i$(INC) $*.gas

#.SUFFIXES:	.o .das
#
#.das.o:
#	gasm -o -CDSP -R2 $*.das
#	ltxconv -l $*
#
#.SUFFIXES:	.db .abs
#.abs.db:
#	filefix3 $*.abs
#
#	
#
#====================================================================
#	EXECUTABLES
#====================================================================
#
car2.abs: big.rsp makefile \
	$(GAME) $(DATA) $(UTIL) $(CARS) $(SHAPES) $(TRACK) $(BMP) $(SOUND) $(TITLE)
	aln $(ALNFLAGS) -o car2.abs -c big.rsp


# note that there is no bss segment, and that the data segment is being loaded into ram, purely because it can then be relocated by the next bit

show.abs: makefile
	aln -s -a 802000 10000 4000 -o show.abs -c big.rsp

rom.abs: $(OBJ)\rll.o car2.abs $(RLE) rom.rsp makefile
	aln -l -a 802000 802200 x -o rom.abs -c rom.rsp
	filefix3 rom.abs

rle.abs: rle.o
	aln -g -e -l -a 60000 x x rle.o

test.abs: test.o
	aln -g -e -s -a 60000 xb 4000 test.o

b24.abs: b24.o 
	aln -g -e -l -a 60000 x 4000 b24.o 

b16.abs: b16.o 
	aln -g -e -l -a 50000 x 4000 b16.o 

edit.abs: edit.o
	aln -g -e -l -a 60000 x 4000 edit.o

#
#====================================================================
#	Object Dependencies
#====================================================================
#

$(CARS): cars\f1car3.o
	make -f cars\makefile

$(OBJ)\car.o: car.s hexcon.s $(INCFILES) $(INC)\joypad.inc $(INC)\redsound.inc debug.s stream.inc $(INC)\colours.inc
	$(MAC) car.s

$(OBJ)\new.o: new.s animate.s $(INCFILES) 
	$(MAC) new.s

$(OBJ)\rll.o: rll.s $(RLE) $(RLP) $(FDE) cry\cffont.cry cry\copyrt.cry
	$(MACR) rll.s

$(OBJ)\vehicle.o: ai.s ai.inc vehicle.s control.s drone.s crash.s mirror.s joypad.s dennis.s endgame.s \
	$(INCFILES) $(INC)\joypad.inc $(INC)\redsound.inc stream.inc fontman.s
	$(MAC) vehicle.s 

$(OBJ)\graphic.o: graphic.s crycols.s skyfill.s scrnshot.s strip.s colfil.s cycle.s maprot.s\
	rld.s rldtest.s rlepal.s \
	$(INCFILES) $(INC)\msg.inc
	$(MAC) graphic.s

$(OBJ)\system.o: system.s vidinit.s intinit.s objtool.s blitool.s eeprim.s saver.s ntsc.s \
	reloc.s crctest.s start.s demo.s $(INCFILES) $(INC)\joypad.inc grsize.inc
	$(MAC) system.s

$(OBJ)\math.o: math.s trig.s rand.s check.s normgen.s memdefs.inc \
	$(INC)\msg.inc $(INC)\sine16.s $(INC)\atantab.s $(INC)\fsine2.s horizon.s
	$(MAC) math.s

$(OBJ)\viewer.o: viewer.s $(INC)\joypad.inc memdefs.inc
	$(MAC) viewer.s

$(OBJ)\vardefs.o: vardefs.s den_vars.s
	$(MAC) vardefs.s

$(OBJ)\su3d.o: su3d.s path0.s memdefs.inc
	$(MAC) su3d.s

$(OBJ)\select.o: select.s memdefs.inc $(INC)\joypad.inc
	$(MAC) select.s

$(OBJ)\menu.o: menu.s grsize.inc $(INC)\menumacs.inc memdefs.inc $(INC)\joypad.inc
	$(MAC) menu.s

$(OBJ)\tracks.o: tracks.s memdefs.inc
	$(MAC) tracks.s

$(OBJ)\mini.o: mini.s memdefs.inc
	$(MAC) mini.s

$(OBJ)\pclip.o: pclip.s memdefs.inc
	$(MAC) pclip.s

$(OBJ)\cry.o: cry.s $(BMP) blob.s
	$(MACG) cry.s

$(OBJ)\last.o: last.s
	$(MAC) last.s

$(OBJ)\threed.o: threed.s tgen.s tdef.s exdef.s tgencom.inc memdefs.inc $(INC)\msg.inc \
	trk00.s trk01.s trk02.s trk03.s trk04.s trk05.s trk06.s trk07.s trk08.s trk09.s trk10.s stream.inc
	$(MAC) threed.s

$(OBJ)\limz.o: limz.s 
	$(MAC) limz.s

$(OBJ)\bitmap.o: bitmap.s $(INC)\macros3d.inc $(INC)\blit.inc
	$(MAC) bitmap.s

$(OBJ)\romdata.o: romdata.s objdefs.s memdefs.inc
	$(MAC) romdata.s

$(OBJ)\rmusic.o: rmusic.s $(INC)\redsound.inc $(INC)\jaguar.inc fulsyn.def \
	$(SAM)\softcras.8b $(SAM)\indyengi.8b $(SAM)\brakeski.8b \
	$(SAM)\snapgit.8b $(SAM)\orchstab.8b $(SAM)\kick.8b $(SAM)\drum.8b \
	$(SAM)\hat.8b $(SAM)\hmguit.8b $(SAM)\metalcho.8b $(SAM)\ledbass.8b \
	$(SAM)\sandbass.8b $(SAM)\sanddrum.8b $(SAM)\flute.8b $(SAM)\flute2.8b \
	$(SAM)\hihat7.8b $(SAM)\snare2.8b $(SAM)\blip2.8b $(SAM)\voice.8b \
	$(SAM)\hicongo.8b $(SAM)\holedrum.8b $(SAM)\holebeep.8b $(SAM)\boink.8b \
	$(SAM)\harp.8b $(SAM)\strings1.8b $(SAM)\beepflute.8b memdefs.inc
	$(MACS) rmusic.s

$(OBJ)\scores.o: scores.s $(SCR)\song0.bin $(SCR)\ingreen.bin $(SCR)\inarctic.bin \
	$(SCR)\incanyon.bin $(SCR)\indesert.bin $(SCR)\inriver.bin $(SCR)\indeep.bin \
	$(SCR)\ingorge.bin $(SCR)\incoastal.bin $(SCR)\inisland.bin $(SCR)\tcanyon.bin \
	$(SCR)\tgorge.bin $(SCR)\tisland.bin memdefs.inc
	$(MAC) scores.s

main.o: main.gas matrix.gas trans.gas sort.gas pdraw.gas ldraw.gas bdraw.gas transub.gas polytest.gas vmatnew2.gas \
	gpuinit.gas zclip.gas collide.gas outer.gas anim.gas decode.gas fastrot.gas delzjag.gas \
	regdefs.inc $(GPUINC) 

$(OBJ)\marker.o: marker.s
	$(MAC) marker

$(OBJ)\marker2.o: marker2.s
	$(MAC) marker2

b24.o: b24.s objtool.s vardefs.s vidinit.s intinit.s $(INCFILES)

#====================================================================
#		EOF
#====================================================================

