INES Mapper 040: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (add cat:IRQ)
(Add submapper 1 for NTDEC 2752 PCB)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{DEFAULTSORT:040}}[[Category:iNES Mappers]][[Category:Mappers with IRQs]]
{{DEFAULTSORT:040}}[[Category:iNES Mappers]][[Category:Mappers with fixed-timing cycle IRQs]][[Category:FDS conversion mappers]]
[[iNES Mapper 040]] describes yet another pirate port of SMB2j from the [[FDS]] to a cartridge. It is very similar to [[iNES Mapper 050|mapper 50]].
[[iNES Mapper 040]] denotes the NTDEC '''2722''' PCB and imitations, used in several cartridge conversions of the Japanese version of ''Super Mario Bros. 2'':
* ''Super Mario Bros. 2'' from Whirlwind Manu (cartridge code LF36)
* ''Super Mario Bros. II+'' from Hey Sung
* ''1990 Super Mario Bros. 4''
Several other SMB2J conversions running on other mappers reuse the cartridge label from Whirlwind Manu and therefore misleadingly also show an LF36 cartridge code. Hey Sung's version can be distinguished from Whirlwind Manu's by the fact that Whirlwind Manu's does not allow selecting the one of eight starting worlds by holding the D-Pad while pressing START.
 
'''Submapper 1''' denotes the NTDEC '''2752''' PCB, which is a multicart PCB that adds an outer bank register.


This description was produced from the source code of FCEUX and Nestopia.
This description was produced from the source code of FCEUX and Nestopia.
Line 10: Line 16:
     $8000:  Disable and acknowledge IRQ
     $8000:  Disable and acknowledge IRQ
     $A000:  Enable IRQ
     $A000:  Enable IRQ
    $C000:  Outer bank register (Submapper 1 only)
     $E000:  8 KiB bank mapped at $C000
     $E000:  8 KiB bank mapped at $C000
    
    
Line 20: Line 27:
       +-------+-------+-------+-------+-------+
       +-------+-------+-------+-------+-------+


Like mapper 50, this hardware produces an interrupt 4096 M2 cycles after the IRQ is enabled.
Like [[INES Mapper 050]], this hardware produces an interrupt 4096 M2 cycles after the IRQ is enabled.
Both FCEUX and Nestopia's source disable the interrupt when it fires.


It seems most likely the corresponding hardware is a CD4020, functioning as a 13-bit counter, and that if the software didn't acknowledge the interrupt for another 4096 cycles it would self-acknowledge.
The corresponding hardware is a [//forums.nesdev.org/viewtopic.php?p=217200#p217200 CD4020 functioning as a 13-bit counter], and if the software doesn't acknowledge the interrupt for another 4096 cycles it will self-acknowledge.


==Outer bank register ($C000-$DFFF)==
A~[110. .... .ppN PCCM]
              ||| |||+- 0: Vertical mirroring
              ||| |||  1: Horizontal mirroring
              ||| |++-- CHR A14..A13
              ||| +- PRG A16 and mode
              |||    0: SMB2J mode
              |||    1: Regular NROM mode
              ||+--- NROM mode if P=1
              ||    0: NROM-128
              ||    1: NROM-256
              ++---- PRG A15..A14 if P=1
== See also ==
== See also ==
* [http://nesdev.org/40.txt SMB2j aka "The Lost Levels" Mapper #40 Info] by The Mad Dumper.
* [http://nesdev.org/40.txt SMB2j aka "The Lost Levels" Mapper #40 Info] by The Mad Dumper.

Latest revision as of 21:00, 16 August 2022

iNES Mapper 040 denotes the NTDEC 2722 PCB and imitations, used in several cartridge conversions of the Japanese version of Super Mario Bros. 2:

  • Super Mario Bros. 2 from Whirlwind Manu (cartridge code LF36)
  • Super Mario Bros. II+ from Hey Sung
  • 1990 Super Mario Bros. 4

Several other SMB2J conversions running on other mappers reuse the cartridge label from Whirlwind Manu and therefore misleadingly also show an LF36 cartridge code. Hey Sung's version can be distinguished from Whirlwind Manu's by the fact that Whirlwind Manu's does not allow selecting the one of eight starting worlds by holding the D-Pad while pressing START.

Submapper 1 denotes the NTDEC 2752 PCB, which is a multicart PCB that adds an outer bank register.

This description was produced from the source code of FCEUX and Nestopia.

 Registers:
 ---------------------------
 Range,Mask:   $8000-FFFF, $E000

   $8000:  Disable and acknowledge IRQ
   $A000:  Enable IRQ
   $C000:  Outer bank register (Submapper 1 only)
   $E000:  8 KiB bank mapped at $C000
 
 PRG Setup:
 ---------------------------
 
       $6000   $8000   $A000   $C000   $E000  
     +-------+-------+-------+-------+-------+
     | { 6 } | { 4 } | { 5 } | $E000 | { 7 } |
     +-------+-------+-------+-------+-------+

Like INES Mapper 050, this hardware produces an interrupt 4096 M2 cycles after the IRQ is enabled.

The corresponding hardware is a CD4020 functioning as a 13-bit counter, and if the software doesn't acknowledge the interrupt for another 4096 cycles it will self-acknowledge.

Outer bank register ($C000-$DFFF)

A~[110. .... .ppN PCCM]
              ||| |||+- 0: Vertical mirroring
              ||| |||   1: Horizontal mirroring
              ||| |++-- CHR A14..A13
              ||| +- PRG A16 and mode
              |||    0: SMB2J mode
              |||    1: Regular NROM mode
              ||+--- NROM mode if P=1
              ||     0: NROM-128
              ||     1: NROM-256
              ++---- PRG A15..A14 if P=1

See also