\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 POPT_EN_MCD_PCM (1<<10)\r
#define POPT_EN_MCD_CDDA (1<<11)\r
#define POPT_EN_MCD_GFX (1<<12) // 00 x000\r
-#define POPT_EN_MCD_PSYNC (1<<13)\r
+// unused (1<<13)\r
#define POPT_EN_SOFTSCALE (1<<14)\r
#define POPT_EN_MCD_RAMCART (1<<15)\r
#define POPT_DIS_VDP_FIFO (1<<16) // 0x 0000\r
-#define POPT_EN_SVP_DRC (1<<17)\r
+#define POPT_EN_DRC (1<<17)\r
#define POPT_DIS_SPRITE_LIM (1<<18)\r
#define POPT_DIS_IDLE_DET (1<<19)\r
#define POPT_EN_32X (1<<20)\r
#define PAHW_PICO (1<<3)\r
#define PAHW_SMS (1<<4)\r
extern int PicoAHW; // Pico active hw\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
+\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 PicoRegionFPSOverride; // override the refresh rate of the region 0: Auto, 1: NTSC, 2: PAL\r
+extern int PicoAutoRgnOrder; // packed priority list of regions, for example 0x148 means this detection order: EUR, USA, JAP\r
extern int PicoSVPCycles;\r
void PicoInit(void);\r
void PicoExit(void);\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
\r
// pico.c\r
#define XPCM_BUFFER_SIZE (320+160)\r
void PicoTmpStateRestore(void *data);\r
extern void (*PicoStateProgressCB)(const char *str);\r
\r
-// cd/buffering.c\r
-void PicoCDBufferInit(void);\r
-void PicoCDBufferFree(void);\r
-void PicoCDBufferFlush(void);\r
-\r
-// cd/cd_sys.c\r
-int Insert_CD(const char *cdimg_name, int type);\r
-void Stop_CD(void); // releases all resources taken when CD game was started.\r
+// cd/cdd.c\r
+int cdd_load(const char *filename, int type);\r
+int cdd_unload(void);\r
\r
// Cart.c\r
typedef enum\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\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) * 21 / 10)\r
-#define SSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3 / 2)\r
+#ifndef NO_32X\r
\r
-// 32x/draw.c\r
-void PicoDraw32xSetFrameMode(int is_on, int only_32x);\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
PM_MARK3,\r
PM_CD,\r
};\r
+\r
+enum cd_img_type\r
+{\r
+ CIT_NOT_CD = 0,\r
+ CIT_ISO,\r
+ CIT_BIN,\r
+ CIT_CUE\r
+};\r
+\r
enum media_type_e PicoLoadMedia(const char *filename,\r
const char *carthw_cfg_fname,\r
const char *(*get_bios_filename)(int *region, const char *cd_fname),\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