Mercurial > repos > blastem
view psg.h @ 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 | 74112041b2c7 |
children |
line wrap: on
line source
/* Copyright 2013 Michael Pavone This file is part of BlastEm. BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. */ #ifndef PSG_CONTEXT_H_ #define PSG_CONTEXT_H_ #include <stdint.h> #include "serialize.h" #include "render_audio.h" #include "vgm.h" #include "oscilloscope.h" typedef struct { audio_source *audio; vgm_writer *vgm; oscilloscope *scope; uint32_t clock_inc; uint32_t cycles; uint16_t lsfr; uint16_t counter_load[4]; uint16_t counters[4]; uint8_t volume[4]; uint8_t output_state[4]; uint8_t scope_channel[4]; uint8_t noise_out; uint8_t noise_use_tone; uint8_t noise_type; uint8_t latch; uint8_t pan; } psg_context; void psg_init(psg_context * context, uint32_t master_clock, uint32_t clock_div); void psg_enable_scope(psg_context *context, oscilloscope *scope, uint32_t master_clock); void psg_free(psg_context *context); void psg_adjust_master_clock(psg_context * context, uint32_t master_clock); void psg_write(psg_context * context, uint8_t value); void psg_run(psg_context * context, uint32_t cycles); void psg_vgm_log(psg_context *context, uint32_t master_clock, vgm_writer *vgm); void psg_serialize(psg_context *context, serialize_buffer *buf); void psg_deserialize(deserialize_buffer *buf, void *vcontext); #endif //PSG_CONTEXT_H_