1992 劃面選關 1050-in-1: Difference between revisions
No edit summary |
|||
Line 80: | Line 80: | ||
It contains 80 different games that can be beginned at different levels. | It contains 80 different games that can be beginned at different levels. | ||
The rom is fully supported from FCEUX 2.6.6. | The rom is fully supported from FCEUX 2.6.6. | ||
Line 231: | Line 220: | ||
4E 45 53 1A C0 00 20 68 11 00 00 07 00 00 00 2A | 4E 45 53 1A C0 00 20 68 11 00 00 07 00 00 00 2A | ||
</pre> | </pre> | ||
== Games List Menu == | |||
{| class="wikitable" align="center" style="margin: auto;" | |||
|- | |||
!colspan="4"| Cartridge Menu | |||
|- | |||
!colspan="1"| N° || Game Name || Original Game Name || Level | |||
|- | |||
| 1 || NORTHERN KEN II || Hokuto No Ken II || Level 1 | |||
|- | |||
| 2 || THE SCHOOL FIGHT || Renegade || Level 1 – Stage 1 | |||
|} |
Revision as of 16:32, 16 March 2023
Description
The cartridge is a multigames cartridge created by SuperVision and dated from 1992.
Two versions are known :
- 1992 劃面選關 1050-in-1 : FAMICOM version (60-pin)
- Super 1050 in 1 (Int'L) [SuperVision Japan] : NES version (72-pin)
Hardware
NES PCB (Front picture) | NES PCB (Bottom mirrored picture) |
---|---|
Datas chips | |
---|---|
Chips | Description |
FAX811 - 9214 D | Probably 1 MB chip (need confirmation) |
FAX812 - 9214 D | Probably 1 MB chip (need confirmation) |
FAX813 - 9214 D | Probably 1 MB chip (need confirmation) |
Usual fonctionnal chips | |
Chips | Description |
HD74LS273P - 2C15 | Octal D-type Positive-edge-triggered Flip-Flops (with Clear) |
DM74LS139N - P9148 | Decoder/Demultiplexer |
GD74LS174 - 9204 - GoldStar | D Flip-Flop, LS Series, 1-Func, Positive Edge Triggered, 6-Bit, True Output, TTL, PDIP16 |
GD74LS153 - 9152 - GoldStar | Multiplexer, LS Series, 2-Func, 4 Line Input, 1 Line Output, True Output, TTL, PDIP16 |
Others chips | |
Chips | Description |
TIBPAL16L8 - 25CN - 434 044FF - Malaysia | 20-PIN programmable array logic |
D4364G - 12L - 9037M9202 - NEC Japan | CHR RAM / 8 bits Static CMOS RAM |
There is one register built of 74273 and 74174 that latches A5..A0, D7..D0 (both chips share the same write signal). All bits ale cleared on power-up. fedcba9876543210 76543210 A~[1??.......PPw???] D~[?mPPPppp] |||||| |||||+++-- PRG A16..14 |||||| ||+++----- PRG A19..17 |||||| |+-------- mirroring (0=V, 1=H) |||+++-----+--------- one of the bits needs to be PRG A13, ||| other two need to distinguish between UNROM, NROM-32, NROM-16 and NROM-8, ||| and one might be for locking writes to the regs (*) ||+------------------ CHR write protection (1=enabled) ++------------------- PRG A21..20 (*) locking might be only used in NROM-32/NROM-16 modes; NROM-8 mode might be used only for accessing CHR data when copying them to the CHR-ROM Because the TIBPAL16L8 behaviour is unknown, meaning of bits A2,A0,A1,D7 is unknown The reset signal can be disabled by shorting it to +5V (short left leg of the diode with +5V)
Software
The 1050 in 1 rom contains 3 MB of PRG and no CHR.
The rom has been assigned to the submapper 1 of the NES 2.0 Mapper 354 on the 28 december 2022.
It contains 80 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) :
This short-circuit in place, this script can dump the cartridge with the INLretro-prog dumper (Device firmware version: 2.3.x) :
dump310331C-32-NRS.lua |
---|
File:Dump310331C-32-NRS.lua.txt |
File:Dump310331C-32-NRS.lua |
-- create the module's table local dump32_310331C = {} -- 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" -- file constants & variables local mapname = "unusabledump" -- local functions local function create_header( file, prgKB, chrKB ) nes.write_header( file, prgKB, 0, op_buffer[mapname], mirroring) end --dump the PRG ROM local function dump_prgrom( file, rom_size_KB, debug ) local KB_per_read = 32 local num_reads = rom_size_KB / KB_per_read local read_count = 0 local addr_base = 0x08 -- $8000 while ( read_count < num_reads ) do if debug then print( "dump PRG part ", read_count, " of ", num_reads) end -- hardware: A0-A2, D0-D2, D7 all go to PAL, which then generates A13-A16 -- A3 controls whether CHR RAM is writeable -- D6 specifies H/V mirroring control -- A4,A12 are A20,A21 -- D3-D5 are A17-A19 local datapart = (read_count & 0x1F) << 1; local addrpart = 0xE000 | ((read_count >> 1) & 0x10) | ((read_count << 6) & 0x1000); --select desired bank(s) to dump dict.nes("NES_CPU_WR", addrpart, datapart) --32KB @ CPU $8000 dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_4KB", 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") --dump the cart to dumpfile if read then print("\nDumping PRG-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_prgrom(file, prg_size, false) time.report(prg_size) --close file assert(file:close()) print("DONE Dumping PRG-ROM") end dict.io("IO_RESET") end -- functions other modules are able to call dump32_310331C.process = process -- return the module's table return dump32_310331C |
NB : As it is a programmable chip, the behavior of the TIBPAL16L8 chip has needed to be understand before writing this dumping script.
Under UNIX, the commands to run are :
./inlretro -s scripts/inlretro3.lua -c NES -m dump310331c -x 4096 -d 1050in1_PRG_4096kb.nes cp 1050in1_PRG_4096kb.nes 1050in1_PRG_3072kb.nes truncate -s 3145744 1050in1_PRG_3072kb.nes
NB : For the truncate : 16 B (header) + 3 MB (3072 x 1024) = 3145744 bytes
The NES header of the rom is to set to
4E 45 53 1A C0 00 20 68 11 00 00 07 00 00 00 2A
Games List Menu
Cartridge Menu | |||
---|---|---|---|
N° | Game Name | Original Game Name | Level |
1 | NORTHERN KEN II | Hokuto No Ken II | Level 1 |
2 | THE SCHOOL FIGHT | Renegade | Level 1 – Stage 1 |