minor drawing code cleanup
authornotaz <notasas@gmail.com>
Sat, 27 Jul 2013 21:49:35 +0000 (00:49 +0300)
committernotaz <notasas@gmail.com>
Sat, 27 Jul 2013 21:49:35 +0000 (00:49 +0300)
14 files changed:
pico/32x/draw.c
pico/draw.c
pico/draw2.c
pico/pico.h
pico/pico_int.h
platform/common/plat_sdl.c
platform/gizmondo/emu.c
platform/gp2x/emu.c
platform/libretro.c
platform/linux/emu.c
platform/linux/io.c
platform/pandora/plat.c
platform/psp/emu.c
platform/win32/plat.c

index 66814ab..33947e6 100644 (file)
@@ -82,6 +82,7 @@ static void convert_pal555(int invert_prio)
   }                                                               \
 }
 
+// this is almost never used (Wiz and menu bg gen only)
 void FinalizeLine32xRGB555(int sh, int line)
 {
   unsigned short *pd = DrawLineDest;
@@ -306,20 +307,23 @@ void PicoDraw32xLayerMdOnly(int offs, int lines)
   }
 }
 
-void PicoDraw32xSetFrameMode(int is_on, int only_32x)
+void PicoDrawSetOutFormat32x(pdso_t which, int use_32x_line_mode)
 {
 #ifdef _ASM_32X_DRAW
   extern void *Pico32xNativePal;
   Pico32xNativePal = Pico32xMem->pal_native;
 #endif
 
-  if (is_on) {
-    // use the same layout as alt renderer
-    PicoDrawSetInternalBuf(PicoDraw2FB, 328);
-    Pico32xDrawMode = only_32x ? PDM32X_32X_ONLY : PDM32X_BOTH;
-  } else {
+  if (which == PDF_RGB555 && use_32x_line_mode) {
+    // we'll draw via FinalizeLine32xRGB555 (rare)
     PicoDrawSetInternalBuf(NULL, 0);
     Pico32xDrawMode = PDM32X_OFF;
+    return;
   }
+
+  // use the same layout as alt renderer
+  PicoDrawSetInternalBuf(PicoDraw2FB, 328);
+  Pico32xDrawMode = (which == PDF_RGB555) ? PDM32X_32X_ONLY : PDM32X_BOTH;
 }
 
+// vim:shiftwidth=2:ts=2:expandtab
index d14e996..11cd820 100644 (file)
@@ -1546,7 +1546,7 @@ void PicoDrawUpdateHighPal(void)
   }\r
 }\r
 \r
-void PicoDrawSetOutFormat(pdso_t which, int allow_32x)\r
+void PicoDrawSetOutFormat(pdso_t which, int use_32x_line_mode)\r
 {\r
   switch (which)\r
   {\r
@@ -1555,7 +1555,7 @@ void PicoDrawSetOutFormat(pdso_t which, int allow_32x)
       break;\r
 \r
     case PDF_RGB555:\r
-      if ((PicoAHW & PAHW_32X) && allow_32x)\r
+      if ((PicoAHW & PAHW_32X) && use_32x_line_mode)\r
         FinalizeLine = FinalizeLine32xRGB555;\r
       else\r
         FinalizeLine = FinalizeLine555;\r
@@ -1565,6 +1565,7 @@ void PicoDrawSetOutFormat(pdso_t which, int allow_32x)
       FinalizeLine = NULL;\r
       break;\r
   }\r
+  PicoDrawSetOutFormat32x(which, use_32x_line_mode);\r
   PicoDrawSetOutputMode4(which);\r
   rendstatus_old = -1;\r
 }\r
index 58139d9..ae69b52 100644 (file)
@@ -15,8 +15,6 @@
 \r
 #define TILE_ROWS END_ROW-START_ROW\r
 \r
-#define USE_CACHE\r
-\r
 // note: this is not implemented in ARM asm\r
 #if defined(DRAW2_OVERRIDE_LINE_WIDTH)\r
 #define LINE_WIDTH DRAW2_OVERRIDE_LINE_WIDTH\r
@@ -24,6 +22,9 @@
 #define LINE_WIDTH 328\r
 #endif\r
 \r
+static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];\r
+unsigned char *PicoDraw2FB = PicoDraw2FB_;\r
+\r
 static int HighCache2A[41*(TILE_ROWS+1)+1+1]; // caches for high layers\r
 static int HighCache2B[41*(TILE_ROWS+1)+1+1];\r
 \r
index 667b6c2..4a99ef5 100644 (file)
@@ -171,7 +171,7 @@ typedef enum
        PDF_RGB555,      // RGB/BGR output, depends on compile options\r
        PDF_8BIT,        // 8-bit out (handles shadow/hilight mode, sonic water)\r
 } pdso_t;\r
-void PicoDrawSetOutFormat(pdso_t which, int allow_32x);\r
+void PicoDrawSetOutFormat(pdso_t which, int use_32x_line_mode);\r
 void PicoDrawSetOutBuf(void *dest, int increment);\r
 void PicoDrawSetCallbacks(int (*begin)(unsigned int num), int (*end)(unsigned int num));\r
 extern void *DrawLineDest;\r
@@ -216,9 +216,6 @@ extern void (*PicoPrepareCram)();    // prepares PicoCramHigh for renderer to us
 \r
 void Pico32xSetClocks(int msh2_hz, int ssh2_hz);\r
 \r
-// 32x/draw.c\r
-void PicoDraw32xSetFrameMode(int is_on, int only_32x);\r
-\r
 #else\r
 \r
 #define Pico32xSetClocks(msh2_khz, ssh2_khz)\r
index bfdf73a..c350fa2 100644 (file)
@@ -757,6 +757,7 @@ void p32x_m68k_poll_event(unsigned int flags);
 void p32x_sh2_poll_event(SH2 *sh2, unsigned int flags, unsigned int m68k_cycles);\r
 \r
 // 32x/draw.c\r
+void PicoDrawSetOutFormat32x(pdso_t which, int use_32x_line_mode);\r
 void FinalizeLine32xRGB555(int sh, int line);\r
 void PicoDraw32xLayer(int offs, int lines, int mdbg);\r
 void PicoDraw32xLayerMdOnly(int offs, int lines);\r
@@ -784,7 +785,6 @@ void p32x_pwm_schedule_sh2(SH2 *sh2);
 #define PicoFrame32x()\r
 #define PicoUnload32x()\r
 #define Pico32xStateLoaded()\r
-#define PicoDraw32xSetFrameMode(...)\r
 #define FinalizeLine32xRGB555 NULL\r
 #define p32x_pwm_update(...)\r
 #define p32x_timers_recalc()\r
index 94f6e6e..600af45 100644 (file)
 #include "input_pico.h"
 #include "version.h"
 
-// FIXME: these 2 shouldn't be here
-static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];
-unsigned char *PicoDraw2FB = PicoDraw2FB_;
-
 static void *shadow_fb;
 
 static const struct in_default_bind in_sdl_defbinds[] = {
index 2844fb2..3115ebd 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;
index df9faac..825ab5b 100644 (file)
@@ -43,8 +43,6 @@
 extern int crashed_940;\r
 \r
 static short __attribute__((aligned(4))) sndBuffer[2*(44100+100)/50];\r
-static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];\r
-unsigned char *PicoDraw2FB = PicoDraw2FB_;\r
 static int osd_fps_x, osd_y, doing_bg_frame;\r
 const char *renderer_names[] = { "16bit accurate", " 8bit accurate", " 8bit fast", NULL };\r
 const char *renderer_names32x[] = { "accurate", "faster", "fastest", NULL };\r
@@ -524,11 +522,9 @@ static void vid_reset_mode(void)
                // Wiz 16bit is an exception, uses line rendering due to rotation mess\r
                if (renderer == RT_16BIT && (currentConfig.EmuOpt & EOPT_WIZ_TEAR_FIX)) {\r
                        PicoDrawSetOutFormat(PDF_RGB555, 1);\r
-                       PicoDraw32xSetFrameMode(0, 0);\r
                }\r
                else {\r
                        PicoDrawSetOutFormat(PDF_NONE, 0);\r
-                       PicoDraw32xSetFrameMode(1, 0);\r
                }\r
                PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
                gp2x_mode = 16;\r
@@ -785,7 +781,6 @@ void pemu_forced_frame(int no_scale, int do_emu)
 {\r
        doing_bg_frame = 1;\r
        PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
-       PicoDraw32xSetFrameMode(0, 0);\r
        PicoDrawSetCallbacks(NULL, NULL);\r
        Pico.m.dirtyPal = 1;\r
 \r
index ecf6a29..15a83ba 100644 (file)
@@ -40,10 +40,6 @@ static int vout_width, vout_height;
 
 static short __attribute__((aligned(4))) sndBuffer[2*44100/50];
 
-// FIXME: these 2 shouldn't be here
-static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];
-unsigned char *PicoDraw2FB = PicoDraw2FB_;
-
 static void snd_write(int len);
 
 #ifdef _WIN32
@@ -151,7 +147,6 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols)
 
 void emu_32x_startup(void)
 {
-       PicoDrawSetOutFormat(PDF_RGB555, 1);
 }
 
 #ifndef ANDROID
@@ -614,7 +609,7 @@ void retro_init(void)
        vout_buf = malloc(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2);
 
        PicoInit();
-       PicoDrawSetOutFormat(PDF_RGB555, 1);
+       PicoDrawSetOutFormat(PDF_RGB555, 0);
        PicoDrawSetOutBuf(vout_buf, vout_width * 2);
 
        //PicoMessage = plat_status_msg_busy_next;
index d060e9f..b99c4a6 100644 (file)
@@ -142,17 +142,8 @@ static void apply_renderer(void)
                break;\r
        }\r
 \r
-       if (PicoAHW & PAHW_32X) {\r
-               int only_32x = 0;\r
-               if (currentConfig.renderer == RT_16BIT)\r
-                       only_32x = 1;\r
-               else\r
-                       PicoDrawSetOutFormat(PDF_NONE, 0);\r
-               PicoDraw32xSetFrameMode(1, only_32x);\r
+       if (PicoAHW & PAHW_32X)\r
                PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
-       }\r
-       //PicoDraw32xSetFrameMode(0, 0);\r
-       //PicoDrawSetOutFormat(PDF_RGB555, 1);\r
 }\r
 \r
 void plat_video_toggle_renderer(int change, int is_menu)\r
@@ -198,7 +189,6 @@ void plat_update_volume(int has_changed, int is_up)
 void pemu_forced_frame(int no_scale, int do_emu)\r
 {\r
        PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
-       PicoDraw32xSetFrameMode(0, 0);\r
        PicoDrawSetCallbacks(NULL, NULL);\r
        Pico.m.dirtyPal = 1;\r
 \r
index 1b912c9..13d6d9a 100644 (file)
@@ -18,7 +18,6 @@
 #include "log_io.h"
 
 int current_keys;
-unsigned char *PicoDraw2FB;
 
 #ifdef FBDEV
 
@@ -265,7 +264,6 @@ static void realloc_screen(void)
        g_menubg_ptr = realloc(g_menubg_ptr, size);
        memset(g_screen_ptr, 0, size);
        memset(g_menubg_ptr, 0, size);
-       PicoDraw2FB = g_menubg_ptr;
        scr_changed = 0;
 }
 
@@ -335,7 +333,6 @@ void plat_init(void)
        g_screen_width = g_menuscreen_w = w;
        g_screen_height = g_menuscreen_h = h;
        g_menubg_ptr = realloc(g_menubg_ptr, w * g_screen_height * 2);
-       PicoDraw2FB = g_menubg_ptr;
 #else
        realloc_screen();
        memset(g_screen_ptr, 0, g_screen_width * g_screen_height * 2);
index 49b8da6..72c63aa 100644 (file)
@@ -43,7 +43,6 @@ static int g_osd_fps_x, g_osd_y, doing_bg_frame;
 static const char pnd_script_base[] = "sudo -n /usr/pandora/scripts";\r
 static unsigned char __attribute__((aligned(4))) fb_copy[320 * 240 * 2];\r
 static void *temp_frame;\r
-unsigned char *PicoDraw2FB;\r
 const char *renderer_names[] = { NULL };\r
 const char *renderer_names32x[] = { NULL };\r
 \r
@@ -140,13 +139,6 @@ static void draw_cd_leds(void)
        }\r
 }\r
 \r
-static int emuscan(unsigned int num)\r
-{\r
-       DrawLineDest = (unsigned short *)g_screen_ptr + num * g_screen_width;\r
-\r
-       return 0;\r
-}\r
-\r
 void pemu_finalize_frame(const char *fps, const char *notice)\r
 {\r
        if (notice && notice[0])\r
@@ -160,6 +152,7 @@ void pemu_finalize_frame(const char *fps, const char *notice)
 void plat_video_flip(void)\r
 {\r
        g_screen_ptr = vout_fbdev_flip(layer_fb);\r
+       PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
 \r
        // XXX: drain OS event queue here, maybe we'll actually use it someday..\r
        xenv_update(NULL, NULL, NULL, NULL);\r
@@ -308,7 +301,7 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols)
                return;\r
 \r
        PicoDrawSetOutFormat(PDF_RGB555, 1);\r
-       PicoDrawSetCallbacks(emuscan, NULL);\r
+       PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
 \r
        if (is_32cols) {\r
                fb_w = 256;\r
@@ -474,7 +467,6 @@ void plat_init(void)
        }\r
        g_menubg_ptr = temp_frame;\r
        g_menubg_src_ptr = temp_frame;\r
-       PicoDraw2FB = temp_frame;\r
 \r
        pnd_menu_init();\r
 \r
index c58fc17..5a2e880 100644 (file)
@@ -36,7 +36,7 @@ int sceAudio_E0727056(int volume, void *buffer);      // blocking output
 int sceAudioOutput2GetRestSample();
 
 
-unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword..
+//unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword..
 int engineStateSuspend;
 
 #define PICO_PEN_ADJUST_X 4
index 7ee685e..aa3a7f2 100644 (file)
@@ -18,8 +18,6 @@
 #include "main.h"
 
 static unsigned short screen_buff[320 * 240];
-static unsigned char PicoDraw2FB_[(8+320) * (8+240+8)];
-unsigned char *PicoDraw2FB = PicoDraw2FB_;
 const char *renderer_names[] = { NULL };
 const char *renderer_names32x[] = { NULL };