A complete Breakout/Arkanoid clone written entirely in x86 real-mode assembly language.
A vintage-style arcade game running in VGA text mode (80x25 characters). Features:
- VGA text mode rendering — Uses direct memory access at
0xB8000for display - Unicode block characters — Bullet (●), horizontal lines (─), blocks (█) for graphics
- Color-coded brick rows — Red, magenta, yellow, green, cyan, white
- Ball physics — Bounces off walls, paddle, and bricks with deflection
- Score tracking — 10 points per brick destroyed
- 3 lives — Ball resets to paddle center on loss
- Keyboard input — BIOS interrupt 16h for arrow keys and function keys
nasm -f bin breakout.asm -o breakout.com# Boot from floppy image
qemu-system-i386 -drive format=raw,file=boot.img
# Or directly
qemu-system-i386 -kernel breakout.com -display curses# Copy to a virtual DOS drive
dosbox breakout.com| Key | Action |
|---|---|
| ← / → | Move paddle left/right |
| R | Restart after game over |
| ESC | Quit to BIOS |
- Architecture: Intel 8086 (16-bit real mode)
- Mode: VGA text mode 80x25 (mode 3h)
- Video: Direct memory access at segment
0xB8000 - Input: BIOS interrupt
0x16h(keyboard) - Display: BIOS interrupt
0x10h(video services) - FPS: ~30 FPS (software delay loop)
- Size: ~1.7 KB (with alignment padding)
- Ball bounces off all 4 walls
- Paddle deflection varies based on where ball hits the paddle
- Each brick row has a different color
- Game ends when all 3 lives are lost
- Win condition: destroy all bricks
breakout.asm — Game source code (~500 lines of assembly)
breakout.com — Compiled binary
boot.img — Bootable floppy disk image
MIT License — See LICENSE