Emulation Section

Emulation Programming

Documents

Around 2001 I wrote a document about emulation programming for my final year project of my Computer Science studies, here at UPC-FIB. It is mainly centered in the techniques for implementing the emulation of a CPU, but there are also a small chapter about graphic and sound emulation and other peripherics.

For the project I also implemented a simple Master System emulator using a modified version of Neil Bradley's MZ80 core (to support bank addressing) and a Space Invader emulator. The source for both can be found in the code section.


Study of the Techniques for Emulation Programming

Emulation Programming slides (spanish)


With Kieron Wilkinson and Neil Griffith I wrote a tutorial around the emulation of the i8080 CPU for a Space Invader emulator in the (now dead) mul8 mail list. It was never really finished but covers most of the concepts for implementing a CPU interpreter emulator.


i8080 for Space Invaders Tutorial


It is hard to find good documents about general emulation programming. Here I list the ones I found more useful while I was writing my document.


Marat Fayzullin How To (local copy)

Emulation programming from Dan Boris

Arcade Emulation How To

Emulation Programming document from Kevin Brisley

Code

A Master System (and GameGear as they are mostly the same thing) emulator. It uses a modified version of Neil Bradley's MZ80 Z80 emulator, fully implemented in x86 assembly. For Windows, uses the SDL graphic and sound library.

MAS


A Space Invader emulator for Windows, the i8080 core is just a large and simple switch I wrote in a couple of days.


SI2001

Links

Currently most of the pages I knew about emulation programming are dead. And the ones which are not dead have not been updated for ages.


How To Emulation is a repository with documents and tutorials for programming emulators. The site has resurrected lately.

HowToEmulation


The original Emulation Programming Repository. It is still there but has not been updated for ages. It has documents about the internals of CPUs, consoles and arcade machines.

EPR - Emulation Programming Resources


Dan Boris was a member of the Emul8/Mul8 mail list and worked for M.A.M.E. in the old days. His page about emulation with a number of documents and references is still there.

Dan Boris Emulation Programing Page


You can use the Retrogrames Forum section about Emulation Programming to ask any question. There is always a number of emulator authors around there and use to be glad to answer any question related with the topic.

Retrogames Emulation Programming Forum Section


M.A.M.E. could be described as the Massive Awful Monster of Emulation. M.A.M.E. nazis find hard to acknowledge emulation outside there. It has become large and monstrous (and slower, slower, slower, slower and even more slower ;) after years of development. It is easy to discover a M.A.M.E. nazi, they point you to the M.A.M.E. source for any emulation related question. BUT CODE IS NOT DOCUMENTATION. May be they missed some leassons somewhere. In any case as there is hardly any other source for most of the Arcade Machine hardware and many CPUs its source can be used as a last chance (or more exactly, the only) reference.

Putting aside the politic/religious stuff there is a lot of serious work there. Feel free to take a look to their CPU cores (the asm ones are also interesting) or their video and sound emulation modules (for most graphic and sound chips that is the only source of code ... and documentation in the open world). And try to avoid everything that make it monstrous and awful.

Mame Source Code


Those are a couple of Yahoo groups (mail lists) that related with emulation.


ArcadeDev is about development of games for old Arcade Machines, can be a source for information about arcade machines.

ArcadeDev

ArcadeDev Mail List at Yahoo Groups


SegaDev is about development for Sega consoles and arcade machines. There are a lot of experienced emulator programmers around there.

SegaDev


The How To Emulation group at Yahoo doesn't have much (any) traffic lately but you can join and read the old posts and there may be still people lurking there (as I am) that can help you if you have a doubt or an emulation programming related problem.

HowToEmulation Mail List


Bart Trzynadlowski page. Author of Genital, a Sega Genesis emulator, and other interesting emulation projects, currently working in dynamic binary translation stuff and senior member of the Dynarec mail list. He is also an active member at the SegaDev mail list.

Bart Home Page


Charles McDonald has documents with information about various Sega machines. He is also the author of a number of emulators. He has done a lot of work reverse engineering the Master System and Sega Genesis VDPs (video processor) and later in the System24 arcade machine. He is an active member at SegaDev.

Charles McDonald Page


Kaneda's Page has info and development tools for the Sega Genesis and Sega Saturn consoles. An active member of the SegaDev mail list.

ConsoleDev


/tr>
Mail: Victor Moya Last modified: December 21st, 2004.