Mercurial > repos > blastem
comparison ym2612.h @ 407:c3abc4ada43d
Add support for logging YM2612 channels to WAVE files
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 16 Jun 2013 17:57:57 -0700 |
parents | f0a3f86595ae |
children | baf4688901f2 |
comparison
equal
deleted
inserted
replaced
406:b1bc1947d949 | 407:c3abc4ada43d |
---|---|
1 #ifndef YM2612_H_ | 1 #ifndef YM2612_H_ |
2 #define YM2612_H_ | 2 #define YM2612_H_ |
3 | 3 |
4 #include <stdint.h> | 4 #include <stdint.h> |
5 #include <stdio.h> | |
5 | 6 |
6 #define NUM_PART_REGS (0xB7-0x30) | 7 #define NUM_PART_REGS (0xB7-0x30) |
7 #define NUM_CHANNELS 6 | 8 #define NUM_CHANNELS 6 |
8 #define NUM_OPERATORS (4*NUM_CHANNELS) | 9 #define NUM_OPERATORS (4*NUM_CHANNELS) |
10 | |
11 #define YM_OPT_WAVE_LOG 1 | |
9 | 12 |
10 typedef struct { | 13 typedef struct { |
11 uint32_t phase_inc; | 14 uint32_t phase_inc; |
12 uint32_t phase_counter; | 15 uint32_t phase_counter; |
13 uint16_t envelope; | 16 uint16_t envelope; |
20 uint8_t detune; | 23 uint8_t detune; |
21 uint8_t env_phase; | 24 uint8_t env_phase; |
22 } ym_operator; | 25 } ym_operator; |
23 | 26 |
24 typedef struct { | 27 typedef struct { |
28 FILE * logfile; | |
25 uint16_t fnum; | 29 uint16_t fnum; |
26 int16_t output; | 30 int16_t output; |
27 uint8_t block_fnum_latch; | 31 uint8_t block_fnum_latch; |
28 uint8_t block; | 32 uint8_t block; |
29 uint8_t keycode; | 33 uint8_t keycode; |
68 uint8_t status; | 72 uint8_t status; |
69 uint8_t selected_reg; | 73 uint8_t selected_reg; |
70 uint8_t selected_part; | 74 uint8_t selected_part; |
71 } ym2612_context; | 75 } ym2612_context; |
72 | 76 |
73 void ym_init(ym2612_context * context, uint32_t sample_rate, uint32_t master_clock, uint32_t clock_div, uint32_t sample_limit); | 77 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); |
74 void ym_run(ym2612_context * context, uint32_t to_cycle); | 78 void ym_run(ym2612_context * context, uint32_t to_cycle); |
75 void ym_address_write_part1(ym2612_context * context, uint8_t address); | 79 void ym_address_write_part1(ym2612_context * context, uint8_t address); |
76 void ym_address_write_part2(ym2612_context * context, uint8_t address); | 80 void ym_address_write_part2(ym2612_context * context, uint8_t address); |
77 void ym_data_write(ym2612_context * context, uint8_t value); | 81 void ym_data_write(ym2612_context * context, uint8_t value); |
78 uint8_t ym_read_status(ym2612_context * context); | 82 uint8_t ym_read_status(ym2612_context * context); |