| 1 | =================================================================================\r |
| 2 | GPFCE - NES emulator for the GP2X\r |
| 3 | =================================================================================\r |
| 4 | \r |
| 5 | \r |
| 6 | This is a gp2x port of the **great** Open Source NES emulator FCE Ultra:\r |
| 7 | http://fceultra.sourceforge.net. If you enjoyed using this emulator, please\r |
| 8 | keep in mind that this would not have been possible without the hard work and\r |
| 9 | dedication of the FCE Ultra developers.\r |
| 10 | \r |
| 11 | In case you don't know what the NES is about, see:\r |
| 12 | http://en.wikipedia.org/wiki/Famicom.\r |
| 13 | \r |
| 14 | \r |
| 15 | ------------------------------------------------------------------\r |
| 16 | Usage\r |
| 17 | ------------------------------------------------------------------\r |
| 18 | \r |
| 19 | 1) Unzip the emulator onto some directory on your SD card.\r |
| 20 | 2) Since version 0.4 ROMs no longer have to be put to fixed location,\r |
| 21 | so you can put them anywhere. Rom files can be zipped.\r |
| 22 | 3) The emulator will create a subdirectory in it's working directory \r |
| 23 | called fceultra. Save states etc. go here.\r |
| 24 | If you want to load saves from < 0.4 version, you should copy files\r |
| 25 | from /mnt/sd/roms/nes/fceultra/fcs to\r |
| 26 | <where_you_put_gpfce>/fceultra/fcs directory.\r |
| 27 | 4) Hit both volume keys to enter the menu.\r |
| 28 | 5) For FDS support, put disksys.rom in <where_you_put_gpfce>/fceultra\r |
| 29 | 6) For GameGenie support, put gg.rom in <where_you_put_gpfce>/fceultra\r |
| 30 | \r |
| 31 | \r |
| 32 | ------------------------------------------------------------------\r |
| 33 | Controls\r |
| 34 | ------------------------------------------------------------------\r |
| 35 | \r |
| 36 | Since v0.4 controls are configurable. Default controls are:\r |
| 37 | \r |
| 38 | B - NES A\r |
| 39 | X - NES B\r |
| 40 | Y - NES A (turbo)\r |
| 41 | A - NES B (turbo)\r |
| 42 | SELECT - NES SELECT\r |
| 43 | START - NES START\r |
| 44 | VOL +/- - Vol control. Pressing both enters the menu. \r |
| 45 | \r |
| 46 | L & JOY - Save state\r |
| 47 | R & JOY - Load State\r |
| 48 | \r |
| 49 | Note: JOY means press in on the joystick (i.e. not up/down/left/right)\r |
| 50 | \r |
| 51 | \r |
| 52 | gpfce can't emulate all input devices which FCE Ultra does, but it can handle\r |
| 53 | gamepad emulation of course, plus it can emulate Zapper and the Arkanoid\r |
| 54 | controller (the last two have hardcoded controls).\r |
| 55 | \r |
| 56 | B is the emulated trigger button for the Zapper. X is also emulated as the\r |
| 57 | trigger, but as long as you have it pressed down, no color detection will take\r |
| 58 | place, which is effectively like pulling the trigger while the Zapper is\r |
| 59 | pointed away from the television screen. Note that you must press X for a\r |
| 60 | short time to have the desired effect.\r |
| 61 | \r |
| 62 | For Zapper and the Arkanoid controller Y increases the movement speed,\r |
| 63 | A decreases.\r |
| 64 | \r |
| 65 | \r |
| 66 | ------------------------------------------------------------------\r |
| 67 | Palettes\r |
| 68 | ------------------------------------------------------------------\r |
| 69 | \r |
| 70 | gpfce has similar palette options as FCE Ultra, so here is modified excerpt\r |
| 71 | from FCE Ultra manual:\r |
| 72 | \r |
| 73 | FCE Ultra has many palette features, including loading a custom palette to\r |
| 74 | replace the default NES palette (see FCE Ultra option in options menu).\r |
| 75 | The palette from an NTSC NES can also be generated on-the-fly.\r |
| 76 | \r |
| 77 | First, a note on on the format of external palettes; Palette files are expected\r |
| 78 | to contain 64 8-bit RGB triplets(each in that order; red comes first in the\r |
| 79 | triplet in the file, then green, then blue). Each 8-bit value represents\r |
| 80 | brightness for that particular color. 0 is minimum, 255 is maximum.\r |
| 81 | \r |
| 82 | Palettes can be set on a per-game basis. To do this, put a palette file in the\r |
| 83 | <where_you_put_gpfce>/fceultra/pal directory with the same base filename as the\r |
| 84 | game you wish to associate with and add the extension "pal". Examples:\r |
| 85 | \r |
| 86 | File name: Palette file name:\r |
| 87 | BigBad.nes BigBad.pal\r |
| 88 | BigBad.zip BigBad.pal\r |
| 89 | BigBad.Better.nes BigBad.Better.pal\r |
| 90 | \r |
| 91 | \r |
| 92 | With so many ways to choose a palette, figuring out which one will be active may\r |
| 93 | be difficult. Here's a list of what palettes will be used, in order from highest\r |
| 94 | priority to least priority(if a condition doesn't exist for a higher priority\r |
| 95 | palette, the emulator will continue down its list of palettes).\r |
| 96 | \r |
| 97 | * Palette loaded from the "fceultra/pal" directory.\r |
| 98 | * NTSC Color Emulation(only for NTSC NES games).\r |
| 99 | * VS Unisystem palette(if the game is a VS Unisystem game and a palette is available).\r |
| 100 | * Custom global palette (set in the menu).\r |
| 101 | * Default NES palette.\r |
| 102 | \r |
| 103 | \r |
| 104 | ------------------------------------------------------------------\r |
| 105 | Famicom Disk System\r |
| 106 | ------------------------------------------------------------------\r |
| 107 | \r |
| 108 | You will need the FDS BIOS ROM image in <where_you_put_gpfce>/fceultra directory.\r |
| 109 | It's size should be 8192 bytes and it must be named "disksys.rom".\r |
| 110 | gpfce will not load FDS games without this file.\r |
| 111 | \r |
| 112 | You will also probably need configure keys for swapping the virtual FDS disks,\r |
| 113 | they are configurable in Controls menu.\r |
| 114 | \r |
| 115 | Two types of FDS disk images are supported: disk images with the FWNES-style header,\r |
| 116 | and disk images with no header. The number of sides on headerless disk images is\r |
| 117 | calculated by the total file size, so don't put extraneous data at the end of the file.\r |
| 118 | \r |
| 119 | \r |
| 120 | ------------------------------------------------------------------\r |
| 121 | VS Unisystem\r |
| 122 | ------------------------------------------------------------------\r |
| 123 | \r |
| 124 | gpfce currently only supports VS Unisystem ROM images in the iNES format. See\r |
| 125 | FCE Ultra manual for the list of supported games.\r |
| 126 | \r |
| 127 | You will need to configure a key to insert coins, see Controls option in the menu.\r |
| 128 | \r |
| 129 | \r |
| 130 | ------------------------------------------------------------------\r |
| 131 | Cheats\r |
| 132 | ------------------------------------------------------------------\r |
| 133 | \r |
| 134 | For cheating you can ether use the authentic game genie support, or the .cht files.\r |
| 135 | \r |
| 136 | To use authentic game genie, place appropriate gg.rom into\r |
| 137 | <where_you_put_gpfce>/fceultra.\r |
| 138 | Use the FCE Ultra option menu or -gg on commandline to activate the game genie rom.\r |
| 139 | The ROM image may either be the 24592 byte iNES-format image, or the 4352\r |
| 140 | byte raw ROM image.\r |
| 141 | \r |
| 142 | The .cht files fould be placed into <where_you_put_gpfce>/fceultra/cheats/ directory.\r |
| 143 | They should have the same base filename as the game you wish to associate with\r |
| 144 | with the extension "cht". Examples:\r |
| 145 | \r |
| 146 | File name: Palette file name:\r |
| 147 | BigBad.nes BigBad.cht\r |
| 148 | BigBad.zip BigBad.cht\r |
| 149 | BigBad.Better.nes BigBad.Better.cht\r |
| 150 | \r |
| 151 | If you have done everything correctly, Cheat option will appear in the main menu\r |
| 152 | after you load the ROM. You can activate/deactivate cheats by pressing B.\r |
| 153 | For description of .cht file format, see http://fceultra.sourceforge.net/cheat.php\r |
| 154 | \r |
| 155 | \r |
| 156 | ------------------------------------------------------------------\r |
| 157 | FCM movies\r |
| 158 | ------------------------------------------------------------------\r |
| 159 | \r |
| 160 | Version 0.4 has partial FCM movie support. Most of the movies desync due to\r |
| 161 | different timing, but some of them can be played. There is only playback support.\r |
| 162 | Files should be placed in the ROMs directory along with the ROMs themselves.\r |
| 163 | Naming is a bit different, the fcm files should have full ROM name in them,\r |
| 164 | with additional .fcm extension added. Examples:\r |
| 165 | \r |
| 166 | File name: Palette file name:\r |
| 167 | BigBad.nes BigBad.nes.fcm\r |
| 168 | BigBad.zip BigBad.zip.fcm\r |
| 169 | BigBad.Better.nes BigBad.Better.nes.fcm\r |
| 170 | \r |
| 171 | \r |
| 172 | --------------------------------------------------------------------\r |
| 173 | Version History\r |
| 174 | --------------------------------------------------------------------\r |
| 175 | \r |
| 176 | \r |
| 177 | ver 0.4 (by notaz)\r |
| 178 | rev 15x\r |
| 179 | - Fixed savestate subsections (were causing some mapper data not\r |
| 180 | to be saved).\r |
| 181 | - Fixed an issue of MapIRQHook getting lost after loading a savestate\r |
| 182 | (glitched Akumajou Densetsu and other games after savestate load).\r |
| 183 | - A bug, which prevented configuring multiple USB pads fixed.\r |
| 184 | rev 153\r |
| 185 | - Lots of work on the asm core. Timing fixed for some instructions.\r |
| 186 | Some missing undocumented instruction handlers added. Lots of\r |
| 187 | tweaking to make it compatible with all that mapper code.\r |
| 188 | - Completely new PicoDrive style menu added with most standard\r |
| 189 | FCE Ultra and some additional options. Selector removed, ROM list\r |
| 190 | is now built-in and only limited by available memory.\r |
| 191 | - Merged in most of code from 0.98.1x versions. Only ppu/rendering\r |
| 192 | and sound emulation code left from 0.81 (which is less accurate\r |
| 193 | but much faster).\r |
| 194 | - Default palette changed to one from later versions.\r |
| 195 | - Fixed some alignment problems in MMC5 and some other mappers.\r |
| 196 | - Some generic optimizations and code cleanup/refactoring.\r |
| 197 | - The built-in NSF player fixed.\r |
| 198 | - Authentic GameGenie support fixed.\r |
| 199 | - FDS support fixed.\r |
| 200 | - VS Unisystem support fixed.\r |
| 201 | - Ingame saves fixed (not sure when they got broken).\r |
| 202 | - Increased maximum sound volume.\r |
| 203 | - Added Zapper emulation just for fun.\r |
| 204 | - Added partial FCM movie support.\r |
| 205 | - Fixed some memory leaks.\r |
| 206 | - Fixed a bug which caused USB connection from GP2X menu\r |
| 207 | to hang after using gpfce.\r |
| 208 | - Software scaler added.\r |
| 209 | - USB gamepad support added.\r |
| 210 | - TV out fixed.\r |
| 211 | - Documentation updated.\r |
| 212 | \r |
| 213 | \r |
| 214 | ver 0.3 (by notaz)\r |
| 215 | \r |
| 216 | - Major improvement: added ARM asm CPU core from LJGP32,\r |
| 217 | which itself was adapted from FCA by Yoyofr.\r |
| 218 | The core required substantial changes to make it work in\r |
| 219 | FCE ultra.\r |
| 220 | - The emulator renders directly to frame buffer now (previously\r |
| 221 | it was drawing to offscreen buffer, which was then copied to\r |
| 222 | framebuffer).\r |
| 223 | - Squidge's MMU hack added.\r |
| 224 | - Added sync() calls after savestate writes.\r |
| 225 | - Some additional tweaking here and there to get a few more FPS.\r |
| 226 | - Volume middle now can be used as shift to emulator functions\r |
| 227 | instead stick click (saving, stretching, etc.).\r |
| 228 | - Added frameskip selection with shift+A and shift+Y (shift is\r |
| 229 | stick click or volume middle).\r |
| 230 | - Probably some more changes I forgot about.\r |
| 231 | \r |
| 232 | \r |
| 233 | \r |
| 234 | ver 0.2 5/29/2006 MD5SUM: dd75fa3f090f9298f9f4afff01ab96f2 *gpfce\r |
| 235 | \r |
| 236 | - Sound output issue with stereo fixed, now using\r |
| 237 | 22050 khz 16-bit mono. I've tried interpolating to \r |
| 238 | 44khz mono, but the results seemed similar.\r |
| 239 | - selector supports up to 2048 files, sorted, with\r |
| 240 | alpha scrolling via left/right in addition to \r |
| 241 | page up/down via L/R.\r |
| 242 | - additional startup scripts to select button and fps \r |
| 243 | configurations\r |
| 244 | - can load FDS files, but does not seem to work yet\r |
| 245 | - configurable buttons (use swapbuttons version )\r |
| 246 | - configurable fps (use showfps version)\r |
| 247 | - Configurable turbo fire control\r |
| 248 | - Selectable save slots from 0-9\r |
| 249 | - Volume bar\r |
| 250 | - compiled with GCC 4.1.0 -O3 with profiling\r |
| 251 | \r |
| 252 | \r |
| 253 | ver 0.1 5/23/2006 MD5SUM: 13681f25713ad04c535c23f8c61f1e0b *gpfce\r |
| 254 | \r |
| 255 | - Initial version\r |
| 256 | - Around 60 fps with sound\r |
| 257 | - Load/Save State\r |
| 258 | - Hardware Stretch\r |
| 259 | - Soft reset support\r |
| 260 | - No GUI, using selector with config\r |
| 261 | - Hard coded 22050 audio, 16-bit, stereo\r |
| 262 | - compiled with GCC 4.1.0 -O3 with profiling\r |
| 263 | - Hard coded config path. This is to prevent users\r |
| 264 | from filling up the gp2x space by accident\r |
| 265 | \r |
| 266 | \r |
| 267 | \r |
| 268 | ------------------------------------------------------------------\r |
| 269 | Credits/thanks\r |
| 270 | ------------------------------------------------------------------\r |
| 271 | \r |
| 272 | - Original base code of FCE Ultra by Xodnizel, Bero.\r |
| 273 | - Porting/optimization/integration/frontend for 0.3 and 0.4 by notaz.\r |
| 274 | - Versions 0.1 and 0.2 by zzhu8192 (http://www.unicorn-jockey.com).\r |
| 275 | - asm CPU core from FCA and Little John GP32.\r |
| 276 | - Minimal library by rlyeh.\r |
| 277 | - Additional low-level GP2X libs by Hermes/PS2Reality, theoddbot,\r |
| 278 | god_at_hell, Puck2099.\r |
| 279 | \r |
| 280 | additional thanks:\r |
| 281 | - Cruel and DaveC from gp32x boards for beta testing.\r |
| 282 | - All FCE Ultra contributors listed in\r |
| 283 | http://fceultra.sourceforge.net/docs.php\r |
| 284 | \r |
| 285 | ...and everyone whose name my mind has misplaced.\r |
| 286 | \r |
| 287 | zzhu8192's thanks:\r |
| 288 | - To lots of talented developers on the http://www.gp32x.com/board/\r |
| 289 | Reesy, Squidge, etc. for responding to my technical questions.\r |
| 290 | - Thanks to \r |
| 291 | - Lil-kun - for the neat GPFCE logo and the Web Site (under construction) :D\r |
| 292 | - Referenced source code from MameGP2X (Franxis) and FCEU-0.3 gp2x (Noname)\r |
| 293 | - Awesome wiki: http://wiki.gp2x.org/wiki/Main_Page\r |
| 294 | - Awesome gp2x site: http://www.gp32x.com/\r |
| 295 | - ryleh's minimal lib - w/o which this wouldn't have worked\r |
| 296 | - FCE Ultra developers (http://fceultra.sourceforge.net/) \r |
| 297 | for the wonderful and feature rich NES emulator.\r |
| 298 | - kounch for Selector frontend - works great for lazy developers like me. :-D\r |
| 299 | I have sent my changes to kounch, so hopefully the changes will make it into\r |
| 300 | version 1.2 or later.\r |
| 301 | - gp2x community - just plain rocks\r |
| 302 | \r |
| 303 | \r |