Mercurial > repos > blastem
comparison genesis.c @ 1909:508522f08e4d
Initial stab at VGM logging support
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 27 Mar 2020 00:03:58 -0700 |
parents | b021ca0bc375 |
children | 5b94e0e7c5a5 |
comparison
equal
deleted
inserted
replaced
1908:c3d49c338224 | 1909:508522f08e4d |
---|---|
402 jcart_adjust_cycles(gen, deduction); | 402 jcart_adjust_cycles(gen, deduction); |
403 } | 403 } |
404 context->current_cycle -= deduction; | 404 context->current_cycle -= deduction; |
405 z80_adjust_cycles(z_context, deduction); | 405 z80_adjust_cycles(z_context, deduction); |
406 ym_adjust_cycles(gen->ym, deduction); | 406 ym_adjust_cycles(gen->ym, deduction); |
407 if (gen->ym->vgm) { | |
408 vgm_adjust_cycles(gen->ym->vgm, deduction); | |
409 } | |
407 gen->psg->cycles -= deduction; | 410 gen->psg->cycles -= deduction; |
408 if (gen->reset_cycle != CYCLE_NEVER) { | 411 if (gen->reset_cycle != CYCLE_NEVER) { |
409 gen->reset_cycle -= deduction; | 412 gen->reset_cycle -= deduction; |
410 } | 413 } |
411 } | 414 } |
1450 genesis_context *gen = (genesis_context *)system; | 1453 genesis_context *gen = (genesis_context *)system; |
1451 setup_io_devices(config, &system->info, &gen->io); | 1454 setup_io_devices(config, &system->info, &gen->io); |
1452 set_audio_config(gen); | 1455 set_audio_config(gen); |
1453 } | 1456 } |
1454 | 1457 |
1458 static void start_vgm_log(system_header *system, char *filename) | |
1459 { | |
1460 genesis_context *gen = (genesis_context *)system; | |
1461 vgm_writer *vgm = vgm_write_open(filename, gen->version_reg & HZ50 ? 50 : 60, gen->master_clock, gen->m68k->current_cycle); | |
1462 if (vgm) { | |
1463 printf("Started logging VGM to %s\n", filename); | |
1464 sync_sound(gen, vgm->last_cycle); | |
1465 ym_vgm_log(gen->ym, gen->master_clock, vgm); | |
1466 psg_vgm_log(gen->psg, gen->master_clock, vgm); | |
1467 gen->header.vgm_logging = 1; | |
1468 } else { | |
1469 printf("Failed to start logging to %s\n", filename); | |
1470 } | |
1471 } | |
1472 | |
1473 static void stop_vgm_log(system_header *system) | |
1474 { | |
1475 puts("Stopped VGM log"); | |
1476 genesis_context *gen = (genesis_context *)system; | |
1477 vgm_close(gen->ym->vgm); | |
1478 gen->ym->vgm = gen->psg->vgm = NULL; | |
1479 gen->header.vgm_logging = 0; | |
1480 } | |
1481 | |
1455 genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on, uint32_t system_opts, uint8_t force_region) | 1482 genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on, uint32_t system_opts, uint8_t force_region) |
1456 { | 1483 { |
1457 static memmap_chunk z80_map[] = { | 1484 static memmap_chunk z80_map[] = { |
1458 { 0x0000, 0x4000, 0x1FFF, 0, 0, MMAP_READ | MMAP_WRITE | MMAP_CODE, NULL, NULL, NULL, NULL, NULL }, | 1485 { 0x0000, 0x4000, 0x1FFF, 0, 0, MMAP_READ | MMAP_WRITE | MMAP_CODE, NULL, NULL, NULL, NULL, NULL }, |
1459 { 0x8000, 0x10000, 0x7FFF, 0, 0, 0, NULL, NULL, NULL, z80_read_bank, z80_write_bank}, | 1486 { 0x8000, 0x10000, 0x7FFF, 0, 0, 0, NULL, NULL, NULL, z80_read_bank, z80_write_bank}, |
1482 gen->header.keyboard_down = keyboard_down; | 1509 gen->header.keyboard_down = keyboard_down; |
1483 gen->header.keyboard_up = keyboard_up; | 1510 gen->header.keyboard_up = keyboard_up; |
1484 gen->header.config_updated = config_updated; | 1511 gen->header.config_updated = config_updated; |
1485 gen->header.serialize = serialize; | 1512 gen->header.serialize = serialize; |
1486 gen->header.deserialize = deserialize; | 1513 gen->header.deserialize = deserialize; |
1514 gen->header.start_vgm_log = start_vgm_log; | |
1515 gen->header.stop_vgm_log = stop_vgm_log; | |
1487 gen->header.type = SYSTEM_GENESIS; | 1516 gen->header.type = SYSTEM_GENESIS; |
1488 gen->header.info = *rom; | 1517 gen->header.info = *rom; |
1489 set_region(gen, rom, force_region); | 1518 set_region(gen, rom, force_region); |
1490 tern_node *model = get_model(config, SYSTEM_GENESIS); | 1519 tern_node *model = get_model(config, SYSTEM_GENESIS); |
1491 uint8_t tmss = !strcmp(tern_find_ptr_default(model, "tmss", "off"), "on"); | 1520 uint8_t tmss = !strcmp(tern_find_ptr_default(model, "tmss", "off"), "on"); |