X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fpico_int.h;h=383739c48ea8f30f72d1409da8c793161167967c;hb=a7f82a776aaceee318707827f5aa074d0f0a2bb7;hp=e61c1f7ede13e6f1ec7bc533be3231ffbaee7e94;hpb=e7b3ad1bdaccc2c64c4b54f0cfc6740e0d715bd1;p=picodrive.git diff --git a/pico/pico_int.h b/pico/pico_int.h index e61c1f7..383739c 100644 --- a/pico/pico_int.h +++ b/pico/pico_int.h @@ -260,6 +260,8 @@ extern SH2 sh2s[2]; #endif #define sh2_cycles_done(sh2) ((int)(sh2)->cycles_timeslice - sh2_cycles_left(sh2)) +#define sh2_cycles_done_t(sh2) \ + ((sh2)->m68krcycles_done * 3 + sh2_cycles_done(sh2)) #define sh2_cycles_done_m68k(sh2) \ ((sh2)->m68krcycles_done + (sh2_cycles_done(sh2) / 3)) @@ -507,7 +509,9 @@ struct Pico32x unsigned char comm_dirty_68k; unsigned char comm_dirty_sh2; unsigned short pad; - unsigned int reserved[8]; + unsigned short pwm_p[2]; // pwm pos in fifo + unsigned int pwm_cycle_p; // pwm play cursor (32x cycles) + unsigned int reserved[6]; }; struct Pico32xMem @@ -531,6 +535,7 @@ struct Pico32xMem unsigned short pal_native[0x100]; // converted to native (for renderer) unsigned int sh2_peri_regs[2][0x200/4]; // periphereal regs of SH2s signed short pwm[2*PWM_BUFF_LEN]; // PWM buffer for current frame + signed short pwm_fifo[2][4]; // [0] - current, others - fifo entries }; // area.c @@ -771,10 +776,10 @@ enum { extern int Pico32xDrawMode; // 32x/pwm.c -unsigned int p32x_pwm_read16(unsigned int a); -void p32x_pwm_write16(unsigned int a, unsigned int d); +unsigned int p32x_pwm_read16(unsigned int a, unsigned int cycles); +void p32x_pwm_write16(unsigned int a, unsigned int d, unsigned int cycles); void p32x_pwm_update(int *buf32, int length, int stereo); -void p32x_timers_do(unsigned int cycles); +void p32x_timers_do(unsigned int m68k_now, unsigned int m68k_slice); void p32x_timers_recalc(void); void p32x_pwm_schedule(unsigned int now); void p32x_pwm_schedule_sh2(SH2 *sh2);