comparison render_sdl.c @ 766:1b2f8280ba81

WIP changes to support reading cart memory map from ROM DB
author Michael Pavone <pavone@retrodev.com>
date Sun, 05 Jul 2015 14:21:34 -0700
parents 9d4d40f833d0
children 724bbec47f86 65181c3ee560
comparison
equal deleted inserted replaced
765:dc54387ee1cd 766:1b2f8280ba81
171 glGenBuffers(2, buffers); 171 glGenBuffers(2, buffers);
172 glBindBuffer(GL_ARRAY_BUFFER, buffers[0]); 172 glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
173 glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW); 173 glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW);
174 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]); 174 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]);
175 glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(element_data), element_data, GL_STATIC_DRAW); 175 glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(element_data), element_data, GL_STATIC_DRAW);
176 vshader = load_shader(tern_find_ptr_default(config, "videovertex_shader", "default.v.glsl"), GL_VERTEX_SHADER); 176 tern_val def = {.ptrval = "default.v.glsl"};
177 fshader = load_shader(tern_find_ptr_default(config, "videofragment_shader", "default.f.glsl"), GL_FRAGMENT_SHADER); 177 vshader = load_shader(tern_find_path_default(config, "video\0vertex_shader\0", def).ptrval, GL_VERTEX_SHADER);
178 def.ptrval = "default.f.glsl";
179 fshader = load_shader(tern_find_path_default(config, "video\0fragment_shader\0", def).ptrval, GL_FRAGMENT_SHADER);
178 program = glCreateProgram(); 180 program = glCreateProgram();
179 glAttachShader(program, vshader); 181 glAttachShader(program, vshader);
180 glAttachShader(program, fshader); 182 glAttachShader(program, fshader);
181 glLinkProgram(program); 183 glLinkProgram(program);
182 GLint link_status; 184 GLint link_status;
237 fputs("BlastEm requires at least OpenGL 2.0, but it is unavailable\n", stderr); 239 fputs("BlastEm requires at least OpenGL 2.0, but it is unavailable\n", stderr);
238 SDL_Quit(); 240 SDL_Quit();
239 exit(1); 241 exit(1);
240 } 242 }
241 float aspect = (float)width / height; 243 float aspect = (float)width / height;
242 if (fabs(aspect - 4.0/3.0) > 0.01 && strcmp(tern_find_ptr_default(config, "videoaspect", "normal"), "stretch")) { 244 tern_val def = {.ptrval = "normal"};
245 if (fabs(aspect - 4.0/3.0) > 0.01 && strcmp(tern_find_path_default(config, "video\0aspect\0", def).ptrval, "stretch")) {
243 for (int i = 0; i < 4; i++) 246 for (int i = 0; i < 4; i++)
244 { 247 {
245 if (aspect > 4.0/3.0) { 248 if (aspect > 4.0/3.0) {
246 vertex_data[i*2] *= (4.0/3.0)/aspect; 249 vertex_data[i*2] *= (4.0/3.0)/aspect;
247 } else { 250 } else {
270 psg_cond = SDL_CreateCond(); 273 psg_cond = SDL_CreateCond();
271 ym_cond = SDL_CreateCond(); 274 ym_cond = SDL_CreateCond();
272 audio_ready = SDL_CreateCond(); 275 audio_ready = SDL_CreateCond();
273 276
274 SDL_AudioSpec desired, actual; 277 SDL_AudioSpec desired, actual;
275 char * rate_str = tern_find_ptr(config, "audiorate"); 278 char * rate_str = tern_find_path(config, "audio\0rate\0").ptrval;
276 int rate = rate_str ? atoi(rate_str) : 0; 279 int rate = rate_str ? atoi(rate_str) : 0;
277 if (!rate) { 280 if (!rate) {
278 rate = 48000; 281 rate = 48000;
279 } 282 }
280 desired.freq = rate; 283 desired.freq = rate;
281 desired.format = AUDIO_S16SYS; 284 desired.format = AUDIO_S16SYS;
282 desired.channels = 2; 285 desired.channels = 2;
283 char * samples_str = tern_find_ptr(config, "audiobuffer"); 286 char * samples_str = tern_find_path(config, "audio\0buffer\0").ptrval;
284 int samples = samples_str ? atoi(samples_str) : 0; 287 int samples = samples_str ? atoi(samples_str) : 0;
285 if (!samples) { 288 if (!samples) {
286 samples = 512; 289 samples = 512;
287 } 290 }
288 printf("config says: %d\n", samples); 291 printf("config says: %d\n", samples);