| 1 | =================================================================================\r |
| 2 | GPFCE - NES emulator for the GP2X\r |
| 3 | =================================================================================\r |
| 4 | Ported by: zzhu8192\r |
| 5 | Optimized by: notaz\r |
| 6 | Current version: 0.3\r |
| 7 | Email: zzhu8192@yahoo.com\r |
| 8 | Web Site: www.unicorn-jockey.com\r |
| 9 | Web Site Admin: Lil-kun\r |
| 10 | =================================================================================\r |
| 11 | \r |
| 12 | \r |
| 13 | This is a gp2x port of the **great** Open Source NES emulator FCE Ultra:\r |
| 14 | http://fceultra.sourceforge.net. If you enjoyed using this emulator, please\r |
| 15 | keep in mind that this would not have been possible without the hard work and\r |
| 16 | dedication of the FCE Ultra developers.\r |
| 17 | \r |
| 18 | In case you don't know what the NES is about, see:\r |
| 19 | http://en.wikipedia.org/wiki/Famicom.\r |
| 20 | \r |
| 21 | My main reasons for working on this port is to get some game programming \r |
| 22 | experience on smaller devices. Although coding/porting an emu is \r |
| 23 | generally not the same thing, it's still pretty cool.\r |
| 24 | I'm an Enterprise Java software developer by trade, so this is a nice side project\r |
| 25 | for me, and a welcome change of pace. I'm also planning to write some \r |
| 26 | original games in Java for the GP2x. This should be interesting.... \r |
| 27 | \r |
| 28 | \r |
| 29 | ------------------------------------------------------------------\r |
| 30 | What's new\r |
| 31 | ------------------------------------------------------------------\r |
| 32 | \r |
| 33 | Many usability features were added, thanks to some great input \r |
| 34 | from developers and users on the gp32x.com board. Some of the\r |
| 35 | changes went into the selector frontend.\r |
| 36 | \r |
| 37 | (I have sent my selector customization changes to kounch, \r |
| 38 | so hopefully the changes will make it into\r |
| 39 | version 1.2 or later for other projects to use)\r |
| 40 | \r |
| 41 | There are now 4 executable scripts.\r |
| 42 | gpfce\r |
| 43 | gpfce_showfps\r |
| 44 | gpfce_swapbuttons\r |
| 45 | gpfce_showfps_swapbuttons\r |
| 46 | \r |
| 47 | showfps: this means FPS is displayed on the upper left of the screen\r |
| 48 | (in non-stretch mode only). \r |
| 49 | \r |
| 50 | swapbuttons: this means instead of Y/A as NES_B and B/X as NES_A\r |
| 51 | use A/X as NES_B, and Y/B as NES_A. (think NES MAX)\r |
| 52 | \r |
| 53 | Volume meter is now shown on the OSD when adjusted.\r |
| 54 | \r |
| 55 | \r |
| 56 | See version history below for more details.\r |
| 57 | \r |
| 58 | Depending on feedback, speed and even more compability will \r |
| 59 | probably be the major focus going forward.\r |
| 60 | \r |
| 61 | \r |
| 62 | ------------------------------------------------------------------\r |
| 63 | Current Features\r |
| 64 | ------------------------------------------------------------------\r |
| 65 | - .zip file support\r |
| 66 | - 22050 Hz Mono Sound support with volume control support\r |
| 67 | - OSD Volume bar\r |
| 68 | - Load/Save state (up to 10 slots, pick by holding down R)\r |
| 69 | - Hardware stretch (See controls)\r |
| 70 | - Soft Reset\r |
| 71 | - Savegame support\r |
| 72 | - 60 FPS without frame skipping on many games\r |
| 73 | - Configurable Turbo Fire (hold L to toggle)\r |
| 74 | - Game genie/Cheat code (functionality already exists in FCEU 0.81)\r |
| 75 | - Sorted display of 2048 roms per subdirectory (recommended 512-1024)?\r |
| 76 | - Semi-Configurable button layout (startup only)\r |
| 77 | - configurable FPS display on upper left hand side\r |
| 78 | \r |
| 79 | --------------------------------------------------------------------\r |
| 80 | Version History\r |
| 81 | --------------------------------------------------------------------\r |
| 82 | \r |
| 83 | \r |
| 84 | ver 0.4 (by notaz)\r |
| 85 | \r |
| 86 | - Compatibility fixes for the asm core.\r |
| 87 | - Fixed an anligment problem in MMC5 mapper.\r |
| 88 | \r |
| 89 | \r |
| 90 | ver 0.3 (by notaz)\r |
| 91 | \r |
| 92 | - Major improvement: added ARM asm CPU core from LJGP32,\r |
| 93 | which itself was adapted from FCA by Yoyofr.\r |
| 94 | The core required substantial changes to make it work in\r |
| 95 | FCE ultra.\r |
| 96 | - The emulator renders directly to frame buffer now (previously\r |
| 97 | it was drawing to offscreen buffer, which was then copied to\r |
| 98 | framebuffer).\r |
| 99 | - Squidge's MMU hack added.\r |
| 100 | - Added sync() calls after savestate writes.\r |
| 101 | - Some additional tweaking here and there to get a few more FPS.\r |
| 102 | - Volume middle now can be used as shift to emulator functions\r |
| 103 | instead stick click (saving, stretching, etc.).\r |
| 104 | - Added frameskip selection with shift+A and shift+Y (shift is\r |
| 105 | stick click or volume middle).\r |
| 106 | - Probably some more changes I forgot about.\r |
| 107 | \r |
| 108 | \r |
| 109 | \r |
| 110 | ver 0.2 5/29/2006 MD5SUM: dd75fa3f090f9298f9f4afff01ab96f2 *gpfce\r |
| 111 | \r |
| 112 | - Sound output issue with stereo fixed, now using\r |
| 113 | 22050 khz 16-bit mono. I've tried interpolating to \r |
| 114 | 44khz mono, but the results seemed similar.\r |
| 115 | - selector supports up to 2048 files, sorted, with\r |
| 116 | alpha scrolling via left/right in addition to \r |
| 117 | page up/down via L/R.\r |
| 118 | - additional startup scripts to select button and fps \r |
| 119 | configurations\r |
| 120 | - can load FDS files, but does not seem to work yet\r |
| 121 | - configurable buttons (use swapbuttons version )\r |
| 122 | - configurable fps (use showfps version)\r |
| 123 | - Configurable turbo fire control\r |
| 124 | - Selectable save slots from 0-9\r |
| 125 | - Volume bar\r |
| 126 | - compiled with GCC 4.1.0 -O3 with profiling\r |
| 127 | \r |
| 128 | \r |
| 129 | ver 0.1 5/23/2006 MD5SUM: 13681f25713ad04c535c23f8c61f1e0b *gpfce\r |
| 130 | \r |
| 131 | \r |
| 132 | - Initial version\r |
| 133 | - Around 60 fps with sound\r |
| 134 | - Load/Save State\r |
| 135 | - Hardware Stretch\r |
| 136 | - Soft reset support\r |
| 137 | - No GUI, using selector with config\r |
| 138 | - Hard coded 22050 audio, 16-bit, stereo\r |
| 139 | - compiled with GCC 4.1.0 -O3 with profiling\r |
| 140 | - Hard coded config path. This is to prevent users\r |
| 141 | from filling up the gp2x space by accident\r |
| 142 | \r |
| 143 | \r |
| 144 | ------------------------------------------------------------------\r |
| 145 | Usage\r |
| 146 | ------------------------------------------------------------------\r |
| 147 | 1) Untar the emulator tarball onto some directory on your SD card.\r |
| 148 | 2) You must have a directory called /roms/nes on your SD card.\r |
| 149 | Put the roms in there, i.e. /mnt/sd/roms/nes is the gp2x path.\r |
| 150 | Rom files can be zipped.\r |
| 151 | 3) The emulator will create a subdirectory under roms \r |
| 152 | /roms/nes/fceultra. Save states etc. go here.\r |
| 153 | 4) To start a different rom while running one, hit L+R+JOY.\r |
| 154 | To exit the file selection menu, press start.\r |
| 155 | 5) For FDS support, put disksys.rom in /mnt/sd/roms/nes/fceultra\r |
| 156 | Note: FDS roms must not be zipped.\r |
| 157 | 6) For GameGenie support, put gg.rom in /mnt/sd/roms/nes/fceultra\r |
| 158 | \r |
| 159 | ------------------------------------------------------------------\r |
| 160 | Cheats\r |
| 161 | ------------------------------------------------------------------\r |
| 162 | \r |
| 163 | gpfce uses the cheat mechanisms already provided by\r |
| 164 | http://mednafen.com/documentation/cheat.html Note this feature\r |
| 165 | is untested on gpfce as of version 0.2\r |
| 166 | \r |
| 167 | To use game genie, place appropraite gg.rom into /mnt/sd/roms/nes/fceultra.\r |
| 168 | Use -gg on commandline to activate the game genie rom.\r |
| 169 | \r |
| 170 | \r |
| 171 | ------------------------------------------------------------------\r |
| 172 | Controls\r |
| 173 | ------------------------------------------------------------------\r |
| 174 | \r |
| 175 | Note: JOY means press in on the joystick (i.e. not up/down/left/right)\r |
| 176 | \r |
| 177 | \r |
| 178 | In file selector mode\r |
| 179 | (This is based on selector version 1.1)\r |
| 180 | ----------------------------------------------\r |
| 181 | Start - EXIT file selector, back to main menu.\r |
| 182 | B,A,X,Y, JOY - start rom\r |
| 183 | L - page up\r |
| 184 | R - page down\r |
| 185 | UP - scroll up one, wraps if at top\r |
| 186 | DOWN - scroll down one, wraps if at bottom\r |
| 187 | LEFT - jump up list by first letter of rom name\r |
| 188 | RIGHT - jump down list by first letter of rom name\r |
| 189 | \r |
| 190 | \r |
| 191 | \r |
| 192 | \r |
| 193 | In game\r |
| 194 | ------------------------\r |
| 195 | Y - NES B\r |
| 196 | A - NES B\r |
| 197 | B - NES A\r |
| 198 | X - NES A\r |
| 199 | SELECT - NES SELECT\r |
| 200 | START - NES START\r |
| 201 | VOL +/- - Vol control. \r |
| 202 | \r |
| 203 | hold L - toggles between \r |
| 204 | No Turbo Fire, \r |
| 205 | Upper row of buttons turbo fire\r |
| 206 | Lower row of buttons turbo fire \r |
| 207 | \r |
| 208 | hold R - cycles through save state slots\r |
| 209 | \r |
| 210 | L & JOY - Save state\r |
| 211 | R & JOY - Load State\r |
| 212 | SEL & JOY - Stretch screen toggle\r |
| 213 | L & R - Reset NES\r |
| 214 | \r |
| 215 | L + R + JOY - Exit back to menu\r |
| 216 | \r |
| 217 | \r |
| 218 | FDS only\r |
| 219 | -------------------------------\r |
| 220 | L - insert disk\r |
| 221 | R - eject disk\r |
| 222 | JOY - select disk\r |
| 223 | \r |
| 224 | \r |
| 225 | \r |
| 226 | ------------------------------------------------------------------\r |
| 227 | Known issues\r |
| 228 | ------------------------------------------------------------------\r |
| 229 | 1) Stretch mode could use a better aspect ratio. Looks a bit odd.\r |
| 230 | Might look into some fancy non-2x filtering algorthms, if there are such things.\r |
| 231 | 2) Not thoroughly QA'd\r |
| 232 | 3) S-Video not working\r |
| 233 | 4) FDS does not seem to be working\r |
| 234 | 5) Some compatibility issues\r |
| 235 | 6) Can't sustain 60fps on some games\r |
| 236 | 7) Some clipping issues in some games\r |
| 237 | 8) Game genie behaves a bit odd, although code works...\r |
| 238 | \r |
| 239 | ------------------------------------------------------------------\r |
| 240 | Might have time to do list\r |
| 241 | ------------------------------------------------------------------\r |
| 242 | 1) Fix more known issues\r |
| 243 | 2) Better looking stretch?\r |
| 244 | 3) File based Game genie support\r |
| 245 | 4) Cleaner build\r |
| 246 | 5) Full speed on all games. (This may require some work)\r |
| 247 | 6) Better compability\r |
| 248 | 7) Multiplayer support via cable - this one is obviously pretty\r |
| 249 | tricky. Will need cables and a usb hub first.\r |
| 250 | It's definitely possible, but is not a priority at this point. \r |
| 251 | \r |
| 252 | \r |
| 253 | ------------------------------------------------------------------\r |
| 254 | Many thanks\r |
| 255 | ------------------------------------------------------------------\r |
| 256 | - To lots of talented developers on the http://www.gp32x.com/board/\r |
| 257 | Reesy, Squidge, etc. for responding to my technical questions.\r |
| 258 | - Thanks to \r |
| 259 | - Lil-kun - for the neat GPFCE logo and the Web Site (under construction) :D\r |
| 260 | - Referenced source code from MameGP2X (Franxis) and FCEU-0.3 gp2x (Noname)\r |
| 261 | - Awesome wiki: http://wiki.gp2x.org/wiki/Main_Page\r |
| 262 | - Awesome gp2x site: http://www.gp32x.com/\r |
| 263 | - ryleh's minimal lib - w/o which this wouldn't have worked\r |
| 264 | - FCE Ultra developers (http://fceultra.sourceforge.net/) \r |
| 265 | for the wonderful and feature rich NES emulator.\r |
| 266 | - kounch for Selector frontend - works great for lazy developers like me. :-D\r |
| 267 | I have sent my changes to kounch, so hopefully the changes will make it into\r |
| 268 | version 1.2 or later.\r |
| 269 | - gp2x community - just plain rocks\r |
| 270 | \r |
| 271 | \r |