--- /dev/null
+#ifdef GP2X\r
+For help / comments / questions visit GP32X boards at:\r
+http://www.gp32x.com/board/\r
+\r
+#endif\r
+\r
+About\r
+-----\r
+\r
+This is yet another Megadrive / Genesis / Sega CD / Mega CD emulator, which\r
+was written having ARM-based handheld devices in mind (such as PDAs,\r
+smartphones and handheld consoles like GP2X and Gizmondo of course).\r
+The critical parts (renderer, 68K and Z80 cpu interpreters) and some other\r
+random code is written in ARM asm, other code is C. The base code originates\r
+from Dave's (fdave, finalburn) PicoDrive 0.30 for Pocket PC. The Sega/Mega CD\r
+code is roughly based on Stephane Dallongeville's Gens.\r
+\r
+\r
+How to make it run\r
+------------------\r
+\r
+#ifdef GP2X\r
+Copy PicoDrive.gpe, pico940.bin and mmuhack.o to any place in your filesystem\r
+(all 3 files must be in the same directory) and run PicoDrive.gpe.\r
+Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.\r
+\r
+#endif\r
+#ifdef GIZ\r
+First make sure you have homebrew-enabled Service Pack installed. Then copy\r
+PicoDrive.exe and KGSDK.dll to any place in your filesystem (both files must\r
+be in the same directory) and run PicoDrive.exe using the launcher of your choice\r
+(some of them might require renaming PicoDrive.exe to Autorun.exe, placing it in\r
+the root of SD, etc). Then load a ROM and enjoy! ROMs can be placed anywhere, can\r
+be in .smd or .bin format and can be zipped (one ROM per zip).\r
+\r
+#endif\r
+If you have any problems (game does not boot, sound is glitchy, broken graphics),\r
+make sure you enable "Accurate timing", "Emulate Z80" and use "16bit accurate\r
+renderer". This way you will get the best compatibility this emulator can\r
+provide.\r
+\r
+\r
+How to run Sega/Mega CD games\r
+-----------------------------\r
+\r
+To play any game, you need BIOS files. These files must be copied to the same\r
+directory as PicoDrive. Files can be named as follows:\r
+\r
+US: us_scd1_9210.bin us_scd2_9306.bin SegaCDBIOS9303.bin\r
+EU: eu_mcd1_9210.bin eu_mcd2_9303.bin eu_mcd2_9306.bin\r
+JP: jp_mcd1_9112.bin jp_mcd1_9111.bin\r
+these files can also be zipped.\r
+\r
+The game must be dumped to ISO format, but BIN can be used too. If you want\r
+CD music, you must use ISO+mp3 files. Audio from BIN files won't be read at\r
+all. Also BIN files are usually larger, so it's better to use ISO. ISO+mp3\r
+files can be named similarly as for other emus.\r
+Here are some examples:\r
+\r
+SonicCD.iso data track\r
+SonicCD_02.mp3 audio track 1 (CD track 2)\r
+SonicCD_03.mp3\r
+...\r
+\r
+Sonic the Hedgehog CD (US) - Track 01.iso\r
+Sonic the Hedgehog CD (US) - Track 02.mp3\r
+Sonic the Hedgehog CD (US) - Track 03.mp3\r
+...\r
+\r
+ISO files can also be zipped (but not mp3 files, as they are already\r
+compressed). Note that this can cause very long loading times, which may\r
+take up to several minutes. File naming is similar as with uncompressed ISOs.\r
+Example:\r
+\r
+SonicCD.zip data track\r
+SonicCD_02.mp3 audio track 1 (CD track 2)\r
+SonicCD_03.mp3\r
+...\r
+\r
+\r
+Other important stuff\r
+---------------------\r
+\r
+* If your Genesis/MD game hangs or has glitches, this is most likely because\r
+ "Accurate timing" option is not enabled, or 8bit fast renderer is used\r
+ (try the 16 bit one), or Z80 is disabled in "advanced options".\r
+* Sega/Mega CD: If the game hangs after Sega logo, you may need to enable\r
+ "better sync" and/or "Scale/Rot. fx" options, found in "Sega/Mega CD options"\r
+ submenu, and then reset the game. Some other games may also require\r
+ "CDDA audio" and "PCM audio" to work.\r
+#ifdef GP2X\r
+* Sega/Mega CD: if FMV game performance is poor, try adjusting\r
+ "ReadAhead buffer" to something like 2048K.\r
+* When you use both GP2X CPUs, keep in mind that you can't overclock as high as\r
+ when using ARM920 only. For example my GP2X when run singlecore can reach\r
+ 280MHz, but with both cores it's about 250MHz. When overclocked too much,\r
+ it may start hanging and producing random noise, or causing ARM940 crashes\r
+ ("940 crashed" message displayed).\r
+#endif\r
+* PicoDrive is not a mp3 player, so all mp3s MUST be encoded at 44.1kHz stereo.\r
+ Badly encoded mp3s can cause various kind of problems, like noises, incorrect\r
+ playback speeds, not repeating music or even prevent game from starting.\r
+* Use lower bitrate for better performance (96 or 128kbps CBRs recommended).\r
+#ifdef GP2X\r
+* Due to internal implementation mp3s must not be larger that 12MB\r
+ (12582912 bytes). Larger mp3s will not be fully loaded.\r
+* RAM timings option is good for dualcore operation (it is disabled by\r
+ default because it doesn't work on every GP2X, so enable it in advanced\r
+ options).\r
+#endif\r
+\r
+\r
+Configuration\r
+-------------\r
+\r
+@@0. "Renderer"\r
+#ifdef GP2X\r
+8bit fast:\r
+This enables alternative heavily optimized tile-based renderer, which renders\r
+pixels not line-by-line (this is what accurate renderers do), but in 8x8 tiles,\r
+which is much faster. But because of the way it works it can't render any\r
+mid-frame image changes (raster effects), so it is useful only with some games.\r
+\r
+Other two are accurate line-based renderers. The 8bit is faster but does not\r
+run well with some games like Street Racer.\r
+#endif\r
+#ifdef GIZ\r
+This option allows to switch between 16bit and 8bit renderers. The 8bit one is\r
+a bit faster for some games, but not much, because colors still need to be\r
+converted to 16bit, as this is what Gizmondo requires. It also introduces\r
+graphics problems for some games, so it's best to use 16bit one.\r
+#endif\r
+\r
+#ifdef GIZ\r
+@@0. "Interlaced rendering"\r
+This option was designed to work around slow framebuffer access (the Gizmondo's\r
+main bottleneck) by drawing every other line (odd numbered lines during odd\r
+numbered frames and even numbered lines during even frames). This improves\r
+performance greatly, but introduces artifacts for fast scrolling games.\r
+\r
+#endif\r
+#ifdef GP2X\r
+@@0. "Scaling"\r
+"hw" means GP2X hardware scaler, which causes no performance loss, but scaled\r
+image looks a bit blocky. "sw" means software scaling, which uses pixel\r
+averaging and may look a bit nicer, but blurry. Horizontal scaling is only for\r
+games which use so called "32 column mode" (256x224 or 256x240), and scales\r
+image width to 320 pixels. Vertical scales height to 240 for games which use\r
+height 224 (most of them).\r
+#endif\r
+#ifdef GIZ\r
+@@0. "Scale low res mode"\r
+The Genesis/Megadrive had several graphics modes, some of which were only 256\r
+pixels wide. This option scales their width to 320 by using simple\r
+pixel averaging scaling. Works only when 16bit renderer is enabled.\r
+#endif\r
+\r
+@@0. "Accurate timing"\r
+This adds some more emulation precision, but slows the emulation down. Without\r
+this option some games do not boot (Red Zone for example), others have sound\r
+problems. This options has no effect for Sega/Mega CD emulation.\r
+\r
+@@0. "Accurate sprites"\r
+This option improves emulation of sprite priorities, it also enables emulation\r
+of sprite collision bit. If you see one sprite being drawn incorrectly above\r
+the other (often seen in Sonic 3D Blast), you can enable this to fix the problem.\r
+This only works with the accurate renderers (see first option).\r
+\r
+@@0. "Show FPS"\r
+Self-explanatory. Format is XX/YY, where XX is the number of rendered frames and\r
+YY is the number of emulated frames per second.\r
+\r
+@@0. "Frameskip"\r
+How many frames to skip rendering before displaying another.\r
+"Auto" is recommended.\r
+\r
+@@0. "Enable sound"\r
+Does what it says. You must enable at least YM2612 or SN76496 (in advanced options,\r
+see below) for this to make sense (already done by default).\r
+\r
+@@0. "Sound Quality"\r
+Sound rate and stereo mode. Mono is not available in Sega/Mega CD mode.\r
+#ifdef GP2X\r
+If you want 44100Hz sound, it is recommended to enable the second core (next option).\r
+\r
+@@0. "Use ARM940 core for sound"\r
+This option causes PicoDrive to use ARM940T core (GP2X's second CPU) for sound \r
+(i.e. to generate YM2612 samples) to improve performance noticeably.\r
+#endif\r
+\r
+@@0. "6 button pad"\r
+If you enable this, games will think that 6 button gamepad is connected. If you\r
+go and reconfigure your keys, you will be able to bind X,Y,Z and mode actions.\r
+\r
+@@0. "Region"\r
+This option lets you force the game to think it is running on machine from the\r
+specified region, or just to set autodetection order. Also affects Sega/Mega CD.\r
+\r
+@@0. "Use SRAM/BRAM savestates"\r
+This will automatically read/write SRAM (or BRAM for Sega/Mega CD) savestates for\r
+games which are using them. SRAM is saved whenever you pause your game or exit the\r
+emulator.\r
+\r
+@@0. "Confirm savestate"\r
+Allows to enable confirmation on savestate saving (to prevent savestate overwrites),\r
+on loading (to prevent destroying current game progress), and on both or none, when\r
+using shortcut buttons (not menu) for saving/loading.\r
+\r
+@@0. "Save slot"\r
+This is a slot number to use for savestates. This can also be configured to be\r
+changed with a button (see "key configuration").\r
+\r
+#ifdef GP2X\r
+@@0. "GP2X CPU clocks"\r
+Here you can change clocks of both GP2X's CPUs. Larger values increase performance.\r
+There is no separate option for the second CPU because both CPUs use the same clock\r
+source. Setting this option to 200 will cause PicoDrive NOT to change GP2X's clocks\r
+at all (this is if you use external program to set clock).\r
+\r
+#endif\r
+@@0. "[Sega/Mega CD options]"\r
+Enters Sega/Mega CD options menu (see below).\r
+\r
+@@0. "[advanced options]"\r
+Enters advanced options menu (see below).\r
+\r
+@@0. "Save cfg as default"\r
+If you save your config here it will be loaded on next ROM load, but only if there\r
+is no game specific config saved (which will be loaded in that case).\r
+You can press left/right to switch to a different config profile.\r
+\r
+@@0. "Save cfg for current game only"\r
+Whenever you load current ROM again these settings will be loaded\r
+#ifdef GP2X\r
+(squidgehack and RAM settings will not take effect until emulator is restarted).\r
+#endif\r
+\r
+\r
+Advanced configuration\r
+----------------------\r
+\r
+Enter [advanced options] in config menu to see these options.\r
+\r
+#ifdef GP2X\r
+@@1. "Gamma correction"\r
+Alters image gamma through GP2X hardware. Larger values make image to look brighter,\r
+lower - darker (default is 1.0).\r
+\r
+@@1. "A_SN's gamma curve"\r
+If this is enabled, different gamma adjustment method will be used (suggested by A_SN\r
+from gp32x boards). Basically it makes difference for dark and bright colors.\r
+\r
+@@1. "Perfect vsync"\r
+This one adjusts the LCD refresh rate to better match game's refresh rate and starts\r
+synchronizing rendering with it. Should make scrolling smoother and eliminate tearing.\r
+\r
+#endif\r
+@@1. "Emulate Z80"\r
+Enables emulation of Z80 chip, which was mostly used to drive the other sound chips.\r
+Some games do complex sync with it, so you must enable it even if you don't use\r
+sound to be able to play them.\r
+\r
+@@1. "Emulate YM2612 (FM)"\r
+This enables emulation of six-channel FM sound synthesizer chip, which was used to\r
+produce sound effects and music.\r
+\r
+@@1. "Emulate SN76496 (PSG)"\r
+This enables emulation of additional sound chip for additional effects.\r
+\r
+Note: if you change sound settings AFTER loading a ROM, you may need to reset\r
+game to get sound. This is because most games initialize sound chips on\r
+startup, and this data is lost when sound chips are being enabled/disabled.\r
+\r
+#ifdef GIZ\r
+@@1. "Wait for V-sync"\r
+Waits for vertical sync before drawing. This option doesn't eliminate tearing\r
+problems, because full framebuffer update takes much more time then the blanking\r
+period lasts on Gizmondo..\r
+\r
+#endif\r
+@@1. "gzip savestates"\r
+This will always apply gzip compression on your savestates, allowing you to\r
+save some space and load/save time.\r
+\r
+@@1. "Don't save last used ROM"\r
+This will disable writing last used ROM to config on exit (what might cause SD\r
+card corruption according to DaveC).\r
+\r
+#ifdef GP2X\r
+@@1. "craigix's RAM timings"\r
+This overclocks the GP2X RAM chips, but may cause instability. Recommended if you\r
+use the second core for sound. Needs emulator restart to take effect.\r
+See this thread:\r
+http://www.gp32x.com/board/index.php?showtopic=32319\r
+\r
+@@1. "squidgehack"\r
+Well known way to improve the GP2X performance. You must restart the emulator\r
+for the change of this option to take effect.\r
+\r
+#endif\r
+\r
+Sega/Mega CD options \r
+--------------------\r
+\r
+@@2,@@2,@@2. "USA/EUR/JAP BIOS"\r
+These options just show if your BIOS files were correctly detected by the\r
+emulator (it shows the filename it is using). If so, you can press Start to\r
+test your BIOS.\r
+\r
+@@2. "CD LEDs"\r
+The Sega/Mega CD unit had two blinking LEDs (red and green) on it. This option\r
+will display them on top-left corner of the screen.\r
+\r
+@@2. "CDDA audio (using mp3s)"\r
+This option enables CD audio playback.\r
+\r
+@@2. "PCM audio"\r
+This enables 8 channel PCM sound source. It is required for some games to run,\r
+because they monitor state of this audio chip.\r
+\r
+@@2. "ReadAhead buffer"\r
+#ifdef GP2X\r
+This option is for dealing with slow SD card access in GP2X, which makes FMV\r
+games unplayable. It will allow emulator not to access SD card for longer periods\r
+of time, but it will take more time to fill the buffer.\r
+#endif\r
+#ifdef GIZ\r
+This option can prefetch more data from the CD then read by the game - not really\r
+useful for Gizmondo (this is a workaround for SD access problems on GP2X port).\r
+#endif\r
+\r
+@@2. "Save RAM cart"\r
+Here you can enable 64K RAM cart. Format it in BIOS if you do.\r
+\r
+@@2. "Scale/Rot. fx"\r
+The Sega/Mega CD had scaling/rotation chip, which allows effects similar to\r
+"Mode 7" effects in SNES. Unfortunately emulating it is slow, and very few games\r
+used it, so it's better to disable this option, unless game really needs it.\r
+\r
+@@2. "Better sync"\r
+This option is similar to "Perfect synchro" in Gens. Some games require it to run,\r
+for example most (all?) Wolfteam games, and some other ones. Don't use it for\r
+games which don't need it, it will just slow them down.\r
+\r
+\r
+Key configuration\r
+-----------------\r
+\r
+Select "Configure controls" from the main menu. Then select "Player 1" and you will\r
+see two columns. The left column lists names of Genesis/MD controller buttons, and\r
+the right GP2X ones, which are assigned to them. If you bind 2 different GP2X buttons\r
+to the same action, you will get a combo (which means that you will have to press\r
+both buttons for that action to happen.\r
+\r
+\r
+Cheat support\r
+-------------\r
+\r
+To use GG/patch codes, you must type them into your favorite text editor, one\r
+per line. Comments may follow code after a whitespace. Only GameGenie and\r
+Genecyst patch formats are supported.\r
+Examples:\r
+\r
+Genecyst patch (this example is for Sonic):\r
+\r
+00334A:0005 Start with five lives\r
+012D24:0001 Keep invincibility until end of stage\r
+009C76:5478 each ring worth 2\r
+009C76:5678 each ring worth 3\r
+...\r
+\r
+Game Genie patch (for Sonic 2):\r
+\r
+ACLA-ATD4 Hidden palace instead of death egg in level select\r
+...\r
+\r
+Both GG and patch codes can be mixed in one file.\r
+\r
+When the file is ready, name it just like your ROM file, but with additional\r
+.pat extension, making sure that case matches.\r
+\r
+Examples:\r
+\r
+ROM: Sonic.zip\r
+PATCH FILE: Sonic.zip.pat\r
+\r
+ROM: Sonic 2.bin\r
+PATCH FILE: Sonic 2.bin.pat\r
+\r
+Put the file into your ROMs directory. Then load the .pat file as you would\r
+a ROM. Then Cheat Menu Option should appear in main menu.\r
+\r
+\r
+What is emulated?\r
+-----------------\r
+\r
+Genesis/MegaDrive:\r
+main 68k @ 7.6MHz: yes, Cyclone core\r
+z80 @ 3.6MHz: yes, DrZ80 core\r
+VDP: yes, except some quirks not used by games\r
+YM2612 FM: yes, optimized MAME core\r
+SN76489 PSG: yes, MAME core\r
+\r
+Sega/Mega CD:\r
+another 68k @ 12.5MHz: yes, Cyclone too\r
+gfx scaling/rotation chip (custom ASIC): yes\r
+PCM sound source: yes\r
+CD-ROM controller: yes (mostly)\r
+bram (internal backup RAM): yes\r
+\r
+\r
+Problems / limitations\r
+----------------------\r
+\r
+* 32x and SVP are not emulated.\r
+* Various VDP quirks (window bug, scroll size 2, etc.) are not emulated,\r
+ as very few games use this (if any at all).\r
+* Some games don't work or have glitches because of inaccurate timing and sync\r
+ between the emulated chips.\r
+\r
+\r
+Credits\r
+-------\r
+\r
+This emulator uses code from these people/projects:\r
+\r
+notaz\r
+GP2X, UIQ, Gizmondo ports, Cyclone 68000 hacks,\r
+lots of additional coding (see changelog).\r
+Homepage: http://notaz.gp2x.de/\r
+\r
+Dave\r
+Cyclone 68000 core, Pico emulation library\r
+Homepage: http://www.finalburn.com/\r
+\r
+Reesy & FluBBa\r
+DrZ80, the Z80 emulator written in ARM assembly.\r
+Homepage: http://reesy.gp32x.de/\r
+\r
+Tatsuyuki Satoh, Jarek Burczynski, MultiArcadeMachineEmulator development\r
+software implementation of Yamaha FM sound generator\r
+\r
+MultiArcadeMachineEmulator (MAME) development\r
+Texas Instruments SN76489 / SN76496 programmable tone /noise generator\r
+Homepage: http://www.mame.net/\r
+\r
+Stephane Dallongeville\r
+Gens, MD/Mega CD/32X emulator. Most Sega CD code is based on this emu.\r
+\r
+Helix community\r
+Helix mp3 decoder\r
+\r
+\r
+Additional thanks\r
+-----------------\r
+\r
+* Charles MacDonald (http://cgfm2.emuviews.com/) for old but still very useful\r
+ info about genesis hardware.\r
+* Steve Snake for all that he has done for Genesis emulation scene.\r
+* Bart Trzynadlowski for his SSFII and 68000 docs.\r
+* Haze for his research (http://haze.mameworld.info).\r
+* Mark and Jean-loup for zlib library.\r
+* ketchupgun for the skin.\r
+#ifdef GP2X\r
+* rlyeh and all the other people behind the minimal library.\r
+* Squidge for his famous squidgehack(tm).\r
+* Dzz for his ARM940 sample code.\r
+* GnoStiC & Puck2099 for USB joystick support.\r
+* Hermes PS2R, god_at_hell for the CpuCtrl library.\r
+* A_SN for his gamma code.\r
+* craigix for supplying the GP2X hardware and making this port possible.\r
+* Alex for the icon.\r
+* All the people from gp32x boards for their support.\r
+#endif\r
+#ifdef GIZ\r
+* Kingcdr's for the SDK and Reesy for the DLL and sound code.\r
+* jens.l for supplying the Gizmondo hardware and making this port possible.\r
+#endif\r
+#ifdef UIQ\r
+* Peter van Sebille for his various open-source Symbian projects to learn from.\r
+* Steve Fischer for his open-source Motorola projects.\r
+* The development team behind "Symbian GCC Improvement Project"\r
+ (http://www.inf.u-szeged.hu/symbian-gcc/) for their updated pre-SymbianOS9\r
+ compile tools.\r
+* AnotherGuest for all his Symbian stuff and support.\r
+* Inder for the icons.\r
+#endif\r
+* Anyone else I forgot. You know who you are.\r
+\r
+\r
+Changelog\r
+---------\r
+1.34\r
+ + Gizmondo port added.\r
+ + Some new optimizations in memory handlers, and for shadow/hilight mode.\r
+ + Added some hacks to make more games work without enabling "accurate timing".\r
+ * Adjusted timing for "accurate timing" mode and added preliminary VDP FIFO\r
+ emulation. Fixes Double Dragon 2, tearing in Chaos Engine and some other games.\r
+ * Fixed a few games not having sound at startup.\r
+ * Updated serial EEPROM code to support more games. Thanks to EkeEke for\r
+ providing info about additional EEPROM types and game mappers.\r
+ * The above change fixed hang of NBA Jam.\r
+ * Minor adjustments to control configurator.\r
+\r
+1.33\r
+ * Updated Cyclone core to 0.0088.\r
+ + Added A r k's usbjoy fix.\r
+ + Added "perfect vsync" option, which adjusts GP2X LCD refresh rate and syncs\r
+ emulation to it to eliminate tearing and ensure smoothest scrolling possible.\r
+ + Added an option to use A_SN's camma curve for gamma correction (improves dark\r
+ and bright color display for mk2s).\r
+ * Sometimes stray sounds were played after loading a savestate. Fixed.\r
+ * Fixed a problem where >6MB mp3s were corrupted in memory (sound glitches in\r
+ Snatcher).\r
+ * PD no longer overwrites video player code in memory, video player now can be\r
+ used after exiting PicoDrive.\r
+ * Fixed a bug which was causing Sonic 3 code to deadlock in some rare conditions\r
+ if "accurate timing" was not enabled.\r
+ * Fixed support for large hacked ROMs like "Ultimate Mortal Kombat Trilogy".\r
+ Upto 10MB hacked ROMs are supported now.\r
+ + Config profiles added (press left/right when saving config).\r
+ * Changed key configuration behavior to the one from gpfce (should be more\r
+ intuitive).\r
+ + Added some skinning capabilities to the menu system with default skin by\r
+ ketchupgun. Delete skin directory if you want old behaviour.\r
+ * Some other little tweaks I forgot about.\r
+\r
+1.32\r
+ + Added some new scaling options.\r
+ + Added ability to reload CD images while game is running (needed for games\r
+ with multiple CDs, like Night Trap).\r
+ + Added RAM cart emulation.\r
+ * Fixed DMA timing emulation (caused lock-ups for some genesis games).\r
+ * Idle loop detection was picking up wrong code and causing glitches, fixed.\r
+ * The ym2612 code on 940 now can handle multiple updates per frame\r
+ (fixes Thunger Force III "seiren" level drums for example).\r
+ * Memory handlers were ignoring some writes to PSG chip, fixed (missing sounds in\r
+ Popful Mail, Silpheed).\r
+ * Improved z80 timing, should fix some sound problems.\r
+ * Fixed a bug with sram register (fixes Phantasy Star 4).\r
+ * ROM loader was incorrectly identifying some ROMs as invalid. Fixed.\r
+ * Added code for PRG ram write protection register (Dungeon Explorer).\r
+ * The memory mode register change in 1.31 was unsafe and caused some glitches in\r
+ AH-3 Thunderstrike. Fixed.\r
+ * Fixed a file descriptor leak.\r
+ * Updated documentation, added Gmenu2x manual.\r
+\r
+1.31\r
+ * Changed the way memory mode register is read (fixes Lunar 2, broken in 1.30).\r
+ * Fixed TAS opcode on sub-68k side (fixes Batman games).\r
+ * File browser now filters out mp3s, saves and some other files, which are not ROMS.\r
+\r
+1.30\r
+ + ISO files now can be zipped. Note that this causes VERY long loading times.\r
+ + Added data pre-buffering support, this allows to reduce frequency of short pauses\r
+ in FMV games (caused by SD access), but makes those pauses longer.\r
+ * Fixed PCM DMA transfers (intro FMV in Popful Mail).\r
+ + Properly implemented "decode" data transformation (Jaguar XJ220).\r
+ * Integrated "better sync" code into cyclone code, what made this mode much faster.\r
+ * Fixed a bug related to game specific config saving.\r
+ * Frameskipper was skipping sound processing, what caused some audio desyncs. Fixed.\r
+ * Fixed reset not working for some games.\r
+ + New assembly optimized memory handlers for CD (gives at least a few fps).\r
+ Also re-enabled all optimizations from 0.964 release.\r
+ + New idle-loop detection code for sub-68k. Speeds up at least a few games.\r
+\r
+1.201\r
+ + Added basic cheat support (GameGenie and Genecyst patches).\r
+\r
+1.20\r
+ * Fixed a long-standing problem in audio mixing code which caused slight distortions\r
+ at lower sample rates.\r
+ * Changed the way 920 and 940 communicates (again), should be more reliable and give\r
+ slight performance increase.\r
+ * Some optimizations in audio mixing code.\r
+ * Some menu changes (background added, smaller font in ROM browser, savestate loader\r
+ now can select slots).\r
+ + 1M mode DMA transfers implemented (used by FMV games like Night Trap and Sewer Shark).\r
+ + Games now can run code from WORD RAM in 1M mode (fixes Adventures of Willy Beamish).\r
+ + "Cell arrange" address mapping is now emulated (Heart of the alien).\r
+ + "Color numeric operation" is now emulated (text in Lunar 2, Silpheed intro graphics).\r
+ + "Better sync" option added (prevents some games from hanging).\r
+\r
+1.14\r
+ + Region autodetection now can be customized.\r
+ * When CDDA music tracks changed, old buffer contents were incorrectly played. Fixed.\r
+ * BRAM is now automatically formatted (no need to enter BIOS menu and format any more).\r
+ * Games now can be reset, CDDA music no longer breaks after loading another ISO.\r
+ * Fixed a race condition between 920 and 940 which sometimes caused CDDA music not to play.\r
+ + Savestates implemented for Sega/Mega CD.\r
+ + PCM sound added.\r
+ * Some mixer code rewritten in asm. 22kHz and 11kHz sound rates are now supported in\r
+ Mega CD mode (but mp3s must still be 44kHz stereo).\r
+ + Timer emulation added.\r
+ * CDC DMA tansfers fixed. Snatcher and probably some more games now boot.\r
+ * 2M word RAM -> VDP transfers fixed, no more corruption in Ecco and some other games.\r
+\r
+1.10\r
+ + GP2X: Added experimental Sega CD support.\r
+ + GP2X: Added partial gmv movie playback support.\r
+\r
+0.964\r
+ * GP2X: Fixed a sound buffer underflow issue on lower sample rate modes, which was\r
+ happening for NTSC games and causing sound clicks.\r
+ * GP2X: Redone key config to better support USB joysticks (now multiple joysticks\r
+ should be useable and configurable).\r
+ + GP2X: Added save confirmation option.\r
+ + GP2X: Added 940 CPU crash detection.\r
+ + ALL: UIQ3 port added.\r
+\r
+0.963\r
+ * GP2X: Gamma-reset-on-entering-menu bug fixed.\r
+ * GP2X: Recompiled PicoDrive with gcc profiling option set as described here:\r
+ http://www.gp32x.com/board/index.php?showtopic=28490\r
+\r
+0.962\r
+ * GP2X: Fixed an issue with incorrect sounds in some games when dualcore operation\r
+ was enabled (for example punch sound in SOR).\r
+ * GP2X: Limited max volume to 90, because higher values often cause distortions.\r
+ * GP2X: Fixed a bug with lower res scaling.\r
+ * GP2X: Gamma is now reset on exit.\r
+\r
+0.96\r
+ * ALL: Severely optimized MAME's YM2612 core, part of it is now rewritten in asm.\r
+ + GP2X: The YM2612's code now can be run in GP2X's ARM940T CPU, what causes large\r
+ performance increase.\r
+ * ALL: Accurate renderers are slightly faster now.\r
+ + GP2X: Using quadruple buffering instead of doublebuffer now, also updated\r
+ framelimitter, this should eliminate some scrolling and tearing problems.\r
+ * GP2X: Fixed some flickering issues of 8bit accurate renderer.\r
+ + GP2X: craigix's RAM timings now can be enabled in the menu (see advanced options).\r
+ + GP2X: Added ability to save config for specific games only.\r
+ + GP2X: Gamma control added (using GP2X's hardware capabilities for this).\r
+ * GP2X: Volume keys are now configurable.\r
+ + GP2X: GnoStiC added USB joystick support, I made it possible to use it for\r
+ player 2 control (currently untested).\r
+ * GP2X: squidgehack is now applied through kernel module (cleaner way).\r
+\r
+0.95\r
+ * ALL: Fixed a bug in sprite renderer which was causing slowdowns for some games.\r
+ + GP2X: Added command line support\r
+ + GP2X: Added optional hardware scaling for lower-res games like Shining Force.\r
+ * ALL: Sound chips are now sampled 2 times per frame. This fixed some games which\r
+ had missing sounds (Vectorman 2 1st level, Thunder Force 3 water level,\r
+ etc.).\r
+ + ALL: Added another accurate 8-bit renderer which is slightly faster and made it\r
+ default.\r
+\r
+0.945\r
+ + GP2X: Added frame limiter for frameskipped modes.\r
+ * GP2X: Increased brightness a bit (unused pixel bits now also contain data).\r
+ * GP2X: Suidgehack was not applied correctly (was applied before allocating some\r
+ high memory and had no effect).\r
+\r
+0.94\r
+ + Added GP2X port.\r
+ * Improved interrupt timing, Mazin Saga and Burning Force now works.\r
+ * Rewritten renderer code to better suit GP2X, should be faster on other\r
+ ports too.\r
+ + Added support for banking used by 12-in-1 and 4-in-1 ROMs (thanks Haze).\r
+ + Added some protection device faking, used by some unlicensed games like\r
+ Super Bubble Bobble, King of Fighters, Elf Wor, ... (thanks to Haze again)\r
+ + Added primitive Virtua Racing SVP faking, so menus can be seen now.\r
+\r
+0.93\r
+ * Fixed a problem with P900/P910 key configuration in FC mode.\r
+ * Improved shadow/hilight mode emulation. Still not perfect, but should be\r
+ enough for most games.\r
+ + Save state slots added.\r
+ + Region selector added.\r
+\r
+0.92\r
+ VDP changes:\r
+ * VDP emulation is now more accurate (fixes flickering in Chase HQ II,\r
+ Super Hang-On and some other problems in other games).\r
+ * HV counter emulation is now much more accurate. Fixes the Asterix games,\r
+ line in Road Rash 3, etc.\r
+ * Minor sprite and layer scroll masking bugs fixed.\r
+ + Added partial interlace mode renderer (Sonic 2 vs mode)\r
+ * Fixed a crash in both renderers when certain size window layers were used.\r
+ + Added emulation of shadow/hilight operator sprites. Other shadow/hilight\r
+ effects are still unemulated.\r
+ + Sprite emulation is more accurate, sprite limit is emulated.\r
+ + Added "accurate sprites" option, which always draws sprites in correct\r
+ order and emulates sprite collision bit, but is significantly slower.\r
+\r
+ Emulation changes:\r
+ * Improved interrupt handling, added deferred interrupt emulation\r
+ (Lemmings, etc).\r
+ + Added serial EEPROM SRAM support (Wonder Boy in Monster World,\r
+ Megaman - The Wily Wars and many EA sports games like NBA Jam).\r
+ + Implemented ROM banking for Super Street Fighter II - The New Challengers\r
+ * Updated to the latest version of DrZ80 core, integrated memory handlers\r
+ in it for better performance. A noticeable performance increase, but save\r
+ states may not work from the previous version (you can only use them with\r
+ sound disabled in that case).\r
+ + SRAM word read handler was using incorrect byte order, fixed.\r
+\r
+ Changes in Cyclone 0.0086:\r
+ + Added missing CHK opcode handler (used by SeaQuest DSV).\r
+ + Added missing TAS opcode handler (Gargoyles,Bubba N Stix,...). As in real genesis,\r
+ memory write-back phase is ignored (but can be enabled in config.h if needed).\r
+ + Added missing NBCD and TRAPV opcode handlers.\r
+ + Added missing addressing mode for CMP/EOR.\r
+ + Added some minor optimizations.\r
+ - Removed 216 handlers for 2927 opcodes which were generated for invalid addressing modes.\r
+ + Fixed flags for ASL, NEG, NEGX, DIVU, ADDX, SUBX, ROXR.\r
+ + Bugs fixed in MOVEP, LINK, ADDQ, DIVS handlers.\r
+ * Undocumented flags for CHK, ABCD, SBCD and NBCD are now emulated the same way as in Musashi.\r
+ + Added Uninitialized Interrupt emulation.\r
+ + Altered timing for about half of opcodes to match Musashi's.\r
+\r
+0.80\r
+ * Nearly all VDP code was rewritten in ARM asm. Gives ~10-25% performance\r
+ increase (depends on game).\r
+ * Optimized 32-column renderer not to render tiles offscreen, games which\r
+ use 32-column display (like Shining Force) run ~50% faster.\r
+ + Added new "Alternative renderer", which gives another ~30-45% performance\r
+ increase (in addition to mentioned above), but works only with some games,\r
+ because it is missing some features (it uses tile-based renderering\r
+ instead of default line-based and disables H-ints).\r
+ + Added "fit2" display mode for all FC gamers. It always uses 208x146 for\r
+ P800 and 208x208 for all other phones.\r
+ + Added volume control for Motorolas (experimental).\r
+\r
+ VDP changes:\r
+ + Added support for vertical window (used by Vapor Trail, Mercs, GRIND\r
+ Stormer and others).\r
+ + Added sprite masking (hiding), adds some speed.\r
+ + Added preliminary H counter emulation. Comix Zone and Sonic 3D Blast\r
+ special stage are now playable.\r
+ + Added column based vertical scrolling (Gunstar Heroes battleship level,\r
+ Sonic and Knuckles lava boss, etc).\r
+\r
+ Emulation changes:\r
+ + Re-added and improved Z80 faking when Z80 is disabled. Many games now can\r
+ be played without enabling Z80 (Lost Vikings, Syndicate, etc), but some\r
+ still need it (International Superstar Soccer Deluxe).\r
+ * Improved ym2612 timers, Outrun music plays at correct speed, voices in\r
+ Earthworm Jim play better, more games play sound.\r
+ * I/O registers now remember their values (needed for Pirates! Gold)\r
+ + Added support for 6 button pad.\r
+\r
+ Changes in Cyclone 0.0083wip:\r
+ + Added missing CHK opcode (used by SeaQuest DSV).\r
+ + Added missing TAS opcode (Gargoyles). As in real genesis, write-back phase\r
+ is ignored (but is enabled for other systems).\r
+\r
+ Backported stuff from Snes9x:\r
+ * Fixed Pxxx jog up/down which were not working in game.\r
+ + Added an option to gzip save states to save space.\r
+ + The emulator now pauses whenever it is loosing focus, so it will now pause\r
+ when alarm/ponecall/battery low/... windows come up.\r
+ - Removed 'pause on phonecall' feature, as it is no longer needed.\r
+ + Video fix for asian A1000s.\r
+\r
+0.70\r
+ * Started using tools from "Symbian GCC Improvement Project", which give\r
+ considerable speed increase (~4fps in "center 90" mode).\r
+ * Rewrote some drawing routines in ARM assembly (gives ~6 more fps in\r
+ "center 90" mode).\r
+ * Minor improvement to 0 and 180 "fit" modes. Now they look slightly better\r
+ and are faster.\r
+ * Minor stability improvements (emulator is less likely to crash).\r
+ + Added some background for OSD text for better readability.\r
+ + Added Pal/NTSC detection. This is needed for proper sound speed.\r
+ + Implemented Reesy's DrZ80 Z80 emu. Made some changes to it with hope to make\r
+ it faster.\r
+ + Implemented ym2612 emu from the MAME project. Runs well but sometimes sounds\r
+ a bit weird. Could be a little faster, so made some changes too.\r
+ + Implemented SN76489 emu from the MAME project.\r
+ + Added two separate sound output methods (mediaserver and cmaudiofb) with\r
+ autodetection (needs testing).\r
+ * Fixed VDP DMA fill emulation (as described in Charles MacDonald's docs),\r
+ fixes Contra and some other games.\r
+\r
+0.301\r
+ Launcher:\r
+ * Launcher now starts emulation process from current directory,\r
+ not from hardcoded paths.\r
+ * Improved 'pause on call' feature, should hopefully work with Motorola phones.\r
+\r
+0.30\r
+ Initial release.\r
+\r
+\r
+Disclaimer\r
+----------\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" \r
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE \r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE \r
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE \r
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR \r
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \r
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \r
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN \r
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \r
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \r
+POSSIBILITY OF SUCH DAMAGE. \r
+\r
+SEGA/Genesis/MegaDrive/SEGA-CD/Mega-CD/32X are trademarks of\r
+Sega Enterprises Ltd.\r
+\r
+++ /dev/null
-As PicoDrive is multiplatform emulator, this is GP2X specific part of readme\r
-about configuration.\r
-\r
-If you have questions, you can use GP32X to ask for help.\r
-http://www.gp32x.com/board/index.php?showforum=48\r
-\r
-\r
-Configuration\r
--------------\r
-\r
-1. "Renderer"\r
-8bit fast:\r
-This enables alternative heavily optimized tile-based renderer, which renders\r
-pixels not line-by-line (this is what accurate renderers do), but in 8x8 tiles,\r
-which is much faster. But because of the way it works it can't render any\r
-mid-frame image changes (raster effects), so it is useful only with some games.\r
-\r
-Other two are accurate line-based renderers. The 8bit is faster but does not\r
-run well with some games like Street Racer.\r
-\r
-2. "Scaling"\r
-"hw" means GP2X hardware scaler, which causes no performance loss, but scaled\r
-image looks a bit blocky. "sw" means software scaling, which uses pixel\r
-averaging and may look a bit nicer, but blurry. Horizontal scaling is only for\r
-games which use so called "32 column mode" (256x224 or 256x240), and scales\r
-image width to 320 pixels. Vertical scales height to 240 for games which use\r
-height 224 (most of them).\r
-\r
-3. "Accurate timing"\r
-This adds some more emulation precision, but slows the emulation down. Without\r
-this option some games do not boot (Red Zone for example), others have sound\r
-problems. This options has no effect for Sega/Mega CD emulation.\r
-\r
-4. "Accurate sprites"\r
-This option improves emulation of sprite priorities, it also enables emulation\r
-of sprite collision bit. If you see one sprite being drawn incorrectly above\r
-the other (often seen in Sonic 3D Blast), you can enable this to fix the problem.\r
-This only works with the accurate renderers (see first option).\r
-\r
-5. "Show FPS"\r
-Self-explanatory. Format is XX/YY, where XX is the number of rendered frames and\r
-YY is the number of emulated frames per second.\r
-\r
-6. "Frameskip"\r
-How many frames to skip rendering before displaying another.\r
-"Auto" is recommended.\r
-\r
-7. "Enable sound"\r
-Does what it says. You must enable at least YM2612 or SN76496 (in advanced options,\r
-see below) for this to make sense.\r
-\r
-8. "Sound Quality"\r
-Sound rate and stereo mode. If you want 44100Hz sound, it is recommended to enable\r
-the second core (next option).\r
-\r
-9. "Use ARM940 core for sound"\r
-This option causes PicoDrive to use ARM940T core (GP2X's second CPU) for sound \r
-(i.e. to generate YM2612 samples) to improve performance noticeably.\r
-\r
-10. "6 button pad"\r
-If you enable this, games will think that 6 button gamepad is connected. If you\r
-go and reconfigure your keys, you will be able to bind X,Y,Z and mode actions.\r
-\r
-11. "Region"\r
-This option lets you force the game to think it is running on machine from the\r
-specified region, or just to set autodetection order. Also affects Sega/Mega CD.\r
-\r
-12. "Use SRAM/BRAM savestates"\r
-This will automatically read/write SRAM (or BRAM for Sega/Mega CD) savestates for\r
-games which are using them. SRAM is saved whenever you pause your game or exit the\r
-emulator.\r
-\r
-13. "Confirm savestate"\r
-Allows to enable confirmation on savestate saving (to prevent savestate overwrites),\r
-on loading (to prevent destroying current game progress), and on both or none.\r
-\r
-14. "Save slot"\r
-This is a slot number to use for savestates. This can also be configured to be\r
-changed with a button (see "key configuration").\r
-\r
-15. "GP2X CPU clocks"\r
-Here you can change clocks of both GP2X's CPUs. Larger values increase performance.\r
-There is no separate option for the second CPU because both CPUs use the same clock\r
-source. Setting this option to 200 will cause PicoDrive NOT to change GP2X's clocks\r
-at all (this is if you use external program to set clock).\r
-\r
-16. "[Sega/Mega CD options]"\r
-Enters Sega/Mega CD options menu (see below).\r
-\r
-17. "[advanced options]"\r
-Enters advanced options menu (see below).\r
-\r
-18. "Save cfg as default"\r
-If you save your config here it will be loaded on next ROM load, but only if there\r
-is no game specific config saved (which will be loaded in that case).\r
-You can press left/right to switch to a different config profile.\r
-\r
-19. "Save cfg for current game only"\r
-Whenever you load current ROM again these settings will be loaded (squidgehack and\r
-RAM settings will not take effect until emulator is restarted).\r
-\r
-\r
-Advanced configuration\r
-----------------------\r
-\r
-Enter [advanced options] in config menu to see these options.\r
-\r
-1. "Gamma correction"\r
-Alters image gamma through GP2X hardware. Larger values make image to look brighter,\r
-lower - darker (default is 1.0).\r
-\r
-2. "A_SN's gamma curve"\r
-If this is enabled, different gamma adjustment method will be used (suggested by A_SN\r
-from gp32x boards). Basically it makes difference for dark and bright colors.\r
-\r
-3. "Perfect vsync"\r
-This one adjusts the LCD refresh rate to better match game's refresh rate and starts\r
-synchronizing rendering with it. Should make scrolling smoother and eliminate tearing.\r
-\r
-4. "Emulate Z80"\r
-Enables emulation of Z80 chip, which was mostly used to drive the other sound chips.\r
-Some games do complex sync with it, so you must enable it even if you don't use\r
-sound to be able to play them.\r
-\r
-5. "Emulate YM2612 (FM)"\r
-This enables emulation of six-channel FM sound synthesizer chip, which was used to\r
-produce sound effects and music.\r
-\r
-6. "Emulate SN76496 (PSG)"\r
-This enables emulation of additional sound chip for additional effects.\r
-\r
-Note: if you change sound settings AFTER loading a ROM, you may need to reset\r
-game to get sound. This is because most games initialize sound chips on\r
-startup, and this data is lost when sound chips are being enabled/disabled.\r
-\r
-7. "gzip savestates"\r
-This will always apply gzip compression on your savestates, allowing you to\r
-save some space and load/save time.\r
-\r
-8. "Don't save last used ROM"\r
-This will disable writing last used ROM to config on exit (what might cause SD\r
-card corruption according to DaveC).\r
-\r
-9. "craigix's RAM timings"\r
-This overclocks the GP2X RAM chips, but may cause instability. Recommended if you\r
-use the second core for sound. Needs emulator restart to take effect.\r
-See this thread:\r
-http://www.gp32x.com/board/index.php?showtopic=32319\r
-\r
-10. "squidgehack"\r
-Well known way to improve the GP2X performance. You must restart the emulator\r
-for the change of this option to take effect.\r
-\r
-\r
-Sega/Mega CD options \r
---------------------\r
-\r
-1,2,3. "USA/EUR/JAP BIOS"\r
-These options just show if your BIOS files were correctly detected by the\r
-emulator (it shows the filename it is using). If so, you can press Start to\r
-test your BIOS.\r
-\r
-4. "CD LEDs"\r
-The Sega/Mega CD unit had two blinking LEDs (red and green) on it. This option\r
-will display them on top-left corner of the screen.\r
-\r
-5. "CDDA audio (using mp3s)"\r
-This option enables CD audio playback.\r
-\r
-6. "PCM audio"\r
-This enables 8 channel PCM sound source. It is required for some games to run,\r
-because they monitor state of this audio chip.\r
-\r
-7. "ReadAhead buffer"\r
-This option is for dealing with slow SD card access in GP2X, which makes FMV\r
-games unplayable. It will allow emulator not to access SD card for longer periods\r
-of time, but it will take more time to fill the buffer.\r
-\r
-8. "Save RAM cart"\r
-Here you can enable 64K RAM cart. Format it in BIOS if you do.\r
-\r
-9. "Scale/Rot. fx"\r
-The Sega/Mega CD had scaling/rotation chip, which allows effects similar to\r
-"Mode 7" effects in SNES. Unfortunately emulating it is slow, and very few games\r
-used it, so it's better to disable this option, unless game really needs it.\r
-\r
-10. "Better sync"\r
-This option is similar to "Perfect synchro" in Gens. Some games require it to run,\r
-for example most (all?) Wolfteam games, and some other ones. Don't use it for\r
-games which don't need it, it will just slow them down.\r
-\r
-\r
-Key configuration\r
------------------\r
-\r
-Select "Configure controls" from the main menu. Then select "Player 1" and you will\r
-see two columns. The left column lists names of Genesis/MD controller buttons, and\r
-the right GP2X ones, which are assigned to them. If you bind 2 different GP2X buttons\r
-to the same action, you will get a combo (which means that you will have to press\r
-both buttons for that action to happen.\r
-\r