User:Zzo38/Mapper D: Difference between revisions
No edit summary |
No edit summary |
||
Line 17: | Line 17: | ||
If you want to write a program which works both with MMC5 and with the mapper described here, there are a few things to do. | If you want to write a program which works both with MMC5 and with the mapper described here, there are a few things to do. | ||
One is to initialize the MMC5 registers. All initializations must be in the last 8K bank at $E000-$FFFF. The assignments listed below should work: | One is to initialize the MMC5 registers. All initializations must be in the last 8K bank at $E000-$FFFF. The assignments listed below should work (I hope): | ||
* $5100: $01 | * $5100: $01 | ||
* $5101: $00 | * $5101: $00 |
Revision as of 17:20, 11 August 2013
This mapper is designed to be possible to write a game that can run on both this mapper and the MMC5, even though most of the features of MMC5 aren't needed.
Registers
There are two (write-only) registers, and the address of the registers is as follows:
[..01 .... .... .?..]
Where the question mark selects the register.
Register 0 is the RAM bank register. All the bits are used to select a 8K RAM bank at $6000-$7FFF. (Assume 64K RAM if the NES 2.0 header isn't present.)
Register 1 is the ROM bank register. All bits except for the highest and lowest bit select a 16K ROM bank at $8000-$BFFF.
The last PRG ROM bank is fixed at $C000-$FFFF.
There will be bus conflicts if you write the register using the addresses which are in the ROM, so don't do that.
Using MMC5 as this mapper
If you want to write a program which works both with MMC5 and with the mapper described here, there are a few things to do.
One is to initialize the MMC5 registers. All initializations must be in the last 8K bank at $E000-$FFFF. The assignments listed below should work (I hope):
- $5100: $01
- $5101: $00
- $5102: $01
- $5103: $02
- $5105: Set according to mirroring bit in header
- $5200: $00
- $5204: $00
Now when writing to the registers of this mapper, you must use:
- $5113 for accessing register 0
- $5115 for accessing register 1, and the high bit of the data must be set
In addition, you shouldn't write to $1000-$1FFF since that is both RAM and registers in this mapper, but is RAM only for MMC5; it mirrors the $0000-$07FF RAM internally in the console unit but due to this reason, don't try to write to there.