make OSS detect blocking, adjust audio API
[picodrive.git] / platform / gizmondo / emu.c
index 2dfcf96..2844fb2 100644 (file)
@@ -231,10 +231,10 @@ static void vidResetMode(void)
        if (PicoOpt&0x10) {
        } else if (currentConfig.EmuOpt&0x80) {
                PicoDrawSetOutFormat(PDF_RGB555, 0);
-               PicoScanBegin = EmuScanBegin16;
+               PicoDrawSetCallbacks(EmuScanBegin16, NULL);
        } else {
                PicoDrawSetOutFormat(PDF_NONE, 0);
-               PicoScanBegin = EmuScanBegin8;
+               PicoDrawSetCallbacks(EmuScanBegin8, NULL);
        }
        if ((PicoOpt&0x10) || !(currentConfig.EmuOpt&0x80)) {
                // setup pal for 8-bit modes
@@ -273,10 +273,8 @@ static void stdbg(const char *fmt, ...)
 
 static void updateSound(int len)
 {
-       if (PicoOpt&8) len<<=1;
-
-       snd_all_samples += len;
-       PsndOut += len;
+       snd_all_samples += len / 2;
+       PsndOut += len / 2;
        if (PsndOut - snd_cbuff >= snd_cbuf_samples)
        {
                //if (PsndOut - snd_cbuff != snd_cbuf_samples)
@@ -294,20 +292,22 @@ static void SkipFrame(void)
 }
 
 /* forced frame to front buffer */
-void pemu_forced_frame(int opts)
+void pemu_forced_frame(int no_scale, int do_emu)
 {
        int po_old = PicoOpt;
        int eo_old = currentConfig.EmuOpt;
 
        PicoOpt &= ~0x10;
-       PicoOpt |= opts|POPT_ACC_SPRITES;
+       PicoOpt |= POPT_ACC_SPRITES;
+       if (!no_scale)
+               PicoOpt |= POPT_EN_SOFTSCALE;
        currentConfig.EmuOpt |= 0x80;
 
        if (giz_screen == NULL)
                giz_screen = fb_lock(1);
 
        PicoDrawSetOutFormat(PDF_RGB555, 0);
-       PicoScanBegin = EmuScanBegin16;
+       PicoDrawSetCallbacks(EmuScanBegin16, NULL);
        Pico.m.dirtyPal = 1;
        PicoFrameDrawOnly();