diff render_sdl.c @ 43:3fc57e1a2c56

Add debug render mode and fix vertical flip bit for bg tiles
author Mike Pavone <pavone@retrodev.com>
date Sun, 09 Dec 2012 18:40:45 -0800
parents 2e15fa26fe58
children 3b79cbcf6846
line wrap: on
line diff
--- a/render_sdl.c	Sun Dec 09 17:26:36 2012 -0800
+++ b/render_sdl.c	Sun Dec 09 18:40:45 2012 -0800
@@ -4,6 +4,7 @@
 #include "render.h"
 
 SDL_Surface *screen;
+uint8_t render_dbg = 0;
 
 void render_init(int width, int height)
 {
@@ -88,9 +89,37 @@
         		uint32_t *line = buf_32;
 		    	for (int x = 0; x < 320; x++) {
 		    		uint16_t gen_color = context->framebuf[y * 320 + x];
-		    		b = ((gen_color >> 8) & 0xE) * 18;
-		    		g = ((gen_color >> 4) & 0xE) * 18;
-		    		r = (gen_color& 0xE) * 18;
+		    		if (render_dbg) {
+		    			r = g = b = 0;
+		    			switch(gen_color & FBUF_SRC_MASK)
+		    			{
+		    			case FBUF_SRC_A:
+		    				g = 127;
+		    				break;
+						case FBUF_SRC_W:
+							g = 127;
+							b = 127;
+							break;
+						case FBUF_SRC_B:
+							b = 127;
+							break;
+						case FBUF_SRC_S:
+							r = 127;
+							break;
+						case FBUF_SRC_BG:
+							r = 127;
+							b = 127;
+		    			}
+		    			if (gen_color & FBUF_BIT_PRIORITY) {
+		    				b *= 2;
+		    				g *= 2;
+		    				r *= 2;
+		    			}
+		    		} else {
+						b = ((gen_color >> 8) & 0xE) * 18;
+						g = ((gen_color >> 4) & 0xE) * 18;
+						r = (gen_color& 0xE) * 18;
+					}
 		    		for (int j = 0; j < repeat_x; j++) {
 		    			*(line++) = SDL_MapRGB(screen->format, r, g, b);
 		    		}
@@ -105,11 +134,17 @@
     SDL_UpdateRect(screen, 0, 0, screen->clip_rect.w, screen->clip_rect.h);
 }
 
-void render_wait_quit()
+void render_wait_quit(vdp_context * context)
 {
 	SDL_Event event;
 	while(SDL_WaitEvent(&event)) {
 		switch (event.type) {
+		case SDL_KEYDOWN:
+			if (event.key.keysym.sym == SDLK_LEFTBRACKET) {
+				render_dbg = !render_dbg;
+				render_context(context);
+			}
+			break;
 		case SDL_QUIT:
 			return;
 		}