Skip to content

Ein Klon des Gameboy-Spieleklassikers „Tetris“ umgesetzt mithilfe der Engine Pi

License

Notifications You must be signed in to change notification settings

engine-pi/tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tetris auf dem Gameboy

Nachbau des Spiels Tetris auf dem klassischem Gameboy mit Hilfe von Java und der Engine Alpha.

Über das Spiel Tetris

Bildschirmauflösung

Der Bildschirmausschnitt des klassische Gameboys ist 160x144 (Breite x Höhe) Pixel. Ein Block hat die Größe 8x8. Der Bildschirmausschnitt lässt sich als mit 20x18 Blöcken ausfüllen.

Hauptmodi

Es gibt zwei Hauptmodi: „A-Type“ und „B-Type“.

Im „A-Type“-Modus muss eine möglichst hohe Punktzahl erreicht werden, indem Blockreihen auflöst werden, während die Tetrominos immer schneller fallen.

Im „B-Type“-Modus müssen 25 Reihen beseitigt werden, um zu siegen. Der Schwierigkeitsgrad kann erhöht werden, indem die Fallgeschwindigkeit heraufsetzt und dadurch mehr Tetrominos eingestellt werden.1

Drehung

Die Tetrominos drehen sich nur in eine Richtung, nämlich nach rechts. Je nach Tetromino müssten unterschiedlich viele Zustände abgebildet werden.

  • ein Zustand: O
  • zwei Zustände: I, Z und S
  • vier Zustände: L, J und T

Den begrenzten grafischen Möglichkeiten des originalen Gameboys geschuldet, drehen sich die Tetrominos nicht geometrisch korrekt, sondern simulieren die Rotation nur. Bei dieser Rotationssimulation sind je nach Tetromino mehrere Möglichkeiten realisierbar. In verschiedenen Internetforen wird vom right handed bzw. left handed Rotationssystem gesprochen. Die Gameboy-Variante verwendet das left handed System. Das I, Z und S sind bei der Drehung auf linken Seite des Rotationsquadrats angesiedelt. 2

Blueprint

Farben

Der ursprüngliche Game Boy verwendet einen monochromen Bildschirm, der lediglich vier verschiedene Farbschattierungen anzeigen kann. Da der Hintergrund des nicht beleuchteten LCD-Displays grünlich ist, führt dies zu einer „grünstichigen“ Grafikanzeige.

deutsch englisch grün3 grün4 grau5
weiß white #aaaa00 (170,170,0) #7b8210 (123,130,16) #ffffff (255,255,255)
hell light #556633 (85,102,52) #5a7942 (90,121,66) #adadad (173,173,173)
dunkel dark #335544 (51,85,68) #39594a (57,89,74) #525252 (82,82,82)
schwarz black #223322 (34,51,34) #294139 (41,65,57) #000000 (0,0,0)

Start-Positionen

Die Tetrominos erscheinen auf der Koordinate (4,16) und als Vorschau auf der Koordinate (14,3).

Blueprint

Geschwindigkeit

Gameboy läuft mit einer Framerate von 59.73 Bildern pro Sekunde.

Die Tetris-ROM im Hex-Editor bei Byte 1B06h

Level 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Frames per row 53 49 45 41 37 33 28 22 17 11 10 9 8 7 6 6 5 5 4 4 3
Frames per row - 1 52 48 44 40 36 32 27 21 16 10 9 8 7 6 5 5 4 4 3 3 2
Hexadezimal 0x34 0x30 0x2C 0x28 0x24 0x20 0x1B 0x15 0x10 0x0A 0x09 0x08 0x07 0x06 0x05 0x05 0x04 0x04 0x03 0x03 0x02
Hexadezimal 34h 30h 2Ch 28h 24h 20h 1Bh 15h 10h 0Ah 09h 08h 07h 06h 05h 05h 04h 04h 03h 03h 02h
Sekunden 0.887 0.820 0.753 0.686 0.619 0.552 0.469 0.368 0.285 0.184 0.167 0.151 0.134 0.117 0.100 0.100 0.084 0.084 0.067 0.067 0.050

Diese Tabelle befindet sich bei Byte 1B06h in der ROM; XXXh steht für eine hexadezimale Zahl XXX. Eine andere Schreibweise wäre 0xXXX. Jeder Eintrag ist um eins kleiner als die tatsächliche Anzahl der Frames. So wird z. B. bei Level 1 49 (= 31h) Frames als 30h gespeichert.6

https://github.com/alexsteb/tetris_disassembly/blob/b4bbceb3cc086121ab4fe9bf4dad6752fe956ec0/main.asm#L4558-L4559

https://github.com/osnr/tetris/blob/4ca2f8bf3013a13a4c54d59ee03c929036045f93/tetris.asm#L3845-L3846

Soft und Hard Drop

Ein Soft Drop ist eine Bewegung, bei dem ein Tetromino seine Abwärtsbewegung beschleunigt. Dieser Zug bringt mehr Punkte, als den Tetromino von selbst fallen zu lassen, aber weniger als ein Hard Drop.7

Bei einem Hard Drop erreicht ein Tetromino sofort seine endgültige Position.

Punkteverteilung / Scoring

Level Punkte für 1 Zeile für 2 Zeilen für 3 Zeilen für 4 Zeilen
0 40 100 300 1200
1 80 200 600 2400
2 120 300 900 3600
...
9 400 1000 3000 12000
n 40 * (n + 1) 100 * (n + 1) 300 * (n + 1) 1200 * (n + 1)

Neben der Bepunktung für abgebaute vollständige Zeilen, gibt es Punkte für durch Soft-Drop platzierte Tetrominos. Die Punkteanzahl entspricht dabei der Zeilenanzahl der kontinuierlichen, d. h. nicht unterbrochenen Soft-Drop-Bewegung.8 9

Animation bei getilgten Zeilen

Folgendes Bild zeigt eine im Programm Gimp geöffnete animierte PNG-Datei. In dieser Animation ist zu sehen, wie eine Zeile getilgt wird.

  1. zu tilgende Zeile ist sichtbar
  2. graue Überblendung
  3. zu tilgende Zeile ist sichtbar
  4. graue Überblendung
  5. zu tilgende Zeile ist sichtbar
  6. graue Überblendung
  7. zu tilgende Zeile ist sichtbar
  8. Die Zeile ist getilgt.
  9. Die Zeilen oberhalb sind nach unten gerutscht.

Sound

Game Boy Sound System

GBS-Dateien: ocremix.org zophar.net

gbsplay

Title Composer Arranger
Title Screen Hirokazu Tanaka Hirokazu Tanaka
A-Type (V1.0) Hirokazu Tanaka Hirokazu Tanaka
A-Type (V1.1) Korobeiniki Traditional Hirokazu Tanaka
B-Type Hirokazu Tanaka Hirokazu Tanaka
C-Type French Suite No. 3 Johann Sebastian Bach Hirokazu Tanaka
Game Over Hirokazu Tanaka Hirokazu Tanaka
Success! Tommy Walker Hirokazu Tanaka
Trepak 1 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Trepak 2 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Trepak 3 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Trepak 4 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Trepak 5 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Trepak 6 Pyotr Ilyich Tchaikovsky Hirokazu Tanaka
Rocket Blastoff Hirokazu Tanaka Hirokazu Tanak
High Scores Hirokazu Tanaka Hirokazu Tanaka
Toréador Song Georges Bizet Hirokazu Tanaka
2 Player ~ End of Round Hirokazu Tanaka Hirokazu Tanaka
2 Player ~ Results Hirokazu Tanaka Hirokazu Tanaka
10

https://github.com/niuhuan/gbc-swing/blob/master/src/main/java/gbc/Speaker.java

https://github.com/trekawek/coffee-gb

Bildschirme (scenes)

CopyrightScene

CopyrightScene

TitleScene

TitleScene

MainMenuScene

MainMenuScene

LevelSelectScene

LevelSelectScene

IngameScene

IngameScene

Das Spielfeld ist 8x18 groß. Der linke Rand ist 2 und der rechte Rand 10 Blöcke breit.

GameOverScene

GameOverScene

RussianDancersScene

RussianDancersScene

Emulation

Es gibt eine Vielzahl sogenannter Emulatoren, mit denen der Gameboy simuliert werden kann.

mGBA

Der Emulator mGBA (mini Game Boy Advance) läuft auf allen gängigen Desktop-Betriebssystemen und auf einigen Spielekonsolen. mGBA ist freie Software und wird unter der Mozilla Public License 2.0 veröffentlicht. Der Quellcode ist über Github abrufbar.

Um das Spiel in einem Emulator laufen zu lassen, ist eine sogenanntes ROM notwendig, z. B. von emulatorgames.net oder aus diesem Repository.

Die Tastenkürzel wichtigsten Tastenkürzel des mGBA sind:

  • A: X
  • B: Z
  • L: A
  • R: S
  • Start: Enter
  • Select: Backspace

Weiterführende Informationen

Allgemeine Informationen über das Spiel

Youtube-Videos

Klone

Footnotes

  1. https://www.nintendo.com/de-de/Spiele/Game-Boy/TETRIS--275924.html

  2. https://strategywiki.org/wiki/Tetris/Rotation_systems

  3. Ermittelt mit dem GIMP Color Picker mittels eines Bildschirmfotos des Videos https://www.youtube.com/watch?v=BQwohHgrk2s

  4. https://en.wikipedia.org/wiki/List_of_video_game_console_palettes#Game_Boy Original Game Boy Hex / Binary

  5. mGBA Emulator Settings / Gameboy / Game Boy palette / Grayscale Preset

  6. https://harddrop.com/wiki/Tetris_(Game_Boy)

  7. https://tetris.fandom.com/wiki/Soft_Drop

  8. https://harddrop.com/wiki/Scoring

  9. https://gamefaqs.gamespot.com/gameboy/585960-tetris/faqs/8483

  10. https://www.vgmpf.com/Wiki/index.php?title=Tetris_(GB)#Recording

About

Ein Klon des Gameboy-Spieleklassikers „Tetris“ umgesetzt mithilfe der Engine Pi

Resources

License

Stars

Watchers

Forks