fMSX-PSP
---------------
http://psp.akop.org/fmsx

(C) 2007 Akop Karapetyan
(C) 1994-2007 Marat Fayzullin

fMSX-PSP is a port of the fMSX emulator to the PlayStation Portable platform. 
It is based on version 3.2 of fMSX and should run on any PSP with firmware 1.50 
in user mode. 
The emulator uses GU (Graphical Utility toolkit) for rendering.

0. Table of contents:
-----------------

  1.  New features
  2.  Installation
  3.  Key configuration
  4.  Multi-volume disk images
  5.  Virtual keyboard
  6.  Optimization
  7.  Troubleshooting
  8.  Compiling
  9.  Version history
  10. Credits
  11. Thanks

1. New features:
------------
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 cancelsalso 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

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

  + PSP/
    + GAME/
      + FMSXPSP/
        + CONF/ (contains keyboard mapping)
        + ROMS/ (contains game roms and disk images)
        + SCREENS/ (contains screenshots)
        + STATES/ (contains save states)
        + EBOOT.PBP
        + SYSTEM.ZIP
        + [any other files]
      + FMSXPSP%
        + EBOOT.PBP

Please note that system ROM's must reside in the same folder as the 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 the PBP file. FMPAC.ROM, 
PAINTER.ROM or MSXDOS2.ROM may also be zipped, but they 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.

3. Key configuration:
-----------------
fMSX-PSP currently "ships" with the following default key mappings:

During emulation:

  * Analog stick - Joystick up/down/left/right
  * D-pad - Keyboard up/down/left/right
  * [ ] (square) - Joystick button A
  * X   (cross) - Joystick button B
  * O  (circle) - Spacebar
  * R trigger - Displays the virtual keyboard, for as long as the button
                is held
  * L + R triggers - Return to fMSX-PSP menu

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.

4. 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.

5. Virtual keyboard:
----------------
When the virtual keyboard is on:

  * D-pad - navigates the keyboard buttons
  * [ ] (square) - presses a virtual button
  * O (circle) - 'sticks' a sticky virtual button
  * ^ (triangle) - unsticks any sticky virtual buttons

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.

6. Optimization:
------------
For all MSX1 games and most MSX2 games, 300MHz 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 333MHz. 
Note that anything above 222Mhz will deplete your PSP battery faster.

7. Troubleshooting:
---------------
 1. State loading errors

    fMSX-PSP may refuse to load a save state due to a number of 
    different reasons. Some of the reasons follow:

    A. 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
    B. 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
    C. 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
    D. Any combination of the above

8. 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.

To compile fMSX-PSP, install zlib and libpng. 
To enable the alternate sound engines, #define MSXAUDIO and MSXMUSIC.
To enable transparent zipped ROM support, #define UNZLIB. The rest 
of the #defines are derived from fMSX.

9. Version history:
---------------
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

10. 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

11. 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 :)

P.S. Long live PSP development!

---------------
Akop Karapetyan
