[SOLVED][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Talk about programming of homebrew games only.
Post Reply
Fabrizio Caruso
Posts: 41
Joined: Mon Feb 05, 2018 9:23 am
Contact:

[SOLVED][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Post by Fabrizio Caruso » Mon Feb 05, 2018 10:55 am

Hi everyone! Thanks for accepting me!

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__;
}
It may be a problem with the header?

Has anyone any experience with CC65 and Creativision who could help me out with this?

Thanks!

Fabrizio
Last edited by Fabrizio Caruso on Mon Oct 14, 2019 3:13 pm, edited 2 times in total.
User avatar
Scouter3d
Posts: 646
Joined: Mon Jun 28, 2010 7:02 am
Location: Wien
Contact:

Re: [help][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Post by Scouter3d » Tue Feb 06, 2018 8:37 am

Hi Fabrizio,

I am no expert at all, but maybe it has to do with the memory layout of the Creativision ROM1 / ROM2 Banks...
I have attached a memorymap layout for you...
memorymaps.jpg
Greetings, TOM:0)
You do not have the required permissions to view the files attached to this post.
Fabrizio Caruso
Posts: 41
Joined: Mon Feb 05, 2018 9:23 am
Contact:

Re: [help][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Post by Fabrizio Caruso » Tue Feb 06, 2018 9:10 am

@Scouter3d, thanks but I know the memory map. The problem is that the rom generated by CC65 does not work with any other configuration.
For instance $8000-$BFFF will not produce a working rom, i.e., the game does not even start.
Something else has to be done to make it work.
Fabrizio Caruso
Posts: 41
Joined: Mon Feb 05, 2018 9:23 am
Contact:

Re: [help][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Post by Fabrizio Caruso » Sat Feb 10, 2018 5:12 pm

Problem solved by swapping the two 8k banks.
Fabrizio Caruso
Posts: 41
Joined: Mon Feb 05, 2018 9:23 am
Contact:

Re: [SOLVED][creativision][cc65]CROSS CHASE: a universal 8 bit game/framework

Post by Fabrizio Caruso » Mon Oct 14, 2019 3:14 pm

How are the 18k roms mapped in ram? How are 18k rom files structure?
Post Reply