menu: add reset hotkey
[picodrive.git] / pico / pico_int.h
index 5d7bfbc..743ecb4 100644 (file)
@@ -185,6 +185,7 @@ extern struct DrZ80 drZ80;
 #define z80_nmi()          drZ80.Z80IF |= 8\r
 \r
 #define z80_cyclesLeft     drZ80.cycles\r
+#define z80_subCLeft(c)    drZ80.cycles -= c\r
 #define z80_pc()           (drZ80.Z80PC - drZ80.Z80PC_BASE)\r
 \r
 #elif defined(_USE_CZ80)\r
@@ -196,6 +197,7 @@ extern struct DrZ80 drZ80;
 #define z80_nmi()          Cz80_Set_IRQ(&CZ80, IRQ_LINE_NMI, 0)\r
 \r
 #define z80_cyclesLeft     (CZ80.ICount - CZ80.ExtraCycles)\r
+#define z80_subCLeft(c)    CZ80.ICount -= c\r
 #define z80_pc()           Cz80_Get_Reg(&CZ80, CZ80_PC)\r
 \r
 #else\r
@@ -281,6 +283,30 @@ extern SH2 sh2s[2];
 #define OSC_NTSC 53693100\r
 #define OSC_PAL  53203424\r
 \r
+// PicoVideo.debug_p\r
+#define PVD_KILL_A    (1 << 0)\r
+#define PVD_KILL_B    (1 << 1)\r
+#define PVD_KILL_S_LO (1 << 2)\r
+#define PVD_KILL_S_HI (1 << 3)\r
+#define PVD_KILL_32X  (1 << 4)\r
+#define PVD_FORCE_A   (1 << 5)\r
+#define PVD_FORCE_B   (1 << 6)\r
+#define PVD_FORCE_S   (1 << 7)\r
+\r
+// PicoVideo.status, not part of real SR\r
+#define SR_PAL        (1 << 0)\r
+#define SR_DMA        (1 << 1)\r
+#define SR_HB         (1 << 2)\r
+#define SR_VB         (1 << 3)\r
+#define SR_ODD        (1 << 4)\r
+#define SR_C          (1 << 5)\r
+#define SR_SOVR       (1 << 6)\r
+#define SR_F          (1 << 7)\r
+#define SR_FULL       (1 << 8)\r
+#define SR_EMPT       (1 << 9)\r
+// not part of real SR\r
+#define PVS_ACTIVE    (1 << 16)\r
+\r
 struct PicoVideo\r
 {\r
   unsigned char reg[0x20];\r
@@ -288,11 +314,15 @@ struct PicoVideo
   unsigned char pending;      // 1 if waiting for second half of 32-bit command\r
   unsigned char type;         // Command type (v/c/vsram read/write)\r
   unsigned short addr;        // Read/Write address\r
-  int status;                 // Status bits\r
+  unsigned int status;        // Status bits (SR) and extra flags\r
   unsigned char pending_ints; // pending interrupts: ??VH????\r
   signed char lwrite_cnt;     // VDP write count during active display line\r
   unsigned short v_counter;   // V-counter\r
-  unsigned char pad[0x10];\r
+  unsigned short debug;       // raw debug register\r
+  unsigned char debug_p;      // ... parsed: PVD_*\r
+  unsigned char addr_u;       // bit16 of .addr\r
+  unsigned char hint_cnt;\r
+  unsigned char pad[0x0b];\r
 };\r
 \r
 struct PicoMisc\r
@@ -670,7 +700,6 @@ extern struct Pico Pico;
 extern struct PicoSRAM SRam;\r
 extern int PicoPadInt[2];\r
 extern int emustatus;\r
-extern int scanlines_total;\r
 extern void (*PicoResetHook)(void);\r
 extern void (*PicoLineHook)(void);\r
 PICO_INTERNAL int  CheckDMA(void);\r
@@ -781,8 +810,13 @@ void ym2612_unpack_state(void);
 extern int line_base_cycles;\r
 PICO_INTERNAL_ASM void PicoVideoWrite(unsigned int a,unsigned short d);\r
 PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a);\r
-PICO_INTERNAL_ASM unsigned int PicoVideoRead8(unsigned int a);\r
-extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **srcp, unsigned short **limitp);\r
+unsigned char PicoVideoRead8DataH(void);\r
+unsigned char PicoVideoRead8DataL(void);\r
+unsigned char PicoVideoRead8CtlH(void);\r
+unsigned char PicoVideoRead8CtlL(void);\r
+unsigned char PicoVideoRead8HV_H(void);\r
+unsigned char PicoVideoRead8HV_L(void);\r
+extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **base, unsigned int *mask);\r
 \r
 // misc.c\r
 PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count);\r
@@ -808,11 +842,13 @@ PICO_INTERNAL_ASM void wram_1M_to_2M(unsigned char *m);
 \r
 // sound/sound.c\r
 PICO_INTERNAL void PsndReset(void);\r
+PICO_INTERNAL void PsndStartFrame(void);\r
 PICO_INTERNAL void PsndDoDAC(int line_to);\r
+PICO_INTERNAL void PsndDoPSG(int line_to);\r
 PICO_INTERNAL void PsndClear(void);\r
 PICO_INTERNAL void PsndGetSamples(int y);\r
 PICO_INTERNAL void PsndGetSamplesMS(void);\r
-extern int PsndDacLine;\r
+extern int PsndDacLine, PsndPsgLine;\r
 \r
 // sms.c\r
 #ifndef NO_SMS\r