blob: eec64ea828d09d8a2b270639d56759cb8151ed6e (
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
|
TARGET=kitcurs
LOADER_ADDR=512
TMP_ADDR=3072
# see splib.h: BUF_ADDR + (TW * TH / 2) * (sprite th * 2 + 2) * max sprites
# 0x0100 + (8 * 8 / 2) * (3 * 2 + 2) * 10
APP_ADDR=2816
PAK_SLOP=32
LOADER_ADDR_HEX=$(shell printf "%x" $(LOADER_ADDR))
TMP_ADDR_HEX=$(shell printf "%x" $(TMP_ADDR))
CC=sdcc
AS=sdasz80
AR=sdcclib
CFLAGS=-mz80 --Werror -I../lib -I../generated --fsigned-char --std-sdcc99 --opt-code-speed
LDFLAGS=-L../lib -L. --data-loc 0 --no-std-crt0 --fomit-frame-pointer
OUTPUT = ../build
OBJS = $(patsubst %.c,$(OUTPUT)/%.rel,$(wildcard *.c)) $(OUTPUT)/int.rel $(OUTPUT)/sound.rel
LIBS = ../lib/cpcrslib/*.lib ../lib/plw.lib ../lib/aplib.lib
all: CFLAGS := $(CFLAGS) #-DDEBUG -DFENCE_DEBUG -DET_DEBUG
all: $(OUTPUT)/$(TARGET).dsk $(OUTPUT)/$(TARGET).cdt
chksize $(APP_ADDR) $(OUTPUT)/main.map
release: CFLAGS := $(CFLAGS) --max-allocs-per-node 2000000
release: $(OUTPUT)/$(TARGET).dsk $(OUTPUT)/$(TARGET).cdt
test -d release || mkdir release
cp $(OUTPUT)/$(TARGET).dsk $(OUTPUT)/$(TARGET).cdt release
chksize $(APP_ADDR) $(OUTPUT)/main.map
cpce: all
cpce $(OUTPUT)/$(TARGET).dsk
cpcec: all
cpcec $(OUTPUT)/$(TARGET).dsk
winape: all
winape $(OUTPUT)/$(TARGET).dsk
clk: all
clk $(OUTPUT)/$(TARGET).dsk
rvm: all
rvm -b=cpc6128 -w -p -ns -i $(shell realpath $(OUTPUT)/$(TARGET).dsk) -c='run"$(TARGET)\n'
$(OUTPUT)/%.rel: %.c
$(CC) $(CFLAGS) $(LDFLAGS) -c $< -o $@
$(OUTPUT)/%.rel: %.z80
$(AS) -g -o $@ $<
$(OUTPUT)/sound.rel: sound.z80 effects.z80 songs.z80
$(OUTPUT)/main.ap: crt0.s $(wildcard *.h) $(LIBS) $(OBJS) ../lib/plw_player.rel
rm -f $(OUTPUT)/main.map
$(AS) -g -o $(OUTPUT)/crt0.rel crt0.s
$(CC) $(CFLAGS) $(LDFLAGS) -laplib -lcpcrslib -lplw --code-loc $(APP_ADDR) $(OUTPUT)/crt0.rel ../lib/plw_player.rel $(OBJS) -o $(OUTPUT)/main.ihx
hex2bin -p 00 $(OUTPUT)/main.ihx
apultra -w 8192 -v $(OUTPUT)/main.bin $@
$(OUTPUT)/loader.bin: loader.s turboload.s $(OUTPUT)/loading.bin $(OUTPUT)/main.ap
echo "DISK = 1" > $(OUTPUT)/loader.opt
echo "APP_EP = 0x$(shell awk ' /_main_init/ { print $$1 } ' $(OUTPUT)/main.map)" >> $(OUTPUT)/loader.opt
echo "TMP_ADDR = $(TMP_ADDR)" >> $(OUTPUT)/loader.opt
echo "SCRX_SIZE = $(shell stat -c '%s' $(OUTPUT)/loading.bin)" >> $(OUTPUT)/loader.opt
echo "APP_ADDR = $(APP_ADDR)" >> $(OUTPUT)/loader.opt
echo "APP_SIZE = $(shell stat -c '%s' $(OUTPUT)/main.bin)" >> $(OUTPUT)/loader.opt
echo "APP_SIZE_PAK = $(shell stat -c '%s' $(OUTPUT)/main.ap)" >> $(OUTPUT)/loader.opt
echo "LOADER_ADDR = $(LOADER_ADDR)" >> $(OUTPUT)/loader.opt
echo "PAK_SLOP = $(PAK_SLOP)" >> $(OUTPUT)/loader.opt
$(AS) -g -o $(OUTPUT)/loader.rel $<
$(CC) $(CFLAGS) $(LDFLAGS) --code-loc $(LOADER_ADDR) -laplib -o $(OUTPUT)/loader.ihx $(OUTPUT)/loader.rel
hex2bin -p 00 $(OUTPUT)/loader.ihx
echo "DISK = 0" >> $(OUTPUT)/loader.opt
$(AS) -g -o $(OUTPUT)/loader.rel $<
$(CC) $(CFLAGS) $(LDFLAGS) --code-loc $(LOADER_ADDR) -laplib -o $(OUTPUT)/loader_disk.ihx $(OUTPUT)/loader.rel
hex2bin -p 00 $(OUTPUT)/loader_disk.ihx
$(OUTPUT)/$(TARGET).dsk: $(OUTPUT)/loader.bin
cp $(OUTPUT)/loader_disk.bin $(OUTPUT)/$(TARGET)
idsk $@ -n -t 1 -i $(OUTPUT)/$(TARGET) -e $(LOADER_ADDR_HEX) -c $(LOADER_ADDR_HEX) > /dev/null
rm -f $(OUTPUT)/$(TARGET)
cp $(OUTPUT)/loading.bin $(OUTPUT)/main.bi0
idsk $@ -t 1 -i $(OUTPUT)/main.bi0 -c $(TMP_ADDR_HEX) -s > /dev/null
rm -f $(OUTPUT)/main.bi0
cp $(OUTPUT)/main.ap $(OUTPUT)/main.bi1
idsk $@ -t 1 -i $(OUTPUT)/main.bi1 -c $(shell printf "%x" $(shell expr $(LOADER_ADDR) + 1024)) -s > /dev/null
rm -f $(OUTPUT)/main.bi1
$(OUTPUT)/$(TARGET).cdt: $(OUTPUT)/loader.bin
2cdt -s 0 -n -X $(LOADER_ADDR) -L $(LOADER_ADDR) -r $(TARGET) $< $@ > /dev/null
2cdt -m 2 $(OUTPUT)/loading.bin $@ > /dev/null
2cdt -m 2 $(OUTPUT)/main.ap $@ > /dev/null
.PHONY: clean all cleanall release
clean:
rm -f $(OUTPUT)/*
cleanall:
make clean
make -C ../tools clean
make -C ../lib clean
include Makefile.deps
|