Nocash's Magic Floor game is the only NES game I know of that works without a CHR chip because it uses half the nametable memory in the Control Deck as CHR RAM. I've been hacking it to work on more widely used mappers, such as a multicart mapper.
FCEUX
Mesen
The game itself
Unlike the reviewer who made this review of the ZX81 port, I was able to get the hang of how to play after a few minutes. The one problem I found was that most maps ended up in a tedious search for the last lousy point.
FCEUX
- Doesn't support mapper 218.
- Editing the header to mapper 7 (AxROM) gets the background to display. This is a good thing, as it shows that Magic Floor isn't relying on tiles $000-$03F being mirrored to $040-$1FF. But as soon as I move, the sprites disappear because it's presumably emulating the NTSC NES's bug when a sprite is rewritten with $2003/$2004 rather than with DMA ($2003/$4014). This one's on nocash to fix. RAM $0200-$07FF is currently unused.
- Edit it to mapper 0 (NROM) with vertical mirroring, and it works and fails exactly as in mapper 7.
Mesen
- Emulates mapper 218. The game works.
- When edited to mapper 7, the background does not appear because the game uses vertical scrolling to center the playfield, and Mesen appears to assume horizontal mirroring until the first mapper write. I imagine that on hardware, whether it powers on with the register set to screen A or screen B, the hardware still outputs the same A10 value for all four nametables. This bug, reported on GitHub, is on Sour to fix after returning from vacation.
- When edited to mapper 0 with vertical mirroring, the game works.
The game itself
Unlike the reviewer who made this review of the ZX81 port, I was able to get the hang of how to play after a few minutes. The one problem I found was that most maps ended up in a tedious search for the last lousy point.