From c2e83bcd16add6d776ea9ace7bc4e2622277f48e Mon Sep 17 00:00:00 2001 From: notaz 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.2