Making a ROM/Emulator is only a small part of this story (it's about a kid trying to ace the game in question).
Writing an emulator program from scratch for even a single game ROM/PCB is
WAY too technical for a kid.
- He'd have to be a
highly competent programmer (Assembly Language for the game software and C++ for the emulator program) and electrical engineer (to know how to simulate the electrical components on the PCB), in addition to many other skills.
- Even if he started the story with the necessary skillset, it would take a long time to figure out and document
all of the connections on the PCB -- every trace, every component.
To get a small picture of how difficult it would be, take a look at the schematic diagram for the Scramble PCB that I mentioned earlier on pages 8 and 9 of the manual here.
https://www.arcade-museum.com/manuals-videogames/S/Scramble.pdfA plausible approach to the kid being able to import the game from the GameY PCB to an already-written emulator is if:
- GameY is a prototype developed on a PCB from a previously released GameX.
- GameX is already well-documented and emulated.
Under those circumstances, it would be possible for the kid to dump the GameY ROMs and run them using the emulator program for GameX. He'd probably need to change the checksum value for the ROM files in the emulator source code and recompile the program to make it work.
For example, the hardware from Scramble (Konami 1981) was also used for Super Cobra (Konami 1981).
- Notice that the audio ROM names end in "5c", "5d", and "5e". This tells you the physical location on the PCB using the letters and numbers printed on the PCB. These are the three white label ICs in the pic above -- 5c is on the right.
- Here's the different checksum values for those ROMS in the MAME source code.
https://github.com/mamedev/mame/blob/master/src/mame/galaxian/galaxian.cppScramble (lines 14756-14759)
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "ot1.5c", 0x0000, 0x0800, CRC(bcd297f0) SHA1(8ed78487d76fd0a917ab7b258937a46e2cd9800c) )
ROM_LOAD( "ot2.5d", 0x0800, 0x0800, CRC(de7912da) SHA1(8558b4eff5d7e63029b325edef9914feda5834c3) )
ROM_LOAD( "ot3.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) )
Super Cobra (lines 15573-15576)
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "5c", 0x0000, 0x0800, CRC(d4346959) SHA1(5eab4505beb69a5bdd88b23db60e1193371250cf) )
ROM_LOAD( "5d", 0x0800, 0x0800, CRC(cc025d95) SHA1(2b0784c4d05c466e0b7648f16e14f34393d792c3) )
ROM_LOAD( "5e", 0x1000, 0x0800, CRC(1628c53f) SHA1(ec79a73e4a2d7373454b227dd7eff255f1cc60cc) )
How would this prototype game end up with the kid?
- Prototype games were often sent to a regular arcade for play-testing.
- If the company developing the game had to suddenly shut down, they could have lost/misplaced the records showing where that game was being play-tested.
- If the company developing the game used hardware designed by another game company, the game devs would have good reason to be secretive about the project and conceal the records.
- If the arcade owner went out of business, put the games into storage, and later passed away, the heirs might sell the dilapidated old cab to the kid, not realizing that the game is a unique prototype that collectors would want to preserve.
- If the prototype game is in a dilapidated generic cab and the PCB is from a common but not-so-popular game, many buyers -- particularly game-flippers -- are not likely to buy the cab,
especially if they don't notice that the labels on the ROMs are different
or if the game isn't powered on so they don't notice that it isn't the game they think it is.
Another possible approach is that the kid could use the GameY ROMs with a GameX PCB/cabinet.
- This eliminates the emulation plot points, but still allows for the repair and ROM dumping/burning plot points if desired.
Scott