ips patches, 0.4 r162 rel?
[fceu.git] / out_gp2x / readme.txt
index 6218b92..a6cf045 100644 (file)
@@ -1,13 +1,6 @@
 =================================================================================\r
                      GPFCE - NES emulator for the GP2X\r
 =================================================================================\r
-                         Ported by:        zzhu8192\r
-                         Optimized by:     notaz\r
-                         Current version:  0.3\r
-                         Email:            zzhu8192@yahoo.com\r
-                         Web Site:         www.unicorn-jockey.com\r
-                         Web Site Admin:   Lil-kun\r
-=================================================================================\r
 \r
 \r
 This is a gp2x port of the **great** Open Source NES emulator FCE Ultra:\r
@@ -18,69 +11,223 @@ dedication of the FCE Ultra developers.
 In case you don't know what the NES is about, see:\r
 http://en.wikipedia.org/wiki/Famicom.\r
 \r
-My main reasons for working on this port is to get some game programming \r
-experience on smaller devices.  Although coding/porting an emu is \r
-generally not the same thing, it's still pretty cool.\r
-I'm an Enterprise Java software developer by trade, so this is a nice side project\r
-for me, and a welcome change of pace.  I'm also planning to write some \r
-original games in Java for the GP2x.  This should be interesting....  \r
+\r
+------------------------------------------------------------------\r
+ Usage\r
+------------------------------------------------------------------\r
+\r
+1)  Unzip the emulator onto some directory on your SD card.\r
+2)  Since version 0.4 ROMs no longer have to be put to fixed location,\r
+    so you can put them anywhere. Rom files can be zipped.\r
+3)  The emulator will create a subdirectory in it's working directory \r
+    called fceultra. Save states etc. go here.\r
+    If you want to load saves from < 0.4 version, you should copy files\r
+    from /mnt/sd/roms/nes/fceultra/fcs to\r
+    <where_you_put_gpfce>/fceultra/fcs directory.\r
+4)  Hit both volume keys to enter the menu.\r
+5)  For FDS support, put disksys.rom in <where_you_put_gpfce>/fceultra\r
+6)  For GameGenie support, put gg.rom in <where_you_put_gpfce>/fceultra\r
+\r
+\r
+------------------------------------------------------------------\r
+ Controls\r
+------------------------------------------------------------------\r
+\r
+Since v0.4 controls are configurable. Default controls are:\r
+\r
+B         - NES A\r
+X         - NES B\r
+Y         - NES A (turbo)\r
+A         - NES B (turbo)\r
+SELECT    - NES SELECT\r
+START     - NES START\r
+VOL +/-   - Vol control. Pressing both enters the menu. \r
+\r
+L & JOY   - Save state\r
+R & JOY   - Load State\r
+\r
+Note: JOY means press in on the joystick (i.e. not up/down/left/right)\r
+\r
+\r
+gpfce can't emulate all input devices which FCE Ultra does, but it can handle\r
+gamepad emulation of course, plus it can emulate Zapper and the Arkanoid\r
+controller (the last two have hardcoded controls).\r
+\r
+B is the emulated trigger button for the Zapper. X is also emulated as the\r
+trigger, but as long as you have it pressed down, no color detection will take\r
+place, which is effectively like pulling the trigger while the Zapper is\r
+pointed away from the television screen. Note that you must press X for a\r
+short time to have the desired effect.\r
+\r
+For Zapper and the Arkanoid controller Y increases the movement speed,\r
+A decreases.\r
+\r
+\r
+------------------------------------------------------------------\r
+ Palettes\r
+------------------------------------------------------------------\r
+\r
+gpfce has similar palette options as FCE Ultra, so here is modified excerpt\r
+from FCE Ultra manual:\r
+\r
+FCE Ultra has many palette features, including loading a custom palette to\r
+replace the default NES palette (see FCE Ultra option in options menu).\r
+The palette from an NTSC NES can also be generated on-the-fly.\r
+\r
+First, a note on on the format of external palettes; Palette files are expected\r
+to contain 64 8-bit RGB triplets(each in that order; red comes first in the\r
+triplet in the file, then green, then blue). Each 8-bit value represents\r
+brightness for that particular color. 0 is minimum, 255 is maximum.\r
+\r
+Palettes can be set on a per-game basis. To do this, put a palette file in the\r
+<where_you_put_gpfce>/fceultra/pal directory with the same base filename as the\r
+game you wish to associate with and add the extension "pal". Examples:\r
+\r
+                File name:              Palette file name:\r
+                 BigBad.nes              BigBad.pal\r
+                 BigBad.zip              BigBad.pal\r
+                 BigBad.Better.nes       BigBad.Better.pal\r
+       \r
+\r
+With so many ways to choose a palette, figuring out which one will be active may\r
+be difficult. Here's a list of what palettes will be used, in order from highest\r
+priority to least priority(if a condition doesn't exist for a higher priority\r
+palette, the emulator will continue down its list of palettes).\r
+\r
+    * Palette loaded from the "fceultra/pal" directory.\r
+    * NTSC Color Emulation(only for NTSC NES games).\r
+    * VS Unisystem palette(if the game is a VS Unisystem game and a palette is available).\r
+    * Custom global palette (set in the menu).\r
+    * Default NES palette.\r
+\r
+\r
+------------------------------------------------------------------\r
+ Famicom Disk System\r
+------------------------------------------------------------------\r
+\r
+You will need the FDS BIOS ROM image in <where_you_put_gpfce>/fceultra directory.\r
+It's size should be 8192 bytes and it must be named "disksys.rom".\r
+gpfce will not load FDS games without this file.\r
+\r
+You will also probably need configure keys for swapping the virtual FDS disks,\r
+they are configurable in Controls menu.\r
+\r
+Two types of FDS disk images are supported: disk images with the FWNES-style header,\r
+and disk images with no header. The number of sides on headerless disk images is\r
+calculated by the total file size, so don't put extraneous data at the end of the file.\r
+\r
+\r
+------------------------------------------------------------------\r
+ VS Unisystem\r
+------------------------------------------------------------------\r
+\r
+gpfce currently only supports VS Unisystem ROM images in the iNES format. See\r
+FCE Ultra manual for the list of supported games.\r
+\r
+You will need to configure a key to insert coins, see Controls option in the menu.\r
 \r
 \r
 ------------------------------------------------------------------\r
-What's new\r
+ Cheats\r
 ------------------------------------------------------------------\r
 \r
-Many usability features were added, thanks to some great input \r
-from developers and users on the gp32x.com board.  Some of the\r
-changes went into the selector frontend.\r
+For cheating you can ether use the authentic game genie support, or the .cht files.\r
+\r
+To use authentic game genie, place appropriate gg.rom into\r
+<where_you_put_gpfce>/fceultra.\r
+Use the FCE Ultra option menu or -gg on commandline to activate the game genie rom.\r
+The ROM image may either be the 24592 byte iNES-format image, or the 4352\r
+byte raw ROM image.\r
 \r
-(I have sent my selector customization changes to kounch, \r
- so hopefully the changes will make it into\r
- version 1.2 or later for other projects to use)\r
+The .cht files fould be placed into <where_you_put_gpfce>/fceultra/cheats/ directory.\r
+They should have the same base filename as the game you wish to associate with\r
+with the extension "cht". Examples:\r
 \r
-There are now 4 executable scripts.\r
-gpfce\r
-gpfce_showfps\r
-gpfce_swapbuttons\r
-gpfce_showfps_swapbuttons\r
+                File name:              Palette file name:\r
+                 BigBad.nes              BigBad.cht\r
+                 BigBad.zip              BigBad.cht\r
+                 BigBad.Better.nes       BigBad.Better.cht\r
 \r
-showfps:  this means FPS is displayed on the upper left of the screen\r
-          (in non-stretch mode only).   \r
+If you have done everything correctly, Cheat option will appear in the main menu\r
+after you load the ROM. You can activate/deactivate cheats by pressing B.\r
+For description of .cht file format, see http://fceultra.sourceforge.net/cheat.php\r
+\r
+\r
+------------------------------------------------------------------\r
+ IPS patch support\r
+------------------------------------------------------------------\r
 \r
-swapbuttons:  this means instead of Y/A as NES_B  and B/X as NES_A\r
-              use  A/X as NES_B, and Y/B as NES_A.  (think NES MAX)\r
-              \r
-Volume meter is now shown on the OSD when adjusted.\r
+Place the IPS files in the same directory as the ROM to load, and name them\r
+filename.ips or filename.something.ips. Examples:\r
 \r
 \r
-See version history below for more details.\r
+         File name:              IPS file names:\r
+          BigBad.nes              BigBad.nes.ips           BigBad.nes.somehack.ips\r
+          BigBad.zip              BigBad.zip.ips           BigBad.zip.badhack.ips\r
+          BigBad.Better.nes       BigBad.Better.nes.ips    BigBad.Better.nes.evenbetterhack.ips\r
 \r
-Depending on feedback, speed and even more compability will \r
-probably be the major focus going forward.\r
+Patching is supported for all supported formats (iNES, FDS, UNIF, and NSF), but\r
+it will probably only be useful for the iNES and FDS formats. UNIF files can't be\r
+patched well with the IPS format because they are chunk-based with no fixed offsets.\r
 \r
 \r
 ------------------------------------------------------------------\r
-Current Features\r
+ FCM movies\r
 ------------------------------------------------------------------\r
-- .zip file support\r
-- 22050 Hz Mono Sound support with volume control support\r
-- OSD Volume bar\r
-- Load/Save state (up to 10 slots, pick by holding down R)\r
-- Hardware stretch (See controls)\r
-- Soft Reset\r
-- Savegame support\r
-- 60 FPS without frame skipping on many games\r
-- Configurable Turbo Fire (hold L to toggle)\r
-- Game genie/Cheat code (functionality already exists in FCEU 0.81)\r
-- Sorted display of 2048 roms per subdirectory (recommended 512-1024)?\r
-- Semi-Configurable button layout (startup only)\r
-- configurable FPS display on upper left hand side\r
+\r
+Version 0.4 has partial FCM movie support. Most of the movies desync due to\r
+different timing, but some of them can be played. There is only playback support.\r
+Files should be placed in the ROMs directory along with the ROMs themselves.\r
+Naming is the same as for IPS patches (see previous section), buf use .fcm\r
+extension instead of .ips.\r
+\r
 \r
 --------------------------------------------------------------------\r
  Version History\r
 --------------------------------------------------------------------\r
 \r
 \r
+ver 0.4 (by notaz)\r
+  rev 162\r
+          - Fixed savestate subsections (were causing some mapper data not\r
+            to be saved).\r
+          - Fixed an issue of MapIRQHook getting lost after loading a savestate\r
+            (glitched Akumajou Densetsu and other games after savestate load).\r
+          - A bug, which prevented configuring multiple USB pads fixed.\r
+          - Fixed sound breaking bug after switching it on/off multiple times.\r
+          - Added "Perfect VSYNC" option, which changes GP2X refresh rate and\r
+            syncs emu timing to LCD vsync.\r
+          - Fixed IPS patch support.\r
+  rev 153\r
+          - Lots of work on the asm core. Timing fixed for some instructions.\r
+            Some missing undocumented instruction handlers added. Lots of\r
+            tweaking to make it compatible with all that mapper code.\r
+          - Completely new PicoDrive style menu added with most standard\r
+            FCE Ultra and some additional options. Selector removed, ROM list\r
+            is now built-in and only limited by available memory.\r
+          - Merged in most of code from 0.98.1x versions. Only ppu/rendering\r
+            and sound emulation code left from 0.81 (which is less accurate\r
+            but much faster).\r
+          - Default palette changed to one from later versions.\r
+          - Fixed some alignment problems in MMC5 and some other mappers.\r
+          - Some generic optimizations and code cleanup/refactoring.\r
+          - The built-in NSF player fixed.\r
+          - Authentic GameGenie support fixed.\r
+          - FDS support fixed.\r
+          - VS Unisystem support fixed.\r
+          - Ingame saves fixed (not sure when they got broken).\r
+          - Increased maximum sound volume.\r
+          - Added Zapper emulation just for fun.\r
+          - Added partial FCM movie support.\r
+          - Fixed some memory leaks.\r
+          - Fixed a bug which caused USB connection from GP2X menu\r
+            to hang after using gpfce.\r
+          - Software scaler added.\r
+          - USB gamepad support added.\r
+          - TV out fixed.\r
+          - Documentation updated.\r
+\r
+\r
 ver 0.3 (by notaz)\r
 \r
           - Major improvement: added ARM asm CPU core from LJGP32,\r
@@ -121,7 +268,6 @@ ver 0.2   5/29/2006  MD5SUM: dd75fa3f090f9298f9f4afff01ab96f2 *gpfce
 \r
 \r
 ver 0.1   5/23/2006  MD5SUM: 13681f25713ad04c535c23f8c61f1e0b *gpfce\r
-      \r
 \r
           - Initial version\r
           - Around 60 fps with sound\r
@@ -135,118 +281,27 @@ ver 0.1   5/23/2006  MD5SUM: 13681f25713ad04c535c23f8c61f1e0b *gpfce
             from filling up the gp2x space by accident\r
 \r
 \r
+      \r
 ------------------------------------------------------------------\r
-Usage\r
-------------------------------------------------------------------\r
-1)  Untar the emulator tarball onto some directory on your SD card.\r
-2)  You must have a directory called /roms/nes on your SD card.\r
-    Put the roms in there, i.e. /mnt/sd/roms/nes is the gp2x path.\r
-    Rom files can be zipped.\r
-3)  The emulator will create a subdirectory under roms  \r
-    /roms/nes/fceultra.  Save states etc. go here.\r
-4)  To start a different rom while running one, hit L+R+JOY.\r
-    To exit the file selection menu, press start.\r
-5)  For FDS support, put disksys.rom in /mnt/sd/roms/nes/fceultra\r
-    Note: FDS roms must not be zipped.\r
-6)  For GameGenie support, put gg.rom in /mnt/sd/roms/nes/fceultra\r
-\r
-------------------------------------------------------------------\r
-Cheats\r
-------------------------------------------------------------------\r
-\r
-gpfce uses the cheat mechanisms already provided by\r
-http://mednafen.com/documentation/cheat.html  Note this feature\r
-is untested on gpfce as of version 0.2\r
-\r
-To use game genie, place appropraite gg.rom into /mnt/sd/roms/nes/fceultra.\r
-Use -gg on commandline to activate the game genie rom.\r
-\r
-\r
-------------------------------------------------------------------\r
-Controls\r
+ Credits/thanks\r
 ------------------------------------------------------------------\r
 \r
-Note: JOY means press in on the joystick (i.e. not up/down/left/right)\r
+- Original base code of FCE Ultra by Xodnizel, Bero.\r
+- Porting/optimization/integration/frontend for 0.3 and 0.4 by notaz.\r
+- Versions 0.1 and 0.2 by zzhu8192 (http://www.unicorn-jockey.com).\r
+- asm CPU core from FCA and Little John GP32.\r
+- Minimal library by rlyeh.\r
+- Additional low-level GP2X libs by Hermes/PS2Reality, theoddbot,\r
+  god_at_hell, Puck2099.\r
 \r
+additional thanks:\r
+- Cruel and DaveC from gp32x boards for beta testing.\r
+- All FCE Ultra contributors listed in\r
+  http://fceultra.sourceforge.net/docs.php\r
 \r
-In file selector mode\r
-(This is based on selector version 1.1)\r
-----------------------------------------------\r
-Start        - EXIT file selector, back to main menu.\r
-B,A,X,Y, JOY - start rom\r
-L            - page up\r
-R            - page down\r
-UP           - scroll up one, wraps if at top\r
-DOWN         - scroll down one, wraps if at bottom\r
-LEFT         - jump up list by first letter of rom name\r
-RIGHT        - jump down list by first letter of rom name\r
-               \r
+...and everyone whose name my mind has misplaced.\r
 \r
-\r
-\r
-In game\r
-------------------------\r
-Y         - NES B\r
-A         - NES B\r
-B         - NES A\r
-X         - NES A\r
-SELECT    - NES SELECT\r
-START     - NES START\r
-VOL +/-   - Vol control.  \r
-\r
-hold L    - toggles between  \r
-            No Turbo Fire, \r
-            Upper row of buttons turbo fire\r
-            Lower row of buttons turbo fire  \r
-             \r
-hold R    - cycles through save state slots\r
-\r
-L & JOY   - Save state\r
-R & JOY   - Load State\r
-SEL & JOY - Stretch screen toggle\r
-L & R     - Reset NES\r
-\r
-L + R + JOY - Exit back to menu\r
-\r
-\r
-FDS only\r
--------------------------------\r
-L         - insert disk\r
-R         - eject disk\r
-JOY       - select disk\r
-\r
-\r
-\r
-------------------------------------------------------------------\r
-Known issues\r
-------------------------------------------------------------------\r
-1)  Stretch mode could use a better aspect ratio.  Looks a bit odd.\r
-    Might look into some fancy non-2x filtering algorthms, if there are such things.\r
-2)  Not thoroughly QA'd\r
-3)  S-Video not working\r
-4)  FDS does not seem to be working\r
-5)  Some compatibility issues\r
-6)  Can't sustain 60fps on some games\r
-7)  Some clipping issues in some games\r
-8)  Game genie behaves a bit odd, although code works...\r
-\r
-------------------------------------------------------------------\r
- Might have time to do list\r
-------------------------------------------------------------------\r
-1) Fix more known issues\r
-2) Better looking stretch?\r
-3) File based Game genie support\r
-4) Cleaner build\r
-5) Full speed on all games.  (This may require some work)\r
-6) Better compability\r
-7) Multiplayer support via cable - this one is obviously pretty\r
-   tricky.  Will need cables and a usb hub first.\r
-   It's definitely possible, but is not a priority at this point.    \r
-\r
-       \r
-------------------------------------------------------------------\r
- Many thanks\r
-------------------------------------------------------------------\r
+zzhu8192's thanks:\r
 - To lots of talented developers on the http://www.gp32x.com/board/\r
   Reesy, Squidge, etc.  for responding to my technical questions.\r
 - Thanks to \r