ref: 1d517245a7bc67cd8e81249f8b45bb78926ead55
parent: 8ec800d6991218c256de524b1132478533bee574
author: qwx <qwx@sciops.net>
date: Tue Aug 5 06:03:33 EDT 2025
eui: sync with upstream
--- a/sys/src/games/eui.c
+++ b/sys/src/games/eui.c
@@ -9,7 +9,6 @@
typedef struct Kfn Kfn;
u64int keys, keys2;
-Channel *keychan;
int trace, paused;
int savereq, loadreq;
QLock pauselock;
@@ -68,6 +67,7 @@
Kfn *kp;
j = 1;
+
for(;;){
n = read(0, buf, sizeof(buf) - 1);
if(n <= 0)
@@ -74,18 +74,13 @@
sysfatal("read: %r");
buf[n] = 0;
n = getfields(buf, down, nelem(down), 1, " ");
- if(n <= 0)
- continue;
k = 0;
for(n--; n >= 0; n--){
s = down[n];
- if(strncmp(s, "joy", 3) == 0){
- if(strcmp(s, "2 ") == 0)
- j = 2;
- else
- j = 1;
- continue;
- }
+ if(strcmp(s, "joy1") == 0)
+ j = 1;
+ else if(strcmp(s, "joy2") == 0)
+ j = 2;
for(kp=kkn.n; kp!=nil; kp=kp->n){
if(strcmp(kp->joyk, s) == 0)
k |= kp->k;
@@ -93,11 +88,8 @@
}
if(j == 2)
keys2 = k;
- else{
+ else
keys = k;
- if(keychan != nil)
- nbsendul(keychan, k);
- }
}
}
@@ -180,8 +172,6 @@
if((k & ax1) == ax1)
k &= ~ax1;
keys = k;
- if(keychan != nil)
- nbsendul(keychan, k);
}
}
@@ -226,7 +216,7 @@
picr = Rpt(subpt(p, Pt(scale * vwdx/2, scale * vwdy/2)),
addpt(p, Pt(scale * vwdx/2, scale * vwdy/2)));
freeimage(fb);
- fb = allocimage(display, Rect(0, 0, scale * vwdx, scale > 1 ? 1 : vwdy),
+ fb = eallocimage(Rect(0, 0, scale * vwdx, scale > 1 ? 1 : vwdy),
vwchan, scale > 1, 0);
free(backfb);
if(scale > 1)
@@ -274,99 +264,42 @@
} else {
Rectangle r;
int w, x;
- uchar *bp;
r = picr;
w = vwdx * vwbpp * scale;
while(r.min.y < picr.max.y){
- x = 0;
- bp = backfb;
- while(x < vwdx){
- switch(vwbpp){
- case 4: {
- u32int *d = (u32int *)bp;
- u32int s = *(u32int *)p;
- switch(scale){
- case 16: *d++ = s;
- case 15: *d++ = s;
- case 14: *d++ = s;
- case 13: *d++ = s;
- case 12: *d++ = s;
- case 11: *d++ = s;
- case 10: *d++ = s;
- case 9: *d++ = s;
- case 8: *d++ = s;
- case 7: *d++ = s;
- case 6: *d++ = s;
- case 5: *d++ = s;
- case 4: *d++ = s;
- case 3: *d++ = s;
- case 2: *d++ = s;
- default: *d++ = s;
- }
- bp = (uchar *)d;
- break;
- } case 2: {
- u16int *d = (u16int *)bp;
- u16int s = *(u16int *)p;
- switch(scale){
- case 16: *d++ = s;
- case 15: *d++ = s;
- case 14: *d++ = s;
- case 13: *d++ = s;
- case 12: *d++ = s;
- case 11: *d++ = s;
- case 10: *d++ = s;
- case 9: *d++ = s;
- case 8: *d++ = s;
- case 7: *d++ = s;
- case 6: *d++ = s;
- case 5: *d++ = s;
- case 4: *d++ = s;
- case 3: *d++ = s;
- case 2: *d++ = s;
- default: *d++ = s;
- }
- bp = (uchar *)d;
- break;
- } case 1: {
- uchar *d = bp;
- uchar s = *p;
- switch(scale){
- case 16: *d++ = s;
- case 15: *d++ = s;
- case 14: *d++ = s;
- case 13: *d++ = s;
- case 12: *d++ = s;
- case 11: *d++ = s;
- case 10: *d++ = s;
- case 9: *d++ = s;
- case 8: *d++ = s;
- case 7: *d++ = s;
- case 6: *d++ = s;
- case 5: *d++ = s;
- case 4: *d++ = s;
- case 3: *d++ = s;
- case 2: *d++ = s;
- default: *d++ = s;
- }
- bp = (uchar *)d;
- break;
- } default: {
- int n;
- uchar *s, *e, *d = bp;
- for(n=scale; n>0; n--){
- s = p;
- e = d + vwbpp;
- while(d < e)
- *d++ = *s++;
- }
- bp = (uchar *)d;
- break;
- }}
- p += vwbpp;
- x++;
- }
+ switch(vwbpp){
+ case 4: {
+ u32int *d = (u32int *)backfb, *e, s;
+ for(x=0; x<vwdx; x++){
+ s = *(u32int *)p;
+ p += vwbpp;
+ e = d + scale;
+ while(d < e)
+ *d++ = s;
+ }
+ break;
+ } case 2: {
+ u16int *d = (u16int *)backfb, *e, s;
+ for(x=0; x<vwdx; x++){
+ s = *(u16int *)p;
+ p += vwbpp;
+ e = d + scale;
+ while(d < e)
+ *d++ = s;
+ }
+ break;
+ } case 1: {
+ u8int *d = (u8int *)backfb, *e, s;
+ for(x=0; x<vwdx; x++){
+ s = *(u8int *)p;
+ p += vwbpp;
+ e = d + scale;
+ while(d < e)
+ *d++ = s;
+ }
+ break;
+ }}
loadimage(fb, fb->r, backfb, w);
r.max.y = r.min.y+scale;
draw(screen, r, fb, nil, ZP);
--
⑨