... | ... |
@@ -133,13 +133,13 @@ BRK |
133 | 133 |
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD |
134 | 134 |
,Audio #00 ~track.active #02 MUL ADD2 ++ POK2 $no-r |
135 | 135 |
DUP #05 NEQ ^$no-left JNZ |
136 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 |
|
136 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 |
|
137 | 137 |
#10 ~Mouse.state #10 EQU #e0 MUL ADD ADD |
138 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-left |
|
138 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 POK2 $no-left |
|
139 | 139 |
DUP #06 NEQ ^$no-right JNZ |
140 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 |
|
140 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 |
|
141 | 141 |
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD |
142 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-right |
|
142 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 POK2 $no-right |
|
143 | 143 |
POP |
144 | 144 |
( release ) #00 =Mouse.state |
145 | 145 |
,draw-controls JSR2 |
... | ... |
@@ -336,10 +336,10 @@ RTN |
336 | 336 |
( vol ) |
337 | 337 |
~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 8+ #02 ,vol_txt ,draw-label JSR2 |
338 | 338 |
~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 #0010 ADD2 |
339 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT |
|
339 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT |
|
340 | 340 |
,draw-knob JSR2 |
341 | 341 |
~ctlframe.x1 #0068 ADD2 ~ctlframe.y1 #0010 ADD2 |
342 |
- ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #0f AND |
|
342 |
+ ,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 #0f AND |
|
343 | 343 |
,draw-knob JSR2 |
344 | 344 |
|
345 | 345 |
RTN |
... | ... |
@@ -108,19 +108,6 @@ paintpixel(Uint8 *dst, Uint16 x, Uint16 y, Uint8 color) |
108 | 108 |
dst[row + 8] |= 1UL << col; |
109 | 109 |
} |
110 | 110 |
|
111 |
-void |
|
112 |
-painticn(Uint8 *dst, Uint16 x, Uint16 y, Uint8 *sprite, Uint8 blend) |
|
113 |
-{ |
|
114 |
- Uint16 v, h; |
|
115 |
- for(v = 0; v < 8; v++) |
|
116 |
- for(h = 0; h < 8; h++) { |
|
117 |
- Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1); |
|
118 |
- if(ch1 == 0 && (blend == 0x05 || blend == 0x0a || blend == 0x0f)) |
|
119 |
- continue; |
|
120 |
- paintpixel(dst, x + h, y + v, ch1 ? blend % 4 : blend / 4); |
|
121 |
- } |
|
122 |
-} |
|
123 |
- |
|
124 | 111 |
#pragma mark - Helpers |
125 | 112 |
|
126 | 113 |
void |
... | ... |
@@ -459,12 +446,19 @@ sprite_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1) |
459 | 446 |
Uint8 *m = u->ram.dat; |
460 | 447 |
ptr += 8; |
461 | 448 |
if(b0 == 0x0e) { |
449 |
+ Uint16 v, h; |
|
462 | 450 |
Uint16 x = (m[ptr] << 8) + m[ptr + 1]; |
463 | 451 |
Uint16 y = (m[ptr + 2] << 8) + m[ptr + 3]; |
464 |
- Uint16 a = (m[ptr + 4] << 8) + m[ptr + 5]; |
|
465 |
- Uint8 source = (b1 >> 4) & 0xf; |
|
466 |
- Uint8 *layer = source % 2 ? screen.fg : screen.bg; |
|
467 |
- painticn(layer, x, y, &m[a], b1 & 0xf); |
|
452 |
+ Uint8 blend = b1 & 0xf; |
|
453 |
+ Uint8 *layer = ((b1 >> 4) & 0xf) % 2 ? screen.fg : screen.bg; |
|
454 |
+ Uint8 *sprite = &m[(m[ptr + 4] << 8) + m[ptr + 5]]; |
|
455 |
+ for(v = 0; v < 8; v++) |
|
456 |
+ for(h = 0; h < 8; h++) { |
|
457 |
+ Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1); |
|
458 |
+ if(ch1 == 0 && (blend == 0x05 || blend == 0x0a || blend == 0x0f)) |
|
459 |
+ continue; |
|
460 |
+ paintpixel(layer, x + h, y + v, ch1 ? blend % 4 : blend / 4); |
|
461 |
+ } |
|
468 | 462 |
screen.reqdraw = 1; |
469 | 463 |
} |
470 | 464 |
return b1; |
... | ... |
@@ -500,7 +494,7 @@ audio_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1) |
500 | 494 |
{ |
501 | 495 |
Uint8 *m = u->ram.dat; |
502 | 496 |
m[PAGE_DEVICE + 0x0070 + b0] = b1; |
503 |
- if(b0 & 1) { |
|
497 |
+ if(b0 > 0x08 && b0 & 1) { |
|
504 | 498 |
Uint16 addr = ptr + (b0 & 0x6); |
505 | 499 |
Channel *c = &channels[(b0 & 0x6) >> 1]; |
506 | 500 |
SDL_LockAudioDevice(audio_id); |