mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
1.80 readme and filter for it
don't know why this wasn't commited back in 2010.. git-svn-id: file:///home/notaz/opt/svn/PicoDrive@927 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
40a91e5cc8
commit
39e5b215d3
2 changed files with 88 additions and 46 deletions
|
@ -13,13 +13,15 @@ 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
|
Pocket PC. The Sega/Mega CD code is roughly based on Stephane Dallongeville's
|
||||||
Gens.
|
Gens.
|
||||||
#else
|
#else
|
||||||
This is yet another Megadrive / Genesis / Sega CD / Mega CD emulator, which
|
This is yet another Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS
|
||||||
was written having ARM-based handheld devices in mind (such as PDAs,
|
emulator, which was written having ARM-based handheld devices in mind
|
||||||
smartphones and handheld consoles like GP2X and Gizmondo of course).
|
(such as PDAs, smartphones and handheld consoles like GP2X and Gizmondo
|
||||||
The critical parts (renderer, 68K and Z80 cpu interpreters) and some other
|
of course).
|
||||||
random code is written in ARM asm, other code is C. The base code originates
|
The emulator is heavily optimized for ARM, features assembly cores for
|
||||||
from Dave's (fdave, finalburn) PicoDrive 0.30 for Pocket PC. The Sega/Mega CD
|
68k, Z80 and VDP chip emulation, also has dynamic recompilers for SH2 and
|
||||||
code is roughly based on Stephane Dallongeville's Gens.
|
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
|
#endif
|
||||||
|
|
||||||
PicoDrive is the first emulator ever to properly emulate Virtua Racing and
|
PicoDrive is the first emulator ever to properly emulate Virtua Racing and
|
||||||
|
@ -31,8 +33,8 @@ How to make it run
|
||||||
|
|
||||||
#ifdef GP2X
|
#ifdef GP2X
|
||||||
Extract all files to some directory on your SD and run PicoDrive.gpe from your
|
Extract all files to some directory on your SD and run PicoDrive.gpe from your
|
||||||
GP2X/Wiz menu. The same .gpe supports GP2X F100/F200 and Wiz, there is no need
|
GP2X/Wiz/Caanoo menu. The same .gpe supports GP2X F100/F200, Wiz and Caanoo,
|
||||||
to use separate versions.
|
there is no need to use separate versions.
|
||||||
Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.
|
Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.
|
||||||
Sega/Mega CD images can be in ISO/CSO+MP3/WAV or CUE+BIN formats (read below
|
Sega/Mega CD images can be in ISO/CSO+MP3/WAV or CUE+BIN formats (read below
|
||||||
for more details).
|
for more details).
|
||||||
|
@ -230,6 +232,9 @@ Enters Display options menu (see below).
|
||||||
@@0. "[Sega/Mega CD options]"
|
@@0. "[Sega/Mega CD options]"
|
||||||
Enters Sega/Mega CD options menu (see below).
|
Enters Sega/Mega CD options menu (see below).
|
||||||
|
|
||||||
|
@@0. "[32X options]"
|
||||||
|
Enters 32X options menu (see below).
|
||||||
|
|
||||||
@@0. "[Advanced options]"
|
@@0. "[Advanced options]"
|
||||||
Enters advanced options menu (see below).
|
Enters advanced options menu (see below).
|
||||||
|
|
||||||
|
@ -239,7 +244,7 @@ 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.
|
You can press left/right to switch to a different config profile.
|
||||||
|
|
||||||
@@0. "Save cfg for current game only"
|
@@0. "Save cfg for current game only"
|
||||||
Whenever you load current ROM again these settings will be loaded
|
Whenever you load current ROM again these settings will be loaded.
|
||||||
|
|
||||||
@@0. "Restore defaults"
|
@@0. "Restore defaults"
|
||||||
Restores all options (except controls) to defaults.
|
Restores all options (except controls) to defaults.
|
||||||
|
@ -259,12 +264,14 @@ 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
|
Other two are accurate line-based renderers. The 8bit is faster but does not
|
||||||
run well with some games like Street Racer.
|
run well with some games like Street Racer.
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef GIZ
|
#ifdef GIZ
|
||||||
This option allows to switch between 16bit and 8bit renderers. The 8bit one is
|
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
|
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
|
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.
|
graphics problems for some games, so it's best to use 16bit one.
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef PSP
|
#ifdef PSP
|
||||||
This option allows to switch between fast and accurate renderers. The fast one
|
This option allows to switch between fast and accurate renderers. The fast one
|
||||||
|
@ -272,18 +279,10 @@ is much faster, because it draws the whole frame at a time, instead of doing it
|
||||||
line by line, like the accurate one does. But because of the way it works it
|
line by line, like the accurate one does. But because of the way it works it
|
||||||
can't render any mid-frame image changes (raster effects), so it is useful only
|
can't render any mid-frame image changes (raster effects), so it is useful only
|
||||||
for some games.
|
for some games.
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef GP2X
|
#ifdef GP2X
|
||||||
@@1. "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). Note that Wiz doesn't have the hardware scaler.
|
|
||||||
|
|
||||||
@@1. "Tearing Fix"
|
@@1. "Tearing Fix"
|
||||||
Wiz only: works around the tearing problem by using portrait mode. Causes ~5-10%
|
Wiz only: works around the tearing problem by using portrait mode. Causes ~5-10%
|
||||||
performance hit, but eliminates the tearing effect.
|
performance hit, but eliminates the tearing effect.
|
||||||
|
@ -297,7 +296,7 @@ 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
|
used (suggested by A_SN from gp32x boards). Intended to be used for F100, makes
|
||||||
difference for dark and bright colors.
|
difference for dark and bright colors.
|
||||||
|
|
||||||
@@1. "Perfect vsync"
|
@@1. "Vsync"
|
||||||
This one adjusts the LCD refresh rate to better match game's refresh rate and
|
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
|
starts synchronizing rendering with it. Should make scrolling smoother and
|
||||||
eliminate tearing on F100/F200.
|
eliminate tearing on F100/F200.
|
||||||
|
@ -365,7 +364,7 @@ Scale the image up, but keep 4:3 aspect, by adding black borders.
|
||||||
Adjust the resizing options to make the game image fullscreen.
|
Adjust the resizing options to make the game image fullscreen.
|
||||||
#endif
|
#endif
|
||||||
#ifdef PANDORA
|
#ifdef PANDORA
|
||||||
To be updated..
|
Allows to set up scaling, filtering and vertical sync.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -395,8 +394,8 @@ Here you can enable 64K RAM cart. Format it in BIOS if you do.
|
||||||
|
|
||||||
@@2. "Scale/Rot. fx"
|
@@2. "Scale/Rot. fx"
|
||||||
The Sega/Mega CD had scaling/rotation chip, which allows effects similar to
|
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
|
"Mode 7" effects in SNES. Disabling may improve performance but cause graphical
|
||||||
used it, so it's better to disable this option, unless game really needs it.
|
glitches.
|
||||||
|
|
||||||
@@2. "Better sync"
|
@@2. "Better sync"
|
||||||
This option is similar to "Perfect synchro" in Gens. Some games require it to run,
|
This option is similar to "Perfect synchro" in Gens. Some games require it to run,
|
||||||
|
@ -404,30 +403,53 @@ 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.
|
games which don't need it, it will just slow them down.
|
||||||
|
|
||||||
|
|
||||||
|
32X options
|
||||||
|
-----------
|
||||||
|
|
||||||
|
@@3. "32X enabled"
|
||||||
|
Enables emulation of addon. Option only takes effect when ROM is reloaded.
|
||||||
|
|
||||||
|
#ifdef GP2X
|
||||||
|
@@3. "32X renderer"
|
||||||
|
This currently only affects how the Genesis/MD layers are rendered, which is
|
||||||
|
same as "Renderer" in display options.
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@@3. "PWM sound"
|
||||||
|
Emulates PWM sound portion of 32X hardware. Disabling this may greatly improve
|
||||||
|
performance for games that dedicate one of SD2s for sound, but will cause
|
||||||
|
missing sound effects and instruments.
|
||||||
|
|
||||||
|
@@3. "Master SH2 cycles" / "Slave SH2 cycles"
|
||||||
|
This allows underclocking the 32X CPUs for better emulation performance. The
|
||||||
|
number has the same meaning as cycles in DOSBox, which is cycles per millisecond.
|
||||||
|
Underclocking too much may cause various in-game glitches.
|
||||||
|
|
||||||
|
|
||||||
Advanced configuration
|
Advanced configuration
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
@@3. "Use SRAM/BRAM savestates"
|
@@4. "Use SRAM/BRAM savestates"
|
||||||
This will automatically read/write SRAM (or BRAM for Sega/Mega CD) savestates for
|
This will automatically read/write SRAM (or BRAM for Sega/Mega CD) savestates for
|
||||||
games which are using them. SRAM is saved whenever you enter the menu or exit the
|
games which are using them. SRAM is saved whenever you enter the menu or exit the
|
||||||
emulator.
|
emulator.
|
||||||
|
|
||||||
@@3. "Disable sprite limit"
|
@@4. "Disable sprite limit"
|
||||||
The MegaDrive/Genesis had a limit on how many sprites (usually smaller moving
|
The MegaDrive/Genesis had a limit on how many sprites (usually smaller moving
|
||||||
objects) can be displayed on single line. This option allows to disable that
|
objects) can be displayed on single line. This option allows to disable that
|
||||||
limit. Note that some games used this to hide unwanted things, so it is not
|
limit. Note that some games used this to hide unwanted things, so it is not
|
||||||
always good to enable this option.
|
always good to enable this option.
|
||||||
|
|
||||||
@@3. "Emulate Z80"
|
@@4. "Emulate Z80"
|
||||||
Enables emulation of Z80 chip, which was mostly used to drive the other sound chips.
|
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
|
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.
|
sound to be able to play them.
|
||||||
|
|
||||||
@@3. "Emulate YM2612 (FM)"
|
@@4. "Emulate YM2612 (FM)"
|
||||||
This enables emulation of six-channel FM sound synthesizer chip, which was used to
|
This enables emulation of six-channel FM sound synthesizer chip, which was used to
|
||||||
produce sound effects and music.
|
produce sound effects and music.
|
||||||
|
|
||||||
@@3. "Emulate SN76496 (PSG)"
|
@@4. "Emulate SN76496 (PSG)"
|
||||||
This enables emulation of PSG (programmable sound generation) sound chip for
|
This enables emulation of PSG (programmable sound generation) sound chip for
|
||||||
additional effects.
|
additional effects.
|
||||||
|
|
||||||
|
@ -435,36 +457,36 @@ 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
|
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.
|
startup, and this data is lost when sound chips are being enabled/disabled.
|
||||||
|
|
||||||
@@3. "gzip savestates"
|
@@4. "gzip savestates"
|
||||||
This will always apply gzip compression on your savestates, allowing you to
|
This will always apply gzip compression on your savestates, allowing you to
|
||||||
save some space and load/save time.
|
save some space and load/save time.
|
||||||
|
|
||||||
@@3. "Don't save last used ROM"
|
@@4. "Don't save last used ROM"
|
||||||
This will disable writing last used ROM to config on exit (what might cause SD
|
This will disable writing last used ROM to config on exit (what might cause SD
|
||||||
card corruption according to DaveC).
|
card corruption according to DaveC).
|
||||||
|
|
||||||
@@3. "Disable idle loop patching"
|
@@4. "Disable idle loop patching"
|
||||||
Idle loop patching is used to improve performance, but may cause compatibility
|
Idle loop patching is used to improve performance, but may cause compatibility
|
||||||
problems in some rare cases. Try disabling this if your game has problems.
|
problems in some rare cases. Try disabling this if your game has problems.
|
||||||
|
|
||||||
@@3. "Disable frame limiter"
|
@@4. "Disable frame limiter"
|
||||||
This allows games to run faster then 50/60fps, useful for benchmarking.
|
This allows games to run faster then 50/60fps, useful for benchmarking.
|
||||||
|
|
||||||
#ifdef GP2X
|
#ifdef GP2X
|
||||||
@@3. "Use ARM940 core for sound"
|
@@4. "Use ARM940 core for sound"
|
||||||
F100/F200: This option causes PicoDrive to use ARM940T core (GP2X's second CPU)
|
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.
|
for sound (i.e. to generate YM2612 samples) to improve performance noticeably.
|
||||||
It also decodes MP3s in Sega/Mega CD mode.
|
It also decodes MP3s in Sega/Mega CD mode.
|
||||||
|
|
||||||
@@3. "RAM overclock"
|
@@4. "RAM overclock"
|
||||||
This overclocks the GP2X RAM chips for improved performance, but may cause
|
This overclocks the GP2X RAM chips for improved performance, but may cause
|
||||||
instability. Keep it enabled if it doesn't cause problems.
|
instability. Keep it enabled if it doesn't cause problems.
|
||||||
|
|
||||||
@@3. "MMU hack"
|
@@4. "MMU hack"
|
||||||
Makes framebuffer bufferable for improved performance. There are no drawbacks
|
Makes framebuffer bufferable for improved performance. There are no drawbacks
|
||||||
so it should be left enabled.
|
so it should be left enabled.
|
||||||
|
|
||||||
@@3. "SVP dynarec"
|
@@4. "SVP dynarec"
|
||||||
This enables dynamic recompilation for SVP chip emulated for Virtua Racing game,
|
This enables dynamic recompilation for SVP chip emulated for Virtua Racing game,
|
||||||
what improves it's emulation performance greatly.
|
what improves it's emulation performance greatly.
|
||||||
#endif
|
#endif
|
||||||
|
@ -540,7 +562,7 @@ VDP: yes, except some quirks and modes not used by games
|
||||||
YM2612 FM: yes, optimized MAME core
|
YM2612 FM: yes, optimized MAME core
|
||||||
SN76489 PSG: yes, MAME core
|
SN76489 PSG: yes, MAME core
|
||||||
SVP chip: yes! This is first emu to ever do this.
|
SVP chip: yes! This is first emu to ever do this.
|
||||||
Some in-cart mappers are supported too.
|
Some in-cart mappers are also supported.
|
||||||
|
|
||||||
Sega/Mega CD:
|
Sega/Mega CD:
|
||||||
#ifdef PSP
|
#ifdef PSP
|
||||||
|
@ -553,11 +575,15 @@ PCM sound source: yes
|
||||||
CD-ROM controller: yes (mostly)
|
CD-ROM controller: yes (mostly)
|
||||||
bram (internal backup RAM): yes
|
bram (internal backup RAM): yes
|
||||||
|
|
||||||
|
32X:
|
||||||
|
2x SH2 @ 23MHz: yes, custom recompiler
|
||||||
|
Super VDP: yes
|
||||||
|
PWM: yes
|
||||||
|
|
||||||
|
|
||||||
Problems / limitations
|
Problems / limitations
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
* 32x is not emulated.
|
|
||||||
#ifdef PSP
|
#ifdef PSP
|
||||||
* SVP emulation is terribly slow.
|
* SVP emulation is terribly slow.
|
||||||
#endif
|
#endif
|
||||||
|
@ -573,7 +599,7 @@ Credits
|
||||||
This emulator is made of the code from following people/projects:
|
This emulator is made of the code from following people/projects:
|
||||||
|
|
||||||
notaz
|
notaz
|
||||||
GP2X, UIQ, PSP, Gizmondo ports, CPU core hacks,
|
GP2X, UIQ, PSP, Gizmondo ports, CPU core hacks, dynamic recompilers,
|
||||||
lots of additional coding (see changelog).
|
lots of additional coding (see changelog).
|
||||||
Homepage: http://notaz.gp2x.de/
|
Homepage: http://notaz.gp2x.de/
|
||||||
|
|
||||||
|
@ -627,7 +653,7 @@ Additional thanks
|
||||||
* Haze for his research (http://haze.mameworld.info).
|
* Haze for his research (http://haze.mameworld.info).
|
||||||
* Lordus, Exophase and Rokas for various ideas.
|
* Lordus, Exophase and Rokas for various ideas.
|
||||||
* Nemesis for his YM2612 research.
|
* Nemesis for his YM2612 research.
|
||||||
* Many posters at spritesmind.net forums valuable information.
|
* Many posters at spritesmind.net forums for valuable information.
|
||||||
* Mark and Jean-loup for zlib library.
|
* Mark and Jean-loup for zlib library.
|
||||||
* ketchupgun for the skin.
|
* ketchupgun for the skin.
|
||||||
#ifdef GP2X
|
#ifdef GP2X
|
||||||
|
@ -657,6 +683,20 @@ Additional thanks
|
||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
---------
|
---------
|
||||||
|
1.80
|
||||||
|
+ 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
|
1.80beta2
|
||||||
* Pandora: updated documentation.
|
* Pandora: updated documentation.
|
||||||
|
|
||||||
|
|
|
@ -25,17 +25,19 @@ static int check_defines(const char **defs, int defcount, char *tdef)
|
||||||
|
|
||||||
static void do_counters(char *str)
|
static void do_counters(char *str)
|
||||||
{
|
{
|
||||||
static int counters[4] = { 1, 1, 1, 1 };
|
static int counter_id = -1, counter;
|
||||||
char buff[1024];
|
char buff[1024];
|
||||||
int counter;
|
|
||||||
char *s = str;
|
char *s = str;
|
||||||
|
|
||||||
while ((s = strstr(s, "@@")))
|
while ((s = strstr(s, "@@")))
|
||||||
{
|
{
|
||||||
if (s[2] < '0' || s[2] > '3') { s++; continue; }
|
if (s[2] < '0' || s[2] > '9') { s++; continue; }
|
||||||
|
|
||||||
counter = s[2] - '0';
|
if (counter_id != s[2] - '0') {
|
||||||
snprintf(buff, sizeof(buff), "%i%s", counters[counter]++, s + 3);
|
counter_id = s[2] - '0';
|
||||||
|
counter = 1;
|
||||||
|
}
|
||||||
|
snprintf(buff, sizeof(buff), "%i%s", counter++, s + 3);
|
||||||
strcpy(s, buff);
|
strcpy(s, buff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue