NES 2.0 Mapper 268: Difference between revisions
NewRisingSun (talk | contribs) No edit summary |
NewRisingSun (talk | contribs) (Describe solder pad, add game list) |
||
Line 1: | Line 1: | ||
[[Category:ASIC mappers]][[Category:Mappers with scanline IRQs]][[Category:MMC3-like mappers]] | [[Category:ASIC mappers]][[Category:Mappers with scanline IRQs]][[Category:MMC3-like mappers]] | ||
NES 2.0 Mapper 268 | '''NES 2.0 Mapper 268''' denotes cartridges using the '''SMD133''' ASIC, an [[MMC3]] clone that can address up to 32 MiB of PRG-ROM, 256 KiB of CHR-ROM or -RAM, and 8 KiB of WRAM. The ASIC provides four outer bank registers. Their address is selected by a solder pad labelled "5/6K", whose setting is denoted by the NES 2.0 Submapper: | ||
{| class="wikitable sortable" | |||
! Setting !! Address Range !! NES 2.0 Submapper !! UNIF MAPR | |||
|- | |||
== Registers == | |right||$6000-$7FFF||0||'''COOLBOY''' (without prefix) | ||
|- | |||
|left||$5000-$5FFF||1||'''MINDKIDS''' (without prefix) | |||
|- | |||
=== $ | |} | ||
Since there are no higher-order CHR address lines, multicarts using this ASIC typically come with 256 KiB of CHR-RAM that are filled with pattern data copied from PRG-ROM by the multicart menu after a game has been selected. | |||
==Registers== | |||
In the $6000-$7FFF setting, the ASIC's registers registers overlay, but are functionally independent from, any PRG-RAM present. | |||
===$xxx0=== | |||
7 bit 0 | 7 bit 0 | ||
---- ---- | ---- ---- | ||
Line 19: | Line 22: | ||
|+--------- PRG mask (PRG A17 from 0: MMC3; 1: offset) | |+--------- PRG mask (PRG A17 from 0: MMC3; 1: offset) | ||
+---------- CHR mask (CHR A17 from 0: MMC3; 1: alternate) | +---------- CHR mask (CHR A17 from 0: MMC3; 1: alternate) | ||
===$xxx1=== | |||
=== $ | |||
7 bit 0 | 7 bit 0 | ||
---- ---- | ---- ---- | ||
Line 31: | Line 32: | ||
|+--------- PRG mask (PRG A19 from 0: offset; 1: MMC3) | |+--------- PRG mask (PRG A19 from 0: offset; 1: MMC3) | ||
+---------- PRG mask (PRG A18 from 0: MMC3; 1: offset) | +---------- PRG mask (PRG A18 from 0: MMC3; 1: offset) | ||
===$xxx2=== | |||
=== $ | |||
7 bit 0 | 7 bit 0 | ||
---- ---- | ---- ---- | ||
Line 40: | Line 39: | ||
++++-- CHR offset for GNROM mode (CHR A16, A15, A14, A13) | ++++-- CHR offset for GNROM mode (CHR A16, A15, A14, A13) | ||
=== $ | ===$xxx3=== | ||
7 bit 0 | 7 bit 0 | ||
Line 54: | Line 53: | ||
+---------- Lockout (prevent further writes to these four registers, only works in MMC3 mode) | +---------- Lockout (prevent further writes to these four registers, only works in MMC3 mode) | ||
== Register interpretation == | ==Register interpretation== | ||
The following things are always true, regardless of mode: | The following things are always true, regardless of mode: | ||
* The CCKK bits are always connected to PRG A24..A21. | * The CCKK bits are always connected to PRG A24..A21. | ||
* The PRG and CHR mask controls (I, H, G, B, & A) always control whether PRG A20..A17 and CHR A17 are connected to the internal MMC3 registers, or the literal values in other controls (J, EEE, & D). | * The PRG and CHR mask controls (I, H, G, B, & A) always control whether PRG A20..A17 and CHR A17 are connected to the internal MMC3 registers, or the literal values in other controls (J, EEE, & D). | ||
=== Banking mode = $00 === | ===Banking mode = $00=== | ||
“Normal” oversize MMC3 mode. | “Normal” oversize MMC3 mode. | ||
Line 68: | Line 67: | ||
Lockout works in this mode. | Lockout works in this mode. | ||
=== Banking mode = $10 === | ===Banking mode = $10=== | ||
“Normal” GNROM mode. | “Normal” GNROM mode. | ||
Line 83: | Line 82: | ||
Lockout DOES NOT work in this mode. | Lockout DOES NOT work in this mode. | ||
=== Banking mode = $40 === | ===Banking mode = $40=== | ||
“Weird” MMC3 mode. | “Weird” MMC3 mode. | ||
Line 92: | Line 91: | ||
Otherwise, behaves as “normal” MMC3 mode above. | Otherwise, behaves as “normal” MMC3 mode above. | ||
=== Banking mode = $50 === | ===Banking mode = $50=== | ||
“Weird” GNROM-ish mode. | “Weird” GNROM-ish mode. | ||
Line 99: | Line 98: | ||
Lockout DOES NOT work in this mode. | Lockout DOES NOT work in this mode. | ||
=WRAM usage= | =WRAM usage= | ||
MMC3-mode operation with WRAM | MMC3-mode operation with WRAM in the $6000-$7FFF (submapper 0) setting involves setting up the extra registers with the MMC3's WRAM disabled, setting the Lockout bit, then enabling WRAM again: | ||
LDA #$00 | LDA #$00 | ||
STA $A001 ; Disable WRAM | STA $A001 ; Disable WRAM | ||
Line 107: | Line 106: | ||
STA $6003 ; Enable Lockout | STA $6003 ; Enable Lockout | ||
STA $A001 ; Enable WRAM | STA $A001 ; Enable WRAM | ||
Because Lockout does not work in GNROM mode, | Because Lockout does not work in GNROM mode, it is impossible to have GNROM game use WRAM in the $6000-$7FFF (submapper 0) setting, as any WRAM write would inadvertently change the outer bank registers. The one known Chinese RPG (楚留香新传) running in GNROM mode with WRAM uses the $5000-$5FFF (submapper 1) setting. | ||
=Game List= | |||
Multicarts, mostly using the "Coolboy" or "Mindkids" circuit board: | |||
* ''218-in-1 Real Game'' | |||
* ''MegaMan 8-in-1 (PL-0006)'' | |||
* ''PocketGames 150-in-1'' | |||
* ''Super 208-in-1'' | |||
* ''Super 340-in-1'' | |||
* ''Super 360-in-1'' | |||
* ''Super 402-in-1'' | |||
* ''Super Game 143-in-1'', a.k.a. ''The Best Games of NES'' | |||
* ''深圳市仁顺科技 400-in-1 Real Game'' | |||
* ''霸王小子 500-in-1'' | |||
Chinese RPGs with more than 512 KiB of PRG-ROM: | |||
* ''大话水浒'' (Dàhuà Shuǐhǔ) | |||
* ''楚留香新传'' (Chǔliúxiāng xīn Zhuàn) | |||
* ''魔道劫'' (Módào Jié) | |||
* ''口袋妖怪: 叶绿 (vol. 1-3)'' (Kǒudài Yāoguài: Yè Lǜ), a.k.a. ''Pokémon Leaf-Green'' | |||
* ''最终幻想 1 - 黑暗篇'' (Zuìzhōng Huànxiǎng 1 - Hēi'àn Piān), a.k.a. ''Final Fantasy X, Part 1'' | |||
* ''最终幻想 2 - 光明篇'' (Zuìzhōng Huànxiǎng 2 - Guāngmíng Piān), a.k.a. ''Final Fantasy X, Part 2'', original release only | |||
* ''最终幻想 3 - 黑暗篇'' (Zuìzhōng Huànxiǎng 3 - Zhōngjié Piān), a.k.a. ''Final Fantasy X, Part 3'' | |||
* ''神奇宝贝'' (Shénqí Bǎobèi), a.k.a. ''Pokémon Diamond'' | |||
Other games that do not merely use the ASIC as a simple MMC3 clone: | |||
* ''Gravity Trooper Metal Storm'' (Retro-Bit release) | |||
A great number of Chinese cartridges use the ASIC as a simple MMC3 clone and thus are usually found set to [[INES Mapper 004]]. They can be recognized by writing $80 to $6003 in their initialization code. | |||
=Notes= | =Notes= | ||
* No cart has been discovered so far that makes use of the "weird" mode. | * No cart has been discovered so far that makes use of the "weird" mode. | ||
* Some new cartridges from MINDKIDS have /WE and /OE pins connected to mapper, which allows you to rewrite flash memory without soldering. This also allows console to write data to the cartridge. No cart has been discovered so far that makes use of this feature, but this can be used for homebrew. | * Some new cartridges from MINDKIDS have /WE and /OE pins connected to mapper, which allows you to rewrite flash memory without soldering. This also allows console to write data to the cartridge. No cart has been discovered so far that makes use of this feature, but this can be used for homebrew. | ||
Revision as of 23:02, 14 January 2020
NES 2.0 Mapper 268 denotes cartridges using the SMD133 ASIC, an MMC3 clone that can address up to 32 MiB of PRG-ROM, 256 KiB of CHR-ROM or -RAM, and 8 KiB of WRAM. The ASIC provides four outer bank registers. Their address is selected by a solder pad labelled "5/6K", whose setting is denoted by the NES 2.0 Submapper:
Setting | Address Range | NES 2.0 Submapper | UNIF MAPR |
---|---|---|---|
right | $6000-$7FFF | 0 | COOLBOY (without prefix) |
left | $5000-$5FFF | 1 | MINDKIDS (without prefix) |
Since there are no higher-order CHR address lines, multicarts using this ASIC typically come with 256 KiB of CHR-RAM that are filled with pattern data copied from PRG-ROM by the multicart menu after a game has been selected.
Registers
In the $6000-$7FFF setting, the ASIC's registers registers overlay, but are functionally independent from, any PRG-RAM present.
$xxx0
7 bit 0 ---- ---- ABCC DEEE |||| |||| |||| |+++-- PRG offset (PRG A19, A18, A17) |||| +----- Alternate CHR A17 ||++------- PRG offset (PRG A24, A23) |+--------- PRG mask (PRG A17 from 0: MMC3; 1: offset) +---------- CHR mask (CHR A17 from 0: MMC3; 1: alternate)
$xxx1
7 bit 0 ---- ---- GHIJ KKLx |||| ||| |||| ||+--- GNROM mode bank PRG size (1: 32 KiB bank, PRG A14=CPU A14; 0: 16 KiB bank, PRG A14=offset A14) |||+-++---- PRG offset (in order: PRG A20, A22, A21) ||+-------- PRG mask (PRG A20 from 0: offset; 1: MMC3) |+--------- PRG mask (PRG A19 from 0: offset; 1: MMC3) +---------- PRG mask (PRG A18 from 0: MMC3; 1: offset)
$xxx2
7 bit 0 ---- ---- xxxx MMMM |||| ++++-- CHR offset for GNROM mode (CHR A16, A15, A14, A13)
$xxx3
7 bit 0 ---- ---- NPxP QQRx || | ||| || | +++--- PRG offset for GNROM mode (PRG A16, A15, A14) || +------- 1: GNROM mode; 0: MMC3 mode || | (1: PRG A16...13 from QQ, L, R, CPU A14, A13 + CHR A16...10 from MMMM, PPU A12...10; || | 0: PRG A16...13 from MMC3 + CHR A16...A10 from MMC3 ) |+-+------- Banking mode |+--------- "Weird MMC3 mode" +---------- Lockout (prevent further writes to these four registers, only works in MMC3 mode)
Register interpretation
The following things are always true, regardless of mode:
- The CCKK bits are always connected to PRG A24..A21.
- The PRG and CHR mask controls (I, H, G, B, & A) always control whether PRG A20..A17 and CHR A17 are connected to the internal MMC3 registers, or the literal values in other controls (J, EEE, & D).
Banking mode = $00
“Normal” oversize MMC3 mode.
Supports MMC3 anywhere between 128 KiB and 2 MiB, otherwise identical to ordinary MMC3. Goofy mask values will produce goofy memory layouts.
The combined register of CCKKJEEE could be thought of as a way to select one of 256 different 128 KiB PRG MMC3 games, or CCKK selecting one of 16 different 2 MiB MMC3 games.
Lockout works in this mode.
Banking mode = $10
“Normal” GNROM mode.
PRG A16 and A15 come from the QQ controls.
When in 16 KiB PRG mode (L control), PRG A14 comes from the R control. Otherwise, it comes from CPU A14.
CHR A16, A15, A14, and A13 come from MMMM controls. CHR A12, A11, and A10 come from PPU A12, A11, and A10.
The combined register of CCKKJEEEQQR could be thought of as a way to select one of 2048 different 16 KiB NROM games.
Note: The CHR and PRG mask registers STILL AFFECT THIS MODE, allowing weird splicing of MMC3 banking (with 128 KiB granularity) overlaying GNROM-style banking.
Lockout DOES NOT work in this mode.
Banking mode = $40
“Weird” MMC3 mode.
If MMC3 PRG ROM bank mode is "normal" (8+8+16F), then the PRG banks at 0xC000 and 0xE000 are fixed to 8 KiB bank 0, instead of 0xFE and 0xFF. Supposedly this effect is completely ignored when MMC3 PRG ROM bank mode is inverted (8F+8+8+8F).
The second half of each of the 2 KiB CHR banks is replaced with bank 0, and the LSB of MMC3 registers 0 and 1 work (instead of being replaced by PPU A10).
Otherwise, behaves as “normal” MMC3 mode above.
Banking mode = $50
“Weird” GNROM-ish mode.
Combine the rules mentioned above for “Normal” GNROM mode with “Weird” MMC3 mode. (These descriptions should not be contradictory.)
Lockout DOES NOT work in this mode.
WRAM usage
MMC3-mode operation with WRAM in the $6000-$7FFF (submapper 0) setting involves setting up the extra registers with the MMC3's WRAM disabled, setting the Lockout bit, then enabling WRAM again:
LDA #$00 STA $A001 ; Disable WRAM ; initialize PRG/CHR offsets and masks ; ... LDA #$80 STA $6003 ; Enable Lockout STA $A001 ; Enable WRAM
Because Lockout does not work in GNROM mode, it is impossible to have GNROM game use WRAM in the $6000-$7FFF (submapper 0) setting, as any WRAM write would inadvertently change the outer bank registers. The one known Chinese RPG (楚留香新传) running in GNROM mode with WRAM uses the $5000-$5FFF (submapper 1) setting.
Game List
Multicarts, mostly using the "Coolboy" or "Mindkids" circuit board:
- 218-in-1 Real Game
- MegaMan 8-in-1 (PL-0006)
- PocketGames 150-in-1
- Super 208-in-1
- Super 340-in-1
- Super 360-in-1
- Super 402-in-1
- Super Game 143-in-1, a.k.a. The Best Games of NES
- 深圳市仁顺科技 400-in-1 Real Game
- 霸王小子 500-in-1
Chinese RPGs with more than 512 KiB of PRG-ROM:
- 大话水浒 (Dàhuà Shuǐhǔ)
- 楚留香新传 (Chǔliúxiāng xīn Zhuàn)
- 魔道劫 (Módào Jié)
- 口袋妖怪: 叶绿 (vol. 1-3) (Kǒudài Yāoguài: Yè Lǜ), a.k.a. Pokémon Leaf-Green
- 最终幻想 1 - 黑暗篇 (Zuìzhōng Huànxiǎng 1 - Hēi'àn Piān), a.k.a. Final Fantasy X, Part 1
- 最终幻想 2 - 光明篇 (Zuìzhōng Huànxiǎng 2 - Guāngmíng Piān), a.k.a. Final Fantasy X, Part 2, original release only
- 最终幻想 3 - 黑暗篇 (Zuìzhōng Huànxiǎng 3 - Zhōngjié Piān), a.k.a. Final Fantasy X, Part 3
- 神奇宝贝 (Shénqí Bǎobèi), a.k.a. Pokémon Diamond
Other games that do not merely use the ASIC as a simple MMC3 clone:
- Gravity Trooper Metal Storm (Retro-Bit release)
A great number of Chinese cartridges use the ASIC as a simple MMC3 clone and thus are usually found set to INES Mapper 004. They can be recognized by writing $80 to $6003 in their initialization code.
Notes
- No cart has been discovered so far that makes use of the "weird" mode.
- Some new cartridges from MINDKIDS have /WE and /OE pins connected to mapper, which allows you to rewrite flash memory without soldering. This also allows console to write data to the cartridge. No cart has been discovered so far that makes use of this feature, but this can be used for homebrew.