#endif\r
\r
#define sh2_cycles_done(sh2) ((int)(sh2)->cycles_timeslice - sh2_cycles_left(sh2))\r
+#define sh2_cycles_done_t(sh2) \\r
+ ((sh2)->m68krcycles_done * 3 + sh2_cycles_done(sh2))\r
#define sh2_cycles_done_m68k(sh2) \\r
((sh2)->m68krcycles_done + (sh2_cycles_done(sh2) / 3))\r
\r
unsigned char comm_dirty_68k;\r
unsigned char comm_dirty_sh2;\r
unsigned short pad;\r
- unsigned int reserved[8];\r
+ unsigned short pwm_p[2]; // pwm pos in fifo\r
+ unsigned int pwm_cycle_p; // pwm play cursor (32x cycles)\r
+ unsigned int reserved[6];\r
};\r
\r
struct Pico32xMem\r
unsigned short pal_native[0x100]; // converted to native (for renderer)\r
unsigned int sh2_peri_regs[2][0x200/4]; // periphereal regs of SH2s\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
};\r
\r
// area.c\r
void p32x_sh2_poll_event(SH2 *sh2, unsigned int flags, unsigned int m68k_cycles);\r
\r
// 32x/draw.c\r
+void PicoDrawSetOutFormat32x(pdso_t which, int use_32x_line_mode);\r
void FinalizeLine32xRGB555(int sh, int line);\r
void PicoDraw32xLayer(int offs, int lines, int mdbg);\r
void PicoDraw32xLayerMdOnly(int offs, int lines);\r
extern int Pico32xDrawMode;\r
\r
// 32x/pwm.c\r
-unsigned int p32x_pwm_read16(unsigned int a);\r
-void p32x_pwm_write16(unsigned int a, unsigned int d);\r
+unsigned int p32x_pwm_read16(unsigned int a, unsigned int cycles);\r
+void p32x_pwm_write16(unsigned int a, unsigned int d, unsigned int cycles);\r
void p32x_pwm_update(int *buf32, int length, int stereo);\r
-void p32x_timers_do(unsigned int cycles);\r
+void p32x_timers_do(unsigned int m68k_now, unsigned int m68k_slice);\r
void p32x_timers_recalc(void);\r
void p32x_pwm_schedule(unsigned int now);\r
void p32x_pwm_schedule_sh2(SH2 *sh2);\r
#define PicoFrame32x()\r
#define PicoUnload32x()\r
#define Pico32xStateLoaded()\r
-#define PicoDraw32xSetFrameMode(...)\r
#define FinalizeLine32xRGB555 NULL\r
#define p32x_pwm_update(...)\r
#define p32x_timers_recalc()\r
\r
// emulation event logging\r
#ifndef EL_LOGMASK\r
-#define EL_LOGMASK 0\r
+# ifdef __x86_64__ // HACK\r
+# define EL_LOGMASK (EL_STATUS|EL_IDLE|EL_ANOMALY)\r
+# else\r
+# define EL_LOGMASK (EL_STATUS)\r
+# endif\r
#endif\r
\r
#define EL_HVCNT 0x00000001 /* hv counter reads */\r