memoscan
← all memos

Memo 0xc88d1d5e…629bdb on Ethereum

/* Zentrum by Herbert W. Franke Written in BASIC in 1982 Translated to JavaScript by Aaron Penne 2023 50 REM PROGRAMM "ZENTRUM" 80 HOME 90 W = - 16336 100 HGR2 110 HCOLOR= 2: GOTO 125 120 HCOLOR= INT ( RND (1) * 5) + 1 125 FOR M = 1 TO 50 126 SOUND = PEEK (W) 127 FOR PAUSE = 1 TO 10: NEXT PAUSE 128 NEXT M 130 N = 0 150 A = INT ( RND (1) * 279) 160 B = INT ( RND (1) * 279) 260 E = INT ( RND (1) * 2) + 2 262 X1 = A + N * E 263 Y1 = 279 - A - N * E 264 Z1 = 95 + N * E 265 Z2 = 95 - N * E 350 IF X1 > 278 THEN GOTO 120 355 IF X1 < 1 THEN GOTO 120 360 IF Y1 > 278 THEN GOTO 120 365 IF Y1 < 1 THEN GOTO 120 370 IF Z1 > 190 THEN GOTO 120 375 IF Z1 < 1 THEN GOTO 120 380 IF Z2 > 190 THEN GOTO 120 385 IF Z2 < 1 THEN GOTO 120 400 HPLOT X1,Z1 TO Y1,Z1 TO Y1,Z2 TO X1,Z2 TO X1,Z1 405 N = N + 1 410 SOUND = PEEK (W) 420 GOTO 262 */ const urlParams=new URLSearchParams(window.location.search);"undefined"==typeof tokenData&&(tokenData={hash:"0x"+Math.floor(1e11*Math.random()+1e11),tokenId:"18000199"}),urlParams.has("hash")&&(tokenData.hash=urlParams.get("hash"));let seed=gs(tokenData.hash);function getDim(){var e=windowWidth,n=windowHeight;return e/appW<n/appH?(cnvW=e,cnvH=e*(appH/appW)):(cnvH=n,cnvW=n*(appW/appH)),[cnvW,cnvH]}function download(){var e=`${document.title.replace(/\s+/g,"_").replace(/[^a-zA-Z0-9_]/g,"")}_${getTimestamp()}_${tokenData.hash}.png`;save(e)}function getTimestamp(){return(new Date).toISOString().replace(/[^T0-9]/g,"").replace("T","_")}function gs(e){return parseInt(tokenData.hash.slice(0,16),16)}function rd(){return seed^=seed<<13,seed^=seed>>17,seed^=seed<<5,(seed<0?1+~seed:seed)%1e3/1e3}function rb(e,n){return e+(n-e)*rd()}function rj(e,n){return rb(e-n,e+n)}function rc(e){return e[Math.floor(rb(0,.99*e.length))]}function rco(e){let t=[];return e.forEach((n,e)=>{for(let e=0;e<n.w;e++)t.push(n)}),rc(t)}function shuffle(n){for(let e=n.length-1;0<e;e--){var t=Math.floor(rd()*(e+1));[n[e],n[t]]=[n[t],n[e]]}}function gj(e,n,t=!1){let o=e.filter(({n:e})=>e==n);return t?(o=o.map(({v:e})=>e),[...o]):o[0]}function hex3to6(e){return 7<=(e="#"!=e[0]?"#"+e:e).length?e:e=e.split("").map(e=>"#"==e?e:e+e).join("")}let cnvW,cnvH,gW,gH,gC;const appW=280,appH=192,gB=.03;let offX,offY,go=!0,toggleIntro=!0,pp={pal:[{w:10,n:"Apple ][",v:["#2A6838","#7F6FFC","#ACBCDE","#111414","#B56742","#3994EE"]},{w:1,n:"Graustufe",v:["#111414","#4F4F4F","#F9F9F9","#808080","#B0B0B0","#D6D6D6"]}]},p={};for(let e in pp)p[e]=rco(pp[e]);for(let e=0;e<p.pal.v.length;e++)p.pal.v[e]=hex3to6(p.pal.v[e]);console.log("Zentrum\nby Herbert W. Franke\n\nWritten in BASIC in 1982\nTranslated to JavaScript by Aaron Penne 2023"),console.log("Token Hash:",tokenData.hash),console.log("Palette: ",p.pal.n),"Apple ]["==p.pal.n?(cG="#2A6838",cP="#7F6FFC",cT="#ACBCDE"):"Graustufe"==p.pal.n&&(cG="#111414",cP="#ffffff",cT="#F9F9F9");let flagsp=[{w:10,n:"Norm",v:!0},{w:8,n:"FS",v:!0},{w:6,n:"Alt OO",v:!0},{w:3,n:"Alt C",v:!0},{w:3,n:"GS",v:!0},{w:3,n:"PS",v:!0},{w:4,n:"FGS",v:!0},{w:4,n:"FPS",v:!0},{w:2,n:"FPG",v:!0},{w:1,n:"Hz Only",v:!0}],flags={w:1,n:"Norm",v:!0},n,a,e,c;rst(),c=p.pal.v[2];let vert=` attribute vec3 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; void main() { vTexCoord = vec2(aTexCoord.x, 1.0 - aTexCoord.y); vec4 positionVec4 = vec4(aPosition, 1.0); positionVec4.xy = positionVec4.xy * 2.0 - 1.0; gl_Position = positionVec4; } `,frag=` #ifdef GL_ES precision mediump float; #endif const float PI = 3.14159; const float MM = 2000.; varying vec2 vTexCoord; uniform sampler2D texture; uniform vec2 iResolution; void main() {vec2 uv = vTexCoord;vec3 c = texture2D(texture, uv).rgb; float sf = cos(PI * (uv.y + 0.008) * MM / 8.); float sc = clamp(0.05 * sf + 0.95, 0.0, 1.0) * 1.2; float sd = cos(PI * uv.x * MM / 3.); float ss = 0.85 + 0.15 * clamp(1.5 * sd, 0.0, 1.0); float cc = sc * ss; c *= cc; gl_FragColor = vec4(c, 1.); } `;function setup(){[cnvW,cnvH]=getDim(),gW=cnvW*(1-2*gB),gH=cnvH*(1-2*gB),gC=Math.round(gW/appW),gW=gC*appW,gH=gC*appH,cnvW=gW+2*gB*cnvW,cnvH=gH+2*gB*cnvH,offX=Math.round((cnvW-gW)/2),offY=Math.round((cnvH-gH)/2),createCanvas(cnvW,cnvH,WEBGL),sh=createShader(vert,frag),shader(sh),pg=createGraphics(cnvW,cnvH),pg.noStroke(),pg.rectMode(CORNERS),pg.strokeCap(PROJECT),frameRate(10),go||noLoop(),background("#111414"),pg.background("#111414"),document.body.style.backgroundColor="#111414",pg.textFont("monospace"),pg.textSize(8*gC),pg.textAlign(CENTER,CENTER);var e=appW/appH,n=innerWidth/innerHeight;let t=document.querySelector("canvas").style;e<n?(t.width=innerHeight*e+"px",t.height=innerHeight+"px"):(t.width=innerWidth+"px",t.height=innerWidth/e+"px")}function draw(){var t,o,g;toggleIntro&&frameCount<40?(pg.push(),pg.fill(cT),pg.text("RUN ZENTRUM",.5*width,.5*height),g=pg.textWidth("RUN ZENTRUM"),frameCount%10<5?(t=.5*width+g/2+5*gC,o=.5*height,pg.fill(cT),pg.rect(t,o-4.2*gC,t+6*gC,o+3*gC)):(o=.5*width+g/2+5*gC,g=.5*height,pg.fill("#111414"),pg.rect(o,g-4.2*gC,o+6*gC,g+3*gC)),pg.pop()):toggleIntro&&40==frameCount&&frameCount<50?pg.background("#111414"):(x1=a+n*e,y1=appH/2-1+n*e,x2=appW-1-a-n*e,y2=appH/2-1-n*e,push(),drawRectangle(x1,y1,x2,y2),pop(),n++,(x1>appW-2||x1<1||y1>appH-2||y1<1||x2>appW-2||x2<1||y2>appH-2||y2<1)&&rst()),sh.setUniform("texture",pg),sh.setUniform("iResolution",[width,height]),rect(0,0,width,height)}function drawRectangle(n,t,o,a){if(n*=gC,t*=gC,o*=gC,a*=gC,pg.push(),pg.translate(offX,offY),pg.noFill(),pg.stroke(c),pg.strokeWeight(1.01*gC),pg.line(n,t,o,t),pg.line(n,a,o,a),"Norm"==flags.n)pg.line(n,t,n,a),pg.line(o,t,o,a);else if("FS"==flags.n){for(let e=0;e<=3;e+=.5)pg.line(n+e*gC,t,n+e*gC,a);pg.line(o,t,o,a)}else if("Alt OO"==flags.n)frameCount%2==0&&pg.line(n,t,n,a),frameCount%2!=0&&pg.line(o,t,o,a);else if("Alt C"==flags.n)frameCount%2==0?(pg.stroke(cP),pg.line(n,t,n,a),pg.stroke(cG)):(pg.stroke(cG),pg.line(n,t,n,a),pg.stroke(cP)),pg.line(o,t,o,a);else if("GS"==flags.n)pg.stroke(cG),pg.line(n,t,n,a),pg.line(o,t,o,a);else if("PS"==flags.n)pg.stroke(cP),pg.line(n,t,n,a),pg.line(o,t,o,a);else if("FGS"==flags.n){pg.stroke(cG);for(let e=0;e<=3;e+=.5)pg.line(n+e*gC,t,n+e*gC,a);pg.line(o,t,o,a)}else if("FPS"==flags.n){pg.stroke(cP);for(let e=0;e<=3;e+=.5)pg.line(n+e*gC,t,n+e*gC,a);pg.line(o,t,o,a)}else if("FPG"==flags.n)for(let e=0;e<=3;e+=.5)pg.stroke(cP),pg.line(n+e*gC,t,n+e*gC,a),pg.stroke(cG),pg.line(o+e*gC,t,o+e*gC,a);else flags.n;pg.pop()}function rst(){n=0,a=Math.floor(279*rd()),e=Math.floor(2*rd())+2,c=rc(p.pal.v),flags=rco(flagsp)}function keyPressed(){"s"==key?download():"r"==key?window.location.reload():"p"==key&&(go=((go?noLoop:loop)(),!go))}function mouseClicked(){mouseY<.5*height?go=((go?noLoop:loop)(),!go):mouseY>.5*height&&download()}