comparison genesis.c @ 2243:0d1d5dccdd28

Initial implementation of oscilloscope debug view
author Michael Pavone <pavone@retrodev.com>
date Tue, 22 Nov 2022 17:57:02 -0800
parents 0db9dc6a9020
children f7e2e11f1214
comparison
equal deleted inserted replaced
2240:8e8db9141209 2243:0d1d5dccdd28
465 gen->reset_requested = 1; 465 gen->reset_requested = 1;
466 context->should_return = 1; 466 context->should_return = 1;
467 gen->reset_cycle = CYCLE_NEVER; 467 gen->reset_cycle = CYCLE_NEVER;
468 } 468 }
469 if (v_context->frame != gen->last_frame) { 469 if (v_context->frame != gen->last_frame) {
470 if (gen->ym->scope) {
471 scope_render(gen->ym->scope);
472 }
470 //printf("reached frame end %d | MCLK Cycles: %d, Target: %d, VDP cycles: %d, vcounter: %d, hslot: %d\n", gen->last_frame, mclks, gen->frame_end, v_context->cycles, v_context->vcounter, v_context->hslot); 473 //printf("reached frame end %d | MCLK Cycles: %d, Target: %d, VDP cycles: %d, vcounter: %d, hslot: %d\n", gen->last_frame, mclks, gen->frame_end, v_context->cycles, v_context->vcounter, v_context->hslot);
471 uint32_t elapsed = v_context->frame - gen->last_frame; 474 uint32_t elapsed = v_context->frame - gen->last_frame;
472 gen->last_frame = v_context->frame; 475 gen->last_frame = v_context->frame;
473 event_flush(mclks); 476 event_flush(mclks);
474 gen->last_flush_cycle = mclks; 477 gen->last_flush_cycle = mclks;
1710 vgm_close(gen->ym->vgm); 1713 vgm_close(gen->ym->vgm);
1711 gen->ym->vgm = gen->psg->vgm = NULL; 1714 gen->ym->vgm = gen->psg->vgm = NULL;
1712 gen->header.vgm_logging = 0; 1715 gen->header.vgm_logging = 0;
1713 } 1716 }
1714 1717
1718 static void toggle_debug_view(system_header *system, uint8_t debug_view)
1719 {
1720 genesis_context *gen = (genesis_context *)system;
1721 if (debug_view < DEBUG_OSCILLOSCOPE) {
1722 vdp_toggle_debug_view(gen->vdp, debug_view);
1723 } else if (debug_view == DEBUG_OSCILLOSCOPE) {
1724 if (gen->ym->scope) {
1725 oscilloscope *scope = gen->ym->scope;
1726 gen->ym->scope = NULL;
1727 gen->psg->scope = NULL;
1728 if (gen->expansion) {
1729 segacd_context *cd = gen->expansion;
1730 cd->pcm.scope = NULL;
1731 }
1732 scope_close(scope);
1733 } else {
1734 oscilloscope *scope = create_oscilloscope();
1735 ym_enable_scope(gen->ym, scope);
1736 psg_enable_scope(gen->psg, scope);
1737 if (gen->expansion) {
1738 segacd_context *cd = gen->expansion;
1739 rf5c164_enable_scope(&cd->pcm, scope);
1740 }
1741 }
1742 }
1743 }
1744
1715 static void *tmss_rom_write_16(uint32_t address, void *context, uint16_t value) 1745 static void *tmss_rom_write_16(uint32_t address, void *context, uint16_t value)
1716 { 1746 {
1717 m68k_context *m68k = context; 1747 m68k_context *m68k = context;
1718 genesis_context *gen = m68k->system; 1748 genesis_context *gen = m68k->system;
1719 if (gen->tmss) { 1749 if (gen->tmss) {
1884 gen->header.config_updated = config_updated; 1914 gen->header.config_updated = config_updated;
1885 gen->header.serialize = serialize; 1915 gen->header.serialize = serialize;
1886 gen->header.deserialize = deserialize; 1916 gen->header.deserialize = deserialize;
1887 gen->header.start_vgm_log = start_vgm_log; 1917 gen->header.start_vgm_log = start_vgm_log;
1888 gen->header.stop_vgm_log = stop_vgm_log; 1918 gen->header.stop_vgm_log = stop_vgm_log;
1919 gen->header.toggle_debug_view = toggle_debug_view;
1889 gen->header.type = SYSTEM_GENESIS; 1920 gen->header.type = SYSTEM_GENESIS;
1890 gen->header.info = *rom; 1921 gen->header.info = *rom;
1891 set_region(gen, rom, force_region); 1922 set_region(gen, rom, force_region);
1892 tern_node *model = get_model(config, SYSTEM_GENESIS); 1923 tern_node *model = get_model(config, SYSTEM_GENESIS);
1893 uint8_t tmss = !strcmp(tern_find_ptr_default(model, "tmss", "off"), "on"); 1924 uint8_t tmss = !strcmp(tern_find_ptr_default(model, "tmss", "off"), "on");