Mercurial > repos > blastem
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 } |