INES Mapper 188: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Create from enri's notes and the source code of Nestopia and FCEUX)
 
(Hedge more)
Line 9: Line 9:
* CHR bank size: Not bankswitched
* CHR bank size: Not bankswitched
* Nametable [[mirroring]]: mapper-selectable, details unknown
* Nametable [[mirroring]]: mapper-selectable, details unknown
* Subject to [[bus conflict]]s: No
* Subject to [[bus conflict]]s: Probably not? ''(The game includes and uses a bus conflict prevention table. It's unclear whether this is because the original game was going to be released on UNROM and desperately ported due to a late-breaking flaw, or it actually needs it)''


== Registers ==
== Registers ==
The mapper IC is connected to CPU A12-A15, so any register must be mapped over at least a 4096 address range, and maybe more. It's not clear why CPU A12 is connected at all; the functionality described here doesn't seem to use it.
The mapper IC is connected to CPU A12-A15, so any register must be mapped over at least a 4096 address range, and maybe more. It's not clear why CPU A12 is connected at all; the functionality described here doesn't seem to use it.


=== $6000-????: Microphone input ===
=== $6xxx-????: Microphone input ===
The microphone for this game is permanently tethered to the cartridge, and contains two buttons labeled "A" (closer to the microphone itself) and "B" (closer to the cord).
The microphone for this game is permanently tethered to the cartridge, and contains two buttons labeled "A" (closer to the microphone itself) and "B" (closer to the cord).


Line 29: Line 29:
  +--------- definitely open bus
  +--------- definitely open bus


=== $C000-????: Banking control ===
=== $Cxxx-????: Banking control ===
  7  bit  0
  7  bit  0
  .XXR BBBB
  .XXR BBBB
Line 40: Line 40:
The bank from $C000-$FFFF is fixed to the last bank of the internal ROM.
The bank from $C000-$FFFF is fixed to the last bank of the internal ROM.


Both Nestopia and FCEUX implement logic that selects the last bank of the internal ROM if the software tries to select the first bank of the external ROM when it isn't present. Enri's schematic of the expansion cartridge does show two grounds connected, perhaps allowing the mapper to detect insertion; however his schematic does not show any extra connections leaving the base cartridge going back to the mapper IC, so it's unclear what hardware causes this behavior.
Both Nestopia and FCEUX implement logic that selects the last bank of the internal ROM if the software tries to select the first bank of the external ROM when it isn't present. Enri's schematic of the expansion cartridge does show two grounds connected, perhaps allowing the mapper to detect insertion; however his schematic does not show any extra connections leaving the base cartridge going back to the mapper IC, so it's unclear what hardware causes this behavior. It's possible that the game checks for a signature in the external ROM, but this signature happens to be in the first bank of the internal ROM too, and the emulators don't implement open bus.


Enri believes (based on pin order and the gap in this register), but was unable to test, that the mapper provides PRG A17.
Enri believes (based on pin order and the gap in this register), but was unable to test, that the mapper provides PRG A17.

Revision as of 23:02, 17 February 2014

iNES Mapper 188 describes the board used for Bandai's Karaoke Studio. This game, like Nantettatte!! Baseball additionally supports an external ROM that allows augmenting the original game.

Overview

  • PRG ROM: Up to 256 KiB + Up to 256 KiB expansion cartridge
  • PRG ROM bank size: 16 KiB
  • PRG RAM: None
  • CHR capacity: 8 KiB RAM
  • CHR bank size: Not bankswitched
  • Nametable mirroring: mapper-selectable, details unknown
  • Subject to bus conflicts: Probably not? (The game includes and uses a bus conflict prevention table. It's unclear whether this is because the original game was going to be released on UNROM and desperately ported due to a late-breaking flaw, or it actually needs it)

Registers

The mapper IC is connected to CPU A12-A15, so any register must be mapped over at least a 4096 address range, and maybe more. It's not clear why CPU A12 is connected at all; the functionality described here doesn't seem to use it.

$6xxx-????: Microphone input

The microphone for this game is permanently tethered to the cartridge, and contains two buttons labeled "A" (closer to the microphone itself) and "B" (closer to the cord).

Reads from this address provide the status of the microphone and its buttons:

7  bit  0
xXXX XMBA
---- ----
|||| ||||
|||| |||+- 0: A button is pressed
|||| ||+-- 0: B button is pressed
|||| |+--- 1-bit ADC microphone input
|+++-+---- possibly connected, probably open bus.
+--------- definitely open bus

$Cxxx-????: Banking control

7  bit  0
.XXR BBBB
---- ----
 ||| ||||
 ||| ++++- Select ROM bank mapped from $8000-$BFFF.
 ||+------ 0: Select external ROM, 1: Select internal ROM
 ++------- Unknown

The bank from $C000-$FFFF is fixed to the last bank of the internal ROM.

Both Nestopia and FCEUX implement logic that selects the last bank of the internal ROM if the software tries to select the first bank of the external ROM when it isn't present. Enri's schematic of the expansion cartridge does show two grounds connected, perhaps allowing the mapper to detect insertion; however his schematic does not show any extra connections leaving the base cartridge going back to the mapper IC, so it's unclear what hardware causes this behavior. It's possible that the game checks for a signature in the external ROM, but this signature happens to be in the first bank of the internal ROM too, and the emulators don't implement open bus.

Enri believes (based on pin order and the gap in this register), but was unable to test, that the mapper provides PRG A17.

Unknown register

The IC provides mirroring control (it is connected to PPU A10, PPU A11, and CIRAM A10). It's not known how to do so. Enri guesses it might be in the register at $C000. Neither Nestopia nor FCEUX implement anything.

Warning

The 256 KiB iNES dumps under this mapper are actually the 128KiB internal ROM followed by a 128KiB expansion ROM.

References