Skip to content
This repository has been archived by the owner on Feb 14, 2020. It is now read-only.

programble/tetrasm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tetrasm

Tetris for x86 in NASM.

Somewhat a port from C of Bare Metal Tetris.

Screenshot

Features

  • Ghost
  • Preview
  • Hold
  • Scoring
  • Levels with increasing gravity
  • Line clear "animation"
  • Lock delay with limited movement
  • Pause

Binaries

ELF binaries and ISO images can be downloaded on the releases page.

Dependencies

  • NASM, with support for elf32 output format
  • Linker capable of emulating elf_i386
  • genisoimage (from cdrkit) or mkisofs (from cdrtools)

If the system linker does not support emulating elf_i386, a cross-linker can be built from GNU binutils. Use ./configure --target i386-elf, then set LD = i386-elf-ld.

To use mkisofs instead of genisoimage, set GENISOIMAGE = mkisofs.

Make variables can be set on the command line or in config.mk.

Build

make

This will assemble and link a multiboot ELF file, tetrasm.elf.

The default build is debug, which includes debug symbols and runtime debug functions. The release build excludes these.

make BUILD=release

There is also a test build, which features tests of the core functions rather than the game.

make BUILD=test

ISO

make iso

This will create a bootable ISO using GRUB Legacy, tetrasm.iso.

Emulation

make qemu BUILD=release

This will boot tetrasm.elf in QEMU using multiboot. If run in the debug build, waits for a debugger to attach.

make qemu-iso BUILD=release

This will boot tetrasm.iso in QEMU.

Debugging

make gdb

This will attach GDB to QEMU started from make qemu.

License

Copyright © 2015, Curtis McEnroe curtis@cmcenroe.me

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.