summaryrefslogtreecommitdiff
path: root/Makefile
blob: 81977e7d9d9fbfbaac6959548e7105991141c09c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
name := picross
baserom := DMGAKVJ0.1

dir_build := build

RGBASM := rgbasm
RGBGFX := rgbgfx
RGBLINK := rgblink
RGBFIX := rgbfix

RGBASMFLAGS := -p 0xff -L -h -E
RGBLINKFLAGS := -p 0xff -d
RGBFIXFLAGS := -p 0xff -c -m 0x1b -r 0x03 -k "01" -i "AKVJ" -t "POKEPICROSS"

rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2))

objects := $(patsubst %.asm, $(dir_build)/%.o, \
            $(call rwildcard, source data, *.asm))
objects += $(dir_build)/shim.o

gfx := $(patsubst %.png, $(dir_build)/%.bin, \
        $(call rwildcard, gfx, *.png))

.PRECIOUS: $(gfx)
.SECONDEXPANSION:

.PHONY: all
all: $(name).gbc
	cmp $(name).gbc $(baserom)

.PHONY: clean
clean:
	rm -rf $(name).gbc $(name).sym $(name).map $(dir_build)

$(name).gbc: layout.link $(objects) | $(baserom)
	$(RGBLINK) $(RGBLINKFLAGS) -O $(baserom) -l $< -n $(@:.gbc=.sym) -m $(@:.gbc=.map) -o $@ $(filter-out $<, $^)
	$(RGBFIX) $(RGBFIXFLAGS) -v $@

$(dir_build)/shim.asm: shim.sym | $$(dir $$@)
	tools/makeshim.py $< > $@

$(dir_build)/%.o: $(dir_build)/%.asm | $(gfx) $$(dir $$@)
	$(RGBASM) $(RGBASMFLAGS) -i $(dir_build)/ -i include/ -M $(@:.o=.d) -o $@ $<
$(dir_build)/%.o: %.asm | $(gfx) $$(dir $$@)
	$(RGBASM) $(RGBASMFLAGS) -i $(dir_build)/ -i include/ -M $(@:.o=.d) -o $@ $<

RGBGFXFLAGS :=
$(dir_build)/%.bin: %.png | $$(dir $$@)
	$(RGBGFX) $(RGBGFXFLAGS) -o $@ $<

$(dir_build)/gfx/pikachu_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/bulbasaur_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/charmander_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/squirtle_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/clefairy_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/jigglypuff_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/misty_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/mew_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/mew_silhouette_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/psyduck_walk.bin: RGBGFXFLAGS = -h
$(dir_build)/gfx/bill_walk.bin: RGBGFXFLAGS = -h

.PRECIOUS: %/
%/:
	mkdir -p $@

-include $(patsubst %.o, %.d, $(objects))