eliminate texrels (wip2)
[picodrive.git] / platform / gizmondo / emu.c
index fd83eb9..3a6c861 100644 (file)
@@ -26,7 +26,6 @@
 
 // main 300K gfx-related buffer. Used by menu and renderers.
 unsigned char gfx_buffer[321*240*2*2];
-unsigned char *PicoDraw2FB = gfx_buffer;  // temporary buffer for alt renderer ( (8+320)*(8+240+8) )
 
 static short *snd_cbuff = NULL;
 static int snd_cbuf_samples = 0, snd_all_samples = 0;
@@ -95,7 +94,7 @@ void pemu_prep_defconfig(void)
 
 static int EmuScanBegin16(unsigned int num)
 {
-       DrawLineDest = (unsigned short *) giz_screen + 321 * num;
+       Pico.est.DrawLineDest = (unsigned short *) giz_screen + 321 * num;
 
        if ((currentConfig.EmuOpt&0x4000) && (num&1) == 0) // (Pico.m.frame_count&1))
                return 1; // skip next line
@@ -106,7 +105,7 @@ static int EmuScanBegin16(unsigned int num)
 static int EmuScanBegin8(unsigned int num)
 {
        // draw like the fast renderer
-       HighCol = gfx_buffer + 328 * num;
+       Pico.est.HighCol = gfx_buffer + 328 * num;
 
        return 0;
 }
@@ -123,13 +122,6 @@ static void osd_text(int x, int y, const char *text)
        emu_text_out16(x, y, text);
 }
 
-/*
-void log1(void *p1, void *p2)
-{
-       lprintf("%p %p %p\n", p1, p2, DrawLineDest);
-}
-*/
-
 static void cd_leds(void)
 {
        static int old_reg = 0;
@@ -230,11 +222,11 @@ static void vidResetMode(void)
 
        if (PicoOpt&0x10) {
        } else if (currentConfig.EmuOpt&0x80) {
-               PicoDrawSetColorFormat(1);
-               PicoScanBegin = EmuScanBegin16;
+               PicoDrawSetOutFormat(PDF_RGB555, 0);
+               PicoDrawSetCallbacks(EmuScanBegin16, NULL);
        } else {
-               PicoDrawSetColorFormat(-1);
-               PicoScanBegin = EmuScanBegin8;
+               PicoDrawSetOutFormat(PDF_NONE, 0);
+               PicoDrawSetCallbacks(EmuScanBegin8, NULL);
        }
        if ((PicoOpt&0x10) || !(currentConfig.EmuOpt&0x80)) {
                // setup pal for 8-bit modes
@@ -273,10 +265,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 +284,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);
 
-       PicoDrawSetColorFormat(1);
-       PicoScanBegin = EmuScanBegin16;
+       PicoDrawSetOutFormat(PDF_RGB555, 0);
+       PicoDrawSetCallbacks(EmuScanBegin16, NULL);
        Pico.m.dirtyPal = 1;
        PicoFrameDrawOnly();