renderers (interlace and stuff)
[picodrive.git] / platform / uiq2 / _out / readme.txt
1 \r
2 About\r
3 -----\r
4 \r
5 PicodriveN is another port of PicoDrive, Dave's Megadrive / Genesis\r
6 emulator for Pocket PC. This version is based on PicoDrive 0.030 and is\r
7 made for Symbian UIQ devices. It is alternative version to another port by\r
8 AnotherGuest / Someone and is not based on it (so it has a little\r
9 different name). It also has full sound support (starting\r
10 from version 0.70) .\r
11 \r
12 \r
13 Features\r
14 --------\r
15 \r
16 * Good compatibility (> 90%)\r
17 * Improved Cyclone 68000 core.\r
18 * Zipped ROMs and savestates.\r
19 * SRAM support, including serial SRAM.\r
20 * Game screen rotation with many render modes (like 'centered' and 'fit').\r
21 * Selectable frameskip.\r
22 * Configurable keys and touchpad.\r
23 * Flip-closed mode for SE phones.\r
24 * Full sound support.\r
25 \r
26 \r
27 Problems / limitations\r
28 ----------------------\r
29 \r
30 * 32x, Sega CD, SVP are not emulated.\r
31 * Various VDP quirks (window bug, scroll size 2, etc.) are not emulated,\r
32   as very few games use this.\r
33 * Some games don't work or have glitches because of inaccurate sync.\r
34 \r
35 \r
36 Configuration\r
37 -------------\r
38 \r
39 1. Keys:\r
40 \r
41 If it looks confusing to you, check this tutorial first:\r
42 http://notaz.atspace.com/pico_tut/\r
43 \r
44 There are no default settings.\r
45 When you start key configuration mode, black screen with dark-red squares will\r
46 appear. Also there will be little 'control' on the right with the function\r
47 name in it, and arrows on the corners of it. You can tap on these corners to\r
48 select a function. You can also tap on these squares to bind that function to\r
49 them. This way you can associate touchpad areas with game-controls or functions.\r
50 I also made a small square in every corner of the screen to be used as a virtual\r
51 button for some function, like save state. You can bind it as you like. To\r
52 bind phone buttons, simply select the function you need, and press a button\r
53 you want. To unbind any key or touchpad area, simply push or tap it again.\r
54 To configure flip-closed mode, enter configuration mode and close flip.\r
55 \r
56 When finished, select 'done' and press any key. You can also hold 'Power'\r
57 button for a while to exit (seems to work on PXXX only).\r
58 \r
59 You need to bind 'pause emu' function to be able exit game when ROM is loaded.\r
60 You can also exit game by holding 'power' button (possibly 'end' for motorola\r
61 users (?)).\r
62 \r
63 2. Main Settings:\r
64 \r
65 Here you can set the orientation of screen and the drawing mode. The "fit"\r
66 option will scale the image so it fully fits in the screen, but some detail\r
67 will be lost. "center" displays the game at the center of the screen, but\r
68 non-fitting parts are not visible then (better for RPG games with lots of\r
69 text, which becomes unreadable in 'fit' mode). "fit2" was meant for Pxxx FC\r
70 gaming and will always use 208x146 for P800 and 208x208 for all other phones.\r
71 \r
72 "Fast renderer" enables faster rendering method, but it works only with some\r
73 games (some other have serious glitches or even hang).\r
74 \r
75 "Accurate timing" is needed for some games to run (like Red Zone). It should\r
76 be kept off for all other games, because it slows emulation down. Some games\r
77 also need this option for proper sound, so enable this if game has any\r
78 glitches.\r
79 \r
80 "Accurate sprites" fixes sprite priority problems, for example if game\r
81 character is in front of or behind some object it should not be, this option\r
82 should fix it. This option does not work in "Fast renderer" mode.\r
83 \r
84 "Show FPS" shows game frames per second in format XX/YY, where XX is the\r
85 number of frames shown per previous second, and YY is the number of frames\r
86 emulated, but not necessarily shown. By calculating YY-XX you get the number\r
87 of skipped frames per second.\r
88 \r
89 3. Sound settings:\r
90 \r
91 Sound emulation is very picky on CPU power (in most cases sound alone uses\r
92 more CPU power than everything else altogether), but it is still possible to\r
93 play some games. When using sound, the recommended display modes are "fit 0"\r
94 and "fit 180", because these are the fastest ones. Also try "Alternative\r
95 renderer", but it might cause graphical glitches. You must use auto frameskip\r
96 when using sound, or else you will get stuttering sound. Also, it is\r
97 recommended to exit all other non-vital apps (you can use SMan for this),\r
98 disable bluetooth and any other devices your phone may have. I also noticed\r
99 that simply connecting the phone battery charger strangely slows everything\r
100 down.\r
101 \r
102 "Enable sound" tries to enable sound output on your device, but that alone is\r
103 not enough to get sound. You need to enable the sound chips below:\r
104 "Z80" is secondary CPU in genesis and is mostly used to control the other 2\r
105 sound chips. So if you disable Z80, sound will be lost in most games, with\r
106 some exceptions like Sonic1. It is possible to use Z80 for other things,\r
107 some games do that and Z80 must be enabled to run them at all.\r
108 "YM2612" is a fairly complex Frequency Modulation (FM) sound synthesis chip.\r
109 It was the main sound output device in genesis and is horrible CPU hog when\r
110 is tried to be emulated in software. Disabling it gives large speed\r
111 improvement, but most of the sound is lost.\r
112 "SN76496" is programmable sound generator (PSG) chip, used for various sound\r
113 effects and music elements.\r
114 The lowest setting is audio quality setting, which should be left set to\r
115 "8000Hz mono", because other choces slow everything down terribly and\r
116 are left for testing and possibly for use in other ports to faster future\r
117 devices with faster CPUs.\r
118 \r
119 Note: if you change sound settings AFTER loading a ROM, you may need to reset\r
120 game to get sound. This is because most games initialize sound chips on\r
121 startup, and this data is lost when sound chips are being enabled/disabled.\r
122 \r
123 4. Misc:\r
124 \r
125 "6 button pad" will enable 6 button gamepad emulation and will add additional\r
126 X, Y, Z and MODE actions to key configuration.\r
127 Note: if you enable this, games may detect that and use different button\r
128 configuration, for example A ("high punch") will change to "low punch" in\r
129 Mortal Kombat and you will need to bind X for "high punch".\r
130 \r
131 "gzip save states" enables gzip (similar to ordinary zip, but a little\r
132 different) compression on your save states to save space. The compression\r
133 ratio is 50-90%, so it's worth to enable this.\r
134 \r
135 "Use SRAM saves" option enables emulation of batery-backed save RAM some game\r
136 cartridges had. RPG games used it alot, but there were some others too, like\r
137 Sonic 3. If this is enabled, <ROMname>.srm files are generated when you exit\r
138 the emulator or load another ROM. Format is compatible with other popular\r
139 emulators (like Gens and Fusion).\r
140 \r
141 \r
142 5. Frameskip:\r
143 \r
144 "Auto"  option tries to run the game in it's original speed by skipping next\r
145         frame if the previous was rendered too slow.\r
146 "0"     displays every frame, thus game runs very slow.\r
147 "1"     skips every other frame. Use this for a game which is smoother, but a bit\r
148         too slow (actually depends on display mode you use).\r
149 "2"     also makes the game smoother, but it will be too fast in most areas.\r
150 "4","8" is way too fast and is useful for skiping intros, etc.\r
151 \r
152 \r
153 \r
154 Credits\r
155 -------\r
156 \r
157 This emulator uses code from these people/projects:\r
158 \r
159 Dave\r
160 Cyclone 68000 core, Pico emulation library\r
161 Homepage: http://www.finalburn.com/\r
162 E-mail: david(atsymbol)finalburn.com\r
163 \r
164 notaz\r
165 UIQ port, Cyclone 68000 hacks, some additional coding (see changelog).\r
166 Homepage: http://notaz.atspace.com/\r
167 E-mail: notasas(atsymbol)gmail.com\r
168 \r
169 Reesy & FluBBa\r
170 DrZ80, the Z80 emulator written in ARM assembly.\r
171 Homepage: http://reesy.gp32x.de/\r
172 E-mail: drsms_reesy(atsymbol)yahoo.co.uk\r
173 \r
174 Tatsuyuki Satoh, Jarek Burczynski, MultiArcadeMachineEmulator development\r
175 software implementation of Yamaha FM sound generator\r
176 \r
177 MultiArcadeMachineEmulator (MAME) development\r
178 Texas Instruments SN76489 / SN76496 programmable tone /noise generator\r
179 Homepage: http://www.mame.net/\r
180 \r
181 \r
182 Additional thanks\r
183 -----------------\r
184 \r
185 * Peter van Sebille for ECompXL and his various open-source Symbian projects\r
186   to learn from.\r
187 * Steve Fischer for his open-source Motorola projects.\r
188 * Charles MacDonald (http://cgfm2.emuviews.com/) for old but still very useful\r
189   info about genesis hardware.\r
190 * Stéphane Dallongeville for creating Gens and making it open-source.\r
191 * Steve Snake for all that he has done for Genesis emulation scene.\r
192 * Bart Trzynadlowski for his SSFII and 68000 docs.\r
193 * Haze for his research (http://haze.mameworld.info).\r
194 * The development team behind "Symbian GCC Improvement Project"\r
195   (http://www.inf.u-szeged.hu/symbian-gcc/) for their updated compile tools.\r
196 * Mark and Jean-loup for zlib library.\r
197 * Reesy for also finding some Cyclone bugs.\r
198 * Inder for the icons.\r
199 \r
200 \r
201 Changelog\r
202 ---------\r
203 0.94\r
204   * Improved interrupt timing, Mazin Saga and Burning Force now works.\r
205   * Rewritten renderer code to better suit gp2x, should be faster on other\r
206     ports too.\r
207   + Added support for banking used by 12-in-1 and 4-in-1 ROMs (thanks Haze).\r
208   + Added some protection device faking, used by some unlicensed games like\r
209     Super Bubble Bobble, King of Fighters, Elf Wor, ...\r
210   + Added primitive Virtua Racing SVP faking, so menus can be seen now.\r
211 \r
212 0.93\r
213   * Fixed a problem with P900/P910 key configuration in FC mode.\r
214   * Improved shadow/hilight mode emulation. Still not perfect, but should be\r
215     enough for most games.\r
216   + Save state slots added.\r
217   + Region selector added.\r
218 \r
219 0.92\r
220   VDP changes:\r
221   * VDP emulation is now more accurate (fixes flickering in Chase HQ II,\r
222     Super Hang-On and some other problems in other games).\r
223   * HV counter emulation is now much more accurate. Fixes the Asterix games,\r
224     line in Road Rash 3, etc.\r
225   * Minnor sprite and layer scroll masking bugs fixed.\r
226   + Added partial interlace mode renderer (Sonic 2 vs mode)\r
227   * Fixed a crash in both renderers when certain size window layers were used.\r
228   + Added emulation of shadow/hilight operator sprites. Other shadow/hilight\r
229     effects are still unemulated.\r
230   + Sprite emulation is more accurate, sprite limit is emulated.\r
231   + Added "accurate sprites" option, which always draws sprites in correct\r
232     order and emulates sprite collision bit, but is significantly slower.\r
233 \r
234   Emulation changes:\r
235   * Improved interrupt handling, added deferred interrupt emulation\r
236     (Lemmings, etc).\r
237   + Added serial EEPROM SRAM support (Wonder Boy in Monster World,\r
238     Megaman - The Wily Wars and many EA sports games like NBA Jam).\r
239   + Implemented ROM banking for Super Street Fighter II - The New Challengers\r
240   * Updated to the latest version of DrZ80 core, integrated memory handlers\r
241     in it for better performance. A noticeable performance increase, but save\r
242         states may not work from the previous version (you can only use them with\r
243         sound disabled in that case).\r
244   + SRAM word read handler was using incorrect byte order, fixed.\r
245 \r
246   Changes in Cyclone 0.0086:\r
247   + Added missing CHK opcode handler (used by SeaQuest DSV).\r
248   + Added missing TAS opcode handler (Gargoyles,Bubba N Stix,...). As in real genesis,\r
249     memory write-back phase is ignored (but can be enabled in config.h if needed).\r
250   + Added missing NBCD and TRAPV opcode handlers.\r
251   + Added missing addressing mode for CMP/EOR.\r
252   + Added some minor optimizations.\r
253   - Removed 216 handlers for 2927 opcodes which were generated for invalid addressing modes.\r
254   + Fixed flags for ASL, NEG, NEGX, DIVU, ADDX, SUBX, ROXR.\r
255   + Bugs fixed in MOVEP, LINK, ADDQ, DIVS handlers.\r
256   * Undocumented flags for CHK, ABCD, SBCD and NBCD are now emulated the same way as in Musashi.\r
257   + Added Uninitialized Interrupt emulation.\r
258   + Altered timing for about half of opcodes to match Musashi's.\r
259 \r
260 0.80\r
261   * Nearly all VDP code was rewritten in ARM asm. Gives ~10-25% performance\r
262     increase (depends on game).\r
263   * Optimized 32-column renderer not to render tiles offscreen, games which\r
264     use 32-column display (like Shining Force) run ~50% faster.\r
265   + Added new "Alternative renderer", which gives another ~30-45% performance\r
266     increase (in addition to mentioned above), but works only with some games,\r
267     because it is missing some features (it uses tile-based renderering\r
268     instead of default line-based and disables H-ints).\r
269   + Added "fit2" display mode for all FC gamers. It always uses 208x146 for\r
270     P800 and 208x208 for all other phones.\r
271   + Added volume control for Motorolas (experimental).\r
272 \r
273   VDP changes:\r
274   + Added support for vertical window (used by Vapor Trail, Mercs, GRIND\r
275     Stormer and others).\r
276   + Added sprite masking (hiding), adds some speed.\r
277   + Added preliminary H counter emulation. Comix Zone and Sonic 3D Blast\r
278     special stage are now playable.\r
279   + Added column based vertical scrolling (Gunstar Heroes battleship level,\r
280     Sonic and Knuckles lava boss, etc).\r
281 \r
282   Emulation changes:\r
283   + Re-added and improved Z80 faking when Z80 is disabled. Many games now can\r
284     be played without enabling Z80 (Lost Vikings, Syndicate, etc), but some\r
285     still need it (International Superstar Soccer Deluxe).\r
286   * Improved ym2612 timers, Outrun music plays at correct speed, voices in\r
287     Earthworm Jim play better, more games play sound.\r
288   * I/O registers now remember their values (needed for Pirates! Gold)\r
289   + Added support for 6 button pad.\r
290 \r
291   Changes in Cyclone 0.0083wip:\r
292   + Added missing CHK opcode (used by SeaQuest DSV).\r
293   + Added missing TAS opcode (Gargoyles). As in real genesis, write-back phase\r
294     is ignored (but is enabled for other systems).\r
295 \r
296   Backported stuff from Snes9x:\r
297   * Fixed Pxxx jog up/down which were not working in game.\r
298   + Added an option to gzip save states to save space.\r
299   + The emulator now pauses whenever it is loosing focus, so it will now pause\r
300     when alarm/ponecall/battery low/... windows come up.\r
301   - Removed 'pause on phonecall' feature, as it is no longer needed.\r
302   + Video fix for asian A1000s.\r
303 \r
304 0.70\r
305   * Started using tools from "Symbian GCC Improvement Project", which give\r
306     considerable speed increase (~4fps in "center 90" mode).\r
307   * Rewrote some drawing routines in ARM assembly (gives ~6 more fps in\r
308     "center 90" mode).\r
309   * Minor improvement to 0 and 180 "fit" modes. Now they look slightly better\r
310     and are faster.\r
311   * Minor stability improvements (emulator is less likely to crash).\r
312   + Added some background for OSD text for better readability.\r
313   + Added Pal/NTSC detection. This is needed for proper sound speed.\r
314   + Implemented Reesy's DrZ80 Z80 emu. Made some changes to it with hope to make\r
315     it faster.\r
316   + Implemented ym2612 emu from the MAME project. Runs well but sometimes sounds\r
317     a bit weird. Could be a little faster, so made some changes too.\r
318   + Implemented SN76489 emu from the MAME project.\r
319   + Added two separate sound output methods (mediaserver and cmaudiofb) with\r
320     autodetection (needs testing).\r
321   * Fixed VDP DMA fill emulation (as described in Charles MacDonald's docs),\r
322     fixes Contra and some other games.\r
323 \r
324 0.301\r
325   Launcher:\r
326   * Launcher now starts emulation process from current directory,\r
327     not from hardcoded paths.\r
328   * Improved 'pause on call' feature, should hopefully work with Motorola phones.\r
329 \r
330 0.30\r
331   Initial release.\r
332 \r
333 \r
334 Disclaimer\r
335 ----------\r
336 \r
337 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" \r
338 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE \r
339 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE \r
340 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE \r
341 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR \r
342 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \r
343 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \r
344 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN \r
345 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \r
346 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \r
347 POSSIBILITY OF SUCH DAMAGE. \r