Dennis Ranke has released his cross assembler which very cleverly patches the BASIC assembler in the same was as ExtBas, but to allow it to assemble code for the Z80, 6502 and Chip8. The assembly language to be used is set by adjusting the OPT value passed to the assembler, but once the BASICXasm module is loaded, it is completely transparent. A superb little tool which is invaluable for those who wish to develop emulators or software for the supported CPUs. Dennis is also looking at adding other assembly languages, possibly including 65C816 and 68000. BASICXasm also comes with demonstration code for all supported systems, including Icebird's superb gameboy library! You'll need to use ExtBas to assemble the demonstration Gameboy code though.
BASICXasm v2.05 (28/8/98)
BASICXasm (25Kb
ZIP file)
Alain Brobecker has been working on an ARM coded 6502 emulator using the BASIC assembler for free release. The emulator is very fast, running at about 4MHz on an ARM3 and is available to be used by anyone who wants to (in freeware projects). It has a very nice debugger built in with every feature you could ask for. There aren't many bugs left in the emulator at all (there is inevitably one somewhere) and Alain is using it to develop his Atom Bomb, Acorn Atom emulator to put it fully to the test. If you are thinking of starting to write an emulator of a 6502 system I suggest you take a look.
emul6502 v0.07 (28/8/98)
emul6502
(23Kb ZIP file)
Alain also maintains a cross development page
with details about creating programs for other platforms (which can be
run under emulation) on your Acorn.
http://www.cybercable.tm.fr/~brooby/xdev.htm
Marco Baye has written ACME (A Crossassembler for Multiple Environments) as a portable cross-assembler to be converted to several different platforms. At present there are versions for RISC OS, DOS, Linux and AmigaOS with OS/2 and C64/128 to follow shortly. ACME can assemble code for most of the 65xx series of processors, particularly the 6502, 65c02 and 65816 (SNES), support for the illegal 6510 opcodes (as used in the C64) is being added and the Z80 processor may be added shortly.
ACME was originally developed in order that Marco could code for the Commodore C128 on both his RISC PC and the C128 using the same assembler without having to change the code at all. The source code is freely available under the GNU GPL license and the C128 version will be out soon. Since it is to be used primarily for C128 development, it is no surprise that the assembler features some C64 specific features, if someone sends Marco info about what to add to make it an ideal BBC cross-assembler, he may of course include that as well.
ACME v0.04 beta (12/98)
ACME (115Kb ZIP file)
ACME homepage
Here is a collection of links to resources that may be helpful if you are trying to write/port an emulator, although this list is by no means comprehensive, it is a good starting point, and even if what you want is not listed here, then you'll probably be able to find it quite quickly from one of these pages. I recommend you try out the first few miscellaneous pages listed, as they're very comprehensive!!
Amiga:
Fellow
(source)
Amstrad CPC:
CPC
by Mark Rison (source)
Apple Mac:
vMac
(source)
AppleIIe:
Apple][ emulator
(source)
Arcade
MAME,
multiple arcade machines (C source)
Atari Lynx:
Handy version 0.40
(C++ source) - already ported
Atari
Lynx technical info
Atari ST:
Atari
ST technical info - by Sam Ellis
STonX
page - portable Atari ST emulator (source)
Atari 800:
Atari 800,
800XL, 130XE, 5200 emulator (C source) - already ported
Atari 2600:
Atari
2600 tech information
Atari 2600
emulator (source)_
Stella
- multiplatform Atari 2600 emulator (source) - already ported
PC Atari (pascal
and 80x86 source)
BBC:
BBCem
page (C source code), v0.80 and lower as later use DirectX
BeebInC
page (C source code)
BBC Lives
technical documents
BBC
documentation project
ColorGenie
ColourGenie
emulator source code
Colecovision:
Colecovision
(C source) - already ported!
ADAMem colecovision (C and miniscule 80x86asm) - already ported
Virtual
ColecoVision (J++ java & C++ also)
Commodore (PET, VICE 20 etc.):
VICE
(source) - already ported
Dragon:
Dragon
& Tandy CoCo (source)
Gameboy:
Marat's
Gameboy page
Jeff
Frohwein's Gameboy Technical Docs
Jen's
GB emu (80x86 assembly)
Andreas
Stroiczek's ARM coded Gameboy emulator source
MSX:
MSX
FAQ
fMSX (C source)
- already ported!
NES:
Marat's
NES hardware doc
The NES tech
repository - some good NES docs
xNES (C source) - already ported & discontinued
Nezulator
(Pascal source)
6502
emulator from Nesticle (80x86 assembly)
How
to write a NES homebrew game
NEScript
- mid-level language for NES development
Angelic
Design NESdev - another development kit (in development)
Icarus Productions
- a few interesting Gameboy Color homebrew ROMS
WinNES (Delphi source)
Nintendo64:
N64
technical docs - info is rather limited at the moment.
DEXTROSE
PC Engine:
TurboGrafx
(PCEngine) internals
Jen's
(VPCE author) TurboGrafx tech info
HuGo
PC Engine (C source)
TGsim (C source)
PCE
Hack list
TG16
hacking
Paul
Clifford's PCE information page
Paul
Clifford's Programmable Sound Generator info
Paul
Clifford's Video Colour Encoder info
PlayStation:
pex,
dynamic recompiler core for r3000 (playstation)
PSEmu
v0.1.22 (C source, archive password = marlboro)
FPSE
source (C source)
Sega Master System:
Rich
Talbot-Watkin's SMS technical guide
Massage
v0.61 (80x86 Assembly source)
Zophar's Domain Master System/Game Gear technical docs
SNES:
SNEeSe
SNES (C & lots of x86 source)
Snes9x (C
source) - already ported
Spectrum:
Spectrum FAQ
Q-emuLator
support page - Sinclair QL details.
X128 Spectrum emulator
(source)
QLAY
emulator for Sinclair QL (with 68000 source available)
Jasper,
Spectrum (java source)
Vectrex:
Vectrex
Emulator page
Virtual Boy:
Virtual
Boy Technical Information
Windows:
WINE windows emulator
(C source)
CPUs:
6502
Cross development tools - loads of assemblers, compilers and 6502 documentation
(a lot are PC based)
6502 and Z80 portable
emulators (C source)
both C & x86
assembly Z80 emulator
both C & x86
assembly 6502 emulator
x86
assembly Atari math box emulator
ARM
code 6502 (unreleased) - David Sharp
ARM code
6502 (incomplete) - Alain Brobecker
Miscellaneous:
MESS source - multiple
console and computer emulator source
Emulation Programmers Resource
- good collection of emulation info
Emulation
Programming Repository - a collection of emulation info.
The Console
Programming Page - loads of good info on SNES and Megadrive!
Some
Emulator programming ideas from the author of CAGE (for the PC)
Sources
for GB97, NESa and many more
Computer Emulation
Resources
Marat Fayzullin's
homepage (including how to write an emulator in simple terms)- this
man is an emulation god!!
Console Hack
- BIOS archive for PlayStation, N64 and Sega Saturn
Jim
Breen's Japanese Translation page - very handy if there's some docs
you can't read!
Allegro graphics library
information - used in a lot of C emulators.
Features of a good emulator...
Save/Load state at any time.
Pause and advance frame function (not just the systems pause either, a
freeze frame of emulation is nice).
Reset.
Save screenshot.
Ability to set individual options for each ROM if desired.
Frame skip option, and automatic frame skip detection optional.
Installs to icon bar.
Multitasking option.
Various resolutions.
Doesn't require VIDC20 (RPC and later only).
Debugger and disassembler (for the techies).
ROM information, such as size, name, memory mapper used, manufacturers
etc.
Sound sample grabber.
Force slow down emulator (to get past tricky parts in games).
Show Frames/second.
Configurable controls.
Adjustable emulated palette.
StrongARM compatible
Go at normal speed even if could run faster on a StrongARM (speed throttling).
Option to go at maximum speed (no speed throttling).