Mercurial > repos > blastem
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); |