some readme and general cleanups

This commit is contained in:
notaz 2013-08-31 18:03:41 +03:00
parent 9a1f192a14
commit 92dfd9afa6
10 changed files with 43 additions and 469 deletions

View file

@ -57,7 +57,7 @@ static void PicoSVPReset(void)
memcpy(svp->iram_rom + 0x800, Pico.rom + 0x800, 0x20000 - 0x800);
ssp1601_reset(&svp->ssp1601);
#ifdef _SVP_DRC
if ((PicoOpt&POPT_EN_SVP_DRC) && svp_dyn_ready)
if ((PicoOpt & POPT_EN_DRC) && svp_dyn_ready)
ssp1601_dyn_reset(&svp->ssp1601);
#endif
}
@ -77,7 +77,7 @@ static void PicoSVPLine(void)
#endif
#ifdef _SVP_DRC
if ((PicoOpt&POPT_EN_SVP_DRC) && svp_dyn_ready)
if ((PicoOpt & POPT_EN_DRC) && svp_dyn_ready)
ssp1601_dyn_run(PicoSVPCycles * count);
else
#endif
@ -151,7 +151,7 @@ void PicoSVPStartup(void)
// init SVP compiler
svp_dyn_ready = 0;
#ifdef _SVP_DRC
if (PicoOpt & POPT_EN_SVP_DRC) {
if (PicoOpt & POPT_EN_DRC) {
if (ssp1601_dyn_startup())
return;
svp_dyn_ready = 1;

View file

@ -60,11 +60,11 @@ extern void *p32x_bios_g, *p32x_bios_m, *p32x_bios_s;
#define POPT_EN_MCD_PCM (1<<10)
#define POPT_EN_MCD_CDDA (1<<11)
#define POPT_EN_MCD_GFX (1<<12) // 00 x000
#define POPT_EN_MCD_PSYNC (1<<13)
// unused (1<<13)
#define POPT_EN_SOFTSCALE (1<<14)
#define POPT_EN_MCD_RAMCART (1<<15)
#define POPT_DIS_VDP_FIFO (1<<16) // 0x 0000
#define POPT_EN_SVP_DRC (1<<17)
#define POPT_EN_DRC (1<<17)
#define POPT_DIS_SPRITE_LIM (1<<18)
#define POPT_DIS_IDLE_DET (1<<19)
#define POPT_EN_32X (1<<20)

View file

@ -4,25 +4,15 @@ PicoDrive 1.xx
About
-----
#ifdef PSP
This is yet another Megadrive / Genesis emulator for PSP, but with
Sega CD / Mega CD support. Although it has been originally written having
ARM CPU based devices in mind, it has now been ported to PSP too, by
replacing ARM specific parts with portable C code.
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.
#else
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 PDAs, smartphones and handheld consoles like GP2X and Gizmondo
of course).
(such as smartphones and handheld consoles like GP2X and Pandora).
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 by notaz and developed primarily for GPH devices.
#endif
then taken over and expanded by notaz.
PicoDrive is the first emulator ever to properly emulate Virtua Racing and
it's SVP chip.
@ -54,36 +44,26 @@ which one GAME* directory to use).
If you are on 1.5, there is a separate KXploited version for it.
#endif
#ifdef UIQ
Copy SIS and some ROMs to any directory in your memory stick, and install the SIS.
Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.
#endif
#ifdef PANDORA
Just copy the .pnd to <sd card>/pandora/menu or <sd card>/pandora/desktop.
#endif
#ifndef UIQ
This emulator has lots of options with various tweaks (for improved speed mostly),
but it should have best compatibility in it's default config. If suddently you
but it should have best compatibility in it's default config. If suddenly you
start getting glitches or change something and forget what, use "Restore defaults"
option.
#endif
How to run Sega/Mega CD games
-----------------------------
To play any game, you need BIOS files. These files must be copied to
#ifdef UIQ
D:\other\PicoDrive\ directory.
#else
To play any CD game, you need BIOS files. These files must be copied to
#ifdef PANDORA
<sd card>/pandora/appdata/PicoDrive/ directory
<sd card>/pandora/appdata/picodrive/ directory
(if you run PicoDrive once it will create that directory for you).
#else
the same directory as PicoDrive files.
#endif
#endif
Files can be named as follows:
US: us_scd1_9210.bin us_scd2_9306.bin SegaCDBIOS9303.bin
@ -91,79 +71,31 @@ 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/CSO+MP3/WAV or CUE+BIN format. When using
CUE/BIN, you must load .cue file from the menu, or else the emu will not find
audio tracks.
CUE/BIN usually takes a lot of space, so it can be converted to cue/cso/mp3 by
#ifdef PANDORA
using bin_to_cso_mp3 tool, which can be downloaded from:
http://notaz.gp2x.de/releases/misc/bin_to_cso_mp3.zip
See readme in the bin_to_cso_mp3/ directory for details.
#else
using bin_to_cso_mp3 tool, which is included with the emulator. See readme in
the bin_to_cso_mp3/ directory for details.
#endif
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
...
In case there is a .cue file with properly specified files names in it,
file naming doesn't matter. Just be sure to load .cue from the menu.
It is very important to have the MP3s encoded at 44kHz sample rate and they
must be stereo, or else they will play too fast/slow or won't play at all.
Be sure NOT to use anything but classic mp3 format (don't use things like
mp3pro).
ISO files can also be .cso compressed or zipped (but not mp3 files, as they
are already compressed). CSO will cause slightly longer loading times, and
is not very good for FMV games. Zipping ISOs is not recommended, as it will
cause very long (several minute) loading times, and make some games
unplayable. File naming is similar as with uncompressed ISOs.
Example:
SonicCD.cso data track
SonicCD_02.mp3 audio track 1 (CD track 2)
SonicCD_03.mp3
...
The game must be dumped to CUE+BIN or CUE+ISO format.
ISO/CSO+MP3/WAV is also supported, but may cause problems.
When using CUE/BIN, you must load .cue file from the menu, or else
the emu will not find audio tracks.
Other important stuff
---------------------
* 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 be enabled to work (enabled by default).
Incorrectly named/missing mp3s may also be the cause.
* Sega/Mega CD: If the background music is missing, you might have named your
MP3s incorrectly. Read "How to run Sega/Mega CD games" section again.
* Sega/Mega CD: If the game music plays too fast/too slow/out of sync, you have
encoded your MP3s incorrectly. You will have to re-encode and/or resample them.
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.
Some games (like Snatcher) may hang in certain scenes because of this.
Some mp3 rippers/encoders remove silence and beginning/end of audio tracks,
what causes audio desyncs and/or mentioned problems.
If you have cue/bin rip, you can use the bin_to_cso_mp3 tool (included with
the emulator) to make a proper iso/mp3 rip.
* Sega/Mega CD: If your games hangs at the BIOS screen (with planets shown),
you may be using a bad BIOS dump. Try another from a different source.
* Some Sega/Mega CD games don't use Z80 for anything, but they leave it active,
so disabling Z80 manually (in advanced options) improves performance.
* Use lower bitrate for better performance (96 or 128kbps CBRs recommended).
* Sega/Mega CD: If the background music is missing, the CD image format may be
wrong. Currently .cue/bin is recommended. Be aware that there are lots of bad
dumps on the web, and some use mp3 format for audio, which often causes
problems (see below).
* While iso/mp3 format is supported, it's not recommended to use.
Some of many problems with mp3 are listed below:
* MP3s may be named incorrectly and will not play.
* The game music may play too fast/too slow/out of sync, which means they
are encoded incorrectly. PicoDrive is not a mp3 player, so all mp3s MUST
be encoded at 44.1kHz stereo.
* Sega/Mega CD: If your games hang at the BIOS screen (with planets shown),
you may be using a bad BIOS dump. Try another from a different source,
like dumping it from your own console.
#ifdef GP2X
* What using mp3s, use lower bitrate for better performance (96 or 128kbps
CBRs recommended).
* GP2X F100/F200: 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
@ -177,9 +109,6 @@ Other important stuff
Configuration
-------------
#ifdef UIQ
#include "config.txt"
#else
@@0. "Save slot"
This is a slot number to use for savestates, when done by a button press outside
menu. This can also be configured to be changed with a button
@ -214,18 +143,6 @@ Allows to enable confirmation on savestate saving (to prevent savestate overwrit
on loading (to prevent destroying current game progress), and on both or none, when
using shortcut buttons (not menu) for saving/loading.
#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
#ifdef PSP
@@0. "CPU/bus clock"
This allows to change CPU and bus clocks for PSP. 333MHz is recommended.
#endif
@@0. "[Display options]"
Enters Display options menu (see below).
@ -291,11 +208,6 @@ performance hit, but eliminates the tearing effect.
F100/F200 only: 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"
F100/F200 only: If this is enabled, different gamma adjustment method will be
used (suggested by A_SN from gp32x boards). Intended to be used for F100, makes
difference for dark and bright colors.
@@1. "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
@ -394,13 +306,8 @@ 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. Disabling may improve performance but cause graphical
glitches.
@@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.
"Mode 7" effects in SNES. On slow systems like GP2X, disabling may improve
performance but cause graphical glitches.
32X options
@ -478,18 +385,10 @@ F100/F200: This option causes PicoDrive to use ARM940T core (GP2X's second CPU)
for sound (i.e. to generate YM2612 samples) to improve performance noticeably.
It also decodes MP3s in Sega/Mega CD mode.
@@4. "RAM overclock"
This overclocks the GP2X RAM chips for improved performance, but may cause
instability. Keep it enabled if it doesn't cause problems.
@@4. "MMU hack"
Makes framebuffer bufferable for improved performance. There are no drawbacks
so it should be left enabled.
#endif
@@4. "SVP dynarec"
This enables dynamic recompilation for SVP chip emulated for Virtua Racing game,
what improves it's emulation performance greatly.
#endif
Key configuration
@ -498,14 +397,9 @@ 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 column your handheld ones, which are assigned.
#ifndef PANDORA
If you bind 2 different 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).
#endif
There is also option to enable 6 button pad (will allow you to configure XYZ
buttons), and an option to set turbo rate (in Hz) for turbo buttons.
#ifndef UIQ
Cheat support
@ -544,7 +438,6 @@ 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.
#endif
What is emulated?
@ -607,7 +500,6 @@ fDave
one who started it all:
Cyclone 68000 core and PicoDrive itself
#ifdef PSP
Chui
FAME/C 68k interpreter core
(based on C68K by Stephane Dallongeville)
@ -615,12 +507,10 @@ FAME/C 68k interpreter core
Stephane Dallongeville (written), NJ (optimized)
CZ80 Z80 interpreter core
#else
Reesy & FluBBa
DrZ80, the Z80 interpreter written in ARM assembly.
Homepage: http://reesy.gp32x.de/
#endif
Tatsuyuki Satoh, Jarek Burczynski, MAME development
software implementation of Yamaha FM sound generator
@ -635,10 +525,6 @@ Gens, MD/Mega CD/32X emulator. Most Sega CD code is based on this emu.
people @ ps2dev.org forums / PSPSDK crew
libaudiocodec code (by cooleyes)
other sample code
#else
Helix community
Helix mp3 decoder
#endif
@ -653,6 +539,7 @@ Additional thanks
* Haze for his research (http://haze.mameworld.info).
* Lordus, Exophase and Rokas for various ideas.
* Nemesis for his YM2612 research.
* Eke
* Many posters at spritesmind.net forums for valuable information.
* Mark and Jean-loup for zlib library.
* ketchupgun for the skin.
@ -669,20 +556,14 @@ Additional thanks
* 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.
#endif
* Inder for some graphics.
* Anyone else I forgot. You know who you are.
Changelog
---------
1.85
1.80
+ Added Caanoo support. Now the GP2X binary supports GP2X F100/F200, Wiz
and Caanoo. Lots of internal refactoring to support this.

View file

@ -572,7 +572,7 @@ void emu_prep_defconfig(void)
defaultConfig.EmuOpt = 0x9d | EOPT_EN_CD_LEDS;
defaultConfig.s_PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80 |
POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_MCD_GFX |
POPT_EN_SVP_DRC|POPT_ACC_SPRITES |
POPT_EN_DRC|POPT_ACC_SPRITES |
POPT_EN_32X|POPT_EN_PWM;
defaultConfig.s_PsndRate = 44100;
defaultConfig.s_PicoRegion = 0; // auto
@ -1306,7 +1306,6 @@ static void emu_loop_prep(void)
filter_old = currentConfig.filter;
}
printf("-- gamma %d\n", currentConfig.gamma);
plat_target_gamma_set(currentConfig.gamma, 0);
pemu_loop_prep();

View file

@ -438,7 +438,6 @@ static menu_entry e_menu_cd_options[] =
mee_cust ("ReadAhead buffer", MA_CDOPT_READAHEAD, mh_cdopt_ra, mgn_cdopt_ra),
mee_onoff_h("SaveRAM cart", MA_CDOPT_SAVERAM, PicoOpt, POPT_EN_MCD_RAMCART, h_srcart),
mee_onoff_h("Scale/Rot. fx (slow)", MA_CDOPT_SCALEROT_CHIP, PicoOpt, POPT_EN_MCD_GFX, h_scfx),
mee_onoff_h("Better sync (slow)", MA_CDOPT_BETTER_SYNC, PicoOpt, POPT_EN_MCD_PSYNC, h_bsync),
mee_end,
};
@ -524,7 +523,7 @@ static menu_entry e_menu_adv_options[] =
mee_onoff ("Don't save last used ROM", MA_OPT2_NO_LAST_ROM, currentConfig.EmuOpt, EOPT_NO_AUTOSVCFG),
mee_onoff ("Disable idle loop patching",MA_OPT2_NO_IDLE_LOOPS,PicoOpt, POPT_DIS_IDLE_DET),
mee_onoff ("Disable frame limiter", MA_OPT2_NO_FRAME_LIMIT,currentConfig.EmuOpt, EOPT_NO_FRMLIMIT),
mee_onoff ("Enable dynarecs", MA_OPT2_SVP_DYNAREC, PicoOpt, POPT_EN_SVP_DRC),
mee_onoff ("Enable dynarecs", MA_OPT2_DYNARECS, PicoOpt, POPT_EN_DRC),
mee_onoff ("Status line in main menu", MA_OPT2_STATUS_LINE, currentConfig.EmuOpt, EOPT_SHOW_RTC),
MENU_OPTIONS_ADV
mee_end,
@ -1222,7 +1221,7 @@ void menu_init(void)
#if defined(_SVP_DRC) || defined(DRC_SH2)
i = 1;
#endif
me_enable(e_menu_adv_options, MA_OPT2_SVP_DYNAREC, i);
me_enable(e_menu_adv_options, MA_OPT2_DYNARECS, i);
i = me_id2offset(e_menu_gfx_options, MA_OPT_VOUT_MODE);
e_menu_gfx_options[i].data = plat_target.vout_methods;

View file

@ -38,7 +38,6 @@ typedef enum
MA_OPT_SAVECFG_GAME,
MA_OPT_LOADCFG,
MA_OPT_INTERLACED, /* giz */
MA_OPT_ROTATION, /* uiq */
MA_OPT_TEARING_FIX, /* wiz */
MA_OPT_VOUT_MODE,
MA_OPT_AUTOLOAD_SAVE,
@ -54,7 +53,7 @@ typedef enum
MA_OPT2_RAMTIMINGS, /* gp2x */
MA_OPT2_STATUS_LINE, /* psp */
MA_OPT2_NO_FRAME_LIMIT, /* psp */
MA_OPT2_SVP_DYNAREC,
MA_OPT2_DYNARECS,
MA_OPT2_NO_SPRITE_LIM,
MA_OPT2_NO_IDLE_LOOPS,
MA_OPT2_DONE,
@ -81,7 +80,6 @@ typedef enum
MA_CDOPT_READAHEAD,
MA_CDOPT_SAVERAM,
MA_CDOPT_SCALEROT_CHIP,
MA_CDOPT_BETTER_SYNC,
MA_CDOPT_DONE,
MA_32XOPT_ENABLE_32X,
MA_32XOPT_RENDERER,

View file

@ -1,303 +0,0 @@
[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 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.
PicoDrive is the first emulator ever to properly emulate Virtua Racing and it's SVP chip.
For help / comments / questions visit GP32X boards at:
http://www.gp32x.com/board/
[How to make it run]
Copy PicoDrive.gpe, pico940_v3.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.
If the game has graphic problems, make sure you use "16bit accurate renderer" (press Y). If it still doesn't work, try clean copy of the emulator, as you may have config problems.
[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.gpe. 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 due to SD access issues. 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
SonicCD_02.mp3
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
SonicCD_02.mp3
SonicCD_03.mp3
...
Notes:
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.
If FMV game performance is poor, try adjusting "ReadAhead buffer" to something like 2048K.
[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. "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.
4. "Frameskip"
How many frames to skip rendering before displaying another. "Auto" is recommended.
5. "Enable sound"
Does what it says. You must enable at least YM2612 or SN76496 (in advanced options, see below) for this to make sense.
6. "Sound Quality"
Sound rate and stereo mode. If you want 44100Hz sound, it is recommended to enable the second core (next option).
7. "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.
8. "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.
9. "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.
10. "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.
11. "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.
12. "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").
13. "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).
14. "[Sega/Mega CD options]"
Enters Sega/Mega CD options menu (see below).
15. "[advanced options]"
Enters advanced options menu (see below).
16. "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).
17. "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"
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 can prefetch more data from the CD image then requested by game (to avoid accessing card later), what can improve performance in some cases.
"OFF" is the recommended setting.
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.
[Other important stuff]
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).
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). Due to internal implementation mp3s must not be larger that ~15MB (15548416 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).
[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
SVP chip: yes! This is first emu to ever do this.
Some in-cart mappers are supported too.
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
RAM cartridge: yes
[Problems / limitations]
* 32x is not emulated.
* Various VDP quirks (window bug, scroll size 2, etc.) are not emulated, as very few games use this (if any at all).
* The emulator is not 100% accurate, so some things may not work as expected.
[Credits]
This emulator is made of the code from following people/projects:
notaz
GP2X, UIQ, PSP, Gizmondo ports, CPU core 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 interpreter written in ARM assembly.
Homepage: http://reesy.gp32x.de/
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/
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.
* 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://haze.mameworld.info).
* Lordus, Exophase and Rokas for various ideas.
* Nemesis for his YM2612 research.
* Mark and Jean-loup for zlib library.
* ketchupgun for the skin.
* 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.
* Anyone else I forgot. You know who you are.
[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.

View file

@ -854,7 +854,7 @@ void retro_init(void)
| POPT_EN_32X|POPT_EN_PWM
| POPT_ACC_SPRITES|POPT_DIS_32C_BORDER;
#ifdef __arm__
PicoOpt |= POPT_EN_SVP_DRC;
PicoOpt |= POPT_EN_DRC;
#endif
PsndRate = 44100;
PicoAutoRgnOrder = 0x184; // US, EU, JP

View file

@ -31,7 +31,7 @@ void pemu_validate_config(void)
{
extern int PicoOpt;
// PicoOpt &= ~POPT_EXT_FM;
PicoOpt &= ~POPT_EN_SVP_DRC;
PicoOpt &= ~POPT_EN_DRC;
}
// FIXME: dupes from GP2X, need cleanup

View file

@ -95,7 +95,7 @@ static struct in_default_bind in_evdev_defbinds[] =
void pemu_prep_defconfig(void)
{
defaultConfig.EmuOpt |= EOPT_VSYNC|EOPT_16BPP;
defaultConfig.s_PicoOpt |= POPT_EN_MCD_GFX|POPT_EN_MCD_PSYNC;
defaultConfig.s_PicoOpt |= POPT_EN_MCD_GFX;
defaultConfig.scaling = SCALE_2x2_3x2;
}