cleanup: remove cpu ctrl files, move tests
[gpsp.git] / readme.txt
1 -- gameplaySP  Gameboy Advance emulator for Playstation Portable --\r
2 \r
3 \r
4 -- Release log --\r
5 \r
6 v0.91 (minor cleanup release)\r
7 \r
8 NOTE: I don't usually do minor releases but I rewrote a ton of\r
9 things in gpSP 0.9, much of it during the last few days, and although\r
10 I spent a lot of time debugging a few bugs inevitably crept in.\r
11 \r
12 # Fixed some issues in the new memory handlers that crept up, hopefully\r
13   should fix the problems between 0.8 and 0.9.\r
14 # Fixed a bug introduced in 0.9 that could cause crashes when selecting\r
15   things in the menu (I hope, at least).\r
16 # Fixed a bug with a certain invalid opcode causing a jump to be scanned\r
17   when there isn't one (fixes Sabre Wulf).\r
18 # Removed 2048 option for audio buffer.\r
19 \r
20 v0.9 (yes, it's still beta)\r
21 \r
22 NOTE: As some of you may be aware I'm pretty much tired of these\r
23 unofficial releases by people (okay, mostly single person) who\r
24 don't wish to follow my wishes. I'm in the process of asking this\r
25 person to stop, in his own language. However, I want to make\r
26 something clear. Look at the last six new features in this\r
27 changelog. I added these TODAY. I could have done them at any\r
28 time. But I didn't, because I spent many (dozens, quite possibly\r
29 hundreds) hours debugging games that people want to play. I have\r
30 always believed that this is far more important than spending time\r
31 on new features. Frankly, I'm tired of my emulator being hacked on\r
32 by other people, and if it doesn't stop I'm going to make this\r
33 project closed source.\r
34 \r
35 Since I know this information is most visible when updated on the\r
36 major sites, note that it is the news posters I am especially\r
37 talking to. Next time you upload unofficial releases of my\r
38 emulator (without even knowing what's changed) bear in mind that\r
39 you're only encouraging me to stop working on this. If you want\r
40 to pick sides between me and unofficial devs, be my guest. I'll\r
41 let you decide by the contents of this release who's doing more\r
42 for my emulator.\r
43 \r
44 Oh, and if you downloaded a version of gpSP that has more than\r
45 "gpSP" in its name then you're using one of their versions. Shame\r
46 on them for not even removing this threatening message, and shame\r
47 on you. Unless you're using a port I endorse (GP2X, Dreamcast, etc),\r
48 in which case everything's good.\r
49 \r
50 \r
51 # Fixed stereo output being reversed.\r
52 # Fixed a bug causing misaligned errors on 8bit writes to the gbc\r
53   audio channel 3 wave data (fixes various Super Robot Wars games)\r
54 # Fixed DMA with garbage in their upper 4 bits (fixes a crash in\r
55   Zelda: Minish Cap)\r
56 # Added double buffering to the rendering, removes line artifacts.\r
57   Big thanks to Brunni for the idea.\r
58 # Fixed a bug preventing some SRAM based games from saving (fixes\r
59   MMBN4-6)\r
60 # Fixed a bug causing part of EWRAM to potentially get corrupted if\r
61   code segments loaded in EWRAM cross 32KB boundaries (fixes\r
62   Phantasy Star 2)\r
63 # Fixed a bug causing games using movs pc in user mode (very bad\r
64   behavior) to crash. Fixes Colin McRae Rally 2.0.\r
65 # Improved timing a bit more. Fixes GTA Advance.\r
66 # Fixed a sprite clipping bug (fixes crash in third boss of Zelda:\r
67   Minish cap)\r
68 # Increased translation buffer size significantly (fixes Donkey Kong:\r
69   King of Swing)\r
70 # Fixed a dynarec bug causing add pc, reg to not work in Thumb code\r
71   (fixes crash in DBZ:LoZ, seems to fix crashes in battle in Golden\r
72   Sun, probably fixes other games)\r
73 # Made sprites using tiles < 512 not display in modes 3-5 (fixes\r
74   a couple minor graphical bugs)\r
75 # Removed abort on instruction 0x00000000 hack, was breaking a\r
76   certain bugged up game (Scurge)\r
77 # Fixed bug in flags generating variable logical shifts (fixes\r
78   SD Gundam Force)\r
79 # Fixed unaligned 16bit reads (fixes DBZ:LoZ in game)\r
80 # Redid contiguous block flag modification checking AGAIN and\r
81   hopefully got it right this time (fixes Mario vs. Donkey Kong)\r
82 # Redid ldm/stm instructions, fixing some cases (along with the\r
83   timing improvements fixes Mario & Luigi)\r
84 # Fixed 14bit EEPROM addressing (hopefully fixes saving in a lot\r
85   of games)\r
86 # Completely redid memory handlers, accurately emulates open and\r
87   BIOS reads now. Fixes Zelda: Minish Cap (roll bug, last dungeon),\r
88   Rayman, MMBN 1 (last dungeon), probably others.\r
89 # Fixed a minor graphical glitch on the edges of the screen\r
90   (thanks Brunni and hlide for the help!)\r
91 # Fixed crash on loading savestates from files of games not currently\r
92   loaded, but be sure you have the exact file you loaded it from or\r
93   gpSP will exit.\r
94 @ New memory handlers should provide performance boost for games\r
95   that access VRAM significantly (ie 3D games)\r
96 @ Added dead flag elimination checking for logical shifts, probably\r
97   doesn't make a noticeable difference but should have been there\r
98   anyway.\r
99 + Added rapidfire to the button mappings.\r
100 + Added auto frameskip. Removed fractional frameskip (don't think\r
101   it's very useful with auto anyway). Select auto in the graphics/\r
102   sound menu to activate it; frameskip value will act as the\r
103   maximum (auto is by default on). Thanks again to Brunni for some\r
104   help with this. Frameskip options are game specific.\r
105 + Added vsync to the rendering. Only occurs when frames aren't\r
106   skipped. Seems to reduce tearing at least some of the time.\r
107 + Added non-filtered video option.\r
108 + Cheat support (Gameshark/Pro Action Replay v1-v3 only), still\r
109   in early stages, doesn't support everything; codes may cause\r
110   the game to crash, haven't determined yet if the codes are bad\r
111   or the implementation is. See cheat section for more information.\r
112 + Added ability to change audio buffer size. Does not take affect\r
113   until you restart the game.\r
114 + Added analog config options.\r
115 + Added ability to set analog sensitivity and turn off analog.\r
116 + Added ability to change the clock speed. This is a game specific\r
117   option. Try lower speeds w/auto frameskip to save battery life.\r
118 + Fixed savestate speed on crappy Sony sticks.\r
119 \r
120 (legend: # bug fix, + feature addition, @ optimization)\r
121 \r
122 v0.8 - ("unlocked" beta)\r
123 \r
124 NOTE 1: It has come to my attention that there are actually BIOSes\r
125 out there that are being used that cause some games to not work.\r
126 The BIOS md5sum listed here is for the BIOS actually in GBAs and\r
127 is as accurate as you'll get, (if you have a GBA and a flashcart\r
128 you can dump it yourself, see http://wiki.pocketheaven.com/GBA_BIOS)\r
129 \r
130 NOTE 2: Since I know this is as far as a lot of people here I have a\r
131 little request. Please, please, (I'd italicize this if I could)\r
132 please stop constantly asking me when the next release will be,\r
133 what it'll have, etc. And while you're at it, please stop asking me\r
134 to implement wi-fi multiplayer, cheat support, or fix all of your\r
135 games. Some things will happen in due time, other things might not\r
136 ever happen. I devote about as much time as I can to this emulator\r
137 and I carefully include as much as I can in releases to try to\r
138 minimize the number of people who will nag me next time (erm, I\r
139 mean, to make the most people happy), so I don't release every other\r
140 day or anything like that. Sorry that I can't release once a week,\r
141 but I'm a lot busier now than I was when I was first developing this\r
142 emulator. Good thing I got the first version out before that, wasn't\r
143 it?\r
144 \r
145 Congratulations, you made it this far! Now read the rest of the this\r
146 thing. *_*\r
147 \r
148 \r
149 # Fixed bug in dead flag elimination, "alt" version no longer needed.\r
150 # Fixed EEPROM saves being saved as 32kb instead of 512bytes/8kb\r
151 + 32MB ROM support has been added. ROMS are "demand loaded" as\r
152   necessary and page swapped out; there might be a small loading lag,\r
153   but I have yet to ever really notice anything.\r
154   NOTE: 32MB ROM support only works for unzipped ROMs.\r
155 + Save states have been added. See the save state menu for save/load\r
156   options.\r
157 + Support for the real-time clock (RTC) chip in Pokemon cartridegs\r
158   and other games. The implementation is based off of VBA's, whatever\r
159   notes on gbadev I could find, and some of my own reverse engineering\r
160   of what the games do... it might not be totally correct. Also,\r
161   setting the time does not work.\r
162 + Per-game configuration. Currently this only saves frameskip and\r
163   frameskip variation options.\r
164 + Removed the flash type option from the menu and instead added it\r
165   to game_config.txt. Hopefully got everything - let me know if you\r
166   find something that isn't there. It's pretty easy to add them if you\r
167   have to.\r
168 + Added a display in the upper left-hand corner to indicate when\r
169   fast-forward is on.\r
170 + Added button bindings for save/load state.\r
171 @ Found a fix of StrmnNrmn proportion: far too much unnecessary mutex\r
172   synchronization was going on. Removing the two offending lines of\r
173   code gave a massive speed boost for free. Enjoy.\r
174 \r
175 v0.7 - (beta than ever)\r
176 \r
177 # Fixed a dynarec bug involving flags generating functions in\r
178   contiguous conditional blocks. Fixes music in Super Mario\r
179   Advance 2-4.\r
180 # Fixed a dynarec bug where Thumb mov imm instructions wouldn't\r
181   set flags. Fixes Zelda: Minish Cap, Megaman Battle Network,\r
182   probably others. Comes at a slight speed cost.\r
183 # Fixed a MIPS dynarec bug where some delay slots might not\r
184   get filled rarely, causing chaos. Don't know if it improves\r
185   any games.\r
186 # Improved self-modifying code detection. Makes Golden Sun,\r
187   Golden Sun 2, and Madden 2007 sorta work but excrutiatingly\r
188   slowly. Looking for a game-specific workaround for this - if you\r
189   want to play these games you'll have to wait for now :(\r
190 # Fixed a bug causing the interrupt disable flag to go down\r
191   when SWIs are entered, causing crashes/resets. Fixes\r
192   Super Mario Advance 2-4.\r
193 # Fixed menu crashing when strings with certain characters are\r
194   printed (for instance going to the menu after loading the\r
195   BIOS)\r
196 # Accidentally forgot to render win0 + win1 + objwin when all\r
197   active at the same time, many weeks ago. Added that, should fix\r
198   some parts in games that had frozen screens.\r
199 # Fixed some issues with gpsp.cfg needing to be present and\r
200   corrupting, hopefully. At the very least sanity checks are\r
201   performed on the config file.\r
202 # Made it so assigning the frameskip button to something besides\r
203   triangle actually worked as expected.\r
204 # Fixed ability to restart current game if nothing is loaded\r
205   (ie, crash)\r
206 # Added interrupt on cpsr modification support to the dynarec\r
207   (fixes backgrounds in Castlevania: Harmony of Dissonance)\r
208 # Added open addressing for ldm/stm instructions (fixes\r
209   Super Mario Advance 3)\r
210 # Improved cycle accuracy a little. Don't know of anything this\r
211   fixes, but games with idle loops will run a little better w/o\r
212   idle loop elimination (but should still be added when possible)\r
213 # Fixed some bugs causing sound to play sometimes when it shouldn't.\r
214 @ Added dead flag elimination for Thumb code. May possibly have\r
215   noticeable performance increases (Thumb emited coded size can\r
216   have a reduction of 20% or more)\r
217 @ Added code generation for divide SWI. May have a small speed\r
218   increase in some games.\r
219 + Added analog nub support (special thanks to psp298 for the\r
220   code)\r
221 + Added fractional frameskip. Go below 0 to get them. A frameskip\r
222   of 1/2 for instance means render 2 out of every 3 frames, 2/3\r
223   means render 3 out of every 4 frames, etc. Possibly useful for\r
224   games that are not quite fast enough at fs0 but fullspeed at\r
225   fs1...\r
226 \r
227 v0.6 - (still beta quality, look out for new bugs)\r
228 \r
229 NOTE: Please include gpsp.cfg with EBOOT.PBP, this shouldn't be\r
230  necessary but I think it is right now.\r
231 \r
232 # Fixed a nasty bug that shouldn't have made it into the initial\r
233   release; a lot of games that TECM.. erm.. crash won't anymore.\r
234   NOTE: This doesn't mean that no game will ever crash, freeze,\r
235   otherwise not work.\r
236 # Fixed some crashes in the GUI and the ability to "go up" past\r
237   ms0:/PSP. Made the "go up" button square like it was supposed to\r
238   be (instead of cross).\r
239 + There's now a menu that you can access, by default press right\r
240   while holding down triangle for the frameskip bar.\r
241 + Menu option: resize screen aspect ratio, the default is now\r
242   "scaled 3:2" which makes it look more like a normal GBA. You\r
243   can use "fullscreen" (what it was like before) or "unscaled 3:2"\r
244   (tiny but pixel for pixel like a GBA)\r
245 + Menu option: You can now load new games while the current one\r
246   is running.\r
247 + Menu option: You can now restart the currently running game.\r
248 + Menu option: Frameskip variation - this defaults to "uniform"\r
249   whereas it defaulted to "random" last release. Basically, turn\r
250   it on random if you find that frameskip causes flickering\r
251   animations to make things disappear. Other than that it will\r
252   generally look better on uniform.\r
253 + GUI and file loading now have "auto repeat" on the buttons so\r
254   they're not such a pain to navigate.\r
255 + Menu option: Added support for 128KB flash ROM, some games\r
256   require it (Pokemon Firered/Leaf Green, Super Mario Advance 4),\r
257   turn it on before running the game to make sure it works.\r
258   NOTE: There are some versions of these ROMs that have been\r
259   hacked to get around their 128KB flash, and may not even work\r
260   properly at all. Look out for them, these games should save\r
261   128KB save files after you set the setting to it, IF they use\r
262   128KB flash.\r
263 + Menu option: Added ability to make the .sav files only update\r
264   when you exit the emulator, use with extreme caution (in other\r
265   words, it's not a good idea to use something like this in beta\r
266   quality software if you care about your saves). Does NOT update\r
267   if you exit through the home button, don't use the home button\r
268   if you can help it.\r
269 + Zip support thanks to SiberianSTAR. It will load the first file\r
270   with the extension .gba or .bin that it finds.\r
271 + Menu options are saved to gpsp.cfg. Note that it does not save\r
272   frameskip options or flash ROM options because these are very\r
273   per game particular.\r
274 + The emulator will now try to save backup files to something\r
275   more matching the backup size than a fixed 64KB.\r
276 @ Loading ROMs and the auto save of the .sav files is MUCH faster\r
277   now. Thanks for the heads up on how to improve this from pollux!\r
278 @ While coding for the screen resize code I found that SDL just\r
279   wasn't cutting it and had to code for the GU myself. Turns out\r
280   the new code is faster (but because it is render code any\r
281   improvement will be diminished to nothing as frameskip is\r
282   increased). Special thanks to Zx-81 for the tips on this one\r
283   and for his GU code in the PSPVBA source as an example.\r
284 @ Added some games to game_config.txt. Note that not all versions\r
285   of these ROMs will work with these options, try to use the USA\r
286   version if possible.\r
287 \r
288 8-19-2006  v0.5 - Initial release (public beta quality)\r
289 \r
290 \r
291 -- About --\r
292 \r
293 gameplaySP (gpSP for short) is a GBA emulator written completely from\r
294 scratch. It is still pretty young (only having started a 3 months prior\r
295 to the first release) and thus rather immature, but it does a decent\r
296 job of playing a number of games, and is being improved upon somewhat\r
297 regularly. It is currently somewhat minimalistic, in the sourcecode,\r
298 presentation, and features. Its number one focus is to deliver a GBA\r
299 gaming experience in the most playable way that PSP can manage, with\r
300 frills being secondary (although still a consideration, at least for\r
301 some of them).\r
302 \r
303 Having said that, optimization was the important way in achieving this\r
304 goal, with overall compatability being a near second. Because of this\r
305 some games may not run at the favor of running more games significantly\r
306 better. Of course, the compatability will improve with time. The\r
307 compatability in the current version (0.8) is perhaps around 80%\r
308 (assuming the correct BIOS image is used).\r
309 \r
310 Many games will run at their best out of the box, but some games will\r
311 run very slowly unless idle loops are taken care of. There is a supplied\r
312 ROM database, game_config.txt, that gives idle loop targets and other\r
313 settings that may help a game to run better (or at all) on a per-game\r
314 basis. Currently (as of version 0.8) a few dozen games are on this list,\r
315 mostly only USA versions. This list will continue to be updated; there's\r
316 no real telling exactly how many of the ~2500 GBA games will need to\r
317 appear here.\r
318 \r
319 gpSP currently requires an authentic GBA BIOS image file to run. It will\r
320 make no effort to run without one present; this file is 16kb and should\r
321 be called gba_bios.bin and present in the same location as the EBOOT.PBP\r
322 file. Please do not ask me where to obtain this, you'll have to look\r
323 online or grab it from a GBA. Note that it is not legal to have this file\r
324 unless you own a GBA, and even then it's rather gray area.\r
325 \r
326 \r
327 \r
328 -- Features --\r
329 \r
330 gpSP mostly emulates the core Gameboy Advance system. As of right now it\r
331 does not emulate any special hardware present on various GBA cartridges.\r
332 \r
333 \r
334 What it emulates:\r
335 \r
336 GBA CPU: All ARM7TDMI ARM and Thumb mode opcodes except block memory w/\r
337  s-bit (probably aren't used in GBA games)\r
338 Video: Modes 0, 1, 2 almost completely, basic 3-5 support, sprites,\r
339  windows/OBJ windows\r
340 Interrupts: HBlank, VBlank, all timers, all DMA channels, keypad\r
341 DMA: Immediate, HBlank, VBlank, sound timer triggered\r
342 Sound: Both DirectSound channels and all 4 GBC audio channels\r
343 Input: Basic GBA input delivered through PSP controls\r
344 Cartridges: Currently supports ROMs up to 32MB in size (the maximum for\r
345 GBA) with the technique of ROM page swapping to fit within PSP's RAM.\r
346 Backup: 32/64kb SRAM, 64/128kb flash, 512bit/8kb EEPROM\r
347 RTC: The real-time clock present in cartridges such as most of the\r
348  Pokemon games and some others.\r
349 \r
350 \r
351 What it lacks:\r
352 \r
353 Video: No mosaic, bitmap modes lack color effects (alpha, fades),\r
354  there might be some minor inaccuracies in blending...\r
355 Cycle accuracy: Very cycle innacurate; CPU is effectively somewhat\r
356  overclocked, meaning games with rampant idle loops will probably run\r
357  rather poorly. DMA transfers effectively happen for free (0 cycle).\r
358  Please do NOT use gpSP as a first source for developing GBA homebrew,\r
359  try No$GBA instead.\r
360 \r
361 \r
362 Additional features it has:\r
363 - The ability to attempt to run games at faster than GBA speed (sometimes\r
364   they can end up a lot faster, other times not so much)\r
365 - Savestates: the ability to save a game's state to a file and resume\r
366   playing where you left off later.\r
367 - Mild cheat support\r
368 \r
369 \r
370 Features that it doesn't have (please don't ask me to implement these!)\r
371 - Wi-fi multiplayer\r
372 \r
373 \r
374 -- Controls --\r
375 \r
376 The default control scheme is very simple. If you don't like it you can\r
377 change it in the configuration menu.\r
378 \r
379 At the ROM selection screen:\r
380 \r
381 Up/down: navigate current selection window.\r
382 Left/right: switch between file window and directory window.\r
383 Circle/start: select current entry.\r
384 Square: go one directory up.\r
385 \r
386 In game:\r
387 \r
388 Up/down/left/right: GBA d-pad\r
389 Circle: GBA A button\r
390 Cross: GBA B button\r
391 Square/start: GBA start button\r
392 Select: GBA select button\r
393 Left trigger: GBA left trigger\r
394 Right trigger: GBA right trigger\r
395 Triangle: Adjust frameksip\r
396 \r
397 In frameskip adjustment:\r
398 \r
399 Hold down triangle to keep up, press up/down to increase/decrease\r
400 frameskip, respectively. Press down at 0 to change to auto, and up\r
401 at auto to change to 0.\r
402 \r
403 In the menu:\r
404 \r
405 Up/down: navigate current menu.\r
406 Left/right: change value in current menu selection (if a value is present)\r
407 Circle/start: select current entry (see help for entry to see what this means)\r
408 Square: exit the current menu.\r
409 \r
410 \r
411 -- Frameskip --\r
412 \r
413 The purpose behind frameskip is to cause the emulator to not render every\r
414 frame of graphics to make the emulation closer to fullspeed. Many games will\r
415 run fullspeed without skipping any frames, however, some (particularly more\r
416 graphically demanding ones) will require this.\r
417 \r
418 Frameskip can be set to two forms, either auto or manual. Auto will attempt\r
419 to skip only as many frames as necessary to make the game full speed, and\r
420 will not skip more than 4 in a row no matter what speed the game runs at\r
421 (at this point the benefits of frameskip yield diminishing returns).\r
422 \r
423 It is recommended that you keep frameskip on auto, but manual is maintained\r
424 as an option if you want it and works as follows:\r
425 \r
426 Manual frameskip will only render one out of every (n + 1) frames, where n\r
427 is the current frameskip value (so 0 will render everything). Increasing\r
428 the frameskip can improve speed, especially with very graphically\r
429 intensive games.\r
430 \r
431 \r
432 -- Cheats --\r
433 \r
434 Currently, gpSP supports some functionality of Gameshark/Pro Action Replay\r
435 cheat codes. To use these, you must first make a file with the same name\r
436 as the ROM you want the cheat code to apply to, but with the extension .cht.\r
437 Put this file in the same directory as the ROM. To make it use a normal\r
438 text editor like notepad or wordpad if you're on Windows.\r
439 \r
440 To write a code, write the type of model it is, gameshark_v1, gameshark_v3,\r
441 PAR_v1, or PAR_v3. gameshark_v1/PAR_v1 and gameshark_v3/PAR_v3 respectively\r
442 are interchangeable, but v1 and v3 are not! So if you don't know which\r
443 version it is, try both to see if it'll work.\r
444 \r
445 Then, after that, put a space and put the name you'd like to give the cheat.\r
446 \r
447 On the next several lines, put each cheat code pair, which should look like\r
448 this:\r
449 \r
450 AAAAAAAA BBBBBBBB\r
451 \r
452 Then put a blank line when you're done with that code, and start a new code\r
453 immediately after it. Here's an example of what a cheat file should look\r
454 like:\r
455 \r
456 \r
457 gameshark_v3 MarioInfHP\r
458 995fa0d9 0c6720d2\r
459 \r
460 gameshark_v3 MarioMaxHP\r
461 21d58888 c5d0e432\r
462 \r
463 gameshark_v3 InfHlthBat\r
464 6f4feadb 0581b00e\r
465 79af5dc6 5ce0d2b1\r
466 dbbd5995 44b801c9\r
467 65f8924d 2fbcd3c4\r
468 \r
469 gameshark_v3 StopTimer\r
470 2b399ca4 ec81f071\r
471 \r
472 \r
473 After you have written the .cht file, you have to enable the cheats\r
474 individually in the game menu. Go to the Cheats/Misc menu, and you will\r
475 see the cheats; turn them on here. You may turn them on and off as you\r
476 please, but note that some cheats may still hold after you turn them off,\r
477 due to the nature of the system. Restart to completely get rid of them.\r
478 \r
479 IMPORTANT NOTES:\r
480 \r
481 This is still very work in progress! I basically added this in only 1.5\r
482 or so hours, and I don't have a lot of time right now to work on it\r
483 before releasing. So I'll probably improve it later.\r
484 \r
485 Not all of gameshark's features are supported, especially for v3. Only\r
486 basic cheats will work, more or less.\r
487 \r
488 Cheats may be unstable and may crash your game. If you're having problems\r
489 turn the cheats off.\r
490 \r
491 Really, there's no guarantee that ANY cheats will work; I tried a few and\r
492 some seem to work, others are questionable. Try for yourself, but don't\r
493 expect anything to actually work right now. Do expect this feature to\r
494 improve in future versions.\r
495 \r
496 \r
497 \r
498 -- Frequently Asked Questions --\r
499 \r
500 Q) How do I run this on my PSP?\r
501 \r
502 A) Provided is an EBOOT.PBP which will run as is on a 1.0 firmware\r
503    PSP or custom firmware that can run unsigned EBOOTs. On 1.5 firmwares\r
504    you must use a kxploit tool to run it (try SeiPSPtool). On 2.0\r
505    firmwares and higher further exploits must be used - see\r
506    http://pspupdates.qj.net/ for more information. Note that I have NOT\r
507    tested this emulator on any firmware version besides 1.5, and it's\r
508    very possible that it doesn't run well, or at all on higher versions.\r
509    Therefore I strongly recommend you downgrade if possible, and use\r
510    Devhook to run games that require > 1.5 version firmwares.\r
511 \r
512    Be sure to include in the same directory as the EBOOT.PBP file the\r
513    game_config.txt file included and the gba_bios.bin file which you\r
514    must provide yourself.\r
515 \r
516    gpSP does not run on PSPs with version 2.71 or higher firmware yet,\r
517    nor does any other homebrew executable.\r
518 \r
519 \r
520 Q) What is a BIOS image file? Why do I need it to run gpSP? Other GBA\r
521    emulators don't require this...\r
522 \r
523 A) The GBA BIOS image file is a copy of a ROM on the GBA system that\r
524    has code for starting up the GBA (it shows the logo), verifying the\r
525    game, and most importantly, providing utility functions for the games\r
526    to use. It is the latter that gpSP needs the BIOS present for. It's\r
527    possible to replace all of these functions with equivilent code, but\r
528    this will take time - in the future gpSP may not require a BIOS image.\r
529 \r
530 \r
531 Q) I can't find this BIOS image.. please send it to me.\r
532 \r
533 A) Sorry, but you're on your own. I won't send you a BIOS or tell you\r
534    where to get one (unless you want to rip it from a GBA yourself, in\r
535    which case I'll just give you the same link at the top). I can't do\r
536    this because it's not legal to send it around and I don't want to\r
537    get a reputation for illegally distributing BIOS images.\r
538 \r
539 \r
540 Q) How do I know I have the right BIOS?\r
541 \r
542 A) If you have md5sum you can check if it has this hash:\r
543    a860e8c0b6d573d191e4ec7db1b1e4f6\r
544    That BIOS should work fine. I think that some others work fine too,\r
545    although I haven't confirmed this with absolute certainty. It's also\r
546    theoretically possible to use custom (and free) BIOS replacements,\r
547    but I don't know of any publically availablone ones.\r
548 \r
549    As far as I'm aware there are two BIOSes floating around, I doubt\r
550    you'll get one that isn't one of those two. There's a very easy way\r
551    to determine which one you have - just look at the very first byte in\r
552    a hex editor. The correct BIOS begins with 0x18, the buggy BIOS begins\r
553    with 0x14.\r
554 \r
555 \r
556 Q) My favorite game won't run.\r
557 \r
558 A) There probably isn't anything you can do about this, although a\r
559    change to game_config.txt might help. gpSP is still an emulator in\r
560    its infancy so the compatability is not superb. I don't have time\r
561    to test too many games so I'm releasing it as a public beta to get\r
562    a feel for some things that don't work. The next version could\r
563    perhaps fix it, or it might never run. There are always other\r
564    emulators of course, please try one.\r
565 \r
566    However, before nagging me there is one thing I recommend you try,\r
567    and that is to add the option "iwram_stack_optimize = no" for the\r
568    game in game_config.txt. See the file itself for more information\r
569    on how to do this. If this fixes your game (and it's not already\r
570    in the game_config.txt) please tell me about it.\r
571 \r
572 \r
573 Q) My favorite game is very slow.\r
574 \r
575 A) Emulating GBA takes a number of resources and getting it done well\r
576    on PSP is no simple task by any means. Some games are just going to\r
577    overwhelm the emulator completely. Of course, there is one special\r
578    case of game (a lot of early generation games fall under this\r
579    category) that can be made much faster by a simple addition to the\r
580    game_config.txt file. Wait for a new version of this file or the\r
581    next version of the emulator and the game may be improved.\r
582 \r
583    That aside, there are still numerous optimizations that can be done,\r
584    and I sure you future versions will be faster (I just can't tell you\r
585    how much)\r
586 \r
587    Also, a lot of games will be sped up considerably by adding an\r
588    idle_loop_eliminate_target line for it in game_config.txt. There\r
589    are some more obscurer options there that can improve speed too. If\r
590    the game is VERY slow there might be something wrong with its\r
591    emulation that can be improved. For instance, if you can't get a game\r
592    to run fullspeed on any frameskip you should e-mail me about it.\r
593 \r
594 \r
595 Q) Some games run fullspeed but the sound is messed up. Why?\r
596 \r
597 A) At least 9 out of 10 times it means the game isn't really running\r
598    full speed, but just that you can't notice the difference. Increasing\r
599    frameskip will almost always improve sound quality in these\r
600    situations, to a certain point (after around frameskip 3 you\r
601    probably won't be seeing many more returns if it isn't already\r
602    fullspeed). The rest of the time it means there's a bug somewhere else\r
603    in the emulator, probably in the CPU core. Chances are that all you\r
604    can do is wait for it to be fixed in a later release.\r
605 \r
606 \r
607 Q) The emulator crashed!\r
608 \r
609 A) Most games that don't run will probably take the emulator down with\r
610    it, or it could be an emulator bug completely unrelated to the game\r
611    (but unlikely). Press home and wait for the next version.\r
612 \r
613    There is some information that comes up when the game crashes. This\r
614    information may be slightly useful to me, but chances are it\r
615    usually won't be all that interesting.\r
616 \r
617    These days games are more likely to exit with a "bad crash" error.\r
618    This number is possibly useful to me, but to debug a game I'll have\r
619    to reproduce the crash anyway. When this happens it's probably due to\r
620    a bug in the CPU core that hasn't been fixed yet.\r
621 \r
622 \r
623 Q) Why won't my game save?\r
624 \r
625 A) The game might need 128KB flash turned on and might not be listed in\r
626    game_config.txt. See game_config.txt for more information regarding\r
627    this. Be sure to include game_config.txt with the EBOOT.PBP file.\r
628 \r
629    Other games might simply have bugs in the save support. For now, use\r
630    savestates as an alternative if you can't save.\r
631 \r
632 \r
633 Q) How do I change sound quality?\r
634 \r
635 A) Right now, you can't. For those wondering, sound is locked at 44.1KHz\r
636    (sounds a bit high? It is, but it's currently necessary to play\r
637    everything correctly). I don't have any plans to allow changing this\r
638    right now, because I don't think there's really much reason to be\r
639    able to (it'd be a tiny speed boost at best and I don't think SDL even\r
640    allows for anything besides this sampling rate on PSP)\r
641 \r
642 \r
643 Q) What is this emulator's name?\r
644 \r
645 A) Um.. what? It's gameplaySP, isn't it? You call it gpSP for short.\r
646    Somehow the name can't have the acronyms gbSP, gbapSP, or really\r
647    just about anything else you feel like giving it. Oh, and if you\r
648    really want to make me happy get the capitalization right too.\r
649    That's gpSP, not gPSP, GPsp.. you get the idea.\r
650 \r
651 \r
652 Q) Does gpSP run Gameboy/Gameboy Color games? Will it later?\r
653 \r
654 A) No. Even though GBA can run these games it uses separate hardware\r
655    that proper GBA games have no access to (save for the audio chip),\r
656    and thus there's no point including it in a GBA emulator (it\r
657    doesn't help run GBA games). I recommend using a GB/GBC emulator\r
658    like Rin for playing these games. It'll probably give you a lot\r
659    more options anyway. gpSP will never actually emulate GB/GBC\r
660    games. You'd may as well be waiting for it to emulate PS2 games...\r
661    (that was an analogy. gpSP won't ever emulate PS2 games. >_>)\r
662 \r
663 \r
664 Q) Other emulators use the PSP's graphical hardware to accelerate the\r
665    video emulation. Is this possible for gpSP?\r
666 \r
667 A) I'm honestly not too sure at this point. It's definitely a rather\r
668    complicated procedure, and I don't think it'll be possible to\r
669    accurately accelerate alpha blending. On the other hand, affine\r
670    transformations could perhaps receive a speed boost this way. Any\r
671    solution would have to be hybrid hardware/software, which might be\r
672    possible due to the nature of the PSP's VRAM. Maybe someone will\r
673    be willing to help me think of possibilities here?\r
674 \r
675    But don't bother of you're just going to tell me to render a list\r
676    of quads...\r
677 \r
678 \r
679 Q) Other emulators use the PSP's second CPU to offload the sound\r
680    emulation. Is this possible for gpSP?\r
681 \r
682 A) Yes, but it wouldn't improve it nearly as much as say, SNES9x TYL.\r
683    This is because most of the processing that goes into sound on a GBA\r
684    game is done in the CPU, not in dedicated audio hardware. It could\r
685    help a little, but probably not a lot. Maybe enough to be worthwhile.\r
686    It might also be possible to split the video rendering to the main\r
687    CPU and the main emulation to the secondary one, but there are a lot\r
688    of coherency issues involved.\r
689 \r
690 \r
691 Q) I heard gpSP can only load games 16MB or smaller in size. Is this\r
692    true? What about zipped games?\r
693 \r
694 A) As of version 0.8 gpSP can play 32MB ROMs. However, they must be\r
695    unzipped. The reason for this is that parts of the ROM are constantly\r
696    loaded to memory as needed, and for this to be as fast as possible the\r
697    ROM has to be present on the memory stick in raw format.\r
698 \r
699    You might be wondering, why not just have gpSP unzip the ROM to a file\r
700    then delete the file when it is done? The reason why is because this\r
701    would impose a "hidden" requirement of 32MB on the user that very\r
702    likely may not be there. Furthermore, there are only a few 32MB games\r
703    that anyone actually wants to play. If you only have one 32MB game on\r
704    your memstick then it'd actually require signifnicantly more free space\r
705    to hold both the ROM and the 32MB raw file. With 2 32MB ROMs you only\r
706    gain a around 10-25MB of free space, depending on how effective the\r
707    compression is.\r
708 \r
709 \r
710 Q) Savestates? From other emulators??\r
711 \r
712 A) See the savestates option in main menu. gpSP will probably never\r
713    support savestates from other emulators, there's just too much in the\r
714    way of emulator specific data in them.\r
715 \r
716    Savestates are currently 506,943 bytes. They would be a little smaller\r
717    without the snapshot, but I find that very useful and it wouldn't help\r
718    size immensely. Compression would help, but I wanted the size to be\r
719    constant so you knew exactly how much you could hold and to improve\r
720    save/load speed.\r
721 \r
722 \r
723 Q) What's with the zip support?\r
724 \r
725 A) I hear stories that some games work unzipped and not zipped, so you\r
726    might want to try unzipping them if it gives you problems. You also\r
727    might want to try making fresh zips with WinRAR - users have\r
728    reported some higher success rates doing this.\r
729 \r
730 \r
731 Q) What's with the config file? Should I make it read only?\r
732 \r
733 A) There was a bug in version 0.6 that caused the config file to not\r
734    get updated or get corrupted sometimes. Hopefully this is fixed now,\r
735    but if it DOES get corrupted making it read only can prevent this\r
736    from happening in the future.\r
737 \r
738 \r
739 Q) So when WILL the next version be released?\r
740 \r
741 A) Sorry, but I almost never announce release dates. Furthermore, I'll\r
742    probably be pretty hush hush on internal development, just to keep\r
743    people from nagging me about it and building too much suspense.\r
744 \r
745 \r
746 Q) I don't like this emulator. Are there other alternatives?\r
747 \r
748 A) Yes. Try PSPVBA by Zx-81 (http://zx81.dcemu.co.uk/). Overall I doubt\r
749    the compatability is significantly higher than gpSP's anymore, but\r
750    I'm sure there are some games it runs that gpSP doesn't.\r
751 \r
752 \r
753 Q) I heard there was a version of gpSP for PCs. Is that true?\r
754 \r
755 A) I developed this emulator internally on PC. It might have a speed\r
756    advantage over other PC GBA emulators, although the PSP version has\r
757    more sophisticated optimizations. Most people have fast enough\r
758    computers to run better GBA emulators for PC and gpSP lacks some\r
759    important features (screen resizing) that the PSP version kinda\r
760    hides. Even though gpSP spent a majority of its development\r
761    gestation as a PC app it was always developed with the PSP in mind,\r
762    so the PC version will probably not see the light of the day unless\r
763    I get overwhelming demand for it. It is, however, possible to\r
764    build it from the source. But I request that you don't distribute\r
765    such builds. If you happen to find one, bear in mind that I don't\r
766    offer any support for it, and as far as I'm concerned it won't\r
767    exist.\r
768 \r
769 \r
770 Q) I hear there's a version of gpSP for other platforms too, like\r
771    Dreamcast. And I hear they're slow! What gives?\r
772 \r
773    These are ports, done by other people (or maybe myself?). This is\r
774    possible because gpSP is open source and its base version is fairly\r
775    portable, but to run fast enough on anything but platforms quite a\r
776    bit faster than PSP it at least needs a CPU specific dynarec backend.\r
777 \r
778    I don't (necessarily) maintain all builds of gpSP, so you'll have to\r
779    contact the authors of these ports for more information. That\r
780    notwithstanding, I try to get as involved in other ports of gpSP as\r
781    I can.\r
782 \r
783 \r
784 Q) I want to modify gpSP. How can I do this, and am I at liberty to do\r
785    so?\r
786 \r
787 A) Yes, you are, under the terms of the GPL (see the included\r
788    COPYING.DOC). You can download the sourcecode from whereever you\r
789    downloaded this; if you can't find it please e-mail me and I'll give\r
790    you a link to it. I would vastly appreciate it if you contacted me first\r
791    before forking my project, especially if you're just looking to gain\r
792    recognition without adding much to it. It's better to keep all changes\r
793    tidy in one branch of development.\r
794 \r
795    I would like to stress this a little more seriously (hopefully those\r
796    interested are reading this). Although you are legally entitled to\r
797    release your own forks of gpSP it would be much more benficial to me,\r
798    to you, and to the users of this program if you instead tried working\r
799    with me to get your changes incorporated into the next version. I\r
800    really don't feel like competing with other builds of my source\r
801    anymore, so please do me a big favor and send me an e-mail if you want\r
802    to work with gpSP.\r
803 \r
804 \r
805 Q) How do I build gpSP?\r
806 \r
807 A) make will build it. You need to have SDL for PSP installed, as well\r
808    as the standard PSP toolchain/PSPSDK and zlib. gpSP isn't much of a\r
809    "build it yourself" program so please don't bother me much about how to\r
810    build it unless you have a good reason for wanting to do so.\r
811 \r
812 \r
813 Q) What is with the version numbers?\r
814 \r
815 A) Anything less than 1.0 means beta. Beta means that I still have major\r
816    plans for working on it, and that I don't fully back it as being\r
817    stable or reliable software. Of course, if it does hit 1.0, that doesn't\r
818    mean it'll be perfect. It just means I'll have spent a lot of cumulative\r
819    time working things out. The closer it gets to 0.9, the happier I am with\r
820    it overall.\r
821 \r
822 \r
823 Q) Donations?\r
824 \r
825 A) Very appreciated. exophase@gmail.com on PayPal. <3\r
826 \r
827 \r
828 Q) How can I contact you?\r
829 \r
830 A) exophase@gmail.com, Exophase on AIM, exophase@adelphia.net on MSN. I\r
831    welcome IMs, but if you nag me a lot you'll make me sad inside. And\r
832    don't ask me for ROMs or the GBA BIOS. I figured this was common sense\r
833    but apparently not.\r
834 \r
835 \r
836 -- Credits --\r
837 \r
838 Exophase: main developer\r
839 siberianSTAR: zip support\r
840 psp298: analog nub code\r
841 \r
842 Beta testers for 0.7:\r
843 theohsoawesome1\r
844 thisnamesucks837\r
845 blackdragonwave9\r
846 dagreatpeewee\r
847 xsgenji\r
848 \r
849 Beta testers for 0.8:\r
850 Runaway_prisoner\r
851 theohsoawesome1\r
852 tanyareimyoko\r
853 spynghotoh2020\r
854 \r
855 Beta testers for 0.9:\r
856 RunawayPrisoner (my right hand man)\r
857 Veskgar (my left hand man)\r
858 qasim\r
859 \r
860 -- Special thanks --\r
861 \r
862 Quasar84: He's helped me in so many ways with this. We both kinda learned\r
863 GBA together, he did little demos for me and I got them emulated. It was\r
864 great trying out your more advanced code for your own projects once you\r
865 got to them, it was equally rewarding to see your work and to be able to\r
866 run it at the same time. Least of all I wouldn't have been able to do any\r
867 of this without your constant support and presence. I really owe this\r
868 release to you.\r
869 \r
870 gladius: You are an amazing GBA coder. I wouldn't have been able to get\r
871 through some tough parts without your help. Its been good talking about\r
872 ideas with you.. I'm sure you're glad to see that there's finally a GBA\r
873 emulator with dynarec ;)\r
874 \r
875 \r
876 Many, many others of course, probably too many to name, and I don't want\r
877 to make anyone feel bad by putting others above them (well, except those\r
878 two, heh) so if you think you should be on here, you probably should be!\r
879 Just pretend you are for now, and maybe I'll put you here next time.\r
880 \r