I have always been fascinated by emulators and there
are plenty on net to try out. This page contains links to some good
emulator resources on the net, and will contain some of the emulators
and utilities that I am working on myself. It also contains information
and links on emulator programming.
General Emulation Links
- Emu Express
- This is one of my favorite overall emulation sites.
- JoseQ's EmuViews
- This site has very in depth news stories as well as interviews
and downloads.
- Retrogames
- Another excellent site for up to date emulator news and discussion.
-
- Emu Unlim
- Yet another good general emulation site.
General Emulator Programming Info
Marat Fayzullin's
Emulation Page: Marat wrote the original Gameboy and Colecovision
emulators and also wrote emulators for the MSX, NES and Sega Master
System. You will also find source code for his generic 6502 and Z80
emulators on this page. He also has a good 'Emulator Programming How-To'
here.
Arcade Emulation How-To:
This is the best document on emulator programming that I have found.
It is geared towards arcade emulation but the info can be applied to
almost any emulator. The documents even contains step-by-step instructions
on how to write an emulator for the arcade game Phoenix.
Neil
Bradley's ASM CPU Cores: This FTP site contains Neil's publicity
available ASM CPU cores for 6502, Z80, 6808 and 6809.
Larry
Bank's Code Corner: Here you will find a series of excellent
articles on different aspects of emulator programing written by the
author of the emulator Cage.
EMUL8 Homepage:
EMUL8 is a hompage and mailing list for people who are interested
in learning how to program emulators.
Emulator Source Code
The following emulator come with source code that you
can look at to see how things are done:
fMSX: MSX
computer emulator by Marat Fayzullin.
Colem: Colecovision
emulator by Marat Fayzullin.
Master Gear:
Sega Master System emulator by Marat Fayzullin.
ACE:
Atari 8-bit computer emulator.
Atari800:
Atari 8-bit computer emulator by Dave Firth.
StonX:
Atari ST emulator by Marinos Yannikos and Martin D. Griffiths.
MAME: Multiple Arcade
Machine Emulator by Nicola Salmoria and MANY others.
NES,
TRS80, VIC20, Atari 2600, Gameboy: All by Paul Robson and all with
source code.
MESS: Multiple
Emulator Super System.: This is a multi console/computer emulator based
on the MAME source. It currently supports Atari 8bit, Atari 5200, NES,
Genesis, TRS80, Colour Genie, Apple II, Astrocade, Kaypro, SMS, and
Vectrex, with more to come.
Tech Info
The hardest part of writing an emulator IMHO is finding
accurate technical info on the system you want to emulate. Here are
some sites that might help:
Video
Arcade Collectors's Archive: Schematics, memory maps and tech info
on various arcade games.
Jeff Frohwein's GameBoy
Tech Page: Gameboy info.
TurboGrafx
16 Internals: TG16 info.
The Classic
Gaming Tech Homepage: Atari 2600 and NES info.
The
Unofficial Nintendo Virtual Boy Homepage: Virtual Boy info.
The
Jaguar Underground Documentation: Atari Jaguar info.
Emulation Programmers
Resource: This is an excellent site with tech info on a wide range
of systems.
Emulation Articles
"How Do I Write an Emulator?"
Vol. 1 by Daniel Boris: This is a document I wrote to help
answer the question of the title. I discusses the basics of microprocessor
based hardware which is an important prerequisite for understand how
emulators work. It the covers the basics of CPU and memory emulation.
"Emulating Pong" by
Daniel Boris: This is an article I wrote to help answer the question
"Why hasn't Pong been emulated yet?".
Converting Schematics to an
Emulator V1.2 by Daniel Boris: I got the idea for this document
while answering a message to someone about the game Zarzon. I decided
this game would be a good example of how to determine a memory map from
schematics. The newest version of this document has a few mistakes fixed
and now has a section on the video circuitry.
Emulating Games - Getting
Started (v0.01a) by Kevin Brisley: An incomplete document from 1997
about the basics of writing an emulator. It's a little out of date but
still has some good information.
A Guide to MAME Drivers
I have seen a lot of people looking for a document on
how to write MAME drivers. There wasn't any documentation available
except for the source code itself, so I finally sat down and wrote one.
These are a little out of date but they are still a good starting point.
Volume 1: Data Structures:
This volume summaries the data structures that make up a MAME driver.
It takes the game Zarzon as an example and describes the function of
each line in each structure. This is by no means a comprehensive guide
to how MAME drivers work, but it does present the basics.
Volume 2: Vidhrdw.c:
This volume describes how the video hardware section of a MAME
driver works.
Recompilation Info
Recompilation is an alternate way of handling emulation,
as opposed to the more common interpreter type emulators. Here are some
links to information on various recompilation techniques.
Dynarec.com: A
site created by Neil Bradley to house information on dynamic recompilation
Executor White Papers:
Executor is a commercial Apple Macintosh emulator for the PC. It
uses recompilation, which means it converts the 68000 code into 80x86
code and then executes the native code. There are 2 white papers on
their site that discuss how this emulator works.
Binary
Translation Resources
Message Boards
If you are looking for a place to discuss emulator programming
check out these Emulator Programming Boards. They tend to not be to
busy, but I try to check them on a regular basis.
Retrogames
My Emulators
(I have moved all these from this page to their respective
pages)
Virtual VCS: This is my MSDOS
port of the Atari 2600 emulator x2600.
Virtual Super System: This is
my Atari 5200 emulator
6502sim: This is a generic 6502
simulator that I wrote.
O2em: This is my Phillips/Magnavox
Odyssey 2 emulator.
Cloak and Dag-ulator V0.60 (Atari Cloak and Dagger arcade
emulator)
Cloak and Dagger was a somewhat obscure arcade game put
out Atari in 1983. It was originally released under the title Agent
X, but was renamed to tie it in with the movie "Cloak and Dagger"
which features the game supposedly being played on a 5200. The game
that you see in the movie is the arcade game wired up to a TV so it
looks like it was running on the 5200. The 5200 version was started,
but never finished so there are no home versions of Cloak and Dagger.
For more information on this check out the Cloak and Dagger Inside
Story.
I am not doing any further development on Cloak and Dagger
since it has been incorporated into MAME, and currently works better
there. I have left the source here for educational purposes. It can
be compiled with DJGPP and Allegro.
To download Cloak and Dag-ulator
0.60 Source click here