1993 Super 50 in 1 Game: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Created page with "== Description == The cartridge is a multigames cartridge dated from 1993. Versions known : * 1993 Super 50 in 1 Game : NES version (72-pin) == Hardware == {| class="wikitable" align="center" style="margin: auto;" |- !colspan="1"| NES PCB (Front mirrored picture) || NES PCB (Bottom picture) |- | 600px|center|120 in 1 NES PCB (Front mirrored picture) || 600px|center|120 in 1 NES PCB (Bottom picture) |} {...")
 
 
(11 intermediate revisions by the same user not shown)
Line 10: Line 10:
!colspan="1"| NES PCB (Front mirrored picture) || NES PCB (Bottom picture)
!colspan="1"| NES PCB (Front mirrored picture) || NES PCB (Bottom picture)
|-
|-
| [[File:Pcb120in1-top-reverse.jpg|600px|center|120 in 1 NES PCB (Front mirrored picture)]] || [[File:Pcb120in1-bottom.jpg|600px|center|120 in 1 NES PCB (Bottom picture)]]
| [[File:50in1-MG109-frontside-inverse.jpg|600px|center|50 in 1 NES PCB (Front mirrored picture)]] || [[File:50in1-MG109-bottomside.jpg|600px|center|50 in 1 NES PCB (Bottom picture)]]
|}
|}


Line 20: Line 20:
!colspan="1"| Chips || Description
!colspan="1"| Chips || Description
|-
|-
| 8M12 - 5003AJ213-PA20C - S22431 - H9208 || Probably 1 MB chip (need confirmation)
| Blob || PRG-ROM
|-
|-
| Hyundai HY6264LP-10 - 9040D || 8K x 8-bit CMOS SRAM, 150ns
| Blob || CHR-ROM
|-
|-
!colspan="2"| Usual fonctionnal chips
!colspan="2"| Usual fonctionnal chips
Line 28: Line 28:
!colspan="1"| Chips || Description
!colspan="1"| Chips || Description
|-
|-
| GD74LS161A - 9204 - GoldStar || Binary Counter, LS Series, Synchronous, Positive Edge Triggered, 4-Bit, Up Direction, TTL, PDIP16
| 74LS161A - 6.70 || BCD Decade counters / 4-bit binary counters
|-
|-
| GD74LS32 - 9211 - GoldStar || OR Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14
| GD74LS00 - 9223 - GoldStar || NAND Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14
|-
| GD74LS157 - 9220 - GoldStar || Multiplexer, LS Series, 4-Func, 2 Line Input, 1 Line Output, True Output, TTL, PDIP16
|-
| HD74HC02P - 1K45 || NOR Gate, HC/UH Series, 4-Func, 2-Input, CMOS, PDIP14
|-
| GD74LS273 - 9209 - GoldStar || D Flip-Flop, LS Series, 1-Func, Positive Edge Triggered, 8-Bit, True Output, TTL, PDIP20
|-
| GD74LS02 - 9215 - GoldStar || NOR Gate, LS Series, 4-Func, 2-Input, TTL, PDIP14
|-
| GD74LS153 - 9217 - GoldStar || Multiplexer, LS Series, 2-Func, 4 Line Input, 1 Line Output, True Output, TTL, PDIP16
|}
|}




[[File:CART500 120 in 1 schematic 0.png|1400px|center|120 in 1 Schematic]]
[[File:CART496 50 in 1 schematic 0.png|1400px|center|50 in 1 Schematic]]
 
<pre>
111111
5432109876543210
[1.....bPxPPPPpmv]
      | |    |+- 0=16K,1=32K
      | |    +-- 0=V, 1=H
      | +-------- 1=NROM, 0=UNROM
      +---------- UNROM bank
</pre>
 
The CHR part is a RAM chip, so it doesn't contain any datas to dump.


== Software ==
== Software ==


The 120 in 1 rom contains 512 KB of PRG and no CHR.
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 227]] on the 25 march 2023.


It contains 13 different games that can be beginned at different levels.
The rom has been dumped and assigned to the [[INES Mapper 200]].


The rom is fully supported from FCEUX 2.6.6.
It contains 4 different games that can be beginned at different levels.


== Dumping method ==
== Dumping method ==


For dumping this cartridge, it's necessary to short-circuit this capacitor (by putting an electric wire between its two pins) :
This script can dump the cartridge with the INLretro-prog dumper (Device firmware version: 2.3.x) :  
[[File:Pcb120in1-capacitor.jpg|frame|center|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) :  


{| 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
local dumpn120_72 = {}
local dumpmg109 = {}


-- import required modules
-- import required modules
Line 93: Line 66:
local swim = require "scripts.app.swim"
local swim = require "scripts.app.swim"
local buffers = require "scripts.app.buffers"
local buffers = require "scripts.app.buffers"


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


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


Line 123: Line 95:
end
end


dict.nes("NES_CPU_WR", 0x8000 | ((read_count & 0x1f) << 2) | ((read_count << 3) & (1 << 8)) , read_count)
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 )
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
read_count = read_count + 1
Line 154: Line 157:
dict.io("NES_INIT")
dict.io("NES_INIT")


print("\nRunning dumpN120_72.lua")
print("\nRunning dumpMG109.lua")


--dump the cart to dumpfile
--dump the cart to dumpfile
Line 168: Line 171:
--dump cart into file
--dump cart into file
time.start()
time.start()
--dump cart into file
--dump cart into file
dump_prgrom(file, prg_size, false)
dump_prgrom(file, prg_size, false)
 
dump_chrrom(file, chr_size, false)
time.report(prg_size)
time.report(prg_size)


Line 183: Line 185:


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


-- return the module's table
-- return the module's table
return dumpn120_72</pre>
return dumpmg109</pre>
|}
|}


Under UNIX, the commands to run are :
Under UNIX, the commands to run are :
<pre>
<pre>
./inlretro -s scripts/inlretro3.lua -c NES -m dumpn120_72 -x 512 -d 120in1-contra-1992.nes
./inlretro -s scripts/inlretro3.lua -c NES -m dumpmg109 -x 64 -y 32 -d 50in1-1993.nes
</pre>
</pre>


Line 197: Line 199:
The NES header of the rom is to set to
The NES header of the rom is to set to
<pre>
<pre>
4E 45 53 1A 20 00 30 E0 00 00 00 00 00 00 00 00
 
</pre>
</pre>


== 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 223: Line 216:
!colspan="1"| N° || Game Name || Original Game Name || Level
!colspan="1"| N° || Game Name || Original Game Name || Level
|-
|-
| 001 || CONTRA || Contra || Stage 1
| 1 || DUCK HUNT || Duck Hunt || Game A : 1 duck
|-
| 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
| 2 || TWO DUCKS HUNT || Duck Hunt || Game B : 2 ducks
|-
|-
| 073 || GALAXIAN 4 || Galaxian || Flag 4
| 3 || CLAY SHOOTING || Duck Hunt || Game C : Clay Shooting
|-
|-
| 074 || BASE2 FIA || Contra || Stage 4 – Base 2
| 4 || WILD GUNMAN || Wild Gunman || Game A : 1 outlaw
|-
|-
| 075 || BOMBER MAN TW || Bomber Man 1 || Stage 1
| 5 || TWO GUNMEN || Wild Gunman || Game B : 2 outlaws
|-
|-
| 076 || DIG DUG 6 || Dig Dug || Round 6
| 6 || SALOON GUNMEN || Wild Gunman || Game C : Gang
|-
|-
| 077 || SNOW FIELD FIA || Contra || Stage 5
| 7 || BATTLE CITY 1 || Battle City || Stage 1
|-
|-
| 078 || SUPER MARIO 5 || Super Mario Bros 1 (Platforms / 1986) || World 5-1
| 8 || BATTLE CITY 2 || Battle City || Stage 2
|-
|-
| 079 || B-WINGS AT || B-Wings || Stage 1
| 9 || BATTLE CITY 3 || Battle City || Stage 3
|-
|-
| 080 || ENERGY ZONE FIA || Contra || Stage 6
| 10 || BATTLE CITY 4 || Battle City || Stage 4
|-
|-
| 081 || TANK LEB || Battle City || Stage 28
| 11 || BATTLE CITY 5 || Battle City || Stage 5
|-
|-
| 082 || ARKANOID 6 || Arkanoid || Round G
| 12 || BATTLE CITY 6 || Battle City || Stage 6
|-
|-
| 083 || HENGAR FIA || Contra || Stage 7
| 13 || BATTLE CITY 7 || Battle City || Stage 7
|-
|-
| 084 || B-WINGS HAM || B-Wings || Stage 1
| 14 || BATTLE CITY 8 || Battle City || Stage 8
|-
|-
| 085 || NINJA 7 || Ninja-Kun || Scene 7
| 15 || BATTLE CITY 9 || Battle City || Stage 9
|-
|-
| 086 || ALIAN LAIR FIA || Contra || Stage 8
| 16 || BATTLE CITY 10 || Battle City || Stage 10
|-
|-
| 087 || BOMBER MAN DF || Bomber Man 1 || Stage 1
| 17 || BATTLE CITY 11 || Battle City || Stage 11
|-
|-
| 088 || DIG DUG 7 || Dig Dug || Round 7
| 18 || BATTLE CITY 12 || Battle City || Stage 12
|-
|-
| 089 || BASE1 SHO || Contra || Stage 2 – Base 1
| 19 || BATTLE CITY 13 || Battle City || Stage 13
|-
|-
| 090 || TANK USR || Battle City || Stage 31
| 20 || BATTLE CITY 14 || Battle City || Stage 14
|-
|-
| 091 || COMBAT CX || Field Combat ||  
| 21 || BATTLE CITY 15 || Battle City || Stage 15
|-
|-
| 092 || WATERFALL SHO || Contra || Stage 3
| 22 || BATTLE CITY 16 || Battle City || Stage 16
|-
|-
| 093 || SUPER MARIO 6 || Super Mario Bros 1 (Platforms / 1986) || World 6-1
| 23 || BATTLE CITY 17 || Battle City || Stage 17
|-
|-
| 094 || B-WINGS JMP || B-Wings || Stage 1
| 24 || BATTLE CITY 18 || Battle City || Stage 18
|-
|-
| 095 || BASE2 SHO || Contra || Stage 4 – Base 2
| 25 || BATTLE CITY 19 || Battle City || Stage 19
|-
|-
| 096 || NINJA 8 || Ninja-Kun || Scene 8
| 26 || BATTLE CITY 20 || Battle City || Stage 20
|-
|-
| 097 || ARKANOID 7 || Arkanoid || Round J
| 27 || BATTLE CITY 21 || Battle City || Stage 21
|-
|-
| 098 || SNOW FIELD SHO || Contra || Stage 5
| 28 || BATTLE CITY 22 || Battle City || Stage 22
|-
|-
| 099 || DIG DUG 8 || Dig Dug || Round 8
| 29 || BATTLE CITY 23 || Battle City || Stage 23
|-
|-
| 100 || GALAXIAN 5 || Galaxian || Flag 5
| 30 || BATTLE CITY 24 || Battle City || Stage 24
|-
|-
| 101 || COMBAT DX || Field Combat ||  
| 31 || BATTLE CITY 25 || Battle City || Stage 25
|-
|-
| 102 || DIG DUG 9 || Dig Dug || Round 9
| 32 || BATTLE CITY 26 || Battle City || Stage 26
|-
|-
| 103 || TANK IRI || Battle City || Stage 34
| 33 || BATTLE CITY 27 || Battle City || Stage 27
|-
|-
| 104 || ENERGY ZONE SHO || Contra || Stage 6
| 34 || BATTLE CITY 28 || Battle City || Stage 28
|-
|-
| 105 || B-WINGS DY || B-Wings || Stage 1
| 35 || BATTLE CITY 29 || Battle City || Stage 29
|-
|-
| 106 || NINJA 9 || Ninja-Kun || Scene 9
| 36 || BATTLE CITY 30 || Battle City || Stage 30
|-
|-
| 107 || HENGAR SHO || Contra || Stage 7
| 37 || BATTLE CITY 31 || Battle City || Stage 31
|-
|-
| 108 || SUPER MARIO 7 || Super Mario Bros 1 (Platforms / 1986) || World 7-1
| 38 || BATTLE CITY 32 || Battle City || Stage 32
|-
|-
| 109 || SUPER 1942 || 1942 ||  
| 39 || BATTLE CITY 33 || Battle City || Stage 33
|-
|-
| 110 || BOMBER MAN AN || Bomber Man 1 || Stage 1
| 40 || BATTLE CITY 34 || Battle City || Stage 34
|-
|-
| 111 || TANK-II || Battle City || Stage 1
| 41 || BATTLE CITY 35 || Battle City || Stage 35
|-
|-
| 112 || ARKANOID 8 || Arkanoid || Round L
| 42 || MARIO BROS 1 || Mario Bros (Arcade / 1983) || Phase 1
|-
|-
| 113 || ALIEN LAIR SHO || Contra || Stage 8
| 43 || MARIO BROS 2 || Mario Bros (Arcade / 1983) || Phase 2
|-
|-
| 114 || GALAXIAN 6 || Galaxian || Flag 6
| 44 || MARIO BROS 3 || Mario Bros (Arcade / 1983) || Phase 3
|-
|-
| 115 || SUPER TWIN BEE || TwinBee ||  
| 45 || MARIO BROS 4 || Mario Bros (Arcade / 1983) || Phase 4
|-
|-
| 116 || COMBAT EX || Field Combat ||  
| 46 || MARIO BROS 5 || Mario Bros (Arcade / 1983) || Phase 5
|-
|-
| 117 || TANK FRE || Battle City || Stage 18
| 47 || MARIO BROS 6 || Mario Bros (Arcade / 1983) || Phase 6
|-
|-
| 118 || B-WINGS FIR || B-Wings || Stage 1
| 48 || MARIO BROS 7 || Mario Bros (Arcade / 1983) || Phase 7
|-
|-
| 119 || DIG DUG 10 || Dig Dug || Round 10
| 49 || MARIO BROS 8 || Mario Bros (Arcade / 1983) || Phase 8
|-
|-
| 120 || SUPER MARIO 8 || Super Mario Bros 1 (Platforms / 1986) || World 8-1
| 50 || MARIO BROS 9 || Mario Bros (Arcade / 1983) || Phase 9
|}
|}

Latest revision as of 19:05, 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

		-- 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
Game Name Original Game Name Level
1 DUCK HUNT Duck Hunt Game A : 1 duck
2 TWO DUCKS HUNT Duck Hunt Game B : 2 ducks
3 CLAY SHOOTING Duck Hunt Game C : Clay Shooting
4 WILD GUNMAN Wild Gunman Game A : 1 outlaw
5 TWO GUNMEN Wild Gunman Game B : 2 outlaws
6 SALOON GUNMEN Wild Gunman Game C : Gang
7 BATTLE CITY 1 Battle City Stage 1
8 BATTLE CITY 2 Battle City Stage 2
9 BATTLE CITY 3 Battle City Stage 3
10 BATTLE CITY 4 Battle City Stage 4
11 BATTLE CITY 5 Battle City Stage 5
12 BATTLE CITY 6 Battle City Stage 6
13 BATTLE CITY 7 Battle City Stage 7
14 BATTLE CITY 8 Battle City Stage 8
15 BATTLE CITY 9 Battle City Stage 9
16 BATTLE CITY 10 Battle City Stage 10
17 BATTLE CITY 11 Battle City Stage 11
18 BATTLE CITY 12 Battle City Stage 12
19 BATTLE CITY 13 Battle City Stage 13
20 BATTLE CITY 14 Battle City Stage 14
21 BATTLE CITY 15 Battle City Stage 15
22 BATTLE CITY 16 Battle City Stage 16
23 BATTLE CITY 17 Battle City Stage 17
24 BATTLE CITY 18 Battle City Stage 18
25 BATTLE CITY 19 Battle City Stage 19
26 BATTLE CITY 20 Battle City Stage 20
27 BATTLE CITY 21 Battle City Stage 21
28 BATTLE CITY 22 Battle City Stage 22
29 BATTLE CITY 23 Battle City Stage 23
30 BATTLE CITY 24 Battle City Stage 24
31 BATTLE CITY 25 Battle City Stage 25
32 BATTLE CITY 26 Battle City Stage 26
33 BATTLE CITY 27 Battle City Stage 27
34 BATTLE CITY 28 Battle City Stage 28
35 BATTLE CITY 29 Battle City Stage 29
36 BATTLE CITY 30 Battle City Stage 30
37 BATTLE CITY 31 Battle City Stage 31
38 BATTLE CITY 32 Battle City Stage 32
39 BATTLE CITY 33 Battle City Stage 33
40 BATTLE CITY 34 Battle City Stage 34
41 BATTLE CITY 35 Battle City Stage 35
42 MARIO BROS 1 Mario Bros (Arcade / 1983) Phase 1
43 MARIO BROS 2 Mario Bros (Arcade / 1983) Phase 2
44 MARIO BROS 3 Mario Bros (Arcade / 1983) Phase 3
45 MARIO BROS 4 Mario Bros (Arcade / 1983) Phase 4
46 MARIO BROS 5 Mario Bros (Arcade / 1983) Phase 5
47 MARIO BROS 6 Mario Bros (Arcade / 1983) Phase 6
48 MARIO BROS 7 Mario Bros (Arcade / 1983) Phase 7
49 MARIO BROS 8 Mario Bros (Arcade / 1983) Phase 8
50 MARIO BROS 9 Mario Bros (Arcade / 1983) Phase 9