32x: pwm pop reduction hacks
[picodrive.git] / pico / pico_int.h
index 8a760c6..6b062b6 100644 (file)
@@ -482,8 +482,9 @@ typedef struct
 #define P32XP_FULL  (1<<15) // PWM pulse\r
 #define P32XP_EMPTY (1<<14)\r
 \r
-#define P32XF_68KCPOLL  (1 << 0)\r
-#define P32XF_68KVPOLL  (1 << 1)\r
+#define P32XF_68KCPOLL   (1 << 0)\r
+#define P32XF_68KVPOLL   (1 << 1)\r
+#define P32XF_Z80_32X_IO (1 << 7) // z80 does 32x io\r
 \r
 #define P32XI_VRES (1 << 14/2) // IRL/2\r
 #define P32XI_VINT (1 << 12/2)\r
@@ -547,7 +548,8 @@ struct Pico32xMem
   unsigned short pal[0x100];\r
   unsigned short pal_native[0x100];     // converted to native (for renderer)\r
   signed short   pwm[2*PWM_BUFF_LEN];   // PWM buffer for current frame\r
-  signed short   pwm_fifo[2][4];        // [0] - current, others - fifo entries\r
+  signed short   pwm_current[2];        // current converted samples\r
+  unsigned short pwm_fifo[2][4];        // [0] - current raw, others - fifo entries\r
 };\r
 \r
 // area.c\r
@@ -763,6 +765,8 @@ void Pico32xStateLoaded(int is_early);
 void p32x_sync_sh2s(unsigned int m68k_target);\r
 void p32x_sync_other_sh2(SH2 *sh2, unsigned int m68k_target);\r
 void p32x_update_irls(SH2 *active_sh2, int m68k_cycles);\r
+void p32x_trigger_irq(SH2 *sh2, int m68k_cycles, unsigned int mask);\r
+void p32x_update_cmd_irq(SH2 *sh2, int m68k_cycles);\r
 void p32x_reset_sh2s(void);\r
 void p32x_event_schedule(unsigned int now, enum p32x_event event, int after);\r
 void p32x_event_schedule_sh2(SH2 *sh2, enum p32x_event event, int after);\r
@@ -803,6 +807,7 @@ void p32x_pwm_update(int *buf32, int length, int stereo);
 void p32x_pwm_ctl_changed(void);\r
 void p32x_pwm_schedule(unsigned int m68k_now);\r
 void p32x_pwm_schedule_sh2(SH2 *sh2);\r
+void p32x_pwm_sync_to_sh2(SH2 *sh2);\r
 void p32x_pwm_irq_event(unsigned int m68k_now);\r
 void p32x_pwm_state_loaded(void);\r
 \r