added upscaler
[gpsp.git] / video.c
diff --git a/video.c b/video.c
index 5a1181f..8edea82 100644 (file)
--- a/video.c
+++ b/video.c
@@ -79,6 +79,18 @@ static void Ge_Finish_Callback(int id, void *arg)
 {
 }
 
+#define get_screen_pixels()                                                   \
+  screen_pixels                                                               \
+
+#define get_screen_pitch()                                                    \
+  screen_pitch                                                                \
+
+#elif defined(WIZ_BUILD)
+
+static u32 screen_offset = 0;
+static u16 *screen_pixels = NULL;
+const u32 screen_pitch = 320;
+
 #define get_screen_pixels()                                                   \
   screen_pixels                                                               \
 
@@ -88,13 +100,8 @@ static void Ge_Finish_Callback(int id, void *arg)
 #else
 
 #ifdef GP2X_BUILD
- #ifdef WIZ_BUILD
-  static void SDL_GP2X_AllowGfxMemory() {}
-  #include <SDL.h>
- #else
-  #include "SDL_gp2x.h"
- #endif
- SDL_Surface *hw_screen;
+#include "SDL_gp2x.h"
+SDL_Surface *hw_screen;
 #endif
 SDL_Surface *screen;
 const u32 video_scale = 1;
@@ -3328,6 +3335,20 @@ void flip_screen()
   }
 }
 
+#elif defined(WIZ_BUILD)
+
+void flip_screen()
+{
+  if((screen_scale == scaled_aspect) &&
+   (resolution_width == small_resolution_width) &&
+   (resolution_height == small_resolution_height))
+  {
+    upscale_aspect(gpsp_gp2x_screen, screen_pixels);
+  }
+  pollux_video_flip();
+  screen_pixels = (u16 *)gpsp_gp2x_screen + screen_offset;
+}
+
 #else
 
 #define integer_scale_copy_2()                                                \
@@ -3528,6 +3549,12 @@ void init_video()
   GE_CMD(NOP, 0);
 }
 
+#elif defined(WIZ_BUILD)
+
+void init_video()
+{
+}
+
 #else
 
 void init_video()
@@ -3656,6 +3683,50 @@ void clear_screen(u16 color)
   sceGuSync(0, 0); */
 }
 
+#elif defined(WIZ_BUILD)
+
+void video_resolution_large()
+{
+  screen_offset = 0;
+  resolution_width = 320;
+  resolution_height = 240;
+
+  fb_use_buffers(1);
+  flip_screen();
+  clear_screen(0);
+}
+
+void video_resolution_small()
+{
+  if(screen_scale == scaled_aspect)
+    screen_offset = 320*(80 - 14) + 80;
+  else
+    screen_offset = 320*40 + 40;
+  resolution_width = 240;
+  resolution_height = 160;
+
+  fb_use_buffers(3);
+  clear_screen(0);
+  flip_screen();
+  clear_screen(0);
+  flip_screen();
+  clear_screen(0);
+}
+
+void set_gba_resolution(video_scale_type scale)
+{
+  screen_scale = scale;
+}
+
+void clear_screen(u16 color)
+{
+  u32 col = ((u32)color << 16) | color;
+  u32 *p = gpsp_gp2x_screen;
+  int c = 320*240/2;
+  while (c-- > 0)
+    *p++ = col;
+}
+
 #else
 
 void video_resolution_large()