MSX emulator for the S60 platform. MSX is an 8-bit home computer that first saw light in 1983. With this emulator you can play hundreds of games available in the web for the MSX platform. Emulation core is originally based on an adapted version of the fMSX/Unix version 2.7 source code. Although recent versions of the emulation core still resemble the fMSX/Unix logically almost no part of the original fMSX/Unix code is left in fMSX/S60. I have decided to keep the emulator name as fMSX still to honour the roots of the emulation code and the efforts of the fMSX/Unix author. Critical sections in fMSX/S60 have been written directly in ARM assembly language to gain speed. Main features are:
.rom), disk (
.dsk) and tape (
.cas) images in uncompressed, gzip compressed (
.gz), zip compressed (
.zip) and lharc compressed (
.lzh) format (zip and lzh format support is in the "b" and "d" variants only). Compressed disk and tape images are treated as read-only media in the emulator (any saved data on compressed media will be lost when the emulator exits).
Currently available versions can be downloaded from the main page or from the version history at the bottom of this page. There are different variants of the emulator:
Due to copyrights the install package does not include any system ROMs, you need to add them separately after installing the emulator. I'm also providing a separate PC tool set for creating your own install packages from the system ROMs and/or game ROM cartridges and disk/tape image files. Note that with the "d" variant the tool is not much needed anymore because the emulator is loading all files from a location on the phone's memory card which can be accessed directly with the Nokia PC Suite on a PC running Windows and it is much easier to simply use Windows' file browser to copy the files to appropriate locations.
Thanks to HL-Soft there is now an external GUI tool available for creating system ROM and game ROM/disk/tape install packets (
.sis files) for "a" and "c" variants. Have a look!
|Main menu (v0.97a) on a Nokia 7650||Main menu (v0.97b) on a Nokia 6600|
|Fast rendering mode||Smart rendering mode||Resample rendering mode||Raw rendering mode|
|Fast rendering mode
(rotated cw 90)
|Smart rendering mode
(rotated cw 90)
|Resample rendering mode
(rotated cw 90)
|Raw rendering mode
(rotated cw 90)
I'm sorry for the absence of proper documentation, here is a small FAQ:
Q: When I start the emulator I it says "Machine type: <none>" and won't let me change it. How can I change it?
A: This happens when you don't have any proper system ROMs installed. To play any games you must have the system ROMs for at least one machine type installed. Due to copyright reasons they are not included with the emulator install package but instead you need to acquire and install them yourself after installing the emulator. The emulator will automatically detect which system ROMs are present. Depending on which system ROMs you have installed you will have different choices available (see the list further down below). These files must be placed in the following directory depending on the variant of the emulator that you are using:
romsubdirectory under the emulator's main directory (
\system\apps\fmsx). You can do this either by creating a patch install package (example set up included with the PC tool set that I am providing on the main page) or if your device has an MMC card, you can use a PC equipped with an MMC card reader to copy the necessary files to the correct location (remember to install the emulator on the MMC card if you wish to use this approach).
Games/fmsx/systemromdirectory on the memory card drive or in the phone's internal memory drive. Note that you can select which drive is used by the emulator from the emulator's "misc options" menu. You can copy the files either by using the Nokia PC Suite or by copying the files to the memory card using a separate memory card reader on your PC.
msx.rom.lzh), which should contain MSX1 BIOS and BASIC, 32kB uncompressed size
.lzh), which should contain MSX2 BIOS and BASIC, 32kB uncompressed size, and
.lzh), which should contain MSX2 sub ROM, 16kB uncompressed size
.lzh), which should contain MSX2+ BIOS and BASIC, 32kB uncompressed size, and
.lzh), which should contain MSX2+ sub ROM and Kanji BASIC, 48kB uncompressed size (for the "a" and "c" variants the Kanji BASIC part is not mandatory in which case the size of the ROM is only 16kB)
disk.rom.lzh), which should contain Disk ROM, 16kB uncompressed size
.lzh), which should contain MSX-DOS 2.2 ROM, 64kB uncompressed size
Q: I try to create an install package for game x but all I get is some .gz files, no .sis.
A: Note that you can only do this for the "a" and "c" variants of the emulator. For "b" and "d" variants, see the answer to the next question. The batch file that I provide with the PC tool set simply first tries to compress (
.rom files in the current directory and after that it runs
makesis.exe with the provided
.pkg file. The
.pkg file is a text file that contains the "layout" for the install package which is to be created. You can use any text editor (such as Notepad) to edit the contents. Unfortunately
makesis is very picky and if one of the files that are listed in the
.pkg file to be included in the install package is missing it will not create the install package (
.sis) at all. Because I cannot know what games and system ROMs you might want to install I am merely providing an example
.pkg file which has to be edited before use. You can add and remove lines as necessary in the
Q: Where should I copy the MSX game cartridge ROM files, disk image files, tape image files and openMSX/blueMSX cheat files?
A: Note that you can only do this for the "b" and "d" variants of the emulator. For "a" and "c" variants, see the answer to the previous question (note that "a" and "c" variants have no support for the cheat files). All game files are located on the phone's memory card drive under
Games/fmsx directory. You can copy the files to the correct place by either using the Nokia PC Suite to access the phone's memory card while the phone is powered on and the memory card is inserted to the phone or you can remove the memory card from the phone and use a separate memory card reader device with your PC to access the contents of the memory card.
Q: I'm unable to copy the necessary system ROMs, game cartridge ROMs or disk images to the device. Could you please make an install package for me for game x?
A: Unfortunately I cannot distribute ROMs or disk images for the emulator, this would be too big a task for me to take care of - not to mention the copyright issues if it is commercial software you are after. It may seem a bit tricky to create the patch install package for the emulator at first but it is really very easy. Just use the PC tool set that I provide or copy the necessary files to your phone's MMC card if you have one. Note that games (cartridge ROMs, disk and tape images) must be placed in
data subdirectory under the emulator's main directory (
\system\apps\fmsx) whereas system ROMs must be placed in
rom subdirectory under the emulator's main directory.
Q: How can I "eject" a ROM cartridge, disk or tape?
A: Press the "clear" key (C on the phone) when the menu cursor is over a ROM cartridge, disk or tape image that you wish to "eject".
Q: Is it possible to remove a keybinding from the emulator?
A: Yes, in all keyboard configuration screens you can use the "clear" key (C on the phone) to remove a keymapping. This will be indicated in the UI with a keymapping to "<none>".
Q: Is it possible to map more than one MSX key to the same phone key?
A: Yes, this has the effect as if you had simultaneously pressed more than one keys down on the MSX. Note that you can also have joystick mappings and keyboard mappings on one phone key (e.g. phone's left softkey can be both joystick fire button 1 and space key).
Q: I defined a key for turbo fire but when I try to use turbo fire in the emulator it does not work. Why?
A: In the emulator's default configuration, both joystick fire button 1 and space key are mapped to the phone's left softkey (like in the example in the previous question's answer). The turbo fire and autofire modes only affect joystick fire button 1 emulation and some games are reading player input simultaneously from both joystick and keyboard. As a result, when turbo fire mode is enabled and you keep the left softkey pressed down, the joystick fire button will be "autofired" but the space key is being pressed down all the time. Some games like Gradius (Nemesis) interpret this as a continuous fire button press and the turbo fire does not seem to work. To get it working, remove the keyboard mapping from phone's left softkey to MSX space key (i.e. phone's left softkey will be mapped to joystick fire button 1 only). On the other hand, this also means that turbo fire and autofire do not work in games that do not support joystick input.
Q: The music sounds distorted / the emulator crashes when I enable sound support, what's wrong?
A: There are known problems in the sound routines especially with Nokia 6600 phone: one of the system device drivers panics easily while streaming audio causing the operating system kernel to kill the process producing audio which in this case is of course the emulator. With other phones it is possible to experience short pauses in the audio and/or looping sound, caused by audio buffer underruns when the system is having trouble keeping up with the pace of the emulation. Best way to avoid problems if you wish to have sound is to use raw rendering mode without rotation. Best sound quality is achieved by first defining a screen freeze key (under emulator special controls configuration, "Screen update") and use it while the emulation is running to suspend all screen updates. Another way is to increase the frame skipping setting in display settings. This should give adequate sound quality, of course with partial or total loss of display update so this is more useful for listening to the music, gameplay may suffer from it.
Q: I enabled the "obey silent mode" option but game sounds are still audible when I have silent profile active, why?
A: This option follows the "ringing tone" setting of the currently active profile. Prior to version 1.08 this setting followed the "game and warning tones" setting of the currently active profile. If you have "ringing tone" (or "game and warning tones" in older versions) on in your silent profile, the emulator will continue to play sounds even if the silent profile is selected. Note that this means that the emulator will respect the "ringing tone" (or "game and warning tones") setting of all profiles, not just the "silent" profile, always acting according to the current profile. Those who are wondering where to find this option, please note that it is not availabe in the "a" variant of the emulator.
Q: When I press Start! nothing happens or an error message saying "Program Closed: Z80" appears. What's wrong?
A: It is possible to get the described symptoms with certain phone models when using the "d" variant of the emulator. This is caused by the phone not supporting direct access to the display frame buffer. There is a workaround for this problem starting from the 1.14d release onwards: enable the double buffering option in the index.html
emulator's display options menu. The downside of double buffering is that it consumes more processing power so with less powerful phone models some side effects might be caused by using it. Nevertheless, for certain phone models, such as Nokia E61 and E62 for example, enabling double buffering is the only way to make the emulator work.