INES Mapper 150: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Rewrite based on hardware analysis findings)
(Correct mirroring, all registers are readable, explain solder pad operation.)
Line 3: Line 3:


* ''영어, 피라미드'' (Yeong-eo, Pyramid, K-001)
* ''영어, 피라미드'' (Yeong-eo, Pyramid, K-001)
* ''将棋学園'' (Shōgi Gakuen, SA-015)
* ''将棋学園 - Chess Academy (Shōgi Gakuen, SA-015)
* ''Tasac'' (SA-020)
* ''Tasac'' (SA-020)
* ''2-in-1: Cosmo Cop/Cyber Monster'' (SA-023)
* ''2-in-1: Cosmo Cop/Cyber Monster'' (SA-023)
Line 20: Line 20:
* CPU $8000-$FFFF: switchable 32 KiB PRG-ROM bank
* CPU $8000-$FFFF: switchable 32 KiB PRG-ROM bank
* PPU $0000-$1FFF: switchable 8 KiB CHR-ROM bank
* PPU $0000-$1FFF: switchable 8 KiB CHR-ROM bank
* Nametable mirroring: switchable H/V/L-shaped/One-screen
* Nametable mirroring: switchable H/V/Vertically-flipped L/One-screen


=Registers=
=Registers=
==Register Index ($4100, write)==
==Register Index ($4100, read/write)==
  Mask: $C101
  Mask: $C101
   
   
Line 31: Line 31:
         +++- Select register number (Rx)
         +++- Select register number (Rx)


==Register Data ($4101, write)==
==Register Data ($4101, read/write)==
  Mask: $C101
  Mask: $C101
   
   
Line 45: Line 45:
   .... ..BA  R6: CHR A14..A13
   .... ..BA  R6: CHR A14..A13
   ...  .MM.  R7: Nametable mirroring
   ...  .MM.  R7: Nametable mirroring
               0: Vertical
               0: S0-S0-S0-S1 (lower right unique, or vertically-flipped L)
               1: Horizontal
               1: Horizontal
               2: L-shaped: S0-S1-S1-S1
               2: Vertical
               3: Single-screen: S0
               3: Single-screen, page 1
Registers 0-3 are completely unused.
Registers 0-3 are completely unused.
==Protection and solder Pad ($4100, read)==
=Solder Pad=
Mask: $C100
The circuit board has a solder pad that selects whether ASIC pin 14 is connected to CPU D2 or to Vcc. In the latter setting, the ASIC sees all writes as being OR'd with $04, while on reads, D2 is open bus. The pad setting only makes a difference for the game ''Shōgi Gakuen'', which writes to R2 and reads from R6 to check whether it now holds that written value, as would be the case if the solder pad were in the Vcc position; depending on the setting, a different copyright tag ("Sachen" vs. "Sachen and Hacker International") is displayed.
 
D~7654 3210
  ---------
  .... .RRD
        ||+- Solder pad value
        ++-- Inverse of previous index
=Errata=
=Errata=
The '''SA-020A''' PCB, used for ''美女拳 - Honey Peach'' (SA-006) and denoted by [[INES Mapper 243]], connects the same ASIC differently to support 128 KiB of CHR-ROM. The game is commonly found with an incorrect CHR-ROM bank order set to mapper 150; if that misordered ROM file is to be emulated, R2 bit 0 must additionally provide CHR A16.
The '''SA-020A''' PCB, used for ''美女拳 - Honey Peach'' (SA-006) and denoted by [[INES Mapper 243]], connects the same ASIC differently to support 128 KiB of CHR-ROM. The game is commonly found with an incorrect CHR-ROM bank order set to mapper 150; if that misordered ROM file is to be emulated, R2 bit 0 must additionally provide CHR A16.

Revision as of 21:07, 11 December 2019

iNES Mapper 150 denotes the Sachen SA-015 circuit board and its chip-on-board variant, SA-630. Using an eight-register ASIC with a fake "74LS374N" marking, it supports up to 128 KiB PRG-ROM, and 64 KiB of CHR-ROM. Its UNIF board name is UNL-Sachen-74LS374N. Used for the following games:

  • 영어, 피라미드 (Yeong-eo, Pyramid, K-001)
  • 将棋学園 - Chess Academy (Shōgi Gakuen, SA-015)
  • Tasac (SA-020)
  • 2-in-1: Cosmo Cop/Cyber Monster (SA-023)
  • 2-in-1: Tough Cop/Super Tough Cop (SA-024)
  • 臺灣 16 花牌麻将 (Táiwān 16 Huāpái Májiàng, SA-025)
  • Poker II (TC-013)
  • Strategist (TC-014)
  • Olympic I.Q. (TC-015)
  • Happy Pairs (TC-016)
  • Auto-Upturn (TC-017)
  • Magic Cube (TC-018)
  • Chinese Checkers (TC-019)
  • Poker III 5-in-1 (TC-020)

Banks

  • CPU $8000-$FFFF: switchable 32 KiB PRG-ROM bank
  • PPU $0000-$1FFF: switchable 8 KiB CHR-ROM bank
  • Nametable mirroring: switchable H/V/Vertically-flipped L/One-screen

Registers

Register Index ($4100, read/write)

Mask: $C101

D~7654 3210
  ---------
  .... .RRR
        +++- Select register number (Rx)

Register Data ($4101, read/write)

Mask: $C101

D~7654 3210
  ---------
  .... .RRR
        +++- Register data

D~7654 3210
  ---------
  .... ...C  R4: CHR A15
  .... ..PP  R5: PRG A16..A15
  .... ..BA  R6: CHR A14..A13
  ...  .MM.  R7: Nametable mirroring
              0: S0-S0-S0-S1 (lower right unique, or vertically-flipped L)
              1: Horizontal
              2: Vertical
              3: Single-screen, page 1

Registers 0-3 are completely unused.

Solder Pad

The circuit board has a solder pad that selects whether ASIC pin 14 is connected to CPU D2 or to Vcc. In the latter setting, the ASIC sees all writes as being OR'd with $04, while on reads, D2 is open bus. The pad setting only makes a difference for the game Shōgi Gakuen, which writes to R2 and reads from R6 to check whether it now holds that written value, as would be the case if the solder pad were in the Vcc position; depending on the setting, a different copyright tag ("Sachen" vs. "Sachen and Hacker International") is displayed.

Errata

The SA-020A PCB, used for 美女拳 - Honey Peach (SA-006) and denoted by INES Mapper 243, connects the same ASIC differently to support 128 KiB of CHR-ROM. The game is commonly found with an incorrect CHR-ROM bank order set to mapper 150; if that misordered ROM file is to be emulated, R2 bit 0 must additionally provide CHR A16.

See also