Emulators are programs that run software written for old computers or
videogame consoles on the new hardware. Essentially, an emulator makes
old software "think" that it is running on the original hardware, while
it actually runs on your computer. I am creating emulators since 1993
and
have
made
quite a
few
of
them.
For those who would like to try making an emulator on their own but do not
know where to start, I have written a short
introduction into the craft.
Originally, I developed emulators for PCs and Unix workstations. Once
the mobile devices, such as cell phones and tablets, became capable of
emulating older hardware, I started porting my emulators to these
devices. Thus, at this page you will find my applications for
Android-based phones and tablets, as well as some useful tips on setting
them up.
If you work for a game company that would like to run its legacy games on
mobile phones or other hardware, and need help,
contact me.
Answering many, many complaints about the landscape virtual joystick
being virtually invisible, I am introducing the new semi-transparent
overlay joystick in the landscape mode. You can currently find it
in
VGBA,
VGB, and
fMSX.
 |
Optimized for Android
Emulation and screen rendering are heavily optimized for Android
platform using hand-written ARM assembly.
|
 |
Fast-Forwarding
The fast-forwarding feature lets you quickly skip through long dialogs
and demo sequences.
|
 |
Color-Blended Rendering
When scaling display, the transitions between individual pixels are
blended for better picture quality.
|
 |
Freeze/Restore
The gameplay can be saved at any moment and restored to the same
point later. Emulators will also save state on exit, letting you
restart where you have left off.
|
 |
Joystick Emulation
The joystick is emulated with the physical keyboard, virtual joypad, or
accelerometer. Sony Xperia Play buttons also supported.
|
 |
Recording Music
The soundtrack can be saved to a MIDI file to be played back later or
used as a ringtone.
|
 |
Mouse Emulation
For the old software that requires a mouse, it is emulated
with the touch screen.
|
 |
Built-in Debugger
Many emulators include a built-in debugger for hacking or developing
your own retro software.
|
 |
Compressed Files
The emulators will automatically process files with .zip (WinZIP) and
.gz (GZIP) extensions. You do not need to unpack these files.
|
 |
Screenshots
The emulators will save stamp-sized screenshots for each game you play,
and show them in the file selection dialog.
|
 |
Normal Display
The picture fills the center of your device screen, while retaining the
original display ratio.
|
 |
Stretched Display
The picture is stretched horizontally to fill the entire device screen,
for the biggest possible size.
|
 |
Softened Display
The picture is softened, hiding individual pixels, as if it were shown
on an old analog TV.
|
 |
TV Scanlines
Horizontal raster lines are added, simulating analog TV interlace
effect.
|
 |
Keyboard Emulation
The keyboard is naturally emulated with the physical keyboard, or the
on-screen virtual keyboard, in case your Android device lacks a real
one.
|
 |
Frame Rate Display
The frame rate counter shows how fast your emulation is running. The
ideal rates are 60Hz for NTSC video and 50Hz for PAL video.
|
 |
Bug Reports
Please note that I am the only person handling all the work here, in my
spare time. Due to the large number of requests and limited time, I
can't handhold you or help you learn how to use my apps. I can only help
you if you have found a bug and can explain what it is in clear, factual
terms. Generally, it takes a week or two to resolve most issues,
unless I am sick, busy, or you are asking about something way over my
head.
So, if you are having problems legitimately running my
applications, please,
tell me and other
users about your problems via the
forum.
To make my job easier, make sure you...
- Download the latest application update from the Android Market.
- Report the make and model of your device, as well as the
application name.
- If possible, supply the output from the
"adb logcat"
command or the DDMS tool.
- Please, be as detailed about your problem as possible.
Also note that reporting problems in the Android Market comments is
not helpful, as I cannot respond back to you, clarify what the problem
is, and fix it. Adding negative rating to your Android Market feedback
makes it almost certain that I will not waste time trying to help you.
The best ways to get help are by reporting your problem via the
forum or by emailing
me directly.
|
 |
License Check
To protect against piracy, I had to introduce the Android Market license
check into commercial versions of my Android apps. Every now and then,
the license check will use the Android Market on your device to see if
you have actually bought my app. This operation is completely
transparent to the user, unless it fails. My statistics show that
license checks fail for about 3% of people. In order to stay in
the other 97%, make sure that
- Your device is logged into the same Google account you used to buy
the app.
- Your device has at least intermittent Internet connection, so that
the Android Market app can connect to the server.
- If the above two steps do not help, try uninstalling and then
reinstalling the application.
- If the above three steps do not help, try enabling "Background
Data Connections" in your device. There are reports of Google
Licensing failing with this setting disabled.
|
 |
Finding and Loading Programs
You can find the huge collection of public domain games for old game
consoles at the PD ROMs web site.
For both legal and ethical reasons, I cannot
and will not tell you where to download commercial games
for running them with my emulators, even if you email me about it. If
you really need to, use an Internet search engine instead. Please, do
not download and run any software that you do not already own. It is the
right thing to do.
By default, all emulators expect you to place ROM files and disk images
onto the memory card (i.e. /sdcard). The emulators will
also automatically recognize and open compressed files (i.e.
.zip and .gz), as long as they contain valid
ROM files or disk images.
Please note that starting with Android 3.2+, Google has essentially
disabled writing to the external SD card.
This means that if you place emulator files to the external SD card,
emulators will not be able to save game states or screenshots. If you
encounter this problem with your device, avoid it by always placing
files to the internal SD card.
|
 |
System ROMs
If an emulator requires you to supply your own system ROMs, place them
into /sdcard/AppName directory (such as
/sdcard/Speccy) or directly into /sdcard
directory.
|
 |
Fast-Forwarding
To fast-forward gameplay, press and hold the on-screen
FFWD button, if present. If you do not see
the FFWD button, press and hold the Android
SEARCH key. If your device lacks the
SEARCH key, you can assign the
fast-forwarding feature to a different hardware key in the Android
"Settings" menu.
|
 |
Built-in Menu
All emulators come with their own internal menus, offering wide variety
of hardware and emulation settings. The built-in menu shows up when you
either press the on-screen MENU button or
select "More" from Android menu. You can navigate the built-in
menu with the on-screen joystick or by touching menu items. To select
a menu item, touch it, or press
FIRE-A. To close the menu, touch outside
the menu, or press FIRE-B.
|
 |
Joystick Emulation
The screen of your Android device acts as a virtual joypad. To see
its layout, enable "Show Joystick Cues" in the Android
"Settings" menu. You can also control joystick by physically
tilting your device, if you enable the "Tilt Joystick" menu
option and your device has an accelerometer sensor. If your phone
has got a physical keyboard, its buttons are going to be laid out
as follows:
| Emulator | Generic Android | Xperia Play |
| FIRE-A | SPACE, A, S, D, F, G, H, J, K, L | X |
| FIRE-B | Z, X, C, V, B, N, M | Y |
| FIRE-L | Q, E, T, U, O | L |
| FIRE-R | W, R, Y, I, P | R |
| START | ENTER | START |
| SELECT | TAB | SELECT |
| FFWD | SEARCH | SEARCH |
|
 |
Keyboard Emulation
If you need a keyboard to operate the emulator (such as
fMSX), but your Android device does not have a
physical keyboard, you can quickly toggle the virtual keyboard with the
on-screen KEYS button. To permanently enable
virtual keyboard, set "Virtual Keyboard" in the Android
"Settings" menu. Notice that the modal keys (such as
SHIFT, etc) can be found at the screen
corners.
|
 |
Sound Quality
If you feel that the sound lags on your device (i.e. you hear shots a
little bit after pressing the fire button), try decreasing the "Audio
Latency" parameter in the Android "Settings" menu. Reducing
it too much may cause sound distortions though, so be careful. If your
audio becomes distorted, increase the latency.
|
 |
Loading From Tape
Some emulators, such as Speccy, let you load
software from tapes. The simulated tape recorder can be started
or stopped using the built-in emulator menu ("More" option
in the Android menu, then "Tape running" option). Keep in
mind that loading from tapes takes time, just like with the real
tapes. You can speed things up by holding the Android
SEARCH key: it fast-forwards the
emulation.
|
|
... See below for application-specific tips!
|
|
Speccy for Android
(also see
free version)
Speccy emulates 16kB, 48kB, and 128kB versions of Sinclair ZX
Spectrum, as well as Spectrum +2, +2A, and +3, as well as Timex Sinclair
models. Although I had done some ZX-related work in the past, for many
years I abstained from writing a Sinclair ZX Spectrum emulator, because
there were so many other Spectrum emulators around. On the other hand,
it felt like a gaping hole on my resume. So, here it is, yet another
Spectrum emulator, trivially named Speccy.
More...
|
|
- To change joystick type or enable mouse
Go to the built-in menu, select "Input devices" and set whatever
input device(s) you want.
- 128k Spectrum bootup menu
This menu can be operated with the on-screen arrow buttons, while
holding
CSHIFT. Believe it or not, but
that is how original 128k Spectrum did it.
- To load program from a tape (i.e. .tap or .tzx file)
-
Select "Tape Loader" from the 128k Spectrum bootup menu or type
LOAD "" (
SSHIFT +
J, P,
P, ENTER)
on 48k Spectrum to start the tape loader.
-
Press the on-screen
MENU button to go to
the built-in menu and toggle the "Tape running" option to start
the tape. There are also options to rewind and browse tape contents.
-
Wait for the program to load, which may take a while, just like on a
real ZX Spectrum. You can accelerate the process by holding Android
SEARCH key.
|
|
VGBA for Android
VGBA emulates the Nintendo GameBoy Advance handheld. It plays
GameBoy Advance games on your Android phone or tablet. Please notice
that VGBA will not play classic GameBoy games: you will need
VGB for that.
More...
|
|
- .ZIP file support
VGBA will automatically handle .gba.gz and .zip
files, as long as they contain valid .gba files inside.
- If you are having trouble saving games
Use the gameplay freezing feature instead. Press the Android
MENU key and select "Freeze" to save
your game. Later on, select "Restore" to restore your game back
to where you have frozen it. Having said that, I would still appreciate
a bug report for any game that fails saving/restoring state on its own.
- If you are still having trouble saving games
If you cannot save games, even with the freezing feature, and the games
won't even save state when you exit and restart VGBA, you may
be low on the disk space. Check how much free space you have got in the
folder where your games are. There should be at least 512kB of
free space for saving and freezing to work.
- If nothing works, games do not save, cheats do not work
Aside from using a pirated version (that is known to fail randomly, on
different features) and low disk space, this problem may sometimes be
caused by a package upgrade. You can fix it by completely removing
VGBA from your device, then reinstalling it from the Android
Market.
- Entering ActionReplay/GameShark cheats
-
VGBA currently supports ActionReplay v3 aka
GameShark cheat codes, but not GameShark SP codes.
-
Not all cheats you find on the Internet work, even on the real hardware.
Never mix cheats from different sources and try to use cheats that are
known to work on at least some other GBA emulator.
-
The easiest way to use cheats is to go to the Android menu and
choose "More | Cheatopedia". You will then be offered to
select the game you are playing and then choose one of many predefined
cheats for this game.
-
To enter cheats manually, go to the Android menu and choose
"More | Edit Cheat Codes". Use the cheat editing interface to add
and edit cheats in the
XXXXXXXX XXXXXXXX format, where each
"X" is a hexadecimal digit. Please note that my experience shows that
this option is somewhat too advanced for many users.
-
After you are done, press the Android
BACK key to return to the emulator. If you
are not sure that your cheats are saved, press the Android
MENU button and select "Save"
before returning to the emulator.
-
To toggle cheats on/off, go to the Android menu and choose
"More | Cheats On/Off".
-
After exiting and reentering a game in VGBA, you have to toggle
cheats on again. The cheats are always off at startup.
-
The cheats support is currently in the beta stage, so do not get too
frustrated about it. It will get better with time. If you have
got an ActionReplay v3 cheat that works with the other emulators
but does not work with VGBA, report it to me and I will see how
it can be fixed.
|