John West wrote:
Lemuren wrote:
Yunder $D018 there doesn't seem to be a configuration for pointing to $C800.
That's because VIC can only see 16K of memory at a time, and the default is $0000-$3FFF. However, have a look at $DD00: the bottom two bits choose which 16K bank VIC uses. To have your character set at $C800, you'd clear the bottom two bits of $DD00 and set the bottom 3 bits of $d018 to 001.
Everything that VIC accesses must be in the same bank, so you couldn't have characters at $C800 and screen at its usual $0400.
Screen memory would have to move to $C400 (or somewhere else in $C000-$FFFF).
Thanks, you're a life-saver! That did the trick (almost!). I decided to put my character information in $C000-$C7FF and put the screen memory location at $C800-$CBFF. I don't know how familiar you are with cc65, but I've run into another issue now.
If I directly write to locations $C800-$C7FF everything works fine, characters print just like they should, however, the built-in functions e.g. cputc() seem to be hardcoded to write to $0400, i.e. the default screen memory location. Is there any way of changing these, or should I just re-write the printing functions on my own?
EDIT:
I managed to fix it. Changing the high-byte of the pointer to screen memory ($0288) to $C8 fixed it. Thanks again for all the help.