(C) 2007-2010 Akop Karapetyan

© 1994-2008 Marat Fayzullin

fMSX PSP is a port of the fMSX emulator to the Sony PlayStation Portable platform. It’s written in C and uses GU (Graphical Utility toolkit) for rendering.

Table of Contents

  1. New Features
  2. Installation
  3. Controls
  4. Disk Writing
  5. Sound
  6. Display
  7. Multi-Volume Disk Images
  8. Frequently Asked Questions
  9. Compiling
  10. Version History
  11. Credits
  12. Thanks
  13. Support

New Features

Version 3.5.41 (March 17 2010)


Unzip into /PSP/GAME/ folder on the memory stick.

fMSX PSP supports cartridge and disk loading from ZIP files. System ROM’s may reside in a SYSTEM.ZIP file in the same folder as EBOOT.PBP. PAINTER.ROM, or MSXDOS2.ROM may also be zipped, but must reside in separate ZIP files (FMPAC.ZIP, MSXDOS2.ZIP, etc..). fMSX PSP will attempt to load the three automatically if free cartridge slots are available. All other game ROM files must reside in separate ZIP files.


fMSX PSP currently “ships” with the following default key mappings:

During emulation:

Analog stick Joystick up/down/left/right
Directional pad Keyboard up/down/left/right
[ ] (square) Joystick button A
X (cross) Joystick button B
O (circle) Spacebar
® Displays the virtual keyboard, for as long as the button is held
[L] +® Return to emulator menu
Select + [L] Selects previous disk volume (for multi-volume disk sets)
Select +® Selects next disk volume (for multi-volume disk sets)
Start F1

When the virtual keyboard is on:

Directional pad select virtual button
[ ] (square) press a virtual button
O (circle) ‘stick’ a sticky virtual button
^ (triangle) unstick all stuck virtual buttons

Certain virtual buttons (specifically, SHIFT, CTRL and GRAPH) are “sticky” – the virtual button remains held down when O (circle) is tapped. Tapping O (circle) again releases the virtual button. This allows SHIFT, CTRL and GRAPH all to be held down at the same time, while the user presses another virtual button. To unstick all sticky buttons, press ^ (triangle).

Keyboard mappings can be modified for each game. By default, button configuration changes are not retained after a mapping is modified. To save changes, press O (circle) after desired mapping is configured. To set the mapping as the default mapping, press [ ] (square) – to load the default mapping press ^ (triangle).

Disk Writing

Versions of fMSX prior to 3.3 mapped MSX disk sectors to the file containing the disk image, and reads/writes to the MSX disk were implemented as reads/writes to the image on the storage device (in this case, the memory stick).

Version 3.3 of fMSX includes a much more faithful emulation of the floppy disk controller, which no longer involves direct writing to the storage device – the disk image is loaded into memory instead. Versions 3.3.1 and 3.3.2 of fMSX stopped automatically writing the changes to disk – starting with 3.3.25, disk changes need to be explicitly committed to memory stick. This can either be done by loading a new disk in the same slot via the System tab (not the Game tab), or by ejecting the disk. Either way, you will be asked if you want to commit the changes to the image before ejecting or loading another image.

NOTE This only applies to uncompressed disk images – ZIP compressed files cannot be updated

WARNING Before committing changes to storage, make sure the MSX floppy drive is not in use – otherwise, you may damage the disk image


fMSX PSP uses the PSG, SCC and MSXMUSIC sound emulation engine by Mitsutaka Okazaki and MSXAUDIO emulation engine by Tatsuyuki Satoh. While PSG and SCC emulation is always enabled, MSXMUSIC and MSXAUDIO are disabled by default, as they tax the PSP and are not used by most MSX programs/games.

The emulator can run at full speed (at 333MHz, without V-Sync) with only one of MSXAUDIO or MSXMUSIC enabled. With both enabled, emulator performance is significantly reduced. I recommend keeping MSXAUDIO and MSXMUSIC emulation disabled, enabling it only when necessary.


Until version 3.4.5, high-resolution screen modes (screens 6, 7 and text-80) were rendered on a 256-pixel wide canvas by skipping every other column. This works very well for most graphics modes – the deficiency is mostly noticeable when rendering text in 80-column mode.

Version 3.4.5 adds optional high-resolution rendering – image is rendered on a 512-pixel canvas, then squeezed horizontally to take up 256 pixels, with the idea that bilinear filtering engine offered by the PSP can provide a less coarse “squeezed” image than just skipping every other column. Unfortunately, the differences are rather disappointing – the biggest improvement is noticeable in text-80 mode, while the added task of rendering to a 512-pixel image slows down emulation. My suggestion, therefore, is to keep the hi-res rendering engine disabled, unless you really need more detail (to see the actual image, set ‘Display Size’ in options to ‘Actual size’ – though this will only show the first 480 pixels, due to the PSP screen limitation)

Multi-Volume Disk Images

fMSX PSP can load multi-volume games (like Snatcher) from a single ZIP file. To load such a game, store all files in the same ZIP. It is important that the archived files are numbered 1-0, with ‘0’ representing the 10th volume (archiving sequence is not important) – fMSX PSP will attempt to load the first disk in the sequence. As an example, a ZIP file could contain the following disk images:


To switch disks mid-game, map any of the buttons to the ‘Special: Previous volume’ or ‘Special: Next volume’ actions in the control menu. When a ‘volume switch’ button is pressed, and the next disk image in the sequence is found, an icon will appear with the number of the volume loaded.
Note that multi-volume files do not have to be ZIP-compressed for the ‘volume switch’ feature to work – volume switching will also work for uncompressed DSK files, as long as they’re named as described above.

NOTE Changes to the disk image will not be saved when using this feature.

Frequently Asked Questions

Why do I not hear any MSX Music/MSX Audio sound?

Why is there no music in Aleste/FMPAC-based games?

For FMPAC/MSX Music, enable MSX Music emulation in System Settings; for MSX Audio, enable MSX Audio emulation. This will slow down emulation noticeably, so you may also need to increase CPU frequency and disable vertical sync. Alternatively, you can recompile the emulator with the custom engines disabled, to use Marat’s faster (though less accurate) FMPAC emulation engine. Check fMSX.mak for instructions

Why does the emulator refuse to load a saved game?

There are a number of reasons why this will happen; some of them are:

For all but the first reason, resetting the configuration so that it matches the configuration when state was saved will do the trick.


Source code for fMSX PSP is available via a Subversion (SVN) repository. To check out a particular version, run

svn co

where version is the version number you’re interested in (example: 3.3.2). Note that for this to work, you need to have Subversion installed.

To compile fMSX PSP, you will need zlib (svn://) and libpng (svn://).

To enable the alternative sound engines, #define MSXAUDIO and MSXMUSIC in the Makefile.
To enable zipped ROM support, #define MINIZIP.

Version History

3.5.40 (March 01 2010)

3.5.35 (June 29 2008)

3.5.3 (June 22 2008)

3.5.2 (May 30 2008)

3.5.1 (February 29 2008)

3.4.5 (November 05 2007)

3.4.1 (October 01 2007)

3.3.25 (August 23 2007)

3.3.2 (July 24 2007)

3.3.1 (June 17 2007)

3.2.1 (June 04 2007)

3.1.3 (May 05 2007)

3.1.2 (April 24 2007)

3.1.1 (April 20 2007)


Marat Fayzullin fMSX
Simon Tatham fixed.fd font on which the emulator’s font is based
Gilles Vollant Minizip library
Vincent van Dam fMSX SDL (code dealing with sound emulation and high-resolution rendering)
Mitsutaka Okazaki PSG/SCC/MSXMUSIC sound emulation engine
Tatsuyuki Satoh MSXAUDIO sound emulation engine
Ruka PNG saving/loading code


fMSX PSP would not be possible without prior work of many other hackers. I have benefited from the source code of the following PSP programs:

fMSX SDL Vincent van Dam
NesterJ Ruka
Snes9XTYL YoyoFR, Thunder, Laxer
PSPSDK examples

Special thanks to Marat Fayzullin for his prompt responses.

Some personal thanks are due to the authors of SNES9XTYL, DGEN for PSP and [CPSx|MVS]PSP emulators – the hard work evident in the polished interfaces of the emulators is inspiring, if nothing else. fMSX PSP was an attempt to bring a similar interface to MSX emulation (whether it’s achieved that or not is anyone’s guess :)

Special thanks are also due to jburton of forums for all his helpful feedback.