Skip to main content
NESdev Wiki
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

1993 Super 50 in 1 Game

Description

The cartridge is a multigames cartridge dated from 1993.

Versions known :

  • 1993 Super 50 in 1 Game : NES version (72-pin)

Hardware

NES PCB (Front mirrored picture)NES PCB (Bottom picture)
50 in 1 NES PCB (Front mirrored picture)50 in 1 NES PCB (Bottom picture)
Datas chips
ChipsDescription
BlobPRG-ROM
BlobCHR-ROM
Usual fonctionnal chips
ChipsDescription
74LS161A - 6.70BCD Decade counters / 4-bit binary counters
GD74LS00 - 9223 - GoldStarNAND Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14

50 in 1 Schematic

Software

The 50 in 1 rom contains 64 KB of PRG and 32 KB of CHR.

The rom has been dumped and assigned to the INES Mapper 200.

It contains 4 different games that can be beginned at different levels.

Dumping method

This script can dump the cartridge with the INLretro-prog dumper (Device firmware version: 2.3.x) :

dumpMG109.lua
File:DumpMG109.lua.txt
-- create the module's table
local dumpmg109 = {}

-- import required modules
local dict = require "scripts.app.dict"
local nes = require "scripts.app.nes"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local time = require "scripts.app.time"
local files = require "scripts.app.files"
local swim = require "scripts.app.swim"
local buffers = require "scripts.app.buffers"

-- local functions
local function create_header( file, prgKB, chrKB )
    -- Mapper : 200 ; Mirroring : 0 (Horizontal)

    nes.write_header( file, prgKB, chrKB, 200, 0)
end

--dump the PRG ROM
local function dump_prgrom( file, rom_size_KB, debug )

    --PRG-ROM dump 16KB at a time
    local KB_per_read = 16
    local num_reads = rom_size_KB / KB_per_read
    local read_count = 0
    local addr_base = 0x80  -- $8000

print("CPU dump :")

    while ( read_count < num_reads )
    do
        if debug then print( "dump PRG part ", read_count, " of ", num_reads) end

        -- pause of 1 second to take care about the chips
        local time=os.clock()+1
        while time>os.clock()
            do
            end

        local nobusconflicts = dict.nes("NES_CPU_RD", 0x8000 | read_count);
        dict.nes("NES_CPU_WR", 0x8000 | read_count , nobusconflicts)

        dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false )

        read_count = read_count + 1
    end
end

--dump the CHR ROM
local function dump_chrrom( file, rom_size_KB, debug )

    local KB_per_read = 8   --dump both PT at once
    local num_reads = rom_size_KB / KB_per_read
    local read_count = 0
    local addr_base = 0x00  -- $0000


print("PPU dump :")

    while ( read_count < num_reads ) do

        if debug then print( "dump CHR part ", read_count, " of ", num_reads) end

        -- pause of 1 second to take care about the chips
        local time=os.clock()+1
        while time>os.clock()
            do
            end

        local nobusconflicts = dict.nes("NES_CPU_RD", 0x8000 | read_count);
        dict.nes("NES_CPU_WR", 0x8000 | read_count , nobusconflicts)

        dump.dumptofile( file, KB_per_read, addr_base, "NESPPU_PAGE", false )

        read_count = read_count + 1
    end
end

--Cart should be in reset state upon calling this function
--this function processes all user requests for this specific board/mapper
--local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile)
local function process(process_opts, console_opts)
    local test = process_opts["test"]
    local read = process_opts["read"]
    local erase = process_opts["erase"]
    local program = process_opts["program"]
    local verify = process_opts["verify"]
    local dumpfile = process_opts["dump_filename"]
    local flashfile = process_opts["flash_filename"]
    local verifyfile = process_opts["verify_filename"]

    local rv = nil
    local file
    local prg_size = console_opts["prg_rom_size_kb"]
    local chr_size = console_opts["chr_rom_size_kb"]
    local wram_size = console_opts["wram_size_kb"]

--initialize device i/o for NES
    dict.io("IO_RESET")
    dict.io("NES_INIT")

print("\nRunning dumpMG109.lua")

--dump the cart to dumpfile
    if read then
        print("\nDumping ROM...")

        file = assert(io.open(dumpfile, "wb"))

        --create header: pass open & empty file & rom sizes
        create_header(file, prg_size, chr_size)

        --TODO find bank table to avoid bus conflicts!
        --dump cart into file
        time.start()
        --dump cart into file
        dump_prgrom(file, prg_size, false)
        dump_chrrom(file, chr_size, false)
        time.report(prg_size)

        --close file
        assert(file:close())
        print("DONE Dumping ROM")
    end

    dict.io("IO_RESET")
end

-- functions other modules are able to call
dumpmg109.process = process

-- return the module's table
return dumpmg109

Under UNIX, the commands to run are :

./inlretro -s scripts/inlretro3.lua -c NES -m dumpmg109 -x 64 -y 32 -d 50in1-1993.nes

The NES header of the rom is to set to

Games Menu

There are 4 unique games and the same games at different levels :

  • Duck Hunt
  • Wild Gunman
  • Battle City
  • Mario Bros (Arcade / 1983)
Cartridge Menu
N°Game NameOriginal Game NameLevel
1DUCK HUNTDuck HuntGame A : 1 duck
2TWO DUCKS HUNTDuck HuntGame B : 2 ducks
3CLAY SHOOTINGDuck HuntGame C : Clay Shooting
4WILD GUNMANWild GunmanGame A : 1 outlaw
5TWO GUNMENWild GunmanGame B : 2 outlaws
6SALOON GUNMENWild GunmanGame C : Gang
7BATTLE CITY 1Battle CityStage 1
8BATTLE CITY 2Battle CityStage 2
9BATTLE CITY 3Battle CityStage 3
10BATTLE CITY 4Battle CityStage 4
11BATTLE CITY 5Battle CityStage 5
12BATTLE CITY 6Battle CityStage 6
13BATTLE CITY 7Battle CityStage 7
14BATTLE CITY 8Battle CityStage 8
15BATTLE CITY 9Battle CityStage 9
16BATTLE CITY 10Battle CityStage 10
17BATTLE CITY 11Battle CityStage 11
18BATTLE CITY 12Battle CityStage 12
19BATTLE CITY 13Battle CityStage 13
20BATTLE CITY 14Battle CityStage 14
21BATTLE CITY 15Battle CityStage 15
22BATTLE CITY 16Battle CityStage 16
23BATTLE CITY 17Battle CityStage 17
24BATTLE CITY 18Battle CityStage 18
25BATTLE CITY 19Battle CityStage 19
26BATTLE CITY 20Battle CityStage 20
27BATTLE CITY 21Battle CityStage 21
28BATTLE CITY 22Battle CityStage 22
29BATTLE CITY 23Battle CityStage 23
30BATTLE CITY 24Battle CityStage 24
31BATTLE CITY 25Battle CityStage 25
32BATTLE CITY 26Battle CityStage 26
33BATTLE CITY 27Battle CityStage 27
34BATTLE CITY 28Battle CityStage 28
35BATTLE CITY 29Battle CityStage 29
36BATTLE CITY 30Battle CityStage 30
37BATTLE CITY 31Battle CityStage 31
38BATTLE CITY 32Battle CityStage 32
39BATTLE CITY 33Battle CityStage 33
40BATTLE CITY 34Battle CityStage 34
41BATTLE CITY 35Battle CityStage 35
42MARIO BROS 1Mario Bros (Arcade / 1983)Phase 1
43MARIO BROS 2Mario Bros (Arcade / 1983)Phase 2
44MARIO BROS 3Mario Bros (Arcade / 1983)Phase 3
45MARIO BROS 4Mario Bros (Arcade / 1983)Phase 4
46MARIO BROS 5Mario Bros (Arcade / 1983)Phase 5
47MARIO BROS 6Mario Bros (Arcade / 1983)Phase 6
48MARIO BROS 7Mario Bros (Arcade / 1983)Phase 7
49MARIO BROS 8Mario Bros (Arcade / 1983)Phase 8
50MARIO BROS 9Mario Bros (Arcade / 1983)Phase 9

Edit this page on GitHub