From c2e83bcd16add6d776ea9ace7bc4e2622277f48e Mon Sep 17 00:00:00 2001
From: notaz <notasas@gmail.com>
Date: Fri, 5 Oct 2007 21:52:58 +0000
Subject: [PATCH] portable documentation

git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@269 be3aeb3a-fb24-0410-a615-afba39da0efa
---
 base_readme.txt | 804 ++++++++++++++++++++++++++++++++++++++++++++++++
 gp2x/Makefile   |   8 +-
 gp2x/config.txt | 201 ------------
 3 files changed, 811 insertions(+), 202 deletions(-)
 create mode 100644 base_readme.txt
 delete mode 100644 gp2x/config.txt

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