| 1 | |
| 2 | PCSX-ReARMed - yet another PCSX fork, ARM special |
| 3 | |
| 4 | http://notaz.gp2x.de/pcsx_rearmed.php |
| 5 | |
| 6 | |
| 7 | About |
| 8 | ----- |
| 9 | |
| 10 | PCSX ReARMed is yet another PCSX fork based on the PCSX-Reloaded project, |
| 11 | which itself contains code from PCSX, PCSX-df and PCSX-Revolution. This |
| 12 | version is ARM architecture oriented and features MIPS->ARM recompiler by |
| 13 | Ari64, NEON GTE code and more performance improvements. It was created for |
| 14 | Pandora handheld, but should be usable on other devices after some code |
| 15 | adjustments (N900, GPH Wiz/Caanoo, PlayBook versions are also available). |
| 16 | |
| 17 | PCSX ReARMed features ARM NEON GPU by Exophase, that in many cases produces |
| 18 | pixel perfect graphics at very high performance. There is also Una-i's GPU |
| 19 | plugin from PCSX4ALL project, and traditional P.E.Op.S. one. |
| 20 | |
| 21 | |
| 22 | Compiling |
| 23 | --------- |
| 24 | |
| 25 | './configure && make' should work for the most part. |
| 26 | |
| 27 | When compiling for ARM, it's advisable to tell configure script the CPU, FPU |
| 28 | and ABI that matches your target system to get best performance, like this: |
| 29 | |
| 30 | CFLAGS='-mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp' ./configure |
| 31 | |
| 32 | Cross compilation should also work if kernel-style CROSS_COMPILE variable |
| 33 | is set: |
| 34 | CROSS_COMPILE='arm-none-linux-gnueabi-' ./configure |
| 35 | |
| 36 | |
| 37 | Usage |
| 38 | ----- |
| 39 | |
| 40 | There are several different frontends that can be built from source (one |
| 41 | generic and several platform specific), so usage slightly differs depending |
| 42 | on that. Most of them have a menu that can be used to run games and configure |
| 43 | the emulator. |
| 44 | |
| 45 | Supported CD image formats: |
| 46 | - .bin/.cue |
| 47 | - .bin/.toc |
| 48 | - .img/.ccd/.sub |
| 49 | - .mdf/.mds |
| 50 | - .Z/.Z.table |
| 51 | - .bz/.bz.table |
| 52 | - .ZNX/.ZNX.table (partial) |
| 53 | - EBOOT.PBP (PSP, partial) |
| 54 | - .cbn |
| 55 | |
| 56 | CDDA (CD audio) only supported when .cue/.toc/.ccd/.mds files are present. |
| 57 | There is support for redump.org .sbi files, which can be used instead of |
| 58 | .sub files to save space (name it the same as .cue/.bin, just use .sbi |
| 59 | extension). This is required for Libcrypt copy protected game support. |
| 60 | |
| 61 | The emulator can simulate BIOS, which means BIOS files are not required, |
| 62 | however implementation is not complete and some games still need real BIOS |
| 63 | to work. To use real BIOS, copy uncompressed BIOS files to bios/ directory |
| 64 | which itself should be in main emulator directory. |
| 65 | |
| 66 | For pandora, it should be: |
| 67 | [sd card]/pandora/appdata/pcsx_rearmed/bios/ |
| 68 | |
| 69 | When the file is copied, BIOS should be selected in Options->BIOS/Plugins menu. |
| 70 | |
| 71 | On pandora, analog controllers are supported using nubs, but this is |
| 72 | disabled by default and needs to be enabled in 'Controls' menu. |
| 73 | There is also touchscreen based GunCon support, which also requires |
| 74 | appropriate controller selected in controls configuration. |
| 75 | |
| 76 | |
| 77 | Plugins |
| 78 | ------- |
| 79 | |
| 80 | GPU (graphics) and SPU (sound) plugins can be selected in |
| 81 | [BIOS/Plugins] menu: |
| 82 | |
| 83 | builtin_gpu - this is either Exophase's ARM NEON GPU (accurate and fast, |
| 84 | available if platform supports NEON, like on pandora), |
| 85 | gpu_peops or gpu_unai (depends on compile options). |
| 86 | gpu_peops.so - P.E.Op.S. soft GPU, reasonably accurate but slow |
| 87 | (also found with older emulators on PC) |
| 88 | gpu_unai.so - Unai's plugin from PCSX4ALL project. Faster than P.E.Op.S. |
| 89 | but has some glitches. |
| 90 | gpu_gles.so - experimental port of P.E.Op.S. MesaGL plugin to OpenGL ES. |
| 91 | Occasionally faster but has lots of glitches and seems to |
| 92 | be rather unstable (may crash the driver/system). |
| 93 | builtin_spu - P.E.Op.S. SPU plugin, optimized for ARM. |
| 94 | spunull.so - NULL plugin, i.e. no sound emulation. |
| 95 | May cause compatibility problems. |
| 96 | |
| 97 | |
| 98 | Cheats |
| 99 | ------ |
| 100 | |
| 101 | PCSX and cwcheat cheat formats are supported. PCSX .cht file can be loaded from |
| 102 | "extra stuff" menu after game is loaded, while cwcheat cheats are automatically |
| 103 | loaded from cheatpops.db file, if one is present in emulator's directory and |
| 104 | has any cheats for the loaded game in it. |
| 105 | If any of those files are successfully loaded, 'cheats' option will appear in |
| 106 | the main menu where it is possible to enable/disable individual cheats. |
| 107 | |
| 108 | |
| 109 | Changelog |
| 110 | --------- |
| 111 | |
| 112 | r19 (2013-03-17) |
| 113 | + libretro: added region, multidisk support |
| 114 | * more work on cdrom code |
| 115 | * changed sound sync code |
| 116 | * fixed masking bugs in NEON GPU (in collaboration with Exophase) |
| 117 | * fixed some compatibility issues |
| 118 | * various other tweaks and fixes |
| 119 | |
| 120 | r18 (2013-01-06) |
| 121 | * cdrom code greatly cleaned up |
| 122 | + new GLES output mode for ARM Linux/R-Pi |
| 123 | * various libretro improvements |
| 124 | * fixed several compatibility regressions |
| 125 | * various other tweaks and fixes |
| 126 | |
| 127 | r17 (2012-11-24) |
| 128 | + added overlay support for generic Linux build |
| 129 | * attempted to fix sound breakage with PulseAudio |
| 130 | * fixed some regressions caused by hires mode code |
| 131 | * fixed some sound issues introduced in r9 |
| 132 | * various other tweaks |
| 133 | |
| 134 | r16 (2012-11-10) |
| 135 | + gpu_neon now has new hires rendering mode |
| 136 | (sometimes slow and occasionally glitchy) |
| 137 | + integrated M-HT's scale2x and eagle2x filters |
| 138 | (works for 512x256 or lower resolution games) |
| 139 | + pandora: added gamma/brightness control (requires SZ 1.52) |
| 140 | * pandora: some improvements for nub support |
| 141 | + added fast forward support |
| 142 | * fixed some glitches after loading savestates from r14 or earlier |
| 143 | |
| 144 | r15 (2012-08-02) |
| 145 | * various compatibility fixes |
| 146 | * attempts to fix various SPU issues |
| 147 | * Exophase fixed blending issue in his NEON GPU |
| 148 | * fixed some potential crashes |
| 149 | * gpu_unai: merged range fix from Franxis |
| 150 | + added cheat support |
| 151 | + menu: pressing a key in file list now seeks to a file |
| 152 | + new code, fixes and refactoring to improve portability: |
| 153 | support RAM offset, translation cache in data segment, |
| 154 | SDL support, multiple sound output methods, configure script |
| 155 | * unified plugin names for all ports |
| 156 | + initial libretro support |
| 157 | |
| 158 | r14 (2012-03-04) |
| 159 | * GLES GPU: implemented frameskip |
| 160 | * GLES GPU: merged some changes from schtruck/FPSE |
| 161 | * Caanoo: potential workaround for save corruption |
| 162 | (always exit emulator cleanly before turning off the console |
| 163 | to reduce chance of corruption) |
| 164 | * Caanoo: fixed a bug in GTE code (graphic glitches in some games) |
| 165 | * Caanoo: reworked vibration support, should support more games |
| 166 | * various refactoring/minor tweaks |
| 167 | |
| 168 | r13 (2012-01-09) |
| 169 | * yet more fixes for regressions from earlier versions |
| 170 | * various fixes for NEON GPU (in collaboration with Exophase) |
| 171 | + NEON GPU supports interlace mode now, but it's not always |
| 172 | enabled due to frameskip glithes (can be changed in the menu) |
| 173 | * cdda should resume on savestate load now |
| 174 | * fixed date display in menus to honour locale |
| 175 | + pandora: added support for minimizing the emulator (while ingame only) |
| 176 | |
| 177 | r12 (2011-12-24) |
| 178 | + new ARM NEON GPU rasterizer from Exophase (NEON hardware required) |
| 179 | + new GPU emulation code |
| 180 | + new analog controller configurator |
| 181 | * changed frameskip handling (again..), higher values supported |
| 182 | * fixed several more regressions from earlier versions |
| 183 | * changed cdrom code with hope for better compatibility |
| 184 | * sprite optimization for PCSX4ALL plugin |
| 185 | + Caanoo: added vibration support |
| 186 | |
| 187 | r11 (2011-10-31) |
| 188 | + added Wiz support |
| 189 | * Caanoo: fixed tv-out |
| 190 | + Caanoo/Wiz: added scaling (16bpp only) |
| 191 | + Caanoo/Wiz: added touchscreen-as-buttons input (4 sections) |
| 192 | + added .cbin support |
| 193 | + added multidisk eboot support (use "next multidisk CD" in exras menu) |
| 194 | * some GTE related optimizations |
| 195 | * various other optimizations |
| 196 | + added some speed hack options for slower devices |
| 197 | (get more speed at stability and correctness loss) |
| 198 | * fixed several compatibility issues |
| 199 | * fixed a few crash situations |
| 200 | * various minor adjustments |
| 201 | * maemo: merged some code from Bonapart |
| 202 | * maemo: fixed BIOS issue (hopefully) |
| 203 | |
| 204 | r10 (2011-10-10) |
| 205 | + added Caanoo port |
| 206 | + completely rewrote memory handlers |
| 207 | + added fixed frameskip option |
| 208 | + added ability to change PSX clock |
| 209 | + implemented GTE dead flag detection |
| 210 | * switched to larger timeslices for better performance |
| 211 | * fixed some cases of flickering |
| 212 | * fixed a crash in PCSX4ALL GPU plugin |
| 213 | * fixed several dynarec compatibility related issues (hopefully) |
| 214 | * fixed multiple SPU regressions from r9 and earlier |
| 215 | * fixed frame limiter issue that sometimes caused stuttering |
| 216 | * fixed some minor GUI issues |
| 217 | |
| 218 | r9 (2011-08-13) |
| 219 | * fixed various dynarec integration issues that were causing instability |
| 220 | * merged latest Ari64 dynarec code for some performance improvement |
| 221 | * changed frameskip handling in builtin and PCSX4ALL plugins, |
| 222 | fixes some cases where it would not work |
| 223 | * merged PCSX4ALL 2.2 GPU code to it's plugin |
| 224 | * fixed PCSX4ALL GPU inline asm, was miscompiling for ARMv7. |
| 225 | + added CDDA handling for eboot format |
| 226 | * improved CDDA handling for all image formats that support it |
| 227 | * various compatibility/accuracy improvements |
| 228 | * optimized PEOPS SPU core |
| 229 | * various menu adjustments |
| 230 | * changed scaling options a bit, there are now two 4:3 options: |
| 231 | integer and fractional |
| 232 | + added some basic memory card manager, which allows to change |
| 233 | or remove cards (remove needed for Tenka) |
| 234 | + added GunCon support |
| 235 | + added gpuPEOPS2 plugin (peops rendering + new emulation code) |
| 236 | |
| 237 | r8 (2011-03-22) |
| 238 | * improved recompiler performance for some games |
| 239 | * fixed a few recompiler related compatibility issues |
| 240 | (also fixes broken memcard support in some games) |
| 241 | * fixed some graphics problems caused by frameskip. |
| 242 | Note that not all problems were fixed, so if you see graphics |
| 243 | glitches try turning off frameskip or using different GPU plugin. |
| 244 | + added screenshot function |
| 245 | + added some code to attempt to sync with pandora's LCD better |
| 246 | * merged a few compatibility fixes from PCSX-Reloaded |
| 247 | * fixed and issue with external controllers |
| 248 | * added experimental ability to use nubs as buttons |
| 249 | |
| 250 | r7 (2011-03-02) |
| 251 | + implemented most used GTE operations in NEON |
| 252 | * merged latest Ari64's recompiler patches |
| 253 | * removed some code from the recompiler that is unneeded for R3k |
| 254 | * added some special handlers for constant reads |
| 255 | * some moderate builtin GPU and SPU optimizations |
| 256 | + added redump.org SBI support |
| 257 | * tuned frameskip code again |
| 258 | * fixed one 'analog controller not working' issue |
| 259 | * fixed a crash in builtin gpu code |
| 260 | * fixed cdrom slowdown issue |
| 261 | * fixed my stupid bug in the recompiler that slowed down |
| 262 | recompilation a lot |
| 263 | * some other refactoring |
| 264 | |
| 265 | r6 (2011-02-10) |
| 266 | + added analog controller support using nubs (disabled by default) |
| 267 | + added control config saving |
| 268 | + added support for ingame actions (eg. savestate load) |
| 269 | + added 'auto' region option and made it default |
| 270 | + added cd swap functionality |
| 271 | + added maemo frontend from Bonapart |
| 272 | (with some tuning, source code only) |
| 273 | * reworked key configuration to be less confusing |
| 274 | * fixed 'SPU IRQ wait' option sometimes causing noise |
| 275 | and turned it on by default |
| 276 | * fixed mono xa masking (was causing noise) |
| 277 | * fixed word access macros in dfxvideo (darkness problem) |
| 278 | * changed GPU DMA timing back to 1.92 levels |
| 279 | * backported more fixes from PCSX-Reloaded project |
| 280 | (mostly shalma's work, see GIT) |
| 281 | * fixed a few more recompiler issues |
| 282 | + fixed frameskip in builtin plugin |
| 283 | |
| 284 | r5 (2011-01-31) |
| 285 | + added support for .bz format, also partial support for |
| 286 | .znx and eboot.pbp formats |
| 287 | + merged latest cdrom code from PCSX-Reloaded project |
| 288 | * fixed remaining savestate incompatibilities between PCSX4ALL |
| 289 | and P.E.Op.S. GPU plugins |
| 290 | * fixed channel disable preventing irqs in P.E.Op.S. SPU plugin |
| 291 | * fixed some alignment issues |
| 292 | + added handling for branches in delay slots |
| 293 | + fixed some unexpected drops to menu |
| 294 | * fixed lots of recompiler related issues (see GIT) |
| 295 | + added watchdog thread to detect emulator lockups |
| 296 | * minor frontend adjustments |
| 297 | |
| 298 | r4 (2011-01-15) |
| 299 | + added real BIOS support (and various things for it to work) |
| 300 | * fixed various recompiler issues |
| 301 | + added interpreter option (useful to overcome dynarec bugs) |
| 302 | * fixed some memory card related issues with HLE bios |
| 303 | * rewrote frame limiter (old was sometimes sleeping needlessly) |
| 304 | |
| 305 | r3 (2011-01-05): |
| 306 | + added Pickle's port of gpu-gles from psx4m project |
| 307 | + added PCSX4ALL gpu as a plugin |
| 308 | * improved gpu plugin support |
| 309 | + added savestate preview |
| 310 | * various frontend fixes |
| 311 | |
| 312 | r2 (2010-12-29): |
| 313 | * fixed memcard paths |
| 314 | * fixed a keybind copy-paste bug |
| 315 | * properly implemented pad handling |
| 316 | (inputs no longer control both emulated pads at once) |
| 317 | * fixed a crash caused by framebuffer out of range access |
| 318 | * fixed SWL/SWR handling (usually resulted in graphic glitches) |
| 319 | * fixed BxxZAL (Medal of Honor) |
| 320 | * fixed alignment crash in color space conversion code (Lunar) |
| 321 | * fixed SWC2 occasional use of wrong address register (Parasite Eve) |
| 322 | * fixed firstfile() handling in HLE BIOS (broken memory cards in some games) |
| 323 | + added per-game configs (controls still not saved though) |
| 324 | + added simple plugin select interface to the menu |
| 325 | |
| 326 | r1 (2010-12-25): |
| 327 | * initial release |
| 328 | |
| 329 | |
| 330 | Credits / License |
| 331 | ----------------- |
| 332 | |
| 333 | Emulator core: |
| 334 | |
| 335 | (C) 1999-2003 PCSX Team |
| 336 | (c) 1998 Vision Thing |
| 337 | Linuzappz <linuzappz@pcsx.net> |
| 338 | Shadow <shadow@pcsx.net> |
| 339 | Pete Bernett <psswitch@online.de> |
| 340 | NoComp <NoComp@mailcity.com> |
| 341 | Nik3d |
| 342 | Akumax <akumax@pcsx.net> |
| 343 | |
| 344 | (C) 2005-2009 PCSX-df Team |
| 345 | (c) Ryan Schultz <schultz.ryan@gmail.com> |
| 346 | (c) Andrew Burton <adb@iinet.net.au> |
| 347 | (c) Stephen Chao <schao@myrealbox.com> |
| 348 | (c) Marcus Comstedt <marcus@mc.pp.se> |
| 349 | Stefan Sikora <hoshy@schrauberstube.de> |
| 350 | |
| 351 | (C) 2009-2011 PCSX-Reloaded Team |
| 352 | edgbla (Root counters, various core/plugin fixes) |
| 353 | shalma (GTE Divider, many core improvements, sound plugin fixes) |
| 354 | Firnis (GTE code from PCSX-Revolution Project) |
| 355 | Gabriele Gorla (MDEC decoder) |
| 356 | Peter Collingbourne (Various core/psxbios fixes) |
| 357 | Dario, NeToU, siveritas (Various bugfixes) |
| 358 | Wei Mingzhi (Maintainer, input plugin, iso/cheat support, misc stuff) |
| 359 | |
| 360 | NEON GPU plugin: |
| 361 | (C) 2011-2012 Exophase |
| 362 | (C) 2011-2012 notaz |
| 363 | |
| 364 | PCSX4ALL GPU plugin: |
| 365 | (C) 2010 PCSX4ALL Team |
| 366 | (C) 2010 Unai |
| 367 | Franxis <franxism@gmail.com> |
| 368 | Chui <sdl_gp32@yahoo.es> |
| 369 | |
| 370 | GLES plugin (psx4m project): |
| 371 | (C) 1999-2009 by Pete Bernert |
| 372 | EQ |
| 373 | Olli Hinkka |
| 374 | Proger |
| 375 | Pickle |
| 376 | |
| 377 | P.E.Op.S. GPU plugin: |
| 378 | (C) Pete Bernert and the P.E.Op.S. team |
| 379 | |
| 380 | P.E.Op.S. SPU plugin: |
| 381 | (C) Pete Bernert and the P.E.Op.S. team |
| 382 | (C) SPU2-X, gigaherz, Pcsx2 Development Team |
| 383 | shalma |
| 384 | notaz |
| 385 | |
| 386 | MIPS->ARM recompiler: |
| 387 | (C) 2009-2011 Ari64 |
| 388 | |
| 389 | integration, optimization and frontend: |
| 390 | (C) 2010-2012 notaz |
| 391 | |
| 392 | Special thanks to Mednafen author, shalma/gretar and Rokas for |
| 393 | various help while developing this emulator. |
| 394 | |
| 395 | Some implementation ideas (and maybe code?) likely originated from |
| 396 | MAME/smf/pSXauthor and were integrated by various people to PCSX. |
| 397 | |
| 398 | Source code is released under GNU GPL license, version 2 or later. |
| 399 | See COPYING included in the archive (pandora version's .pnd can be |
| 400 | extracted using unsquashfs). |
| 401 | |
| 402 | The source code is available in a GIT repository at: |
| 403 | |
| 404 | git://notaz.gp2x.de/~notaz/pcsx_rearmed.git |
| 405 | |