Add d-pad filtering and improve score rendering.
This commit is contained in:
parent
1695175cb1
commit
4e0aa5b374
|
@ -67,6 +67,14 @@ Whether you want instant-drop gravity to be active at any level.
|
|||
### Start Level
|
||||
Choose any of the speed breakpoints to start the game at.
|
||||
|
||||
### D-Pad Filter
|
||||
Choose which D-Pad buttons get priority.
|
||||
- DLRU: Down > Left/Right > Up
|
||||
- ULRD: Up > Left/Right > Down
|
||||
- LRUD: Left/Right > Up/Down
|
||||
- UDLR: Up/Down > Left/Right
|
||||
- NONE: No filtering or priority.
|
||||
|
||||
|
||||
## Scoring
|
||||
After each piece is dropped, a check is made:
|
||||
|
|
BIN
bin/DMGTRIS.GBC
BIN
bin/DMGTRIS.GBC
Binary file not shown.
1695
bin/DMGTRIS.map
1695
bin/DMGTRIS.map
File diff suppressed because it is too large
Load Diff
Binary file not shown.
1427
bin/DMGTRIS.sym
1427
bin/DMGTRIS.sym
File diff suppressed because it is too large
Load Diff
|
@ -440,13 +440,13 @@ UpdateGradeDMGT::
|
|||
; What is our single/double/triple multiplier?
|
||||
.combomult
|
||||
ld a, [hComboCt]
|
||||
cp a, 10
|
||||
jr nc, .combo10
|
||||
cp a, 5
|
||||
jr nc, .combo5
|
||||
cp a, 13
|
||||
jr nc, .combo13
|
||||
cp a, 8
|
||||
jr nc, .combo8
|
||||
jr .combo1
|
||||
|
||||
.combo10
|
||||
.combo13
|
||||
ld a, 2
|
||||
ld [wSMult], a
|
||||
ld a, 3
|
||||
|
@ -455,7 +455,7 @@ UpdateGradeDMGT::
|
|||
ld [wTMult], a
|
||||
jr .prelevel
|
||||
|
||||
.combo5
|
||||
.combo8
|
||||
ld a, 1
|
||||
ld [wSMult], a
|
||||
ld a, 2
|
||||
|
|
|
@ -293,6 +293,13 @@ DEF HIG_MODE_OFF EQU 0
|
|||
DEF HIG_MODE_ON EQU 1
|
||||
DEF HIG_MODE_COUNT EQU 2
|
||||
|
||||
DEF FILTER_MODE_DLRU EQU 0
|
||||
DEF FILTER_MODE_ULRD EQU 1
|
||||
DEF FILTER_MODE_LRUD EQU 2
|
||||
DEF FILTER_MODE_UDLR EQU 3
|
||||
DEF FILTER_MODE_NONE EQU 4
|
||||
DEF FILTER_MODE_COUNT EQU 5
|
||||
|
||||
; VRAM Offsets for title screen tiles
|
||||
DEF TITLE_OPTIONS EQU 7
|
||||
DEF TITLE_OPTION_0 EQU $9900
|
||||
|
@ -432,7 +439,7 @@ DEF TITLE_MAIN_SEL_RECORDS EQU 4
|
|||
DEF TITLE_MAIN_SEL_CREDITS EQU 5
|
||||
|
||||
DEF TITLE_SETTINGS_OPTION_BASE EQU $9840
|
||||
DEF TITLE_SETTINGS_OPTIONS EQU 8
|
||||
DEF TITLE_SETTINGS_OPTIONS EQU 9
|
||||
DEF TITLE_SETTINGS_BUTTONS EQU $984F
|
||||
DEF TITLE_SETTINGS_RNG EQU $986F
|
||||
DEF TITLE_SETTINGS_ROT EQU $988F
|
||||
|
@ -440,8 +447,9 @@ DEF TITLE_SETTINGS_DROP EQU $98AF
|
|||
DEF TITLE_SETTINGS_SCURVE EQU $98CF
|
||||
DEF TITLE_SETTINGS_HIG EQU $98EF
|
||||
DEF TITLE_SETTINGS_START EQU $990F
|
||||
DEF TITLE_SETTINGS_FILTER EQU $992F
|
||||
DEF TITLE_SETTINGS_TETRY EQU $99C0
|
||||
DEF TITLE_SETTINGS_SEL_BACK EQU 7
|
||||
DEF TITLE_SETTINGS_SEL_BACK EQU 8
|
||||
|
||||
DEF TITLE_PROFILE_OPTION_BASE EQU $9842
|
||||
DEF TITLE_PROFILE_OPTIONS EQU 6
|
||||
|
|
|
@ -31,6 +31,7 @@ hAState:: ds 1
|
|||
hBState:: ds 1
|
||||
hStartState:: ds 1
|
||||
hSelectState:: ds 1
|
||||
hFilterMode:: ds 1
|
||||
|
||||
|
||||
|
||||
|
@ -195,18 +196,92 @@ GetInput::
|
|||
|
||||
; If left or right are pressed, zero out up and down.
|
||||
.priorities
|
||||
ldh a, [hFilterMode]
|
||||
ld b, a
|
||||
add a, b
|
||||
add a, b
|
||||
ld c, a
|
||||
ld b, 0
|
||||
ld hl, .jumps
|
||||
add hl, bc
|
||||
jp hl
|
||||
|
||||
.jumps
|
||||
jp .dlru
|
||||
jp .ulrd
|
||||
jp .lrud
|
||||
jp .udlr
|
||||
no_jump
|
||||
|
||||
.dlru
|
||||
ldh a, [hDownState]
|
||||
cp a, 0
|
||||
jr nz, .zerolru
|
||||
|
||||
ldh a, [hLeftState]
|
||||
cp a, 0
|
||||
jr nz, .zeroud
|
||||
ldh a, [hRightState]
|
||||
cp a, 0
|
||||
jr nz, .zero
|
||||
ret z
|
||||
jr .zeroud
|
||||
|
||||
.ulrd
|
||||
ldh a, [hUpState]
|
||||
cp a, 0
|
||||
jr nz, .zerolrd
|
||||
|
||||
ldh a, [hLeftState]
|
||||
cp a, 0
|
||||
jr nz, .zeroud
|
||||
ldh a, [hRightState]
|
||||
cp a, 0
|
||||
ret z
|
||||
jr .zeroud
|
||||
|
||||
.lrud
|
||||
ldh a, [hRightState]
|
||||
cp a, 0
|
||||
jr nz, .zeroud
|
||||
ldh a, [hLeftState]
|
||||
cp a, 0
|
||||
ret z
|
||||
jr .zeroud
|
||||
|
||||
.zero
|
||||
.udlr
|
||||
ldh a, [hUpState]
|
||||
cp a, 0
|
||||
jr nz, .zerolr
|
||||
ldh a, [hLeftState]
|
||||
cp a, 0
|
||||
ret z
|
||||
jr .zerolr
|
||||
|
||||
.zeroud
|
||||
xor a, a
|
||||
ldh [hUpState], a
|
||||
ldh [hDownState], a
|
||||
ret
|
||||
|
||||
.zerolr
|
||||
xor a, a
|
||||
ldh [hLeftState], a
|
||||
ldh [hRightState], a
|
||||
ret
|
||||
|
||||
.zerolrd
|
||||
xor a, a
|
||||
ldh [hLeftState], a
|
||||
ldh [hRightState], a
|
||||
ldh [hDownState], a
|
||||
ret
|
||||
|
||||
.zerolru
|
||||
xor a, a
|
||||
ldh [hLeftState], a
|
||||
ldh [hRightState], a
|
||||
ldh [hUpState], a
|
||||
ret
|
||||
|
||||
|
||||
ENDC
|
||||
|
|
Binary file not shown.
|
@ -75,6 +75,13 @@ sHIGMode::
|
|||
sDisabled::
|
||||
db "----"
|
||||
|
||||
sFilterMode::
|
||||
db "DLRU"
|
||||
db "ULRD"
|
||||
db "LRUD"
|
||||
db "UDLR"
|
||||
db "NONE"
|
||||
|
||||
sTetryButtons::
|
||||
db "THIS OPTION WILL"
|
||||
db "CHANGE WHICH WAY"
|
||||
|
@ -117,6 +124,12 @@ sTetrySTART::
|
|||
db "START IN THE SP-"
|
||||
db "EED CURVE "
|
||||
|
||||
sTetryFILTER::
|
||||
db "THIS OPTION WILL"
|
||||
db "DETERMINE WHICH "
|
||||
db "D-PAD BUTTONS "
|
||||
db "HAVE PRIORITY "
|
||||
|
||||
sTetryEXIT::
|
||||
db "OH OKAY THEN- "
|
||||
db "BYE BYE! "
|
||||
|
@ -224,10 +237,10 @@ sTitleScreenSettingsMap::
|
|||
DB $0C,$1D,$1F,$01,$17,$10,$21,$10,$17,$01
|
||||
DB $28,$01,$01,$01,$01,$29,$00,$00,$00,$00
|
||||
DB $00,$00,$00,$00,$00,$00,$00,$00,$5D,$01
|
||||
DB $0D,$0C,$0E,$16,$6F,$01,$01,$01,$01,$01
|
||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$00,$00
|
||||
DB $0F,$2A,$1B,$0C,$0F,$01,$11,$14,$17,$1F
|
||||
DB $10,$1D,$28,$01,$01,$01,$01,$29,$00,$00
|
||||
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||
DB $5D,$01,$0D,$0C,$0E,$16,$6F,$01,$01,$01
|
||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
|
||||
|
|
16
src/sram.asm
16
src/sram.asm
|
@ -34,7 +34,8 @@ rDropModeState\1:: ds 1
|
|||
rSpeedCurveState\1:: ds 1
|
||||
rAlways20GState\1:: ds 1
|
||||
rSelectedStartLevel\1:: ds 2
|
||||
rUnused\1:: ds (64-11)
|
||||
rFilterMode\1:: ds 1
|
||||
rUnused\1:: ds (64-12)
|
||||
ENDU
|
||||
ENDM
|
||||
|
||||
|
@ -53,7 +54,8 @@ rDropModeState:: ds 1
|
|||
rSpeedCurveState:: ds 1
|
||||
rAlways20GState:: ds 1
|
||||
rSelectedStartLevel:: ds 2
|
||||
rUnused:: ds (PROFILE_SIZE - 11) ; 11 = sum of the above
|
||||
rFilterMode:: ds 1
|
||||
rUnused:: ds (PROFILE_SIZE - 12) ; 12 = sum of the above
|
||||
ENDU
|
||||
PROFILE 0
|
||||
PROFILE 1
|
||||
|
@ -121,6 +123,8 @@ TrustedLoad:
|
|||
ld [wProfileName+1], a
|
||||
ld a, [rProfileName+2]
|
||||
ld [wProfileName+2], a
|
||||
ld a, [rFilterMode]
|
||||
ldh [hFilterMode], a
|
||||
|
||||
; Restore the start level.
|
||||
ld b, BANK_OTHER
|
||||
|
@ -269,6 +273,10 @@ InitializeSRAM:
|
|||
ld [rAlways20GState], a
|
||||
ld [wAlways20GState], a
|
||||
|
||||
ld a, FILTER_MODE_DLRU
|
||||
ld [rFilterMode], a
|
||||
ldh [hFilterMode], a
|
||||
|
||||
; Set to the default start level.
|
||||
ld hl, sDMGTSpeedCurve
|
||||
ld a, l
|
||||
|
@ -662,6 +670,10 @@ ResetProfile::
|
|||
ld [rAlways20GState], a
|
||||
ld [wAlways20GState], a
|
||||
|
||||
ld a, FILTER_MODE_DLRU
|
||||
ld [rFilterMode], a
|
||||
ldh [hFilterMode], a
|
||||
|
||||
; Set to the default start level.
|
||||
ld hl, sDMGTSpeedCurve
|
||||
ld a, l
|
||||
|
|
|
@ -355,7 +355,10 @@ SwitchTitleMode:
|
|||
ldh [hSelectState], a
|
||||
ld [wDisplayingScoreMode], a
|
||||
ld [wScoreFlipTimer], a
|
||||
jp RenderScores
|
||||
call RenderScores
|
||||
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
|
||||
ldh [rLCDC], a
|
||||
ret
|
||||
|
||||
.switchCredits
|
||||
ld de, sTitleScreenCreditsMap
|
||||
|
@ -875,6 +878,20 @@ TitleVBlankHandlerB:
|
|||
ld bc, 4
|
||||
call UnsafeMemCopy
|
||||
|
||||
.filter
|
||||
ld b, 0
|
||||
ldh a, [hFilterMode]
|
||||
sla a
|
||||
sla a
|
||||
ld c, a
|
||||
ld hl, sFilterMode
|
||||
add hl, bc
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, TITLE_SETTINGS_FILTER
|
||||
ld bc, 4
|
||||
call UnsafeMemCopy
|
||||
|
||||
; START level.
|
||||
call DrawSpeedSettings
|
||||
|
||||
|
@ -1030,6 +1047,7 @@ SettingsHandleLeft:
|
|||
jp .curve
|
||||
jp .hig
|
||||
jp DecrementLevel
|
||||
jp .filter
|
||||
no_jump
|
||||
|
||||
.buttons
|
||||
|
@ -1112,6 +1130,20 @@ SettingsHandleLeft:
|
|||
ld [rAlways20GState], a
|
||||
ret
|
||||
|
||||
.filter
|
||||
ldh a, [hFilterMode]
|
||||
cp a, 0
|
||||
jr z, :+
|
||||
dec a
|
||||
ldh [hFilterMode], a
|
||||
ld [rFilterMode], a
|
||||
ret
|
||||
: ld a, FILTER_MODE_COUNT-1
|
||||
ldh [hFilterMode], a
|
||||
ld [rFilterMode], a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
SettingsHandleRight:
|
||||
ld a, [wSelected]
|
||||
|
@ -1135,6 +1167,7 @@ SettingsHandleRight:
|
|||
jp .curve
|
||||
jp .hig
|
||||
jp IncrementLevel
|
||||
jp .filter
|
||||
no_jump
|
||||
|
||||
.buttons
|
||||
|
@ -1217,6 +1250,20 @@ SettingsHandleRight:
|
|||
ld [rAlways20GState], a
|
||||
ret
|
||||
|
||||
.filter
|
||||
ldh a, [hFilterMode]
|
||||
cp a, FILTER_MODE_COUNT-1
|
||||
jr z, :+
|
||||
inc a
|
||||
ldh [hFilterMode], a
|
||||
ld [rFilterMode], a
|
||||
ret
|
||||
: xor a, a
|
||||
ldh [hFilterMode], a
|
||||
ld [rFilterMode], a
|
||||
ret
|
||||
|
||||
|
||||
ProfileHandleA:
|
||||
ld a, [wSelected]
|
||||
cp a, TITLE_PROFILE_SEL_BACK
|
||||
|
@ -1571,14 +1618,6 @@ RecordsHandleSelect:
|
|||
jp RenderScores
|
||||
|
||||
RenderScores:
|
||||
; Turn the screen off if it's on.
|
||||
ldh a, [rLCDC]
|
||||
and LCDCF_ON
|
||||
jr z, :+ ; Screen is already off.
|
||||
wait_vram
|
||||
xor a, a
|
||||
ldh [rLCDC], a
|
||||
|
||||
; Draw the mode.
|
||||
: ld b, 0
|
||||
ld a, [wSelected]
|
||||
|
@ -1591,7 +1630,7 @@ RenderScores:
|
|||
ld e, l
|
||||
ld hl, TITLE_RECORDS_MODE
|
||||
ld bc, 4
|
||||
call UnsafeMemCopy
|
||||
call SafeMemCopy
|
||||
|
||||
; Get the correct speed curve.
|
||||
ld a, [wSelected]
|
||||
|
@ -1613,35 +1652,59 @@ RenderScores:
|
|||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
|
||||
; Go render the name.
|
||||
jr .name\@
|
||||
|
@ -1659,29 +1722,53 @@ RenderScores:
|
|||
|
||||
; Render it.
|
||||
ld a, "L"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, "V"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, "L"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, 115
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, "0"
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
|
||||
; And jump back to the name.
|
||||
push hl
|
||||
|
@ -1702,13 +1789,22 @@ RenderScores:
|
|||
; Render name.
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
|
||||
; Jump to tells.
|
||||
ld bc, 10
|
||||
|
@ -1721,28 +1817,46 @@ RenderScores:
|
|||
jr nz, .grade\@
|
||||
.nograde\@
|
||||
ld a, 197
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
jr .postgrade\@
|
||||
.grade\@
|
||||
add a, TITLE_RECORDS_GRADE_BASE
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
.postgrade\@
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, TITLE_RECORDS_RNG_BASE
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, TITLE_RECORDS_ROT_BASE
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, TITLE_RECORDS_DROP_BASE
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
add a, TITLE_RECORDS_HIG_BASE
|
||||
ld [hl+], a
|
||||
ld b, a
|
||||
wait_vram
|
||||
ld [hl], b
|
||||
inc hl
|
||||
|
||||
; Jump to next line.
|
||||
push hl
|
||||
|
@ -1757,8 +1871,6 @@ RenderScores:
|
|||
add hl, bc
|
||||
ENDR
|
||||
|
||||
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
|
||||
ldh [rLCDC], a
|
||||
ret
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue