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