I am the developer of CROSS CHASE (https://github.com/Fabrizio-Caruso/CROSS-CHASE)
which is an 8 bit game that uses my 8 bit library/framework to write universal 8 bit games, i.e., games that run
on any 8-bit computer/console/handheld.
The game is written in C and use multiple cross-compilers (CC65, ZSDCC, SCCZ80, CMOC, WINCMOC, etc.) to compile the game for 100 systems/configurations. The SAME game CODE is used for ALL 8-bit systems.
I am developping the game for ANY 8 bit computer/console/handheld including both common (all Commodore, Sinclair, MSX, Atari, etc.)
and very rare systems (like the Galaksija, the CCE MC-1000, the Robotron Z 9001).
The game also runs on the Creativision but I am having a problem with roms bigger than 8k. Ideally I would like to use 16k (or 32k).
For the Creativision I am using CC65.
If I set the linker to use anything different than $A000-$BFFF, I get a rom that does not run.
Remark: I know the memory map. I know $8000-$BFFF should be possible but CC65 will create a rom file that won't even start
if I set $8000-$BFFF.
What do I need to do?
This is the only current working cfg:
Code: Select all
SYMBOLS {
__STACKSIZE__: type = weak, value = $0080;
}
MEMORY {
ZP: file = "", define = yes, start = $0020, size = $00E0;
RAM: file = "", define = yes, start = $01FA, size = $0206;
ROM: file = %O, define = yes, start = $A000, size = $2000, fill = yes, fillval = $FF;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
ZP: load = ZP, type = zp, optional = yes;
VECTORS: load = ROM, run = RAM, type = rw, define = yes;
DATA: load = ROM, run = RAM, type = rw, define = yes, start = $0204;
BSS: load = RAM, type = bss, define = yes;
ONCE: load = ROM, type = ro, optional = yes;
CODE: load = ROM, type = ro;
INIT: load = ROM, type = ro;
RODATA: load = ROM, type = ro;
AUDIO: load = ROM, type = ro, optional = yes, start = $BF00;
SETUP: load = ROM, type = ro, start = $BFE8;
}
FEATURES {
CONDES: type = constructor,
label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__,
segment = INIT;
CONDES: type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__,
segment = RODATA;
CONDES: type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__,
segment = RODATA,
import = __CALLIRQ__;
}
Has anyone any experience with CC65 and Creativision who could help me out with this?
Thanks!
Fabrizio