default: lu.map.txt run

include skins/deps.mak

UTIL_H := util.h gbfs.h pin8gba.h
MINE_H := mine.h $(UTIL_H)
OBJS := menu.o mine.o util.o asm.iwram.o isr.iwram.o gsmcode.iwram.o gsmplay.o lu.o libgbfs.o 
MENU_DATA := menu/title.lz menu/Rloading.lz menu/Lloading.lz menu/pause.chr
RIGHT_DATA := R/Rhud.chr R/Rblocks.chr

MBVERSION := lu.mb
ROM := lu.gba
SONGS := gsmsongs.gbfs

.PHONY: default run all

run: $(ROM)
	e:\gbadev\vboy\visualboyadvance $<

all: $(ROM) lu.map.txt

%.chr: %.bmp
	tools/bmp2tiles -b gba $< $@

%.Lskin: %.Lspec
	tools/mkskin $< $@

L/Lblocks.chr: L/Lblocks.bmp
	tools/bmp2tiles -b gba -W 12 -H 12 $< $@

menu/pause.chr: menu/pause.bmp
	tools/bmp2tiles -b gb -W 32 -H 16 $< $@

R/Rhud.chr: R/Rhud.bmp
	tools/bmp2tiles -b gb $< $@

L/Ldigits.chr: L/Ldigits.bmp
	tools/bmp2tiles -b gb $< $@

# a todbg is a 16-entry palette followed by a 32x30 tile 16 color chr
%.todbg: %.bmp
	tools/bmp2bg $<

%.lz: %.todbg
	tools/lzgb $< $@

data.gbfs: $(RIGHT_DATA) $(MENU_DATA)
	tools/gbfs $@ $^

Lskins.gbfs: $(LEFT_SKINS)
	tools/gbfs $@ $^

%.o: %.c $(MINE_H)
	arm-elf-gcc -Wall -O3 -mthumb -mthumb-interwork -c $< -o $@

asm.iwram.o: asm.s
	arm-elf-gcc -Wall -mthumb-interwork -c $< -o $@

%.iwram.o: %.c
	arm-elf-gcc -Wall -O3 -marm -mthumb-interwork -c $< -o $@

libgbfs.o: libgbfs.c gbfs.h
	arm-elf-gcc -Wall -O3 -mthumb -mthumb-interwork -c $< -o $@

lu.elf: $(OBJS)
	arm-elf-gcc -Wall -mthumb -mthumb-interwork -specs=gba_mb.specs $^ -o $@

%.bin: %.elf
	arm-elf-objcopy -O binary $< $@
	tools/padbin 256 $@
	gbafix "-tluminesweepr" -mP8 $@

lu_base.bin: lu.bin data.gbfs
	tools/catbin $^ $@

$(MBVERSION): lu_base.bin Lskins.gbfs
	tools/catbin $^ $@

$(ROM): $(MBVERSION) $(SONGS)
	tools/catbin $^ $@

%.map.txt: %.elf
	nm -n $< > $@
