Emulation consists of mimicking what these processors do in order to produce the same pixel output within the emulated game.Īnyway, this page just acts as a list of the major things I worked on – feel free to contact me if interested in any of them! Sometimes I still get email from owners of the real arcade hardware asking for advice on repairs. Each hardware platform would typically have it’s own graphic processors with their own unique input format. Like modern computers the CPU would write instructions or often simple ‘layouts’ for the GPU chips to generate the on-screen visuals. Now-a-days they would be called GPU’s and old arcade hardware would typically have several of these ‘GPU’ chips – 1 or 2 dedicated to sprites, and maybe 3 or 4 dedicated to each ‘layer’ of tilemap graphics. ‘Main’ memory is easy as usually the CPU stack is placed there – what can be more complex are the graphics co-processors.
When you have the CPU emulator executing that code you can see what it writes to and what it reads from – from this you can start to build a memory map of the target hardware. With that you could guess what those IRQ’s may be – a vertical blank (refresh) interrupt is the common one – around 60 times a second. Typically for code you would look for something identifiable – for example the 68000 CPU has a distinctive vector table at the start of memory map – from that you can guess reset and IRQ vectors. From this you identify what looks like code, what is graphics, what is sound, just from the hex patterns. Usually you start with just the raw ROM data which can be viewed in a hex editor. The process of arcade emulation is a unique challenge – usually no instructions, documents or schematics were available so the emulation is based on reverse engineering and educated guesswork. MAME was originally written in C though it has been refactored several times since 1997 and is currently C++. For those that don’t know MAME is an open source emulation project for old arcade machine hardware and emulates almost all old arcade games. Possible legal problems that might occur if too recent, even commercialized, games are emulated.I spent a lot of time on MAME project from around 1997-2004.
The encryption used internally by many recreational, as a means to avoid piracy.
The difficulty of accessing the plates (hardware) of the original arcades, to study them and to extract the ROMs (copy of the software of the machine, which contains the game itself). The development of the MAME project has been hampered in these years by different factors: The goal of the development of MAME is to contribute to the conservation of games that, otherwise, disappear forever by disappearing the machines that contained them, contributing to preserve the history of video games. It based its structure on a modular architecture, in which each component of the hardware was emulated by a specific driver, in such a way that for the emulation of a machine, it is enough to give the information of what components it has, and how they relate. To facilitate the emulation of the recreational machines, Nicola Salmona created MAME by merging several emulators he had been working on. Prior to the creation of this emulator, the enormous diversity of the hardware of the arcade machines made the emulation of their games a very complex and untidy task.