This is great, but I think a detail about the Commodore 64 wrong. While the VIC-II is indeed bank switched and can only see a window of 16k, the character ROM is only mapped into 2 of 4 possible banks.
The whole thing is confusing since the CPU and VIC-II both have bank switching that operate independently. By default, the VIC sees the character ROM and the CPU doesn't. You can map the character ROM into CPU memory, and it always shows up at $D000. But the VIC-II has it's own banking configuration, which has 4 settings. The 16k VIC-II address space can see exactly one of the 4 16k blocks of RAM: CPU addresses $0000-$3FFF, $4000-$7FFF, $8000-$BFFF, or $C000-$FFFF. In config 0, the character ROM is hardwired to $1000 in the VIC address space only. Same with config 2. But if you use 1 or 3, the VIC-II sees only RAM.
This is burned into my memory, since a common trick was to set up the system as follows:
1. Set up screen RAM at $C000
2. Load a custom character set (usually tiles for game graphics) to $C800-$D7FF
3. Configure the VIC to bank 3 ($C000)
4. Set the offset registers on the VIC for screen RAM and the charset (now in RAM)
5. Use the RAM under the IO space and Kernal ROMS ($D800-$FFFF) for sprites
That config even worked with BASIC which only used RAM below $A000.
If you switch to bitmap mode and don't use sprites, you have the whole 16k from $C000-$FFFF free for bitmaps and you just need to set the VIC offset register to flip pages.
Increasing the framerate of this game seems to have a strong impact on how players perceive the cars and their handling. The feelings of weight and momentum seem all but gone in the 50 fps versions (there is a hack for the Amiga port too).
Apparently the mind interpolates the missing frames better than the engine.
The whole thing is confusing since the CPU and VIC-II both have bank switching that operate independently. By default, the VIC sees the character ROM and the CPU doesn't. You can map the character ROM into CPU memory, and it always shows up at $D000. But the VIC-II has it's own banking configuration, which has 4 settings. The 16k VIC-II address space can see exactly one of the 4 16k blocks of RAM: CPU addresses $0000-$3FFF, $4000-$7FFF, $8000-$BFFF, or $C000-$FFFF. In config 0, the character ROM is hardwired to $1000 in the VIC address space only. Same with config 2. But if you use 1 or 3, the VIC-II sees only RAM.
This is burned into my memory, since a common trick was to set up the system as follows:
That config even worked with BASIC which only used RAM below $A000.If you switch to bitmap mode and don't use sprites, you have the whole 16k from $C000-$FFFF free for bitmaps and you just need to set the VIC offset register to flip pages.