|
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. |
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.
Released Speccy 1.9.6 with fixes to a couple undocumented Z80 features, full iCade support, sort-by-date mode in the File Selector, and a few other changes.
Published VGBA 3.9.60, with a fix to the Dragonball GT: Transformation game, the ability to sort files by date in the File Selector, and a bunch of new games in the Cheatopedia, as requested by users: Boktai, Boktai 2, Megaman Battle Network 3 Blue/White, and Robotech: The Macross Saga. Also added many new cheats for Mario & Luigi.
Released iNES 3.7.22 today. In this version, I continue adding support for less frequently used NES hardware mappers. I have added support for mappers #140 (Jaleco JF-11/JF-14), #144 (modification of Color Dreams mapper used in Death Race), and #152 (used in Arkanoid 2). I have also added bus conflicts emulation to mappers #11, #66, and #70. iCade owners will be happy to know that their iCade joysticks are now fully supported, including button assignments (see "Assign Keys" option in the Settings).
Released MasterGear 2.7.17, bringing it in line with my other emulators. MasterGear now fully supports iCade and I have fixed a couple of obscure Z80 emulation features.
I am concluding this week with the fMSX 3.6.11 release. The new version includes a few changes to the Z80 CPU emulation, full support for iCade joysticks, including button remapping option, and improved File Selector.
Released VGBA 3.9.59, fixing the random crash on exit and adding full iCade support throughout the app, including ability to remap buttons. Also added four more games to the Cheatopedia, as requested by users.
The new ColEm 2.7.5 is out, with the full support for both generic gamepads and iCade joysticks throughout the app.
I have released VGB 3.7.9 with full support for generic gamepads (like Nyko Playpad) and iCade joysticks throughout the app, and improved File Selector. You can now navigate the File Selector, Gallery, and Settings using a gamepad and assign custom buttons to gamepad keys using the "Assign Keys" option. The full iCade support is enabled via an option in the Settings.
The new iNES 3.7.20, released this morning, will show real game names instead of file names, wherever possible. The new version adds full support for standard gamepads (like Nyko) and MOGA gamepads to all parts of the app. There is also iCade joystick support (look for it in the Settings). Finally, the File Selector has become faster: it no longer rescans your entire folder after you quit a game.
I have just released VGBA 3.9.56 to the Google Play. The main changes this week are fixes to the ArcTan2() BIOS function (as seen in the Mario and Luigi dyeing minigame), full support for the standard gamepads in all parts of the app (not just in the games), and support for the iCade joystick accessory. The in-game saves in Avatar work now, and I have added two Summon Night games to the Cheatopedia. Also, optimized the File Selector updates and made showing real game names optional (but enabled by default).
Released MasterGear 2.7.15 this morning. This version greatly improves support for different Bluetooth joysticks: standard ones (like Nyko Playpad), Moga, and iCade. The joysticks are now supported everywhere in the app, not just during gameplay. Also, I am now showing real game names for known games in the File Selector, and you will no longer experience a delay when exiting from a game to the File Selector.
Published Speccy 1.9.4 today, as well as Speccy-Windows 1.9. The Android version adds full support for standard Android gamepads (such as Nyko Playpad) to all parts of the app. I also added iCade joystick support and made File Selector faster.
Updated fMSX to version 3.6.10. The new version further improves MOGA gamepad support, adds full-screen virtual joystick mode, and fixes a few bugs.
Released VGBA 3.9.55 with support for the X/Y tilt sensor found in Yoshi Topsy Turvy, Yoshi Universal Gravitation, and Koro Koro Puzzle. You should now be able to play these games by tilting your phone or tablet. Also, fixed in-game saves in Medabots games and added a bunch of new entries to the Cheatopedia, as requested by users.
VGB 3.7.8 has been published this morning. The main change is that the Real Time Clock (RTC), found in such games as Pokemon and Harvest Moon, will now "tick" while you are not playing the game, just like in a real cartridge. Please note that in order to achieve this effect, you will have to disable "Save State on Exit" option and use in-game saves instead.
Released ColEm 2.7.4 introducing reassignable MOGA buttons and full-screen virtual joystick mode. MOGA now works in both File Selector and Gallery.
The new Speccy 1.9.3 improves World Of Spectrum browser by caching visited pages, enables MOGA gamepad navigation in the File Selector and Gallery, lets you reassign MOGA buttons, adds the full-screen virtual joystick mode, and contains a few other fixes.
This week's VGBA 3.9.54 release adds the tilt sensor emulation (Warioware Twisted) and full support for MOGA gamepad in the File Selector and Gallery. You can also reassign MOGA buttons now, using the "Assign Keys" option in the Settings. Finally, more games have been added to the Cheatopedia: Altered Beast, Tetris Worlds, Lady Sia, and Baldur's Gate.
Published iNES 3.7.19 today. This version adds full MOGA gamepad support, with configurable buttons, and five more NES memory mappers: #26, #36, #38, #41, and #42. There is also the new full-screen joystick option and a few other improvements.
A small VGBA 3.9.53 update today fixes the in-game saves in Tales of Phantasia and adds four more Cheatopedia entries: The Hobbit, LOTR: The Third Age, Turok: Evolution, and Scorpion King. If you have encountered problems with sprites in VGBA 3.9.51, these should be gone now too.
I've released MasterGear 2.7.14 - a bug fix update to MasterGear that fixes freezes encountered by some users in the previous version. A few extras, such as full-screen joystick, have been thrown in as well.
The new VGBA 3.9.51 adds the light sensor emulation, used in Boktai games, and the rumble feature that lets some games (such as Warioware and Drill Dozer) make your phone vibrate. I have also added the full-screen joystick mode and stopped screen from rotating when you are using the tilt joystick. Finally, the Cheatopedia has been expanded with five new games: Sonic Advance, Sonic Battle, Star Wars Trilogy, Wing Commander Prophecy, and Final Fantasy I & II.
Starting week with a fresh VGB 3.7.7 release. The main addition in this version is the RumblePak emulation. VGB will now make your device vibrate whenever a game uses its "rumble" feature. Also added the full-screen joystick mode, letting you use the whole screen as one huge directional pad, and added a few popular games to the Cheatopedia. You will find new cheats for Dragon Warrior and Zelda series.
I have released ColEm 2.7.3 today, with MOGA gamepad support and better file selector. This version also brings a big bunch of fixes accumulated over the last couple of weeks. The rare remaining crashes should be gone now.
VGBA 3.9.50 is out on the Google Play. This new version adds MOGA gamepad support and fixes a few ActionReplay emulation bugs. Pokemon fans will be happy to know that I've added cheats for catching missing "new" Pokemon types in Fire Red and Leaf Green. With the new cheats in Pokemon Ruby and Sapphire, you can now catch any "new" Pokemon type at Route 101. Finally, there are seven more new games in the Cheatopedia.
I have updated fMSX to version 3.6.9. The new version fixes many "popular" crashes reported by users, including the random startup crash into debugger. I have also added the MOGA gamepad support, optimized and improved the File Selector, fixed a few problems with license checking and paid apps detection, and more. If you are using the free version of fMSX-Android, I greatly suggest getting the paid version. It takes time and effort to maintain and improve this software, so the more people buy it, the more frequent updates you can expect.
Starting with the VGB 3.7.6, released this morning, VGB supports MOGA gamepads and shows real game names in the Gallery and File Selector. I have also fixed a bunch of crashes and the way GBC cartridges are identified.
![]() |
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".