diff --git a/src/custom.cpp b/src/custom.cpp index 9c37a2c7..ec187bf2 100644 --- a/src/custom.cpp +++ b/src/custom.cpp @@ -40,6 +40,8 @@ #define nocustom() (picasso_on) +extern int screen_is_picasso; + static uae_u16 last_custom_value1; /* Events */ @@ -2209,6 +2211,9 @@ void compute_vsynctime (void) { if (currprefs.chipset_refreshrate) { vblank_hz = currprefs.chipset_refreshrate; + } + if (screen_is_picasso) { + beamcon0 = new_beamcon0 = currprefs.ntscmode ? 0x00 : 0x20; } vsynctimebase = syncbase / vblank_hz; if (currprefs.produce_sound > 1) diff --git a/src/sd-sdl/sound_sdl_new.cpp b/src/sd-sdl/sound_sdl_new.cpp index a728bfe0..36b82f59 100644 --- a/src/sd-sdl/sound_sdl_new.cpp +++ b/src/sd-sdl/sound_sdl_new.cpp @@ -48,6 +48,10 @@ bool cdaudio_active = false; static int cdwrcnt = 0; static int cdrdcnt = 0; + +extern int screen_is_picasso; + + #ifdef NO_SOUND void finish_sound_buffer (void) { } @@ -94,8 +98,14 @@ void update_sound (int freq, int lof) freq = lastfreq; lastfreq = freq; - if (lof < 0) { - lines += 0.5; + if (currprefs.ntscmode || screen_is_picasso) { + hpos += 0.5; + lines += 0.5; + } else { + if (lof < 0) + lines += 0.5; + else if(lof > 0) + lines += 1.0; } evtime = hpos * lines * freq * CYCLE_UNIT / (float)currprefs.sound_freq;