test sprite scaling
[gbajam21] / Makefile
1 src = $(wildcard src/*.c)
2 ssrc = $(wildcard src/*.s) data/lut.s
3 obj = $(src:.c=.o) $(ssrc:.s=.o)
4 dep = $(src:.c=.d)
5 name = gbajam21
6 elf = $(name).elf
7 bin = $(name).gba
8
9 data = data/tuncross.sraw data/tuncross.spal data/tuncross.shade \
10            data/spr_game.raw data/spr_game.pal \
11            data/tun.map
12
13 audata = data/audio/popcorn.mod
14
15 libs = libs/maxmod/libmm.a
16
17 TCPREFIX = arm-none-eabi-
18
19 CPP = $(TCPREFIX)cpp
20 CC = $(TCPREFIX)gcc
21 AS = $(TCPREFIX)as
22 OBJCOPY = $(TCPREFIX)objcopy
23 OBJDUMP = $(TCPREFIX)objdump
24
25 opt = -O3 -fomit-frame-pointer -mcpu=arm7tdmi -mtune=arm7tdmi -mthumb -mthumb-interwork
26 dbg = -g
27 inc = -I. -Ilibs/maxmod
28
29 CFLAGS = $(opt) $(dbg) -pedantic -Wall -MMD $(def) $(inc)
30 ASFLAGS = -mthumb-interwork
31 LDFLAGS = -mthumb -mthumb-interwork $(libs)
32
33 -include cfg.mk
34
35 .PHONY: all
36 all: $(bin) $(bin_mb)
37
38 $(bin): $(elf)
39         $(OBJCOPY) -O binary $(elf) $(bin)
40         gbafix -r0 $(bin)
41
42 $(elf): data/snd.h $(obj) $(libs)
43         $(CC) -o $(elf) $(obj) -specs=gba.specs -Wl,-Map,link.map $(LDFLAGS)
44
45 -include $(dep)
46
47 src/data.o: src/data.s $(data)
48
49 tools/pngdump/pngdump:
50         $(MAKE) -C tools/pngdump
51
52 tools/lutgen: tools/lutgen.c
53         cc -o $@ $< -lm
54
55 tools/tungen: tools/tungen.c
56         cc -o $@ -O3 -fopenmp $< -lm -lgomp -lpthread
57
58 tools/mmutil/mmutil:
59         $(MAKE) -C tools/mmutil
60
61 #data/sprites.raw: data/sprites1.png data/sprites2.png data/sprites3.png data/sprites4.png data/sprites5.png data/sprites6.png
62 #       tools/pngdump/pngdump -o $@ -n $^
63
64 %.sraw: %.png tools/pngdump/pngdump
65         tools/pngdump/pngdump -o $@ -oc $(subst .sraw,.spal,$@) -os $(subst .sraw,.shade,$@) -s 8 $<
66
67 %.raw: %.png tools/pngdump/pngdump
68         tools/pngdump/pngdump -o $@ -n $<
69
70 %.pal: %.png tools/pngdump/pngdump
71         tools/pngdump/pngdump -o $@ -c $<
72
73 data/lut.s: tools/lutgen
74         tools/lutgen >$@
75
76 data/tun.map: tools/tungen
77         tools/tungen -s 240x160 -y -c 400 -n 32 >$@
78
79 data/snd.bin: $(audata) tools/mmutil/mmutil
80         tools/mmutil/mmutil -o$@ -hdata/snd.h $(audata)
81
82 data/snd.h: data/snd.bin
83
84 .PHONY: clean
85 clean:
86         rm -f $(obj) $(bin) $(bin_mb) $(elf) $(elf_mb)
87
88 .PHONY: cleandep
89 cleandep:
90         rm -f $(dep)
91
92 .PHONY: cleanlibs
93 cleanlibs:
94         $(MAKE) -C libs/maxmod clean
95
96 .PHONY: install
97 install: $(bin)
98         if2a -n -f -W $<
99
100 .PHONY: run
101 run: $(bin_mb)
102         if2a -m $<
103
104 .PHONY: simrun
105 simrun: $(bin)
106         mgba -2 $(bin)
107
108 .PHONY: debug
109 debug: $(elf)
110         mgba -2 -g $(bin) &
111         $(TCPREFIX)gdb $<
112
113 .PHONY: disasm
114 disasm: $(elf)
115         $(OBJDUMP) -d $< >$@
116
117 .PHONY: libs
118 libs: $(libs)
119
120 libs/maxmod/libmm.a:
121         $(MAKE) -C libs/maxmod