-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
182 lines (174 loc) · 7.72 KB
/
Makefile
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
BEEBASM?=beebasm
PYTHON?=python
DISKM8?=diskm8
# A make command with no arguments will build the source disk variant with
# encrypted binaries, checksums enabled, the standard commander and crc32
# verification of the game binaries
#
# Optional arguments for the make command are:
#
# variant=<release> Build the specified variant:
#
# ib-disk (default)
# source-disk-build (the binaries we get from running a build)
# source-disk-code-files (the CODE* binaries already on the source disk)
# source-disk-elt-files (the ELT* binaries already on the source disk)
#
# commander=max Start with a maxed-out commander
#
# encrypt=no Disable encryption and checksum routines
#
# match=no Do not attempt to match the original game binaries
# (i.e. omit workspace noise)
#
# verify=no Disable crc32 verification of the game binaries
#
# So, for example:
#
# make variant=source-disk-build commander=max encrypt=no match=no verify=no
#
# will build an unencrypted source disk variant with a maxed-out commander,
# no workspace noise and no crc32 verification
#
# The following variables are written into elite-build-options.asm depending on
# the above arguments, so they can be passed to BeebAsm:
#
# _VERSION
# 9 = Apple II
#
# _VARIANT
# 1 = Ian Bell's game disk
# 2 = source disk build (the binaries from running a build of the source disk)
# 3 = source disk CODE files (the CODE* binaries already on the source disk)
# 4 = source disk ELT files (the ELT* binaries already on the source disk)
# 5 = 4am crack (default)
#
# _MAX_COMMANDER
# TRUE = Maxed-out commander
# FALSE = Standard commander
#
# _REMOVE_CHECKSUMS
# TRUE = Disable checksum routines
# FALSE = Enable checksum routines
#
# _MATCH_ORIGINAL_BINARIES
# TRUE = Match binaries to released version (i.e. fill workspaces with noise)
# FALSE = Zero-fill workspaces
#
# The encrypt and verify arguments are passed to the elite-checksum.py and
# crc32.py scripts, rather than BeebAsm
ifeq ($(commander), max)
max-commander=TRUE
else
max-commander=FALSE
endif
ifeq ($(encrypt), no)
unencrypt=-u
remove-checksums=TRUE
else
unencrypt=
remove-checksums=FALSE
endif
ifeq ($(match), no)
match-original-binaries=FALSE
else
match-original-binaries=TRUE
endif
ifeq ($(variant), ib-disk)
variant-number=1
folder=ib-disk
suffix=-ib-disk
else ifeq ($(variant), source-disk-build)
variant-number=2
folder=source-disk-build
suffix=-source-disk-build
else ifeq ($(variant), source-disk-code-files)
variant-number=3
folder=source-disk-code-files
suffix=-source-disk-code-files
else ifeq ($(variant), source-disk-elt-files)
variant-number=4
folder=source-disk-elt-files
suffix=-source-disk-elt-files
else
variant-number=5
folder=4am-crack
suffix=-4am-crack
endif
.PHONY:all
all: apple-build apple-disk
apple-build:
echo _VERSION=9 > 1-source-files/main-sources/elite-build-options.asm
echo _VARIANT=$(variant-number) >> 1-source-files/main-sources/elite-build-options.asm
echo _REMOVE_CHECKSUMS=$(remove-checksums) >> 1-source-files/main-sources/elite-build-options.asm
echo _MATCH_ORIGINAL_BINARIES=$(match-original-binaries) >> 1-source-files/main-sources/elite-build-options.asm
echo _MAX_COMMANDER=$(max-commander) >> 1-source-files/main-sources/elite-build-options.asm
$(BEEBASM) -i 1-source-files/main-sources/elite-data.asm -v > 3-assembled-output/compile.txt
$(BEEBASM) -i 1-source-files/main-sources/elite-source.asm -v >> 3-assembled-output/compile.txt
$(BEEBASM) -i 1-source-files/main-sources/elite-bcfs.asm -v >> 3-assembled-output/compile.txt
$(BEEBASM) -i 1-source-files/main-sources/elite-mover.asm -v >> 3-assembled-output/compile.txt
$(BEEBASM) -i 1-source-files/main-sources/elite-loader.asm -v >> 3-assembled-output/compile.txt
$(PYTHON) 2-build-files/elite-checksum.py $(unencrypt) -rel$(variant-number)
$(BEEBASM) -i 1-source-files/main-sources/elite-transfer.asm -v >> 3-assembled-output/compile.txt
$(BEEBASM) -i 1-source-files/main-sources/elite-readme.asm -v >> 3-assembled-output/compile.txt
ifneq ($(verify), no)
@$(PYTHON) 2-build-files/crc32.py 4-reference-binaries/$(folder) 3-assembled-output
endif
apple-disk:
ifeq ($(variant-number), 1)
ifeq ($(OS), Windows_NT)
del /Q /F 5-compiled-game-disks\*.bin
copy 1-source-files\other-files\$(folder)\blank.dsk 5-compiled-game-disks\elite-apple$(suffix).dsk
copy 1-source-files\images\$(folder)\A.SCREEN.bin 5-compiled-game-disks\elitepic#0x2000.bin
copy 3-assembled-output\DATA.bin 5-compiled-game-disks\bee#0x3b00.bin
copy 3-assembled-output\CODE1.bin 5-compiled-game-disks\four#0x4000.bin
copy 3-assembled-output\CODE2.bin 5-compiled-game-disks\nine#0x5000.bin
copy 3-assembled-output\MOVER.bin 5-compiled-game-disks\mover#0x0300.bin
else
rm -fr 5-compiled-game-disks/*.bin
cp 1-source-files/other-files/$(folder)/blank.dsk 5-compiled-game-disks/elite-apple$(suffix).dsk
cp 1-source-files/images/$(folder)/A.SCREEN.bin 5-compiled-game-disks/elitepic#0x2000.bin
cp 3-assembled-output/DATA.bin 5-compiled-game-disks/bee#0x3b00.bin
cp 3-assembled-output/CODE1.bin 5-compiled-game-disks/four#0x4000.bin
cp 3-assembled-output/CODE2.bin 5-compiled-game-disks/nine#0x5000.bin
cp 3-assembled-output/MOVER.bin 5-compiled-game-disks/mover#0x0300.bin
endif
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/elitepic#0x2000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/nine#0x5000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/bee#0x3b00.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/four#0x4000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/mover#0x0300.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 3-assembled-output/readme.txt
ifeq ($(OS), Windows_NT)
del /Q /F 5-compiled-game-disks\*.bin
else
rm -fr 5-compiled-game-disks/*.bin
endif
endif
ifeq ($(variant-number), 5)
ifeq ($(OS), Windows_NT)
del /Q /F 5-compiled-game-disks\*.bin
copy 1-source-files\other-files\$(folder)\blank.dsk 5-compiled-game-disks\elite-apple$(suffix).dsk
copy 1-source-files\images\$(folder)\A.SCREEN1.bin 5-compiled-game-disks\elitepic#0x2000.bin
copy 3-assembled-output\ELA.bin 5-compiled-game-disks\ela#0x0a00.bin
copy 3-assembled-output\ELB.bin 5-compiled-game-disks\elb1#0x4000.bin
copy 3-assembled-output\SEC3.bin 5-compiled-game-disks\sec3#0x2000.bin
else
rm -fr 5-compiled-game-disks/*.bin
cp 1-source-files/other-files/$(folder)/blank.dsk 5-compiled-game-disks/elite-apple$(suffix).dsk
cp 1-source-files/images/$(folder)/A.SCREEN1.bin 5-compiled-game-disks/scrn#0x2000.bin
cp 3-assembled-output/ELA.bin 5-compiled-game-disks/ela#0x0a00.bin
cp 3-assembled-output/ELB.bin 5-compiled-game-disks/elb1#0x4000.bin
cp 3-assembled-output/SEC3.bin 5-compiled-game-disks/sec3#0x2000.bin
endif
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/sec3#0x2000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/scrn#0x2000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/elb1#0x4000.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 5-compiled-game-disks/ela#0x0a00.bin
$(DISKM8) -with-disk 5-compiled-game-disks/elite-apple$(suffix).dsk -file-put 3-assembled-output/readme.txt
ifeq ($(OS), Windows_NT)
del /Q /F 5-compiled-game-disks\*.bin
else
rm -fr 5-compiled-game-disks/*.bin
endif
endif