|
|
(10 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| | #REDIRECT [[CNROM]] |
| {{DEFAULTSORT:185}}[[Category:iNES Mappers]][[Category:in NesCartDB]][[Category:Discrete logic mappers]][[Category:Nintendo licensed mappers]][[Category:NES 2.0 mappers with submappers]] | | {{DEFAULTSORT:185}}[[Category:iNES Mappers]][[Category:in NesCartDB]][[Category:Discrete logic mappers]][[Category:Nintendo licensed mappers]][[Category:NES 2.0 mappers with submappers]] |
| '''iNES Mapper 185''' is used for games that use the [[CNROM]] board with weak copy protection measures.
| |
|
| |
| ==Overview==
| |
| * PRG ROM size: 16 KiB or 32 KiB
| |
| * PRG ROM bank size: Not bankswitched
| |
| * PRG RAM: None
| |
| * CHR capacity: 8 KiB ROM (copy protected)
| |
| * Nametable [[mirroring]]: Solder pads select vertical or horizontal mirroring
| |
| * Subject to [[bus conflict]]s: Yes [[Category:Mappers with bus conflicts]]
| |
|
| |
| ==Banks==
| |
| * PPU $0000-$1FFF: 8 KB switchable CHR ROM bank
| |
|
| |
| ==Registers==
| |
| === Bank select ($8000-$FFFF) ===
| |
| 7 bit 0
| |
| ---- ----
| |
| ..CC ..CC
| |
| || ||
| |
| ++---++- Used for CHR copy protection.
| |
|
| |
| These games only have 8k of CHR, and they attempt to disable CHR by writing a specific value to the CHR Reg, then VERIFY that garbage is read back, then they swap back to the actual CHR. If they don't get the expected garbage, they lock up.
| |
|
| |
|
| |
| Each game has their own value that enables/disables CHR. However, a simple heuristic obviates the need to detect each game individually:
| |
| * if C AND $0F is nonzero, and if C does not equal $13: CHR is enabled
| |
| * otherwise CHR is disabled
| |
| When CHR is disabled, the pattern tables are [[open bus]]. Theoretically, this should return the LSB of the address read, but real-world behavior varies.
| |
|
| |
| ''Seicross (v2)'' does not work with this heuristic.
| |
|
| |
|
| |
| All of these games test for the bad value first, and the correct value (if at all) second; returning garbage for the first two reads from the PPU after reboot should also work.
| |
|
| |
|
| |
| This table has been assembled from nocash and the sources of MESS, Nestopia, and FCEUX; the specific tests were traced from dumps in GoodNES.
| |
| {| class="datatable sortable"
| |
| ! || bank || PPU addr || test || bank || PPU addr || test
| |
| |-
| |
| ! Game !! colspan=3|Incorrect bank !! colspan=3|Must work <!-- specific test -->
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=1262 Bird Week] || $F0 || $1FF0 || ≠ $0C || $0F || $1FF0 || = $0C
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=1264 B-Wings] || $00 || $0000 || ≠ $3C || $33 || $0000 || = $3C
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=1261 Mighty Bomb Jack (J)] || $00 || $0000 || ≠ $00 || $11 || colspan=2|untested
| |
| |-
| |
| | Mighty Bomb Jack [http://bootgod.dyndns.org:7777/profile.php?id=202 (U)], [http://bootgod.dyndns.org:7777/profile.php?id=2143 (E)] || $00 || $0001 || ≠ $3C || $11 || colspan=2|untested
| |
| |-
| |
| | Sansuu 1 Nen || $20 || $000C || ≠ $BC || $22 || $000C || = $BC
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=1263 Sansuu 2 Nen] || $20 || $0003 || ≠ $42 || $22 || $0003 || = $42
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=4061 Othello] || $20 || $0006 || ≠ $3F || $22 || $0006 || = $3F
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=3791 Sansuu 3 Nen] || $00 || $0006 || ≠ $34 || $FF || $0006 || = $34
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=3592 Spy vs Spy] || $13 || $1F20 || ≠ $55 || $21 || colspan=2|untested
| |
| |-
| |
| | [http://bootgod.dyndns.org:7777/profile.php?id=2332 Seicross (v2)] || $21 || $0700…$0707 || ≠ $20,$60,$70,$70,$70,$40,$08,$38 || $20 || colspan=2|untested
| |
| |}
| |
|
| |
| ==References==
| |
| * [http://www.romhacking.net/documents/362/ Disch's Mapper Notes]
| |