u8/pandora release
[gpsp.git] / gp2x / readme_gp2x.txt
1 -- gameplaySP2X  Gameboy Advance emulator for GP2X --\r
2 \r
3 gpSP2X is a version of my (Exophase)'s emulator originally for Sony PSP.\r
4 A large amount of effort has been done to make it more optimized for the\r
5 ARM CPU present in the GP2X, however it is still very much a work in\r
6 progress.\r
7 \r
8 See readme.txt for the PSP version readme, which contains a lot of\r
9 information relevant to the GP2X version (note that some of it does\r
10 not apply however).\r
11 \r
12 \r
13 Changelog:\r
14 \r
15 0.9-2xb u6\r
16 - Fixed clock and scaling config saving.\r
17 - Fixed occasional crash on first ROM load on 1.1 firmware.\r
18 - Added LCD timing setup code, which can be controlled through\r
19   'pollux_dpc_set' environment vatiable (see gpsp.gpe wrapper script).\r
20 \r
21 0.9-2xb u5\r
22 - Added portrait drawing modes. They eliminate tearing but are slightly\r
23   slower.\r
24 - Added page scrolling in ROM browser with L/R.\r
25 - 32MB ROM support fixed.\r
26 \r
27 0.9-2xb u4 (unofficial notaz release, done on Exophase's request)\r
28 - Wiz port. No emulation related changes.\r
29 - Wiz: dropped SDL for video and hitting hardware directly (GPH SDL can't\r
30   be trusted, it doesn't do double buffering as of firmware 1.0).\r
31 - Added new optimized software scaler with interpolation.\r
32 - gpSP is now saving ROM dir on exit. Delete romdir.txt if you don't\r
33   want that.\r
34 - gpSP now comes with wARM, new kernel module+lib for ARM cache control\r
35   (replaces mmuhack).\r
36 - gpSP no longer invalidates whole icache after recompilation, might\r
37   cause minor speedup.\r
38 \r
39 0.9-2xb u3 (unofficial notaz release, released with permission):\r
40 - Removed built-in CPU/LCD/RAM-Tweaker.\r
41 - Improved usability of volume control.\r
42 - Removed PSP-specific GUI options, adjusted help text.\r
43 - Overclocking from menu now works, keep it at 200 if you don't want that\r
44   (if you want to overclock using launcher, for example).\r
45 - Fixed centering-on-first-run problem.\r
46 - 3:2 scaled option now does what it says.\r
47 \r
48 0.9-2xb u2 (unofficial notaz release):\r
49 - Replaced non-working mmuhack.o with proper one, added cache flush calls\r
50   to avoid artifacts.\r
51 \r
52 0.9-2xb u1 (unofficial notaz release):\r
53 - Fixed a problen in thread synchronization which caused deadlock after\r
54   some time.\r
55 \r
56 0.9-2xb: \r
57 -- IMPORTANT-- If you're overwriting an old version, be sure to delete the\r
58    gpsp.cfg file first, or be prepared to have a bunch of weird button\r
59    settings that would require fixing.\r
60 \r
61 - Fixed some bugs stunting compatability.\r
62 - Optimized alpha blends in renderer.\r
63 - Some more optimizations to dynarec output.\r
64 - Savestates should work better now.\r
65 - Cheat/misc menu won't crash the emulator.\r
66 - Main button config window works (not all buttons are in yet)\r
67 \r
68 0.9-2Xa: (Exophase release)\r
69 - Redid autoframeskip. Should work more reliably.\r
70 - Rewrote dynamic recompiler from x86 source (arm_emit.h, arm_stub.S).\r
71   Has some more sophisticated behavior than the last version, more is\r
72   still to come... Should notice a slight speed improvement over the\r
73   last version.\r
74 - Tweaked GUI to be a little more useable. Buttons are now mirroring the\r
75   PSP version's.\r
76 - Code unification + cleanup amongst versions.\r
77 \r
78 \r
79 v9008: (zodttd release)\r
80 - Updated the way autoframeskip works. Should be better now. Still has a max\r
81   frameskip value.\r
82 - Added a slight performance increase to the dynarec.\r
83 - Added sync() to make sure files such as savestates and in-game saves are\r
84   saved properly to the GP2X.\r
85 \r
86 v9006: (zodttd release)\r
87 - Initial public release\r
88 \r
89 \r
90 Installation:\r
91 \r
92 1. Place the "gpsp.gpe" and "game_config.txt" file in a directory on your SD\r
93    card used with the GP2X.\r
94 \r
95 2. Place your GBA BIOS in the directory from step 1. This file must be named\r
96    "gba_bios.bin" in all lowercase as shown, so rename it if needed.\r
97 \r
98    -- NOTE --\r
99 \r
100    There are two commonly available BIOSes - one is the correct one used in\r
101    production GBA's worldwide and the other is a prototype BIOS. The latter\r
102    will not cause some games to not work correctly or crash. If you attempt\r
103    to use this BIOS you will be presented with a warning before being\r
104    allowed to continue. This screen will give you a checksum of the real\r
105    BIOS image (see readme.txt for further information).\r
106 \r
107 3. Place your GBA games in the directory from step 1. These files should have\r
108    a ".gba" or ".bin" file extension. Zip compressed games should be supported\r
109    and are recognized with the ".zip" file extension. Note that 32MB ROMs will\r
110    probably not run if zipped. 16MB and smaller should be OK.\r
111 \r
112 4. Done. Run gpsp.gpe.\r
113 \r
114 \r
115 Controls:\r
116 \r
117 How to use gpSP on the GP2X:\r
118 Buttons are mapped as follows (GBA/ingame buttons can be changed in the menu):\r
119 \r
120 GP2X--------------------GBA\r
121 X           ->          A\r
122 B           ->          B\r
123 L TRIG      ->          L TRIG\r
124 R TRIG      ->          R TRIG\r
125 START       ->          START\r
126 SELECT      ->          SELECT\r
127 \r
128 GP2X--------------------------------gpSP\r
129 \r
130 -- IN-GAME --\r
131 \r
132 VOL MIDDLE (UP + DOWN)    ->        menu\r
133 PUSH STICK                ->        fps display toggle (second number is\r
134                                      frames actually drawn)\r
135 \r
136 -- IN-MENU --\r
137 B                         ->        select option\r
138 X                         ->        cancel/exit menu\r
139 A                         ->        escape (up one director level in the\r
140                                      file selector)\r
141 \r
142 When gpSP is started, you are presented with the option to overclock your\r
143 GP2X. Use the L/R TRIG to change the CPU clockspeed and press START to\r
144 continue. You may also change RAM timings here - experiment with what\r
145 works well. Note that going too high on overclocking or low on RAM\r
146 timings can cause the game to crash or the GP2X to outright freeze up.\r
147 \r
148 If you do not want to overclock, press START without using L/R.\r
149 You will now be presented with a menu to choose a game. Press the IN-MENU\r
150 "SELECT" button shown above to pick a game to load.\r
151 \r
152 If you would like to test gpSP for the GP2X with a homebrew (free public\r
153 domain) game, a game by Russ Prince works very well with gpSP. It is called\r
154 Bust-A-Move and is a remake of the classic game it's named after.\r
155 \r
156 \r
157 How to build from source:\r
158 \r
159 The makefile included in the source is geared towards the Open2x toolchain.\r
160 If you use Open2x and installed it in the way recommended then it should\r
161 work okay, assuming you also have up to date HW-SDL (and have\r
162 arm-linux-sdl-config installed in the right place). The makefile is in the\r
163 gp2x directory, so go there first then just type make to build gpsp.gpe.\r
164 Might need a little tweaking if your setup is different. If you need help\r
165 you can ask me, but I'll probably nag you about why you want to build it in\r
166 the first place.\r
167 \r
168 \r
169 GP2X version FAQ:\r
170 \r
171 Q) Help! This game doesn't work. Am I using a bad version of the ROM?\r
172 \r
173 A) First, make sure you're using the correct BIOS version. If you aren't\r
174    gpSP should tell you. Other than that, there are some games that are\r
175    known to not work now (and will probably work later), and perhaps\r
176    many more games that I don't know about that don't work. I haven't\r
177    launched a full scale compatability test at this version, so it might\r
178    take a while before the compatability levels are high.\r
179 \r
180 \r
181 Q) Why is this version slower than the PSP version?\r
182 \r
183 A) gpSP is still a work in progress. It might be possible to obtain more\r
184    speed from both this version and the PSP one too (and others in the\r
185    future). With that in mind, know that even a very agressively overclocked\r
186    GP2X is still less powerful than a PSP, generally speaking. Still, I\r
187    have a lot of ideas. It's unlikely that the GP2X version will ever be as\r
188    fast/faster than the PSP version for anyone but anything's possible.\r
189 \r
190 \r
191 Q) How high does my GP2X have to overclock to enjoy gpSP?\r
192 \r
193 A) That depends on you. Higher overclocking will mean less frames skipped\r
194    on autoframeskip, or less frameskip needed if on manual. Or it can\r
195    make the difference between whether or not virtual 60fps can be reached.\r
196    For some games no GP2X in the world will be able to run them fullspeed,\r
197    with any amount of frameskip. A few might run well with no overclocking\r
198    and a generous level of frameskip (probably manual). If you don't care\r
199    about battery life (or you're plugged into an outlet) you should push\r
200    it as high as you can while still maintaining stability, because\r
201    chances are high that whatever you play will benefit from it. Right now\r
202    you'll probably want 260MHz if you can achieve it, but with a lot of\r
203    luck this number will lower slightly in the future (and is just a vague\r
204    ballpark figure anyway). I don't want to scare anyone off from using the\r
205    emulator, you should give it a try and see how it plays for you\r
206    regardless of how high you can overclock. Just note that this is far\r
207    from a locked smooth experience for everyone on every game.\r
208 \r
209 \r
210 Q) GBA has an ARM processor, GP2X has an ARM processor. GP2X is more\r
211    powerful than GBA. This emulator should run great without overclocking,\r
212    so therefore you're doing it wrong.\r
213 \r
214 A) That's not a question, but I'll field it anyway. Two things: first,\r
215    "virtualization", or running the GBA code "natively" on the GP2X is\r
216    probably not possible, at least not with the way I want to do things.\r
217    For reasons why go read my blog (see below). So yes, you actually\r
218    do need more than 16.7MHz of ARM9 power to emulate the GBA's CPU.\r
219    Second: there is a whole lot of work behind emulating the pretty 2D\r
220    graphics on the GBA, something it can do in hardware a lot better than\r
221    this platform can.\r
222    End result: GBA emulation on GP2X isn't as easy as you think it is.\r
223 \r
224 \r
225 Q) What are you working on now? When will you release the next version?\r
226 \r
227 A) See the gpSP development blog:\r
228 \r
229    http://gpsp-dev.blogspot.com/\r
230 \r
231    Note that I don't give release dates, ever, unless I'm right on the verge\r
232    of releasing. Be grateful that I've decided to be much more open about\r
233    the development of the emulator now.\r
234 \r
235 \r
236 Q) Thanks to your blog I heard that you made some improvement. Can I have\r
237    a copy of the new code?\r
238 \r
239 A) No. Builds in transition often have a lot of problems, and I like for\r
240    releases to be relatively substantial. I can probably be bribed out of\r
241    them with donations though. :P\r
242 \r
243 \r
244 Q) Why do the menu suck so much? Why do half the options not work or not\r
245    make any sense?\r
246 \r
247 A) Sorry, the menu still hasn't been modified very much to fit the GP2X\r
248    version instead of the PSP version.. hopefully this will improve in the\r
249    future.\r
250 \r
251 \r
252 Q) Who's in charge of the GP2X version anyway?\r
253 \r
254 A) Originally, zodttd was. I, Exophase, have basically usurped control of it\r
255    now to encourage zodttd to work more on his PS1 emulator (that and I'm\r
256    possessive of gpSP and get nervous when people work on it too heavily).\r
257    zodttd will most likely still be around to work on things though.\r
258 \r
259 \r
260 Q) I'm a super nice person and would like to donate some of my hard earned\r
261    money to this one-off GBA emulator. Where do I send my money to?\r
262 \r
263 A) Exophase: exophase@gmail.com on PayPal\r
264    zodttd: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=heirloomer\r
265     %40pobox%2ecom&item_number=1&no_shipping=1&no_note=1&tax=0&cy_code=USD&bn=\r
266     PP%2dDonationsBF&charset=UTF%2d8\r
267     ^ Click there for donating on PayPal (remove whitespace/linebreaks).\r
268 \r
269    GP2X people have already donated a lot more to me than PSP people have,\r
270    even though there's an order of magnitude or two less users. And they've\r
271    donated far more to zodttd than they have to me. So I'm not going to ask\r
272    people to donate..\r
273 \r
274    However I won't lie: donating ups the chances of me actually working on the\r
275    next version (for which I have a lot of ideas, but not necessarily time to\r
276    dedicate to.. that time might need more incentive to be allotted from other\r
277    things). This could change depending on my employment situation, but right\r
278    now I feel guilty doing anything that doesn't help guarantee that I'll be\r
279    able to buy food a year from now.\r
280 \r
281 \r
282 Q) Tell me all of your personal information.\r
283 \r
284 A) Again not a question, but why not. I'm Exophase, real name: Gilead Kutnick,\r
285    male, 23 years old, current residence Bloomington, IN; straight/single/not\r
286    actively looking, almost have an MS in Computer Science (do have a BS\r
287    underneath it), likes PSP more than GP2X, will not write a Nintendo DS\r
288    emulator for either, am currently looking for a job for after I graduate.\r
289 \r
290 \r
291 Q) You said you're looking for a job.\r
292 \r
293 A) Yes. If you have one or know someone who needs a low level oriented\r
294    programmer then I'm up for grabs. And this is my resume:\r
295    http://exophase.devzero.co.uk/resume.pdf\r
296 \r
297 \r
298 Credits:\r
299 \r
300 Original codebase: Exophase (exophase@gmail.com)\r
301 Foundation gp2x code: zodttd\r
302 GP2X dynarec/stubs + current code maintainance: Exophase\r
303 \r