1993 Super 50 in 1 Game: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
Line 203: Line 203:
== Games Menu ==
== Games Menu ==


There are 13 unique games and the same games at different levels :
There are 4 unique games and the same games at different levels :
* 1942
* Duck Hunt
* Arkanoid
* Wild Gunman
* B-Wings
* Battle City
* Battle City
* Bomber Man 1
* Mario Bros (Arcade / 1983)
* Contra
* Dig Dug
* Field Combat
* Galaxian
* Ninja-Kun
* Super Mario Bros 1 (Platforms / 1986)
* Tetris (Tengen)
* TwinBee


{| class="wikitable" align="center" style="margin: auto;"
{| class="wikitable" align="center" style="margin: auto;"
Line 225: Line 216:
|-
|-
| 001 || CONTRA || Contra || Stage 1
| 001 || CONTRA || Contra || Stage 1
|-
| 002 || TETRIS 2 || Tetris (Tengen) ||
|-
| 003 || SUPER MARIO || Super Mario Bros 1 (Platforms / 1986) || World 1-1
|-
| 004 || ARKANOID || Arkanoid || Round 1
|-
| 005 || ASUIT CONTRA || Contra || Stage 1
|-
| 006 || TANK || Battle City || Stage 1
|-
|-
| 007 || GALAXIAN || Galaxian || Flag 1
| 007 || GALAXIAN || Galaxian || Flag 1
|-
|-
| 008 || FIAME CONTRA || Contra || Stage 1
| 008 || FIAME CONTRA || Contra || Stage 1
|-
| 009 || DIG DUG || Dig Dug || Round 1
|-
| 010 || TWIN BEE || TwinBee ||
|-
| 011 || SHOTE CONTRA || Contra || Stage 1
|-
| 012 || 1942 || 1942 ||
|-
| 013 || BOMBER MAN || Bomber Man 1 || Stage 1
|-
| 014 || CONTRA 30 || Contra || Stage 1
|-
| 015 || TANK USA || Battle City || Stage 4
|-
| 016 || B-WINGS || B-Wings || Stage 1
|-
| 017 || ASUIT CONTRA 30 || Contra || Stage 1
|-
| 018 || SPEED MARIO || Super Mario Bros 1 (Platforms / 1986) || World 1-1
|-
| 019 || NINJA || Ninja-Kun || Scene 1
|-
| 020 || FIAME CONTRA 30 || Contra || Stage 1
|-
| 021 || ARKANOID 2 || Arkanoid || Round 4
|-
| 022 || DIG DUG 2 || Dig Dug || Round 2
|-
| 023 || SHOTE CONTRA 30 || Contra || Stage 1
|-
| 024 || TANK CHN || Battle City || Stage 7
|-
| 025 || B-WINGS WID || B-Wings || Stage 1
|-
| 026 || BASE1 || Contra || Stage 2 – Base 1
|-
| 027 || NINJA 2 || Ninja-Kun || Scene 2
|-
| 028 || BOMBER MAN OT || Bomber Man 1 || Stage 1
|-
| 029 || WATERFALL || Contra || Stage 3
|-
| 030 || GALAXIAN 2 || Galaxian || Flag 2
|-
| 031 || COMBAT || Field Combat ||
|-
| 032 || BASE2 || Contra || Stage 4 – Base 2
|-
| 033 || SUPER MARIO 2 || Super Mario Bros 1 (Platforms / 1986) || World 2-1
|-
| 034 || TANK JPN || Battle City || Stage 10
|-
| 035 || SNOW FIELD || Contra || Stage 5
|-
| 036 || DIG DUG 3 || Dig Dug || Round 3
|-
| 037 || ARKANOID 3 || Arkanoid || Round 7
|-
| 038 || ENERGY ZONE || Contra || Stage 6
|-
| 039 || NINJA 3 || Ninja-Kun || Scene 3
|-
| 040 || B-WINGS MT || B-Wings || Stage 1
|-
| 041 || HENGAR || Contra || Stage 7
|-
| 042 || TANK IRN || Battle City || Stage 13
|-
| 043 || NINJA 4 || Ninja-Kun || Scene 4
|-
| 044 || ALIEN LAIR || Contra || Stage 8
|-
| 045 || DIG DUG 4 || Dig Dug || Round 4
|-
| 046 || GALAXIAN 3 || Galaxian || Flag 3
|-
| 047 || BASE1 ASU || Contra || Stage 2 – Base 1
|-
| 048 || SUPER MARIO 3 || Super Mario Bros 1 (Platforms / 1986) || World 3-1
|-
| 049 || TANK ISR || Battle City || Stage 16
|-
| 050 || WATERFALL ASU || Contra || Stage 3
|-
| 051 || B-WINGS VAN || B-Wings || Stage 1
|-
| 052 || ARKANOID 4 || Arkanoid || Round A
|-
| 053 || BASE2 ASU || Contra || Stage 4 – Base 2
|-
| 054 || COMBAT AX || Field Combat ||
|-
| 055 || BOMBER MAN NS || Bomber Man 1 || Stage 1
|-
| 056 || SNOW FIELD ASU || Contra || Stage 5
|-
| 057 || TANK-I || Battle City || Stage 19
|-
| 058 || NINJA 5 || Ninja-Kun || Scene 5
|-
| 059 || ENERGY ZONE ASU || Contra || Stage 6
|-
| 060 || BOMBER MAN RP || Bomber Man 1 || Stage 1
|-
| 061 || DIG DUG 5 || Dig Dug || Round 5
|-
| 062 || HENGAR ASU || Contra || Stage 7
|-
| 063 || SUPER MARIO 4 || Super Mario Bros 1 (Platforms / 1986) || World 4-1
|-
| 064 || TANK JOR || Battle City || Stage 22
|-
| 065 || ALIEN LAIR ASU || Contra || Stage 8
|-
| 066 || B-WINGS SID || B-Wings || Stage 1
|-
| 067 || ARKANOID 5 || Arkanoid || Round D
|-
| 068 || BASE1 FIA || Contra || Stage 2 – Base 1
|-
| 069 || NINJA 6 || Ninja-Kun || Scene 6
|-
| 070 || COMBAT BX || Field Combat ||
|-
| 071 || WATERFALL FIA || Contra || Stage 3
|-
| 072 || TANK 2C || Battle City || Stage 25
|-
| 073 || GALAXIAN 4 || Galaxian || Flag 4
|-
| 074 || BASE2 FIA || Contra || Stage 4 – Base 2
|-
| 075 || BOMBER MAN TW || Bomber Man 1 || Stage 1
|-
| 076 || DIG DUG 6 || Dig Dug || Round 6
|-
| 077 || SNOW FIELD FIA || Contra || Stage 5
|-
| 078 || SUPER MARIO 5 || Super Mario Bros 1 (Platforms / 1986) || World 5-1
|-
| 079 || B-WINGS AT || B-Wings || Stage 1
|-
| 080 || ENERGY ZONE FIA || Contra || Stage 6
|-
| 081 || TANK LEB || Battle City || Stage 28
|-
| 082 || ARKANOID 6 || Arkanoid || Round G
|-
| 083 || HENGAR FIA || Contra || Stage 7
|-
| 084 || B-WINGS HAM || B-Wings || Stage 1
|-
| 085 || NINJA 7 || Ninja-Kun || Scene 7
|-
| 086 || ALIAN LAIR FIA || Contra || Stage 8
|-
| 087 || BOMBER MAN DF || Bomber Man 1 || Stage 1
|-
| 088 || DIG DUG 7 || Dig Dug || Round 7
|-
| 089 || BASE1 SHO || Contra || Stage 2 – Base 1
|-
| 090 || TANK USR || Battle City || Stage 31
|-
| 091 || COMBAT CX || Field Combat ||
|-
| 092 || WATERFALL SHO || Contra || Stage 3
|-
| 093 || SUPER MARIO 6 || Super Mario Bros 1 (Platforms / 1986) || World 6-1
|-
| 094 || B-WINGS JMP || B-Wings || Stage 1
|-
| 095 || BASE2 SHO || Contra || Stage 4 – Base 2
|-
| 096 || NINJA 8 || Ninja-Kun || Scene 8
|-
| 097 || ARKANOID 7 || Arkanoid || Round J
|-
| 098 || SNOW FIELD SHO || Contra || Stage 5
|-
| 099 || DIG DUG 8 || Dig Dug || Round 8
|-
| 100 || GALAXIAN 5 || Galaxian || Flag 5
|-
| 101 || COMBAT DX || Field Combat ||
|-
| 102 || DIG DUG 9 || Dig Dug || Round 9
|-
| 103 || TANK IRI || Battle City || Stage 34
|-
| 104 || ENERGY ZONE SHO || Contra || Stage 6
|-
| 105 || B-WINGS DY || B-Wings || Stage 1
|-
| 106 || NINJA 9 || Ninja-Kun || Scene 9
|-
| 107 || HENGAR SHO || Contra || Stage 7
|-
| 108 || SUPER MARIO 7 || Super Mario Bros 1 (Platforms / 1986) || World 7-1
|-
| 109 || SUPER 1942 || 1942 ||
|-
| 110 || BOMBER MAN AN || Bomber Man 1 || Stage 1
|-
| 111 || TANK-II || Battle City || Stage 1
|-
| 112 || ARKANOID 8 || Arkanoid || Round L
|-
| 113 || ALIEN LAIR SHO || Contra || Stage 8
|-
| 114 || GALAXIAN 6 || Galaxian || Flag 6
|-
| 115 || SUPER TWIN BEE || TwinBee ||
|-
| 116 || COMBAT EX || Field Combat ||
|-
| 117 || TANK FRE || Battle City || Stage 18
|-
| 118 || B-WINGS FIR || B-Wings || Stage 1
|-
| 119 || DIG DUG 10 || Dig Dug || Round 10
|-
|-
| 120 || SUPER MARIO 8 || Super Mario Bros 1 (Platforms / 1986) || World 8-1
| 120 || SUPER MARIO 8 || Super Mario Bros 1 (Platforms / 1986) || World 8-1
|}
|}

Revision as of 18:17, 26 March 2023

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
Chips Description
Blob PRG-ROM
Blob CHR-ROM
Usual fonctionnal chips
Chips Description
74LS161A - 6.70 BCD Decade counters / 4-bit binary counters
GD74LS00 - 9223 - GoldStar NAND 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

		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
Game Name Original Game Name Level
001 CONTRA Contra Stage 1
007 GALAXIAN Galaxian Flag 1
008 FIAME CONTRA Contra Stage 1
120 SUPER MARIO 8 Super Mario Bros 1 (Platforms / 1986) World 8-1