INES Mapper 018: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Has nonstandard sound hardware? Goes in category.)
(add links for the ADPCM sound IC here too; defaultsort; disCh)
Line 1: Line 1:
[[Category:iNES Mappers|018]][[Category:in NesCartDB|018]][[Category:Expansion audio]]
{{DEFAULTSORT:018}}[[Category:iNES Mappers]][[Category:in NesCartDB]][[Category:Expansion audio]]
'''iNES Mapper 018''' represents the Jaleco SS88006 mapper used for ''Magic John'' (Japanese version of ''Totally Rad'') and a couple other games.
'''iNES Mapper 018''' represents the Jaleco SS88006 mapper used for ''Magic John'' (Japanese version of ''Totally Rad'') and a couple other games.


Line 61: Line 61:


== See also ==
== See also ==
*[http://www.romhacking.net/documents/362/ NES mapper list] by Dish
*[http://www.romhacking.net/documents/362/ NES mapper list] by Disch
*[http://nesdev.org/mappers.zip Comprehensive NES Mapper Document] by \Firebug\, information about mapper's initial state is inaccurate.
*[http://nesdev.org/mappers.zip Comprehensive NES Mapper Document] by \Firebug\, information about mapper's initial state is inaccurate.
*Sound IC D7756 [http://www.cpu-world.com/Support/7/77.html description] and [http://bootgod.dyndns.org:7777/downloads/UPD7755_UPD7756_UPD7757_UPD7758.pdf datasheet]
*Sound IC BBS topics [http://forums.nesdev.org/viewtopic.php?t=762 762] and [http://forums.nesdev.org/viewtopic.php?p=32572#p32572 4030]

Revision as of 08:41, 22 April 2015

iNES Mapper 018 represents the Jaleco SS88006 mapper used for Magic John (Japanese version of Totally Rad) and a couple other games.

This mapper appears to be connected only to A12-A14, A0-A1, and D0-D3, so the PRG bank and CHR bank numbers are split over two adjacent mapper numbers. Bits 0-3 are in the lower address of a pair (e.g. $xxx0 or $xxx2), and bits 4-7 are in the next higher address.

$8000-1: PRG $8000
3210 3210
|||| ||||
++++-++++- Select 8192 byte PRG ROM bank in $8000-$9FFF

$8002-3: PRG $A000
$9000-1: PRG $C000
(PRG $E000 is fixed to the last bank)

$A000-1: CHR $0000
3210 3210
|||| ||||
++++-++++- Select 1024 byte CHR ROM bank in $0000-$03FF

$A002-3: CHR $0400
$B000-1: CHR $0800
$B002-3: CHR $0C00
$C000-1: CHR $1000
$C002-3: CHR $1400
$D000-1: CHR $1800
$D002-3: CHR $1C00

The IRQ counter is a 16-bit down counter. Port $F001 controls how far the borrow propagates: If all counting bits wrap from $0 to $F, it doesn't modify the fixed bits before it but instead triggers an IRQ. Writes to $F000 or $F001 acknowledge the IRQ.

7654 3210  $F001: IRQ control
     ||||
     |||+- Enable (0: pause; 1: count)
     +++-- 0: Count down in bits 15-0 and hold no bits constant
           1: Count down in bits 11-0 and hold bits 15-12 constant
           2-3: Count down in bits 7-0 and hold bits 15-8 constant
           4-7: Count down in bits 3-0 and hold bits 15-4 constant

Alternate interpretation:

7654 3210  $F001: IRQ control
     ||||
     |||+- Enable (0: pause; 1: count)
     ||+-- Hold bits 15-12 constant
     |+--- Hold bits 15-8 constant
     +---- Hold bits 15-4 constant

This counter uses a reload value. All bits are reloaded, even the ones held constant.

  • $E000: Set bits 3-0 of counter
  • $E001: Set bits 7-4 of counter
  • $E002: Set bits 11-8 of counter
  • $E003: Set bits 15-12 of counter

Some games also have a µPD7756C ADPCM sound IC. If so,

  • $F003: Start playing sound specified by lower 4 bits.

See also