Mercurial > repos > blastem
comparison sms.c @ 2529:a6687a6fb69d
Merge
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 25 Nov 2024 22:30:32 -0800 |
parents | 90a40be940f7 7e1215d17571 |
children | f4a471730ba4 |
comparison
equal
deleted
inserted
replaced
2528:90a40be940f7 | 2529:a6687a6fb69d |
---|---|
373 { | 373 { |
374 z80_context *z80 = vcontext; | 374 z80_context *z80 = vcontext; |
375 sms_context *sms = z80->system; | 375 sms_context *sms = z80->system; |
376 psg_run(sms->psg, z80->Z80_CYCLE); | 376 psg_run(sms->psg, z80->Z80_CYCLE); |
377 sms->psg->pan = value; | 377 sms->psg->pan = value; |
378 if (sms->psg->vgm) { | |
379 vgm_gg_pan_write(sms->psg->vgm, sms->psg->cycles, sms->psg->pan); | |
380 } | |
378 return vcontext; | 381 return vcontext; |
379 } | 382 } |
380 | 383 |
381 static void *ppi_write(uint32_t location, void *vcontext, uint8_t value) | 384 static void *ppi_write(uint32_t location, void *vcontext, uint8_t value) |
382 { | 385 { |
715 io_adjust_cycles(sms->io.ports+1, sms->z80->Z80_CYCLE, adjust); | 718 io_adjust_cycles(sms->io.ports+1, sms->z80->Z80_CYCLE, adjust); |
716 z80_adjust_cycles(sms->z80, adjust); | 719 z80_adjust_cycles(sms->z80, adjust); |
717 vdp_adjust_cycles(sms->vdp, adjust); | 720 vdp_adjust_cycles(sms->vdp, adjust); |
718 sms->psg->cycles -= adjust; | 721 sms->psg->cycles -= adjust; |
719 sms->cassette_cycle -= adjust; | 722 sms->cassette_cycle -= adjust; |
723 if (sms->psg->vgm) { | |
724 vgm_adjust_cycles(sms->psg->vgm, adjust); | |
725 } | |
720 target_cycle -= adjust; | 726 target_cycle -= adjust; |
721 } | 727 } |
722 } | 728 } |
723 if (sms->header.force_release || render_should_release_on_exit()) { | 729 if (sms->header.force_release || render_should_release_on_exit()) { |
724 bindings_release_capture(); | 730 bindings_release_capture(); |
1009 sms->cassette_state = TAPE_STOPPED; | 1015 sms->cassette_state = TAPE_STOPPED; |
1010 sms->cassette_offset = data_sub_chunk; | 1016 sms->cassette_offset = data_sub_chunk; |
1011 sms->cassette = media; | 1017 sms->cassette = media; |
1012 } | 1018 } |
1013 | 1019 |
1020 static void start_vgm_log(system_header *system, char *filename) | |
1021 { | |
1022 sms_context *sms = (sms_context *)system; | |
1023 //TODO: 50 Hz support | |
1024 vgm_writer *vgm = vgm_write_open(filename, 60, sms->normal_clock, sms->z80->Z80_CYCLE); | |
1025 if (vgm) { | |
1026 printf("Started logging VGM to %s\n", filename); | |
1027 psg_run(sms->psg, sms->z80->Z80_CYCLE); | |
1028 psg_vgm_log(sms->psg, sms->normal_clock, vgm); | |
1029 sms->header.vgm_logging = 1; | |
1030 } else { | |
1031 printf("Failed to start logging to %s\n", filename); | |
1032 } | |
1033 } | |
1034 | |
1035 static void stop_vgm_log(system_header *system) | |
1036 { | |
1037 puts("Stopped VGM log"); | |
1038 sms_context *sms = (sms_context *)system; | |
1039 vgm_close(sms->psg->vgm); | |
1040 sms->psg->vgm = NULL; | |
1041 sms->header.vgm_logging = 0; | |
1042 } | |
1043 | |
1014 sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region) | 1044 sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region) |
1015 { | 1045 { |
1016 sms_context *sms = calloc(1, sizeof(sms_context)); | 1046 sms_context *sms = calloc(1, sizeof(sms_context)); |
1017 tern_node *rom_db = get_rom_db(); | 1047 tern_node *rom_db = get_rom_db(); |
1018 const memmap_chunk base_map[] = { | 1048 const memmap_chunk base_map[] = { |
1147 sms->header.keyboard_down = keyboard_down; | 1177 sms->header.keyboard_down = keyboard_down; |
1148 sms->header.keyboard_up = keyboard_up; | 1178 sms->header.keyboard_up = keyboard_up; |
1149 sms->header.config_updated = config_updated; | 1179 sms->header.config_updated = config_updated; |
1150 sms->header.serialize = serialize; | 1180 sms->header.serialize = serialize; |
1151 sms->header.deserialize = deserialize; | 1181 sms->header.deserialize = deserialize; |
1182 sms->header.start_vgm_log = start_vgm_log; | |
1183 sms->header.stop_vgm_log = stop_vgm_log; | |
1152 sms->header.toggle_debug_view = toggle_debug_view; | 1184 sms->header.toggle_debug_view = toggle_debug_view; |
1153 sms->header.cassette_action = cassette_action; | 1185 sms->header.cassette_action = cassette_action; |
1154 sms->header.type = SYSTEM_SMS; | 1186 sms->header.type = SYSTEM_SMS; |
1155 | 1187 |
1156 return sms; | 1188 return sms; |