Tetris Os Save Abandoned

An operating system, but it only plays Tetris.

Project README

TETRIS-OS: An operating system that only plays Tetris.


Video with an explanation of the development process.


  • It's Tetris.
  • 32-bit (x86)
  • Fully custom bootloader
  • Soundblaster 16 driver
  • Custom music track runner
  • Fully hardcoded tetris theme
  • Double-buffered 60 FPS graphics at 320x200 pixels with custom 8-bit RGB palette

Resources Used

Building & Running

NOTE: This has only been tested in an emulator. Real hardware might not like it.

EDIT: this is not true anymore! @parkerlreed has run this on a Thinkpad T510.

Mac OS

For the cross-compiler: $ brew tap nativeos/i386-elf-toolchain && brew install i386-elf-binutils i386-elf-gcc

To run use $ make qemu-mac


You should not need a cross-compiler in most cases as the gcc shipped in most linux distros will support i386 targets.

If this isn't the case for you, read here about getting a cross-compiler.

To run use $ make qemu-pulse

If you have sound device issues, try the SDL backend for QEMU with $ make qemu-sdl or disable any audio devices with $make qemu-no-audio

If you're having issues with no image showing up/QEMU freezing, this is a known bug with QEMU SB16 emulation under GTK. Please read what @takaswie has written in #2 for a workaround.


Good luck. Maybe try dual booting with Linux if this doesn't work out :)

  • Follow the Unix-like instructions while using WSL
  • Using MSYS2 and the i386-elf-toolchain
    • Extract the binaries of the GCC and binutils releases to your mingw64 folder (likely at C:\msys64\mingw64)
    • make, gcc, etc. should now be in your PATH
> make img
> qemu-system-i386 -drive format=raw,file=boot.img -display sdl -audiodev id=dsound,driver=dsound -device sb16,audiodev=dsound

If sound is broken or choppy, try running with > qemu-system-i386 -display sdl -drive format=raw,file=boot.img -audiodev id=dsound,driver=dsound,out.fixed-settings=on,out.frequency=22050,out.buffer-length=80000,timer-period=100 -device sb16,audiodev=dsound

Real hardware

You probably know what you're doing if you're going to try this. Just burn boot.img onto some bootable media and give it a go. The SB16 is dynamically disabled in case it's not found or it's reset procedure fails, but if things continue to break try removing all references to sound or music first.

Open Source Agenda is not affiliated with "Tetris Os" Project. README Source: jdah/tetris-os
Open Issues
Last Commit
1 year ago

Open Source Agenda Badge

Open Source Agenda Rating