X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fpico_int.h;h=bb27922b2510cddf12fe8df22241db9c19bd99e1;hb=6311a3baf533d4a034e51dfe38e8cb213a1bf442;hp=fa7979cce13a01d7e250a4f5332e3a7aabf2a9d7;hpb=075672bf9f028490174bd3fbebe957a47a10b09d;p=picodrive.git diff --git a/pico/pico_int.h b/pico/pico_int.h index fa7979c..bb27922 100644 --- a/pico/pico_int.h +++ b/pico/pico_int.h @@ -409,6 +409,19 @@ struct PicoTiming unsigned int z80c_cnt; // z80 cycles done (this frame) unsigned int z80c_aim; int z80_scanline; + + int timer_a_next_oflow, timer_a_step; // in z80 cycles + int timer_b_next_oflow, timer_b_step; +}; + +struct PicoSound +{ + short len; // number of mono samples + short len_use; // adjusted + int len_e_add; // for non-int samples/frame + int len_e_cnt; + short dac_line; + short psg_line; }; // run tools/mkoffsets pico/pico_int_o32.h if you change these @@ -419,6 +432,7 @@ struct Pico struct PicoMisc m; struct PicoTiming t; struct PicoCartSave sv; + struct PicoSound snd; struct PicoEState est; struct PicoMS ms; @@ -781,10 +795,6 @@ void SekInterruptClearS68k(int irq); // sound/sound.c extern short cdda_out_buffer[2*1152]; -extern int PsndLen_exc_cnt; -extern int PsndLen_exc_add; -extern int timer_a_next_oflow, timer_a_step; // in z80 cycles -extern int timer_b_next_oflow, timer_b_step; void cdda_start_play(int lba_base, int lba_offset, int lb_len); @@ -799,16 +809,16 @@ void ym2612_unpack_state(void); #define TIMER_B_TICK_ZCYCLES 262800 // 275251 broken, see Dai Makaimura #define timers_cycle() \ - if (timer_a_next_oflow > 0 && timer_a_next_oflow < TIMER_NO_OFLOW) \ - timer_a_next_oflow -= Pico.m.pal ? 70938*256 : 59659*256; \ - if (timer_b_next_oflow > 0 && timer_b_next_oflow < TIMER_NO_OFLOW) \ - timer_b_next_oflow -= Pico.m.pal ? 70938*256 : 59659*256; \ + if (Pico.t.timer_a_next_oflow > 0 && Pico.t.timer_a_next_oflow < TIMER_NO_OFLOW) \ + Pico.t.timer_a_next_oflow -= Pico.m.pal ? 70938*256 : 59659*256; \ + if (Pico.t.timer_b_next_oflow > 0 && Pico.t.timer_b_next_oflow < TIMER_NO_OFLOW) \ + Pico.t.timer_b_next_oflow -= Pico.m.pal ? 70938*256 : 59659*256; \ ym2612_sync_timers(0, ym2612.OPN.ST.mode, ym2612.OPN.ST.mode); #define timers_reset() \ - timer_a_next_oflow = timer_b_next_oflow = TIMER_NO_OFLOW; \ - timer_a_step = TIMER_A_TICK_ZCYCLES * 1024; \ - timer_b_step = TIMER_B_TICK_ZCYCLES * 256; + Pico.t.timer_a_next_oflow = Pico.t.timer_b_next_oflow = TIMER_NO_OFLOW; \ + Pico.t.timer_a_step = TIMER_A_TICK_ZCYCLES * 1024; \ + Pico.t.timer_b_step = TIMER_B_TICK_ZCYCLES * 256; // videoport.c @@ -850,7 +860,6 @@ PICO_INTERNAL void PsndDoPSG(int line_to); PICO_INTERNAL void PsndClear(void); PICO_INTERNAL void PsndGetSamples(int y); PICO_INTERNAL void PsndGetSamplesMS(void); -extern int PsndDacLine, PsndPsgLine; // sms.c #ifndef NO_SMS