diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index 44b0171..99e5892 100644 Binary files a/bin/DMGTRIS.GBC and b/bin/DMGTRIS.GBC differ diff --git a/src/constants.asm b/src/constants.asm index 50896be..553dd2a 100644 --- a/src/constants.asm +++ b/src/constants.asm @@ -134,11 +134,174 @@ sPieceYOffsets:: ; How to draw each piece. Y-offsets of the sprites. ; Speed curve data is defined as follows: ; N blocks of: ; dw BCD_START_LEVEL, START_LEVEL, BCD_NEXT_100_LEVEL_BREAKPOINT -; db GRID_CELLS_PER_MOVE_ON_OVERFLOW, INCREMENT_PER_FRAME +; db GRID_CELLS_PER_MOVE_ON_OVERFLOW, INCREMENT_PER_FRAME (0 means overflow each frame) ; db NORMAL_ARE, LINE_ARE, DAS, LOCK_DELAY, CLEAR_DELAY ; ; Followed by one single: ; dw $FFFF +sDMGTSpeedCurve:: ; Speed curve of the game. + dw $0000, 0, $0100 ; Level 0000 + db 1, 16 + db 25, 15, 14, 30, 40 + + dw $0015, 15, $0100 ; Level 0015 + db 1, 17 + db 25, 15, 14, 30, 40 + + dw $0030, 30, $0100 ; Level 0030 + db 1, 18 + db 25, 15, 14, 30, 40 + + dw $0040, 40, $0100 ; Level 0040 + db 1, 20 + db 25, 15, 14, 30, 40 + + dw $0050, 50, $0100 ; Level 0050 + db 1, 21 + db 25, 15, 14, 30, 40 + + dw $0060, 60, $0100 ; Level 0060 + db 1, 23 + db 25, 15, 14, 30, 40 + + dw $0070, 70, $0100 ; Level 0070 + db 1, 26 + db 25, 15, 14, 30, 40 + + dw $0080, 80, $0100 ; Level 0080 + db 1, 28 + db 25, 15, 14, 30, 40 + + dw $0090, 90, $0100 ; Level 0090 + db 1, 32 + db 25, 15, 14, 30, 40 + + dw $0100, 100, $0200 ; Level 0100 + db 1, 37 + db 25, 15, 14, 30, 40 + + dw $0150, 150, $0200 ; Level 0150 + db 1, 43 + db 25, 15, 14, 30, 40 + + dw $0200, 200, $0300 ; Level 0200 + db 1, 51 + db 25, 15, 14, 30, 40 + + dw $0225, 225, $0300 ; Level 0225 + db 1, 64 + db 25, 15, 14, 30, 40 + + dw $0250, 250, $0300 ; Level 0250 + db 1, 85 + db 25, 15, 14, 30, 40 + + dw $0275, 275, $0300 ; Level 0275 + db 1, 128 + db 25, 15, 14, 30, 40 + + dw $0300, 300, $0400 ; Level 0300 + db 1, $00 + db 25, 7, 14, 30, 32 + + dw $0350, 350, $0350 ; Level 0350 + db 2, $00 + db 25, 7, 14, 30, 32 + + dw $0400, 400, $0400 ; Level 0400 + db 3, $00 + db 25, 7, 14, 30, 32 + + dw $0450, 450, $0500 ; Level 0450 + db 4, $00 + db 25, 7, 14, 30, 32 + + dw $0475, 475, $0500 ; Level 0475 + db 5, $00 + db 25, 7, 14, 30, 32 + + dw $0500, 500, $0600 ; Level 0500 + db 20, $00 + db 25, 6, 14, 30, 24 + + dw $0600, 600, $0700 ; Level 0600 + db 20, $00 + db 25, 6, 8, 30, 24 + + dw $0700, 700, $0800 ; Level 0700 + db 20, $00 + db 20, 6, 8, 30, 24 + + dw $0900, 900, $1000 ; Level 0900 + db 20, $00 + db 16, 4, 6, 25, 16 + + dw $1100, 1100, $1200 ; Level 1100 + db 20, $00 + db 12, 4, 6, 25, 16 + + dw $1200, 1200, $1300 ; Level 1200 + db 20, $00 + db 12, 4, 6, 25, 8 + + dw $1300, 1300, $1400 ; Level 1300 + db 20, $00 + db 10, 4, 6, 20, 7 + + dw $1400, 1400, $1500 ; Level 1400 + db 20, $00 + db 10, 4, 6, 18, 6 + + dw $1500, 1500, $1600 ; Level 1500 + db 20, $00 + db 8, 4, 4, 16, 5 + + dw $1600, 1600, $1700 ; Level 1600 + db 20, $00 + db 8, 4, 4, 14, 4 + + dw $1700, 1700, $1800 ; Level 1700 + db 20, $00 + db 6, 4, 4, 12, 3 + + dw $1800, 1800, $1900 ; Level 1800 + db 20, $00 + db 6, 4, 4, 10, 3 + + dw $1900, 1900, $2000 ; Level 1900 + db 20, $00 + db 4, 4, 4, 8, 3 + + dw $2000, 2000, $2100 ; Level 2000 + db 20, $00 + db 4, 4, 3, 8, 3 + + dw $2500, 2500, $2600 ; Level 2500 + db 20, $00 + db 2, 2, 1, 8, 2 + + dw $3000, 3000, $3100 ; Level 3000 + db 20, $00 + db 1, 1, 1, 8, 1 + + dw $4000, 4000, $4100 ; Level 4000 + db 20, $00 + db 1, 1, 1, 6, 1 + + dw $5000, 5000, $5100 ; Level 5000 + db 20, $00 + db 1, 1, 1, 4, 1 + + dw $6666, 6666, $6700 ; Level 6666 + db 20, $00 + db 1, 1, 1, 2, 1 + + dw $9999, 9999, $9999 ; Level 9999 + db 20, $00 + db 1, 1, 1, 1, 1 + +sDMGTSpeedCurveEnd:: + dw $FFFF ; End. sTGM1SpeedCurve:: dw $0000, 0, $0100 @@ -230,35 +393,35 @@ sTGM1SpeedCurve:: db 30, 30, 16, 30, 41 dw $0251, 251, $0300 - db 1, $FF + db 1, $00 db 30, 30, 16, 30, 41 dw $0300, 300, $0400 - db 2, $FF + db 2, $00 db 30, 30, 16, 30, 41 dw $0330, 330, $0400 - db 3, $FF + db 3, $00 db 30, 30, 16, 30, 41 dw $0360, 360, $0400 - db 4, $FF + db 4, $00 db 30, 30, 16, 30, 41 dw $0400, 400, $0500 - db 5, $FF + db 5, $00 db 30, 30, 16, 30, 41 dw $0420, 420, $0500 - db 4, $FF + db 4, $00 db 30, 30, 16, 30, 41 dw $0450, 450, $0500 - db 3, $FF + db 3, $00 db 30, 30, 16, 30, 41 dw $0500, 500, $0600 - db 20, $FF + db 20, $00 db 30, 30, 16, 30, 41 sTGM1SpeedCurveEnd:: @@ -323,35 +486,35 @@ sCHILSpeedCurve:: db 10, 10, 16, 25, 17 dw $2900, 2900, $3000 - db 1, $FF + db 1, $00 db 10, 10, 16, 25, 17 dw $3333, 3333, $3400 - db 2, $FF + db 2, $00 db 10, 10, 12, 25, 17 dw $4444, 4444, $4500 - db 3, $FF + db 3, $00 db 10, 10, 12, 25, 17 dw $5555, 5555, $5600 - db 4, $FF + db 4, $00 db 10, 10, 12, 25, 17 dw $6666, 6666, $6700 - db 5, $FF + db 5, $00 db 10, 10, 12, 25, 17 dw $7777, 7777, $7800 - db 20, $FF + db 20, $00 db 10, 10, 8, 25, 17 dw $8888, 8888, $8900 - db 20, $FF + db 20, $00 db 10, 10, 6, 18, 17 dw $9999, 9999, $9999 - db 20, $FF + db 20, $00 db 5, 5, 6, 14, 10 sCHILSpeedCurveEnd:: @@ -448,63 +611,63 @@ sTGM3SpeedCurve:: db 27, 27, 16, 30, 40 dw $0251, 251, $0300 - db 1, $FF + db 1, $00 db 27, 27, 16, 30, 40 dw $0300, 300, $0400 - db 2, $FF + db 2, $00 db 27, 27, 16, 30, 40 dw $0330, 330, $0400 - db 3, $FF + db 3, $00 db 27, 27, 16, 30, 40 dw $0360, 360, $0400 - db 4, $FF + db 4, $00 db 27, 27, 16, 30, 40 dw $0400, 400, $0500 - db 5, $FF + db 5, $00 db 27, 27, 16, 30, 40 dw $0420, 420, $0500 - db 4, $FF + db 4, $00 db 27, 27, 16, 30, 40 dw $0450, 450, $0500 - db 3, $FF + db 3, $00 db 27, 27, 16, 30, 40 dw $0500, 500, $0600 - db 20, $FF + db 20, $00 db 27, 27, 10, 30, 25 dw $0600, 600, $0700 - db 20, $FF + db 20, $00 db 27, 18, 10, 30, 16 dw $0700, 700, $0800 - db 20, $FF + db 20, $00 db 18, 14, 10, 30, 12 dw $0800, 800, $0900 - db 20, $FF + db 20, $00 db 14, 8, 10, 30, 6 dw $0900, 900, $1000 - db 20, $FF + db 20, $00 db 14, 8, 8, 17, 6 dw $1000, 1000, $1100 - db 20, $FF + db 20, $00 db 8, 8, 8, 17, 6 dw $1100, 1000, $1200 - db 20, $FF + db 20, $00 db 7, 7, 8, 15, 6 dw $1200, 1000, $1300 - db 20, $FF + db 20, $00 db 6, 6, 8, 15, 6 sTGM3SpeedCurveEnd:: @@ -512,27 +675,27 @@ sTGM3SpeedCurveEnd:: sDEATSpeedCurve:: dw $0000, 0, $0100 - db 20, $FF + db 20, $00 db 18, 14, 12, 30, 12 dw $0100, 0, $0200 - db 20, $FF + db 20, $00 db 14, 8, 12, 26, 6 dw $0200, 0, $0300 - db 20, $FF + db 20, $00 db 14, 8, 11, 22, 6 dw $0300, 0, $0400 - db 20, $FF + db 20, $00 db 8, 8, 10, 18, 6 dw $0400, 0, $0500 - db 20, $FF + db 20, $00 db 7, 7, 8, 15, 5 dw $0500, 0, $0600 - db 20, $FF + db 20, $00 db 6, 6, 8, 15, 4 sDEATSpeedCurveEnd:: @@ -540,202 +703,36 @@ sDEATSpeedCurveEnd:: sSHIRSpeedCurve:: dw $0000, 0, $0100 - db 20, $FF + db 20, $00 db 12, 8, 10, 18, 6 dw $0100, 100, $0200 - db 20, $FF + db 20, $00 db 12, 7, 8, 18, 5 dw $0200, 200, $0300 - db 20, $FF + db 20, $00 db 12, 6, 8, 17, 4 dw $0300, 300, $0400 - db 20, $FF + db 20, $00 db 6, 6, 8, 15, 4 dw $0500, 500, $0600 - db 20, $FF + db 20, $00 db 6, 5, 6, 13, 3 dw $1100, 1100, $1200 - db 20, $FF + db 20, $00 db 6, 5, 6, 10, 3 dw $1200, 1200, $1300 - db 20, $FF + db 20, $00 db 6, 5, 6, 8, 3 sSHIRSpeedCurveEnd:: dw $FFFF -sDMGTSpeedCurve:: ; Speed curve of the game. - dw $0000, 0, $0100 ; Level 0000 - db 1, 16 - db 25, 15, 14, 30, 40 - - dw $0015, 15, $0100 ; Level 0015 - db 1, 17 - db 25, 15, 14, 30, 40 - - dw $0030, 30, $0100 ; Level 0030 - db 1, 18 - db 25, 15, 14, 30, 40 - - dw $0040, 40, $0100 ; Level 0040 - db 1, 20 - db 25, 15, 14, 30, 40 - - dw $0050, 50, $0100 ; Level 0050 - db 1, 21 - db 25, 15, 14, 30, 40 - - dw $0060, 60, $0100 ; Level 0060 - db 1, 23 - db 25, 15, 14, 30, 40 - - dw $0070, 70, $0100 ; Level 0070 - db 1, 26 - db 25, 15, 14, 30, 40 - - dw $0080, 80, $0100 ; Level 0080 - db 1, 28 - db 25, 15, 14, 30, 40 - - dw $0090, 90, $0100 ; Level 0090 - db 1, 32 - db 25, 15, 14, 30, 40 - - dw $0100, 100, $0200 ; Level 0100 - db 1, 37 - db 25, 15, 14, 30, 40 - - dw $0150, 150, $0200 ; Level 0150 - db 1, 43 - db 25, 15, 14, 30, 40 - - dw $0200, 200, $0300 ; Level 0200 - db 1, 51 - db 25, 15, 14, 30, 40 - - dw $0225, 225, $0300 ; Level 0225 - db 1, 64 - db 25, 15, 14, 30, 40 - - dw $0250, 250, $0300 ; Level 0250 - db 1, 85 - db 25, 15, 14, 30, 40 - - dw $0275, 275, $0300 ; Level 0275 - db 1, 128 - db 25, 15, 14, 30, 40 - - dw $0300, 300, $0400 ; Level 0300 - db 1, $FF - db 25, 7, 14, 30, 32 - - dw $0350, 350, $0350 ; Level 0350 - db 2, $FF - db 25, 7, 14, 30, 32 - - dw $0400, 400, $0400 ; Level 0400 - db 3, $FF - db 25, 7, 14, 30, 32 - - dw $0450, 450, $0500 ; Level 0450 - db 4, $FF - db 25, 7, 14, 30, 32 - - dw $0475, 475, $0500 ; Level 0475 - db 5, $FF - db 25, 7, 14, 30, 32 - - dw $0500, 500, $0600 ; Level 0500 - db 20, $FF - db 25, 6, 14, 30, 24 - - dw $0600, 600, $0700 ; Level 0600 - db 20, $FF - db 25, 6, 8, 30, 24 - - dw $0700, 700, $0800 ; Level 0700 - db 20, $FF - db 20, 6, 8, 30, 24 - - dw $0900, 900, $1000 ; Level 0900 - db 20, $FF - db 16, 4, 6, 25, 16 - - dw $1100, 1100, $1200 ; Level 1100 - db 20, $FF - db 12, 4, 6, 25, 16 - - dw $1200, 1200, $1300 ; Level 1200 - db 20, $FF - db 12, 4, 6, 25, 8 - - dw $1300, 1300, $1400 ; Level 1300 - db 20, $FF - db 10, 4, 6, 20, 7 - - dw $1400, 1400, $1500 ; Level 1400 - db 20, $FF - db 10, 4, 6, 18, 6 - - dw $1500, 1500, $1600 ; Level 1500 - db 20, $FF - db 8, 4, 4, 16, 5 - - dw $1600, 1600, $1700 ; Level 1600 - db 20, $FF - db 8, 4, 4, 14, 4 - - dw $1700, 1700, $1800 ; Level 1700 - db 20, $FF - db 6, 4, 4, 12, 3 - - dw $1800, 1800, $1900 ; Level 1800 - db 20, $FF - db 6, 4, 4, 10, 3 - - dw $1900, 1900, $2000 ; Level 1900 - db 20, $FF - db 4, 4, 4, 8, 3 - - dw $2000, 2000, $2100 ; Level 2000 - db 20, $FF - db 4, 4, 3, 8, 3 - - dw $2500, 2500, $2600 ; Level 2500 - db 20, $FF - db 2, 2, 1, 8, 2 - - dw $3000, 3000, $3100 ; Level 3000 - db 20, $FF - db 1, 1, 1, 8, 1 - - dw $4000, 4000, $4100 ; Level 4000 - db 20, $FF - db 1, 1, 1, 6, 1 - - dw $5000, 5000, $5100 ; Level 5000 - db 20, $FF - db 1, 1, 1, 4, 1 - - dw $6666, 6666, $6700 ; Level 6666 - db 20, $FF - db 1, 1, 1, 2, 1 - - dw $9999, 9999, $9999 ; Level 9999 - db 20, $FF - db 1, 1, 1, 1, 1 - -sDMGTSpeedCurveEnd:: - dw $FFFF ; End. - - - sPieceFastRotationStates:: ; I db 14, 1, 1, 1 diff --git a/src/field.asm b/src/field.asm index 821be33..12b2e62 100644 --- a/src/field.asm +++ b/src/field.asm @@ -1264,7 +1264,7 @@ FieldProcess:: ; Gravity? : ldh a, [hCurrentFractionalGravity] - cp a, $FF + cp a, $00 jr z, :+ ld b, a ldh a, [hGravityCtr] diff --git a/src/level.asm b/src/level.asm index 54aa2dc..250fd43 100644 --- a/src/level.asm +++ b/src/level.asm @@ -361,7 +361,7 @@ DoSpeedUp: ret z ld a, 20 ldh [hCurrentIntegerGravity], a - ld a, $FF + ld a, $00 ldh [hCurrentFractionalGravity], a ret