// external funcs for Sega/Mega CD\r
int mp3_get_bitrate(FILE *f, int size);\r
void mp3_start_play(FILE *f, int pos);\r
-int mp3_get_offset(void); // 0-1023\r
void mp3_update(int *buffer, int length, int stereo);\r
\r
\r
#define POPT_EN_SVP_DRC (1<<17)\r
#define POPT_DIS_SPRITE_LIM (1<<18)\r
extern int PicoOpt; // bitfield\r
+#define PAHW_MCD (1<<0)\r
+#define PAHW_32X (1<<1)\r
+#define PAHW_SVP (1<<2)\r
+#define PAHW_PICO (1<<3)\r
+extern int PicoAHW; // Pico active hw\r
extern int PicoVer;\r
-extern int PicoSkipFrame; // skip rendering frame, but still do sound (if enabled) and emulation stuff\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
+extern int PicoAutoRgnOrder; // packed priority list of regions, for example 0x148 means this detection order: EUR, USA, JAP\r
extern int PicoSVPCycles;\r
int PicoInit(void);\r
void PicoExit(void);\r
extern int PicoPad[2]; // Joypads, format is MXYZ SACB RLDU\r
extern void (*PicoWriteSound)(int len); // called once per frame at the best time to send sound buffer (PsndOut) to hardware\r
extern void (*PicoMessage)(const char *msg); // callback to output text message from emu\r
-typedef enum { PS_PAL, PS_40_CELL, PS_240_LINES } pstat_t;\r
-int PicoGetStat(pstat_t which);\r
+typedef enum { PI_ROM, PI_ISPAL, PI_IS40_CELL, PI_IS240_LINES } pint_t;\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
extern void (*PicoMCDopenTray)(void);\r
extern int (*PicoMCDcloseTray)(void);\r
extern int PicoCDBuffers;\r
\r
+// Pico/Pico.c\r
+#define XPCM_BUFFER_SIZE (320+160)\r
+typedef struct\r
+{\r
+ int pen_pos[2];\r
+ int page;\r
+ // internal\r
+ int fifo_bytes; // bytes in FIFO\r
+ int fifo_bytes_prev;\r
+ int fifo_line_bytes; // float part, << 16\r
+ int line_counter;\r
+ unsigned short r1, r12;\r
+ unsigned char xpcm_buffer[XPCM_BUFFER_SIZE+4];\r
+ unsigned char *xpcm_ptr;\r
+} picohw_state;\r
+extern picohw_state PicoPicohw;\r
+\r
// Area.c\r
typedef size_t (arearw)(void *p, size_t _size, size_t _n, void *file);\r
typedef size_t (areaeof)(void *file);\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(char *iso_name, int is_bin);\r