split base_readme to more traditional files
authornotaz <notasas@gmail.com>
Thu, 10 Oct 2013 01:04:57 +0000 (04:04 +0300)
committernotaz <notasas@gmail.com>
Thu, 10 Oct 2013 21:47:25 +0000 (00:47 +0300)
AUTHORS [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
README [new file with mode: 0644]
platform/base_readme.txt
tools/textfilter.c

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..d479110
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,56 @@
+notaz
+core, 32X emulation, CD code, ARM asm renderers, dynamic recompilers,
+Pandora, GPH device, PSP, Gizmondo ports, CPU core hacks
+lots of additional coding (see changeLog).
+Homepage: http://notaz.gp2x.de/
+
+fDave
+project starter
+Cyclone 68000 core and PicoDrive core itself
+
+Chui
+FAME/C 68k interpreter core
+(based on C68K by Stephane Dallongeville)
+
+Stephane Dallongeville (written), NJ (optimized)
+CZ80 Z80 interpreter core
+
+Reesy & FluBBa
+DrZ80, the Z80 interpreter written in ARM assembly.
+Homepage: http://reesy.gp32x.de/ (defunct)
+
+Tatsuyuki Satoh, Jarek Burczynski, MAME development
+software implementation of Yamaha FM sound generator
+
+MAME development
+Texas Instruments SN76489 / SN76496 programmable tone/noise generator
+Homepage: http://www.mame.net/
+
+Eke-Eke
+CD graphics processor and CD controller implementation (from Genesis Plus GX)
+
+
+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.
+* Stephane Dallongeville for writing Gens and making it open source.
+* Tasco Deluxe for his reverse engineering work on SVP and some mappers.
+* Bart Trzynadlowski for his SSFII and 68000 docs.
+* Haze for his research (http://mamedev.emulab.it/haze/).
+* Lordus, Exophase and Rokas for various ideas.
+* Nemesis for his YM2612, VDP research and docs.
+* Eke-Eke for sharing the knowledge and his work on Genesis Plus GX.
+* Many posters at spritesmind.net forums for valuable information.
+* Mark and Jean-loup for zlib library.
+* ketchupgun for the skin.
+* GP2X specific help: rlyeh, Squidge, Dzz, A_SN, Alex and GP32X posters.
+* Gizmondo code: Kingcdr, Reesy, jens.l (for the device itself)
+* Hardware: craigix (GP2X), EvilDragon (Wiz, Caanoo, Pandora, ...)
+  and jens.l (Gizmondo)
+* Paul Cercueil for OpenDingux port.
+* Inder for some graphics.
+* squarepusher for some libretro fixes
+* Anyone else I forgot. Let me know if it's you.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..ba840f4
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,485 @@
+1.91 (2013-10-)
+  + Added OpenDingux support (Paul Cercueil).
+  + Revived GP2X/Caanoo/Wiz support.
+  + Switched to cleaner CD controller code from Eke-Eke's Genesis Plus GX.
+  * Fixed overflow issue where cd emulation would break after
+    ~10 minutes of gameplay.
+  * Fixed synchronization issue where model1 CD BIOS would randomly hang.
+
+1.90 (2013-09-24)
+  + 32X+CD emulation has been implemented.
+  + CD graphics processor code has been replaced with much cleaner Eke-Eke's
+    implementation from Genesis Plus GX.
+  + CD PCM code has been completely rewritten.
+  * Various CD compatibility issues have been solved. Hopefully no more
+    regressions this time.
+  * pandora: fixed tv-out (again), added automatic layer switching
+  * libretro: fixed crackling sound for some games, added some core options
+  * sdl: multiple joystick support has been fixed (Victor Luchits)
+
+1.85 (2013-08-31)
+  * Lots of 32X compatibility and accuracy improvements. All commercial games
+    are booting now, but some still have issues.
+  * Fixed some regressions in MegaCD code, like hang in jap BIOS.
+  * Implemented pause for SMS.
+  * Updated UI with improvements from PCSX ReARMed.
+  * Frontend timing has been rewritten, should no longer slowly desync from
+    LCD on pandora.
+  * Added libretro and SDL 32/64bit ports, fixed compatibility issues with
+    Android, iOS.
+  * Various other things I forgot (it has been a while since last release..)
+
+1.80 (2010-09-19)
+  + Added Caanoo support. Now the GP2X binary supports GP2X F100/F200, Wiz
+    and Caanoo. Lots of internal refactoring to support this.
+  + Enabled 32X and SMS code. It's still unfinished but better release something
+    now than wait even more (it has been in development for more then a year now
+    due to various other projects or simply lack of time).
+  + Pandora: added hardware scaler support, including ability to resize the
+    layer and control filtering.
+  + GP2X: Added basic line-doubling vertical scaling option.
+  * Changed the way keys are bound, no need to unbind old one any more.
+  * Handle MP3s with ID3 tags better (some MP3s with ID3 did not play).
+  * Improved shadow/hilight color levels.
+  * Fixed broken cheat support.
+
+1.80beta2
+  * Pandora: updated documentation.
+
+1.80beta1 (2010-06-02)
+  + Added pandora port.
+  * Internal refactoring for 32x/SMS support.
+  * Move mapper database to external file.
+  + Added preliminary SMS emulation.
+  + Added emulation of 32x peripherals including VDP. More work is needed here.
+  + ARM: Added new SH2 recompiler for 32x. Some unification with SVP one.
+  - Disabled most of the above bacause I'm not yet happy with the results.
+
+1.56 (2009-09-19)
+  * Changed sync in Sega CD emulation again. Should fix games that
+    broke after changes in 1.51a.
+  * Fixed default keys rebinding when they shouldn't.
+  * Fixed sram being loaded from wrong game.
+  * Emu should no longer hang shortly after using fast-forward.
+  * Fixed save states sometimes no longer showing up in save state menu.
+  * ARM: some asm code refactoring for slight speed improvement.
+
+1.55
+  + Added Wiz support. Now the same GP2X binary supports F100/F200 and Wiz.
+  * Changed shadow/hilight handling a bit, fixes some effects in Pirates! Gold.
+  * Complete input code rewrite. This fixes some limitations like not allowing
+    to control both players using single input device. It also allows to use
+    more devices (like keyboards) on Linux based devices.
+  * Options menu has been reordered, "restore defaults" option added.
+
+1.51b
+  * Fixed a crash when uncompressed savestate is loaded.
+  * Fixed an idle loop detection related hanging problem.
+  * PSP: fixed another palette related regression.
+  * UIQ3: updated frontend for the latest emu core.
+
+1.51a
+  * Fixed a sync problem between main and sub 68k. Should fix the hanging
+    problem for some games.
+  * ARM: fixed a crash when CD savestate is loaded just after loading ROM.
+
+1.51
+  * Improved bin_to_cso_mp3 tool, it should no longer complain about
+    missing lame.exe even if it's in working dir.
+  * Fixed a regression from 1.50, which caused slowdowns in Final Fight.
+  * Fixed some regressions from 1.50 related to sprite limit and palette
+    handling (caused graphical glitches in some games).
+  + Added ABC turbo actions to key config.
+  * Some other minor adjustments.
+
+1.50
+  + Added some basic support for Sega Pico, a MegaDrive-based toy.
+  + Added proper support for cue/bin images, including cdda playback.
+    .cue sheets with iso/cso/mp3/wav files listed in them are now
+    supported too (but 44kHz restriction still applies).
+  + Added bin_to_cso_mp3 tool, based on Exophase's bin_to_iso_ogg.
+    The tool can convert .cue/.bin Sega CD images to .cso/.mp3.
+  * Greatly improved Sega CD load times.
+  * Changed how scheduling between 68k and z80 is handled. Improves
+    performance for some games. Credits to Lordus for the idea.
+  * YM2612 state was not 100% saved, this should be better now.
+  * Improved renderer performance for shadow/hilight mode.
+  * Added a hack for YM2612 frequency overflow issue (bleep noises
+    in Shaq Fu, Spider-Man - The Animated Series (intro music), etc.)
+    Credits to Nemesis @ spritesmind forum. Works only if sound rate
+    is set to 44kHz.
+  + Implemented some sprite rendering improvements, as suggested by
+    Exophase. Games with lots of sprites now perform better.
+  + Added better idle loop detection, based on Lordus' idea again.
+  - "accurate timing" option removed, as disabling it no longer
+    improves performance.
+  - "accurate sprites" was removed too, the new sprite code can
+    properly handle sprite priorities in all cases.
+  * Timers adjusted again.
+  * Improved .smd detection code.
+  * ARM: fixed a bug in DrZ80 core, which could cause problems in
+    some rare cases.
+  * ARM: fixed a problem of occasional clicks on MP3 music start.
+  * Minor general optimizations and menu improvements.
+  * Fixed a bug in Sega CD savestate loader, where the game would
+    sometimes crash after load.
+  * Fixed a crash of games using eeprom (introduced in 1.40b).
+  * PSP: fixed suspend/resume (hopefully for real).
+
+1.40c
+  * Fixed a problem with sound in Marble Madness.
+  * GP2X: Fixed minor problem with key config.
+
+1.40b
+  * Fixed sprite masking code. Thanks to Lordus for explaining how it works.
+  + Added "disable sprite limit" option.
+  + PSP: added black level adjustment to display options.
+  * Changed reset to act as 'soft' reset.
+  + Added detection for Puggsy (it doesn't really have sram).
+  * Some small timing adjustments.
+
+1.40a
+  * GP2X: Fixed a binding problem with up and down keys.
+  * Default game config no longer overrides global user config.
+
+1.40
+  + Added support for SVP (Sega Virtua Processor) to emulate Virtua Racing,
+    wrote ARM recompiler and some HLE code for VR. Credits to Exophase and
+    Rokas for various ideas.
+  * Changed config file format, files are now human-readable. Game specific
+    configs are now held in single file (but old game config files are still
+    read when new one is missing).
+  * Fixed a bug where some key combos didn't work as expected.
+  * Fixed a regression in renderer (ARM ports only, some graphic glitches in
+    rare cases).
+  * Adjusted fast renderer to work with more games, including VR.
+  * Fixed a problem where SegaCD RAM cart data was getting lost on reset.
+  * GP2X: Greatly reduced SegaCD FMV game slowdowns by disabling read-ahead
+    in the Linux kernel and C library (thanks to Rokas and Exophase for ideas
+    again). Be sure to keep "ReadAhead buffer" OFF to avoid slowdowns.
+  + PicoDrive now comes with a game config file for some games which need
+    special settings, so they should now work out-of-the-box. More games will
+    be added with later updates.
+  + GP2X: Files now can be deleted by pressing A+SELECT in the file browser.
+
+1.35b
+  * PSP: mp3 code should no longer fail on 1.5 firmware.
+  + PSP: added gamma adjustment option.
+  + Added .cso ISO format support. Useful for non-FMV games.
+  * It is now possile to force a region after the ROM is loaded.
+  * Fixed a sram bug in memhandlers (fixes Shining in the Darkness saves).
+  * PSP: fixed another bug in memhanlers, which crashed the emu for some games
+    (like NBA Jam and NHL 9x).
+  + PSP: added suspend/resume handling for Sega CD games.
+  + GP2X: added additional low volume levels for my late-night gaming sessions
+    (in stereo mode only).
+  + GP2X: added "fast forward" action in key config. Not recommended to use for
+    Sega CD, may case problems there.
+  * Some other small tweaks I forgot about.
+
+1.35a
+  * PSP: fixed a bug which prevented to load any ROMs after testing the BIOS.
+  * PSP: fixed incorrect CZ80 memory map setup, which caused Z80 crashes and
+    graphics corruption in EU Mega CD model1 BIOS menus.
+  + PSP: added additional "set to 4:3 scaled" display option for convenience.
+  + PSP: Added an option to disable frame limitter (works only with non-auto frameskip).
+
+1.35
+  + PSP port added. Lots of new code for it. Integrated modified FAME/C, CZ80 cores.
+  + Some minor generic optimizations.
+  * Patched some code which was crashing under PSP, but was working in GP2X/Giz
+    (although it should have crashed there too).
+  * Readme updated.
+
+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 gamma 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 (2006-12-03)
+  * 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 rendering
+    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 (2006-01-07)
+  Initial release based on fDave's code.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..fbcecc1
--- /dev/null
+++ b/README
@@ -0,0 +1,15 @@
+
+This is yet another Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS
+emulator, which was written having ARM-based handheld devices in mind
+(such as smartphones and handheld consoles like GP2X and Pandora),
+but also runs on non-ARM little-endian hardware too.
+
+The emulator is heavily optimized for ARM, features assembly cores for
+68k, Z80 and VDP chip emulation, also has dynamic recompilers for SH2 and
+SSP16 (for 32X and SVP emulation). It was started by Dave (aka fdave,
+finalburn author) as basic Genesis/Megadrive emulator for Pocket PC,
+then taken over and expanded by notaz.
+
+PicoDrive was the first emulator ever to properly emulate Virtua Racing and
+it's SVP chip.
+
index d2f7e96..7a3bd89 100644 (file)
@@ -3,20 +3,7 @@ PicoDrive 1.xx
 \r
 About\r
 -----\r
-\r
-This is yet another Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS\r
-emulator, which was written having ARM-based handheld devices in mind\r
-(such as smartphones and handheld consoles like GP2X and Pandora).\r
-\r
-The emulator is heavily optimized for ARM, features assembly cores for\r
-68k, Z80 and VDP chip emulation, also has dynamic recompilers for SH2 and\r
-SSP16 (for 32X and SVP emulation). It was started by Dave (aka fdave,\r
-finalburn author) as basic Genesis/Megadrive emulator for Pocket PC,\r
-then taken over and expanded by notaz.\r
-\r
-PicoDrive is the first emulator ever to properly emulate Virtua Racing and\r
-it's SVP chip.\r
-\r
+#include "../README"\r
 \r
 How to make it run\r
 ------------------\r
@@ -486,601 +473,25 @@ Problems / limitations
 * The FM sound core doesn't support all features and has some accuracy issues.\r
 \r
 \r
-Credits\r
+Changelog\r
 -------\r
 \r
-This emulator is made of the code from following people/projects:\r
-\r
-notaz\r
-GP2X, UIQ, PSP, Gizmondo ports, CPU core hacks, dynamic recompilers,\r
-lots of additional coding (see changelog).\r
-Homepage: http://notaz.gp2x.de/\r
+#include "../ChangeLog"\r
 \r
-fDave\r
-one who started it all:\r
-Cyclone 68000 core and PicoDrive itself\r
-\r
-Chui\r
-FAME/C 68k interpreter core\r
-(based on C68K by Stephane Dallongeville)\r
-\r
-Stephane Dallongeville (written), NJ (optimized)\r
-CZ80 Z80 interpreter core\r
-\r
-Reesy & FluBBa\r
-DrZ80, the Z80 interpreter written in ARM assembly.\r
-Homepage: http://reesy.gp32x.de/ (defunct)\r
-\r
-Tatsuyuki Satoh, Jarek Burczynski, MAME development\r
-software implementation of Yamaha FM sound generator\r
-\r
-MAME development\r
-Texas Instruments SN76489 / SN76496 programmable tone/noise generator\r
-Homepage: http://www.mame.net/\r
-\r
-Eke\r
-CD graphics processor and CD controller implementation (from Genesis Plus GX)\r
-#ifdef PSP\r
 \r
-people @ ps2dev.org forums / PSPSDK crew\r
-libaudiocodec code (by cooleyes)\r
-other sample code\r
-#endif\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
-* Stephane Dallongeville for writing Gens and making it open source.\r
-* Tasco Deluxe for his reverse engineering work on SVP and some mappers.\r
-* Bart Trzynadlowski for his SSFII and 68000 docs.\r
-* Haze for his research (http://haze.mameworld.info).\r
-* Lordus, Exophase and Rokas for various ideas.\r
-* Nemesis for his YM2612 research.\r
-* Eke\r
-* Many posters at spritesmind.net forums for valuable information.\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
-* 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
-* Inder for some graphics.\r
-* Anyone else I forgot. You know who you are.\r
+Credits\r
+-------\r
 \r
+This emulator is made of the code from following people/projects:\r
 \r
-Changelog\r
----------\r
-1.91 (2013-10-)\r
-  + Switched to CD controller code from Eke's Genesis Plus GX.\r
-  * Fixed overflow issue where cd emulation would break after\r
-    ~10 minutes of gameplay\r
-\r
-1.90 (2013-09-24)\r
-  + 32X+CD emulation has been implemented.\r
-  + CD graphics processor code has been replaced with much cleaner Eke's\r
-    implementation from Genesis Plus GX.\r
-  + CD PCM code has been completely rewritten.\r
-  * Various CD compatibility issues have been solved. Hopefully no more\r
-    regressions this time.\r
-  * pandora: fixed tv-out (again), added automatic layer switching\r
-  * libretro: fixed crackling sound for some games, added some core options\r
-  * sdl: multiple joystick support has been fixed (Victor Luchits)\r
-\r
-1.85 (2013-08-31)\r
-  * Lots of 32X compatibility and accuracy improvements. All commercial games\r
-    are booting now, but some still have issues.\r
-  * Fixed some regressions in MegaCD code, like hang in jap BIOS.\r
-  * Implemented pause for SMS.\r
-  * Updated UI with improvements from PCSX ReARMed.\r
-  * Frontend timing has been rewritten, should no longer slowly desync from\r
-    LCD on pandora.\r
-  * Added libretro and SDL 32/64bit ports, fixed compatibility issues with\r
-    Android, iOS.\r
-  * Various other things I forgot (it has been a while since last release..)\r
-\r
-1.80 (2010-09-19)\r
-  + Added Caanoo support. Now the GP2X binary supports GP2X F100/F200, Wiz\r
-    and Caanoo. Lots of internal refactoring to support this.\r
-  + Enabled 32X and SMS code. It's still unfinished but better release something\r
-    now than wait even more (it has been in development for more then a year now\r
-    due to various other projects or simply lack of time).\r
-  + Pandora: added hardware scaler support, including ability to resize the\r
-    layer and control filtering.\r
-  + GP2X: Added basic line-doubling vertical scaling option.\r
-  * Changed the way keys are bound, no need to unbind old one any more.\r
-  * Handle MP3s with ID3 tags better (some MP3s with ID3 did not play).\r
-  * Improved shadow/hilight color levels.\r
-  * Fixed broken cheat support.\r
-\r
-1.80beta2\r
-  * Pandora: updated documentation.\r
-\r
-1.80beta1 (2010-06-02)\r
-  + Added pandora port.\r
-  * Internal refactoring for 32x/SMS support.\r
-  * Move mapper database to external file.\r
-  + Added preliminary SMS emulation.\r
-  + Added emulation of 32x peripherals including VDP. More work is needed here.\r
-  + ARM: Added new SH2 recompiler for 32x. Some unification with SVP one.\r
-  - Disabled most of the above bacause I'm not yet happy with the results.\r
-\r
-1.56 (2009-09-19)\r
-  * Changed sync in Sega CD emulation again. Should fix games that\r
-    broke after changes in 1.51a.\r
-  * Fixed default keys rebinding when they shouldn't.\r
-  * Fixed sram being loaded from wrong game.\r
-  * Emu should no longer hang shortly after using fast-forward.\r
-  * Fixed save states sometimes no longer showing up in save state menu.\r
-  * ARM: some asm code refactoring for slight speed improvement.\r
-\r
-1.55\r
-  + Added Wiz support. Now the same GP2X binary supports F100/F200 and Wiz.\r
-  * Changed shadow/hilight handling a bit, fixes some effects in Pirates! Gold.\r
-  * Complete input code rewrite. This fixes some limitations like not allowing\r
-    to control both players using single input device. It also allows to use\r
-    more devices (like keyboards) on Linux based devices.\r
-  * Options menu has been reordered, "restore defaults" option added.\r
-\r
-1.51b\r
-  * Fixed a crash when uncompressed savestate is loaded.\r
-  * Fixed an idle loop detection related hanging problem.\r
-  * PSP: fixed another palette related regression.\r
-  * UIQ3: updated frontend for the latest emu core.\r
-\r
-1.51a\r
-  * Fixed a sync problem between main and sub 68k. Should fix the hanging\r
-    problem for some games.\r
-  * ARM: fixed a crash when CD savestate is loaded just after loading ROM.\r
-\r
-1.51\r
-  * Improved bin_to_cso_mp3 tool, it should no longer complain about\r
-    missing lame.exe even if it's in working dir.\r
-  * Fixed a regression from 1.50, which caused slowdowns in Final Fight.\r
-  * Fixed some regressions from 1.50 related to sprite limit and palette\r
-    handling (caused graphical glitches in some games).\r
-  + Added ABC turbo actions to key config.\r
-  * Some other minor adjustments.\r
-\r
-1.50\r
-  + Added some basic support for Sega Pico, a MegaDrive-based toy.\r
-  + Added proper support for cue/bin images, including cdda playback.\r
-    .cue sheets with iso/cso/mp3/wav files listed in them are now\r
-    supported too (but 44kHz restriction still applies).\r
-  + Added bin_to_cso_mp3 tool, based on Exophase's bin_to_iso_ogg.\r
-    The tool can convert .cue/.bin Sega CD images to .cso/.mp3.\r
-  * Greatly improved Sega CD load times.\r
-  * Changed how scheduling between 68k and z80 is handled. Improves\r
-    performance for some games. Credits to Lordus for the idea.\r
-  * YM2612 state was not 100% saved, this should be better now.\r
-  * Improved renderer performance for shadow/hilight mode.\r
-  * Added a hack for YM2612 frequency overflow issue (bleep noises\r
-    in Shaq Fu, Spider-Man - The Animated Series (intro music), etc.)\r
-    Credits to Nemesis @ spritesmind forum. Works only if sound rate\r
-    is set to 44kHz.\r
-  + Implemented some sprite rendering improvements, as suggested by\r
-    Exophase. Games with lots of sprites now perform better.\r
-  + Added better idle loop detection, based on Lordus' idea again.\r
-  - "accurate timing" option removed, as disabling it no longer\r
-    improves performance.\r
-  - "accurate sprites" was removed too, the new sprite code can\r
-    properly handle sprite priorities in all cases.\r
-  * Timers adjusted again.\r
-  * Improved .smd detection code.\r
-  * ARM: fixed a bug in DrZ80 core, which could cause problems in\r
-    some rare cases.\r
-  * ARM: fixed a problem of occasional clicks on MP3 music start.\r
-  * Minor general optimizations and menu improvements.\r
-  * Fixed a bug in Sega CD savestate loader, where the game would\r
-    sometimes crash after load.\r
-  * Fixed a crash of games using eeprom (introduced in 1.40b).\r
-  * PSP: fixed suspend/resume (hopefully for real).\r
-\r
-1.40c\r
-  * Fixed a problem with sound in Marble Madness.\r
-  * GP2X: Fixed minor problem with key config.\r
-\r
-1.40b\r
-  * Fixed sprite masking code. Thanks to Lordus for explaining how it works.\r
-  + Added "disable sprite limit" option.\r
-  + PSP: added black level adjustment to display options.\r
-  * Changed reset to act as 'soft' reset.\r
-  + Added detection for Puggsy (it doesn't really have sram).\r
-  * Some small timing adjustments.\r
-\r
-1.40a\r
-  * GP2X: Fixed a binding problem with up and down keys.\r
-  * Default game config no longer overrides global user config.\r
-\r
-1.40\r
-  + Added support for SVP (Sega Virtua Processor) to emulate Virtua Racing,\r
-    wrote ARM recompiler and some HLE code for VR. Credits to Exophase and\r
-    Rokas for various ideas.\r
-  * Changed config file format, files are now human-readable. Game specific\r
-    configs are now held in single file (but old game config files are still\r
-    read when new one is missing).\r
-  * Fixed a bug where some key combos didn't work as expected.\r
-  * Fixed a regression in renderer (ARM ports only, some graphic glitches in\r
-    rare cases).\r
-  * Adjusted fast renderer to work with more games, including VR.\r
-  * Fixed a problem where SegaCD RAM cart data was getting lost on reset.\r
-  * GP2X: Greatly reduced SegaCD FMV game slowdowns by disabling read-ahead\r
-    in the Linux kernel and C library (thanks to Rokas and Exophase for ideas\r
-    again). Be sure to keep "ReadAhead buffer" OFF to avoid slowdowns.\r
-  + PicoDrive now comes with a game config file for some games which need\r
-    special settings, so they should now work out-of-the-box. More games will\r
-    be added with later updates.\r
-  + GP2X: Files now can be deleted by pressing A+SELECT in the file browser.\r
-\r
-1.35b\r
-  * PSP: mp3 code should no longer fail on 1.5 firmware.\r
-  + PSP: added gamma adjustment option.\r
-  + Added .cso ISO format support. Useful for non-FMV games.\r
-  * It is now possile to force a region after the ROM is loaded.\r
-  * Fixed a sram bug in memhandlers (fixes Shining in the Darkness saves).\r
-  * PSP: fixed another bug in memhanlers, which crashed the emu for some games\r
-    (like NBA Jam and NHL 9x).\r
-  + PSP: added suspend/resume handling for Sega CD games.\r
-  + GP2X: added additional low volume levels for my late-night gaming sessions\r
-    (in stereo mode only).\r
-  + GP2X: added "fast forward" action in key config. Not recommended to use for\r
-    Sega CD, may case problems there.\r
-  * Some other small tweaks I forgot about.\r
-\r
-1.35a\r
-  * PSP: fixed a bug which prevented to load any ROMs after testing the BIOS.\r
-  * PSP: fixed incorrect CZ80 memory map setup, which caused Z80 crashes and\r
-    graphics corruption in EU Mega CD model1 BIOS menus.\r
-  + PSP: added additional "set to 4:3 scaled" display option for convenience.\r
-  + PSP: Added an option to disable frame limitter (works only with non-auto frameskip).\r
-\r
-1.35\r
-  + PSP port added. Lots of new code for it. Integrated modified FAME/C, CZ80 cores.\r
-  + Some minor generic optimizations.\r
-  * Patched some code which was crashing under PSP, but was working in GP2X/Giz\r
-    (although it should have crashed there too).\r
-  * Readme updated.\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 gamma 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 (2006-12-03)\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 rendering\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 (2006-01-07)\r
-  Initial release.\r
+#include "../AUTHORS"\r
 \r
 \r
 License\r
 -------\r
 \r
 This program and it's code is released under the terms of MAME license:\r
-\r
- Redistribution and use of this code or any derivative works are permitted\r
- provided that the following conditions are met:\r
-\r
- * Redistributions may not be sold, nor may they be used in a commercial\r
- product or activity.\r
-\r
- * Redistributions that are modified from the original source must include the\r
- complete source code, including the source code for all components used by a\r
- binary built from the modified sources. However, as a special exception, the\r
- source code distributed need not include anything that is normally distributed\r
- (in either source or binary form) with the major components (compiler, kernel,\r
- and so on) of the operating system on which the executable runs, unless that\r
- component itself accompanies the executable.\r
-\r
- * Redistributions must reproduce the above copyright notice, this list of\r
- conditions and the following disclaimer in the documentation and/or other\r
- materials provided with the distribution.\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
+#include "../COPYING"\r
 \r
 SEGA/Genesis/MegaDrive/SEGA-CD/Mega-CD/32X are trademarks of\r
 Sega Enterprises Ltd.\r
index 90354c2..c7a088b 100644 (file)
@@ -22,7 +22,6 @@ static int check_defines(const char **defs, int defcount, char *tdef)
        return 0;
 }
 
-
 static void do_counters(char *str)
 {
        static int counter_id = -1, counter;
@@ -42,12 +41,28 @@ static void do_counters(char *str)
        }
 }
 
+static int my_fputs(char *s, FILE *stream)
+{
+       char *p;
+
+       for (p = s + strlen(s) - 1; p >= s; p--)
+               if (!isspace(*p))
+                       break;
+       p++;
+
+       /* use DOS endings for better viewer compatibility */
+       memcpy(p, "\r\n", 3);
+
+       return fputs(s, stream);
+}
 
 int main(int argc, char *argv[])
 {
+       char path[256], path_file[256];
        char buff[1024];
        FILE *fi, *fo;
        int skip_mode = 0, ifdef_level = 0, skip_level = 0, line = 0;
+       char *p;
 
        if (argc < 3)
        {
@@ -62,13 +77,21 @@ int main(int argc, char *argv[])
                return 2;
        }
 
-       fo = fopen(argv[2], "w");
+       fo = fopen(argv[2], "wb");
        if (fo == NULL)
        {
                printf("failed to open: %s\n", argv[2]);
                return 3;
        }
 
+       snprintf(path, sizeof(path), "%s", argv[1]);
+       for (p = path + strlen(path) - 1; p > path; p--) {
+               if (*p == '/' || *p == '\\') {
+                       p[1] = 0;
+                       break;
+               }
+       }
+
        for (++line; !feof(fi); line++)
        {
                char *fgs;
@@ -112,12 +135,16 @@ int main(int argc, char *argv[])
                        {
                                char *pe, *p = buff + 9;
                                FILE *ftmp;
-                               if (skip_mode) continue;
-                               while (*p && (*p == ' ' || *p == '\"')) p++;
-                               for (pe = p + strlen(p) - 1; pe > p; pe--)
+                               if (skip_mode)
+                                       continue;
+                               while (*p && (*p == ' ' || *p == '\"'))
+                                       p++;
+                               for (pe = p + strlen(p) - 1; pe > p; pe--) {
                                        if (isspace(*pe) || *pe == '\"') *pe = 0;
                                        else break;
-                               ftmp = fopen(p, "r");
+                               }
+                               snprintf(path_file, sizeof(path_file), "%s%s", path, p);
+                               ftmp = fopen(path_file, "r");
                                if (ftmp == NULL) {
                                        printf("%i: error: failed to include \"%s\"\n", line, p);
                                        return 1;
@@ -125,8 +152,9 @@ int main(int argc, char *argv[])
                                while (!feof(ftmp))
                                {
                                        fgs = fgets(buff, sizeof(buff), ftmp);
-                                       if (fgs == NULL) break;
-                                       fputs(buff, fo);
+                                       if (fgs == NULL)
+                                               break;
+                                       my_fputs(buff, fo);
                                }
                                fclose(ftmp);
                                continue;
@@ -138,7 +166,7 @@ int main(int argc, char *argv[])
                if (!skip_mode)
                {
                        do_counters(buff);
-                       fputs(buff, fo);
+                       my_fputs(buff, fo);
                }
        }