Copy PicoDrive.gpe, pico940_v3.bin and mmuhack.o to any place in your filesystem\r
(all 3 files must be in the same directory) and run PicoDrive.gpe.\r
Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.\r
-\r
#endif\r
#ifdef GIZ\r
First make sure you have homebrew-enabled Service Pack installed. Then copy\r
(some of them might require renaming PicoDrive.exe to Autorun.exe, placing it in\r
the root of SD, etc). Then load a ROM and enjoy! ROMs can be placed anywhere, can\r
be in .smd or .bin format and can be zipped (one ROM per zip).\r
-\r
#endif\r
#ifdef PSP\r
If you are running a custom firmware, just copy the whole PicoDrive directory to\r
which one GAME* directory to use).\r
\r
If you are on 1.5, there is a separate KXploited version for it.\r
-\r
#endif\r
+#ifdef UIQ\r
+Copy SIS and some ROMs to any directory in your memory stick, and install the SIS.\r
+Then load a ROM and enjoy! ROMs can be in .smd or .bin format and can be zipped.\r
+#endif\r
+#ifndef UIQ\r
+\r
Note that this emulator may require some tweaking of configuration settings to run\r
some games well. For Genesis/MegaDrive, if you have any problems (game does not\r
boot, sound is glitchy, broken graphics), try to:\r
Some games may need to be reset after adjusting settings.\r
\r
For possible Sega/Mega CD problems, see "Other important stuff" section below.\r
+#endif\r
\r
\r
How to run Sega/Mega CD games\r
-----------------------------\r
\r
-To play any game, you need BIOS files. These files must be copied to the same\r
-directory as mentioned PicoDrive files. Files can be named as follows:\r
+To play any game, you need BIOS files. These files must be copied to\r
+#ifdef UIQ\r
+D:\other\PicoDrive\ directory.\r
+#else\r
+the same directory as mentioned PicoDrive files.\r
+#endif\r
+Files can be named as follows:\r
\r
US: us_scd1_9210.bin us_scd2_9306.bin SegaCDBIOS9303.bin\r
EU: eu_mcd1_9210.bin eu_mcd2_9303.bin eu_mcd2_9306.bin\r
---------------------\r
\r
* If your Genesis/MD game has graphical glitches, this is most likely because\r
+#ifndef UIQ\r
"accurate renderer" is not enabled (see options).\r
+#else\r
+ "Fast renderer (inaccurate)" is enabled. Try disabling it.\r
+#endif\r
* Sega/Mega CD: If the game hangs after Sega logo, you may need to enable\r
"better sync" and/or "Scale/Rot. fx" options, found in "Sega/Mega CD options"\r
submenu, and then reset the game. Some other games may also require\r
Configuration\r
-------------\r
\r
+#ifdef UIQ\r
+#include "config.txt"\r
+#else\r
@@0. "Renderer"\r
#ifdef GP2X\r
8bit fast:\r
\r
There is also option to enable 6 button pad (will allow you to configure XYZ\r
keys), and an option to set turbo rate (in Hz) for turbo buttons.\r
+#endif\r
\r
\r
Cheat support\r
* Fixed a crash when uncompressed savestate is loaded.\r
* Fixed an idle loop detection related hanging problem.\r
* PSP: fixed another palette related regression.\r
+ * UIQ3: updated frontend for the latest emu core.\r
\r
1.51a\r
* Fixed a sync problem between main and sub 68k. Should fix the hanging\r
#include <stdio.h>
#include <string.h>
+#include <ctype.h>
static int check_defines(const char **defs, int defcount, char *tdef)
{
int i, len;
+ while (isspace(*tdef)) tdef++;
len = strlen(tdef);
for (i = 0; i < len; i++)
if (tdef[i] == ' ' || tdef[i] == '\r' || tdef[i] == '\n') break;
{
char buff[1024];
FILE *fi, *fo;
- int skip_mode = 0, ifdef_level = 0, line = 0;
+ int skip_mode = 0, ifdef_level = 0, skip_level = 0, line = 0;
if (argc < 3)
{
/* control char */
if (strncmp(buff, "#ifdef ", 7) == 0)
{
- if (!check_defines((void *) &argv[3], argc-3, buff + 7)) skip_mode = 1;
ifdef_level++;
+ if (!skip_mode && !check_defines((void *) &argv[3], argc-3, buff + 7))
+ skip_mode = 1, skip_level = ifdef_level;
}
else if (strncmp(buff, "#ifndef ", 8) == 0)
{
- if ( check_defines((void *) &argv[3], argc-3, buff + 7)) skip_mode = 1;
ifdef_level++;
+ if (!skip_mode && check_defines((void *) &argv[3], argc-3, buff + 8))
+ skip_mode = 1, skip_level = ifdef_level;
}
else if (strncmp(buff, "#else", 5) == 0)
{
- skip_mode ^= 1;
+ if (!skip_mode || skip_level == ifdef_level)
+ skip_mode ^= 1, skip_level = ifdef_level;
}
else if (strncmp(buff, "#endif", 6) == 0)
{
+ if (skip_level == ifdef_level)
+ skip_mode = 0;
ifdef_level--;
if (ifdef_level == 0) skip_mode = 0;
if (ifdef_level < 0)
ifdef_level = 0;
}
}
+ else if (strncmp(buff, "#include ", 9) == 0)
+ {
+ char *pe, *p = buff + 9;
+ FILE *ftmp;
+ if (skip_mode) continue;
+ while (*p && (*p == ' ' || *p == '\"')) p++;
+ for (pe = p + strlen(p) - 1; pe > p; pe--)
+ if (isspace(*pe) || *pe == '\"') *pe = 0;
+ else break;
+ ftmp = fopen(p, "r");
+ if (ftmp == NULL) {
+ printf("%i: error: failed to include \"%s\"\n", line, p);
+ return 1;
+ }
+ while (!feof(ftmp))
+ {
+ fgs = fgets(buff, sizeof(buff), ftmp);
+ if (fgs == NULL) break;
+ fputs(buff, fo);
+ }
+ fclose(ftmp);
+ continue;
+ }
/* skip line */
continue;