... | ... |
@@ -146,7 +146,9 @@ file_deo(Device *d, Uint8 port) |
146 | 146 |
{ |
147 | 147 |
Uint16 a, b, res; |
148 | 148 |
switch(port) { |
149 |
- case 0x1: d->vector = peek16(d->dat, 0x0); break; |
|
149 |
+ case 0x1: |
|
150 |
+ DEVPEEK16(d->vector, 0x0); |
|
151 |
+ break; |
|
150 | 152 |
case 0x9: |
151 | 153 |
DEVPEEK16(a, 0x8); |
152 | 154 |
res = file_init(&d->mem[a]); |
... | ... |
@@ -31,8 +31,6 @@ WITH REGARD TO THIS SOFTWARE. |
31 | 31 |
#define DEVW(d, x, y) { dev = (d); if(bs) { DEVW8((x), (y) >> 8); DEVW8((x) + 1, (y)); } else { DEVW8((x), (y)) } } |
32 | 32 |
#define WARP(x) { if(bs) u->ram.ptr = (x); else u->ram.ptr += (Sint8)(x); } |
33 | 33 |
|
34 |
-Uint16 peek16(Uint8 *m, Uint16 a) { Uint16 r = m[a] << 8; return r + m[a + 1]; } |
|
35 |
- |
|
36 | 34 |
int |
37 | 35 |
uxn_eval(Uxn *u, Uint16 vec) |
38 | 36 |
{ |
... | ... |
@@ -217,13 +217,16 @@ audio_deo(Device *d, Uint8 port) |
217 | 217 |
UxnAudio *c = &uxn_audio[d - devaudio0]; |
218 | 218 |
if(!audio_id) return; |
219 | 219 |
if(port == 0xf) { |
220 |
+ Uint16 addr, adsr; |
|
220 | 221 |
SDL_LockAudioDevice(audio_id); |
221 |
- c->len = peek16(d->dat, 0xa); |
|
222 |
- c->addr = &d->mem[peek16(d->dat, 0xc)]; |
|
222 |
+ DEVPEEK16(adsr, 0x8); |
|
223 |
+ DEVPEEK16(c->len, 0xa); |
|
224 |
+ DEVPEEK16(addr, 0xc); |
|
225 |
+ c->addr = &d->mem[addr]; |
|
223 | 226 |
c->volume[0] = d->dat[0xe] >> 4; |
224 | 227 |
c->volume[1] = d->dat[0xe] & 0xf; |
225 | 228 |
c->repeat = !(d->dat[0xf] & 0x80); |
226 |
- audio_start(c, peek16(d->dat, 0x8), d->dat[0xf] & 0x7f); |
|
229 |
+ audio_start(c, adsr, d->dat[0xf] & 0x7f); |
|
227 | 230 |
SDL_UnlockAudioDevice(audio_id); |
228 | 231 |
SDL_PauseAudioDevice(audio_id, 0); |
229 | 232 |
} |
... | ... |
@@ -444,8 +447,12 @@ run(Uxn *u) |
444 | 447 |
SDL_free(event.drop.file); |
445 | 448 |
} |
446 | 449 |
/* Audio */ |
447 |
- else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) |
|
448 |
- uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0)); |
|
450 |
+ else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) { |
|
451 |
+ Device *d = devaudio0 + (event.type - audio0_event); |
|
452 |
+ Uint16 res; |
|
453 |
+ DEVPEEK16(res, 0x00); |
|
454 |
+ uxn_eval(u, res); |
|
455 |
+ } |
|
449 | 456 |
/* Mouse */ |
450 | 457 |
else if(event.type == SDL_MOUSEMOTION) |
451 | 458 |
mouse_pos(devmouse, |