Standarden för QR-koder, kort för Quick Response, spikades redan 1994 men har det senaste årtiondet blivit en vanlig syn i allt från informationsblad till Swish-sammanhang. I stil med en streckkod är QR-koden ett sätt att lagra data, där exempelvis länkar till webbplatser är vanligt förekommande och de flesta smarta telefoner kommer idag med inbyggd QR-läsare i kameraapplikationen.

Även om text är det som ofta lagras i de svart-vita rutorna kan de även användas till binär data. Den största standardiserade storleken för en QR-kod har plats för ynka 2 953 byte (2,88 kB), utrymme som i teorin kan användas för att importera ett körbart spel direkt genom datorns webbkamera. Detta ger sig Youtubekanalen Mattkc i kast med, ett mödosamt arbete som presenteras i en 20 minuter lång video.

Spel kan i dagsläget uppta norr om 100 GB utan att sticka ut, men för inte länge sedan tarvades betydligt mindre utrymme. I videon lyfts de klassiska 3,5-tumsdisketterna på 1,44 MB fram som storleksjämförelse, vilka har nära 500 gånger högre kapacitet än de största QR-koderna. Ljud och detaljerad grafik är således uteslutet från ett QR-kod-anpassat spel, där Mattkc väljer att satsa på klassikern Snake.

QR-kod 2.PNG

Med siktet inställt på att skapa det körbara spelet för ett Windows-system presenteras ett relativt enkelt sätt att lösa problemet – HTML och Javascript. Eftersom lösningen kräver en webbläsare ansåg dock Mattkc det vara för enkelt, varför skapandeprocessen kring ett helt fristående program påbörjades.

Moderna kompilatorer är dock inte helt med på de utrymmessparande noterna som standard, där "Hello World"-programmet skrivet i C upptar 100 kB. Genom att trimma bort de bibliotek som läses in som standard nås gränsen 3 kB, men den utskrivna textraden "Hello World" är en bra bit bort från det slingrande spelet. I ett försök att helt kringgå C-kompilatorn vänder sig Mattkc direkt till att skriva assemblerkod, något som med facit i hand inte krymper storleken ställt mot kompilatorn.

Trots att det är möjligt för en erfaren människa att skriva koden på ett mer effektivt sätt än datorns översatta version, väljer Mattkc att återgå till C och istället justera kompilatorn för att spara utrymme. Inte heller detta tillvägagångssätt håller riktigt måttet, varför trumfkortet komprimering plockas fram. Den speciella typen av komprimering som används kallas Executable Packing och innebär att den komprimerade körbara filen packas upp direkt vid start, och på användarsidan är skillnaden mot en renodlad körbar fil därför inte märkbar.

QR-kod 1.PNG

Avslutningsvis omvandlas den nu 1,4 kB stora filen till en QR-kod, som efter en del kämpande med ett avläsande program går att hämta till valfri Windows-bestyckad dator genom en ansluten kamera. På den egna webbplatsen bjuder Mattkc på QR-koden och fullständiga instruktioner för den som är nyfiken att testa retroosande Snake på ett lite annorlunda sätt.

Har du brottats med utrymmeskrav i något eget projekt? Berätta i kommentarstråden!