# HG changeset patch # User Mike Pavone # Date 1366432560 25200 # Node ID 2b1c2c28b26175a3f49926797c8dc0b9f2d105f0 # Parent 9126c33cc33cf39cc8d10eefcff3f54d72186df2 Added headless flag to avoid initializing SDL and opening a window when running tests. diff -r 9126c33cc33c -r 2b1c2c28b261 blastem.c --- a/blastem.c Fri Apr 19 09:29:37 2013 -0700 +++ b/blastem.c Fri Apr 19 21:36:00 2013 -0700 @@ -23,6 +23,8 @@ io_port gamepad_1; io_port gamepad_2; +int headless = 0; + #ifndef MIN #define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif @@ -128,7 +130,9 @@ if (mclks >= MCLKS_PER_FRAME) { //printf("reached frame end | 68K Cycles: %d, MCLK Cycles: %d\n", context->current_cycle, mclks); vdp_run_context(v_context, MCLKS_PER_FRAME); - break_on_sync |= wait_render_frame(v_context); + if (!headless) { + break_on_sync |= wait_render_frame(v_context); + } mclks -= MCLKS_PER_FRAME; vdp_adjust_cycles(v_context, MCLKS_PER_FRAME); io_adjust_cycles(&gamepad_1, context->current_cycle, MCLKS_PER_FRAME/MCLKS_PER_68K); @@ -161,7 +165,9 @@ while(v_context->flags & FLAG_DMA_RUN) { vdp_run_dma_done(v_context, MCLKS_PER_FRAME); if (v_context->cycles >= MCLKS_PER_FRAME) { - wait_render_frame(v_context); + if (!headless) { + wait_render_frame(v_context); + } vdp_adjust_cycles(v_context, MCLKS_PER_FRAME); io_adjust_cycles(&gamepad_1, v_context->cycles/MCLKS_PER_68K, MCLKS_PER_FRAME/MCLKS_PER_68K); io_adjust_cycles(&gamepad_2, v_context->cycles/MCLKS_PER_68K, MCLKS_PER_FRAME/MCLKS_PER_68K); @@ -176,7 +182,9 @@ while(v_context->flags & FLAG_DMA_RUN) { vdp_run_dma_done(v_context, MCLKS_PER_FRAME); if (v_context->cycles >= MCLKS_PER_FRAME) { - wait_render_frame(v_context); + if (!headless) { + wait_render_frame(v_context); + } vdp_adjust_cycles(v_context, MCLKS_PER_FRAME); io_adjust_cycles(&gamepad_1, v_context->cycles/MCLKS_PER_68K, MCLKS_PER_FRAME/MCLKS_PER_68K); io_adjust_cycles(&gamepad_2, v_context->cycles/MCLKS_PER_68K, MCLKS_PER_FRAME/MCLKS_PER_68K); @@ -848,6 +856,9 @@ case 'l': address_log = fopen("address.log", "w"); break; + case 'v': + headless = 1; + break; default: fprintf(stderr, "Unrecognized switch %s\n", argv[i]); return 1; @@ -860,7 +871,9 @@ } width = width < 320 ? 320 : width; height = height < 240 ? (width/320) * 240 : height; - render_init(width, height); + if (!headless) { + render_init(width, height); + } vdp_context v_context; init_vdp_context(&v_context);