INES Mapper 176: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (mapper 176 cleanup)
(mapper 176 add $a000 and $a001)
Line 41: Line 41:


With this mapper, there may be no VROM present.
With this mapper, there may be no VROM present.
There are registers at $A000 and $A001. I haven't been able to verify them yet, but here's how VirtuaNesEX has them:
  $A000:  [.... ..MM] Mirroring
    0 = Vert
    1 = Horz
    2 = 1ScA
    3 = 1ScB
  $A001:  [.... ..EE] Enable Write SRAM
    1,2,3 = Enabled
VirtuaNesEX has the write enable fixed to always enabled. This documentation is just provided as a clue in case that works out not to work well.
Additionally, VirtuaNesEX handles register writes to $5000 and $5013 but doesn't do anything with them.


[[Category:iNES Mappers]]
[[Category:iNES Mappers]]

Revision as of 19:53, 27 May 2012

Mapper 176 is used by some chinese games, of the WXN type. At one point, fceux by way of fceumm rewired mapper 176 to be handled by the BMCFK23C board but it is unclear what that means. Hacked builds of VirtuaNesEX and nestopia acquired support for this mapper, at least so far as to emulate "水浒神兽", whatever that is. Fceux supposedly acquired support for it in r2519 by reimplementing the mapper and getting BMCFK23C out of the picture.

This documentation is based on VirtuaNesEX's hack's and fceux's sources are somewhat non-representative of logical hardware. This documentation was reasoned out from those sources into a slightly more logical explanation; working sources should be considered authoritative.

The initial PRG state is as follows:

     $8000   $A000   $C000   $E000  
   +-------+-------+-------+-------+
   |   0   |   1   |   62  |   63  |
   +-------+-------+-------+-------+

This is the case even for 1024KB roms where you might expect 127 and 128 instead. Perhaps the registers are only 6 bits. This distinction is significant.

By writing to $5FF1, you can effect the following:

     $8000   $A000   $C000   $E000  
   +-------+-------+-------+-------+
   |            <$5FF1>            |
   +-------+-------+-------+-------+

By writing $24 to $5010, you can set the 'SBW' mode bit. Once that bit is set, other registers become available for mapping control. There seems to be no way to clear the bit.

By writing to $5001 with SBW set, you can effect the following:

     $8000   $A000   $C000   $E000  
   +-------+-------+-------+-------+
   |             $5001             |
   +-------+-------+-------+-------+

By writing to $5011 with SBW set, you can effect the following:

     $8000   $A000   $C000   $E000  
   +-------+-------+-------+-------+
   |            <$5011>            |
   +-------+-------+-------+-------+

There is a CHR register at $5FF2 with the following format:

 $5FF2:  [CCCC CCCC] (exact number of bits unknown)
   C = Select 8k CHR page @ $0000-1FFF

With this mapper, there may be no VROM present.

There are registers at $A000 and $A001. I haven't been able to verify them yet, but here's how VirtuaNesEX has them:

 $A000:  [.... ..MM] Mirroring
   0 = Vert
   1 = Horz
   2 = 1ScA
   3 = 1ScB
 $A001:  [.... ..EE] Enable Write SRAM
   1,2,3 = Enabled

VirtuaNesEX has the write enable fixed to always enabled. This documentation is just provided as a clue in case that works out not to work well.

Additionally, VirtuaNesEX handles register writes to $5000 and $5013 but doesn't do anything with them.