¿This project is like the
Cross-Chase of Fabrizio?
CROSS CHASECross Lib and Cross Chaseby Fabrizio Caruso
THE GOALThis is a personal project whose goal is the creation of:
- the universal 8-bit abstraction layer "Cross Lib" for coding universal 8-bit games
- the "universal" 8-bit game "Cross Chase" that has to be a fun and that should run on (nearly) ALL 8 bit computers, consoles, handhelds and scientific calculators. The game will be the proof of concept of how flexible the library is.
CURRENTLY SUPPORTED ARCHITECTURESThe main goal is to get the library and game to work on most 8-bit architectures but other systems are also considered.
8-BIT ARCHITECTURES- Intel 8080 and its derivatives
- MOS 6502 and its derivatives
- Motorola 6809 and its derivatives
- Zilog 80 and its derivatives
16-BIT ARCHITECTURES32-BIT ARCHITECTURES- PowerPC
- Intel 386
- Motorola 68020
- MIPS32r2 (little-endian)
32/64-BIT ARCHITECTUREWe also support any current architecture for which GCC can produce a working binary.
THE TOOL-CHAINHow is it this done? This is achieved by having "Cross Lib" provide APIs for the game code. The game and library code are separated:
- the game code only depends on the APIs interface and
- the APIs do not depend on the game code. Therefore it must be possible to re-use the same library for other games/programs.
The program is written in ANSI C and currently compiled with
Previous versions used WinCMOC for 6809 targets (
https://sourceforge.net/projects/cmoc-win32/). WinCMOC has been abandoned because it uses an old CMOC version that has broken pointer to functions and because it is no longer maintained by its author.
For other targets, the following compilers and dev-kits may be included in future versions of the tool-chain:
The tool-chain also uses some third-party target-specific tools to create usable cassette/disk/rom images. This is documented in
https://github.com/Fabrizio-Caruso/CROS ... README.txtTHE GAME CODEThe game should be as portable as possible. Therefore the following coding choices and design rules are applied:
- ANSI C (for the game logic);
- strictly separated input/output and hardware-dependent code from the game logic;
- input for keyboard/joystick and output for sound and display are provided by CrossLib
Some target(s) may get specific graphic code with re-defined characters, software/hardware sprites and music/sound effects.
SUPPORTED TARGETS(as of 2018/12/15)
8-BIT versionsFor most targets, more than one version is built, in order to support different hardware configuratins and expansions (e.g., memory expansions, second CPU, 80-col display card, etc.).
abc80: Luxor ABC 80
abc800: Luxor ABC 800 (work in progress)
ace: Jupiter Ace
alphatro: Alphatronic
apple2: Apple //
apple2enh: Enhanced Apple //e
aquarius: Mattel Aquarius
atari5200: Atari 5200
atari: Atari 400/800/600XL/800XL/1200XL/65XE/130XE
atari_lynx: Atari Lynx
attache: Otrona Attache
aussie: Aussie Byte
c128_8502: Commodore 128 [8502 CPU]
c128_z80: Commodore 128 [Z80 CPU]
c16: Commodore 264 series (16/116/+4)
c64: Commodore 64
c7420: Philips VideoPac C7420 module (work in progress)
cbm510: Commodore CBM 510
cbm610: Commodore CBM 610
camputers_lynx: Camputers Lynx 48k/96k/128k
coco: Color Computer
coleco: Colecovision
coleco_adam: Colecovision Adam (work in progress)
cpc: Amstrad CPC
cpm8080: CP/M Intel 8080
cpm: CP/M Z80 with adm3a/vt52/vt100 terminals
creativision: VTech Creativision
dragon: Dragon 32/64
eg2k: EACA EG2000 Color Genie
einstein: Tatung Einstein
enterprise: Enterprise 64/128
fp1100: Casio FP-1100
g800: Sharp PC-G800
gal: Galaksija
gamate: Gamate
gx4000: Amstrad GX-4000
kaypro: Kaypro 2X
kc: Robotron KC-85/2/3/4
lambda: Lambda 8300
laser500: Laser 500
m5: Sord M5
mc1000: CCE MC-1000
microbee: Microobee
mo5: Thomson Mo5/Mo6/Prodest PC128 (work in progress)
msx: MSX
mtx: Memotech MTX 512
multi8: Mitsubishi Multi 8
mz: Sharp MZ 80/700
mz2500: Sharp MZ 2500
nascom: Nascom
nc100: Amstrad NC-100/150
nc200: Amstrad NC-200
nes: Nintendo Enterteinment System
newbrain: Grundy Newbrain
oric: Tangerine Oric 1/Atmos
osborne1: Osborne 1
osca: OSCA v6z80p
osic1p: Ohio Scientific Challenger 1P
oz: Sharp OZ-700
p2000: Philips P2000
pc6001: NEC PC 6001
pc88: NEC PC 8801 (work in progress)
pce: PCEngine
pet: Commodore Pet
pps: Peters Plus Sprinter
pv1000: Casio PV1000
pv2000: Casio PV2000
px4: Epson PX-4/HC-40
px8: Epson PX-8/HC-80
rex: Xircom Rex 6000 (work in progress)
rx78: Bandai RX-78
samcoupe: Sam Coupe
sc3000: Sega SC 3000
sg1000: Sega SG 1000
sms: Sega Master System
sos: S-OS
spc1000: Samsung SPC 1000
spectrum: Sinclair Spectrum 16k/48k/128k
srr: Exidy Sorcerer
super80: Super 80/80d/80e/80m (work in progress)
super80r: Super 80r/Super80v (work in progress)
supervision: Watara Supervision (work in progress)
svi: Spectravideo 318/328
telestrat: Oric Telestrat (work in progress)
ti82: Texas TI 82
ti83: Texas TI 83
ti8x: Texas TI 83 Plus
ti85: Texas TI 85
ti86: Texas TI 86
tiki100: TIKI 100
to7: Thomson To7(/70)/To8/To8d/To8+/To9/To9+ (work in progress)
trs80: TRS-80 Model I/III/IV
ts2068: Timex TS 2068
vg5k: VG-5000
vic20: Commodore Vic 20
vz200: VTech VZ200
x07: Casio X-07 (work in progress)
x1: Sharp X1
z1013: Robotron Z1013
z88: Cambridge Z88
z9001: Robotron Z9001, Robotron KC 85/1, Robotron KC 87
zx80: Sinclair ZX80
zx81: Sinclair ZX81
16-BIT versions pc8086: Intel 8088/8086 PC
pdp: PDP 11 v7 (work in progress)
32-BIT versions linux386: ELF linux for Intel 386
linux68k: ELF linux for Motorola 68020
linuxppc: ELF linux for PPC
linuxmips: ELF linux for little endian MIPS32r2
Modern 32/64-BIT PC versionsThere are a plain stdlib (turn based) and an ncurses (action) version that can be compiled for multiple platforms for which an ANSI C compiler and ncurses are available, including Windows and Linux. For example:
- Cygwin/Windows or Linux (gcc + ncurses, e.g., cygwin/Windows or Linux)
- Windows 32/64 bit console (mingw-gcc + ncurses, e.g., x86_64-w64-mingw32-gcc)
Remark: You can compile the game for any recent or old/ancient architecture for which there is an ANSI C capable compiler.