Do not trigger on asdr change

This commit is contained in:
neauoire 2021-04-03 20:29:00 -07:00
parent 739b13c1e3
commit dcfb6fb5bf
2 changed files with 18 additions and 24 deletions

View File

@ -133,13 +133,13 @@ BRK
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
,Audio #00 ~track.active #02 MUL ADD2 ++ POK2 $no-r
DUP #05 NEQ ^$no-left JNZ
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2
,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2
#10 ~Mouse.state #10 EQU #e0 MUL ADD ADD
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-left
,Audio 8+ #00 ~track.active #02 MUL ADD2 POK2 $no-left
DUP #06 NEQ ^$no-right JNZ
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2
,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-right
,Audio 8+ #00 ~track.active #02 MUL ADD2 POK2 $no-right
POP
( release ) #00 =Mouse.state
,draw-controls JSR2
@ -336,10 +336,10 @@ RTN
( vol )
~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 8+ #02 ,vol_txt ,draw-label JSR2
~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 #0010 ADD2
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT
,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT
,draw-knob JSR2
~ctlframe.x1 #0068 ADD2 ~ctlframe.y1 #0010 ADD2
,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #0f AND
,Audio 8+ #00 ~track.active #02 MUL ADD2 PEK2 #0f AND
,draw-knob JSR2
RTN

View File

@ -108,19 +108,6 @@ paintpixel(Uint8 *dst, Uint16 x, Uint16 y, Uint8 color)
dst[row + 8] |= 1UL << col;
}
void
painticn(Uint8 *dst, Uint16 x, Uint16 y, Uint8 *sprite, Uint8 blend)
{
Uint16 v, h;
for(v = 0; v < 8; v++)
for(h = 0; h < 8; h++) {
Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1);
if(ch1 == 0 && (blend == 0x05 || blend == 0x0a || blend == 0x0f))
continue;
paintpixel(dst, x + h, y + v, ch1 ? blend % 4 : blend / 4);
}
}
#pragma mark - Helpers
void
@ -459,12 +446,19 @@ sprite_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1)
Uint8 *m = u->ram.dat;
ptr += 8;
if(b0 == 0x0e) {
Uint16 v, h;
Uint16 x = (m[ptr] << 8) + m[ptr + 1];
Uint16 y = (m[ptr + 2] << 8) + m[ptr + 3];
Uint16 a = (m[ptr + 4] << 8) + m[ptr + 5];
Uint8 source = (b1 >> 4) & 0xf;
Uint8 *layer = source % 2 ? screen.fg : screen.bg;
painticn(layer, x, y, &m[a], b1 & 0xf);
Uint8 blend = b1 & 0xf;
Uint8 *layer = ((b1 >> 4) & 0xf) % 2 ? screen.fg : screen.bg;
Uint8 *sprite = &m[(m[ptr + 4] << 8) + m[ptr + 5]];
for(v = 0; v < 8; v++)
for(h = 0; h < 8; h++) {
Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1);
if(ch1 == 0 && (blend == 0x05 || blend == 0x0a || blend == 0x0f))
continue;
paintpixel(layer, x + h, y + v, ch1 ? blend % 4 : blend / 4);
}
screen.reqdraw = 1;
}
return b1;
@ -500,7 +494,7 @@ audio_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1)
{
Uint8 *m = u->ram.dat;
m[PAGE_DEVICE + 0x0070 + b0] = b1;
if(b0 & 1) {
if(b0 > 0x08 && b0 & 1) {
Uint16 addr = ptr + (b0 & 0x6);
Channel *c = &channels[(b0 & 0x6) >> 1];
SDL_LockAudioDevice(audio_id);