comparison psg.c @ 2081:cfd53c94fffb

Initial stab at RF5C164 emulation
author Michael Pavone <pavone@retrodev.com>
date Thu, 03 Feb 2022 23:15:42 -0800
parents c3c62dbf1ceb
children 2648081f3100
comparison
equal deleted inserted replaced
2080:bafb757e1cd2 2081:cfd53c94fffb
11 #include <stdio.h> 11 #include <stdio.h>
12 #include <math.h> 12 #include <math.h>
13 void psg_init(psg_context * context, uint32_t master_clock, uint32_t clock_div) 13 void psg_init(psg_context * context, uint32_t master_clock, uint32_t clock_div)
14 { 14 {
15 memset(context, 0, sizeof(*context)); 15 memset(context, 0, sizeof(*context));
16 context->audio = render_audio_source(master_clock, clock_div, 1); 16 context->audio = render_audio_source("PSG", master_clock, clock_div, 1);
17 context->clock_inc = clock_div; 17 context->clock_inc = clock_div;
18 for (int i = 0; i < 4; i++) { 18 for (int i = 0; i < 4; i++) {
19 context->volume[i] = 0xF; 19 context->volume[i] = 0xF;
20 } 20 }
21 } 21 }
109 } 109 }
110 } 110 }
111 } 111 }
112 112
113 int16_t accum = 0; 113 int16_t accum = 0;
114 114
115 for (int i = 0; i < 3; i++) { 115 for (int i = 0; i < 3; i++) {
116 if (context->output_state[i]) { 116 if (context->output_state[i]) {
117 accum += volume_table[context->volume[i]]; 117 accum += volume_table[context->volume[i]];
118 } 118 }
119 } 119 }
120 if (context->noise_out) { 120 if (context->noise_out) {
121 accum += volume_table[context->volume[3]]; 121 accum += volume_table[context->volume[3]];
122 } 122 }
123 123
124 render_put_mono_sample(context->audio, accum); 124 render_put_mono_sample(context->audio, accum);
125 125
126 context->cycles += context->clock_inc; 126 context->cycles += context->clock_inc;
127 } 127 }
128 } 128 }