Skip to content

Classic Tetris (NES Tetris) written in BEVY/RUST.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Ramirisu/tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tetris

Build dependency status

Classic Tetris (NES Tetris) written in BEVY/RUST.

gameplay

Features

  • Game Play

    • DAS
    • 1H2R RNG for Next Piece
    • Glitched Color Palettes
    • Level 39 Super Kill Screen
    • Piece Distribution
    • Statistics
    • Display Input
    • Sound Effect
  • Platform

    • High FPS Support
    • Cross-platform (Web/Windows/Linux/MacOS)

Game Options

TRANSITION

The TRANSITION option determines how the level advances after lines clear.

Options
Classic When the player line clear (startLevel × 10 + 10) or max(100, (startLevel × 10 - 50)) lines, whatever comes first, the level advances by 1. After this, the level advances by 1 for every 10 lines.
Fixed When the player line clear (startLevel x 10 + 10) lines, the level advances by 1. After this, the level advances by 1 for every 10 lines.
Every 10 Lines The level advacnes by 1 for every 10 lines.
Every 4 Lines The level advacnes by 1 for every 4 lines.

LINECAP

The LINECAP option enables the Super Kill Screen as the end game mechanism for competitive games. Players can keep going under kill screen due to the inventation of the rolling technique. The gravity will double again after 10 levels clear in the kill screen in order to avoid endless game playing.

Options
Off The gravity is the same as level 29 for level 39 and beyond.
Super Kill Screen The gravity is 200% of level 29 starting from level 39.

For TV SYSTEM: PAL, the gravity is 200% of level 19 starting from level 29.

GRAVITY

The GRAVITY option determines how the gravity will increase when the level advances.

Options
Level The gravity increases when the level advances.
Locked The gravity is locked at the startLevel.

SEEDING

The SEEDING option determines how to generate NEXT pieces. 1H2R Randomizer is used to choose the pieces.

Options
System System-provided seeds are used and result different sequences for each game.
Custom User-provided seed is used, generates constant sequence. This mode is built for competitive match.

SEED

The SEED option determines the seed for the random number generator. It is only available when SEEDING is CUSTOM.

  • Press Start to enter/leave seed configuration.
  • Press Up and Down to adjust the hex value.
  • Press Select to generate random seed.

SCORING

The SCORING option determines how the score is displayed.

Options 123 1,234,567 3,704,567 39,504,567
Decimal Display the score in decimal up to 2^64. 000123 1234567 3704567 39504567
Classic Display the score in decimal up to 999999. 000123 999999 999999 999999
Base36 Apply base36 encoding for the 6th digit and above of the score. 000123 C34567 1104567 AZ04567

TV SYSTEM

The TV SYSTEM option determines which version of NES Tetris releases is used. This affects DAS, gravity and the level of linecap.

Options
NTSC The NTSC version of NES Tetris, which is specified to run at 60 frames per second.
PAL The PAL version of NES Tetris, which is specified to run at 50 frames per second. The game is rebalanced for the slower frames per second in PAL release.

Reference: https://tetris.wiki/Tetris_(NES,_Nintendo)

NEXT PIECE HINT

The NEXT PIECE HINT option determines how many NEXT pieces are displayed.

Options
Off
Classic Show next piece only.
Modern Show next 5 pieces.

INVISIBLE

The INVISIBLE option determines the visibility of the locked squres.

Options
Off All squares are visible.
On Squares locked are invisible.

Keybindings

Menu In Game Keyboard Controller: Mapping A Controller: Mapping B
Move Up
Move Down Soft Drop
Move Left Move Left
Move Right Move Right
Rotate Clockwise X A (→) B (↓)
Back Rotate Counterclockwise Z B (↓) Y (←)
Start Pause/Resume Enter Start Start
Soft Reset Soft Reset Esc Select + Start + A + B Select + Start + B + Y

A, B, X and Y button mapping is in NES/SNES/NSwitch Controller layout.

Build & Run

Web

cargo build --release --target wasm32-unknown-unknown
wasm-bindgen --no-typescript --target web --out-dir ./dist/tetris --out-name "tetris" ./target/wasm32-unknown-unknown/release/tetris.wasm
cp -r ./assets ./dist/assets

# Start a web server to serve the files under "./dist"

Linux

Ubuntu

apt-get install g++ pkg-config libx11-dev libasound2-dev libudev-dev libxkbcommon-x11-0
cargo run --release

Windows

cargo run --release

MacOS

cargo run --release

License

This project is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:

at your option. This means you can select the license you prefer!

About

Classic Tetris (NES Tetris) written in BEVY/RUST.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages