ID = basic
UXN_ROMS ?= ~/roms
ASM = uxncli ${UXN_ROMS}/drifblim.rom
LIN = uxncli ${UXN_ROMS}/uxnlin.rom
EMU = uxn11
ROM = bin/${ID}.rom

all: ${ROM}

run: ${ROM}
	@ ${EMU} ${ROM} examples/labyrinth.bas
test: ${ROM}
	@ ${EMU} ${ROM} examples/test.bas
input: ${ROM}
	@ ${EMU} ${ROM} examples/input.bas
draw: ${ROM}
	@ ${EMU} ${ROM} examples/drawing.bas
clean:
	rm -f ${ROM} ${ROM}.sym
install: ${ROM}
	cp ${ROM} ${UXN_ROMS}
uninstall:
	rm -f ${UXN_ROMS}/${ID}.rom
archive:
	cp src/${ID}.tal ../oscean/etc/${ID}.tal.txt
lint:
	@ ${LIN} src/${ID}.tal
push: ${ROM} bin/bundle.zip
	@ ~/bin/butler push ${ROM} hundredrabbits/sunflower-basic:uxn
	@ ~/bin/butler push bin/bundle.zip hundredrabbits/sunflower-basic:uxn5

.PHONY: all clean lint run install uninstall archive

${ROM}: src/${ID}.tal
	@ mkdir -p bin
	@ ${ASM} src/${ID}.tal ${ROM}

bin/bundle.zip: ${ROM} bin/format-js.rom
	@ mkdir -p bin/html
	@ cp -r ../uxn5/* bin/html/
	@ cp ${ROM} boot_rom
	@ uxncli bin/format-js.rom boot_rom > bin/html/src/boot.js
	@ echo "const default_zoom = 2; const boot_ulz = 0; const keyctrl = 0;" >> bin/html/src/boot.js
	@ rm boot_rom
	@ cd bin/ && zip bundle html/* html/src/* html/src/devices/* html/media/* html/media/services/*

bin/format-js.rom: etc/format-js.tal
	@ mkdir -p bin
	@ ${ASM} etc/format-js.tal bin/format-js.rom

