Endbot 256-byte DOS intro · HellMood/Desire · Revision 2026 What is this? Endbot is a complete audio-visual demo that fits in exactly 256 bytes. It runs under DOS (via DosBox-X) and renders in real-time: a robot sprite with progressive bullet damage, a growing explosion, a scrolling checkerboard landscape, and a MIDI soundtrack - all from a single tiny .com file. Build - ASM → COM You need FASM (Flat Assembler). One command produces a raw binary with no linker step: fasm endbot.asm endbot.com Run - DosBox-X Setup The intro writes to MIDI port 0x330 for music. Use DosBox-X (not plain DOSBox) for its proper MPU-401 emulation. dosbox-x.conf [dosbox] machine=vgaonly memsize=4 [cpu] cputype=386 cycles=auto [midi] mpu401=uart mididevice=fluidsynth # use win32 on Windows, fluidsynth on Linux/macOS fluid.soundfont= # path to a GM .sf2, e.g. /usr/share/sounds/sf2/FluidR3_GM.sf2 [sblaster] sbtype=none [mixer] rate=44100 dosbox-x -conf dosbox-x.conf endbot.com Press ESC to quit. The code sends MIDI reset (0xFF) before exit so no notes hang open. Code Walkthrough 1 - File Header & Init ; "Endbot" - 256b intro for DosBox-X ; presented at Revision 2026 ; by HellMood/Desire %define initbp 0x91C ; BP=Timer, use constant to ease calculations org 100h push 0xa000-20*4 ; VGA Memory Adress, slightly offset to beautify pop es ; into ES mov al,0x13 ; 13h : 320 * 200 Pixels in 256 Colors int 0x10 ; Set! mov cl,Nasenatmungsgeraeusch ; Dump the whole Code to MIDI until this point mov di,si ; Align Music Pointer with Pixel Pointer for 1st check initbp is the time value already present when the program starts for size reasons. All timing is relative to it, so animation is consistent regardless of DosBox-X startup time. int 10h / AL=13h sets VGA mode 13h: 320×200, 256 colors, flat 64 000-byte framebuffer at A000:0000. CL is loaded with the byte length of the combined music+sprite block - used by rep outsb on the first frame boundary to stream it all to MIDI port 0x330 in one shot. 2 - Main Loo...
First seen: 2026-04-07 22:12
Last seen: 2026-04-08 00:12