OBJ=video.o main.o util.o unpack.o music.o wipe.o ram.o \
	labyrinth.o rle.o cube.o tile.o twobit.o balls.o plasma.o quilt.o greets.o \
	rotozoom.o vu.o thinsine.o grid.o column.o \
	generated-aux.o generated.o

PICS=gfx_lft.pic gfx_black.pic gfx_phasor.pic gfx_skyline.pic gfx_bird.pic gfx_greets.pic gfx_city.pic gfx_end1.pic gfx_end2.pic

all:			flash.hex

pack:			pack.c tiledef.h
			gcc -std=c99 -Wall -o $@ $< -lm

generated.o:		generated.S tables.S
			avr-gcc -c -Wall -mmcu=avr4 -o $@ $<

%.o:			%.S delays.i demo.i generated.i
			avr-gcc -c -Wall -mmcu=avr4 -o $@ $<

flash.o:		${OBJ}
			avr-gcc -Xlinker -Tbss -Xlinker 0x800104 -Xlinker -M -nostdlib -Wall -mmcu=avr4 -o $@ ${OBJ} >mapfile
			avr-size -t ${OBJ}

generated.S:		pack ${PICS} Makefile demo.song story
			./pack ${PICS} >$@

generated.i:		generated.S
			touch $@

generated-aux.S:	generated.S
			touch $@

flash.hex:		flash.o
			avr-ld --oformat ihex -o $@ $^

clean:
			rm -f flash.hex *.o generated.* generated-aux.* pack mapfile eeprom.raw
