Discuss hardware-related topics, such as development cartridges, CopyNES, PowerPak, EPROMs, or whatever.
Moderator: Moderators
krzysiobal
Posts: 1037 Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:
Post
by krzysiobal » Sat Oct 05, 2019 1:16 pm
Funny NROM/UNROM multicart that also maps ROM at $6000 (in fact, the whole menu code is ran only from $6000-$7fff)
Whats the point of writing game sizes on the label? And look at the back of the shell
Code: Select all
PRG:
ROM1 512 kB,
ROM2 128kB, unpopulated
CHR:
RAM 8 kB, can be write protected
Bus conflicts: no
REGISTERS (both cleared on powerup but NOT reset):
$8000-bfff:
fedcba9876543210 76543210
A~[10w.............] D~[ABCDE...]
| |||||
| |||++---- PRG outer bank
| |++------ PRG mode: 00=NROM 16k, 01=NROM 32k, 10/11=UNROM,
| |++------ PRG chip select: 00/01/10=PRG1, 11=PRG2
| |+------- CHR-ROM write protection: 0=enabled, 1=disabled
| ++------- mirroring: 00=V, 10=H, 01/11=1ScB(CIR_A10=VCC)
+--------------------------- write protection of both registers: 0=disabled, 1=enabled
$c000-ffff:
fedcba9876543210 76543210
A~[11..............] D~[.....FGH]
|||
+++- PRG inner bank (H ignored in NROM 32k)
$6000 mapped to second half of first 16kB from PRG1 (second 8kB bank)
BC | $6000 | $8000 | $c000
00 | PRG1=000001 | PRG1=DEFGH | PRG1=DEFGH
01 | PRG1=000001 | PRG1=DEFG0 | PRG1=DEFG1
10 | PRG1=000001 | PRG1=DEFGH | PRG1=DE111
11 | PRG1=000001 | PRG2=DEFGH | PRG2=DE111
PAL equations:
PRG2_nCE = (!CPU_RnW) | (!REG1_D5) | (!REG1_D6) | (CPU_nROMSEL);
PRG1_nCE = (REG1_D6 & REG1_D5 & !CPU_nROMSEL) | (!CPU_A14 & CPU_nROMSEL) | (!CPU_A13 & CPU_nROMSEL) | (!CPU_RnW);
PRG_A18 = (REG1_D4 & !CPU_nROMSEL);
PRG_A17 = (REG1_D3 & !CPU_nROMSEL);
PRG_A16 = (REG1_D6 & CPU_A14 & !CPU_nROMSEL) | (REG2_D2 & !CPU_nROMSEL);
PRG_A15 = (REG1_D6 & CPU_A14 & !CPU_nROMSEL) | (REG2_D1 & !CPU_nROMSEL);
PRG_A14 = (!REG1_D5 & REG2_D0 & !CPU_nROMSEL) |
(REG1_D5 & CPU_A14 & !CPU_nROMSEL) |
(REG1_D6 & REG2_D0 & !CPU_nROMSEL) |
(REG1_D6 & CPU_A14 & !CPU_nROMSEL);
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sat Oct 05, 2019 1:37 pm
NES 2.0 Mapper 350 . The description was based on debugging the menu, and differs from your reverse-engineered description for that reason. The ROM image file I have is 640 KiB and has Contra as the 128 KiB game.
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sat Oct 05, 2019 1:57 pm
Code: Select all
mirroring: 00=V, 10=H, 01/11=1ScB(CIR_A10=VCC)
This cannot be true. For the "128K game", the menu writes $60 to $8000 to select UNROM mode in the second PRG chip, but this would force that game to use one-screen mirroring, which no UNROM game needs.
krzysiobal
Posts: 1037 Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:
Post
by krzysiobal » Sat Oct 05, 2019 2:12 pm
There is a jumper in the PCB, used to select what goes to CIRAM-A10 when 01/11 is writen to mirroring register bits:
* open (like on my PCB) -> single screen mirroring.
* closed 1-2 -> H
* closed 3-4 -> V
Last edited by
krzysiobal on Sat Oct 05, 2019 2:14 pm, edited 3 times in total.
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sat Oct 05, 2019 2:13 pm
Ah, ok. So the jumper selects the mirroring for the UNROM game, so that the menu does not have to know about it. Snazzy.
Edit: This would mean that the NES 2.0 header's mirroring bit should select the mirroring when register 1 D6=1.
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sat Oct 05, 2019 2:22 pm
Another question: since your 128 KiB chip is not populated, what happens when you select "Game 128K"? Open Bus?
krzysiobal
Posts: 1037 Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:
Post
by krzysiobal » Sat Oct 05, 2019 2:31 pm
NewRisingSun wrote: Another question: since your 128 KiB chip is not populated, what happens when you select "Game 128K"? Open Bus?
Yes, and as the side effect, the whole program is restarted.
https://gofile.io/?c=LeeKiz
The joypad polling routine seems to be buggy (does not debounce?) - sometimes pressing SELECT makes the cursor to skip more than one position
tepples
Posts: 22708 Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:
Post
by tepples » Sat Oct 05, 2019 3:26 pm
And the sizes are in (modern) bytes rather than (period) bits. I imagine that this points to a recent (post-emulation) production date for at least the label.
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sat Oct 05, 2019 3:36 pm
The PCB code of 891227 on the back implies a 2000 design/production year.
NewRisingSun
Posts: 1510 Joined: Thu May 19, 2005 11:30 am
Post
by NewRisingSun » Sun Oct 06, 2019 2:37 am
On the other hand, the date on the other chips may indicate a 1989 date after all.
zxbdragon
Posts: 498 Joined: Mon Dec 12, 2011 8:15 pm
Post
by zxbdragon » Tue Oct 08, 2019 7:15 am
this cart kage is bug version,
aquasnake
Posts: 515 Joined: Fri Sep 13, 2019 11:22 pm
Post
by aquasnake » Tue May 17, 2022 11:14 pm
The Legend of Kage is CNROM, how does it set the chr bank register?
The cram is 8K, so the Legend of Kage is treated as nrom? WTF
Like another pirate multicart of Taiwan, Twin Bee is also a bug version wrongly treated as NROM.
In the early days, these carts were very rough and even defective