1993 Super 50 in 1 Game: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
Line 50: Line 50:
{| class="wikitable" align="center" style="margin: auto;"
{| class="wikitable" align="center" style="margin: auto;"
|-
|-
!colspan="1"| dumpN120_72.lua
!colspan="1"| dumpMG109.lua
|-
|-
| [[File:dumpN120_72.lua.txt|frame|center|dumpN120_72.lua]]
| [[File:dumpMG109.lua.txt|frame|center|dumpMG109.lua]]
|-
|-
|<pre>-- create the module's table
|<pre>-- create the module's table

Revision as of 18:14, 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 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
Game Name Original Game Name Level
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
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