15 in 1 multicart (NROM/UNROM + $6000)

Discuss hardware-related topics, such as development cartridges, CopyNES, PowerPak, EPROMs, or whatever.

Moderator: Moderators

Post Reply
User avatar
krzysiobal
Posts: 1037
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

15 in 1 multicart (NROM/UNROM + $6000)

Post by krzysiobal »

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 :D

Image

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);

Image Image Image Image Image Image
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

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.
User avatar
krzysiobal
Posts: 1037
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by krzysiobal »

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

Image Image
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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

Another question: since your 128 KiB chip is not populated, what happens when you select "Game 128K"? Open Bus?
User avatar
krzysiobal
Posts: 1037
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by krzysiobal »

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:

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by tepples »

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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by NewRisingSun »

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

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by zxbdragon »

this cart kage is bug version,
User avatar
aquasnake
Posts: 515
Joined: Fri Sep 13, 2019 11:22 pm

Re: 15 in 1 multicart (NROM/UNROM + $6000)

Post by aquasnake »

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
Post Reply