
Doom in Malbolge, Pong on a Befunge Grid, and RFC-Grade Crypto in Brainfuck
Three new GitHub esolang projects tackle Doom inside Malbolge, run a full CHIP-8 emulator on an 80x25 Befunge-93 grid, and implement RFC-compliant cryptography in pure Brainfuck.
Three repositories created during the August 30–September 13 window demonstrate what happens when programmers bring formal systems discipline to deliberately hostile languages.
MalDOOM enforces mathematical non-cheating proofs to execute Doom state transitions inside Malbolge, befunge8 implements a fully verified CHIP-8 virtual machine on an 80x25 Befunge grid, and bfsodium delivers RFC-grade symmetric cryptography in pure, reviewable Brainfuck. 123The creation window ran from August 30 at 20:00 through September 13 at 20:00, UTC-05:00. GitHub repository snapshots below reflect the state of each project during the verification pass.
The three picks
| Category | Project | Created (UTC-05) | What it does | Snapshot |
|---|---|---|---|---|
| Most absurd | DannyBaanks/MalDOOM | Sep 01, 22:11 | Runs verified Doom WAD decoding and RNG state inside Malbolge | 5 commits; 0 stars; 0 forks; mupad / C / Zig 45 |
| Most show-off | Kronnosy/befunge8 | Sep 13, 10:21 | Runs a CHIP-8 emulator and Pong on an 80x25 Befunge-93 torus | 1 commit; 0 stars; 0 forks; Python / Befunge 67 |
| Most practical | calebpower/bfsodium | Sep 06, 15:13 | Implements RFC-compliant ChaCha20-Poly1305, SHA-256, and HKDF in pure Brainfuck | 70 commits; 1 star; 0 forks; Brainfuck 89 |
This fortnight marks an unusual convergence. Rather than assembling fragile proof-of-concept scripts, all three authors built full test harnesses, published byte-exact execution traces, and formally defined their operational boundaries.
Most absurd: Doom inside Malbolge
The premise of running Doom on unusual hardware is familiar across computing folklore. The
MalDOOM project takes that meme and imposes strict architectural constraints. Its central rule, titled the First Law in the project specification, dictates that the host environment remains restricted to raw input and output transport. The host displays a dumb framebuffer, pipes keystrokes, and passes WAD bytes without performing any semantic parsing. An automated audit confirms that grep doomgeneric_Tick host/ yields zero occurrences, guaranteeing that the esolang environment performs every gameplay state transition. 1The repository tracks progress across eight numbered milestones, designated M0 through M7:
- M0: Arbitrary arithmetic and control flow running in Malbolge Unshackled via hand-written intermediate representations.
- M1: WAD file headers parsed inside the virtual machine, decoding
IWADidentifiers, lump counts, and directory offsets byte-identically to standard C implementations. - M2a: Directory lump matching across real game records, resolving indices for
ENDOOMandPLAYPAL. - M3a: Doom's deterministic
P_Randomtable executing three consecutive game ticks with state preserved across draws. - M4–M7: Full player input, framebuffer rasterization, repeated game ticks, and playable E1M1 execution, recorded as pending research goals.
The technical core separates two execution targets. For the unbounded target, Malbolge Unshackled, the author bypassed broken C-to-EIR compilers by authoring intermediate assembly directly, assembling it through LMFAO into executable
.mu bytecode. For Classic Malbolge, which remains strictly bound to 59,049 ternary memory cells, the project explores computational state through an experimental quine-outward framework. 1That quine study analyzes the 59,032-character Lutter quine on a real virtual machine. It demonstrates that the quine functions as a sequential reader loop reading from an internal source tape at cell offset 29,516. Perturbing tape cell
29516+k changes only output byte k+1, confirming causal, non-diffuse reading. The author then built a discrete ternary ring model to explore whether self-modifying code can maintain stable memory registers. A minimal three-cell microcell maintains distinguishable states, and a single-cell boundary seam allows two adjacent state cells to coexist. 1The project documentation explicitly records where the physical limits of Classic Malbolge halt progress. Passive memory filling under the ternary
crazy operation converges into periodic attractors rather than repairing corrupted memory, proving that autonomous state regeneration requires directed code rewrites. Full Doom execution on Classic Malbolge remains marked as unachieved. By establishing formal verification standards before claiming victory, MalDOOM turns a classic programming joke into an honest investigation of ternary computational physics. 1The public repository was created on September 1 at 22:11 in the channel's timezone. GitHub showed 5 commits, 0 stars, and 0 forks during our snapshot check. 45
Most show-off: CHIP-8 emulated on an 80x25 Befunge grid
Befunge-93 arranges instructions across a two-dimensional grid where an instruction pointer navigates through arrows, conditional turns, and stack operators. Emulating a complete virtual machine inside that grid requires fitting processor registers, program memory, and display storage into a standard 80x25 character playfield. The
befunge8 repository achieves this by building a dynamic two-dimensional code overlay engine. 2The implementation partitions the 80x25 torus into functional zones:
- A dedicated row reserved for the actively executing instruction sequence.
- Scratch cells holding virtual CHIP-8 registers, timers, and program counters.
- Packed memory blocks storing sixteen RAM bytes per wide cell.
- Framebuffer storage packing 64x32 monochrome display pixels into 32 wide cells.
- A bootstrap loader written in Befunge that reads assembled code blocks using the
&input operator and writes them into the execution row usingp.
All instruction fetching, opcode decoding, conditional skips, arithmetic operations, and XOR sprite drawing happen within the Befunge instruction grid. The host wrapper handles only raw terminal event transport, monotonic timing ticks, and character output. 2
The repository validates its machine semantics against the upstream Timendus CHIP-8 test suite. Running through the CHIP-8 logo, IBM logo, Corax+, and Flags test ROMs,
befunge8 achieves zero differing pixels across all 2,048 screen positions when compared against canonical reference screenshots. 2The project also executes an authentic 246-byte Pong ROM. In automated benchmark runs under PyPy, the emulator executed 500 CPU instructions and emitted 44 distinct graphic frames in 12.8 seconds, demonstrating active ball movement and paddle position adjustments. 2
The author provides an explicit technical qualification regarding specification compliance. The emulator depends on arbitrary-precision integers within each grid cell to pack memory and manage bitwise arithmetic. Because original Befunge-93 specifies single-byte cell values,
befunge8 requires its bundled runtime rather than running on standard byte-cell interpreters. The repository openly states that comfortable interactive gameplay is unachievable at current execution speeds, documenting the project as an exercise in boredom-driven architectural audacity. 2The repository was created on September 13 at 10:21 in the channel's timezone. GitHub recorded 1 commit, 0 stars, and 0 forks during our verification pass. 67
Most practical: RFC-grade cryptography in Brainfuck
Writing cryptography in Brainfuck sounds like an exercise in immediate failure. Brainfuck provides eight primitive single-character instructions, an unbounded tape of single-byte cells, and zero native arithmetic beyond increment and decrement. The
bfsodium project implements standard, interoperable cryptographic primitives in readable, hand-structured Brainfuck source code. 3The repository provides a complete symmetric cryptographic suite:
- ChaCha20: 32-bit addition, quarter-round permutations, block functions, and keystream generation conforming to RFC 8439 Section 2.4.2.
- Poly1305: 17-byte multiprecision arithmetic, modular folding modulo 2^130 - 5, and key clamping conforming to RFC 8439 Section 2.5.2.
- ChaCha20-Poly1305 AEAD: Authenticated encryption with associated data matching RFC 8439 Section 2.8.2.
- SHA-256: Message padding, compression rounds, and message schedules conforming to FIPS 180-4.
- HKDF-SHA-256: Key extraction and expansion matching RFC 5869 Appendix A.
The engineering methodology mirrors high-assurance systems development. Every primitive is verified against two independent oracles: official RFC test vectors and formal specifications written in the Cryptol verification language. The project incorporates mutation testing across its tape layouts to ensure that deliberate code corruptions trigger test failures. On an Ubuntu 26.04 test runner, the suite records 345 passing checks and zero failures. 3
The AEAD implementation uses an interleaved processing pipeline. Instead of buffering entire ciphertexts, sixteen bytes of data are encrypted, transmitted to output, and immediately folded into the running Poly1305 accumulator. This streaming discipline keeps memory consumption constant across arbitrary payload lengths up to the 65,535-byte length-prefix ceiling. 3
The project documents its computational cost in machine-independent virtual machine instructions alongside physical wall-clock measurements:
- SHA-256 hashing of a 48-byte message requires 1.2 billion instructions, taking approximately two seconds on modern x86 hardware.
- Full RFC 8439 AEAD vector evaluation requires 11.6 billion instructions.
- HKDF key derivation generating 64 bytes of output requires approximately 22 billion instructions, running in 29 seconds.
The author pairs these benchmarks with a vital security disclosure: the implementation is mathematically correct, yet fundamentally insecure for production secrets. Because Brainfuck implements conditional control flow by branching on tape cell values, execution time leaks information about secret data, preventing constant-time guarantees. The tape memory is also never cleared upon completion. The repository serves as an educational tour de force in algorithmic translation rather than a replacement for libsodium. 3
The repository was created on September 6 at 15:13 in the channel's timezone. GitHub showed 70 commits, 1 star, and 0 forks during our audit. 89
The quiet corners
Two additional esolang projects emerged during the same fortnight with compelling systems designs:
hsd2514/bf-gym: A model-agnostic Gymnasium environment built for reinforcement learning agents learning to synthesize Brainfuck programs. It features seventeen graded curriculum task families, Levenshtein edit distance reward shaping, and hard step limits to eliminate infinite loops during training. Created September 12 at 09:41 UTC-05:00. 10xiedada05/bf2com: An optimizing compiler translating Brainfuck directly into 8086 MS-DOS.COMbinaries. The compiler allocates the runtime tape into a dedicated memory segment via DOS interrupt21h/AH=48hto enable zero-copy pointer operations, self-hosting under Watcom C and MSVC. Created September 3 at 12:45 UTC-05:00. 11
The verdict
The three featured repositories explore opposite computational directions across three distinct esolang families.
MalDOOM claims the absurdity crown by building a formal verification pipeline to prove that a ternary self-encrypting nightmare can execute game logic without host deception. befunge8 earns the showmanship spotlight by wrapping an entire classic video game architecture inside a two-dimensional grid loader that matches Timendus diagnostic pixels to the exact count. bfsodium captures practical appreciation by proving that even eight primitive instructions can faithfully execute RFC-grade cryptography when backed by formal methods and meticulous tape contracts.Each project succeeds because its creator respected the discipline of testing. Rather than demanding belief in an unverified curiosity, these authors provided byte-level traces, dual-oracle specifications, and honest catalogs of their physical limitations.
References
- 1MalDOOM repository on GitHub
github.com
- 2befunge8 repository on GitHub
github.com
- 3bfsodium repository on GitHub
github.com
- 4MalDOOM repository metadata
api.github.com
- 5MalDOOM commit history
api.github.com
- 6befunge8 repository metadata
api.github.com
- 7befunge8 commit history
api.github.com
- 8bfsodium repository metadata
api.github.com
- 9bfsodium commit history
api.github.com
- 10bf-gym repository on GitHub
github.com
- 11bf2com repository on GitHub
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.
