TETRIS-OS: An operating system that only plays Tetris.
Video with an explanation of the development process.
Features:
- 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
$ make iso
$ qemu-system-i386 -drive format=raw,file=boot.iso -d cpu_reset -monitor stdio -device sb16 -audiodev coreaudio,id=coreaudio,out.frequency=48000,out.channels=2,out.format=s32
Unix-like
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:
$ make iso
$ qemu-system-i386 -drive format=raw,file=boot.iso -d cpu_reset -monitor stdio -device sb16 -audiodev pulseaudio,id=pulseaudio,out.frequency=48000,out.channels=2,out.format=s32
If you have sound device issues, try building without the #define ENABLE_MUSIC
in main.c
and running with $ qemu-system-i386 -drive format=raw,file=boot.iso
.
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.
Windows
Absolutely no idea. Maybe try WSL.
Real hardware
You probably know what you're doing if you're going to try this. Just burn boot.iso
onto some bootable media and give it a go. If things break, try disabling all of the music (remove #define ENABLE_MUSIC
in main.c
) since you probably don't have something with a SB16 in it.