INES Mapper 136: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
mNo edit summary
(Update link to PCB picture)
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
INES Mapper 136 is used by three original (pre-Sachen) releases from Joy Van, and some TXC games:
INES Mapper 136 is used to denote the Sachen 3011 board, used by four early releases from Joy Van/Sachen:


* ''未来小子'' (Wèilái Xiǎozi, "Joy Van Kid", original Taiwan release of ''Metal Fighter µ'' with Chinese title screen) (TC-008)
* ''未来小子'' (Wèilái Xiǎozi, "Joy Van Kid", original Taiwan release of ''Metal Fighter µ'' with Chinese title screen) (TC-008)
* ''蝶變'' (Diébiàn, "Incantation", original Taiwan release of ''Galactic Crusader'' with Chinese title screen, often incorrectly rendered as Japanese "Chou Hen") (TC-009)
* ''蝶變'' (Diébiàn, "Incantation", original Taiwan release of ''Galactic Crusader'' with Chinese title screen, often incorrectly rendered as Japanese "Chou Hen") (TC-009)
* ''四川麻將'' (Sìchuān Májiàng, "Mahjong Trap", original Taiwan release of ''Shisen Mahjong - Seifuku Hen'') (TC-010)
* ''四川麻將'' (Sìchuān Májiàng, "Mahjong Trap", original Taiwan release of ''Shisen Mahjong - Seifuku Hen'') (TC-010)
* ''麻将方块'' (Mahjong Block) (TXC re-release) (MGC-008)
* ''Mahjong Companion'' (alternative version, more common version use mappers [[INES Mapper 079|79]] or [[INES Mapper 139|139]] instead.


==Banks==
==Banks==
* CPU $8000-$FFFF: 32 KiB switchable PRG ROM bank (only used for ''Mahjong Companion'')
* PPU $0000-$1FFF: 8 KB switchable CHR ROM bank
* PPU $0000-$1FFF: 8 KB switchable CHR ROM bank


==Registers==
==Registers==
Mapper 136 uses a custom IC (marked "JV001") serving as a latch, adder and inverter. There are five registers: Input (6 bits), Output (6 bits), Register (6 bits), Mode (1 bit) and Invert (1 bit).
Mapper 136 uses a custom IC (real number "JV001", fake marking "GS63030-A") serving as a latch, adder and inverter. There are five registers: Input (6 bits), Output (6 bits), Register (6 bits), Mode (1 bit) and Invert (1 bit).


  Mask: $E103
  Mask: $E103
  Read $4100-$4103: [..RR RRRR]: Read internal register. Bits 3-5 are inverted if Invert==1. Bits 6-7 are open bus.
  Read $4100-$4103: [..RR RRRR]: Read Register. Bits 4-5 are inverted if Invert==1. Bits 6-7 are open bus.
  Write $4100: When Mode==0: Bits 0-5 of Register := Input, bits 0-2 being inverted if Invert==1.
  Write $4100: When Mode==0: Bits 0-5 of Register := Input, bits 0-3 being inverted if Invert==1.
               When Mode==1: Bits 0-2 of Register incremented by one, bits 3-5 unaffected.
               When Mode==1: Bits 0-3 of Register incremented by one, bits 4-5 unaffected.
  Write $4101: Invert := Written value bit 0.
  Write $4101: Invert := Written value bit 0.
  Write $4102: Input := Written value bits 0-5.
  Write $4102: Input := Written value bits 0-5.
Line 21: Line 22:
  Write $8000-$FFFF: Output := Register; written value is ignored.
  Write $8000-$FFFF: Output := Register; written value is ignored.


In Mapper 136, bits 0/1 of the 8 KiB CHR ROM bank number (CHR A13/A14) come from Output bits 0/1:
In Mapper 136, bits 0/2 of the 8 KiB CHR ROM bank number (CHR A13..A15) come from Output bits 0-2, and the 32 KiB PRG ROM bank number (PRG A15) comes from Output bit 4:
  8 KiB CHR-ROM bank number := (Output &3);
  8 KiB CHR ROM bank number := (Output &7);
32 KiB PRG ROM bank number := (Output >>4) &1;


Games will check the lower six bits of $4100 for the correct value after several increment and inversion operations, again as a copy-protection measure.
Sachen's original '''3011''' circuit board only supported CHR ROM switching. The connection to switch 32 KiB PRG ROM was obtained by [https://datomatic.no-intro.org/attachments%20-%20sources/Nintendo%20-%20Nintendo%20Entertainment%20System/20210330_144245_3138_pcb_back.jpg soldering an additional wire/resistor].


==Errata==
Games will check the lower four or six bits of $4100 for the correct value after several increment and inversion operations as a copy-protection measure.
* ''麻将方块 (Mahjong Block)'' (TXC re-release, headerless CRC32 0ACFC3CD) is commonly set to [[INES Mapper 173]], but since it expects Output bit 1 to select CHR A14, it actually uses INES Mapper 136. Note that the original ''Super Mega'' release of the game uses [[INES Mapper 172]].


==Similar Mappers==
==Similar Mappers==
The custom IC was first analyzed for [[INES Mapper 036]]. [[INES Mapper 173]] is similar to Mapper 136 except that CHR A14 used the inverted Invert register instead.
* Mapper 136 is almost identical to [[INES Mapper 132]] with only 32 KiB PRG-ROM except in the value read from $4100 due to Mapper 136 having four (28-pin JV001 ASIC) versus Mapper 132 having three adder bits (24-pin 05-00002-010 ASIC).
* [[INES Mapper 147]] expands CHR-ROM size to 128 KiB and additionally supports 128 KiB PRG-ROM, switched in 32 KiB amounts.
* [[INES Mapper 172]] is similar to Mapper 136, connecting the six CPU bits in reverse order due to the JV001 ASIC being mounted upside down.
 
==See also==
* [http://forums.nesdev.org/viewtopic.php?f=3&t=15961&start=30#p210702 PCB image]

Latest revision as of 09:07, 16 February 2024

INES Mapper 136 is used to denote the Sachen 3011 board, used by four early releases from Joy Van/Sachen:

  • 未来小子 (Wèilái Xiǎozi, "Joy Van Kid", original Taiwan release of Metal Fighter µ with Chinese title screen) (TC-008)
  • 蝶變 (Diébiàn, "Incantation", original Taiwan release of Galactic Crusader with Chinese title screen, often incorrectly rendered as Japanese "Chou Hen") (TC-009)
  • 四川麻將 (Sìchuān Májiàng, "Mahjong Trap", original Taiwan release of Shisen Mahjong - Seifuku Hen) (TC-010)
  • Mahjong Companion (alternative version, more common version use mappers 79 or 139 instead.

Banks

  • CPU $8000-$FFFF: 32 KiB switchable PRG ROM bank (only used for Mahjong Companion)
  • PPU $0000-$1FFF: 8 KB switchable CHR ROM bank

Registers

Mapper 136 uses a custom IC (real number "JV001", fake marking "GS63030-A") serving as a latch, adder and inverter. There are five registers: Input (6 bits), Output (6 bits), Register (6 bits), Mode (1 bit) and Invert (1 bit).

Mask: $E103
Read $4100-$4103: [..RR RRRR]: Read Register. Bits 4-5 are inverted if Invert==1. Bits 6-7 are open bus.
Write $4100: When Mode==0: Bits 0-5 of Register := Input, bits 0-3 being inverted if Invert==1.
             When Mode==1: Bits 0-3 of Register incremented by one, bits 4-5 unaffected.
Write $4101: Invert := Written value bit 0.
Write $4102: Input := Written value bits 0-5.
Write $4103: Mode := Written value bit 0.
Write $8000-$FFFF: Output := Register; written value is ignored.

In Mapper 136, bits 0/2 of the 8 KiB CHR ROM bank number (CHR A13..A15) come from Output bits 0-2, and the 32 KiB PRG ROM bank number (PRG A15) comes from Output bit 4:

8 KiB CHR ROM bank number := (Output &7);
32 KiB PRG ROM bank number := (Output >>4) &1;

Sachen's original 3011 circuit board only supported CHR ROM switching. The connection to switch 32 KiB PRG ROM was obtained by soldering an additional wire/resistor.

Games will check the lower four or six bits of $4100 for the correct value after several increment and inversion operations as a copy-protection measure.

Similar Mappers

  • Mapper 136 is almost identical to INES Mapper 132 with only 32 KiB PRG-ROM except in the value read from $4100 due to Mapper 136 having four (28-pin JV001 ASIC) versus Mapper 132 having three adder bits (24-pin 05-00002-010 ASIC).
  • INES Mapper 147 expands CHR-ROM size to 128 KiB and additionally supports 128 KiB PRG-ROM, switched in 32 KiB amounts.
  • INES Mapper 172 is similar to Mapper 136, connecting the six CPU bits in reverse order due to the JV001 ASIC being mounted upside down.

See also