diff options
Diffstat (limited to 'apps/plugins/rockboy/sound.c')
-rw-r--r-- | apps/plugins/rockboy/sound.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/apps/plugins/rockboy/sound.c b/apps/plugins/rockboy/sound.c index accfda2540..58cbe542f9 100644 --- a/apps/plugins/rockboy/sound.c +++ b/apps/plugins/rockboy/sound.c | |||
@@ -158,9 +158,10 @@ void sound_reset(void) | |||
158 | sound_off(); | 158 | sound_off(); |
159 | } | 159 | } |
160 | 160 | ||
161 | |||
162 | void sound_mix(void) | 161 | void sound_mix(void) |
163 | { | 162 | { |
163 | |||
164 | if (!sound) return; | ||
164 | int s, l, r, f, n; | 165 | int s, l, r, f, n; |
165 | 166 | ||
166 | if (!RATE || cpu.snd < RATE) return; | 167 | if (!RATE || cpu.snd < RATE) return; |
@@ -275,10 +276,10 @@ void sound_mix(void) | |||
275 | pcm_submit(); | 276 | pcm_submit(); |
276 | if (pcm.stereo) | 277 | if (pcm.stereo) |
277 | { | 278 | { |
278 | pcm.buf[pcm.pos++] = (signed short)(l * 256); | 279 | pcm.buf[pcm.pos++] = l+128; |
279 | pcm.buf[pcm.pos++] = (signed short)(r * 256); | 280 | pcm.buf[pcm.pos++] = r+128; |
280 | } | 281 | } |
281 | else pcm.buf[pcm.pos++] = (signed short)((r+l) * 128); | 282 | else pcm.buf[pcm.pos++] = ((l+r)>>1)+128; |
282 | } | 283 | } |
283 | } | 284 | } |
284 | R_NR52 = (R_NR52&0xf0) | S1.on | (S2.on<<1) | (S3.on<<2) | (S4.on<<3); | 285 | R_NR52 = (R_NR52&0xf0) | S1.on | (S2.on<<1) | (S3.on<<2) | (S4.on<<3); |
@@ -288,6 +289,7 @@ void sound_mix(void) | |||
288 | 289 | ||
289 | byte sound_read(byte r) | 290 | byte sound_read(byte r) |
290 | { | 291 | { |
292 | if(!sound) return 0; | ||
291 | sound_mix(); | 293 | sound_mix(); |
292 | /* printf("read %02X: %02X\n", r, REG(r)); */ | 294 | /* printf("read %02X: %02X\n", r, REG(r)); */ |
293 | return REG(r); | 295 | return REG(r); |
@@ -344,6 +346,7 @@ void s4_init(void) | |||
344 | 346 | ||
345 | void sound_write(byte r, byte b) | 347 | void sound_write(byte r, byte b) |
346 | { | 348 | { |
349 | if(!sound) return; | ||
347 | #if 0 | 350 | #if 0 |
348 | static void *timer; | 351 | static void *timer; |
349 | if (!timer) timer = sys_timer(); | 352 | if (!timer) timer = sys_timer(); |