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

1992 Contra 120 in 1

Description

The cartridge is a multigames cartridge dated from 1992.

Versions known :

  • 1992 Contra Super 120 in 1 : NES version (72-pin)

Hardware

NES PCB (Front mirrored picture)NES PCB (Bottom picture)
120 in 1 NES PCB (Front mirrored picture)120 in 1 NES PCB (Bottom picture)
Datas chips
ChipsDescription
8M12 - 5003AJ213-PA20C - S22431 - H9208Probably 1 MB chip (need confirmation)
Hyundai HY6264LP-10 - 9040D8K x 8-bit CMOS SRAM, 150ns
Usual fonctionnal chips
ChipsDescription
GD74LS161A - 9204 - GoldStarBinary Counter, LS Series, Synchronous, Positive Edge Triggered, 4-Bit, Up Direction, TTL, PDIP16
GD74LS32 - 9211 - GoldStarOR Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14
GD74LS157 - 9220 - GoldStarMultiplexer, LS Series, 4-Func, 2 Line Input, 1 Line Output, True Output, TTL, PDIP16
HD74HC02P - 1K45NOR Gate, HC/UH Series, 4-Func, 2-Input, CMOS, PDIP14
GD74LS273 - 9209 - GoldStarD Flip-Flop, LS Series, 1-Func, Positive Edge Triggered, 8-Bit, True Output, TTL, PDIP20
GD74LS02 - 9215 - GoldStarNOR Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14
GD74LS153 - 9217 - GoldStarMultiplexer, LS Series, 2-Func, 4 Line Input, 1 Line Output, True Output, TTL, PDIP16

120 in 1 Schematic

 111111
 5432109876543210
[1.....bPxPPPPpmv]
       | |     |+- 0=16K,1=32K
       | |     +-- 0=V, 1=H
       | +-------- 1=NROM, 0=UNROM
       +---------- UNROM bank

The CHR part is a RAM chip, so it doesn’t contain any datas to dump.

Software

The 120 in 1 rom contains 512 KB of PRG and no CHR.

The rom has been dumped and assigned to the submapper 1 of the INES Mapper 227 on the 25 march 2023.

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

The rom is fully supported from FCEUX 2.6.6.

Dumping method

For dumping this cartridge, it’s necessary to short-circuit this capacitor (by putting an electric wire between its two pins) :

Capacitor to short

This short-circuit in place, this script can dump the cartridge with the INLretro-prog dumper (Device firmware version: 2.3.x) :

dumpN120_72.lua
File:DumpN120 72.lua.txt
-- create the module's table
local dumpn120_72 = {}

-- 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 : 227 ; Mirroring : 0 (Horizontal)

    nes.write_header( file, prgKB, chrKB, 227, 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

        dict.nes("NES_CPU_WR", 0x8000 | ((read_count & 0x1f) << 2) | ((read_count << 3) & (1 << 8)) , read_count)

        dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_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 dumpN120_72.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)

        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
dumpn120_72.process = process

-- return the module's table
return dumpn120_72

Under UNIX, the commands to run are :

./inlretro -s scripts/inlretro3.lua -c NES -m dumpn120_72 -x 512 -d 120in1-contra-1992.nes

The NES header of the rom is to set to :

4E 45 53 1A 20 00 30 E8 10 00 00 00 00 00 00 00

Games Menu

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

  • 1942
  • Arkanoid
  • B-Wings
  • Battle City
  • Bomber Man 1
  • Contra
  • Dig Dug
  • Field Combat
  • Galaxian
  • Ninja-Kun
  • Super Mario Bros 1 (Platforms / 1986)
  • Tetris (Tengen)
  • TwinBee
Cartridge Menu
N°Game NameOriginal Game NameLevel
001CONTRAContraStage 1
002TETRIS 2Tetris (Tengen)
003SUPER MARIOSuper Mario Bros 1 (Platforms / 1986)World 1-1
004ARKANOIDArkanoidRound 1
005ASUIT CONTRAContraStage 1
006TANKBattle CityStage 1
007GALAXIANGalaxianFlag 1
008FIAME CONTRAContraStage 1
009DIG DUGDig DugRound 1
010TWIN BEETwinBee
011SHOTE CONTRAContraStage 1
01219421942
013BOMBER MANBomber Man 1Stage 1
014CONTRA 30ContraStage 1
015TANK USABattle CityStage 4
016B-WINGSB-WingsStage 1
017ASUIT CONTRA 30ContraStage 1
018SPEED MARIOSuper Mario Bros 1 (Platforms / 1986)World 1-1
019NINJANinja-KunScene 1
020FIAME CONTRA 30ContraStage 1
021ARKANOID 2ArkanoidRound 4
022DIG DUG 2Dig DugRound 2
023SHOTE CONTRA 30ContraStage 1
024TANK CHNBattle CityStage 7
025B-WINGS WIDB-WingsStage 1
026BASE1ContraStage 2 – Base 1
027NINJA 2Ninja-KunScene 2
028BOMBER MAN OTBomber Man 1Stage 1
029WATERFALLContraStage 3
030GALAXIAN 2GalaxianFlag 2
031COMBATField Combat
032BASE2ContraStage 4 – Base 2
033SUPER MARIO 2Super Mario Bros 1 (Platforms / 1986)World 2-1
034TANK JPNBattle CityStage 10
035SNOW FIELDContraStage 5
036DIG DUG 3Dig DugRound 3
037ARKANOID 3ArkanoidRound 7
038ENERGY ZONEContraStage 6
039NINJA 3Ninja-KunScene 3
040B-WINGS MTB-WingsStage 1
041HENGARContraStage 7
042TANK IRNBattle CityStage 13
043NINJA 4Ninja-KunScene 4
044ALIEN LAIRContraStage 8
045DIG DUG 4Dig DugRound 4
046GALAXIAN 3GalaxianFlag 3
047BASE1 ASUContraStage 2 – Base 1
048SUPER MARIO 3Super Mario Bros 1 (Platforms / 1986)World 3-1
049TANK ISRBattle CityStage 16
050WATERFALL ASUContraStage 3
051B-WINGS VANB-WingsStage 1
052ARKANOID 4ArkanoidRound A
053BASE2 ASUContraStage 4 – Base 2
054COMBAT AXField Combat
055BOMBER MAN NSBomber Man 1Stage 1
056SNOW FIELD ASUContraStage 5
057TANK-IBattle CityStage 19
058NINJA 5Ninja-KunScene 5
059ENERGY ZONE ASUContraStage 6
060BOMBER MAN RPBomber Man 1Stage 1
061DIG DUG 5Dig DugRound 5
062HENGAR ASUContraStage 7
063SUPER MARIO 4Super Mario Bros 1 (Platforms / 1986)World 4-1
064TANK JORBattle CityStage 22
065ALIEN LAIR ASUContraStage 8
066B-WINGS SIDB-WingsStage 1
067ARKANOID 5ArkanoidRound D
068BASE1 FIAContraStage 2 – Base 1
069NINJA 6Ninja-KunScene 6
070COMBAT BXField Combat
071WATERFALL FIAContraStage 3
072TANK 2CBattle CityStage 25
073GALAXIAN 4GalaxianFlag 4
074BASE2 FIAContraStage 4 – Base 2
075BOMBER MAN TWBomber Man 1Stage 1
076DIG DUG 6Dig DugRound 6
077SNOW FIELD FIAContraStage 5
078SUPER MARIO 5Super Mario Bros 1 (Platforms / 1986)World 5-1
079B-WINGS ATB-WingsStage 1
080ENERGY ZONE FIAContraStage 6
081TANK LEBBattle CityStage 28
082ARKANOID 6ArkanoidRound G
083HENGAR FIAContraStage 7
084B-WINGS HAMB-WingsStage 1
085NINJA 7Ninja-KunScene 7
086ALIAN LAIR FIAContraStage 8
087BOMBER MAN DFBomber Man 1Stage 1
088DIG DUG 7Dig DugRound 7
089BASE1 SHOContraStage 2 – Base 1
090TANK USRBattle CityStage 31
091COMBAT CXField Combat
092WATERFALL SHOContraStage 3
093SUPER MARIO 6Super Mario Bros 1 (Platforms / 1986)World 6-1
094B-WINGS JMPB-WingsStage 1
095BASE2 SHOContraStage 4 – Base 2
096NINJA 8Ninja-KunScene 8
097ARKANOID 7ArkanoidRound J
098SNOW FIELD SHOContraStage 5
099DIG DUG 8Dig DugRound 8
100GALAXIAN 5GalaxianFlag 5
101COMBAT DXField Combat
102DIG DUG 9Dig DugRound 9
103TANK IRIBattle CityStage 34
104ENERGY ZONE SHOContraStage 6
105B-WINGS DYB-WingsStage 1
106NINJA 9Ninja-KunScene 9
107HENGAR SHOContraStage 7
108SUPER MARIO 7Super Mario Bros 1 (Platforms / 1986)World 7-1
109SUPER 19421942
110BOMBER MAN ANBomber Man 1Stage 1
111TANK-IIBattle CityStage 1
112ARKANOID 8ArkanoidRound L
113ALIEN LAIR SHOContraStage 8
114GALAXIAN 6GalaxianFlag 6
115SUPER TWIN BEETwinBee
116COMBAT EXField Combat
117TANK FREBattle CityStage 18
118B-WINGS FIRB-WingsStage 1
119DIG DUG 10Dig DugRound 10
120SUPER MARIO 8Super Mario Bros 1 (Platforms / 1986)World 8-1

Edit this page on GitHub