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