New to the Emulation scene? Don’t understand terms like ‘roms’, ‘hardfiles’ and ‘disk images’? Want to get the best performance from your emulator? If so, then read on!
This page is designed to aid people who are new to emulation, and to help you get the most from your emulator. It is by no means a complete HOWTO for emulation, but it will point you in the right direction.
Due to the huge variety of type, styles and platforms for emulators, it is not possible to include everything anyway, but hopefully it will give you some help in solving common problems.
If the answer isn’t here, a pointer to it is!
What is an emulator?
What emulator should I use?
How can I make it work?
What are roms?
What are rom images?
What are disk images?
What is a hardfile?
Where can I get all these from?
What file extensions are for which formats?
Where can I find newsgroup FAQs?
Why won’t xxx run on my emu?
Why is my emu so slow, and
how can I make it go faster?
Why can’t I get sound?
Can I run an emu within an emu?
An emulator is something which mimics something else. In computer terms, this is often a program which ‘pretends’ to be another computer or similar. What this means is that you can use software for another computer on your computer, even if your computer was not designed to do so.
Emulators exist to simulate all kinds of different systems. This can be useful if you have a program for an old computer which you wish to run on your new one, but it is not compatible. For example, you can run Amiga programs on your PC using UAE – the Universal Amiga Emulator.
I have emulators for all kinds of systems, consoles and computers. They’re ideal for ‘Retro gaming’ – running old games for nostalgic reasons.
Firstly, you need to find one. There are plenty of sites on the Internet to download one from. Most emulated systems have several emulators to choose from. You should try all the ones that work on your computer before you decide which one to use, and for some systems it is wise to have more than one emu, as not all software will run on all emulators.
There are several factors which you should keep in mind about which emulator to choose. For example, what do you want it to emulate? How well do you want it to emulate? You must realise that because of their nature, emulators are not perfect. They cannot run 100% of the software perfectly.
Another important factor is the speed of your computer. Some emulators run faster than others, even if they emulate the same machine. This can be due to optimised code, the programming language it is written in, how accurate the emulation, and the number of features the emulator has. Your operating system can have an effect too, for example, the DOS and UNIX versions of MAME are much faster than the Windows and Mac versions.
As a general rule of thumb, the more powerful the machine you want to emulate, the higher your system requirements will be. There are Atari 2600 emulators available which will run at full speed on a 286 PC, but a Nintendo 64 emulator sometimes has trouble doing that with even a 1Ghz machine.
Almost all emulators come with Readme files. Read them. I know it sounds obvious, but hundreds of people don’t and then bombard the relevant newsgroups asking for help that is in the readme.
Generally, you need 3 things in order to run an emulator. (1) The correct system requirements (check the emu manual or readme for this), (2) The system roms (see later) and (3) Something to run on it (e.g. a game or ten). Often (2) can be omitted as it is sometimes not needed or is supplied with the emulator, again, check the readme.
(3) usually comes in the form of roms, or disk or tape images. These can be found on the Internet (check my links page), but the legitimacy of this varies depending on what you are emulating. For the most part, it is illegal to download. This is not a problem if you own it yourself, however, as there are ways of running your legit old software on your emulator.
Newsgroups, especially the binary groups, are a good source of games for your emulators. Most groups have a FAQ (Frequently Asked Questions) page, so look out for it being mentioned, and then read it before posting. If you can’t find it, ask for it’s location.
ROM stands for Read Only Memory. For the emulation people, a ‘rom’ is essentially a game. You know those cartridges that you used to plug into your NES or Megadrive? Well, a rom is a copy of that, in a file format. You ‘plug’ them into your emulator.
These are essentially the same thing as roms, but the name ‘rom image’ usually applies to bios roms or operating system roms (which are commonly required for emulators) rather than the games themselves. It is not incorrect to use this term for games, however.
Whereas console emulators have ‘roms’, computer emulators (e.g. the Atari ST and Amiga emus) have disk images. They are effectively a whole floppy disk converted into a file. Emulators use them is if they were a real floppy in a real drive, and you can usually read from and write to them, just as you would a real one.
Hardfiles are images of entire hard disks. Like disk images, computer emulators use them in the same way a real computer would use a real hard disk. Most emulators that use hardfiles can create them for you, but they’ll usually be blank! They’re ideal for installing an operating system on.
Disk images are quite simple to make yourself, requiring only a small utility running on a real computer. For example, ADF Blitzer runs on your Amiga, making images of disks. You can then transfer these images to the computer which is running the emulator and load them into it. Disk images can also be found on the Internet and in relevant newsgroups.
Hardfiles can be created in this way with some utilities, but it is usually easier to make your own and then install software on that. Some are available on the net, but are generally very large.
Roms are easily obtainable from newsgroups and websites. You can also make your own, but this usually requires some expensive hardware. The same goes for images of bios and OS roms.
.1 Megadrive / SNES
.2 Megadrive / SNES
.a52 Atari 5200
.a78 Atari 7800
.adf Amiga / Acorn
.atr Atari 800
.bin Loads of things – Megadrive / Atari 5200 / Jaguar / etc.
.c64 Commodore 64
.cgb Gameboy Color
.d64 Commodore 64
.dsk Spectrum +3 / Apple ][ / Amstrad CPC / MSX / others
.fds Nintendo Famicom (NES) Disk System
.gb Gameboy / Super Gameboy
.gba Gameboy Advance
.gbc Gameboy Color
.hdf Amiga (hardfile)
.hfv Apple Mac (hardfile)
.img System rom images
.lnx Atari Lynx
.mdv QL (Microdrive image)
.msa Atari ST
.ngp NeoGeo Pocket
.pak Sam Coup�
.pce PC Engine
.prg Several, including Commodore +4 / Vic 20
.rom Mainly system rom images, but also Colecovision and others
.sc Sega SC3000
.sg Sega SG1000
.sgb Super Gameboy
.sms Master System
.sna Spectrum / Amstrad CPC / others
.st Atari ST
.t64 Commodore 64
.tap Spectrum / Amstrad CPC / others
.vb Virtual Boy
.vms Dreamcast VMU
.vmu Dreamcast VMU
Use a search engine. If that doesn’t help, politely request it in the group. Please read it! You will be flamed and abused for doing anything against the FAQ.
Some general guidelines are:
- Lurk (i.e. read the messages but don’t post anything) for at least a week, preferably more if the group doesn’t get much traffic.
- Respect the regulars. They are the people who can help you.
- DO NOT post in HTML. Make sure your newsreader is set to only post in plain text. Don’t post vCards either.
- Post binaries (pictures, roms, zipfiles, etc., basically anything non-text) ONLY to binaries groups, unless the group tolerates it. Most without ‘binary’ or ‘binaries’ in the name do not allow such posts.
Firstly, does anything else run on it? If not, then your emulator probably isn’t set up correctly. Reread the readme. If other games do run on it, then try this one on another emulator for the same system.
It won’t run on that either!
Then try another… not all games run on all emulators, even if they’re emulating the same system.
It won’t run on any of them!
OK. Try the emulator homepages and readmes again. Do they mention any games that won’t run?
Yes, but not this one.
Is the rom/disk image you are using for the correct system? That is, you’re not trying to run Sonic 3 on a NES emulator? Compare the file extension with that of other games that do run.
I have, but they don’t work either!
Try asking for help in a relevant newsgroup (but read the FAQ for it first).
Emulators are very CPU hungry beasties. The more powerful the system you are emulating, the more CPU time the emulator needs. Different emulators for the same system can also run at different speeds. This is often due to speed increasing routines or optimisations, or because of the programming language the emu is written in. In general, emulators written in C or C++ are quite a bit slower than those written in assembly language.
Probably the most likely reason that your emulator runs slow is that your machine isn’t up to the task of running it. Check the readme to ensure you have the right system requirements. Note, however, that these requirements are only what are required to RUN the emu, not necessarily to run it quickly!
Well, the most obvious way is to beef up your system somewhat. A faster processor and more memory can help, as can a better graphics and sound card.
This is only really required if you want to run a Playstation or N64 emulator though really, unless you’ve got something like a P166 or less as not many recent emus will give good performance on these.
The best thing to try, is to tweak the settings of the emu. Read the readme on how to do this, but there are usually only three main ways. Firstly, if the emu has a GUI (graphical user interface – that is, it has pull down menus) then there is often an Options or Preferences setting there. DOS and Linux based emulators commonly have a Config file, which you can edit with a text editor like Notepad. Finally, there are Command Line Options, which you type after the name of the emulator when it is run from DOS or Linux. Again, read the readme to find out which of these the emulator uses. Some use more than one, and some options can only be changed by one of the methods.
So, what do I alter?
The most drastic speedup usually comes from altering the FrameSkip value. Almost all emulators have this option somewhere. What it does, is ‘miss out’ some animation frames, cutting down the amount of work the computer has to do. The downside to this is that animation appears jerky, and a few games become impossible to play (especially those with fast-moving graphics or pixel-perfect jumps).
If possible, set FrameSkip to AUTO, as this makes the emulator skip however many frames it thinks best. Remember, the higher the FrameSkip value, the faster the emulator runs, but the more jerky the game appears.
Hmm. That helped, but what else can I change?
It’s not just the machine you are emulating with an emulator, it is also the machine’s sound and graphics hardware. Reducing the quality of these can speed up the emulation.
How do I do that?
For the sound, try changing it from Stereo to Mono. That should make quite a difference. You can also decrease the ‘frequency’ of the sound – this makes the sound appear less clear, but speeds up emulation. A better soundcard can help here too, as it takes some of the work off of the CPU.
As for the graphics, try running in a lower resolution screen mode (e.g. 320×240 instead of 640×480). Disable any ‘special modes’ like Eagle Engine. Use scanlines.
Great! But how do I make them as fast as possible? I’ve only got a 486 PC!
Well, some emus run happily on a 486 at full speed, but they’re usually emulators of 8-bit machines, run in DOS or Linux, and are written in assembly. No$gmb is a good example of this – it can run some Gameboy games full speed even on a 286, whereas another GB emu, SMYGB, need a P133 minimum.
If you REALLY need to run something else on a 486, at a sane speed, then try this: No sound, scanlines, frameskip of (say) 9, low resolution screenmode, use keyboard (some emus slow down when you use a joypad), turn off all special graphics modes, and cross your fingers.
Assuming you do have a soundcard, there are a few reasons why you might not get sound. Have you enabled it in the emu options? Is the volume turned up?
If you are running a DOS based emulator, try running it in pure DOS rather than from within Windows, or vice versa. If you have a Soundblaster type card, see if you have a ‘SET BLASTER=’ command in your Autoexec.bat file. If not, read your soundcard manual to find out how to add one. If you have, try disabling it by adding REM before it.
Newer PCI Soundblaster cards are often not compatible with some DOS emulators, such as ZSNES. There isn’t much you can do about it, except buy an older ISA based card. I’ve had no trouble at all with my ISA AWE64 card. Also recommended is the Creative 1024 Live! Player 5.1.
Certainly. It works best if you have a fairly powerful computer to start with though. The simplest examples are running an Apple Mac emulator on a PC, and then running a Mac-based emulator on that, such as MacMame (the Mac version of the Mame arcade emulator).
Why would you want to do that?
For fun? There are some uses, such as file transfer between systems however.
What about emulator stacking?
Yes, this is possible. Bear in mind that with each ‘layer’ of emulation, everything gets much, much slower. However, it can be done. I’ve done a ZX81 emulator running on a Spectrum emulator running on a Mac emulator running on an Amiga emulator running on a 333 MHz PC. The Spectrum runs at about 10% normal speed, but the Mac goes almost as fast as the Mac emu straight on the PC. This is due to the way the Mac emu works on an Amiga – they both share the same processor, and so a lot of the emulation can be bypassed for the Mac to directly use the Amiga’s CPU. This means that it is possible for a Mac emulator on an, say a 14 MHz 68020 Amiga to run at about the same speed as a real 14 MHz 68020 Apple Mac, if not faster.
Theoretically, emulator stacking can go on ad nausium: for example, a Mac emu on an Amiga emu on a Mac emu on an Amiga emu etc.
Simply use the first emulation layer as a ‘real’ machine, and run an emulator on that. Then, use this second layer as a real machine, and run another emu on that, and keep going either until you run out of speed or memory.
Take for example the Amiga-Mac infinite stack, all running on a 64 MB PC. Firstly, you need to assign some memory for the initial Amiga ‘computer’. Lets say you give it 50 MB (as the PC will need some, as will the emulator itself). Then you run a Mac emu on that, and allow the Mac ‘computer’ (say) 45 MB (as some of the 50 the Amiga has will have been used up with the OS and emu as before). Now you need to run another Amiga on that, losing more memory. Eventually you’ll have none left.