INES Mapper 218: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(update link to Magic Floor)
(Add nesmon to the list of software and clean up the table + notes. Also change VA10 to CIRAM A10, and /VCS to CIRAM /CE, to reflect the cart pinout article.)
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:INES Mappers|218]]
[[Category:INES Mappers|218]]
'''iNES Mapper 218''' is used by the homebrew Magic Floor game. The cartridge contains only one single PRG-ROM chip (and a CIC, if required).
'''iNES Mapper 218''' is used by the homebrew game ''Magic Floor''. Excluding the [[CIC]], the cartridge board only contains a single PRG-[[ROM]] chip (up to 32KiB).  
 
There's no CHR-ROM or CHR-RAM. Instead, the console's internal 2Kbyte Name Table RAM is mapped as CHR-RAM. The 2K RAM is permanently selected (/VCS wired to GND), and can be used in four modes by wiring VA10 to one of the PPU.A10..A13 address lines:


There is no [[CHR_ROM_vs._CHR_RAM|CHR-ROM or CHR-RAM]] on the cartridge. Instead, the console's internal 2KiB nametable RAM is mapped as CHR-RAM. This RAM is permanently selected (CIRAM /CE wired to GND), and can be used in four configurations by wiring CIRAM A10 to one of the PPU A10..A13 address lines:
{| class="tabular"
{| class="tabular"
! VA10 connection || Effect on nametables || [[iNES]] Flags 6 || UNIF "MIRR" bit 7-0
! CIRAM A10 connection || Effect on [[PPU nametables]] || Effect on [[PPU pattern tables]] || [[INES#Flags 6|iNES Flags 6]] || [[UNIF]] "MIRR" bit 7-0
|-
|-
| PPU.A10 || Two-Screen, Vertical Mirroring  || $A1 (0001) || $01
| PPU A10 || Two-screen, '''Horizontal arrangement''' ("Vertical mirroring") || 2KiB (128 tiles) CHR-RAM, also mapped to nametable data || $A1 (0001) || $01
|-
|-
| PPU.A11 || Two-Screen, Horizontal Mirroring || $A0 (0000) || $00
| PPU A11 || Two-screen, '''Vertical arrangement''' ("Horizontal mirroring") || 2KiB (128 tiles) CHR-RAM, also mapped to nametable data || $A0 (0000) || $00
|-
|-
| PPU.A12 || One-Screen, BLK0                || $A8 (1000) || $02
| PPU A12 || Single-screen arrangement || '''BLK0''': 1KiB (64 tiles) CHR-RAM, "swappable" via [[PPUCTRL]] || $A8 (1000) || $02
|-
|-
| PPU.A13 || One-Screen, BLK1                 || $A9 (1001) || $03
| PPU A13 || Single-screen arrangement || '''BLK1''': 1KiB (64 tiles) CHR-RAM || $A9 (1001) || $03
|}
|}
Note: Bit 3 in Byte 6 of iNES header would be usually Four-Screen flag, but, for this mapper it is used as One-Screen flag.
The VA10 connection does, of course, also affect the CHR-RAM mapping at 0000h-1FFFh. BLK1 would be the most common case (1K NT plus 1K CHR-RAM). BLK0 would allow to swap CHR RAM via Port 2000h.Bit3-4. Two-Screen would allow to use two NTs (and to squeeze CHR data into unused NT areas). Two-Screen would also allow to use 2K OBJ tiles (when leaving BG unused).


Note: 1K CHR-RAM allows to use as much as 64 tiles of 2bpp (or, with suitable color attributes, 128 monochrome tiles of 1bpp).
Notes:
* The "alternative nametable layout" (bit 3) in [[INES#Flags_6|Flags 6]] of the iNES header is used to denote the two Single-screen configurations.
* If reads/writes to mirrored addresses are avoided, software for this mapper can also be made compatible with [[AxROM]] ($A8,$A9), [[BxROM]] ($A0,A1), [[NROM]] + CHR-RAM, or other suitable mappers. ''Magic Floor'' itself is well behaved enough to be emulated as AxROM or NROM + CHR-RAM with vertical mirroring.


Also note that the PPU.A13 variant can be adequately emulated as [[AxROM]] provided the program never writes to $8000-$FFFF and is marked as having 1024 bytes of CHR RAM in [[NES 2.0]].
== Software ==
Games:
* [//problemkaputt.de/magicflr.htm ''Magic Floor''] ($A8)
* [//problemkaputt.de/starfigh.htm ''Starfight''] ($A8)
Tests:
* [//forums.nesdev.org/viewtopic.php?p=232238#p232238 OAM corruption stress test ROM] ($A0)
Miscellaneous:
* [//github.com/bitcores/nesmon Port of Apple 1 Woz Monitor] ($A9)


* http://forums.nesdev.org/viewtopic.php?t=9342 - nesdev forum, Post subject: Single Chip Cartridge
== References ==
* http://forums.nesdev.org/viewtopic.php?t=5156 - nesdev forum, Post subject: Using the NES's PPU RAM as CHR RAM?
* [//forums.nesdev.org/viewtopic.php?t=9342 nesdev forum, Post subject: Single Chip Cartridge]
* http://problemkaputt.de/magicflr.htm - Magic Floor game
* [//forums.nesdev.org/viewtopic.php?t=5156 nesdev forum, Post subject: Using the NES's PPU RAM as CHR RAM?]

Latest revision as of 10:33, 28 December 2024

iNES Mapper 218 is used by the homebrew game Magic Floor. Excluding the CIC, the cartridge board only contains a single PRG-ROM chip (up to 32KiB).

There is no CHR-ROM or CHR-RAM on the cartridge. Instead, the console's internal 2KiB nametable RAM is mapped as CHR-RAM. This RAM is permanently selected (CIRAM /CE wired to GND), and can be used in four configurations by wiring CIRAM A10 to one of the PPU A10..A13 address lines:

CIRAM A10 connection Effect on PPU nametables Effect on PPU pattern tables iNES Flags 6 UNIF "MIRR" bit 7-0
PPU A10 Two-screen, Horizontal arrangement ("Vertical mirroring") 2KiB (128 tiles) CHR-RAM, also mapped to nametable data $A1 (0001) $01
PPU A11 Two-screen, Vertical arrangement ("Horizontal mirroring") 2KiB (128 tiles) CHR-RAM, also mapped to nametable data $A0 (0000) $00
PPU A12 Single-screen arrangement BLK0: 1KiB (64 tiles) CHR-RAM, "swappable" via PPUCTRL $A8 (1000) $02
PPU A13 Single-screen arrangement BLK1: 1KiB (64 tiles) CHR-RAM $A9 (1001) $03

Notes:

  • The "alternative nametable layout" (bit 3) in Flags 6 of the iNES header is used to denote the two Single-screen configurations.
  • If reads/writes to mirrored addresses are avoided, software for this mapper can also be made compatible with AxROM ($A8,$A9), BxROM ($A0,A1), NROM + CHR-RAM, or other suitable mappers. Magic Floor itself is well behaved enough to be emulated as AxROM or NROM + CHR-RAM with vertical mirroring.

Software

Games:

Tests:

Miscellaneous:

References