Mercurial > repos > blastem
comparison ym2612.h @ 451:b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 26 Jul 2013 19:55:04 -0700 |
parents | 7e8e179116af |
children | 140af5509ce7 |
comparison
equal
deleted
inserted
replaced
448:e85a107e6ec0 | 451:b7c3b2d22858 |
---|---|
43 uint8_t block; | 43 uint8_t block; |
44 uint8_t block_fnum_latch; | 44 uint8_t block_fnum_latch; |
45 uint8_t keycode; | 45 uint8_t keycode; |
46 } ym_supp; | 46 } ym_supp; |
47 | 47 |
48 #define YM_PART1_START 0x21 | |
49 #define YM_PART2_START 0x30 | |
50 #define YM_REG_END 0xB8 | |
51 #define YM_PART1_REGS (YM_REG_END-YM_PART1_START) | |
52 #define YM_PART2_REGS (YM_REG_END-YM_PART2_START) | |
53 | |
48 typedef struct { | 54 typedef struct { |
49 int16_t *audio_buffer; | 55 int16_t *audio_buffer; |
50 int16_t *back_buffer; | 56 int16_t *back_buffer; |
51 double buffer_fraction; | 57 double buffer_fraction; |
52 double buffer_inc; | 58 double buffer_inc; |
64 uint16_t env_counter; | 70 uint16_t env_counter; |
65 ym_supp ch3_supp[3]; | 71 ym_supp ch3_supp[3]; |
66 uint8_t ch3_mode; | 72 uint8_t ch3_mode; |
67 uint8_t current_op; | 73 uint8_t current_op; |
68 uint8_t current_env_op; | 74 uint8_t current_env_op; |
69 | 75 |
70 uint8_t timer_control; | 76 uint8_t timer_control; |
71 uint8_t dac_enable; | 77 uint8_t dac_enable; |
72 uint8_t lfo_enable; | 78 uint8_t lfo_enable; |
73 uint8_t lfo_freq; | 79 uint8_t lfo_freq; |
74 uint8_t lfo_counter; | 80 uint8_t lfo_counter; |
75 uint8_t lfo_am_step; | 81 uint8_t lfo_am_step; |
76 uint8_t lfo_pm_step; | 82 uint8_t lfo_pm_step; |
77 uint8_t status; | 83 uint8_t status; |
78 uint8_t selected_reg; | 84 uint8_t selected_reg; |
79 uint8_t selected_part; | 85 uint8_t selected_part; |
86 uint8_t part1_regs[YM_PART1_REGS]; | |
87 uint8_t part2_regs[YM_PART2_REGS]; | |
80 } ym2612_context; | 88 } ym2612_context; |
81 | 89 |
82 void ym_init(ym2612_context * context, uint32_t sample_rate, uint32_t master_clock, uint32_t clock_div, uint32_t sample_limit, uint32_t options); | 90 void ym_init(ym2612_context * context, uint32_t sample_rate, uint32_t master_clock, uint32_t clock_div, uint32_t sample_limit, uint32_t options); |
83 void ym_run(ym2612_context * context, uint32_t to_cycle); | 91 void ym_run(ym2612_context * context, uint32_t to_cycle); |
84 void ym_address_write_part1(ym2612_context * context, uint8_t address); | 92 void ym_address_write_part1(ym2612_context * context, uint8_t address); |
85 void ym_address_write_part2(ym2612_context * context, uint8_t address); | 93 void ym_address_write_part2(ym2612_context * context, uint8_t address); |
86 void ym_data_write(ym2612_context * context, uint8_t value); | 94 void ym_data_write(ym2612_context * context, uint8_t value); |
87 uint8_t ym_read_status(ym2612_context * context); | 95 uint8_t ym_read_status(ym2612_context * context); |
88 uint8_t ym_load_gst(ym2612_context * context, FILE * gstfile); | 96 uint8_t ym_load_gst(ym2612_context * context, FILE * gstfile); |
97 uint8_t ym_save_gst(ym2612_context * context, FILE * gstfile); | |
89 | 98 |
90 #endif //YM2612_H_ | 99 #endif //YM2612_H_ |
91 | 100 |