INES Mapper 178

From NESdev Wiki
Revision as of 16:56, 7 March 2018 by NewRisingSun (talk | contribs) (Add other banking modes, errata)
Jump to navigationJump to search

iNES Mapper 178 is used by some games from Waixing and Henge Dianzi as well as some educational computers. It always uses CHR-RAM and can use up to 32 KiB of PRG-RAM, banked in 8 KiB amounts.

Registers

Mode Register ($4800)

7654 3210
---------
.... .PPM
      ||+- Select nametable mirroring type
      ||    0: Vertical
      ||    1: Horizontal
      ++-- Select PRG banking mode
            0: 32 KiB PRG-ROM bank at CPU $8000-$FFFF, low bank bit 0 ignored
            1: 16 KiB PRG-ROM bank at CPU $8000-$BFFF comprised of selectable high and low banks
               16 KiB PRG-ROM bank at CPU $C000-$FFFF comprised of selectable high and fixed low bank 7
            2: 16 KiB PRG-ROM bank at CPU $8000-$BFFF comprised of selectable high and low banks
               16 KiB PRG-ROM bank at CPU $C000-$FFFF being a mirror of $8000-$BFFF
            3: 16 KiB PRG-ROM bank at CPU $8000-$BFFF comprised of selectable high and low banks
               16 KiB PRG-ROM bank at CPU $C000-$FFFF comprised of selectable high, fixed low bank bits 1-2
               and selectable low bank bit 0 (i.e. low bank register content OR 6)

Banking modes 2 and 3 are rarely used. One multicart that uses them is 4-in-1 (SO1).

Low PRG Bank Register ($4801)

7654 3210
---------
.... .LLL
      +++- 16 KiB bank number bits 0-2.

Bit 0 is ignored in 32 KiB PRG banking mode.

High PRG Bank Register ($4802)

7654 3210
---------
HHHH HHHH
++++-++++ 16 KiB bank number bits 3-10.

The final 16 KiB PRG-ROM bank number thus is $4801 OR ($4802 SHL 3).

WRAM Bank Register ($4803)

7654 3210
---------
.... ..BB
       ++ Select 8 KiB WRAM bank at CPU $6000-$7FFF

Infrared

Apparently some cartridge have an infrared sensor. Infrared receiving is working by having two registers:

 $5000-$5FFF:  [.... ...V]  (read only)
    V = read current bit from IR sensor
 $6000-$7FFF:  [I... ....]  (write only)
    I = set to activate interrupts by infrared signal

Errata

  • The commonly-available ROM images of
    • 宠物: 小精灵 IV (Chǒngwù: Xiǎo Jīnglíng IV), headerless CRC32 0xB0B13DBD
    • Education Computer 32-in-1 (Game Star) [!], headerless CRC32 0xF834F634
will not work when emulated using the above description. The meaning of registers $4801 and $4802 is swapped, and an emulator must shift the value of $4802 one bit to the left before ORing with $4801. While it cannot be ruled out that these games use an alternative version of the hardware, the more likely explanation is that these are simply bad dumps (notwithstanding GoodNES 3.23b's [!] tag) where the dumper confused the two bank registers.
  • Supposedly, the new PRG bank is only committed when $4801 is written. Emulating this supposed behavior however will break Ping Pong, while commiting the PRG bank after any $480x write does not seem to break anything else.
  • Most of the educational computers using this mapper require Dendy video timing and will freeze at various points when run with NTSC timing.

See also