Re: Colour RAM Expansion

From: Marko Mäkelä (
Date: 2000-06-30 09:51:50

On Tue, 27 Jun 2000, COPLIN, Nicholas. wrote:

> I recently had time to think about a colour RAM expansion for the C64 and
> what prospects it could offer, but I'm not sure if I got the logic correct,
> and also have very little info about the way the VIC grabs the colour RAM
> data.

As far as I know, the colour RAM data is only used for text and
multi-colour graphics attributes.  The data are read during bad lines,
simultaneously with the text buffer data (the buffer that normally starts
at $0400).  As the colour RAM only has 1024 addresses and as the start
address of the text buffer can be set in steps of 1024 addresses, the same
address lines A0-A9 can be used for addressing both text and colour memory
simultaneously.  The data lines D8-D11 are not used outside bad lines,
unless I'm mistaken.

> My thinking was to create a mode where an 8k colour RAM buffer was possible,
> hence a 4bit colour byte was available for each byte in the hires map (of
> course only in MC hires would the colour RAM be of use).

The only problem is that the VIC-II won't be reading the colour RAM
outside bad lines.  When you think about it more closely, you will notice
that it has no chance to feed the addresses to the colour RAM.  You could
force a bad line on every raster line (as in FLI pictures) to circumvent
this, but it would be very CPU intensive (depending on the height of the
area you want to display in more colours).

> Option 1a) would be if colour info was grabbed in parallel to reading the
> Video RAM and then stored within the VIC for the next 8 reads of the Hires
> RAM. This would mean an expansion is not possible

I think this is the way it works.  The VIC-II probably has a 40x12 bits
buffer for the character line and the colours.  The VIC-I (whose dot clock
is only 4 times the bus clock) works like most PC graphics controllers
I've seen: it reads both the text buffer and the character generator RAM
on every raster line.

> Anyone have any ideas?

The C128 has a 2-kilobyte colour RAM, of which only 2048 nibbles are used.
The colour RAM bank can be independently switched for the CPU and for the
video chip by setting the LORAM and HIRAM bits (one of the bits 0-2 in
$01; I think they are bits 0 and 1) in the C128 mode.  You could have more
colourful FLI pictures in the C128 mode if you flipped the colour RAM bank
every 4 lines.

For those who don't know: FLI, or Flexible Line Interpretation, is a trick
some demo programmers found in the late 1980s or early 1990s.  It works by
forcing explicit DMA fetch by fiddling with the $d011 register. FLI is in
multi-colour mode; when used in hi-res mode, this technique is usually
called AFLI.  It allows the text matrix address to be changed on every
raster line.  In that way, you get 2 fully independently selectable
colours for every 8x1 pixel cell.  In multi-colour mode, the colour RAM
attribute is the same for a 8x8 pixel cell (on the C128 you could switch
it e.g. for each 8x4 cell).  The colour that comes from one of the $d02x
registers (maybe $d021) is usually kept the same for the whole picture,
usually black.


This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail

Archive generated by hypermail 2.1.1.