Mercurial > repos > blastem
comparison genesis.c @ 2488:bfd09d3367ba
Fix crash when enabling VGM recording while running Pico or Copera software
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 15 Apr 2024 23:07:18 -0700 |
parents | e8eba0cd5444 |
children | d74d3998482c |
comparison
equal
deleted
inserted
replaced
2487:2ea2f3aa5aa8 | 2488:bfd09d3367ba |
---|---|
2455 { | 2455 { |
2456 genesis_context *gen = (genesis_context *)system; | 2456 genesis_context *gen = (genesis_context *)system; |
2457 vgm_writer *vgm = vgm_write_open(filename, gen->version_reg & HZ50 ? 50 : 60, gen->normal_clock, gen->m68k->current_cycle); | 2457 vgm_writer *vgm = vgm_write_open(filename, gen->version_reg & HZ50 ? 50 : 60, gen->normal_clock, gen->m68k->current_cycle); |
2458 if (vgm) { | 2458 if (vgm) { |
2459 printf("Started logging VGM to %s\n", filename); | 2459 printf("Started logging VGM to %s\n", filename); |
2460 sync_sound(gen, vgm->last_cycle); | |
2461 if (gen->header.type != SYSTEM_PICO && gen->header.type != SYSTEM_COPERA) { | 2460 if (gen->header.type != SYSTEM_PICO && gen->header.type != SYSTEM_COPERA) { |
2461 sync_sound(gen, vgm->last_cycle); | |
2462 ym_vgm_log(gen->ym, gen->normal_clock, vgm); | 2462 ym_vgm_log(gen->ym, gen->normal_clock, vgm); |
2463 } else { | |
2464 sync_sound_pico(gen, vgm->last_cycle); | |
2463 } | 2465 } |
2464 psg_vgm_log(gen->psg, gen->normal_clock, vgm); | 2466 psg_vgm_log(gen->psg, gen->normal_clock, vgm); |
2465 gen->header.vgm_logging = 1; | 2467 gen->header.vgm_logging = 1; |
2466 } else { | 2468 } else { |
2467 printf("Failed to start logging to %s\n", filename); | 2469 printf("Failed to start logging to %s\n", filename); |
2470 | 2472 |
2471 static void stop_vgm_log(system_header *system) | 2473 static void stop_vgm_log(system_header *system) |
2472 { | 2474 { |
2473 puts("Stopped VGM log"); | 2475 puts("Stopped VGM log"); |
2474 genesis_context *gen = (genesis_context *)system; | 2476 genesis_context *gen = (genesis_context *)system; |
2475 vgm_close(gen->ym->vgm); | 2477 vgm_close(gen->psg->vgm); |
2476 if (gen->header.type != SYSTEM_PICO && gen->header.type != SYSTEM_COPERA) { | 2478 if (gen->header.type != SYSTEM_PICO && gen->header.type != SYSTEM_COPERA) { |
2477 gen->ym->vgm = NULL; | 2479 gen->ym->vgm = NULL; |
2478 } | 2480 } |
2479 gen->psg->vgm = NULL; | 2481 gen->psg->vgm = NULL; |
2480 gen->header.vgm_logging = 0; | 2482 gen->header.vgm_logging = 0; |