INES Mapper 215: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
mNo edit summary
(Correction for S-Y2/king005)
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:INES Mappers|215]][[Category:MMC3-like mappers|215]][[Category:Mappers using $4020-$5FFF|215]]
[[Category:INES Mappers|215]][[Category:MMC3-like mappers|215]][[Category:Mappers using $4020-$5FFF|215]][[Category:Mappers with scanline IRQs|215]][[Category:NES 2.0 mappers with submappers|215]]
iNES Mapper 215 combines four different MMC3-clone-bearing boards with scrambled register addresses and indices, an outer PRG/CHR-ROM bank register, and an NROM-like PRG-ROM register that can override the MMC3 clone's PRG-ROM bank.
iNES Mapper 215 is used for later single-game as well as multicart releases from Sugar Softec. They use an MMC3 clone with a selectable scrambling pattern.


* '''Subtype 1''': Fixed scrambling pattern #4, NROM Override Register at $6000; basically [[INES Mapper 114]] but with a different scrambling pattern. Used by:
* '''Submapper 0''', UNIF board name '''UNL-8237''':
** ''Boogerman'' (SuperGame, not to be confused with ''Boogerman II'' by Rex Soft)
* '''Subtype 2''': Selectable scrambling pattern via $5007, NROM Override/Mode Register at $5000, Outer Bank Register at $5001. UNIF board name '''UNL-8237'''. Used by:
** ''Earthworm Jim 2''
** ''Earthworm Jim 2''
** ''Mortal Kombat 3'' (SuperGame, not ''Extra 60'', not to be confused by similarly-named games from other developers)
** ''Mortal Kombat 3'' (SuperGame, not ''Extra 60'', not to be confused by similarly-named games from other developers)
** ''Mortal Kombat 3 Extra 60'' (both existing ROM images are just extracts of the 2-in-1 multicart containing this game)
** ''Pocahontas Part 2''
** ''Pocahontas Part 2''
** ''Mortal Kombat 3 Extra 60''
** ''2-in-1: Aladdin, EarthWorm Jim 2'' (Super 808)
** ''2-in-1: Aladdin, EarthWorm Jim 2''
** ''2-in-1: The Lion King, Bomber Boy'' (GD-103)
** ''2-in-1: EarthWorm Jim 2, Boogerman''
** ''2-in-1 Super Golden Card: EarthWorm Jim 2, Boogerman'' (king002)
** ''3-in-1: Boogerman, Adventure Island 3, Double Dragon 3''
** ''2-in-1: Mortal Kombat 3 Extra 60, The Super Shinobi'' (king005)
** ''5-in-1: Aladdin, EarthWorm Jim 2, Garo Densetsu Special, Silkworm, Contra Force''
** ''3-in-1: Boogerman, Adventure Island 3, Double Dragon 3'' (Super 308)
** ''6-in-1: EarthWorm Jim 2, Mortal Kombat 3, Double Dragon 3, Contra 3, The Jungle Book, Turtles Tournament Fighters''
** ''5-in-1 Golden Card: Aladdin, EarthWorm Jim 2, Garo Densetsu Special, Silkworm, Contra Force'' (SPC005)
* '''Subtype 3''': Similar to '''Subtype 2''', but with an extended Outer Bank Register at $5001 to accomodate 2 MiB PRG-/CHR-ROMs. UNIF board name '''UNL-8237A'''. Used by:
** ''6-in-1 Golden Card: EarthWorm Jim 2, Mortal Kombat 3, Double Dragon 3, Contra 3, The Jungle Book, Turtles Tournament Fighters'' (SPC009)
** ''9-in-1: The Lion King, EarthWorm Jim 2, Aladdin, Boogerman, Somari, Turtles Tournament Fighters, Mortal Kombat 3, Captain Tsubasa 2, Taito Basketball''
* '''Submapper 1''', UNIF board name '''UNL-8237A''':
* '''Subtype 4''': Fixed scrambling pattern #3, no NROM Override Register, Outer CHR-ROM Bank register at $6001, Outer PRG-ROM Bank register at $6007. Used by:
** ''9-in-1 High Standard Card: The Lion King, EarthWorm Jim 2, Aladdin, Boogerman, Somari, Turtles Tournament Fighters, Mortal Kombat 3, Captain Tsubasa 2, Taito Basketball'' (king001)
** ''2-in-1: Mortal Kombat 3 Extra 60, The Super Shinobi''
** (''Mortal Kombat 3 Extra 60'': both existing ROM images are just extracts of the 2-in-1 multicart.)
 
So far, no submappers have been proposed for the different subtypes, as they can coexist and be emulated under the same mapper number by:
* powering-up in scrambling mode 4 (to accommodate '''Subtype 1''');
* emulating the NROM Override/Mode Register at both $5000 and $6000 (to accomodate '''Subtypes 1-3''');
* interpreting the bits of the Outer Bank Register at $5001 differently depending on ROM size (to differentiate '''Subtypes 2''' and '''3''');
* ''not emulating'' '''Subtype 4''''s Outer Bank registers at $6001 and $6007 at all, since the only known image retains '''Subtype 2''' compatibility writes, including writing $03 to $5007..
 
=Registers=
=Registers=
==NROM Override/Mode Register ($5000, Subtypes 2/3; $6000, Subtype 1)==
==NROM Override/Mode Register ($5000)==
  Mask: $F007 (Subtype 2/3), probably $E001 (Subtype 1)
  Mask: $F007
   
   
  D~7654 3210
  D~7654 3210
Line 37: Line 27:
   ||+------- 0: Do not replace bit 0 (NROM-128)
   ||+------- 0: Do not replace bit 0 (NROM-128)
   ||        1: Replace bit 0 with CPU A14 (NROM-256)
   ||        1: Replace bit 0 with CPU A14 (NROM-256)
   |+-------- 0: Do not replace PRG A14 and CHR A14 from the MMC3
   |+-------- 0: Do not replace PRG A17 and CHR A17 from the MMC3 (256 KiB outer bank)
   |          1: Replace PRG A14 and CHR A14 with $5001 bits 4 and 5, respectively ('''Subtypes 2/3 only''')
   |          1: Replace PRG A17 and CHR A17 with $5001 bits 4 and 5, respectively (128 KiB outer bank)
   +--------- 0: Use PRG bank from MMC3; ignore $5000/$6000 bits 0-3/5
   +--------- 0: Use PRG bank from MMC3; ignore bits 0-3/5
               1: Ignore PRG bank from MMC3; apply $5000/$6000 bits 0-3/5
               1: Ignore PRG bank from MMC3; apply bits 0-3/5
   
   
  Power-up value: $00
  Power-up value: $00
==Outer Bank Register ($5001, Subtype 2)==
 
==Outer Bank Register ($5001) - Submapper 0 (UNL-8237)==
  Mask: $F007
  Mask: $F007
   
   
Line 56: Line 47:
  Power-up value: $xF
  Power-up value: $xF


==Outer Bank Register ($5001, Subtype 3)==
==Outer Bank Register ($5001) - Submapper 1 (UNL-8237A)==
  Mask: $F007
  Mask: $F007
   
   
Line 70: Line 61:
  Power-up value: $xF
  Power-up value: $xF


==Scrambling Pattern Register ($5007, Subtypes 2 and 3)==
==Scrambling Pattern Register ($5007)==
  Mask: $F007
  Mask: $F007
   
   
Line 78: Line 69:
         +++- Select MMC3 register address and index scrambling mode (0-7)
         +++- Select MMC3 register address and index scrambling mode (0-7)
   
   
  Power-up value: Unknown; use $04 for compatibility with '''Subtype 1'''
  Power-up value: $00


==Outer CHR-ROM Bank Register ($6001, Subtype 4)==
Mask: $E007
D~7654 3210
  ---------
  .... ...+- Select 256 KiB CHR-ROM bank at PPU $0000-$1FFF
Since the only known Subtype 4 cartridge also retains compatibility writes to $5000/$5001/$5007, this register does not need to be emulated.
==Outer PRG-ROM Bank Register ($6007, Subtype 4)==
Mask: $E007
D~7654 3210
  ---------
  PPPP Pppp
  |||| |+++- Select Inner Bank Mask (4=128 KiB, i.e. $0F; 5=256 KiB, i.e. $1F)
  ++++-+---- Select 64 KiB Outer Bank
Power-up Value: $25
The only known Subtype 4 cartridge uses the values $05 for the first 256 KiB game and $25 for the second 256 KiB game. Since it also retains compatibility writes to $5000/$5001/$5007, this register does not need to be emulated.
==MMC3-compatible registers ($8000-$FFFF, write-only)==
==MMC3-compatible registers ($8000-$FFFF, write-only)==
After unscrambling the address and the data written, these registers function the same as the MMC3's. The scrambled addresses correspond to the real address as follows:
The scrambled addresses correspond to the real address as follows:
  $5007 -------------address written-----------
  $5007 -------------address written-----------
  value 8000 8001 A000 A001 C000 C001 E000 E001
  value 8000 8001 A000 A001 C000 C001 E000 E001
Line 107: Line 78:
  0 8000 8001 A000 A001 C000 C001 E000 E001
  0 8000 8001 A000 A001 C000 C001 E000 E001
  1 A001 A000 8000 C000 8001 C001 E000 E001
  1 A001 A000 8000 C000 8001 C001 E000 E001
  2? 8000 8001 A000 A001 C000 C001 E000 E001
  2 8000 8001 A000 A001 C000 C001 E000 E001
  3 C001 8000 8001 A000 A001 E001 E000 C000
  3 C001 8000 8001 A000 A001 E001 E000 C000
  4 A001 8001 8000 C001 A000 C000 E000 E001
  4 A001 8001 8000 C000 A000 C001 E000 E001
  5? 8000 8001 A000 A001 C000 C001 E000 E001
  5 8000 8001 A000 A001 C000 C001 E000 E001
  6? 8000 8001 A000 A001 C000 C001 E000 E001
  6 8000 8001 A000 A001 C000 C001 E000 E001
  7? 8000 8001 A000 A001 C000 C001 E000 E001
  7 8000 8001 A000 A001 C000 C001 E000 E001
? denotes $5xx7 values that according to the FCEUX source code are unused by all known games.


The data that is written to the low three bits of register $8000 corresponds to the real data as follows:
The data that is written to the low three bits of register $8000 corresponds to the real data as follows:
Line 121: Line 91:
  0 0 1 2 3 4 5 6 7
  0 0 1 2 3 4 5 6 7
  1 0 2 6 1 7 3 4 5
  1 0 2 6 1 7 3 4 5
  2? 0 5 4 1 7 2 6 3
  2 0 5 4 1 7 2 6 3
  3 0 6 3 7 5 2 4 1
  3 0 6 3 7 5 2 4 1
  4 0 2 5 3 6 1 7 4
  4 0 2 5 3 6 1 7 4
  5? 0 1 2 3 4 5 6 7
  5 0 1 2 3 4 5 6 7
  6? 0 1 2 3 4 5 6 7
  6 0 1 2 3 4 5 6 7
  7? 0 1 2 3 4 5 6 7  
  7 0 1 2 3 4 5 6 7  
? denotes $5007 values that according to the FCEUX source code are unused by all known games.
 
Note that bits 6 and 7 of register $8000 are kept as they are. The data written to $8001 and $A000-$FFFF is never scrambled.
Bits 6 and 7 of register $8000 are kept as they are. The data written to $8001 and $A000-$FFFF is never scrambled. After unscrambling the address and the data written, these registers function the same as the MMC3's


=Note=
=Note=
* Games with only 256 KiB of CHR-ROM still use 512 KiB chips; the other 256 KiB usually contain leftover data from another game.
* Several single-game cartridges that use this mapper are actually 2-in-1 multicarts that have PRG A18 forced to 0 or 1 via solder pad. A dump from these cartridges without changing the solder pad will therefore contain 256 KiB of PRG-ROM but 512 KiB of CHR-ROM, since CHR A18 is not forced in a similar fashion, with one 256 KiB half containing data from the other inaccessible game.
* The Outer Bank Register is reset to its power-up value if a Reset has been detected via an interruption of the M2 signal. This makes it difficult to dump these cartridges using a Kazzo device.
* The Outer Bank Register is reset to its power-up value if a Reset has been detected via an interruption of the M2 signal. This makes it difficult to dump these cartridges using a Kazzo device.
* ''Boogerman'' ([[INES Mapper 114]] Submapper 1) was originally assigned by CaH4e3 to Mapper 215; he later reassigned '''UNL-8237''' to Mapper 215 instead.
* Some multicarts may have alternative outer bank registers in the $6xxx range; since they all contain compatibility code that writes to the $5xxx range, they are assigned to Mapper 215 as well.


=Similar Mappers=
=Similar Mappers=
* [[INES Mapper 114]] resembles '''Subtype 1''' but with a different scrambling pattern.
* [[NES 2.0 Mapper 258]] adds readable protection registers in the $5000-$5007 range.
* [[NES 2.0 Mapper 258]] has everything from '''Subtype 2''' but adds readable protection registers in the $5000-$5007 range.

Latest revision as of 21:16, 8 June 2019

iNES Mapper 215 is used for later single-game as well as multicart releases from Sugar Softec. They use an MMC3 clone with a selectable scrambling pattern.

  • Submapper 0, UNIF board name UNL-8237:
    • Earthworm Jim 2
    • Mortal Kombat 3 (SuperGame, not Extra 60, not to be confused by similarly-named games from other developers)
    • Mortal Kombat 3 Extra 60 (both existing ROM images are just extracts of the 2-in-1 multicart containing this game)
    • Pocahontas Part 2
    • 2-in-1: Aladdin, EarthWorm Jim 2 (Super 808)
    • 2-in-1: The Lion King, Bomber Boy (GD-103)
    • 2-in-1 Super Golden Card: EarthWorm Jim 2, Boogerman (king002)
    • 2-in-1: Mortal Kombat 3 Extra 60, The Super Shinobi (king005)
    • 3-in-1: Boogerman, Adventure Island 3, Double Dragon 3 (Super 308)
    • 5-in-1 Golden Card: Aladdin, EarthWorm Jim 2, Garo Densetsu Special, Silkworm, Contra Force (SPC005)
    • 6-in-1 Golden Card: EarthWorm Jim 2, Mortal Kombat 3, Double Dragon 3, Contra 3, The Jungle Book, Turtles Tournament Fighters (SPC009)
  • Submapper 1, UNIF board name UNL-8237A:
    • 9-in-1 High Standard Card: The Lion King, EarthWorm Jim 2, Aladdin, Boogerman, Somari, Turtles Tournament Fighters, Mortal Kombat 3, Captain Tsubasa 2, Taito Basketball (king001)

Registers

NROM Override/Mode Register ($5000)

Mask: $F007

D~7654 3210
  ---------
  MCS. BBBb
  |||  ++++- Select 16 KiB PRG-ROM bank at CPU
  |||        $8000-$BFFF and $C000-$FFFF
  ||+------- 0: Do not replace bit 0 (NROM-128)
  ||         1: Replace bit 0 with CPU A14 (NROM-256)
  |+-------- 0: Do not replace PRG A17 and CHR A17 from the MMC3 (256 KiB outer bank)
  |          1: Replace PRG A17 and CHR A17 with $5001 bits 4 and 5, respectively (128 KiB outer bank)
  +--------- 0: Use PRG bank from MMC3; ignore bits 0-3/5
             1: Ignore PRG bank from MMC3; apply bits 0-3/5

Power-up value: $00

Outer Bank Register ($5001) - Submapper 0 (UNL-8237)

Mask: $F007

D~7654 3210
  ---------
  ..cp CCPP
    || ||++- Select 256 KiB Outer PRG-ROM bank (PRG A18/A19)
    || ++--- Select 256 KiB Outer CHR-ROM bank (CHR A18/A19)
    |+------ Select 128 KiB Outer PRG-ROM bank (PRG A17) if $5000 bit 6=1
    +------- Select 128 KiB Outer CHR-ROM bank (CHR A17) if $5000 bit 6=1

Power-up value: $xF

Outer Bank Register ($5001) - Submapper 1 (UNL-8237A)

Mask: $F007

D~7654 3210
  ---------
  ..cp P.PP
       CCC.
    || +|++- Select 256 KiB Outer PRG-ROM bank (PRG A18-A20)
    || +++-- Select 256 KiB Outer CHR-ROM bank (CHR A18-A20)
    |+------ Select 128 KiB Outer PRG-ROM bank (PRG A17) if $5000 bit 6=1
    +------- Select 128 KiB Outer CHR-ROM bank (CHR A17) if $5000 bit 6=1

Power-up value: $xF

Scrambling Pattern Register ($5007)

Mask: $F007

D~7654 3210
  ---------
  .... .MMM
        +++- Select MMC3 register address and index scrambling mode (0-7)

Power-up value: $00

MMC3-compatible registers ($8000-$FFFF, write-only)

The scrambled addresses correspond to the real address as follows:

$5007	-------------address written-----------
value	8000 8001 A000 A001 C000 C001 E000 E001
-----------------------------------------------	
0	8000 8001 A000 A001 C000 C001 E000 E001
1	A001 A000 8000 C000 8001 C001 E000 E001
2	8000 8001 A000 A001 C000 C001 E000 E001
3	C001 8000 8001 A000 A001 E001 E000 C000
4	A001 8001 8000 C000 A000 C001 E000 E001
5	8000 8001 A000 A001 C000 C001 E000 E001
6	8000 8001 A000 A001 C000 C001 E000 E001
7	8000 8001 A000 A001 C000 C001 E000 E001

The data that is written to the low three bits of register $8000 corresponds to the real data as follows:

$5007	-value written-
value	0 1 2 3 4 5 6 7
-----------------------
0	0 1 2 3 4 5 6 7
1	0 2 6 1 7 3 4 5
2	0 5 4 1 7 2 6 3
3	0 6 3 7 5 2 4 1
4	0 2 5 3 6 1 7 4
5	0 1 2 3 4 5 6 7
6	0 1 2 3 4 5 6 7
7	0 1 2 3 4 5 6 7 

Bits 6 and 7 of register $8000 are kept as they are. The data written to $8001 and $A000-$FFFF is never scrambled. After unscrambling the address and the data written, these registers function the same as the MMC3's

Note

  • Several single-game cartridges that use this mapper are actually 2-in-1 multicarts that have PRG A18 forced to 0 or 1 via solder pad. A dump from these cartridges without changing the solder pad will therefore contain 256 KiB of PRG-ROM but 512 KiB of CHR-ROM, since CHR A18 is not forced in a similar fashion, with one 256 KiB half containing data from the other inaccessible game.
  • The Outer Bank Register is reset to its power-up value if a Reset has been detected via an interruption of the M2 signal. This makes it difficult to dump these cartridges using a Kazzo device.
  • Boogerman (INES Mapper 114 Submapper 1) was originally assigned by CaH4e3 to Mapper 215; he later reassigned UNL-8237 to Mapper 215 instead.
  • Some multicarts may have alternative outer bank registers in the $6xxx range; since they all contain compatibility code that writes to the $5xxx range, they are assigned to Mapper 215 as well.

Similar Mappers