Big challenge rolls.
This commit is contained in:
		
							parent
							
								
									100d40c4e6
								
							
						
					
					
						commit
						f4429139d4
					
				
							
								
								
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3272
									
								
								bin/DMGTRIS.map
								
								
								
								
							
							
						
						
									
										3272
									
								
								bin/DMGTRIS.map
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2920
									
								
								bin/DMGTRIS.sym
								
								
								
								
							
							
						
						
									
										2920
									
								
								bin/DMGTRIS.sym
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -237,6 +237,26 @@ FromBackupField::
 | 
				
			||||||
    ld bc, 10*24
 | 
					    ld bc, 10*24
 | 
				
			||||||
    jp UnsafeMemCopy
 | 
					    jp UnsafeMemCopy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GoBig::
 | 
				
			||||||
 | 
					    ld hl, wWideBlittedField
 | 
				
			||||||
 | 
					    ld bc, 10*22
 | 
				
			||||||
 | 
					    ld d, TILE_BLANK
 | 
				
			||||||
 | 
					    call UnsafeMemSet
 | 
				
			||||||
 | 
					    ld hl, wField
 | 
				
			||||||
 | 
					    ld bc, 10*24
 | 
				
			||||||
 | 
					    ld d, 0
 | 
				
			||||||
 | 
					    call UnsafeMemSet
 | 
				
			||||||
 | 
					    DEF row = 0
 | 
				
			||||||
 | 
					    REPT 14
 | 
				
			||||||
 | 
					        ld hl, wField + (row*10)
 | 
				
			||||||
 | 
					        ld bc, 5
 | 
				
			||||||
 | 
					        ld d, TILE_FIELD_EMPTY
 | 
				
			||||||
 | 
					        call UnsafeMemSet
 | 
				
			||||||
 | 
					        DEF row += 1
 | 
				
			||||||
 | 
					    ENDR
 | 
				
			||||||
 | 
					    ld a, STATE_GAMEPLAY_BIG
 | 
				
			||||||
 | 
					    ldh [hGameState], a
 | 
				
			||||||
 | 
					    ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Copies the field to the shadow field.
 | 
					    ; Copies the field to the shadow field.
 | 
				
			||||||
    ; This shadow field is used to calculate whether or not the piece can fit.
 | 
					    ; This shadow field is used to calculate whether or not the piece can fit.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,6 +46,7 @@ wKillScreenActivationLevel: ds 2
 | 
				
			||||||
wKillScreenActivationLevelBCD: ds 2
 | 
					wKillScreenActivationLevelBCD: ds 2
 | 
				
			||||||
wLastLockLevel: ds 2
 | 
					wLastLockLevel: ds 2
 | 
				
			||||||
wStaffRollDuration:: ds 2
 | 
					wStaffRollDuration:: ds 2
 | 
				
			||||||
 | 
					wBigStaffRoll:: ds 1
 | 
				
			||||||
wBonesActive:: ds 1
 | 
					wBonesActive:: ds 1
 | 
				
			||||||
wInvisActive:: ds 1
 | 
					wInvisActive:: ds 1
 | 
				
			||||||
wKillScreenActive:: ds 1
 | 
					wKillScreenActive:: ds 1
 | 
				
			||||||
| 
						 | 
					@ -202,8 +203,10 @@ SpecialLevelInit:
 | 
				
			||||||
    ld [wLastLockLevel+1], a
 | 
					    ld [wLastLockLevel+1], a
 | 
				
			||||||
    ld a, [hl+]
 | 
					    ld a, [hl+]
 | 
				
			||||||
    ld [wStaffRollDuration], a
 | 
					    ld [wStaffRollDuration], a
 | 
				
			||||||
    ld a, [hl]
 | 
					    ld a, [hl+]
 | 
				
			||||||
    ld [wStaffRollDuration+1], a
 | 
					    ld [wStaffRollDuration+1], a
 | 
				
			||||||
 | 
					    ld a, [hl]
 | 
				
			||||||
 | 
					    ld [wBigStaffRoll], a
 | 
				
			||||||
    ret
 | 
					    ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -198,6 +198,7 @@ sDMGTSpeedCurveSpecialData::
 | 
				
			||||||
    dw $9999    ; Same but in BCD.
 | 
					    dw $9999    ; Same but in BCD.
 | 
				
			||||||
    dw 9998     ; If the last level lock isn't at x99, where is it?
 | 
					    dw 9998     ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $FF      ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sTGM1SpeedCurve::
 | 
					sTGM1SpeedCurve::
 | 
				
			||||||
| 
						 | 
					@ -337,6 +338,10 @@ sTGM1SpeedCurve::
 | 
				
			||||||
    db 20, $00
 | 
					    db 20, $00
 | 
				
			||||||
    db 30, 30, 16, 30, 41
 | 
					    db 30, 30, 16, 30, 41
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dw $0995, 995, $0999
 | 
				
			||||||
 | 
					    db 20, $00
 | 
				
			||||||
 | 
					    db 30, 30, 16, 30, 41
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sTGM1SpeedCurveEnd::
 | 
					sTGM1SpeedCurveEnd::
 | 
				
			||||||
    dw $FFFF
 | 
					    dw $FFFF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -347,6 +352,7 @@ sTGM1SpeedCurveSpecialData::
 | 
				
			||||||
    dw $0999    ; Same but in BCD.
 | 
					    dw $0999    ; Same but in BCD.
 | 
				
			||||||
    dw 998      ; If the last level lock isn't at x99, where is it?
 | 
					    dw 998      ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $FF      ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sCHILSpeedCurve::
 | 
					sCHILSpeedCurve::
 | 
				
			||||||
| 
						 | 
					@ -448,6 +454,7 @@ sCHILSpeedCurveSpecialData::
 | 
				
			||||||
    dw $9999    ; Same but in BCD.
 | 
					    dw $9999    ; Same but in BCD.
 | 
				
			||||||
    dw 9998     ; If the last level lock isn't at x99, where is it?
 | 
					    dw 9998     ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw $FFFF    ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw $FFFF    ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $00      ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sTGM3SpeedCurve::
 | 
					sTGM3SpeedCurve::
 | 
				
			||||||
| 
						 | 
					@ -609,6 +616,7 @@ sTGM3SpeedCurveSpecialData::
 | 
				
			||||||
    dw $1299    ; Same but in BCD.
 | 
					    dw $1299    ; Same but in BCD.
 | 
				
			||||||
    dw 1298     ; If the last level lock isn't at x99, where is it?
 | 
					    dw 1298     ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw 3600     ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $00      ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sDEATSpeedCurve::
 | 
					sDEATSpeedCurve::
 | 
				
			||||||
    dw $0000, 0, $0100
 | 
					    dw $0000, 0, $0100
 | 
				
			||||||
| 
						 | 
					@ -661,6 +669,7 @@ sDEATSpeedCurveSpecialData::
 | 
				
			||||||
    dw $0999   ; Same but in BCD.
 | 
					    dw $0999   ; Same but in BCD.
 | 
				
			||||||
    dw 998     ; If the last level lock isn't at x99, where is it?
 | 
					    dw 998     ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw 3600    ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw 3600    ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $00     ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sSHIRSpeedCurve::
 | 
					sSHIRSpeedCurve::
 | 
				
			||||||
| 
						 | 
					@ -697,11 +706,12 @@ sSHIRSpeedCurveEnd::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sSHIRSpeedCurveSpecialData::
 | 
					sSHIRSpeedCurveSpecialData::
 | 
				
			||||||
    dw 900     ; When do we get bones?
 | 
					    dw 900     ; When do we get bones?
 | 
				
			||||||
    dw 1300    ; When do blocks turn invisible?
 | 
					    dw $FFFF   ; When do blocks turn invisible?
 | 
				
			||||||
    dw 1300    ; When is the hard kill screen?
 | 
					    dw 1300    ; When is the hard kill screen?
 | 
				
			||||||
    dw $1300   ; Same but in BCD.
 | 
					    dw $1300   ; Same but in BCD.
 | 
				
			||||||
    dw $FFFF   ; If the last level lock isn't at x99, where is it?
 | 
					    dw $FFFF   ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw 3600    ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw 3600    ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $FF     ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sMYCOSpeedCurve::
 | 
					sMYCOSpeedCurve::
 | 
				
			||||||
| 
						 | 
					@ -815,6 +825,7 @@ sMYCOSpeedCurveSpecialData::
 | 
				
			||||||
    dw $0300    ; Same but in BCD.
 | 
					    dw $0300    ; Same but in BCD.
 | 
				
			||||||
    dw $FFFF    ; If the last level lock isn't at x99, where is it?
 | 
					    dw $FFFF    ; If the last level lock isn't at x99, where is it?
 | 
				
			||||||
    dw $FFFF    ; How long does the staff roll last after the kill screen, in frames.
 | 
					    dw $FFFF    ; How long does the staff roll last after the kill screen, in frames.
 | 
				
			||||||
 | 
					    db $00      ; Big mode in staff roll?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sSharedTiles::
 | 
					sSharedTiles::
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,6 +40,7 @@ hRequestedJingle: ds 1
 | 
				
			||||||
SECTION "Gameplay Variables", WRAM0
 | 
					SECTION "Gameplay Variables", WRAM0
 | 
				
			||||||
wRollLine: ds 1
 | 
					wRollLine: ds 1
 | 
				
			||||||
wInStaffRoll:: ds 1
 | 
					wInStaffRoll:: ds 1
 | 
				
			||||||
 | 
					wBigModeTransfered: ds 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECTION "Gameplay Function Trampolines", ROM0
 | 
					SECTION "Gameplay Function Trampolines", ROM0
 | 
				
			||||||
| 
						 | 
					@ -444,6 +445,10 @@ GamePlayEventLoopHandlerB::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.preGameOverMode
 | 
					.preGameOverMode
 | 
				
			||||||
 | 
					    xor a, a
 | 
				
			||||||
 | 
					    ldh [hAState], a
 | 
				
			||||||
 | 
					    ldh [hBState], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; 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
 | 
				
			||||||
| 
						 | 
					@ -668,6 +673,7 @@ GamePlayEventLoopHandlerB::
 | 
				
			||||||
    ld hl, wField+(20*10)
 | 
					    ld hl, wField+(20*10)
 | 
				
			||||||
    ld bc, 40
 | 
					    ld bc, 40
 | 
				
			||||||
    call UnsafeMemCopy
 | 
					    call UnsafeMemCopy
 | 
				
			||||||
 | 
					    jr .drawStaticInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Prepare for staff roll.
 | 
					    ; Prepare for staff roll.
 | 
				
			||||||
| 
						 | 
					@ -702,11 +708,16 @@ GamePlayEventLoopHandlerB::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.predone
 | 
					.predone
 | 
				
			||||||
    call FieldClear
 | 
					    call FieldClear
 | 
				
			||||||
    call ToShadowField
 | 
					 | 
				
			||||||
    ld a, MODE_PREFETCHED_PIECE
 | 
					    ld a, MODE_PREFETCHED_PIECE
 | 
				
			||||||
    ldh [hMode], a
 | 
					    ldh [hMode], a
 | 
				
			||||||
    ld a, $FF
 | 
					    ld a, $FF
 | 
				
			||||||
    ld [wInStaffRoll], a
 | 
					    ld [wInStaffRoll], a
 | 
				
			||||||
 | 
					    ld a, [wBigStaffRoll]
 | 
				
			||||||
 | 
					    cp a, $FF
 | 
				
			||||||
 | 
					    jr nz, .staysmall
 | 
				
			||||||
 | 
					    call GoBig
 | 
				
			||||||
 | 
					.staysmall
 | 
				
			||||||
 | 
					    call ToShadowField
 | 
				
			||||||
    ldh a, [hNextPiece]
 | 
					    ldh a, [hNextPiece]
 | 
				
			||||||
    ldh [hCurrentPiece], a
 | 
					    ldh [hCurrentPiece], a
 | 
				
			||||||
    call GetNextPiece
 | 
					    call GetNextPiece
 | 
				
			||||||
| 
						 | 
					@ -715,7 +726,7 @@ GamePlayEventLoopHandlerB::
 | 
				
			||||||
    ld a, [hl+]
 | 
					    ld a, [hl+]
 | 
				
			||||||
    ld c, a
 | 
					    ld c, a
 | 
				
			||||||
    ld b, [hl]
 | 
					    ld b, [hl]
 | 
				
			||||||
    call StartCountdown
 | 
					    jp StartCountdown
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Always draw the score, level, next piece, and held piece.
 | 
					    ; Always draw the score, level, next piece, and held piece.
 | 
				
			||||||
| 
						 | 
					@ -1189,6 +1200,10 @@ GamePlayBigEventLoopHandlerB:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.preGameOverMode
 | 
					.preGameOverMode
 | 
				
			||||||
 | 
					    xor a, a
 | 
				
			||||||
 | 
					    ldh [hAState], a
 | 
				
			||||||
 | 
					    ldh [hBState], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; 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
 | 
				
			||||||
| 
						 | 
					@ -1414,6 +1429,7 @@ GamePlayBigEventLoopHandlerB:
 | 
				
			||||||
    ld hl, wWideBlittedField+(20*10)
 | 
					    ld hl, wWideBlittedField+(20*10)
 | 
				
			||||||
    ld bc, 20
 | 
					    ld bc, 20
 | 
				
			||||||
    call UnsafeMemCopy
 | 
					    call UnsafeMemCopy
 | 
				
			||||||
 | 
					    jp .drawStaticInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Prepare for staff roll.
 | 
					    ; Prepare for staff roll.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue