// COLOR STAMP var x=0,y=0; uart(128,4,0,15); function line(o){ uart(128,8,1,x,y,x,y,o); } function co(d){ var o; if(x%2>0){ o=d%16; }else{ o=d/16; } return o; } function cd(d,o){ var e; if(x%2>0){ e=d-d%16+o; }else{ e=o*16+d%16; } return e; } function key(k){ var d,o,adr,i,w; adr=x/8*32+x%8/2+y%16/8*320+y%8*4+mem("s"); if((58>k)*(k>47)){ o=k-48; d=cd(mem(adr)); mem(adr,d); } if((103>k)*(k>96)){ o=k-87; d=cd(mem(adr)); mem(adr,d); } if(k>102){ adr=(k-103)*32; stp(); } if(k==87){ w=1; adr=x/8*32+y/8*320; put(); } if(k==82){ w=0; adr=x/8*32+y/8*320; put(); } if(k==67){ w=2; adr=x/8*32+y/8*320; y=42; put(); } if(k==32){ env(env()^2); } w=env()>>1&1; d=mem(adr); o=co(d)*w+15*!w; if((k==28)*(x>0)){ line();x=x-1; } if((k==29)*(x<79)){ line();x=x+1; } if((k==30)*(y>0)){ line();y=y-1; } if((k==31)*(y<44)){ line();y=y+1; } beep((x%8<1)+(y%8<1)); } function put(adr,w){ var d,h,l,i=0,edd,n; while(i<32){ edd=2048*49; d=0x50|(((adr+edd>>16)&1)<<2); h=((adr+edd)&0xff00)>>8; l=(adr+edd)&0xff; edd=mem("s")+adr%640; if(w<1){ i2cw(d,h,l); sleep(30); i2cr(d,n); mem(edd,n); } if(w==1){ n=mem(edd); i2cw(d,h,l,n); sleep(30); } if(w>1){ n=mem(edd); mem(mem("s")+adr%320+320,n); } i=i+1; adr=adr+1; } x=x/8*8;y=y/8*8; stp((adr-32)%640); } function stp(adr){ uart(128,38,2,x,y,15); i=0; while(i<32){ uart(mem(mem("s")+adr+i)); i=i+1; } } function main(){ line((15-(env()>>1&1)*13)*(env()&1)); env(env()^1); setTout(main,300); } setKprs(key); main();
おおお! これはまた気合の入ったツール。PanCakeのスタンプはJamのPCGよりも複雑な分、このツールの強力さが際立ちますね。長い解説もありがとうございます。