some Pico adjustments
[picodrive.git] / Pico / Pico.h
index 59ccb77..3714ad1 100644 (file)
@@ -24,7 +24,6 @@ extern "C" {
 // 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
@@ -49,10 +48,15 @@ void mp3_update(int *buffer, int length, int stereo);
 #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
@@ -71,6 +75,23 @@ extern void (*PicoMCDopenTray)(void);
 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
@@ -91,9 +112,11 @@ int PicoCdLoadStateGfx(void *file);
 // 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
+int Insert_CD(char *cdimg_name, int type);\r
 void Stop_CD(void); // releases all resources taken when CD game was started.\r
 \r
 // Cart.c\r
@@ -137,7 +160,7 @@ void vidConvCpyRGB565(void *to, void *from, int pixels);
 #define PDRAW_SPRITES_MOVED (1<<0)\r
 #define PDRAW_WND_DIFF_PRIO (1<<1) // not all window tiles use same priority\r
 #define PDRAW_ACC_SPRITES   (1<<2) // accurate sprites (copied from PicoOpt)\r
-#define PDRAW_INTERLACE     (1<<3) // \r
+#define PDRAW_INTERLACE     (1<<3) //\r
 #define PDRAW_DIRTY_SPRITES (1<<4)\r
 #define PDRAW_SONIC_MODE    (1<<5) // mid-frame palette changes for 8bit renderer\r
 #define PDRAW_PLANE_HI_PRIO (1<<6) // have layer with all hi prio tiles (mk3)\r