INES Mapper 071: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
mNo edit summary
m (Fix submapper link so it points to the Fire Hawk submapper.)
 
(16 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{DEFAULTSORT:071}}[[Category:iNES Mappers]][[Category:NES 2.0 mappers with submappers]]
'''iNES Mapper 071''' is assigned to games developed by Codemasters and published by Camerica.
'''iNES Mapper 071''' is assigned to games developed by Codemasters and published by Camerica.
It's largely a clone of [[UNROM]], and Camerica games were initially emulated under [[iNES Mapper 002]] before 071 was assigned.
It's largely a clone of [[UNROM]], and Camerica games were initially emulated under [[iNES Mapper 002]] before 071 was assigned.
Example Games:
* ''MiG 29 - Soviet Fighter''
* ''Fire Hawk''
* ''The Fantastic Adventures of Dizzy''
* ''Bee 52''


== Overview ==
== Overview ==
* PRG ROM size: 128 or 256 KB
* PRG ROM size: 128 or 256 KiB
* PRG ROM bank size: 16 KB inner
* PRG ROM bank size: 16 KiB inner; ( 64 KiB outer in [[iNES Mapper 232]] )
* PRG RAM: None
* PRG RAM: None
* CHR capacity: 8 KB RAM [[Category:Mappers with CHR RAM]]
* CHR capacity: 8 KiB RAM [[Category:Mappers with CHR RAM|071]]
* CHR bank size: Not bankswitched
* CHR bank size: Not bankswitched
* Nametable [[mirroring]]: Hardwired H or V (most) or mapper controlled 1-screen (Fire Hawk)
* Nametable [[mirroring]]: Hardwired H or V (most) or mapper controlled 1-screen (Fire Hawk)
* Subject to [[bus conflict]]s: ''???''
* Subject to [[bus conflict]]s: No
 
== Banks ==
== Banks ==
$8000-$BFFF: Switchable
* $8000-$BFFF: Switchable
$C000-$FFFF: Fixed to last bank
* $C000-$FFFF: Fixed to last bank
$8000-$FFFF: In the "Quattro" games, A16 and A17 are controlled by a separate register, allowing 64 KiB super-banks.
* $8000-$FFFF: In the "Quattro" games, A16 and A17 are controlled by a separate register, allowing 64 KiB super-banks.
 
== Solder pad config ==
''To do''


== Registers ==
== Registers ==
=== Outer bank select ($8000-$BFFF) ===
=== Outer bank select ($8000-$BFFF) (Only on [[iNES Mapper 232]]) ===
This register is present only on the Quattro carts, which use the BF9096 IC, and on the CCU in the Aladdin adapter (per [http://kevtris.org/mappers/camerica/aladdin.html KH])
This register is present only on the Quattro carts, which use the [[Camerica BF909x pinout|BF9096 IC]], and on the CCU in the Aladdin adapter (per [http://kevtris.org/mappers/camerica/aladdin.html KH])
  7  bit  0
  7  bit  0
  ---- ----
  ---- ----
  xxBB xxxx
  xxxB Bxxx
  ||
    | |
  ++----- Select 64 KB PRG ROM bank for CPU $8000-$FFFF
    +-+--- Select 64 KiB PRG ROM bank for CPU $8000-$FFFF


=== Mirroring ($8000-$9FFF) ===
=== Mirroring ($8000-$9FFF) ===
This register is present only on ''Fire Hawk'', which uses the BF9097 IC.
This register is present only on ''Fire Hawk'', which uses the [[Camerica BF909x pinout|BF9097 IC]]. [[NES 2.0 submappers#071:_1_Fire_Hawk|A submapper]] has been allocated for this difference.
 
''Fire Hawk'' only writes this register at the address $9000, and other games like ''Micro Machines'' and ''Ultimate Stuntman'' write $00 to $8000 on startup. For compatibility without using a submapper, FCEUX begins all games with fixed mirroring, and applies single screen mirroring only once $9000-9FFF is written, ignoring writes to $8000-8FFF.
 
  7  bit  0
  7  bit  0
  ---- ----
  ---- ----
  xxxM xxxx
  xxxM xxxx
     |
     |
     +----- Select 1 KB CIRAM bank for PPU $2000-$2FFF
     +----- Select 1 KiB CIRAM bank for PPU $2000-$2FFF


=== Bank select ($C000-$FFFF) ===
=== Bank select ($C000-$FFFF) ===
This register is present on all games: BF9093 (most common), BF9096, BF9097, and CCU.
This register is present on all games: [[Camerica BF909x pinout|BF9093]] (most common), BF9096, BF9097, and CCU. The number of bits available vary: 4 for the BF9093, 3 for the BF9097, and 2 for the BF9096.
On BF9096, only the low two bits are implemented.
On BF9097, only the low three bits are implemented.
  7  bit  0
  7  bit  0
  ---- ----
  ---- ----
  xxxx PPPP
  xxxx PPPP
       ||||
       ||||
       ++++- Select 16 KB PRG ROM bank for CPU $8000-$BFFF
       ++++- Select 16 KiB PRG ROM bank for CPU $8000-$BFFF


=== CIC stun control ($E000-$FFFF) ===
=== CIC stun control ($E000-$FFFF) ===
This register is present on all games.
This register is present on all games.
A0 controls a latch going to the CIC stun circuit.
A0 controls a latch going to the [http://kevtris.org/mappers/lockout/camerica.html CIC stun circuit].
 
== Notes ==
 
This mapper covers several Camerica/Codemasters boards.
Most boards have fixed vertical or horizontal mirroring, but the ''Fire Hawk'' board differs in that it has mapper controlled 1-screen mirroring.
These variants can be distinguished by [[NES 2.0 submappers]].
 
Some of these games are like ''Battletoads'' in that they're very [[Tricky-to-emulate games|picky]] about timing and use some seldom used aspects of the NES, despite the mapper itself being as simple as the discrete logic mappers.
 
In particular:
* ''Bee 52'' uses the sprite overflow flag ($2002.5)
* ''MiG 29'' uses DMC IRQs, and is VERY PICKY about their timing.  If your DMC IRQ timing isn't spot on (or at least very close), this game will glitch a lot.
This mapper also involves a custom lockout defeat circuit which is mostly unimportant for emulation purposes.
Details will not be mentioned here, but are outlined in Kevtris' Camerica Mappers documentation.
''Fire Hawk'' does some strange timing code when changing the mirroring mode.
It is unknown whether or not any special timing is required.


== Pinout ==
== See also ==
<pre>
                    BF9093
                    BF9096  BF9097
            ,-v-.
        +5V -|  |- CPU A14  CPU A14
NES /ROMSEL -|  |- A13      A13
    PRG /CE -|  |- PRG A15  PRG A15
    PRG A14 -|  |- PRG A16  CIRAM A10
        M2 -|  |- GND      PRG A16
        A0 -|  |- R/W      GND
        D0 -|  |- PRG A17  R/W
        D1 -|  |- CIC      CIC
        D2 -|  |- D4      D4
        GND -|  |- D3      D3
            `---'
</pre>
== References ==
*[http://kevtris.org/mappers/camerica/index.html Camerica Mappers by Kevin Horton]
*[http://kevtris.org/mappers/camerica/index.html Camerica Mappers by Kevin Horton]
*[http://www.romhacking.net/documents/362/ NES Mapper list] by Disch.
*[http://nesdev.org/mappers.zip Comprehensive NES Mapper Document] by \Firebug\. Information on mapper's initial state is innacurate.

Latest revision as of 08:03, 8 April 2024

iNES Mapper 071 is assigned to games developed by Codemasters and published by Camerica. It's largely a clone of UNROM, and Camerica games were initially emulated under iNES Mapper 002 before 071 was assigned.

Example Games:

  • MiG 29 - Soviet Fighter
  • Fire Hawk
  • The Fantastic Adventures of Dizzy
  • Bee 52

Overview

  • PRG ROM size: 128 or 256 KiB
  • PRG ROM bank size: 16 KiB inner; ( 64 KiB outer in iNES Mapper 232 )
  • PRG RAM: None
  • CHR capacity: 8 KiB RAM
  • CHR bank size: Not bankswitched
  • Nametable mirroring: Hardwired H or V (most) or mapper controlled 1-screen (Fire Hawk)
  • Subject to bus conflicts: No

Banks

  • $8000-$BFFF: Switchable
  • $C000-$FFFF: Fixed to last bank
  • $8000-$FFFF: In the "Quattro" games, A16 and A17 are controlled by a separate register, allowing 64 KiB super-banks.

Registers

Outer bank select ($8000-$BFFF) (Only on iNES Mapper 232)

This register is present only on the Quattro carts, which use the BF9096 IC, and on the CCU in the Aladdin adapter (per KH)

7  bit  0
---- ----
xxxB Bxxx
   | |
   +-+--- Select 64 KiB PRG ROM bank for CPU $8000-$FFFF

Mirroring ($8000-$9FFF)

This register is present only on Fire Hawk, which uses the BF9097 IC. A submapper has been allocated for this difference.

Fire Hawk only writes this register at the address $9000, and other games like Micro Machines and Ultimate Stuntman write $00 to $8000 on startup. For compatibility without using a submapper, FCEUX begins all games with fixed mirroring, and applies single screen mirroring only once $9000-9FFF is written, ignoring writes to $8000-8FFF.

7  bit  0
---- ----
xxxM xxxx
   |
   +----- Select 1 KiB CIRAM bank for PPU $2000-$2FFF

Bank select ($C000-$FFFF)

This register is present on all games: BF9093 (most common), BF9096, BF9097, and CCU. The number of bits available vary: 4 for the BF9093, 3 for the BF9097, and 2 for the BF9096.

7  bit  0
---- ----
xxxx PPPP
     ||||
     ++++- Select 16 KiB PRG ROM bank for CPU $8000-$BFFF

CIC stun control ($E000-$FFFF)

This register is present on all games. A0 controls a latch going to the CIC stun circuit.

Notes

This mapper covers several Camerica/Codemasters boards. Most boards have fixed vertical or horizontal mirroring, but the Fire Hawk board differs in that it has mapper controlled 1-screen mirroring. These variants can be distinguished by NES 2.0 submappers.

Some of these games are like Battletoads in that they're very picky about timing and use some seldom used aspects of the NES, despite the mapper itself being as simple as the discrete logic mappers.

In particular:

  • Bee 52 uses the sprite overflow flag ($2002.5)
  • MiG 29 uses DMC IRQs, and is VERY PICKY about their timing. If your DMC IRQ timing isn't spot on (or at least very close), this game will glitch a lot.

This mapper also involves a custom lockout defeat circuit which is mostly unimportant for emulation purposes. Details will not be mentioned here, but are outlined in Kevtris' Camerica Mappers documentation.

Fire Hawk does some strange timing code when changing the mirroring mode. It is unknown whether or not any special timing is required.

See also