|
fMSX |
VGB |
VGBA |
iNES |
MG |
ColEm |
Speccy |
AlmostTI |
|
Windows |
Android |
Symbian |
How? |
Who? |
Tell! |
|
|
Follow @GarageResearch Tweet |
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.
![]() |
Optimized for Android Emulation and screen rendering are heavily optimized for Android platform using hand-written ARM assembly and OpenGLES. |
![]() |
Fast-Forwarding The fast-forwarding feature lets you quickly skip through long dialogs and demo sequences. |
![]() |
Joystick Emulation The joystick is emulated with hardware keys, virtual joypad, or accelerometer. Sony Xperia Play, Nyko, MOGA, iCade, and Sixaxis controllers also supported. |
![]() |
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. |
![]() |
Mouse Emulation For the old software that requires a mouse, it is emulated with the touch screen. |
![]() |
Recording Music The soundtrack can be saved to a MIDI file to be played back later or used as a ringtone. |
![]() |
Compressed Files The emulators will automatically process files with .zip (WinZIP) and .gz (GZIP) extensions. You do not need to unpack these files. |
![]() |
Built-in Debugger Many emulators include a built-in debugger for hacking or developing your own retro software. |
![]() |
Cheats Cheatopedia offers hundreds of cheats for popular games, or you can enter your own cheat codes. |
![]() |
Screenshots The emulators will save stamp-sized screenshots for each game you play, and show them in the file selection dialog. |
![]() |
State Exchange State Exchange lets you swap gameplay states with other users playing the same game. |
![]() |
Network Play The NetPlay feature lets you play with other users over local network or Internet. |
![]() |
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 hardware 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. |
The new VGBA 3.9.65 has been published to the Google Play. In this new release, I continue speeding up the emulation by rewriting certain critical parts in ARM assembler. This time, I have optimized the code that clears every GBA scanline before rendering it. Also fixed several possible crash sources, finally fixed the File Selector toolbar to the bottom of the screen, and added five more games to the Cheatopedia: Jurassic Park (3 games), Need For Speed (2 games), Astro Boy, and xXx.
Made a minor MasterGear 2.7.19 update today, fixing several minor bugs. Whoever experienced crashes or empty File Selector views, give this new version a try.
Published VGB 3.7.13. This version fixes several crash sources, finally finds a permanent place for the File Selector toolbar, and adds five more games to the Cheatopedia: three Megaman, Mario Tennis, and Mario Golf.
Starting week with the ColEm 2.7.7 release. This new version will show real game names, whenever possible, and automatically hide virtual controls when the real gamepad is used. I have fixed several possible crash sources and other issues reported by users.
Just released iNES 3.7.24. Added two new mappers (#163 and #164) used for unlicensed Nanjing games, such as Final Fantasy 5/7 and Pokemon Yellow. If you are using a physical joystick or gamepad, the virtual controls will now automatically disappear. Touch the screen to bring them back. Finally, I have fixed the File Selector toolbar, making it stick to the bottom of the screen.
In the VGBA 3.9.64, published today, I went over alpha-blending, fade-in, and fade-out emulation assembler code and optimized it for better performance in games with complex graphics, especially when you run them on slower Android devices. Also added a couple of user-requested games to the Cheatopedia.
I have released VGBA 3.9.63 today, with the auto-hide virtual controls feature, a fix to the Gauntet Dark Legacy game, and two more Cheatopedia entries: Riviera: The Promised Land and Teen Titans.
The new VGB 3.7.12, released today, fixes timings of several very common Z80 instructions. This should hopefully fix random speed hiccups some users have experienced in certain games. The new VGB will also automatically hide the on-screen controls when you use a Bluetooth joystick or a keyboard. Touch the screen to make controls reappear, or disable this feature completely via Settings.
Released MasterGear 2.7.18 today. The new version will automatically hide on-screen controls when you use a real gamepad, has faster "Soften Video" mode, optimized in assembler, adds a proper Android menu to the Gallery, and a sort-by-date mode to the File Selector.
Published
fMSX 3.6.13
and
Speccy 1.9.8
versions this morning. The new
Speccy
enables printer output to /sdcard/Speccy/PrinterOutput.txt.
The emergency
fMSX
release patches a possible buffer overflow bug in the native code.
Released VGBA 3.9.62 to the Google Play. The new version fixes failing hardware check problem in Dragonball Z: Taiketsu, makes sure in-game saves work in Mario & Luigi, further optimizes video output, and adds another seven games to the Cheatopedia: four Harry Potter games and three Sims games.
Published ColEm 2.7.6 with improved Z80 emulation and optimized "Soften Video" algorithm.
Just released iNES 3.7.23 with support for more NES hardware mappers. The new mappers are #97 (Kaiketsu Yanchamaru), #97 (multiple VS System games), #101 (Urusei Yatsura - Lum no Wedding Bell) and #107 (Magic Dragon). Also optimized the "Soften Video" algorithm in assembler language and gained about 15fps with "Soften Video" option enabled.
Published VGBA 3.9.61 with optimized GBA memory access routines and the "Soften Video" alorithm partially rewritten in ARM assembler. This has gained +10fps with the "Soften Video" option enabled. Also, added Spider-Man, Spider-Man 2, and Duke Nukem Advance to the Cheatopedia.
fMSX 3.6.12,
released today, adds support for the MSX printer. You will find printer
output in the /sdcard/fMSX/PrinterOutput.txt file. Also
fixed the problem with the [SHIFT] key on physical keyboards producing
the [N] key and added missing support for the Xperia Play [FIREA] and
[FIREB] buttons.
VGB 3.7.10, published a few moments ago, adds GameBoy Pocket Printer emulation. Starting with this version, VGB, will output pictures printed with GameBoy Pocket Printer to an .HTML file with the same name as your original ROM file. You can then use any web browser to view and print it to a real printer. Other changes include the improved File Selector and two new Dragon Warrior games in the Cheatopedia.
![]() |
System ROMs |
![]() |
Fast-Forwarding |
![]() |
Built-in Menu |
![]() |
Keyboard Emulation |
![]() |
Network Play
|
|
...
|
|
|
|
|
All my products are published on the Google Play Market. Please, do not forget to vote! |
|
|
|
Report and discuss your problems here. You may need to create a Google account to post to this group, but you do not have to become a member. |
|
|
iNES for Android
|
|
|
||
|
|
MasterGear for Android
|
|
|
||
|
|
Speccy for Android
(also see
free version)
|
|
|
||
|
|
fMSX for Android
(also see
free version)
|
|
|
||
|
|
ColEm for Android
(also see
free version)
|
|
|
|
VGB for Android
|
|
|
||
|
|
VGBA for Android
|
|
|
||
The best ways to get help are by reporting your problem on the forum or by emailing me directly. 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 geniune bug and can explain what it is in clear 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.
Also note that reporting problems in the Google Play Store comments is not helpful, as I cannot respond to your complaint and clarify what the problem is. Adding negative rating to your Google Play feedback makes it almost certain that I will not waste time trying to help you. Thus, start by using the forum or emailing me to get help.
To make my job easier, make sure you...
"adb logcat" command on PC (part of Android SDK).
You can find a 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 (i.e. legally bought a cartridge with the same game). It is the right thing to do.
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 emulator from your device, then reinstalling it from the Google Play.
To protect against piracy, I had to introduce the Google Play license check into commercial versions of my Android apps. Every now and then, the license check will use the Google Play Store app 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
Starting with Android 3.2+, Google essentially disabled writing to the external SD card. This means that if you place emulator files to the external SD card, emulators may 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.
All my applications run normally on rooted devices. There is a catch though. If you have a rooted device with LuckyPatcher or some other cracking tool installed, my products will not run on your device. You always have a choice of removing the pirate tools: once they are gone, my application will run, whether your device is rooted or not.
First of all, my emulators will always try to mimic the actual hardware speed. You can easily verify that by enabling the "Show Frame Rate" option and noting the "fps" value at the top-left screen corner. As long as this value stays close to 60fps (50fps for PAL hardware like ZX Spectrum), your speed is just fine. If you still want emulation to run faster than that, disable the "Sync Display" option and watch things take off.
Let us now suppose that you are not getting the optimal speed. The emulation speed generally depends on your hardware, the other software you are running, and your emulation settings. Follow these simple steps to improve the speed:
To make FFWD button a toggle switch, enable
"Persistent Fast-Forward" option. Please note that if you are
trying to play games with fast-forwarding always on, you may
be better off following performance improvement
advice instead.
To quickly toggle the action bar, place your finger at the middle of the screen and flick it up to hide the action bar, or down to make it reappear.
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.
If you are hearing clicks and pops in the sound, increasing the "Audio Latency" should fix your problem, at the cost of some sound lag. If the sound issues persist, decrease the "Frames to Draw" in the "Settings" to its default 35% value or enable the "Hardware Acceleration" option to speed up the display updates.
The echo often occurs on slower devices, where emulation cannot keep up with the audio, so the audio repeats, while emulation catches up. You can avoid this problem by optimizing performance to make emulator run faster. If the sound still echoing, increase the "Audio Latency" setting.
To resize joystick buttons, open "Virtual Joystick Size" setting and choose any size you like. To move buttons, open "Edit Layout" setting and drag buttons around the screen to the most comfortable spots. Keep in mind that when you rotate your device, each button will "stick" to the closest screen edges.
Normally, you will see transparent controls overlaid on top of the display. To change their opacity or hide the controls altogether, select the "Virtual Joystick" option in the Android "Settings" menu. The same option can be used to show wireframe controls, or disable virtual joystick completely. You can also control joystick by physically tilting your device, if you enable the "Tilt Joystick" option and your device has an accelerometer.
Auto-fire is usually enabled via Advanced Settings menu. Go to the Android menu and select "Advanced" there.
If you have got a physical keyboard or Xperia Play gamepad, you can assign keys to joystick controls by using the "Assign Keys" option in the "Settings". By default, your keys are going to be assigned as follows:
| Emulator | Generic Android | Xperia Play |
|---|---|---|
| FIRE-A | SPACE, A, S, D, F, G, H, J, K, L | X (SQUARE) |
| FIRE-B | Z, X, C, V, B, N, M | Y (TRIANGLE) |
| 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 |
Yes, you should be able any standard gamepad or joystick with any of my emulators. In particular, set the switch at the bottom of Nyko Playpad to the "generic gamepad" position. You may also want to visit the "Assign Keys" setting in order to make a comfortable button layout for yourself.
Starting Feb 26 2013, all new releases of my emulators natively support MOGA gaming controller. Simply turn it on, and once you see the "MOGA controller connected" message on the screen, it is ready to play with. You can still use MOGA with older versions of my products with the help of the free universal MOGA driver available from Google Play. This little app should let you use the MOGA with many applications that do not normally support it.
Starting Apr 5 2013, all new releases of my emulators support iCade joysticks. To enable iCade support, go into "Settings", then toggle "iCade Support" on. You may also want to customize the button layout with the "Assign Keys" setting.
If you have got a Sony Sixaxis gamepad and a rooted Android device, you can use the gamepad over Bluetooth, with the help of the Sixaxis Controller app from Dancing Pixel. See the application web site for instructions.
For Nintendo Wiimote users, here is a short tutorial on using Wiimote with my applications, provided by Robert McCurdy.
Many games are available in different versions, in different languages, or with bugfixes. In order for a cheat code to work, you need to be running exactly the same version of the game that this cheat code has been discovered for. The codes will not work for a different game version, even on the real GameShark or ActionReplay hardware. Besides, many cheat codes found on the Internet contain errors and will not work on any game version. Given how unreliable cheats are to begin with, I usually can't answer the question why your cheat does not work.
The easiest way to use cheat codes is by going to Android menu and choosing "Cheatopedia" there. Cheatopedia contains premade cheats for many popular games.
To enter cheats manually, go to the Android menu and choose "Edit Cheat Codes". Use the cheat editing interface to add, delete, or edit cheat codes. The editor will not let you enter a code unless your code strictly follows one of the relevant formats:
"XXXXXXXX
XXXXXXXX" format, where each "X" is a digit from "0" to "9", or a
letter from "A" to "F".
"XXXXXXXX
XXXX" format, where each "X" is a digit from "0" to "9", or a
letter from "A" to "F". Do not mix CodeBreaker and ActionReplay codes!
"XXX-XXX-XXX" format,
where each "X" is a digit from "0" to "9", or a letter from "A" to "F".
"XXXXXXXX" format,
where each "X" is a digit from "0" to "9", or a letter from "A" to "F".
Do not mix GameGenie and GameShark codes!
"XXXXXXXX" format, where
each "X" is a letter from "A" to "Z".
Please note that emulators will only accept cheat codes in the above formats (whatever ones are relevant). They will not accept codes in any other formats. So, if you cannot enter a code, carefully check its format. Finally, be aware that 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 emulator.
BACK key to return to the emulator.
Yes, you can extend Cheatopedia with your own cheats. In
order to do that, you will have to place a text file called
custom.chts into emulator-specific folder:
/sdcard/VGBA, /sdcard/VGB, or
/sdcard/iNES. This file should have the following format:
[Custom Cheats] Menu=Game 1 Menu=Game 2 ... [Game 1] Menu=Cheat 1 Menu=Cheat 2 ... [Cheat 1] 12345678 9ABCDEF0 87654321 0FEDCBA9 ...Instead of adding single-line cheats separately, you can also use a shortened notation for them:
[Game 1] Code=5A5A5A5A 23232323 : Cheat 1 Code=76767676 01010101 : Cheat 2Once you are done entering cheats and place
custom.chts
file into proper folder, you should be able to access your custom cheats
from the top Cheatopedia menu by clicking on "Custom Cheats".