-
Notifications
You must be signed in to change notification settings - Fork 1
/
readme.txt
323 lines (236 loc) · 10 KB
/
readme.txt
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
===============================================================================
##### ## ##
## ## ## ##
## ## ###### ## ## ##### ## ## #####
##### ## ## ##### ## ##### ## ##
## ## ## ## ## ## ## ######
## ## ## ## ## ## ## ## ##
## ###### ## ##### ## ## #####
a portable game which is somewhat similar to Tetris
===============================================================================
WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP
The bulk of this code was originally written almost 20 years ago, and since
then was mostly used to test my crude "conio" implementations on various
targets (mostly consoles). A lot changed since then, the current goal is to
clean this up and make CC65 the primary target.
You can find some other games with a similar target here:
https://github.com/StewBC/cc65-Chess
https://github.com/Fabrizio-Caruso/CROSS-CHASE
The conio improvemnt PR that has pushed me to put this on github is here:
https://github.com/cc65/cc65/pull/532
Everything here is very - and i mean VERY - messy, and you might have to wash
your eyes with gasoline after looking at it. Don't say i didn't warn you :)
To build, type "make cc65". Just typing "make" will show a list of targets you
can use (some of which will not work, i guess).
A bunch of external tools are expected in your path. Alternatively you can
override them by giving the respective variables on the commandline or your
environment (see Makefile.config). You can also make a copy of Makefile.config
named Makefile.config.local and do your changes there.
To build the CBM programs, you will need additional tools in your path:
- pucrunch
-> http://a1bert.kapsi.fi/Dev/pucrunch/
- c1541 (from VICE)
- petcat (from VICE)
-> https://sourceforge.net/projects/vice-emu/
To build the PC-Engine image you need
- dd
To build the Apple2 and Apple2enh image you need
- Java
- AppleCommander-ac-1.6.0.jar
-> https://github.com/AppleCommander/AppleCommander
To build the gamate image (which doesnt work yet) you will need
- gamate-fixcart (included in cc65)
Some things will probably also require a bash shell - this stuff must be found
and removed/replaced by generic makefile commands.
Everything below is copied together from the old and very outdated
documentation and still needs a major overhaul.
WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP WIP
===============================================================================
Portability:
no machine dependend parts, any target that has conio should work. (look at the
source and define screen dimensions for new target etc)
Dependencies:
- conio output (required)
- conio input (optional, required for keyboard input)
- joystick api (optional, required for joystick input)
(either keyboard or joystick is recommended, obviously :))
- file i/o (optional, required for saving hiscore)
-------------------------------------------------------------------------------
compiles works # of plr has color
cc65 standard targets:
c64 yes ok 4 yes
c128 yes ok 4 yes
c128 vdc yes ok 8 yes
c16 32k yes ok 4 yes
plus4 yes ok 4 yes
cbm510 yes ok 4 yes
cbm610 yes ok 8 no
pet yes ok 8 no
geos (c64) yes conio bugs 4 no
atari yes ok 4 no
apple2 yes ok 4 no
apple2enh yes ok 4 no
atmos yes ok 3 no
nes yes ok 3 no
pcengine yes conio bugs 6 yes
c64+soft80 yes ok 8 yes
vic20exp yes ok 2 yes
lunix no (library missing - FIXME)
bbc no (library missing - FIXME)
c16 no (program too large)
vic20 no (program too large)
gamate no (program too large)
custom/unsupported cc65 targets:
vic20exp+soft40 yes ok 4 no
osa65 no (library missing - FIXME)
todo:
atari2600
atari5200
creativision
cx16
lynx
osi
supervision
telestrat
-----------------------------------------------------
Z80 Targets
Spectrum yes buggy 3 yes
Gameboy yes buggy 2 no
ARM Targets
GBA yes ok 3 yes
GP32 yes ok 4 yes
PPC Targets
Gamecube yes ok 4 yes
===============================================================================
Status:
- more targets need a (well) working conio
- portable way to access directory needed
(for user-selectable joy driver)
- portable (microseconds-) timer api needed
(for better synchronization)
- exe-packer needed for apple2/atari and some cbm targets
--------------------------------------------------------------------------------
CBM targets (cc65):
-------------------
pet:
- fix keyboard repeat (available but does not work?)
- add waitvblank (possible?)
- configure CRTC to remove blank line between character rows
cbm510:
- add get_tv
- add kbrepeat
- cursor() doesnt seem to work
cbm610:
- add kbrepeat
- add waitvsync
- add joystick support
c64(all)/library
- implement opendir/readdir to get a portable way for supporting
user-selectable drivers
- add joy driver for ninjas snes-pad adapter
- add joy driver for keyboard?
c64+soft80/library
- add/fix cpeekc (cant handle chars >0x7f atm)
- add/fix cpeekcolor
c16/plus4:
- fix detection in cbmloader
c16+plus4/library:
- fix color translation
c16:
- does not work (file too large?)
- add kbrepeat
- add waitvsync
c128:
- rewrite/modify 4-player adapter drivers for use in c128 mode
- modify soft-80 to work in c128 mode
c128(vdc):
- remove workaround for old "case" bug
vic20:
vic20+soft40/library:
- add soft40 implementation to cc65 lib
- add "hard26" implementation to cc65 lib (maybe?)
- add/fix cpeekchar (cant handle chars >0x7f atm)
- reset videomode after exit
--------------------------------------------------------------------------------
apple2:
- find an emulator for deving on linux, add generation of approperiate
disc image to build process if necessary
- fix cpeekchar
[PORT COMPILES, BUT IS COMPLETELY UNTESTED !!!]
atari:
- rewrite the conio in a different mode so it can be used with 16 colors
- fix cpeekchar
nes:
- fix stack/heap placement (linker bug?)
- fix clock.s
pcengine:
- fix stack/heap placement (linker bug?)
- fix clock.s
geos:
- remove "EnterDeskTop()" ?
general:
- cpeekattrib for all targets, rewrite meltdown fx to use it (for testing)
- invent some api for scrolling sections of the console screen, rewrite
the meltdown-fx to use it
- add blankscreen() for all targets and hide updates when switching screens
- rewrite menue output to use one common "printcentered" routine
to save some memory
- keep highscorelist on disc/saveram
- handle the (unlikely :o)) case that the game "wraps around"
due to excessive long (and skillful) playing :)
- also handle wrapping of score
- count free blocks to score at end of stage
- some kind of effect at end of stage
- "modern" mode with all possible and not just the 4 classic blocks
- title picture (?...maybe via tgi?!)
- music (?...goattracker player would come in mind)
- sound effects (invent something portable)
bugs:
- when dropping a block only ONE line is ever cleared at once, when two lines
should have been cleared, this will happen when the next block is dropped
- the available joystick drives should be read from disk instead of using the
hardcoded c64 specific list
- on some targets (eg apple2) using keyboard and joystick at the same time is
not practical
- on some targets (eg apple2) an unconnected joystick does not report "neutral"
position, because of that it should be possible to use less than the avail.
able number of joysticks
More Ports?
- (8bit targets) LUnix, Atari Lynx, Atari VCS2600 (hardly :o)), BBC-Micro...
- (16bit targets ???) SuperCPU, SNES, C=1 (?) ...
- (32bit targets ?!?!) Dreamcast, Playstation, Playstation2 (?), Gamecube (?) ...
===============================================================================
very old stuff:
v 0.0.2 can be found here:
http://hitmen.c02.at/files/cc65/65tris_0.0.2_90percent.tar.gz
very old "portlib" things, cc65 "compatible" conio for other targets, and some
things that have since then been merged into cc65 can be found here:
http://hitmen.c02.at/files/portlib/cc65-portlib.zip
very old PC version of the portlib stuff is here:
http://hitmen.c02.at/files/portlib/portlib_pc.zip
Makefile.attic:
There are also a lot of references to other targets, my old development setups
on various machines, my own libraries (which are not included here) and god
knows what. None of this will work right now, don't bother :)
===============================================================================
version log:
0.0.3 - Atmos Port
- GBA Port
- GP32 Port
0.0.2: - "make all" compiles all working targets in one go
- some stuff prepared for ppl who might want to port the code
to a yet not working target
- UZ fixed big-struct related compiler bug so now compilation -Osir works
- some little speed tweaks by UZ
- support for existing joystick api(s)
- "drop" button works :)
- vic20 conio fixes
- vic20 hacked screen (26*25 characters)
- c64 80-columns screen
- vic20 40-columns screen
- c64 joydriver for protovision 4 player adapter
- c64 joydriver for dxs/hit 4 player adapter
- added highscore list
- NES port, all conio etc added that is needed to run 65tetris
- PCEngine Port, also all conio stuff added that was needed
0.0.1: - inital release