blob: e45ac61de606bebe7fc2e2a6b5f3b56c887f8f50 (
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
TARGET=traxtor
GENERATED=font.h menubg.h tiles.h tiles_alt.h playbg.h ship.h return_mus.h board_mus.h gameover_mus.h
LOADER_ADDR=512
TMP_ADDR=3072
APP_ADDR=8072
LOADER_ADDR_HEX=$(shell printf "%x" $(LOADER_ADDR))
TMP_ADDR_HEX=$(shell printf "%x" $(TMP_ADDR))
APP_ADDR_HEX=$(shell printf "%x" $(APP_ADDR))
CC=sdcc
AS=sdasz80
AR=sdcclib
CFLAGS=-mz80 -Ilib
LDFLAGS=-Llib -L. --data-loc 0 --no-std-crt0 --fomit-frame-pointer
export PATH:=tools:$(PATH)
all:
make -C tools
make -C lib
make $(TARGET).dsk
make $(TARGET).cdt
@chksize 8072 main.map
$(TARGET).dsk: main.bin loader.bin loading.bin
cp loader_disk.bin $(TARGET)
idsk $@ -n -t 1 -i $(TARGET) -e $(LOADER_ADDR_HEX) -c $(LOADER_ADDR_HEX) > /dev/null
rm -f $(TARGET)
cp loading.bin main.bi0
idsk $@ -t 1 -i main.bi0 -c $(TMP_ADDR_HEX) -s > /dev/null
rm -f main.bi0
cp main.bin main.bi1
idsk $@ -t 1 -i main.bi1 -e $(shell awk ' /_main_init/ { print $$1 } ' main.map) -c $(APP_ADDR_HEX) -s > /dev/null
rm -f main.bi1
$(TARGET).cdt: main.bin loader.bin loading.bin
2cdt -n -X $(LOADER_ADDR) -L $(LOADER_ADDR) -r $(TARGET) loader.bin $@ > /dev/null
2cdt -m 2 loading.bin $@ > /dev/null
2cdt -m 2 $< $@ > /dev/null
loader.bin: loader.s turboload.s main.map loading.bin
echo "DISK = 1" > loader.opt
echo "APP_EP = 0x$(shell awk ' /_main_init/ { print $$1 } ' main.map)" >> loader.opt
echo "TMP_ADDR = 0x$(TMP_ADDR_HEX)" >> loader.opt
echo "SCRX_SIZE = $(shell stat -c '%s' loading.bin)" >> loader.opt
echo "APP_ADDR = 0x$(APP_ADDR_HEX)" >> loader.opt
echo "APP_SIZE = $(shell stat -c '%s' main.bin)" >> loader.opt
$(AS) -g -o $<
$(CC) $(CFLAGS) $(LDFLAGS) --code-loc $(LOADER_ADDR) -lucl loader.rel
hex2bin -p 00 loader.ihx
echo "DISK = 0" > loader.opt
echo "APP_EP = 0x$(shell awk ' /_main_init/ { print $$1 } ' main.map)" >> loader.opt
echo "TMP_ADDR = 0x$(TMP_ADDR_HEX)" >> loader.opt
echo "SCRX_SIZE = $(shell stat -c '%s' loading.bin)" >> loader.opt
echo "APP_ADDR = 0x$(APP_ADDR_HEX)" >> loader.opt
echo "APP_SIZE = $(shell stat -c '%s' main.bin)" >> loader.opt
$(AS) -g -o $<
$(CC) $(CFLAGS) $(LDFLAGS) --code-loc $(LOADER_ADDR) -lucl -o loader_disk.ihx loader.rel
hex2bin -p 00 loader_disk.ihx
loading.bin: loading.png
png2crtc loading.png loading.scr 7 1
dump-pal.py loading.png pal.bin
echo -n "SCRX" > loading.bin
cat pal.bin >> loading.bin
ucl < loading.scr >> loading.bin
main.bin: main.c crt0.s splib.lib sound.h sound.rel $(GENERATED)
rm -f main.map
$(AS) -g -o crt0.s
$(CC) $(CFLAGS) $(LDFLAGS) -lsplib -lucl -lcpcrslib -lcpcwyzlib --code-loc $(APP_ADDR) crt0.rel sound.rel $<
hex2bin -p 00 main.ihx
splib.lib: splib.c splib.h
$(CC) $(CFLAGS) $(LDFLAGS) -c $<
$(AR) -a $@ splib.rel
font.h: font.gif
img2f.py --effect font.gif font > font.h
menubg.h: menu.png
img2sprite.py --height 56 --width 160 -b menu.png > menubg.bin
ucl < menubg.bin > menu.bin
bin2h.py menu.bin menubg > menubg.h
tiles.h: tiles.png
img2sprite.py --height 9 --width 12 -i tiles tiles.png > tiles.h
tiles_alt.h: tiles_alt.png
img2sprite.py --height 9 --width 12 -i tiles_alt tiles_alt.png > tiles_alt.h
ship.h: ship.png
img2sprite.py --height 21 --width 12 -i ship ship.png > ship.h
playbg.h: play.png
png2crtc play.png play.scr 7 0
ucl < play.scr > play.bin
bin2h.py play.bin playbg > playbg.h
sound.rel: sound.c sound.h theplayer_mus.h intro_mus.h
$(CC) $(CFLAGS) $(LDFLAGS) -c $<
return_mus.h: music/return.mus
ucl < music/return.mus > return.bin
bin2h.py return.bin return_mus > return_mus.h
board_mus.h: music/board.mus
ucl < music/board.mus > board.bin
bin2h.py board.bin board_mus > board_mus.h
gameover_mus.h: music/gameover.mus
ucl < music/gameover.mus > gameover.bin
bin2h.py gameover.bin gameover_mus > gameover_mus.h
theplayer_mus.h: music/theplayer.mus
bin2h.py music/theplayer.mus theplayer_mus > theplayer_mus.h
intro_mus.h: music/intro.mus
bin2h.py music/intro.mus intro_mus > intro_mus.h
.PHONY: clean all cleanall
clean:
rm -f *.dsk *.bin *.cdt *.scr *.rel *.opt *.lk *.noi *.map *.lst *.sym *.asm *.ihx *.lib $(GENERATED) theplayer_mus.h intro_mus.h
cleanall:
make clean
make -C tools clean
make -C lib clean
|