odino / tetris-os

An operating system, but it only plays Tetris.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

screenshot

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

To run use $ make qemu-mac

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 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.

Windows

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.

About

An operating system, but it only plays Tetris.

License:MIT License


Languages

Language:C 89.5%Language:Assembly 7.5%Language:Makefile 2.4%Language:C++ 0.6%