fMSX |
VGB |
VGBA |
iNES |
MG |
ColEm |
Speccy |
AlmostTI |
Windows |
Android |
Symbian |
How? |
Who? |
Tell! |
While working on computer emulators, I have written a bunch of stuff that may come useful to those who do not like to reinvent the wheel every time they reinvent another bicycle. Below, you will find tools and libraries used in writing and debugging emulators, as well as a collection of useful documents, starting with an emulation how-to.
On October 27 2008, I have released the updated EMULib library with Unix and Maemo support.
The new EMULib adds several image processing functions, now
moved into Image.c
, disk image processing functions
(FDIDisk.c
and Floppy.c
), NetPlay
and networking functions (NetPlay.c
), and the emulation
for new chips: WD2793 and uPD765 floppy disk controllers, Konami's SCC
sound chip, C93xx serial EEPROM, etc.
Later, I intend to implement the same EMULib API for Unix and probably other platforms. let me know if you wish to help.
|
HOWTO: Writing An Emulator | |
This is a little guide I wrote for those who want to write a computer emulator, but are not sure where to start. A lot of people asked for this kind of information. Watch out for more changes and additions to this document. |
Nintendo Entertainment System Architecture | |
This is a document on the NES/Famicom hardware written in the course of development of iNES emulator. Since then, I expanded it, made some corrections, and converted everything into HTML for easy navigation. Watch out for more changes and additions to this document. | |
Nintendo GameBoy Architecture | |
This document covers the Nintendo GameBoy hardware architecture. I wrote it when developing the Virtual GameBoy emulator. As the document has not been updated in a while though, it does not cover a lot of things, such as Color GameBoy extensions and various add-ons like Super GameBoy, Pocket Printer, etc. |
Z80 Portable Emulation Package August 17 2007 | |
6502 Portable Emulation Package August 17 2007 | |
This is the portable source code for my Z80 and 6502 emulation cores. They
are used in my projects, such as
fMSX, MasterGear,
ColEm, Speccy,
and iNES,
as well as by other people:
|
EMULib Portable Source October 27 2008 | |
EMULib Documentation (for the April 21 2002 version) | |
EMULib contains the emulation code for various support chips and
a library of some widely used machine-dependent graphics and sound
functions. Currently included:
I8251 -- Emulation for the Intel i8251 programmable serial interface I8255 -- Emulation for the Intel i8255 programmable parallel interface UPD765 -- Emulation for the uPD765/i8272 floppy disk controller WD1793 -- Emulation for the WD 1793/1794/2793/2794 floppy disk controller AY8910 -- Emulation for the GI AY8910/AY8912 sound chip YM2413 -- Emulation for the Yamaha YM2413 sound chip SN76489 -- Emulation for the TI SN76489 sound chip SCC -- Emulation for the Konami SCC sound chip TMS9918 -- Emulation for the TI TMS9918/TMS9928/TMS9929 video controllers C93XX -- Emulation for the C93xx serial EEPROM chips GBCarts -- Routines to work with GameBoy ROM images (.GB) GBACarts -- Routines to work with GameBoy Advance ROM images (.GBA) DSCarts -- Routines to work with Nintendo DS ROM images (.NDS) NESCarts -- Routines to work with NES/Famicom ROM images (.NES) SMSCarts -- Routines to work with MasterSystem/GameGeat ROM images (.SMS/.GG) Console -- Routines to draw basic text, frames, and windows in a pixel buffer INIFile -- Routines to work read and write values into .INI files NetPlay -- Routines for implementing Network Play feature FDIDisk -- Routines to work with various disk image formats Floppy -- Routines for creating and accessing 720kB floppies Image -- Routines for image processing Sound -- Common audio framework and MIDI logging routines Windows/ -- Windows specific implementation MSDOS/ -- MSDOS specific implementation Unix/ -- Unix specific implementation Maemo/ -- Maemo specific implementation All sound emulation libraries and the MIDI library use the same standardized API. Most of the EMULib source code compiles with any reasonably functional C/C++ compiler. On Windows and MSDOS, you may want to use the free Open Watcom C/C++ compiler. |
EMUTools Source November 30 2001 | |
EMUTools MSDOS Binaries November 30 2001 | |
EMUTools Maemo Binaries October 4 2008 | |
EMUTools Documentation | |
EMUTools is a bunch of utilities, which can be helpful when writing,
debuggin, or using emulators. In the past, I bundled some of these
utilities with my emulators, but later decided to gather them all into a
standalone package. Currently included:
BDIFF -- Binary file comparison UNDOUBLE -- Binary file truncation BEHEAD -- Header truncation NESLIST -- List/check/fix NES ROM images (.NES) GBLIST -- List/check/fix GameBoy ROM images (.GB) GBALIST -- List/check/fix GameBoy Advance ROM images (.GBA) FDSLIST -- List Famicom DiskSystem disk images (.FDS) FAM2FDS -- Convert DiskSystem images from .FAM to .FDS format DASM6502 -- Little 6502 disassembler DASMZ80 -- Little Z80 disassembler GBDASM -- Little GameBoy disassembler |