Share This
Связаться со мной
Крути в низ
Categories
//Демка MONOSPACE, победитель Assembly ONLINE 2020, умещается в 1021 байт

Демка MONOSPACE, победитель Assembly ONLINE 2020, умещается в 1021 байт

19.10.2020Category : My Habr

demka monospace pobeditel assembly online 2020 umeshhaetsja v 1021 bajt 5c178ec - Демка MONOSPACE, победитель Assembly ONLINE 2020, умещается в 1021 байт

Первое место в соревновании разработчиков Assembly ONLINE 2020 в категории «Online 1k intro» заняла демка MONOSPACE. Программа размером в 1021 байт после сжатия написана на JavaScript. Автор демки — креативный кодер и демосценер-оптимизатор Mathieu ‘p01’ Henri.

Создатель демки предупредил, что она работает в последних стабильных версиях браузеров на основе Chromium или Webkit. В Firefox будет просто слайдшоу из-за того, что его разработчики так и не исправили ошибку 1190398, связанную с ShadowBlur. Ссылка на демку для ChromeEdge, версия для всех совместимых браузеров. Скачать демку можно с сайта автора.

Код MONOSPACE сжат с использованием техники PNG bootstrapping.

Mathieu ‘p01’ Henri пояснил, что в демке использовал 2D Canvas, избыточно использовав ShadowBlur для рендеринга изображения с разной глубиной резкости. Для воспроизведения аудио он задействовал scriptProcessingNode, злоупотребляя событием onAudioProcess для рендеринга звуковых и визуальных эффектов. Также в демке используется синтезатор речи, после его активации происходит новая отрисовка в ходе выполнения программы. Демка MONOSPACE названа в честь семейства моноширинных шрифтов.

Для создания растрового изображения при помощи JavaScript (canvas) и контекста рендеринга демки требуется 59 байт кода:

<canvas id="c"></canvas><script>b=c.getContext`2d`</script>

Минифицированный код MONOSPACE имеет длину 1438 байт:

d=[2280,1280,1520,c.width=1920,document.body.style.font="0px MONOSPACE"],g=new AudioContext,o=g.createScriptProcessor(4096,document.body.style.margin=t=n=0,1),o.connect(g.destination),o.onaudioprocess=o=>{o=o.outputBuffer.getChannelData(e=Math.sin(t/16%1,m=Math.sin(Math.min(1,y=t/128)*Math.PI)**.5+.1,c.height=1080,b.shadowOffsetY=32420,c.style.background="radial-gradient(#"+[222,222,222,222,155,155,102,102][t/16&7]+",black",b.font="920 32px MONOSPACE",f=[(x,y,t)=>x/y*2-t,(x,y,t)=>(x**2+y**2)**.5-t,(x,y,t)=>x/4^y/4-t,(x,y,t)=>y%x-t][t/16&3],u=""+[[,f,f," CAN YOU HEAR ME",f,f,,"MONOSPACE","THE END"][t/16|0]],t>n&&speechSynthesis.speak(new SpeechSynthesisUtterance(u,n+=16))));for(i=0;4096>4*i;i++)g[i]=r=(f(x=16-i%32,a=16-(i/32|0),t)/2&1)+(g[i]||0)/2,x+=o[0]/4+4*(1-m**.3)*Math.sin(i+t+8),a+=o[64]/4+4*(1-m**.3)*Math.sin(i+t),h=x*Math.sin(y*2+8)+a*Math.sin(y*2),p=4096/(m*32+4*h*Math.sin(e)+t%16),b.beginPath(f[i]=r/p),b.arc(h*Math.sin(e+8)*p+1280,x*Math.sin(y*2)*p-a*Math.sin(y*2+8)*p-31920,p>0&&p/(2+32-r*16),0,8),b.shadowBlur=o[0]**2*32+32-m*32+4+h*h/2,b.shadowColor="hsl("+[f(x,y,t)&2?t-a*8:180,(t&64)*m+"%",(t&64)*m+"%"],b.fill();b.shadowBlur=o[0]**2*32,b.shadowColor="#fee";for(i=0;4096>i;i++)o[i]=o[i]/2+((Math.sin(t*d[t/[4,4,4,4,1/4,1/4,16,4][t/16&7]&3]*Math.PI)*8+(t*d[t/8&3]/2&6)+t*d[t/16&3]/4%6)/64+f[i/4|0])*m,64>i&t%16*6>i&&b.fillText([u[i+(o[i]*2&1)]],i%9*32+o[0]*16+180,(i/9|0)*64+o[64]*16-t-31920),t+=1/g.sampleRate}

В начале октября 2020 года программист-энтузиаст HellMood из группы DESiRE выпустил демку для MS-DOS/FreeDos под названием Gespensterwald. Программа размером в 62 байта написана на ассемблере. Автор демо постарался показать в нескольких строчках кода в 3D анимации угрюмый и жуткий лес, около которого он живет. HellMood добавил в демо необычное гудение, которое иногда возникает в этом реальном лесу.

  • 10 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close