\r
#include <stdlib.h> // size_t\r
\r
-// port-specific compile-time settings\r
-#include <port_config.h>\r
-\r
#ifdef __cplusplus\r
extern "C" {\r
#endif\r
#define POPT_EN_Z80 (1<< 2)\r
#define POPT_EN_STEREO (1<< 3)\r
#define POPT_ALT_RENDERER (1<< 4) // 00 00x0\r
-#define POPT_6BTN_PAD (1<< 5)\r
+// unused (1<< 5)\r
// unused (1<< 6)\r
#define POPT_ACC_SPRITES (1<< 7)\r
#define POPT_DIS_32C_BORDER (1<< 8) // 00 0x00\r
#define PAHW_PICO (1<<3)\r
#define PAHW_SMS (1<<4)\r
extern int PicoAHW; // Pico active hw\r
+\r
+#define PQUIRK_FORCE_6BTN (1<<0)\r
+extern int PicoQuirks;\r
+\r
extern int PicoSkipFrame; // skip rendering frame, but still do sound (if enabled) and emulation stuff\r
extern int PicoRegionOverride; // override the region detection 0: auto, 1: Japan NTSC, 2: Japan PAL, 4: US, 8: Europe\r
extern int PicoAutoRgnOrder; // packed priority list of regions, for example 0x148 means this detection order: EUR, USA, JAP\r
typedef union { int vint; void *vptr; } pint_ret_t;\r
void PicoGetInternal(pint_t which, pint_ret_t *ret);\r
\r
-// cd/Pico.c\r
+// cd/mcd.c\r
extern void (*PicoMCDopenTray)(void);\r
extern void (*PicoMCDcloseTray)(void);\r
extern int PicoCDBuffers;\r
PDF_RGB555, // RGB/BGR output, depends on compile options\r
PDF_8BIT, // 8-bit out (handles shadow/hilight mode, sonic water)\r
} pdso_t;\r
-void PicoDrawSetOutFormat(pdso_t which, int allow_32x);\r
+void PicoDrawSetOutFormat(pdso_t which, int use_32x_line_mode);\r
void PicoDrawSetOutBuf(void *dest, int increment);\r
void PicoDrawSetCallbacks(int (*begin)(unsigned int num), int (*end)(unsigned int num));\r
extern void *DrawLineDest;\r
extern void (*PicoPrepareCram)(); // prepares PicoCramHigh for renderer to use\r
\r
// pico.c (32x)\r
-// multipliers against 68k clock (7670442)\r
-// normally * 3, but effectively slower due to high latencies everywhere\r
-// however using something lower breaks MK2 animations\r
-extern int p32x_msh2_multiplier;\r
-extern int p32x_ssh2_multiplier;\r
-#define SH2_MULTI_SHIFT 10\r
-#define MSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3)\r
-#define SSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3)\r
-\r
-// 32x/draw.c\r
-void PicoDraw32xSetFrameMode(int is_on, int only_32x);\r
+#ifndef NO_32X\r
+\r
+void Pico32xSetClocks(int msh2_hz, int ssh2_hz);\r
+\r
+#else\r
+\r
+#define Pico32xSetClocks(msh2_khz, ssh2_khz)\r
+\r
+#endif\r
+\r
+// normally 68k clock (7670442) * 3, in reality but much lower\r
+// because of high memory latencies\r
+#define PICO_MSH2_HZ ((int)(7670442.0 * 2.4))\r
+#define PICO_SSH2_HZ ((int)(7670442.0 * 2.4))\r
\r
// sound.c\r
extern int PsndRate,PsndLen;\r
\r
extern unsigned char media_id_header[0x100];\r
\r
+// memory.c\r
+enum input_device {\r
+ PICO_INPUT_NOTHING,\r
+ PICO_INPUT_PAD_3BTN,\r
+ PICO_INPUT_PAD_6BTN,\r
+};\r
+void PicoSetInputDevice(int port, enum input_device device);\r
+\r
#ifdef __cplusplus\r
} // End of extern "C"\r
#endif\r