Browse Source

Removed uxn pointer in audio call

main
Devine Lu Linvega 1 year ago
parent
commit
290348849b
  1. 12
      src/devices/audio.c
  2. 4
      src/devices/audio.h
  3. 12
      src/uxnemu.c

12
src/devices/audio.c

@ -72,15 +72,16 @@ audio_render(int instance, Sint16 *sample, Sint16 *end)
}
void
audio_start(int instance, Uint8 *d, Uxn *u)
audio_start(int instance, Uint8 *d)
{
UxnAudio *c = &uxn_audio[instance];
Uint8 pitch = d[0xf] & 0x7f;
Uint16 addr = PEEK2(d + 0xc), adsr = PEEK2(d + 0x8);
Uint16 addr = PEEK2(d + 0xc);
Uint16 adsr = PEEK2(d + 0x8);
c->len = PEEK2(d + 0xa);
if(c->len > 0x10000 - addr)
c->len = 0x10000 - addr;
c->addr = &u->ram[addr];
c->addr = &uxn.ram[addr];
c->volume[0] = d[0xe] >> 4;
c->volume[1] = d[0xe] & 0xf;
c->repeat = !(d[0xf] & 0x80);
@ -105,8 +106,8 @@ audio_start(int instance, Uint8 *d, Uxn *u)
Uint8
audio_get_vu(int instance)
{
UxnAudio *c = &uxn_audio[instance];
int i;
UxnAudio *c = &uxn_audio[instance];
Sint32 sum[2] = {0, 0};
if(!c->advance || !c->period) return 0;
for(i = 0; i < 2; i++) {
@ -120,6 +121,5 @@ audio_get_vu(int instance)
Uint16
audio_get_position(int instance)
{
UxnAudio *c = &uxn_audio[instance];
return c->i;
return uxn_audio[instance].i;
}

4
src/devices/audio.h

@ -18,5 +18,5 @@ typedef signed int Sint32;
Uint8 audio_get_vu(int instance);
Uint16 audio_get_position(int instance);
int audio_render(int instance, Sint16 *sample, Sint16 *end);
void audio_start(int instance, Uint8 *d, Uxn *u);
void audio_finished_handler(int instance);
void audio_start(int instance, Uint8 *d);
void audio_finished_handler(int instance);

12
src/uxnemu.c

@ -71,12 +71,12 @@ audio_dei(int instance, Uint8 *d, Uint8 port)
}
static void
audio_deo(int instance, Uint8 *d, Uint8 port, Uxn *u)
audio_deo(int instance, Uint8 *d, Uint8 port)
{
if(!audio_id) return;
if(port == 0xf) {
SDL_LockAudioDevice(audio_id);
audio_start(instance, d, u);
audio_start(instance, d);
SDL_UnlockAudioDevice(audio_id);
SDL_PauseAudioDevice(audio_id, 0);
}
@ -110,10 +110,10 @@ emu_deo(Uint8 addr, Uint8 value)
break;
case 0x10: console_deo(addr); break;
case 0x20: screen_deo(addr); break;
case 0x30: audio_deo(0, &uxn.dev[d], p, &uxn); break;
case 0x40: audio_deo(1, &uxn.dev[d], p, &uxn); break;
case 0x50: audio_deo(2, &uxn.dev[d], p, &uxn); break;
case 0x60: audio_deo(3, &uxn.dev[d], p, &uxn); break;
case 0x30: audio_deo(0, &uxn.dev[d], p); break;
case 0x40: audio_deo(1, &uxn.dev[d], p); break;
case 0x50: audio_deo(2, &uxn.dev[d], p); break;
case 0x60: audio_deo(3, &uxn.dev[d], p); break;
case 0x80: controller_deo(addr); break;
case 0x90: mouse_deo(addr); break;
case 0xa0: file_deo(addr); break;

Loading…
Cancel
Save