INES Mapper 218: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (iNES category sorting)
(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.)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:INES Mappers|218]]
[[Category:INES Mappers|218]]
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"
! 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, '''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
|}


  VA10    Effect on                        iNES Byte 6  UNIF "MIRR"
Notes:
  to      Name Tables                      Bit3.Bit0    Bit7-0
* 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.
  PPU.A10  Two-Screen, Vertical Mirroring    0.1          01h
* 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.
  PPU.A11  Two-Screen, Horizontal Mirroring  0.0          00h
  PPU.A12  One-Screen, BLK0                  1.0          02h
  PPU.A13  One-Screen, BLK1                  1.1          03h
  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).
== 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)


Note: 1K CHR-RAM allows to use as much as 64 tiles of 2bpp (or, with suitable color attributes, 128 monochrome tiles of 1bpp).
== References ==
 
* [//forums.nesdev.org/viewtopic.php?t=9342 nesdev forum, Post subject: Single Chip Cartridge]
* http://forums.nesdev.org/viewtopic.php?f=2&t=9342 - nesdev forum, Post subject: Single Chip Cartridge
* [//forums.nesdev.org/viewtopic.php?t=5156 nesdev forum, Post subject: Using the NES's PPU RAM as CHR RAM?]
* http://nocash.emubase.de/magicflr.htm - Magic Floor game

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