© 2007 Akop Karapetyan
© 1994-2007 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
New Features
Version 3.3.1 (June 17, 2007)
- Virtual keyboard improvements. The virtual keyboard now requires an external file - 'msx.lyt' in the emulator directory—the file contains keyboard layout information
- fMSX updated to version 3.3. Note that pre-3.3 version save states will no longer load
- Lots of minor bug fixes
Installation
Unzip fmsxpsp.zip into /PSP/GAME/ folder on the memory stick. This should create the following directory tree:
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:- Analog stick - Joystick up/down/left/right
- Directional pad - Keyboard up/down/left/right
- - Joystick button A
- - Joystick button B
- - Spacebar
- - Displays the virtual keyboard, for as long as the button is held
- + - Return to fMSX-PSP menu
- + - Selects previous disk volume (for multi-volume disk sets)
- + - Selects next disk volume (for multi-volume disk sets)
- - F1
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 after desired mapping is configured. To set the mapping as the default mapping, press - to load the default mapping press .
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:
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.
Virtual Keyboard
When the virtual keyboard is on:
- - navigates the keyboard buttons
- - presses a virtual button
- - 'sticks' a sticky virtual button
- - unsticks any sticky virtual buttons
Certain virtual buttons (specifically, SHIFT, CTRL and GRAPH) are "sticky" - the virtual button remains held down when is tapped. Tapping 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 .
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:- fMSX save state format has changed
- 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
- 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
- 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
- Any combination of the above
Compiling
Source code for fMSX-PSP is now only available via a Subversion (SVN) repository. To check out a particular version, run
svn co http://svn.akop.org/fmsx/tags/version
where version is the version of fMSX (3.1.3, etc...). Note that for this to work, you need to have Subversion installed.
#define MSXAUDIO
and MSXMUSIC.#define MINIZIP. Additional #define's
are described in fMSX.Version History
Version 3.2.1 (June 4, 2007)
- Added menu navigation options - select from US PSP navigation (X confirms, O cancels) or Japanese PSP navigation (O confirms, X cancels—also used by most homebrew emulators)
- Added RAM/VRAM adjustment options
- Added HBlank/VBlank period selection (PAL/NTSC)
- Added MSX model selection (MSX1, MSX2, MSX2+)
- Improved accuracy of frames-per-second counter
- User interface improvements
- fMSX updated to version 3.2
- Rendering speed increase, switched to 15bit color
- Various bug fixes
Version 3.1.3 (May 5, 2007)
- Support for multi-volume disk images - multiple disk images per ZIP file and in-game volume switching (see section below)
- Improved virtual keyboard navigation, speed increase
- System ROM's can now be stored in a single ZIP file (see Installation section)
- Integrated zipped ROM and DSK file support (fast loading from ZIP files)
- Added PSG/SCC/MSXMUSIC sound emulation engine by Mitsutaka Okazaki and MSXAUDIO engine by Tatsuyuki Satoh. The old engine is still available, as it is noticeably faster. MSXMUSIC and MSXAUDIO are disabled by default (recompile if you really need them), as they adversely affect emulation speed
- ~18% gain in rendering speed
- FPS counter
- PAL frequency (50Hz) timing
- Various small improvements and bugfixes
Version 3.1.2 (Apr. 24, 2007)
- Added support for cartridge type selection in the System menu. This adds support for games like Zanac Ex, which are not detected correctly
- Preliminary ZIP file support. Emulator will load ROM or DSK files from a ZIP file, provided there's only a single compressed file per ZIP. System ROM's must still be uncompressed (or GZIP compressed)
- GZip file support - emulator can load cartridges and disk images from gzip compressed files. Save states are also much smaller in size
- GUI changes, wording changes
Version 3.1.1 (Apr. 20, 2007; initial release)
- Three available rendering modes: normal size, 4:3 scaled, 16:9 scaled
- State loading/saving, with a thumbnail icon for each state (up to 10 states per game)
- Controls configurable for a particular game
- Frame limiter, frame skipping, vertical sync, PSP clock frequency adjustment
- Support for two cart slots and two disk drives
- On-screen virtual keyboard
Credits
- 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)
- Mitsutaka Okazaki - PSG/SCC/MSXMUSIC sound emulation engine
- Tatsuyuki Satoh - MSXAUDIO sound emulation engine
- Ruka - PNG saving/loading code
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:
- fMSX-SDL by Vincent van Dam
- PSPMSX by zx81
- NesterJ by Ruka
- Snes9XTYL by YoyoFR, Thunder, Laxer
- [CPS1|CPS2|MVS]PSP by NJ
- PSPSDK examples
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