Pico version reg, irq3 handling changed
[picodrive.git] / Pico / PicoInt.h
index d3b1273..b5cb06d 100644 (file)
@@ -156,14 +156,17 @@ extern int SekCycleAimS68k;
 #define SekCyclesDoneS68k()  (SekCycleAimS68k-SekCyclesLeftS68k)\r
 \r
 #ifdef EMU_CORE_DEBUG\r
+extern int dbg_irq_level;\r
 #undef SekSetCyclesLeftNoMCD\r
 #undef SekSetCyclesLeft\r
 #undef SekCyclesBurn\r
 #undef SekEndRun\r
+#undef SekInterrupt\r
 #define SekSetCyclesLeftNoMCD(c)\r
 #define SekSetCyclesLeft(c)\r
 #define SekCyclesBurn(c) c\r
 #define SekEndRun(c)\r
+#define SekInterrupt(irq) dbg_irq_level=irq\r
 #endif\r
 \r
 // ----------------------- Z80 CPU -----------------------\r
@@ -209,9 +212,10 @@ extern struct DrZ80 drZ80;
 // ---------------------------------------------------------\r
 \r
 // Pico active hw\r
-#define PAHW_MCD (1<<0)\r
-#define PAHW_32X (1<<1)\r
-#define PAHW_SVP (1<<2)\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;\r
 \r
 // main oscillator clock which controls timing\r
@@ -245,7 +249,7 @@ struct PicoMisc
   unsigned short z80_bank68k;  // 0a\r
   unsigned short z80_lastaddr; // this is for Z80 faking\r
   unsigned char  z80_fakeval;\r
-  unsigned char  pad0;\r
+  unsigned char  z80_reset;    // z80 reset held\r
   unsigned char  padDelay[2];  // 10 gamepad phase time outs, so we count a delay\r
   unsigned short eeprom_addr;  // EEPROM address register\r
   unsigned char  eeprom_cycle; // EEPROM SRAM cycle number\r
@@ -318,9 +322,7 @@ struct mcd_misc
        unsigned char  s68k_pend_ints;\r
        unsigned int   state_flags;     // 04: emu state: reset_pending, dmna_pending\r
        unsigned int   counter75hz;\r
-       unsigned short audio_offset;    // 0c: for savestates: play pointer offset (0-1023)\r
-       unsigned char  audio_track;     // playing audio track # (zero based)\r
-       char           pad1;\r
+       unsigned int   pad0;\r
        int            timer_int3;      // 10\r
        unsigned int   timer_stopwatch;\r
        unsigned char  bcram_reg;       // 18: battery-backed RAM cart register\r
@@ -363,6 +365,7 @@ typedef struct
 \r
 #define Pico_mcd ((mcd_state *)Pico.rom)\r
 \r
+\r
 // Area.c\r
 PICO_INTERNAL int PicoAreaPackCpu(unsigned char *cpu, int is_sub);\r
 PICO_INTERNAL int PicoAreaUnpackCpu(unsigned char *cpu, int is_sub);\r
@@ -395,6 +398,7 @@ PICO_INTERNAL void PicoFrameFull();
 \r
 // Memory.c\r
 PICO_INTERNAL int PicoInitPc(unsigned int pc);\r
+PICO_INTERNAL unsigned int PicoCheckPc(unsigned int pc);\r
 PICO_INTERNAL_ASM unsigned int PicoRead32(unsigned int a);\r
 PICO_INTERNAL void PicoMemSetup(void);\r
 PICO_INTERNAL_ASM void PicoMemReset(void);\r
@@ -417,6 +421,9 @@ PICO_INTERNAL void PicoMemSetupCD(void);
 PICO_INTERNAL_ASM void PicoMemResetCD(int r3);\r
 PICO_INTERNAL_ASM void PicoMemResetCDdecode(int r3);\r
 \r
+// Pico/Memory.c\r
+PICO_INTERNAL void PicoMemSetupPico(void);\r
+\r
 // Pico.c\r
 extern struct Pico Pico;\r
 extern struct PicoSRAM SRam;\r
@@ -424,7 +431,8 @@ extern int emustatus;
 extern int z80startCycle, z80stopCycle; // in 68k cycles\r
 extern void (*PicoResetHook)(void);\r
 extern void (*PicoLineHook)(int count);\r
-PICO_INTERNAL int CheckDMA(void);\r
+PICO_INTERNAL int  CheckDMA(void);\r
+PICO_INTERNAL void PicoDetectRegion(void);\r
 \r
 // cd/Pico.c\r
 PICO_INTERNAL int  PicoInitMCD(void);\r
@@ -433,6 +441,9 @@ PICO_INTERNAL void PicoPowerMCD(void);
 PICO_INTERNAL int PicoResetMCD(void);\r
 PICO_INTERNAL int PicoFrameMCD(void);\r
 \r
+// Pico/Pico.c\r
+PICO_INTERNAL int PicoInitPico(void);\r
+\r
 // Sek.c\r
 PICO_INTERNAL int SekInit(void);\r
 PICO_INTERNAL int SekReset(void);\r
@@ -445,6 +456,8 @@ PICO_INTERNAL int SekResetS68k(void);
 PICO_INTERNAL int SekInterruptS68k(int irq);\r
 \r
 // sound/sound.c\r
+PICO_INTERNAL void cdda_start_play();\r
+extern short cdda_out_buffer[2*1152];\r
 extern int PsndLen_exc_cnt;\r
 extern int PsndLen_exc_add;\r
 \r