From 228cdfec9ec067ae6c266abdf320371024c775f8 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Mon, 23 Oct 2023 07:05:51 +0200 Subject: [PATCH] Release new version. --- DMGTRIS.GB | Bin 32768 -> 32768 bytes README.md | 54 +++++++++++++++++++++++++++----------- src/res/sources/tiles.gbr | Bin 39009 -> 39009 bytes src/res/tiles.inc | 2 +- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/DMGTRIS.GB b/DMGTRIS.GB index 5e1a28bf1ac380edcf756f46f39c352ee61079cc..7bacda314235cfa62d01154f6baba2666883027d 100644 GIT binary patch delta 5410 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 delta 5335 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 diff --git a/README.md b/README.md index ceba48d..a50c154 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,21 @@ # DMGTRIS -This is a block stacking game for the game boy using the TGM2 era ARS rotation rules (no floor kicks, but with sonic drop) for the original black and white game boy written in assembly. +DMGTRIS is a block stacking game for the original game boy written in assembly. -It supports TLS (until 1G), IRS, IHS, ARE, Lock Delay, and other such buzz words. +The game is heavily inspired by the TGM series of games and has the following features: +- TLS (ghost piece) until 1G speeds. +- IRS (initial rotation system). +- IHS (initial hold system) as well as holds. +- Faithful implementations of concepts such are lock delay, piece spawn delay and DAS. +- Several RNG options available. You can choose between pure RNG, 4 history with 4 retries, 4 history with 6 retries, 4 history with infinite retries, or a 35bag with 4 history and 6 retries with drought prevention. +- A choice between sonic drop (pressing up grounds the piece but does not lock it), hard drop (pressing up locks the piece), or neither (pressing up does nothing at all.) +- A choice between traditional ARS for rotation, or TGM3 era ARS with extra kicks. +- Scoring is a hybrid between TGM1 and TGM2. +- A speed curve reminiscent of TGM, starting slightly faster and skipping the awkward speed reset. The game continues infinitely... But so does the speed increase. +- A rock solid 60FPS with a traditional 20x10 grid. -Scoring is somewhat like TGM1 within the bounds of what the Z80 CPU can calculate quickly enough. -The speed curve starts at 1/16G, so slightly faster than TGM, and goes smoothly toward 20G at level 500. There is no speed drop at level 200, and the game doesn't end at level 999. 20G mode starts at TGM1 speeds, then transitions to TGM2 speeds, TGM3 speeds, and finally it goes beyond even shirase mode. - -The Randomizer uses a TGM2-style 4-history randomizer preloaded with SSZZ, and with 4 rerolls by default. This number can be changed and is shown at the top right of the playfield. - -The game itself runs at a constant 60fps as well as at the traditional 20 row visible grid. - -There are five available game modes: +## Modes +There are eight available game modes: - TGM1: 4 history w/ 4 rerolls, never start with O, S or Z. - TGM2: 4 history w/ 6 rerolls, never start with O, S or Z. Sonic drop. - TGM3: 4 history w/ 6 rerolls and drought protection, never start with O, S or Z. Sonic drop. Extra floor and wall kicks for I and T pieces. @@ -22,6 +26,26 @@ There are five available game modes: - EAWY: EASY but with hard drop. +## Scoring +After each piece is dropped, a check is made: + +### No line clear +Combo is reset to 1 and no points are awarded. + +### Lines were cleared +Lines = Lines cleared. In TGM3 modes, 3 lines are worth 4, and 4 lines are worth 6. + +Level = The level before the lines were cleared. + +Soft = Amount of frames the down button was held during this piece + 10 if the piece was sonic or hard dropped. + +Combo = Old combo + (2 x Lines) - 2 + +ScoreIncrement = ((Level + Lines) >> 4 + 1 + Soft) x Combo x Lines. + +ScoreIncrement points are then awarded. + + ## Playing You can build the game yourself, or use the binary [here](https://git.villadelfia.org/villadelfia/dmgtris/raw/branch/master/DMGTRIS.GB) or [here](https://github.com/Villadelfia/DMGTRIS/raw/master/DMGTRIS.GB). @@ -42,7 +66,7 @@ Please do not try running it on older emulators such as VBA, since this game use - B — Rotate 2 - Select — Hold - Start — Pause -- Up — Sonic drop +- Up — Sonic/Hard drop - Down — Soft drop/Lock - Left/Right — Move @@ -52,23 +76,21 @@ Please do not try running it on older emulators such as VBA, since this game use ## Building -This game was created using Game Boy assembly using the RGBDS toolchain and GNU make. +The game can be built using gnu make and the RGBDS toolchain. ## Issues - In very rare cases the frame time in TGM3 and TGW3 modes can be exceeded due to the way the RNG for those modes works. When this happens, the screen will appear slightly glitched for 1 frame but no frame drops will occur. This issues is fundamentally impossible to completely avoid though more optimization may cause it to occur less frequently. -- In frames where both rotation and translation happens at the same time, the ghost piece may be drawn one space too high or too low. Fixing this would require calculating the distance-to-stack twice and that wouldn't be possible on the original game boy. This issue is only a visual glitch and only for one frame sometimes. It will not be fixed. ## Future Goals - Improve main menu. -- Add 20G mode. -- Multiplayer. +- Decouple rotation rules, rng rules, and speed curve from each other. - Multiplayer with items. - Colorization. -- Three previews for TGM3 modes. - ... + ## License Copyright (C) 2023 - Randy Thiemann diff --git a/src/res/sources/tiles.gbr b/src/res/sources/tiles.gbr index 6aa75f21170863be7fa408bf1afa8441604f90c1..10d2123c4163b754ba3f355c6d26e0f0a2fca998 100644 GIT binary patch delta 72 zcmaF3f$8A}rVTe0RGqD2%JYk|iwhEyQ)5zc(@Tmni(`t5l4FWefpmUpQ8JL8d{ZH2 abClxTyvgPLs*?qJSvM diff --git a/src/res/tiles.inc b/src/res/tiles.inc index 47403f2..d56575d 100644 --- a/src/res/tiles.inc +++ b/src/res/tiles.inc @@ -529,7 +529,7 @@ Tiles:: DB $00,$00,$00,$00,$44,$44,$CA,$CA DB $4A,$4A,$4A,$4A,$E4,$E4,$00,$00 DB $00,$00,$00,$00,$CC,$CC,$22,$22 - DB $44,$44,$88,$88,$EE,$EE,$00,$00 + DB $44,$44,$82,$82,$EC,$EC,$00,$00 DB $00,$00,$00,$00,$04,$04,$0A,$0A DB $0E,$0E,$0A,$0A,$0A,$0A,$00,$00 TilesEnd::