comparison render_sdl.c @ 55:8317f174d916

Add palette debug to SDL renderer
author Mike Pavone <pavone@retrodev.com>
date Tue, 18 Dec 2012 19:51:17 -0800
parents 3b79cbcf6846
children a6dd5b7a971b
comparison
equal deleted inserted replaced
54:3b79cbcf6846 55:8317f174d916
84 } 84 }
85 } 85 }
86 break; 86 break;
87 case 4: 87 case 4:
88 buf_32 = (uint32_t *)screen->pixels; 88 buf_32 = (uint32_t *)screen->pixels;
89 for (int y = 0; y < 240; y++) { 89
90 for (int i = 0; i < repeat_y; i++,buf_32 += screen->pitch/4) { 90 for (int y = 0; y < 240; y++) {
91 uint32_t *line = buf_32; 91 for (int i = 0; i < repeat_y; i++,buf_32 += screen->pitch/4) {
92 for (int x = 0; x < 320; x++) { 92 uint32_t *line = buf_32;
93 uint16_t gen_color = context->framebuf[y * 320 + x]; 93 for (int x = 0; x < 320; x++) {
94 if (render_dbg) { 94 uint16_t gen_color = context->framebuf[y * 320 + x];
95 r = g = b = 0; 95 if (render_dbg == 1) {
96 switch(gen_color & FBUF_SRC_MASK) 96 r = g = b = 0;
97 { 97 switch(gen_color & FBUF_SRC_MASK)
98 case FBUF_SRC_A: 98 {
99 g = 127; 99 case FBUF_SRC_A:
100 break; 100 g = 127;
101 break;
101 case FBUF_SRC_W: 102 case FBUF_SRC_W:
102 g = 127; 103 g = 127;
103 b = 127; 104 b = 127;
104 break; 105 break;
105 case FBUF_SRC_B: 106 case FBUF_SRC_B:
109 r = 127; 110 r = 127;
110 break; 111 break;
111 case FBUF_SRC_BG: 112 case FBUF_SRC_BG:
112 r = 127; 113 r = 127;
113 b = 127; 114 b = 127;
114 } 115 }
115 if (gen_color & FBUF_BIT_PRIORITY) { 116 if (gen_color & FBUF_BIT_PRIORITY) {
116 b *= 2; 117 b *= 2;
117 g *= 2; 118 g *= 2;
118 r *= 2; 119 r *= 2;
119 } 120 }
120 } else { 121 } else {
122 if (render_dbg == 2) {
123 gen_color = context->cram[(y/30)*8 + x/40];
124 }
121 b = ((gen_color >> 8) & 0xE) * 18; 125 b = ((gen_color >> 8) & 0xE) * 18;
122 g = ((gen_color >> 4) & 0xE) * 18; 126 g = ((gen_color >> 4) & 0xE) * 18;
123 r = (gen_color& 0xE) * 18; 127 r = (gen_color& 0xE) * 18;
124 } 128 }
125 for (int j = 0; j < repeat_x; j++) { 129 for (int j = 0; j < repeat_x; j++) {
126 *(line++) = SDL_MapRGB(screen->format, r, g, b); 130 *(line++) = SDL_MapRGB(screen->format, r, g, b);
127 } 131 }
128 } 132 }
129 } 133 }
130 } 134 }
131 break; 135 break;
132 } 136 }
133 if ( SDL_MUSTLOCK(screen) ) { 137 if ( SDL_MUSTLOCK(screen) ) {
134 SDL_UnlockSurface(screen); 138 SDL_UnlockSurface(screen);
135 } 139 }
136 SDL_UpdateRect(screen, 0, 0, screen->clip_rect.w, screen->clip_rect.h); 140 SDL_UpdateRect(screen, 0, 0, screen->clip_rect.w, screen->clip_rect.h);
137 } 141 }
141 SDL_Event event; 145 SDL_Event event;
142 while(SDL_WaitEvent(&event)) { 146 while(SDL_WaitEvent(&event)) {
143 switch (event.type) { 147 switch (event.type) {
144 case SDL_KEYDOWN: 148 case SDL_KEYDOWN:
145 if (event.key.keysym.sym == SDLK_LEFTBRACKET) { 149 if (event.key.keysym.sym == SDLK_LEFTBRACKET) {
146 render_dbg = !render_dbg; 150 render_dbg++;
151 if (render_dbg == 3) {
152 render_dbg = 0;
153 }
147 render_context(context); 154 render_context(context);
148 } 155 }
149 break; 156 break;
150 case SDL_QUIT: 157 case SDL_QUIT:
151 return; 158 return;
162 while(SDL_PollEvent(&event)) { 169 while(SDL_PollEvent(&event)) {
163 switch (event.type) { 170 switch (event.type) {
164 case SDL_KEYDOWN: 171 case SDL_KEYDOWN:
165 //TODO: Update emulated gamepads 172 //TODO: Update emulated gamepads
166 if (event.key.keysym.sym == SDLK_LEFTBRACKET) { 173 if (event.key.keysym.sym == SDLK_LEFTBRACKET) {
167 render_dbg = !render_dbg; 174 render_dbg++;
168 render_context(context); 175 if (render_dbg == 3) {
176 render_dbg = 0;
177 }
178 } else if(event.key.keysym.sym == SDLK_t) {
179 FILE * outfile = fopen("state.gst", "wb");
180 fwrite("GST\0\0\0\xE0\x40", 1, 8, outfile);
181 vdp_save_state(context, outfile);
182 fclose(outfile);
183 puts("state saved to state.gst");
169 } 184 }
170 break; 185 break;
171 case SDL_QUIT: 186 case SDL_QUIT:
172 exit(0); 187 exit(0);
173 } 188 }