This commit is contained in:
Randy Thiemann 2024-02-12 04:44:13 +01:00
parent 922507263e
commit d9456244e0
9 changed files with 2880 additions and 2776 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -2037,7 +2037,7 @@ FieldDelay::
ldh a, [hLineClearCt] ldh a, [hLineClearCt]
or a, a or a, a
jr z, .lineclear ; If not, just skip the phase. jp z, .lineclear ; If not, just skip the phase.
; There were line clears! Clear the level counter breakpoint. ; There were line clears! Clear the level counter breakpoint.
xor a, a xor a, a
@ -2056,6 +2056,29 @@ FieldDelay::
; Increment the level counter by the amount of lines. ; Increment the level counter by the amount of lines.
.applylines .applylines
ldh a, [hLineClearCt] ldh a, [hLineClearCt]
ld b, a
ld a, [wSpeedCurveState]
cp a, SCURVE_TGM3
jr z, .addbonus
cp a, SCURVE_SHIR
jr z, .addbonus
ld a, b
jr .neither
.addbonus
ld a, b
cp a, 3
jr z, .istriple
cp a, 4
jr z, .istetris
jr .neither
.istriple
inc a
jr .neither
.istetris
inc a
inc a
jr .neither
.neither
ld e, a ld e, a
call LevelUp call LevelUp
@ -4296,7 +4319,7 @@ BigFieldDelay::
ldh a, [hLineClearCt] ldh a, [hLineClearCt]
or a, a or a, a
jr z, .lineclear ; If not, just skip the phase. jp z, .lineclear ; If not, just skip the phase.
; There were line clears! Clear the level counter breakpoint. ; There were line clears! Clear the level counter breakpoint.
xor a, a xor a, a
@ -4315,6 +4338,29 @@ BigFieldDelay::
; Increment the level counter by the amount of lines. ; Increment the level counter by the amount of lines.
.applylines .applylines
ldh a, [hLineClearCt] ldh a, [hLineClearCt]
ld b, a
ld a, [wSpeedCurveState]
cp a, SCURVE_TGM3
jr z, .addbonus
cp a, SCURVE_SHIR
jr z, .addbonus
ld a, b
jr .neither
.addbonus
ld a, b
cp a, 3
jr z, .istriple
cp a, 4
jr z, .istetris
jr .neither
.istriple
inc a
jr .neither
.istetris
inc a
inc a
jr .neither
.neither
ld e, a ld e, a
call LevelUp call LevelUp

View File

@ -855,7 +855,7 @@ UpdateGradeTGM1:
; Return if B < D. ; Return if B < D.
ld a, b ld a, b
cp a, d cp a, d
ret c jr c, .check300
; We can confidently increase the grade if B > D. ; We can confidently increase the grade if B > D.
jr nz, .increasegrade jr nz, .increasegrade
@ -1231,6 +1231,11 @@ UpdateGradeSHIR:
UpdateGradeTGM3: UpdateGradeTGM3:
; Are we in the Staff Roll?
ld a, [wInStaffRoll]
cp a, $FF
jp z, TGM3StaffRollGradeUpdate
; First things first, Update our grade points. ; First things first, Update our grade points.
.GradePoints .GradePoints
; Load the Table address to HL. ; Load the Table address to HL.
@ -1273,7 +1278,12 @@ UpdateGradeTGM3:
; There are some multipliers to help us increase our grade faster ; There are some multipliers to help us increase our grade faster
ld hl, sTGM3ComboMultipliers ld hl, sTGM3ComboMultipliers
ld a, [hComboCt] ; Example: 3 ld a, [hComboCt] ; Example: 3
cp a, 0 cp a, 0 ; If we got no combo, skip all this part
jr z, .levelmultiplier
cp a, 11 ; If the combo is greater than 10, make it 10
jr c, .notover10
ld a, 10
.notover10
ld d, a ; ld d, 3 ld d, a ; ld d, 3
ld b, 5 ld b, 5
ld a, b ; ld a, 5 ld a, b ; ld a, 5
@ -1281,12 +1291,14 @@ UpdateGradeTGM3:
: add a, b ; 5+5 = 10 ; 10+5 = 15 : add a, b ; 5+5 = 10 ; 10+5 = 15
dec d dec d
jr nz, :- ; go back if d isn't 0 jr nz, :- ; go back if d isn't 0
sub a, 4 ; Decrease 4 so we don't get the pointer wrong
ld b, a ; ld b, 15 ld b, a ; ld b, 15
ld a, [hLineClearCt] ld a, [hLineClearCt]
cp a, 0 ; If no lines were cleared, we don't need to do anything, just continue cp a, 0 ; If no lines were cleared, we don't need to do anything, just continue
jr z, .levelmultiplier jr z, .levelmultiplier
add a, b add a, b
ld b, 0 ld b, 0
dec a
ld c, a ld c, a
add hl, bc add hl, bc
ld a, [hl] ; Now we got our multiplier!, let's apply it. ld a, [hl] ; Now we got our multiplier!, let's apply it.
@ -1651,7 +1663,11 @@ TGM3REGRETHandlerB: ; Check if we took too much time to complete a section
ret ; Done ret ; Done
TGM3StaffRollGradeUpdate: TGM3StaffRollGradeUpdate::
; Is the player already a GM?
ld a, [wDisplayedGrade]
cp a, GRADE_GM
ret z ; If so, return
; Make HL Point to the Staffroll Table ; Make HL Point to the Staffroll Table
ld hl, sTGM3StaffrollGrading ld hl, sTGM3StaffrollGrading
; Get the offset, if no lines were cleared, return ; Get the offset, if no lines were cleared, return
@ -1677,6 +1693,11 @@ TGM3StaffRollGradeUpdate:
ld [wSubgrade], a ld [wSubgrade], a
ld a, [wDisplayedGrade] ld a, [wDisplayedGrade]
inc a inc a
; will the grade be S10?
cp a, GRADE_S10
jr nz, .nots10 ;If not, continue as normal
ld a, GRADE_M1
.nots10
ld [wDisplayedGrade], a ld [wDisplayedGrade], a
ret ret

View File

@ -1014,8 +1014,8 @@ sTitleTiles::
DB $00,$00,$01,$00,$00,$00,$00,$00 DB $00,$00,$01,$00,$00,$00,$00,$00
DB $80,$80,$C0,$C0,$60,$60,$60,$60 DB $80,$80,$C0,$C0,$60,$60,$60,$60
DB $F0,$F0,$F0,$F0,$E0,$E0,$C0,$C0 DB $F0,$F0,$F0,$F0,$E0,$E0,$C0,$C0
DB $00,$00,$87,$00,$81,$00,$81,$00 DB $00,$00,$87,$00,$85,$00,$87,$00 ; Version
DB $81,$00,$D1,$00,$00,$00,$00,$00 DB $85,$00,$D7,$00,$00,$00,$00,$00 ; Version
DB $C0,$C0,$F0,$F0,$FC,$FC,$FF,$FF DB $C0,$C0,$F0,$F0,$FC,$FC,$FF,$FF
DB $FC,$FC,$F0,$F0,$C0,$C0,$00,$00 DB $FC,$FC,$F0,$F0,$C0,$C0,$00,$00
DB $C0,$00,$F0,$00,$FC,$00,$FF,$00 DB $C0,$00,$F0,$00,$FC,$00,$FF,$00

Binary file not shown.

View File

@ -486,6 +486,21 @@ GamePlayEventLoopHandlerB::
ld a, $FF ld a, $FF
ld [wGameOverIgnoreInput], a ld [wGameOverIgnoreInput], a
; Are we in the Staff Roll?
ld a, [wInStaffRoll]
cp a, $FF
jp nz, .didnotfinish ; No we aren't
; Yes, we are
; Did the player survive the staff roll?
ld a, [wCountDownZero]
cp a, $FF
jr nz, .didnotfinish ; If not, continue
; If it did, award the clear points
ld a, 5
ld [hLineClearCt], a
call TGM3StaffRollGradeUpdate
.didnotfinish
; Is it just a regular game over? ; Is it just a regular game over?
ld a, [wKillScreenActive] ld a, [wKillScreenActive]
cp a, $FF cp a, $FF