Внимание, используются глобальные переменные и магия с преопределёнными тетримо. Пиры этого не любят. Но их можно переубедить:
- Конечно, по бенчмаркам глобальные переменные дают "просадку" производительности из-за "далёких" адресов против, передачи всего нужного барахла в функции через стек. Но просадка 0.5% (полпроцента). Зато, определённая магия в использовании (магические функции которые ничего не получают и ничего не возвращают) придает шарм коду и добавляет понимания!
- Предопределенные тетримо можно заменить на любой набор, позволяет использовать не-тетримо и даже секстимо и офигитимо... Это же круто!!!
И еще: читайте комментарии в коде (к сожалению в транскрипции из-за русофобии норминейт).
УПС! Что-то плохо с Makefile... Лечите сами