HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Can you fit a whole game into a QR code?

MattKC2 HN recommenders · recommended in 2 months, 2020-2025
YouTube
9M views · 6 years ago · demo · evergreen

MattKC fits a playable Snake game into a QR code by writing tiny x86 machine code and patching the ZBar scanner so it can run the decoded data.

HN admires it as a creative hack and cites it as the inspiration for later tiny-game and QR-code projects.

Demoscene & retrocomputingSoftware performance & optimizationSecurity & hacking#qrcode#x86assembly#snake#sizecoding#zbar

7 comments from Hacker News

@matheusmoreira2025 · in “Show HN: I made a Doom-like game fit inside a QR code”

QR codes have various encoding modes: numeric, alphanumeric, 8 bit and kanji. The most common is alphanumeric encoding and the densest is 8 bit encoding which just stores binary data. The QR code standards seem to be a little ambiguous on the meaning and purpose of the 8 bit encoding. I got the impression they added it to support alternative character encodings. Still, it's a mode that "represents an 8-bit byte value directly". > The default interpretation for QR Code is ECI 000020 representing the JIS8 and Shift JIS character sets. > 8.3.4 8-bit Byte Mode > The 8-bit byte mode handles the 8-bit Latin/Kana character set in accordance with JIS X 0201 (character values 00HEX to FFHEX). > In this mode data is encoded at a density of 8 bits/character. > 8.4.4 8-bit Byte Mode > In this mode, one 8 bit codeword directly represents the JIS8 character value of the input data character as shown in Table 6, i.e. a density of 8 bits/character. > In ECIs other than the default ECI, it represents an 8-bit byte value directly. In any case, it is possible to use QR codes to store arbitrary binary data. The qrencode tool can do this natively. Decoder support is more tricky, they tend to assume all QR codes contain text. I had to send patches to zbar to help it decode QR codes with binary data in them because it was passing the data through iconv and mangling the output. I also had to add options to the zbar tools to make them decode exactly one QR code I just wanted to print out 4096 bit RSA

CitesView on HN
@redbell2025 · in “Show HN: I made a Doom-like game fit inside a QR code”

Really cool project! TIL about 'data:' URLs—while I was familiar with the 'data:' URI scheme and had used it before, I didn’t realize it could be used as a full URL. Funny enough, I had been thinking about building something similar that fits entirely within a QR code, but I held off because I mistakenly thought it would require an HTTP(s) link. I was heavily inspired by this work: Can you fit a whole game into a QR code?( ▶ this video )

CitesView on HN
@askiiart2024 · in “Building a self-contained game in C# under 2 kilobytes”

In a similar vein, there's Can you fit a whole game into a QR code? by MattKC, which is limited to about 3 kilobytes (2,953 bytes) ▶ this video

CitesView on HN
@redbell2022 · in “Embedding an EXE inside a .REG file with automatic execution”

I admire this type of content where the creator take some concepts we [all] use and understand then combine them in a specific, but a new way, add some tweaks to get some never-seen results. Here is another experience that, as a Windows developer, blows my mind for a while. ▶ this video

Strongly recommendsView on HN
@matheusmoreira2022 · in “Ask HN: What's the most stable form of digital storage?”

Paper. It's proven technology: written records last hundreds of years. You can easily encode arbitrary data as 8 bit mode QR codes and print them out. This gives you machine readability and error correction. Data density is not that good but it's very effective, especially for small amounts of data. I wrote some binary decoding patches for ZBar for this exact use case. You can, for example, store video games in a QR code: ▶ this video

CitesView on HN
@fath0m2020 · in “Flappy Bird in 228 bytes”

Using all the browser functionality feels like cheating. There is a good YouTube video, where a person made a snake game that fits inside a QR Code (albeit a larger version that we're used to, which can hold up to 2953 bytes). You can check it out here: ▶ this video Quite an interesting watch.

RecommendsView on HN
@matheusmoreira2020 · in “US indictments of piracy group members throw top-tier piracy world into chaos”

Video games in QR codes? That's interesting. Do you have the link to the video? Is it this one? ▶ this video link If so, then the patch he submitted builds upon my work! He fixed a line feed conversion bug that was present in Windows. I use Linux so I did not experience this issue. I remember seeing that patch get merged but I didn't know about the whole video game context. This is amazing. I wrote the patch because I was trying to print a 4096 bit RSA secret key as a QR code. Awesome to see it getting used for something even more awesome. Here are the links to my contributions and related pages: link link link link link link link ZBar used to automatically convert binary data to text when decoding 8 bit QR codes, mangling the data in the process. My patch adds the option to disable that, enabling the data to be extracted without corruption. I also added the one shot feature to the ZBar tools to make it easier to use in automated scripts that expect exactly one output: link Looks like we have a real world application for tiny ELFs now! link

CitesView on HN
DEF CON 29 - Richard Henderson - Old MacDonald Had a Barcode, E I E I CAR43:40

DEF CON 29 - Richard Henderson - Old MacDonald Had a Barcode, E I E I CAR

DEFCONConference
18K views • 5 years ago
How we fit an NES game into 40 Kilobytes12:04

How we fit an NES game into 40 Kilobytes

Morphcat Games
3.7M views • 8 years ago
I built a QR code with my bare hands to see how it works35:13

I built a QR code with my bare hands to see how it works

Veritasium
9.7M views • 2 years ago
FIXING the ENTIRE SM64 Source Code (INSANE N64 performance)18:20

FIXING the ENTIRE SM64 Source Code (INSANE N64 performance)

Kaze Emanuar
3.2M views • 4 years ago
CppCon 2016: Jason Turner “Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17”1:19:52

CppCon 2016: Jason Turner “Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17”

CppCon
264K views • 10 years ago
I made a NES emulator in 15 minutes15:04

I made a NES emulator in 15 minutes

Bisqwit
389K views • 14 years ago
How I Fixed a 10 Year Old Guitar Hero Bug Without the Source Code12:09

How I Fixed a 10 Year Old Guitar Hero Bug Without the Source Code

ExileLord
404K views • 9 years ago
Interactive programming Flappy Bird in ClojureScript6:22

Interactive programming Flappy Bird in ClojureScript

Bruce Hauman
55K views • 12 years ago
Compiling C to printable x86, to make an executable research paper25:41

Compiling C to printable x86, to make an executable research paper

suckerpinch
479K views • 9 years ago
How a Laser-Shot Disk Defeats Hackers & Pirates (Coding Secrets)5:01

How a Laser-Shot Disk Defeats Hackers & Pirates (Coding Secrets)

GameHut
132K views • 8 years ago
Super Mario World: Arbitrary Code Injection At AGDQ 2014, Performed Live6:08

Super Mario World: Arbitrary Code Injection At AGDQ 2014, Performed Live

invalidation
225K views • 12 years ago
A Mind Is Born (256 bytes)2:22

A Mind Is Born (256 bytes)

lftkryo
1.2M views • 9 years ago
Computer program that learns to play classic NES games16:18

Computer program that learns to play classic NES games

suckerpinch
2.2M views • 13 years ago
puls (256 bytes)0:43

puls (256 bytes)

JanRrrolaKadlec
36K views • 17 years ago
Simple Code, High Performance2:50:14

Simple Code, High Performance

Molly Rocket
463K views • 5 years ago
.kkrieger - The FPS Game in 96KB (Full Gameplay)7:16

.kkrieger - The FPS Game in 96KB (Full Gameplay)

Daniel Hands
528K views • 16 years ago
TasBlock at AGDQ 2017: TASBot58:44

TasBlock at AGDQ 2017: TASBot

TASVideosChannel
398K views • 9 years ago
Finding the BEST sine function for Nintendo 6426:41

Finding the BEST sine function for Nintendo 64

Kaze Emanuar
418K views • 3 years ago
Handmade Hero Day 001 - Setting Up the Windows Build1:13:51

Handmade Hero Day 001 - Setting Up the Windows Build

Molly Rocket
465K views • 11 years ago
I wrote a Raytracer for DOS, 16 VGA colors15:00

I wrote a Raytracer for DOS, 16 VGA colors

Bisqwit
905K views • 15 years ago