fMSX PSP
MSX emulator for PlayStation Portable

http://psp.akop.org/fmsx

© 2007 Akop Karapetyan (port)
© 1994-2007 Marat Fayzullin (emulation)

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. Multi-Volume Disk Images
  6. Virtual Keyboard
  7. Optimization
  8. Troubleshooting
  9. Compiling
  10. Version history
  11. Credits
  12. Thanks

New Features

Version 3.3.25 (August 23, 2007)

Installation

Unzip fmsxpsp.zip into /PSP/GAME/ folder on the memory stick. This should create the following directory tree:

PSP/
GAME/
FMSXPSP/
CONF/ (key configuration)
ROMS/ (game roms and disk images)
SCREENS/ (screenshots)
STATES/ (save states)
MSX.LYT (virtual keyboard layout)
SYSTEM.ZIP (System ROM's)
[any other files]
FMSXPSP%/
EBOOT.PBP

Please note that system ROM's must reside in the same folder as EBOOT.PBP file. Game ROM's and disk images (DSK files) may reside anywhere (the ROMS subdirectory is recommended, but not necessary).

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.

Controls

fMSX PSP currently "ships" with the following default key mappings:

During emulation:

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 Ο (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.

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. Here's an example:

snatcherj.zip
thsnatj1.dsk
thsnatj2.dsk
thsnatj3.dsk

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.

Virtual Keyboard

When the virtual keyboard is on:

Certain virtual buttons (specifically, SHIFT, CTRL and GRAPH) are "sticky" - the virtual button remains held down when (circle) is tapped. Tapping (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).

Optimization

For all MSX1 games and most MSX2 games, 300 MHz clockspeed achieves near-flawless rendering. Some larger games (like Metal Gear 2) are slower when VSync is enabled - those work better without VSync, or at 333 MHz. Note that anything above 222 MHz will deplete your PSP battery faster.

Troubleshooting

State loading errors

fMSX PSP may refuse to load a save state due to a number of different reasons. Some of the reasons follow:
  1. fMSX save state format has changed
  2. Currently set RAM/VRAM sizes do not match with RAM/VRAM settings set when the state was saved. This can be rectified by resetting RAM/VRAM sizes and loading again
  3. System model (MSX1/2/2+) currently set does not match the system model set when the state was saved. Reset the setting and try again
  4. System ROM's currently in use do not match to those used when the state was saved. Replace the system ROM's and try again
  5. Any combination of the above

Compiling

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

svn co http://svn.akop.org/psp/tags/fms/date

where date is the date of a particular version's release, in DD.MM.YYYY format (20.04.2007, for example). 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 alternate sound engines, #define MSXAUDIO and MSXMUSIC.
To enable zipped ROM support, #define MINIZIP.

Version History

Version 3.3.2 (July 24, 2007)

Version 3.3.1 (June 17, 2007)

Version 3.2.1 (June 4, 2007)

Version 3.1.3 (May 5, 2007)

Version 3.1.2 (Apr. 24, 2007)

Version 3.1.1 (Apr. 20, 2007; initial release)

Credits

Thanks

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

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 dcemu.co.uk forums for all his helpful feedback.


Akop Karapetyan, 2007