loading msgs, bugfixes
[picodrive.git] / Pico / PicoInt.h
index c7b72a2..47ba2c9 100644 (file)
@@ -24,8 +24,13 @@ extern "C" {
 #ifdef EMU_C68K\r
 #include "../cpu/Cyclone/Cyclone.h"\r
 extern struct Cyclone PicoCpu, PicoCpuS68k;\r
-#define SekCyclesLeft PicoCpu.cycles // cycles left for this run\r
-#define SekSetCyclesLeft(c) PicoCpu.cycles=c\r
+#define SekCyclesLeftNoMCD PicoCpu.cycles // cycles left for this run\r
+#define SekCyclesLeft \\r
+       (((PicoMCD&1) && (PicoOpt & 0x2000)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
+#define SekSetCyclesLeftNoMCD(c) PicoCpu.cycles=c\r
+#define SekSetCyclesLeft(c) { \\r
+       if ((PicoMCD&1) && (PicoOpt & 0x2000)) SekCycleCnt=SekCycleAim-(c); else SekSetCyclesLeftNoMCD(c); \\r
+}\r
 #define SekPc (PicoCpu.pc-PicoCpu.membase)\r
 #define SekPcS68k (PicoCpuS68k.pc-PicoCpuS68k.membase)\r
 #endif\r
@@ -55,8 +60,13 @@ extern int m68k_ICount;
 extern m68ki_cpu_core PicoM68kCPU; // MD's CPU\r
 extern m68ki_cpu_core PicoS68kCPU; // Mega CD's CPU\r
 #ifndef SekCyclesLeft\r
-#define SekCyclesLeft m68k_cycles_remaining()\r
-#define SekSetCyclesLeft(c) SET_CYCLES(c)\r
+#define SekCyclesLeftNoMCD m68k_cycles_remaining()\r
+#define SekCyclesLeft \\r
+       (((PicoMCD&1) && (PicoOpt & 0x2000)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
+#define SekSetCyclesLeftNoMCD(c) SET_CYCLES(c)\r
+#define SekSetCyclesLeft(c) { \\r
+       if ((PicoMCD&1) && (PicoOpt & 0x2000)) SekCycleCnt=SekCycleAim-(c); else SET_CYCLES(c); \\r
+}\r
 #define SekPc m68k_get_reg(&PicoM68kCPU, M68K_REG_PC)\r
 #define SekPcS68k m68k_get_reg(&PicoS68kCPU, M68K_REG_PC)\r
 #endif\r
@@ -198,13 +208,22 @@ struct mcd_misc
 typedef struct\r
 {\r
        unsigned char bios[0x20000];                    // 128K\r
-       union {\r
-               unsigned char prg_ram[0x80000];         // 512K\r
+       union {                                         // 512K\r
+               unsigned char prg_ram[0x80000];\r
                unsigned char prg_ram_b[4][0x20000];\r
        };\r
-       unsigned char word_ram[0x40000];                // 256K\r
-       union {\r
-               unsigned char pcm_ram[0x10000];         // 64K\r
+       union {                                         // 256K\r
+               struct {\r
+                       unsigned char word_ram2M[0x40000];\r
+                       unsigned char unused[0x20000];\r
+               };\r
+               struct {\r
+                       unsigned char unused[0x20000];\r
+                       unsigned char word_ram1M[2][0x20000];\r
+               };\r
+       };\r
+       union {                                         // 64K\r
+               unsigned char pcm_ram[0x10000];\r
                unsigned char pcm_ram_b[0x10][0x1000];\r
        };\r
        unsigned char bram[0x2000];                     // 8K\r
@@ -227,6 +246,7 @@ int PicoAreaUnpackCpu(unsigned char *cpu, int is_sub);
 // cd/Area.c\r
 int PicoCdSaveState(void *file);\r
 int PicoCdLoadState(void *file);\r
+int PicoCdLoadStateGfx(void *file);\r
 \r
 // Draw.c\r
 int PicoLine(int scan);\r
@@ -247,7 +267,7 @@ void z80_write(unsigned char data, unsigned short a);
 void z80_write16(unsigned short data, unsigned short a);\r
 \r
 // cd/Memory.c\r
-void PicoMemSetupCD();\r
+void PicoMemSetupCD(void);\r
 unsigned char  PicoReadCD8 (unsigned int a);\r
 unsigned short PicoReadCD16(unsigned int a);\r
 unsigned int   PicoReadCD32(unsigned int a);\r
@@ -277,6 +297,10 @@ int SekInitS68k(void);
 int SekResetS68k(void);\r
 int SekInterruptS68k(int irq);\r
 \r
+// sound/sound.c\r
+extern int PsndLen_exc_cnt;\r
+extern int PsndLen_exc_add;\r
+\r
 // VideoPort.c\r
 void PicoVideoWrite(unsigned int a,unsigned short d);\r
 unsigned int PicoVideoRead(unsigned int a);\r
@@ -285,6 +309,14 @@ unsigned int PicoVideoRead(unsigned int a);
 void SRAMWriteEEPROM(unsigned int d);\r
 unsigned int SRAMReadEEPROM();\r
 void SRAMUpdPending(unsigned int a, unsigned int d);\r
+void memcpy16(unsigned short *dest, unsigned short *src, int count);\r
+void memcpy16bswap(unsigned short *dest, void *src, int count);\r
+void memcpy32(int *dest, int *src, int count);\r
+void memset32(int *dest, int c, int count);\r
+\r
+// cd/Misc.c\r
+void wram_2M_to_1M(unsigned char *m);\r
+void wram_1M_to_2M(unsigned char *m);\r
 \r
 \r
 #ifdef __cplusplus\r