Release.
This commit is contained in:
parent
f46488e19d
commit
a4f41eee1f
BIN
DMGTRIS.GBC
BIN
DMGTRIS.GBC
Binary file not shown.
11
README.md
11
README.md
|
@ -7,7 +7,7 @@ The game is heavily inspired by the TGM series of games and has the following fe
|
|||
- 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, a 35bag with 4 history and 6 retries with drought prevention, NES style RNG, or pure RNG.
|
||||
- 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 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.
|
||||
|
@ -35,7 +35,7 @@ Select the rotation rules:
|
|||
Select whether up performs a sonic drop, a hard drop, or nothing at all.
|
||||
|
||||
### Speed Curve
|
||||
Check back later! For now you're stuck with the default.
|
||||
Select between several speed curves including the DMGTRIS default speed curve, TGM1, 2, and 3, as well as DEATH and SHIRASE mode. Note that all modes use the same scoring and they are all infinite.
|
||||
|
||||
### Always 20G
|
||||
Whether you want instant-drop gravity to be active at any level.
|
||||
|
@ -51,7 +51,7 @@ After each piece is dropped, a check is made:
|
|||
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.
|
||||
Lines = Lines cleared.
|
||||
|
||||
Level = The level before the lines were cleared.
|
||||
|
||||
|
@ -102,11 +102,6 @@ The game can be built using gnu make and the RGBDS toolchain.
|
|||
- 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.
|
||||
|
||||
|
||||
## Future Goals
|
||||
- Implement better sound engine.
|
||||
- Add more speed curves.
|
||||
|
||||
|
||||
## License
|
||||
Copyright (C) 2023 - Randy Thiemann <randy.thiemann@gmail.com>
|
||||
|
||||
|
|
|
@ -71,24 +71,6 @@ sGo:: db " GO "
|
|||
sPause::
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
db "P A U S E "
|
||||
db " P A U S E"
|
||||
sOption0::
|
||||
db "NORM"
|
||||
db " INV"
|
||||
|
@ -108,6 +90,8 @@ sOption3::
|
|||
sOption4::
|
||||
db "DMGT"
|
||||
db "TGM1"
|
||||
db "TGM2"
|
||||
db "TGM3"
|
||||
db "DEAT"
|
||||
db "SHIR"
|
||||
sOption5::
|
||||
|
@ -231,6 +215,236 @@ sTGM1SpeedCurve::
|
|||
sTGM1SpeedCurveEnd::
|
||||
dw $FFFF
|
||||
|
||||
|
||||
sTGM2SpeedCurve::
|
||||
dw $0000, 0, $0100
|
||||
db 1, 64
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0030, 30, $0100
|
||||
db 1, 42
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0035, 35, $0100
|
||||
db 1, 32
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0040, 40, $0100
|
||||
db 1, 25
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0060, 60, $0100
|
||||
db 1, 16
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0070, 70, $0100
|
||||
db 1, 8
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0080, 80, $0100
|
||||
db 1, 5
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0100, 100, $0200
|
||||
db 1, 3
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0160, 160, $0200
|
||||
db 1, 2
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0200, 200, $0300
|
||||
db 1, 64
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0220, 220, $0300
|
||||
db 1, 8
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0230, 230, $0300
|
||||
db 1, 4
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0233, 233, $0300
|
||||
db 1, 3
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0236, 236, $0300
|
||||
db 1, 2
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0251, 251, $0300
|
||||
db 1, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0300, 300, $0400
|
||||
db 2, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0330, 330, $0400
|
||||
db 3, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0360, 360, $0400
|
||||
db 4, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0400, 400, $0500
|
||||
db 5, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0420, 420, $0500
|
||||
db 4, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0450, 450, $0500
|
||||
db 3, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0500, 500, $0600
|
||||
db 20, 1
|
||||
db 27, 10, 30, 25
|
||||
|
||||
dw $0601, 601, $0700
|
||||
db 20, 1
|
||||
db 27, 10, 30, 7
|
||||
|
||||
dw $0701, 701, $0800
|
||||
db 20, 1
|
||||
db 18, 10, 30, 7
|
||||
|
||||
dw $0801, 801, $0900
|
||||
db 20, 1
|
||||
db 14, 10, 30, 1
|
||||
|
||||
dw $0901, 901, $1000
|
||||
db 20, 1
|
||||
db 14, 6, 18, 1
|
||||
|
||||
sTGM2SpeedCurveEnd::
|
||||
dw $FFFF
|
||||
|
||||
|
||||
sTGM3SpeedCurve::
|
||||
dw $0000, 0, $0100
|
||||
db 1, 64
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0030, 30, $0100
|
||||
db 1, 42
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0035, 35, $0100
|
||||
db 1, 32
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0040, 40, $0100
|
||||
db 1, 25
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0060, 60, $0100
|
||||
db 1, 16
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0070, 70, $0100
|
||||
db 1, 8
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0080, 80, $0100
|
||||
db 1, 5
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0100, 100, $0200
|
||||
db 1, 3
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0160, 160, $0200
|
||||
db 1, 2
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0200, 200, $0300
|
||||
db 1, 64
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0220, 220, $0300
|
||||
db 1, 8
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0230, 230, $0300
|
||||
db 1, 4
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0233, 233, $0300
|
||||
db 1, 3
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0236, 236, $0300
|
||||
db 1, 2
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0251, 251, $0300
|
||||
db 1, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0300, 300, $0400
|
||||
db 2, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0330, 330, $0400
|
||||
db 3, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0360, 360, $0400
|
||||
db 4, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0400, 400, $0500
|
||||
db 5, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0420, 420, $0500
|
||||
db 4, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0450, 450, $0500
|
||||
db 3, 1
|
||||
db 27, 16, 30, 40
|
||||
|
||||
dw $0500, 500, $0600
|
||||
db 20, 1
|
||||
db 27, 10, 30, 25
|
||||
|
||||
dw $0600, 600, $0700
|
||||
db 20, 1
|
||||
db 27, 10, 30, 7
|
||||
|
||||
dw $0700, 700, $0800
|
||||
db 20, 1
|
||||
db 18, 10, 30, 7
|
||||
|
||||
dw $0800, 800, $0900
|
||||
db 20, 1
|
||||
db 14, 10, 30, 1
|
||||
|
||||
dw $0900, 900, $1000
|
||||
db 20, 1
|
||||
db 14, 8, 18, 1
|
||||
|
||||
dw $1000, 1000, $1100
|
||||
db 20, 1
|
||||
db 8, 8, 18, 6
|
||||
|
||||
dw $1100, 1000, $1200
|
||||
db 20, 1
|
||||
db 7, 8, 14, 6
|
||||
|
||||
dw $1200, 1000, $1300
|
||||
db 20, 1
|
||||
db 6, 8, 14, 6
|
||||
|
||||
sTGM3SpeedCurveEnd::
|
||||
dw $FFFF
|
||||
|
||||
sDEATSpeedCurve::
|
||||
dw $0000, 0, $0100
|
||||
db 20, 1
|
||||
|
@ -238,11 +452,11 @@ sDEATSpeedCurve::
|
|||
|
||||
dw $0100, 0, $0200
|
||||
db 20, 1
|
||||
db 14, 12, 25, 6
|
||||
db 14, 12, 25, 1
|
||||
|
||||
dw $0200, 0, $0300
|
||||
db 20, 1
|
||||
db 14, 11, 20, 6
|
||||
db 14, 11, 20, 1
|
||||
|
||||
dw $0300, 0, $0400
|
||||
db 20, 1
|
||||
|
|
|
@ -1821,27 +1821,6 @@ FieldDelay::
|
|||
jr nz, :-
|
||||
ldh [hBravo], a
|
||||
|
||||
; Check if we are in a TGM3 mode and thus need to handle line counts of 3 and 4 differently.
|
||||
ldh a, [hLineClearCt]
|
||||
ld e, a
|
||||
ld a, [wRotModeState]
|
||||
cp a, ROT_MODE_ARSTI
|
||||
jr z, .modifylines
|
||||
jr .applylines
|
||||
.modifylines
|
||||
ldh a, [hLineClearCt]
|
||||
cp a, 1
|
||||
jr z, .applylines
|
||||
cp a, 2
|
||||
jr z, .applylines
|
||||
cp a, 3
|
||||
jr z, .addone
|
||||
inc a
|
||||
.addone
|
||||
inc a
|
||||
ld e, a
|
||||
ldh [hLineClearCt], a
|
||||
|
||||
; Increment the level counter by the amount of lines.
|
||||
.applylines
|
||||
call LevelUp
|
||||
|
|
|
@ -173,9 +173,11 @@ DEF DROP_MODE_COUNT EQU 3
|
|||
|
||||
DEF SCURVE_DMGT EQU 0
|
||||
DEF SCURVE_TGM1 EQU 1
|
||||
DEF SCURVE_DEAT EQU 2
|
||||
DEF SCURVE_SHIR EQU 3
|
||||
DEF SCURVE_COUNT EQU 4
|
||||
DEF SCURVE_TGM2 EQU 2
|
||||
DEF SCURVE_TGM3 EQU 3
|
||||
DEF SCURVE_DEAT EQU 4
|
||||
DEF SCURVE_SHIR EQU 5
|
||||
DEF SCURVE_COUNT EQU 6
|
||||
|
||||
DEF TILE_HIG_MODE_BASE EQU 232
|
||||
DEF HIG_MODE_OFF EQU 0
|
||||
|
|
|
@ -492,12 +492,12 @@ gameOverMode:
|
|||
ldh [hMode], a
|
||||
ld a, LEADY_TIME
|
||||
ldh [hModeCounter], a
|
||||
jr drawStaticInfo
|
||||
jp drawStaticInfo
|
||||
|
||||
; Quit
|
||||
: ldh a, [hBState]
|
||||
cp a, 1
|
||||
jr nz, drawStaticInfo
|
||||
jp nz, drawStaticInfo
|
||||
call SwitchToTitle
|
||||
jp EventLoopPostHandler
|
||||
|
||||
|
@ -514,7 +514,43 @@ pauseMode:
|
|||
; Draw PAUSE all over the field.
|
||||
: ld de, sPause
|
||||
ld hl, wField+(4*10)
|
||||
ld bc, 200
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(6*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(8*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(10*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(12*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(14*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(16*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(18*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(20*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
ld de, sPause
|
||||
ld hl, wField+(22*10)
|
||||
ld bc, 20
|
||||
call UnsafeMemCopy
|
||||
jr drawStaticInfo
|
||||
|
||||
|
|
|
@ -416,23 +416,11 @@ IncrementLevel:
|
|||
ldh [hStartSpeed], a
|
||||
ld a, h
|
||||
ldh [hStartSpeed+1], a
|
||||
jr CheckLevelRange
|
||||
jp CheckLevelRange
|
||||
|
||||
InitSpeedCurve:
|
||||
ld a, [wSpeedCurveState]
|
||||
cp a, 0
|
||||
jr nz, :+
|
||||
ld hl, sSpeedCurve
|
||||
jr .set
|
||||
: cp a, 1
|
||||
jr nz, :+
|
||||
ld hl, sTGM1SpeedCurve
|
||||
jr .set
|
||||
: cp a, 2
|
||||
jr nz, :+
|
||||
ld hl, sDEATSpeedCurve
|
||||
jr .set
|
||||
: ld hl, sSHIRSpeedCurve
|
||||
call GetStart
|
||||
|
||||
.set
|
||||
ld a, l
|
||||
|
@ -445,15 +433,23 @@ InitSpeedCurve:
|
|||
|
||||
GetEnd:
|
||||
ld a, [wSpeedCurveState]
|
||||
cp a, 0
|
||||
cp a, SCURVE_DMGT
|
||||
jr nz, :+
|
||||
ld bc, sSpeedCurveEnd
|
||||
ret
|
||||
: cp a, 1
|
||||
: cp a, SCURVE_TGM1
|
||||
jr nz, :+
|
||||
ld bc, sTGM1SpeedCurveEnd
|
||||
ret
|
||||
: cp a, 2
|
||||
: cp a, SCURVE_TGM2
|
||||
jr nz, :+
|
||||
ld bc, sTGM2SpeedCurveEnd
|
||||
ret
|
||||
: cp a, SCURVE_TGM3
|
||||
jr nz, :+
|
||||
ld bc, sTGM3SpeedCurveEnd
|
||||
ret
|
||||
: cp a, SCURVE_DEAT
|
||||
jr nz, :+
|
||||
ld bc, sDEATSpeedCurveEnd
|
||||
ret
|
||||
|
@ -462,15 +458,23 @@ GetEnd:
|
|||
|
||||
GetStart:
|
||||
ld a, [wSpeedCurveState]
|
||||
cp a, 0
|
||||
cp a, SCURVE_DMGT
|
||||
jr nz, :+
|
||||
ld hl, sSpeedCurve
|
||||
ret
|
||||
: cp a, 1
|
||||
: cp a, SCURVE_TGM1
|
||||
jr nz, :+
|
||||
ld hl, sTGM1SpeedCurve
|
||||
ret
|
||||
: cp a, 2
|
||||
: cp a, SCURVE_TGM2
|
||||
jr nz, :+
|
||||
ld hl, sTGM2SpeedCurve
|
||||
ret
|
||||
: cp a, SCURVE_TGM3
|
||||
jr nz, :+
|
||||
ld hl, sTGM2SpeedCurve
|
||||
ret
|
||||
: cp a, SCURVE_DEAT
|
||||
jr nz, :+
|
||||
ld hl, sDEATSpeedCurve
|
||||
ret
|
||||
|
|
Loading…
Reference in New Issue