u8/pandora release
[gpsp.git] / pandora / readme.txt
1 -- porter's foreword --\r
2 \r
3 This is a Pandora port of Exophase's impressive GBA emulator, gpSP.\r
4 Since nobody has released a functional port for more than a year after\r
5 pandora's release, and the GINGE'd version doesn't do this emulator\r
6 justice, I've decided to take this task. This version also includes\r
7 my own tweaks from GP2X/Wiz version. In case anyone wonders, this\r
8 release was done with author's consent.\r
9 \r
10 To use it, you'll first need to copy authentic GBA BIOS to gpSP\r
11 appdata directory, which usually is <SD card>/pandora/appdata/gpsp/ .\r
12 It must be named gba_bios.bin and should be 16kB in size.\r
13 \r
14 I've appended the original gpSP GP2X and PSP readme files as they\r
15 contain lots of information that is still relevant for this version,\r
16 as well as development history of this project.\r
17 \r
18 - notaz\r
19 \r
20 Changelog:\r
21 \r
22 0.9-2xb u8\r
23 - fixed tv-out\r
24 - integrated M-HT's neon scalers\r
25 - merged an assorment of calc84maniac's bugfixes\r
26 \r
27 0.9-2xb u7\r
28 - Pandora port, using hardware scaler for video output.\r
29 - Fixed a few portablility issues in ARM asm and sound code.\r
30 - Tweaked timing to suit pandora's LCD refresh nicely.\r
31 - Maybe fixed GBC/digital sound channel desync over time.\r
32 - Some other not-that-relevant cleanups and tweaks.\r
33 \r
34 Source code should be available at:\r
35 http://notaz.gp2x.de/cgi-bin/gitweb.cgi\r
36 \r
37 \r
38 \r
39 -- gameplaySP2X  Gameboy Advance emulator for GP2X --\r
40 \r
41 gpSP2X is a version of my (Exophase)'s emulator originally for Sony PSP.\r
42 A large amount of effort has been done to make it more optimized for the\r
43 ARM CPU present in the GP2X, however it is still very much a work in\r
44 progress.\r
45 \r
46 See readme.txt for the PSP version readme, which contains a lot of\r
47 information relevant to the GP2X version (note that some of it does\r
48 not apply however).\r
49 \r
50 \r
51 Changelog:\r
52 \r
53 0.9-2xb u6\r
54 - Fixed clock and scaling config saving.\r
55 - Fixed occasional crash on first ROM load on 1.1 firmware.\r
56 - Added LCD timing setup code, which can be controlled through\r
57   'pollux_dpc_set' environment vatiable (see gpsp.gpe wrapper script).\r
58 \r
59 0.9-2xb u5\r
60 - Added portrait drawing modes. They eliminate tearing but are slightly\r
61   slower.\r
62 - Added page scrolling in ROM browser with L/R.\r
63 - 32MB ROM support fixed.\r
64 \r
65 0.9-2xb u4 (unofficial notaz release, done on Exophase's request)\r
66 - Wiz port. No emulation related changes.\r
67 - Wiz: dropped SDL for video and hitting hardware directly (GPH SDL can't\r
68   be trusted, it doesn't do double buffering as of firmware 1.0).\r
69 - Added new optimized software scaler with interpolation.\r
70 - gpSP is now saving ROM dir on exit. Delete romdir.txt if you don't\r
71   want that.\r
72 - gpSP now comes with wARM, new kernel module+lib for ARM cache control\r
73   (replaces mmuhack).\r
74 - gpSP no longer invalidates whole icache after recompilation, might\r
75   cause minor speedup.\r
76 \r
77 0.9-2xb u3 (unofficial notaz release, released with permission):\r
78 - Removed built-in CPU/LCD/RAM-Tweaker.\r
79 - Improved usability of volume control.\r
80 - Removed PSP-specific GUI options, adjusted help text.\r
81 - Overclocking from menu now works, keep it at 200 if you don't want that\r
82   (if you want to overclock using launcher, for example).\r
83 - Fixed centering-on-first-run problem.\r
84 - 3:2 scaled option now does what it says.\r
85 \r
86 0.9-2xb u2 (unofficial notaz release):\r
87 - Replaced non-working mmuhack.o with proper one, added cache flush calls\r
88   to avoid artifacts.\r
89 \r
90 0.9-2xb u1 (unofficial notaz release):\r
91 - Fixed a problen in thread synchronization which caused deadlock after\r
92   some time.\r
93 \r
94 0.9-2xb: \r
95 -- IMPORTANT-- If you're overwriting an old version, be sure to delete the\r
96    gpsp.cfg file first, or be prepared to have a bunch of weird button\r
97    settings that would require fixing.\r
98 \r
99 - Fixed some bugs stunting compatability.\r
100 - Optimized alpha blends in renderer.\r
101 - Some more optimizations to dynarec output.\r
102 - Savestates should work better now.\r
103 - Cheat/misc menu won't crash the emulator.\r
104 - Main button config window works (not all buttons are in yet)\r
105 \r
106 0.9-2Xa: (Exophase release)\r
107 - Redid autoframeskip. Should work more reliably.\r
108 - Rewrote dynamic recompiler from x86 source (arm_emit.h, arm_stub.S).\r
109   Has some more sophisticated behavior than the last version, more is\r
110   still to come... Should notice a slight speed improvement over the\r
111   last version.\r
112 - Tweaked GUI to be a little more useable. Buttons are now mirroring the\r
113   PSP version's.\r
114 - Code unification + cleanup amongst versions.\r
115 \r
116 \r
117 v9008: (zodttd release)\r
118 - Updated the way autoframeskip works. Should be better now. Still has a max\r
119   frameskip value.\r
120 - Added a slight performance increase to the dynarec.\r
121 - Added sync() to make sure files such as savestates and in-game saves are\r
122   saved properly to the GP2X.\r
123 \r
124 v9006: (zodttd release)\r
125 - Initial public release\r
126 \r
127 \r
128 Installation:\r
129 \r
130 1. Place the "gpsp.gpe" and "game_config.txt" file in a directory on your SD\r
131    card used with the GP2X.\r
132 \r
133 2. Place your GBA BIOS in the directory from step 1. This file must be named\r
134    "gba_bios.bin" in all lowercase as shown, so rename it if needed.\r
135 \r
136    -- NOTE --\r
137 \r
138    There are two commonly available BIOSes - one is the correct one used in\r
139    production GBA's worldwide and the other is a prototype BIOS. The latter\r
140    will not cause some games to not work correctly or crash. If you attempt\r
141    to use this BIOS you will be presented with a warning before being\r
142    allowed to continue. This screen will give you a checksum of the real\r
143    BIOS image (see readme.txt for further information).\r
144 \r
145 3. Place your GBA games in the directory from step 1. These files should have\r
146    a ".gba" or ".bin" file extension. Zip compressed games should be supported\r
147    and are recognized with the ".zip" file extension. Note that 32MB ROMs will\r
148    probably not run if zipped. 16MB and smaller should be OK.\r
149 \r
150 4. Done. Run gpsp.gpe.\r
151 \r
152 \r
153 Controls:\r
154 \r
155 How to use gpSP on the GP2X:\r
156 Buttons are mapped as follows (GBA/ingame buttons can be changed in the menu):\r
157 \r
158 GP2X--------------------GBA\r
159 X           ->          A\r
160 B           ->          B\r
161 L TRIG      ->          L TRIG\r
162 R TRIG      ->          R TRIG\r
163 START       ->          START\r
164 SELECT      ->          SELECT\r
165 \r
166 GP2X--------------------------------gpSP\r
167 \r
168 -- IN-GAME --\r
169 \r
170 VOL MIDDLE (UP + DOWN)    ->        menu\r
171 PUSH STICK                ->        fps display toggle (second number is\r
172                                      frames actually drawn)\r
173 \r
174 -- IN-MENU --\r
175 B                         ->        select option\r
176 X                         ->        cancel/exit menu\r
177 A                         ->        escape (up one director level in the\r
178                                      file selector)\r
179 \r
180 When gpSP is started, you are presented with the option to overclock your\r
181 GP2X. Use the L/R TRIG to change the CPU clockspeed and press START to\r
182 continue. You may also change RAM timings here - experiment with what\r
183 works well. Note that going too high on overclocking or low on RAM\r
184 timings can cause the game to crash or the GP2X to outright freeze up.\r
185 \r
186 If you do not want to overclock, press START without using L/R.\r
187 You will now be presented with a menu to choose a game. Press the IN-MENU\r
188 "SELECT" button shown above to pick a game to load.\r
189 \r
190 If you would like to test gpSP for the GP2X with a homebrew (free public\r
191 domain) game, a game by Russ Prince works very well with gpSP. It is called\r
192 Bust-A-Move and is a remake of the classic game it's named after.\r
193 \r
194 \r
195 How to build from source:\r
196 \r
197 The makefile included in the source is geared towards the Open2x toolchain.\r
198 If you use Open2x and installed it in the way recommended then it should\r
199 work okay, assuming you also have up to date HW-SDL (and have\r
200 arm-linux-sdl-config installed in the right place). The makefile is in the\r
201 gp2x directory, so go there first then just type make to build gpsp.gpe.\r
202 Might need a little tweaking if your setup is different. If you need help\r
203 you can ask me, but I'll probably nag you about why you want to build it in\r
204 the first place.\r
205 \r
206 \r
207 GP2X version FAQ:\r
208 \r
209 Q) Help! This game doesn't work. Am I using a bad version of the ROM?\r
210 \r
211 A) First, make sure you're using the correct BIOS version. If you aren't\r
212    gpSP should tell you. Other than that, there are some games that are\r
213    known to not work now (and will probably work later), and perhaps\r
214    many more games that I don't know about that don't work. I haven't\r
215    launched a full scale compatability test at this version, so it might\r
216    take a while before the compatability levels are high.\r
217 \r
218 \r
219 Q) Why is this version slower than the PSP version?\r
220 \r
221 A) gpSP is still a work in progress. It might be possible to obtain more\r
222    speed from both this version and the PSP one too (and others in the\r
223    future). With that in mind, know that even a very agressively overclocked\r
224    GP2X is still less powerful than a PSP, generally speaking. Still, I\r
225    have a lot of ideas. It's unlikely that the GP2X version will ever be as\r
226    fast/faster than the PSP version for anyone but anything's possible.\r
227 \r
228 \r
229 Q) How high does my GP2X have to overclock to enjoy gpSP?\r
230 \r
231 A) That depends on you. Higher overclocking will mean less frames skipped\r
232    on autoframeskip, or less frameskip needed if on manual. Or it can\r
233    make the difference between whether or not virtual 60fps can be reached.\r
234    For some games no GP2X in the world will be able to run them fullspeed,\r
235    with any amount of frameskip. A few might run well with no overclocking\r
236    and a generous level of frameskip (probably manual). If you don't care\r
237    about battery life (or you're plugged into an outlet) you should push\r
238    it as high as you can while still maintaining stability, because\r
239    chances are high that whatever you play will benefit from it. Right now\r
240    you'll probably want 260MHz if you can achieve it, but with a lot of\r
241    luck this number will lower slightly in the future (and is just a vague\r
242    ballpark figure anyway). I don't want to scare anyone off from using the\r
243    emulator, you should give it a try and see how it plays for you\r
244    regardless of how high you can overclock. Just note that this is far\r
245    from a locked smooth experience for everyone on every game.\r
246 \r
247 \r
248 Q) GBA has an ARM processor, GP2X has an ARM processor. GP2X is more\r
249    powerful than GBA. This emulator should run great without overclocking,\r
250    so therefore you're doing it wrong.\r
251 \r
252 A) That's not a question, but I'll field it anyway. Two things: first,\r
253    "virtualization", or running the GBA code "natively" on the GP2X is\r
254    probably not possible, at least not with the way I want to do things.\r
255    For reasons why go read my blog (see below). So yes, you actually\r
256    do need more than 16.7MHz of ARM9 power to emulate the GBA's CPU.\r
257    Second: there is a whole lot of work behind emulating the pretty 2D\r
258    graphics on the GBA, something it can do in hardware a lot better than\r
259    this platform can.\r
260    End result: GBA emulation on GP2X isn't as easy as you think it is.\r
261 \r
262 \r
263 Q) What are you working on now? When will you release the next version?\r
264 \r
265 A) See the gpSP development blog:\r
266 \r
267    http://gpsp-dev.blogspot.com/\r
268 \r
269    Note that I don't give release dates, ever, unless I'm right on the verge\r
270    of releasing. Be grateful that I've decided to be much more open about\r
271    the development of the emulator now.\r
272 \r
273 \r
274 Q) Thanks to your blog I heard that you made some improvement. Can I have\r
275    a copy of the new code?\r
276 \r
277 A) No. Builds in transition often have a lot of problems, and I like for\r
278    releases to be relatively substantial. I can probably be bribed out of\r
279    them with donations though. :P\r
280 \r
281 \r
282 Q) Why do the menu suck so much? Why do half the options not work or not\r
283    make any sense?\r
284 \r
285 A) Sorry, the menu still hasn't been modified very much to fit the GP2X\r
286    version instead of the PSP version.. hopefully this will improve in the\r
287    future.\r
288 \r
289 \r
290 Q) Who's in charge of the GP2X version anyway?\r
291 \r
292 A) Originally, zodttd was. I, Exophase, have basically usurped control of it\r
293    now to encourage zodttd to work more on his PS1 emulator (that and I'm\r
294    possessive of gpSP and get nervous when people work on it too heavily).\r
295    zodttd will most likely still be around to work on things though.\r
296 \r
297 \r
298 Q) I'm a super nice person and would like to donate some of my hard earned\r
299    money to this one-off GBA emulator. Where do I send my money to?\r
300 \r
301 A) Exophase: exophase@gmail.com on PayPal\r
302    zodttd: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=heirloomer\r
303     %40pobox%2ecom&item_number=1&no_shipping=1&no_note=1&tax=0&cy_code=USD&bn=\r
304     PP%2dDonationsBF&charset=UTF%2d8\r
305     ^ Click there for donating on PayPal (remove whitespace/linebreaks).\r
306 \r
307    GP2X people have already donated a lot more to me than PSP people have,\r
308    even though there's an order of magnitude or two less users. And they've\r
309    donated far more to zodttd than they have to me. So I'm not going to ask\r
310    people to donate..\r
311 \r
312    However I won't lie: donating ups the chances of me actually working on the\r
313    next version (for which I have a lot of ideas, but not necessarily time to\r
314    dedicate to.. that time might need more incentive to be allotted from other\r
315    things). This could change depending on my employment situation, but right\r
316    now I feel guilty doing anything that doesn't help guarantee that I'll be\r
317    able to buy food a year from now.\r
318 \r
319 \r
320 Q) Tell me all of your personal information.\r
321 \r
322 A) Again not a question, but why not. I'm Exophase, real name: Gilead Kutnick,\r
323    male, 23 years old, current residence Bloomington, IN; straight/single/not\r
324    actively looking, almost have an MS in Computer Science (do have a BS\r
325    underneath it), likes PSP more than GP2X, will not write a Nintendo DS\r
326    emulator for either, am currently looking for a job for after I graduate.\r
327 \r
328 \r
329 Q) You said you're looking for a job.\r
330 \r
331 A) Yes. If you have one or know someone who needs a low level oriented\r
332    programmer then I'm up for grabs. And this is my resume:\r
333    http://exophase.devzero.co.uk/resume.pdf\r
334 \r
335 \r
336 Credits:\r
337 \r
338 Original codebase: Exophase (exophase@gmail.com)\r
339 Foundation gp2x code: zodttd\r
340 GP2X dynarec/stubs + current code maintainance: Exophase\r
341 \r
342 \r
343 \r
344 -- gameplaySP  Gameboy Advance emulator for Playstation Portable --\r
345 \r
346 \r
347 -- Release log --\r
348 \r
349 v0.91 (minor cleanup release)\r
350 \r
351 NOTE: I don't usually do minor releases but I rewrote a ton of\r
352 things in gpSP 0.9, much of it during the last few days, and although\r
353 I spent a lot of time debugging a few bugs inevitably crept in.\r
354 \r
355 # Fixed some issues in the new memory handlers that crept up, hopefully\r
356   should fix the problems between 0.8 and 0.9.\r
357 # Fixed a bug introduced in 0.9 that could cause crashes when selecting\r
358   things in the menu (I hope, at least).\r
359 # Fixed a bug with a certain invalid opcode causing a jump to be scanned\r
360   when there isn't one (fixes Sabre Wulf).\r
361 # Removed 2048 option for audio buffer.\r
362 \r
363 v0.9 (yes, it's still beta)\r
364 \r
365 NOTE: As some of you may be aware I'm pretty much tired of these\r
366 unofficial releases by people (okay, mostly single person) who\r
367 don't wish to follow my wishes. I'm in the process of asking this\r
368 person to stop, in his own language. However, I want to make\r
369 something clear. Look at the last six new features in this\r
370 changelog. I added these TODAY. I could have done them at any\r
371 time. But I didn't, because I spent many (dozens, quite possibly\r
372 hundreds) hours debugging games that people want to play. I have\r
373 always believed that this is far more important than spending time\r
374 on new features. Frankly, I'm tired of my emulator being hacked on\r
375 by other people, and if it doesn't stop I'm going to make this\r
376 project closed source.\r
377 \r
378 Since I know this information is most visible when updated on the\r
379 major sites, note that it is the news posters I am especially\r
380 talking to. Next time you upload unofficial releases of my\r
381 emulator (without even knowing what's changed) bear in mind that\r
382 you're only encouraging me to stop working on this. If you want\r
383 to pick sides between me and unofficial devs, be my guest. I'll\r
384 let you decide by the contents of this release who's doing more\r
385 for my emulator.\r
386 \r
387 Oh, and if you downloaded a version of gpSP that has more than\r
388 "gpSP" in its name then you're using one of their versions. Shame\r
389 on them for not even removing this threatening message, and shame\r
390 on you. Unless you're using a port I endorse (GP2X, Dreamcast, etc),\r
391 in which case everything's good.\r
392 \r
393 \r
394 # Fixed stereo output being reversed.\r
395 # Fixed a bug causing misaligned errors on 8bit writes to the gbc\r
396   audio channel 3 wave data (fixes various Super Robot Wars games)\r
397 # Fixed DMA with garbage in their upper 4 bits (fixes a crash in\r
398   Zelda: Minish Cap)\r
399 # Added double buffering to the rendering, removes line artifacts.\r
400   Big thanks to Brunni for the idea.\r
401 # Fixed a bug preventing some SRAM based games from saving (fixes\r
402   MMBN4-6)\r
403 # Fixed a bug causing part of EWRAM to potentially get corrupted if\r
404   code segments loaded in EWRAM cross 32KB boundaries (fixes\r
405   Phantasy Star 2)\r
406 # Fixed a bug causing games using movs pc in user mode (very bad\r
407   behavior) to crash. Fixes Colin McRae Rally 2.0.\r
408 # Improved timing a bit more. Fixes GTA Advance.\r
409 # Fixed a sprite clipping bug (fixes crash in third boss of Zelda:\r
410   Minish cap)\r
411 # Increased translation buffer size significantly (fixes Donkey Kong:\r
412   King of Swing)\r
413 # Fixed a dynarec bug causing add pc, reg to not work in Thumb code\r
414   (fixes crash in DBZ:LoZ, seems to fix crashes in battle in Golden\r
415   Sun, probably fixes other games)\r
416 # Made sprites using tiles < 512 not display in modes 3-5 (fixes\r
417   a couple minor graphical bugs)\r
418 # Removed abort on instruction 0x00000000 hack, was breaking a\r
419   certain bugged up game (Scurge)\r
420 # Fixed bug in flags generating variable logical shifts (fixes\r
421   SD Gundam Force)\r
422 # Fixed unaligned 16bit reads (fixes DBZ:LoZ in game)\r
423 # Redid contiguous block flag modification checking AGAIN and\r
424   hopefully got it right this time (fixes Mario vs. Donkey Kong)\r
425 # Redid ldm/stm instructions, fixing some cases (along with the\r
426   timing improvements fixes Mario & Luigi)\r
427 # Fixed 14bit EEPROM addressing (hopefully fixes saving in a lot\r
428   of games)\r
429 # Completely redid memory handlers, accurately emulates open and\r
430   BIOS reads now. Fixes Zelda: Minish Cap (roll bug, last dungeon),\r
431   Rayman, MMBN 1 (last dungeon), probably others.\r
432 # Fixed a minor graphical glitch on the edges of the screen\r
433   (thanks Brunni and hlide for the help!)\r
434 # Fixed crash on loading savestates from files of games not currently\r
435   loaded, but be sure you have the exact file you loaded it from or\r
436   gpSP will exit.\r
437 @ New memory handlers should provide performance boost for games\r
438   that access VRAM significantly (ie 3D games)\r
439 @ Added dead flag elimination checking for logical shifts, probably\r
440   doesn't make a noticeable difference but should have been there\r
441   anyway.\r
442 + Added rapidfire to the button mappings.\r
443 + Added auto frameskip. Removed fractional frameskip (don't think\r
444   it's very useful with auto anyway). Select auto in the graphics/\r
445   sound menu to activate it; frameskip value will act as the\r
446   maximum (auto is by default on). Thanks again to Brunni for some\r
447   help with this. Frameskip options are game specific.\r
448 + Added vsync to the rendering. Only occurs when frames aren't\r
449   skipped. Seems to reduce tearing at least some of the time.\r
450 + Added non-filtered video option.\r
451 + Cheat support (Gameshark/Pro Action Replay v1-v3 only), still\r
452   in early stages, doesn't support everything; codes may cause\r
453   the game to crash, haven't determined yet if the codes are bad\r
454   or the implementation is. See cheat section for more information.\r
455 + Added ability to change audio buffer size. Does not take affect\r
456   until you restart the game.\r
457 + Added analog config options.\r
458 + Added ability to set analog sensitivity and turn off analog.\r
459 + Added ability to change the clock speed. This is a game specific\r
460   option. Try lower speeds w/auto frameskip to save battery life.\r
461 + Fixed savestate speed on crappy Sony sticks.\r
462 \r
463 (legend: # bug fix, + feature addition, @ optimization)\r
464 \r
465 v0.8 - ("unlocked" beta)\r
466 \r
467 NOTE 1: It has come to my attention that there are actually BIOSes\r
468 out there that are being used that cause some games to not work.\r
469 The BIOS md5sum listed here is for the BIOS actually in GBAs and\r
470 is as accurate as you'll get, (if you have a GBA and a flashcart\r
471 you can dump it yourself, see http://wiki.pocketheaven.com/GBA_BIOS)\r
472 \r
473 NOTE 2: Since I know this is as far as a lot of people here I have a\r
474 little request. Please, please, (I'd italicize this if I could)\r
475 please stop constantly asking me when the next release will be,\r
476 what it'll have, etc. And while you're at it, please stop asking me\r
477 to implement wi-fi multiplayer, cheat support, or fix all of your\r
478 games. Some things will happen in due time, other things might not\r
479 ever happen. I devote about as much time as I can to this emulator\r
480 and I carefully include as much as I can in releases to try to\r
481 minimize the number of people who will nag me next time (erm, I\r
482 mean, to make the most people happy), so I don't release every other\r
483 day or anything like that. Sorry that I can't release once a week,\r
484 but I'm a lot busier now than I was when I was first developing this\r
485 emulator. Good thing I got the first version out before that, wasn't\r
486 it?\r
487 \r
488 Congratulations, you made it this far! Now read the rest of the this\r
489 thing. *_*\r
490 \r
491 \r
492 # Fixed bug in dead flag elimination, "alt" version no longer needed.\r
493 # Fixed EEPROM saves being saved as 32kb instead of 512bytes/8kb\r
494 + 32MB ROM support has been added. ROMS are "demand loaded" as\r
495   necessary and page swapped out; there might be a small loading lag,\r
496   but I have yet to ever really notice anything.\r
497   NOTE: 32MB ROM support only works for unzipped ROMs.\r
498 + Save states have been added. See the save state menu for save/load\r
499   options.\r
500 + Support for the real-time clock (RTC) chip in Pokemon cartridegs\r
501   and other games. The implementation is based off of VBA's, whatever\r
502   notes on gbadev I could find, and some of my own reverse engineering\r
503   of what the games do... it might not be totally correct. Also,\r
504   setting the time does not work.\r
505 + Per-game configuration. Currently this only saves frameskip and\r
506   frameskip variation options.\r
507 + Removed the flash type option from the menu and instead added it\r
508   to game_config.txt. Hopefully got everything - let me know if you\r
509   find something that isn't there. It's pretty easy to add them if you\r
510   have to.\r
511 + Added a display in the upper left-hand corner to indicate when\r
512   fast-forward is on.\r
513 + Added button bindings for save/load state.\r
514 @ Found a fix of StrmnNrmn proportion: far too much unnecessary mutex\r
515   synchronization was going on. Removing the two offending lines of\r
516   code gave a massive speed boost for free. Enjoy.\r
517 \r
518 v0.7 - (beta than ever)\r
519 \r
520 # Fixed a dynarec bug involving flags generating functions in\r
521   contiguous conditional blocks. Fixes music in Super Mario\r
522   Advance 2-4.\r
523 # Fixed a dynarec bug where Thumb mov imm instructions wouldn't\r
524   set flags. Fixes Zelda: Minish Cap, Megaman Battle Network,\r
525   probably others. Comes at a slight speed cost.\r
526 # Fixed a MIPS dynarec bug where some delay slots might not\r
527   get filled rarely, causing chaos. Don't know if it improves\r
528   any games.\r
529 # Improved self-modifying code detection. Makes Golden Sun,\r
530   Golden Sun 2, and Madden 2007 sorta work but excrutiatingly\r
531   slowly. Looking for a game-specific workaround for this - if you\r
532   want to play these games you'll have to wait for now :(\r
533 # Fixed a bug causing the interrupt disable flag to go down\r
534   when SWIs are entered, causing crashes/resets. Fixes\r
535   Super Mario Advance 2-4.\r
536 # Fixed menu crashing when strings with certain characters are\r
537   printed (for instance going to the menu after loading the\r
538   BIOS)\r
539 # Accidentally forgot to render win0 + win1 + objwin when all\r
540   active at the same time, many weeks ago. Added that, should fix\r
541   some parts in games that had frozen screens.\r
542 # Fixed some issues with gpsp.cfg needing to be present and\r
543   corrupting, hopefully. At the very least sanity checks are\r
544   performed on the config file.\r
545 # Made it so assigning the frameskip button to something besides\r
546   triangle actually worked as expected.\r
547 # Fixed ability to restart current game if nothing is loaded\r
548   (ie, crash)\r
549 # Added interrupt on cpsr modification support to the dynarec\r
550   (fixes backgrounds in Castlevania: Harmony of Dissonance)\r
551 # Added open addressing for ldm/stm instructions (fixes\r
552   Super Mario Advance 3)\r
553 # Improved cycle accuracy a little. Don't know of anything this\r
554   fixes, but games with idle loops will run a little better w/o\r
555   idle loop elimination (but should still be added when possible)\r
556 # Fixed some bugs causing sound to play sometimes when it shouldn't.\r
557 @ Added dead flag elimination for Thumb code. May possibly have\r
558   noticeable performance increases (Thumb emited coded size can\r
559   have a reduction of 20% or more)\r
560 @ Added code generation for divide SWI. May have a small speed\r
561   increase in some games.\r
562 + Added analog nub support (special thanks to psp298 for the\r
563   code)\r
564 + Added fractional frameskip. Go below 0 to get them. A frameskip\r
565   of 1/2 for instance means render 2 out of every 3 frames, 2/3\r
566   means render 3 out of every 4 frames, etc. Possibly useful for\r
567   games that are not quite fast enough at fs0 but fullspeed at\r
568   fs1...\r
569 \r
570 v0.6 - (still beta quality, look out for new bugs)\r
571 \r
572 NOTE: Please include gpsp.cfg with EBOOT.PBP, this shouldn't be\r
573  necessary but I think it is right now.\r
574 \r
575 # Fixed a nasty bug that shouldn't have made it into the initial\r
576   release; a lot of games that TECM.. erm.. crash won't anymore.\r
577   NOTE: This doesn't mean that no game will ever crash, freeze,\r
578   otherwise not work.\r
579 # Fixed some crashes in the GUI and the ability to "go up" past\r
580   ms0:/PSP. Made the "go up" button square like it was supposed to\r
581   be (instead of cross).\r
582 + There's now a menu that you can access, by default press right\r
583   while holding down triangle for the frameskip bar.\r
584 + Menu option: resize screen aspect ratio, the default is now\r
585   "scaled 3:2" which makes it look more like a normal GBA. You\r
586   can use "fullscreen" (what it was like before) or "unscaled 3:2"\r
587   (tiny but pixel for pixel like a GBA)\r
588 + Menu option: You can now load new games while the current one\r
589   is running.\r
590 + Menu option: You can now restart the currently running game.\r
591 + Menu option: Frameskip variation - this defaults to "uniform"\r
592   whereas it defaulted to "random" last release. Basically, turn\r
593   it on random if you find that frameskip causes flickering\r
594   animations to make things disappear. Other than that it will\r
595   generally look better on uniform.\r
596 + GUI and file loading now have "auto repeat" on the buttons so\r
597   they're not such a pain to navigate.\r
598 + Menu option: Added support for 128KB flash ROM, some games\r
599   require it (Pokemon Firered/Leaf Green, Super Mario Advance 4),\r
600   turn it on before running the game to make sure it works.\r
601   NOTE: There are some versions of these ROMs that have been\r
602   hacked to get around their 128KB flash, and may not even work\r
603   properly at all. Look out for them, these games should save\r
604   128KB save files after you set the setting to it, IF they use\r
605   128KB flash.\r
606 + Menu option: Added ability to make the .sav files only update\r
607   when you exit the emulator, use with extreme caution (in other\r
608   words, it's not a good idea to use something like this in beta\r
609   quality software if you care about your saves). Does NOT update\r
610   if you exit through the home button, don't use the home button\r
611   if you can help it.\r
612 + Zip support thanks to SiberianSTAR. It will load the first file\r
613   with the extension .gba or .bin that it finds.\r
614 + Menu options are saved to gpsp.cfg. Note that it does not save\r
615   frameskip options or flash ROM options because these are very\r
616   per game particular.\r
617 + The emulator will now try to save backup files to something\r
618   more matching the backup size than a fixed 64KB.\r
619 @ Loading ROMs and the auto save of the .sav files is MUCH faster\r
620   now. Thanks for the heads up on how to improve this from pollux!\r
621 @ While coding for the screen resize code I found that SDL just\r
622   wasn't cutting it and had to code for the GU myself. Turns out\r
623   the new code is faster (but because it is render code any\r
624   improvement will be diminished to nothing as frameskip is\r
625   increased). Special thanks to Zx-81 for the tips on this one\r
626   and for his GU code in the PSPVBA source as an example.\r
627 @ Added some games to game_config.txt. Note that not all versions\r
628   of these ROMs will work with these options, try to use the USA\r
629   version if possible.\r
630 \r
631 8-19-2006  v0.5 - Initial release (public beta quality)\r
632 \r
633 \r
634 -- About --\r
635 \r
636 gameplaySP (gpSP for short) is a GBA emulator written completely from\r
637 scratch. It is still pretty young (only having started a 3 months prior\r
638 to the first release) and thus rather immature, but it does a decent\r
639 job of playing a number of games, and is being improved upon somewhat\r
640 regularly. It is currently somewhat minimalistic, in the sourcecode,\r
641 presentation, and features. Its number one focus is to deliver a GBA\r
642 gaming experience in the most playable way that PSP can manage, with\r
643 frills being secondary (although still a consideration, at least for\r
644 some of them).\r
645 \r
646 Having said that, optimization was the important way in achieving this\r
647 goal, with overall compatability being a near second. Because of this\r
648 some games may not run at the favor of running more games significantly\r
649 better. Of course, the compatability will improve with time. The\r
650 compatability in the current version (0.8) is perhaps around 80%\r
651 (assuming the correct BIOS image is used).\r
652 \r
653 Many games will run at their best out of the box, but some games will\r
654 run very slowly unless idle loops are taken care of. There is a supplied\r
655 ROM database, game_config.txt, that gives idle loop targets and other\r
656 settings that may help a game to run better (or at all) on a per-game\r
657 basis. Currently (as of version 0.8) a few dozen games are on this list,\r
658 mostly only USA versions. This list will continue to be updated; there's\r
659 no real telling exactly how many of the ~2500 GBA games will need to\r
660 appear here.\r
661 \r
662 gpSP currently requires an authentic GBA BIOS image file to run. It will\r
663 make no effort to run without one present; this file is 16kb and should\r
664 be called gba_bios.bin and present in the same location as the EBOOT.PBP\r
665 file. Please do not ask me where to obtain this, you'll have to look\r
666 online or grab it from a GBA. Note that it is not legal to have this file\r
667 unless you own a GBA, and even then it's rather gray area.\r
668 \r
669 \r
670 \r
671 -- Features --\r
672 \r
673 gpSP mostly emulates the core Gameboy Advance system. As of right now it\r
674 does not emulate any special hardware present on various GBA cartridges.\r
675 \r
676 \r
677 What it emulates:\r
678 \r
679 GBA CPU: All ARM7TDMI ARM and Thumb mode opcodes except block memory w/\r
680  s-bit (probably aren't used in GBA games)\r
681 Video: Modes 0, 1, 2 almost completely, basic 3-5 support, sprites,\r
682  windows/OBJ windows\r
683 Interrupts: HBlank, VBlank, all timers, all DMA channels, keypad\r
684 DMA: Immediate, HBlank, VBlank, sound timer triggered\r
685 Sound: Both DirectSound channels and all 4 GBC audio channels\r
686 Input: Basic GBA input delivered through PSP controls\r
687 Cartridges: Currently supports ROMs up to 32MB in size (the maximum for\r
688 GBA) with the technique of ROM page swapping to fit within PSP's RAM.\r
689 Backup: 32/64kb SRAM, 64/128kb flash, 512bit/8kb EEPROM\r
690 RTC: The real-time clock present in cartridges such as most of the\r
691  Pokemon games and some others.\r
692 \r
693 \r
694 What it lacks:\r
695 \r
696 Video: No mosaic, bitmap modes lack color effects (alpha, fades),\r
697  there might be some minor inaccuracies in blending...\r
698 Cycle accuracy: Very cycle innacurate; CPU is effectively somewhat\r
699  overclocked, meaning games with rampant idle loops will probably run\r
700  rather poorly. DMA transfers effectively happen for free (0 cycle).\r
701  Please do NOT use gpSP as a first source for developing GBA homebrew,\r
702  try No$GBA instead.\r
703 \r
704 \r
705 Additional features it has:\r
706 - The ability to attempt to run games at faster than GBA speed (sometimes\r
707   they can end up a lot faster, other times not so much)\r
708 - Savestates: the ability to save a game's state to a file and resume\r
709   playing where you left off later.\r
710 - Mild cheat support\r
711 \r
712 \r
713 Features that it doesn't have (please don't ask me to implement these!)\r
714 - Wi-fi multiplayer\r
715 \r
716 \r
717 -- Controls --\r
718 \r
719 The default control scheme is very simple. If you don't like it you can\r
720 change it in the configuration menu.\r
721 \r
722 At the ROM selection screen:\r
723 \r
724 Up/down: navigate current selection window.\r
725 Left/right: switch between file window and directory window.\r
726 Circle/start: select current entry.\r
727 Square: go one directory up.\r
728 \r
729 In game:\r
730 \r
731 Up/down/left/right: GBA d-pad\r
732 Circle: GBA A button\r
733 Cross: GBA B button\r
734 Square/start: GBA start button\r
735 Select: GBA select button\r
736 Left trigger: GBA left trigger\r
737 Right trigger: GBA right trigger\r
738 Triangle: Adjust frameksip\r
739 \r
740 In frameskip adjustment:\r
741 \r
742 Hold down triangle to keep up, press up/down to increase/decrease\r
743 frameskip, respectively. Press down at 0 to change to auto, and up\r
744 at auto to change to 0.\r
745 \r
746 In the menu:\r
747 \r
748 Up/down: navigate current menu.\r
749 Left/right: change value in current menu selection (if a value is present)\r
750 Circle/start: select current entry (see help for entry to see what this means)\r
751 Square: exit the current menu.\r
752 \r
753 \r
754 -- Frameskip --\r
755 \r
756 The purpose behind frameskip is to cause the emulator to not render every\r
757 frame of graphics to make the emulation closer to fullspeed. Many games will\r
758 run fullspeed without skipping any frames, however, some (particularly more\r
759 graphically demanding ones) will require this.\r
760 \r
761 Frameskip can be set to two forms, either auto or manual. Auto will attempt\r
762 to skip only as many frames as necessary to make the game full speed, and\r
763 will not skip more than 4 in a row no matter what speed the game runs at\r
764 (at this point the benefits of frameskip yield diminishing returns).\r
765 \r
766 It is recommended that you keep frameskip on auto, but manual is maintained\r
767 as an option if you want it and works as follows:\r
768 \r
769 Manual frameskip will only render one out of every (n + 1) frames, where n\r
770 is the current frameskip value (so 0 will render everything). Increasing\r
771 the frameskip can improve speed, especially with very graphically\r
772 intensive games.\r
773 \r
774 \r
775 -- Cheats --\r
776 \r
777 Currently, gpSP supports some functionality of Gameshark/Pro Action Replay\r
778 cheat codes. To use these, you must first make a file with the same name\r
779 as the ROM you want the cheat code to apply to, but with the extension .cht.\r
780 Put this file in the same directory as the ROM. To make it use a normal\r
781 text editor like notepad or wordpad if you're on Windows.\r
782 \r
783 To write a code, write the type of model it is, gameshark_v1, gameshark_v3,\r
784 PAR_v1, or PAR_v3. gameshark_v1/PAR_v1 and gameshark_v3/PAR_v3 respectively\r
785 are interchangeable, but v1 and v3 are not! So if you don't know which\r
786 version it is, try both to see if it'll work.\r
787 \r
788 Then, after that, put a space and put the name you'd like to give the cheat.\r
789 \r
790 On the next several lines, put each cheat code pair, which should look like\r
791 this:\r
792 \r
793 AAAAAAAA BBBBBBBB\r
794 \r
795 Then put a blank line when you're done with that code, and start a new code\r
796 immediately after it. Here's an example of what a cheat file should look\r
797 like:\r
798 \r
799 \r
800 gameshark_v3 MarioInfHP\r
801 995fa0d9 0c6720d2\r
802 \r
803 gameshark_v3 MarioMaxHP\r
804 21d58888 c5d0e432\r
805 \r
806 gameshark_v3 InfHlthBat\r
807 6f4feadb 0581b00e\r
808 79af5dc6 5ce0d2b1\r
809 dbbd5995 44b801c9\r
810 65f8924d 2fbcd3c4\r
811 \r
812 gameshark_v3 StopTimer\r
813 2b399ca4 ec81f071\r
814 \r
815 \r
816 After you have written the .cht file, you have to enable the cheats\r
817 individually in the game menu. Go to the Cheats/Misc menu, and you will\r
818 see the cheats; turn them on here. You may turn them on and off as you\r
819 please, but note that some cheats may still hold after you turn them off,\r
820 due to the nature of the system. Restart to completely get rid of them.\r
821 \r
822 IMPORTANT NOTES:\r
823 \r
824 This is still very work in progress! I basically added this in only 1.5\r
825 or so hours, and I don't have a lot of time right now to work on it\r
826 before releasing. So I'll probably improve it later.\r
827 \r
828 Not all of gameshark's features are supported, especially for v3. Only\r
829 basic cheats will work, more or less.\r
830 \r
831 Cheats may be unstable and may crash your game. If you're having problems\r
832 turn the cheats off.\r
833 \r
834 Really, there's no guarantee that ANY cheats will work; I tried a few and\r
835 some seem to work, others are questionable. Try for yourself, but don't\r
836 expect anything to actually work right now. Do expect this feature to\r
837 improve in future versions.\r
838 \r
839 \r
840 \r
841 -- Frequently Asked Questions --\r
842 \r
843 Q) How do I run this on my PSP?\r
844 \r
845 A) Provided is an EBOOT.PBP which will run as is on a 1.0 firmware\r
846    PSP or custom firmware that can run unsigned EBOOTs. On 1.5 firmwares\r
847    you must use a kxploit tool to run it (try SeiPSPtool). On 2.0\r
848    firmwares and higher further exploits must be used - see\r
849    http://pspupdates.qj.net/ for more information. Note that I have NOT\r
850    tested this emulator on any firmware version besides 1.5, and it's\r
851    very possible that it doesn't run well, or at all on higher versions.\r
852    Therefore I strongly recommend you downgrade if possible, and use\r
853    Devhook to run games that require > 1.5 version firmwares.\r
854 \r
855    Be sure to include in the same directory as the EBOOT.PBP file the\r
856    game_config.txt file included and the gba_bios.bin file which you\r
857    must provide yourself.\r
858 \r
859    gpSP does not run on PSPs with version 2.71 or higher firmware yet,\r
860    nor does any other homebrew executable.\r
861 \r
862 \r
863 Q) What is a BIOS image file? Why do I need it to run gpSP? Other GBA\r
864    emulators don't require this...\r
865 \r
866 A) The GBA BIOS image file is a copy of a ROM on the GBA system that\r
867    has code for starting up the GBA (it shows the logo), verifying the\r
868    game, and most importantly, providing utility functions for the games\r
869    to use. It is the latter that gpSP needs the BIOS present for. It's\r
870    possible to replace all of these functions with equivilent code, but\r
871    this will take time - in the future gpSP may not require a BIOS image.\r
872 \r
873 \r
874 Q) I can't find this BIOS image.. please send it to me.\r
875 \r
876 A) Sorry, but you're on your own. I won't send you a BIOS or tell you\r
877    where to get one (unless you want to rip it from a GBA yourself, in\r
878    which case I'll just give you the same link at the top). I can't do\r
879    this because it's not legal to send it around and I don't want to\r
880    get a reputation for illegally distributing BIOS images.\r
881 \r
882 \r
883 Q) How do I know I have the right BIOS?\r
884 \r
885 A) If you have md5sum you can check if it has this hash:\r
886    a860e8c0b6d573d191e4ec7db1b1e4f6\r
887    That BIOS should work fine. I think that some others work fine too,\r
888    although I haven't confirmed this with absolute certainty. It's also\r
889    theoretically possible to use custom (and free) BIOS replacements,\r
890    but I don't know of any publically availablone ones.\r
891 \r
892    As far as I'm aware there are two BIOSes floating around, I doubt\r
893    you'll get one that isn't one of those two. There's a very easy way\r
894    to determine which one you have - just look at the very first byte in\r
895    a hex editor. The correct BIOS begins with 0x18, the buggy BIOS begins\r
896    with 0x14.\r
897 \r
898 \r
899 Q) My favorite game won't run.\r
900 \r
901 A) There probably isn't anything you can do about this, although a\r
902    change to game_config.txt might help. gpSP is still an emulator in\r
903    its infancy so the compatability is not superb. I don't have time\r
904    to test too many games so I'm releasing it as a public beta to get\r
905    a feel for some things that don't work. The next version could\r
906    perhaps fix it, or it might never run. There are always other\r
907    emulators of course, please try one.\r
908 \r
909    However, before nagging me there is one thing I recommend you try,\r
910    and that is to add the option "iwram_stack_optimize = no" for the\r
911    game in game_config.txt. See the file itself for more information\r
912    on how to do this. If this fixes your game (and it's not already\r
913    in the game_config.txt) please tell me about it.\r
914 \r
915 \r
916 Q) My favorite game is very slow.\r
917 \r
918 A) Emulating GBA takes a number of resources and getting it done well\r
919    on PSP is no simple task by any means. Some games are just going to\r
920    overwhelm the emulator completely. Of course, there is one special\r
921    case of game (a lot of early generation games fall under this\r
922    category) that can be made much faster by a simple addition to the\r
923    game_config.txt file. Wait for a new version of this file or the\r
924    next version of the emulator and the game may be improved.\r
925 \r
926    That aside, there are still numerous optimizations that can be done,\r
927    and I sure you future versions will be faster (I just can't tell you\r
928    how much)\r
929 \r
930    Also, a lot of games will be sped up considerably by adding an\r
931    idle_loop_eliminate_target line for it in game_config.txt. There\r
932    are some more obscurer options there that can improve speed too. If\r
933    the game is VERY slow there might be something wrong with its\r
934    emulation that can be improved. For instance, if you can't get a game\r
935    to run fullspeed on any frameskip you should e-mail me about it.\r
936 \r
937 \r
938 Q) Some games run fullspeed but the sound is messed up. Why?\r
939 \r
940 A) At least 9 out of 10 times it means the game isn't really running\r
941    full speed, but just that you can't notice the difference. Increasing\r
942    frameskip will almost always improve sound quality in these\r
943    situations, to a certain point (after around frameskip 3 you\r
944    probably won't be seeing many more returns if it isn't already\r
945    fullspeed). The rest of the time it means there's a bug somewhere else\r
946    in the emulator, probably in the CPU core. Chances are that all you\r
947    can do is wait for it to be fixed in a later release.\r
948 \r
949 \r
950 Q) The emulator crashed!\r
951 \r
952 A) Most games that don't run will probably take the emulator down with\r
953    it, or it could be an emulator bug completely unrelated to the game\r
954    (but unlikely). Press home and wait for the next version.\r
955 \r
956    There is some information that comes up when the game crashes. This\r
957    information may be slightly useful to me, but chances are it\r
958    usually won't be all that interesting.\r
959 \r
960    These days games are more likely to exit with a "bad crash" error.\r
961    This number is possibly useful to me, but to debug a game I'll have\r
962    to reproduce the crash anyway. When this happens it's probably due to\r
963    a bug in the CPU core that hasn't been fixed yet.\r
964 \r
965 \r
966 Q) Why won't my game save?\r
967 \r
968 A) The game might need 128KB flash turned on and might not be listed in\r
969    game_config.txt. See game_config.txt for more information regarding\r
970    this. Be sure to include game_config.txt with the EBOOT.PBP file.\r
971 \r
972    Other games might simply have bugs in the save support. For now, use\r
973    savestates as an alternative if you can't save.\r
974 \r
975 \r
976 Q) How do I change sound quality?\r
977 \r
978 A) Right now, you can't. For those wondering, sound is locked at 44.1KHz\r
979    (sounds a bit high? It is, but it's currently necessary to play\r
980    everything correctly). I don't have any plans to allow changing this\r
981    right now, because I don't think there's really much reason to be\r
982    able to (it'd be a tiny speed boost at best and I don't think SDL even\r
983    allows for anything besides this sampling rate on PSP)\r
984 \r
985 \r
986 Q) What is this emulator's name?\r
987 \r
988 A) Um.. what? It's gameplaySP, isn't it? You call it gpSP for short.\r
989    Somehow the name can't have the acronyms gbSP, gbapSP, or really\r
990    just about anything else you feel like giving it. Oh, and if you\r
991    really want to make me happy get the capitalization right too.\r
992    That's gpSP, not gPSP, GPsp.. you get the idea.\r
993 \r
994 \r
995 Q) Does gpSP run Gameboy/Gameboy Color games? Will it later?\r
996 \r
997 A) No. Even though GBA can run these games it uses separate hardware\r
998    that proper GBA games have no access to (save for the audio chip),\r
999    and thus there's no point including it in a GBA emulator (it\r
1000    doesn't help run GBA games). I recommend using a GB/GBC emulator\r
1001    like Rin for playing these games. It'll probably give you a lot\r
1002    more options anyway. gpSP will never actually emulate GB/GBC\r
1003    games. You'd may as well be waiting for it to emulate PS2 games...\r
1004    (that was an analogy. gpSP won't ever emulate PS2 games. >_>)\r
1005 \r
1006 \r
1007 Q) Other emulators use the PSP's graphical hardware to accelerate the\r
1008    video emulation. Is this possible for gpSP?\r
1009 \r
1010 A) I'm honestly not too sure at this point. It's definitely a rather\r
1011    complicated procedure, and I don't think it'll be possible to\r
1012    accurately accelerate alpha blending. On the other hand, affine\r
1013    transformations could perhaps receive a speed boost this way. Any\r
1014    solution would have to be hybrid hardware/software, which might be\r
1015    possible due to the nature of the PSP's VRAM. Maybe someone will\r
1016    be willing to help me think of possibilities here?\r
1017 \r
1018    But don't bother of you're just going to tell me to render a list\r
1019    of quads...\r
1020 \r
1021 \r
1022 Q) Other emulators use the PSP's second CPU to offload the sound\r
1023    emulation. Is this possible for gpSP?\r
1024 \r
1025 A) Yes, but it wouldn't improve it nearly as much as say, SNES9x TYL.\r
1026    This is because most of the processing that goes into sound on a GBA\r
1027    game is done in the CPU, not in dedicated audio hardware. It could\r
1028    help a little, but probably not a lot. Maybe enough to be worthwhile.\r
1029    It might also be possible to split the video rendering to the main\r
1030    CPU and the main emulation to the secondary one, but there are a lot\r
1031    of coherency issues involved.\r
1032 \r
1033 \r
1034 Q) I heard gpSP can only load games 16MB or smaller in size. Is this\r
1035    true? What about zipped games?\r
1036 \r
1037 A) As of version 0.8 gpSP can play 32MB ROMs. However, they must be\r
1038    unzipped. The reason for this is that parts of the ROM are constantly\r
1039    loaded to memory as needed, and for this to be as fast as possible the\r
1040    ROM has to be present on the memory stick in raw format.\r
1041 \r
1042    You might be wondering, why not just have gpSP unzip the ROM to a file\r
1043    then delete the file when it is done? The reason why is because this\r
1044    would impose a "hidden" requirement of 32MB on the user that very\r
1045    likely may not be there. Furthermore, there are only a few 32MB games\r
1046    that anyone actually wants to play. If you only have one 32MB game on\r
1047    your memstick then it'd actually require signifnicantly more free space\r
1048    to hold both the ROM and the 32MB raw file. With 2 32MB ROMs you only\r
1049    gain a around 10-25MB of free space, depending on how effective the\r
1050    compression is.\r
1051 \r
1052 \r
1053 Q) Savestates? From other emulators??\r
1054 \r
1055 A) See the savestates option in main menu. gpSP will probably never\r
1056    support savestates from other emulators, there's just too much in the\r
1057    way of emulator specific data in them.\r
1058 \r
1059    Savestates are currently 506,943 bytes. They would be a little smaller\r
1060    without the snapshot, but I find that very useful and it wouldn't help\r
1061    size immensely. Compression would help, but I wanted the size to be\r
1062    constant so you knew exactly how much you could hold and to improve\r
1063    save/load speed.\r
1064 \r
1065 \r
1066 Q) What's with the zip support?\r
1067 \r
1068 A) I hear stories that some games work unzipped and not zipped, so you\r
1069    might want to try unzipping them if it gives you problems. You also\r
1070    might want to try making fresh zips with WinRAR - users have\r
1071    reported some higher success rates doing this.\r
1072 \r
1073 \r
1074 Q) What's with the config file? Should I make it read only?\r
1075 \r
1076 A) There was a bug in version 0.6 that caused the config file to not\r
1077    get updated or get corrupted sometimes. Hopefully this is fixed now,\r
1078    but if it DOES get corrupted making it read only can prevent this\r
1079    from happening in the future.\r
1080 \r
1081 \r
1082 Q) So when WILL the next version be released?\r
1083 \r
1084 A) Sorry, but I almost never announce release dates. Furthermore, I'll\r
1085    probably be pretty hush hush on internal development, just to keep\r
1086    people from nagging me about it and building too much suspense.\r
1087 \r
1088 \r
1089 Q) I don't like this emulator. Are there other alternatives?\r
1090 \r
1091 A) Yes. Try PSPVBA by Zx-81 (http://zx81.dcemu.co.uk/). Overall I doubt\r
1092    the compatability is significantly higher than gpSP's anymore, but\r
1093    I'm sure there are some games it runs that gpSP doesn't.\r
1094 \r
1095 \r
1096 Q) I heard there was a version of gpSP for PCs. Is that true?\r
1097 \r
1098 A) I developed this emulator internally on PC. It might have a speed\r
1099    advantage over other PC GBA emulators, although the PSP version has\r
1100    more sophisticated optimizations. Most people have fast enough\r
1101    computers to run better GBA emulators for PC and gpSP lacks some\r
1102    important features (screen resizing) that the PSP version kinda\r
1103    hides. Even though gpSP spent a majority of its development\r
1104    gestation as a PC app it was always developed with the PSP in mind,\r
1105    so the PC version will probably not see the light of the day unless\r
1106    I get overwhelming demand for it. It is, however, possible to\r
1107    build it from the source. But I request that you don't distribute\r
1108    such builds. If you happen to find one, bear in mind that I don't\r
1109    offer any support for it, and as far as I'm concerned it won't\r
1110    exist.\r
1111 \r
1112 \r
1113 Q) I hear there's a version of gpSP for other platforms too, like\r
1114    Dreamcast. And I hear they're slow! What gives?\r
1115 \r
1116    These are ports, done by other people (or maybe myself?). This is\r
1117    possible because gpSP is open source and its base version is fairly\r
1118    portable, but to run fast enough on anything but platforms quite a\r
1119    bit faster than PSP it at least needs a CPU specific dynarec backend.\r
1120 \r
1121    I don't (necessarily) maintain all builds of gpSP, so you'll have to\r
1122    contact the authors of these ports for more information. That\r
1123    notwithstanding, I try to get as involved in other ports of gpSP as\r
1124    I can.\r
1125 \r
1126 \r
1127 Q) I want to modify gpSP. How can I do this, and am I at liberty to do\r
1128    so?\r
1129 \r
1130 A) Yes, you are, under the terms of the GPL (see the included\r
1131    COPYING.DOC). You can download the sourcecode from whereever you\r
1132    downloaded this; if you can't find it please e-mail me and I'll give\r
1133    you a link to it. I would vastly appreciate it if you contacted me first\r
1134    before forking my project, especially if you're just looking to gain\r
1135    recognition without adding much to it. It's better to keep all changes\r
1136    tidy in one branch of development.\r
1137 \r
1138    I would like to stress this a little more seriously (hopefully those\r
1139    interested are reading this). Although you are legally entitled to\r
1140    release your own forks of gpSP it would be much more benficial to me,\r
1141    to you, and to the users of this program if you instead tried working\r
1142    with me to get your changes incorporated into the next version. I\r
1143    really don't feel like competing with other builds of my source\r
1144    anymore, so please do me a big favor and send me an e-mail if you want\r
1145    to work with gpSP.\r
1146 \r
1147 \r
1148 Q) How do I build gpSP?\r
1149 \r
1150 A) make will build it. You need to have SDL for PSP installed, as well\r
1151    as the standard PSP toolchain/PSPSDK and zlib. gpSP isn't much of a\r
1152    "build it yourself" program so please don't bother me much about how to\r
1153    build it unless you have a good reason for wanting to do so.\r
1154 \r
1155 \r
1156 Q) What is with the version numbers?\r
1157 \r
1158 A) Anything less than 1.0 means beta. Beta means that I still have major\r
1159    plans for working on it, and that I don't fully back it as being\r
1160    stable or reliable software. Of course, if it does hit 1.0, that doesn't\r
1161    mean it'll be perfect. It just means I'll have spent a lot of cumulative\r
1162    time working things out. The closer it gets to 0.9, the happier I am with\r
1163    it overall.\r
1164 \r
1165 \r
1166 Q) Donations?\r
1167 \r
1168 A) Very appreciated. exophase@gmail.com on PayPal. <3\r
1169 \r
1170 \r
1171 Q) How can I contact you?\r
1172 \r
1173 A) exophase@gmail.com, Exophase on AIM, exophase@adelphia.net on MSN. I\r
1174    welcome IMs, but if you nag me a lot you'll make me sad inside. And\r
1175    don't ask me for ROMs or the GBA BIOS. I figured this was common sense\r
1176    but apparently not.\r
1177 \r
1178 \r
1179 -- Credits --\r
1180 \r
1181 Exophase: main developer\r
1182 siberianSTAR: zip support\r
1183 psp298: analog nub code\r
1184 \r
1185 Beta testers for 0.7:\r
1186 theohsoawesome1\r
1187 thisnamesucks837\r
1188 blackdragonwave9\r
1189 dagreatpeewee\r
1190 xsgenji\r
1191 \r
1192 Beta testers for 0.8:\r
1193 Runaway_prisoner\r
1194 theohsoawesome1\r
1195 tanyareimyoko\r
1196 spynghotoh2020\r
1197 \r
1198 Beta testers for 0.9:\r
1199 RunawayPrisoner (my right hand man)\r
1200 Veskgar (my left hand man)\r
1201 qasim\r
1202 \r
1203 -- Special thanks --\r
1204 \r
1205 Quasar84: He's helped me in so many ways with this. We both kinda learned\r
1206 GBA together, he did little demos for me and I got them emulated. It was\r
1207 great trying out your more advanced code for your own projects once you\r
1208 got to them, it was equally rewarding to see your work and to be able to\r
1209 run it at the same time. Least of all I wouldn't have been able to do any\r
1210 of this without your constant support and presence. I really owe this\r
1211 release to you.\r
1212 \r
1213 gladius: You are an amazing GBA coder. I wouldn't have been able to get\r
1214 through some tough parts without your help. Its been good talking about\r
1215 ideas with you.. I'm sure you're glad to see that there's finally a GBA\r
1216 emulator with dynarec ;)\r
1217 \r
1218 \r
1219 Many, many others of course, probably too many to name, and I don't want\r
1220 to make anyone feel bad by putting others above them (well, except those\r
1221 two, heh) so if you think you should be on here, you probably should be!\r
1222 Just pretend you are for now, and maybe I'll put you here next time.\r
1223 \r