`92' Super Mario Family` (aka Mario Family 10-in-1)

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

Moderator: Moderators

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

`92' Super Mario Family` (aka Mario Family 10-in-1)

Post by krzysiobal »

There is a cartridge called `92' Super Mario Family` (aka Mario Family 10-in-1). I got photos of it:
Image Image Image Image Image Image

It consists of the following games:

Code: Select all

                                 mapper  PRG  CHR
1.Mario Bros Arcade (MB)              0  16k   8k
2.Super Mario Bros (SMB1)             0  32k   8k
3.Super Mario 2 USA (SMB2)            4 128k 128k
4.Super Mario 2 Japan (SMB2J)        43  80k   8k
5.Super Mario 3 (SMB3)                4 256k 128k
6.Super Mario 4 (Armadillo)         118 256k 128k
7.Mario Baby (Bio Miracle)           42 128k    0
8.Doctor Mario (Dr. Mario)            3  32k  64k
9.Mickey Mouse                        3  32k  64k
10. Bowling (Dynamite Bowl)           3  32k  64k
But it is not yet another stupid multicart where pirates just merged all games of same mapper and added ugly menu. Here, all games were converted to MMC3 (SMB2J in MMC3 version was something not to be available until loopy's releases his version).
Unfortunatelly, I have no access to dump of PRG/CHR chips, but.... I found on the interned something called `Mario Family 10-in-1.nes`. It repors to be MMC3 with 512kB PRG + 512kB CHR, but launching it starts SMB2J with garbled graphics. I have no idea how somebody dumped it (maybe it is good to assume that it was dumped as MMC3 from bank $8000-$9fff)

So I analyzed this file by dividing it into 8kB chunks and compared every of them to every chunk of one of above games and choosed the best match. Here is report:
Image

*There is no PRG of SMB3 and Armadillo, so I believe the PRG part of the ROM is not complete (it should be 1MB)
*.nes file, created from PRG/CHR chunks of the games mentioned below produces working game: SMB2, SMB1, Bio Miracle, Dr Mario, Mickey Mouse, Dynamite Bowl
*Making .nes with PRG from $40000-7ffff and CHR from $fe000-$fffff produces working SMB2J
*Part at $50000 and $70000 contains listing of source sode,
*Mario Bros (Arcade) when treated as standalone 16kB ROM at $74000 does not work - it is almost same like original version but with address of reset vector changed. When merged with menu ($54000 + $74000) it works.

*16 kB Menu ROM is at $54000, but it should be executed from $8000, not $c000. And NMI interrupt should be set to $809C and reset vector to $8000


My questions:
*Just after power up, how to jump-in into menu?
*Any idea how to describe this mapper in software? THen maybe later I would be able to deduce how it is built in hardware.
Attachments
menu.nes
(40.02 KiB) Downloaded 448 times
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

I have this cartridge. So if one need photos or want it to be redumped (via kazzo)…
User avatar
krzysiobal
Posts: 1036
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by krzysiobal »

If you could dump what is after powerup at CPU $8000-$ffff and PPU $0000-$1fff,.

Also it would be good to check which of PAL pins 1-9, 11-19 connect to which PRG/CHR ROM pins and MMC3 (some might be connected to both of them). Unfortunatelly it can't be seen from phote.
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

Don't know how to write an anago script, sorry. But will dump if one is provided.

Code: Select all

PAL.01 - 0001.05
PAL.02 - /ROMSEL (pin 44)
PAL.03 - CPU A14 (pin 35)
PAL.04 - MC3.05
PAL.05 - CPU R/W (pin 14)
PAL.06 - MC3.32
PAL.07 - MC3.29
PAL.08 - MC3.10
PAL.09 - PPU A13 (pin 56)
PAL.11  (split up through C1, D1, R1) - M2 (pin 32)
PAL.12 - CIRAM A10 (pin 18)
PAL.13 - NC
PAL.14 - 0002.22 + 6264-4D2.26
PAL.15 - 0001.01 + 0002.31
PAL.16 - 0002.30
PAL.17 - 0001.31
PAL.18 - MC3.04
PAL.19 - MC3.01
Sidenote, they used a 4.7k Ohm resistor rather than 10k (value printed below on the PCB)
Attachments
92MF10in1-FC-PCBf.jpg
92MF10in1-FC-PCBb.jpg
Last edited by MLX on Sat Jul 14, 2018 3:59 am, edited 2 times in total.
zxbdragon
Posts: 498
Joined: Mon Dec 12, 2011 8:15 pm

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by zxbdragon »

MLX wrote:Don't know how to write an anago script, sorry. But will dump if one is provided.

Code: Select all

PAL.01 - 0001.05
PAL.02 - /ROMSEL (pin 44)
PAL.03 - CPU A14 (pin 35)
PAL.04 - MC3.05
PAL.05 - CPU R/W (pin 14)
PAL.06 - MC3.32
PAL.07 - MC3.29
PAL.08 - MC3.10
PAL.09 - PPU A13 (pin 56)
I will check 11-19 later.
anago dump nrom. power on PRG32K,8KCHR
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by NewRisingSun »

MLX wrote:Don't know how to write an anago script, sorry. But will dump if one is provided.
Try. It is based on the menu ROM provided in the first post.
Attachments
Mapper353v010.ad.txt
(878 Bytes) Downloaded 369 times
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

This cartridge is another instance of the PAL chip heating up with the kazzo, even when not hot plugged.

Resulting dump is attached.
Attachments
92MF10in1_v010.nes
(384.02 KiB) Downloaded 471 times
User avatar
krzysiobal
Posts: 1036
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by krzysiobal »

What is 0001.1 connected to?
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

0002.31 + PAL.15
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by NewRisingSun »

That only dumped Armadillo (block 0), which is okay, since we did not have that before. I think the outer bank locks after one write. Version v11a tries to unlock it via two write to E080 (which is what the startup code does), while version 11b only dumps PRG block 1, which is the only one we don't have so far. Better try version 11b first for safety, and let me see if I can combine the result with the GoodNES dump (which seems to contain blocks 2 and 3) and the previous block 0, before trying version 11a.

Edit: corrected the size specification in the A script.
Attachments
Mapper353v012a.ad.txt
(1.04 KiB) Downloaded 351 times
Last edited by NewRisingSun on Sat Jul 14, 2018 8:26 am, edited 2 times in total.
User avatar
krzysiobal
Posts: 1036
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by krzysiobal »

There are probably up to four registers ($8080/$a080/$c080/$e080), but only A14-A13 matters when writing.
Writing to them might alter:

Code: Select all

* MMC3 behaviour
  - normal (lke mapper 004): PRG-A17/CHR-A17 controlled by MMC3
      versus
  - NROM mode (PRG-A17/CHR-A17 controlled by PAL and MMC3 is fooled to think that CPU_A14=0) so $8000-$9fff and $a000-$bfff are switchable and $c000=$8000 + 2, $d000=$a000+ 2, probably even further writes to MMC3 are ignored because MMC3`s !romsel is controlled by PAL

* mirroring:
 - normal: MMC3 controls mirroring (H/V)
   versus
 - single screen mirroring (overrided by PAL)
It would be good to make something like:

Code: Select all

//set $ppu $0000-$1fff to sequential 8KB piece
cpu_write($8000, 0);
cpu_write($8001, 0);
cpu_write($8000, 1);
cpu_write($8001, 2);
cpu_write($8000, 2);
cpu_write($8001, 4);
cpu_write($8000, 3);
cpu_write($8001, 5);
cpu_write($8000, 4);
cpu_write($8001, 6);
cpu_write($8000, 5);
cpu_write($8001, 7);

for (int i = 0; i < 4; ++i) {
  cpu_write($8080 + $2000 * i, 0); //change mode
  
  //check how MMC3 behaves
  for (int j = 0; j < 32; ++j) {
    cpu_write($8000, 6);
	cpu_write($8001, j);
    cpu_write($8000, 7);
	cpu_write($8001, j);
	cpu_read($8000, $ffff);
	ppu_read($0000, $1fff);
  }
}
And M2 need to be toggled at 1.7MHZ, otherwize PAL internal state might reset.
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

A & B had the same CRC.
Last edited by MLX on Fri Sep 07, 2018 1:43 am, edited 1 time in total.
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by NewRisingSun »

Then it's the M2 problem again, as kryziobal mentioned. :(
NewRisingSun
Posts: 1510
Joined: Thu May 19, 2005 11:30 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by NewRisingSun »

For what it's worth, here is the combined ROM image --- GoodNES' banks 2 and 3, together with MLX' bank 0 ---, a Nintendulator-NRS build with Mapper 353 support, and a Mapper 353 source file. I have filled 256 KiB of 0x00 where bank 1 would go, so game 3 does not work with this incomplete ROM image. Given that most of the games seem to have hacked title screens, I have resisted the temptation to replace the missing bank with data from a standard SMB3 ROM image.

Edit: Added FDS expansion sound to Mapper 353 in the Nintendulator-NRS build. Use "Sound->Expansion Audio on Bootleg Carts" to get the authentic, expansion-sound-less bootleg experience.
Attachments
mapper353.cpp
(2.52 KiB) Downloaded 369 times
Last edited by NewRisingSun on Mon Jul 23, 2018 9:43 pm, edited 3 times in total.
MLX
Posts: 110
Joined: Tue Feb 14, 2017 9:50 am

Re: `92' Super Mario Family` (aka Mario Family 10-in-1)

Post by MLX »

Would feeding pin 32 with a square signal at that frequency during the whole dumping sequence do the trick?
Post Reply