new timer mode to end the game when the timer ends

This commit is contained in:
sporchia
2018-03-21 23:05:42 -04:00
parent 72bae672e8
commit 3dfa5e7be9
2 changed files with 16 additions and 11 deletions

View File

@@ -847,7 +847,7 @@ org $308190 ; PC 0x180190 - 0x180192
TimerStyle: TimerStyle:
db #$00 ; #$00 = Off (Default) - #$01 Countdown - #$02 = Stopwatch db #$00 ; #$00 = Off (Default) - #$01 Countdown - #$02 = Stopwatch
TimeoutBehavior: TimeoutBehavior:
db #$00 ; #$00 = DNF (Default) - #$01 = Sign Change (Requires TimerRestart == 1) - #$02 = OHKO db #$00 ; #$00 = DNF (Default) - #$01 = Sign Change (Requires TimerRestart == 1) - #$02 = OHKO - #$03 = End Game
TimerRestart: TimerRestart:
db #$00 ; #$00 = Locked (Default) - #$01 = Restart db #$00 ; #$00 = Locked (Default) - #$01 = Restart
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -56,14 +56,14 @@ CalculateTimer:
STA.l !CLOCK_MINUTES+2 STA.l !CLOCK_MINUTES+2
STA.l !CLOCK_SECONDS STA.l !CLOCK_SECONDS
STA.l !CLOCK_SECONDS+2 STA.l !CLOCK_SECONDS+2
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
%Sub32(!BaseTimer,!ChallengeTimer,!CLOCK_TEMPORARY) %Sub32(!BaseTimer,!ChallengeTimer,!CLOCK_TEMPORARY)
BRA ++ BRA ++
+ CMP.w #$0001 : BNE ++ ; Countdown Mode + CMP.w #$0001 : BNE ++ ; Countdown Mode
%Sub32(!ChallengeTimer,!BaseTimer,!CLOCK_TEMPORARY) %Sub32(!ChallengeTimer,!BaseTimer,!CLOCK_TEMPORARY)
++ ++
%Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT + %Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT +
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
LDA.w #$0002 : STA.l !Status ; Set DNF Mode LDA.w #$0002 : STA.l !Status ; Set DNF Mode
@@ -75,18 +75,23 @@ CalculateTimer:
LDA.l !CLOCK_TEMPORARY+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l !CLOCK_TEMPORARY+2 LDA.l !CLOCK_TEMPORARY+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l !CLOCK_TEMPORARY+2
LDA.w #$0001 : STA.l !Status ; Set Negative Mode LDA.w #$0001 : STA.l !Status ; Set Negative Mode
BRA .prepDigits BRA .prepDigits
++ ; OHKO ++ CMP.w #$0002 : BNE ++ ; OHKO
LDA.w #$0002 : STA.l !Status ; Set DNF Mode LDA.w #$0002 : STA.l !Status ; Set DNF Mode
LDA.l !BaseTimer : STA.l !ChallengeTimer LDA.l !BaseTimer : STA.l !ChallengeTimer
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2 LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2
RTS RTS
++ ; End Game
SEP #$30
JSL.l ActivateGoal
REP #$30
RTS
+ +
LDA.l TimerRestart : AND.w #$00FF : BEQ + LDA.l TimerRestart : AND.w #$00FF : BEQ +
LDA.w #$0000 : STA.l !Status ; Set Positive Mode LDA.w #$0000 : STA.l !Status ; Set Positive Mode
+ +
.prepDigits .prepDigits
- -
%Blt32(!CLOCK_TEMPORARY,.hour) : !BLT + %Blt32(!CLOCK_TEMPORARY,.hour) : !BLT +
%DecIncr(!CLOCK_HOURS) %DecIncr(!CLOCK_HOURS)
@@ -100,7 +105,7 @@ CalculateTimer:
%DecIncr(!CLOCK_SECONDS) %DecIncr(!CLOCK_SECONDS)
%Sub32(!CLOCK_TEMPORARY,.second,!CLOCK_TEMPORARY) : BRA - %Sub32(!CLOCK_TEMPORARY,.second,!CLOCK_TEMPORARY) : BRA -
+ +
LDA !CLOCK_HOURS : !ADD.w #$2490 : STA !CLOCK_HOURS ; convert decimal values to tiles LDA !CLOCK_HOURS : !ADD.w #$2490 : STA !CLOCK_HOURS ; convert decimal values to tiles
LDA !CLOCK_HOURS+2 : !ADD.w #$2490 : STA !CLOCK_HOURS+2 LDA !CLOCK_HOURS+2 : !ADD.w #$2490 : STA !CLOCK_HOURS+2
LDA !CLOCK_MINUTES : !ADD.w #$2490 : STA !CLOCK_MINUTES LDA !CLOCK_MINUTES : !ADD.w #$2490 : STA !CLOCK_MINUTES
@@ -121,9 +126,9 @@ dw #$FFFF, #$7FFF
DrawChallengeTimer: DrawChallengeTimer:
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
LDA.w #$2807 : STA $7EC792 LDA.w #$2807 : STA $7EC792
LDA.l !Status : AND.w #$0002 : BEQ + ; DNF / OKHO LDA.l !Status : AND.w #$0002 : BEQ + ; DNF / OKHO
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
LDA.w #$2808 : STA $7EC794 LDA.w #$2808 : STA $7EC794
LDA.w #$2809 : STA $7EC796 LDA.w #$2809 : STA $7EC796
@@ -155,7 +160,7 @@ DrawChallengeTimer:
LDA !CLOCK_SECONDS : STA $7EC7A4 LDA !CLOCK_SECONDS : STA $7EC7A4
++ ++
LDA $1A : AND.w #$001F : BNE + : JSR CalculateTimer : + LDA $1A : AND.w #$001F : BNE + : JSR CalculateTimer : +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
OHKOTimer: OHKOTimer:
@@ -167,4 +172,4 @@ OHKOTimer:
+ +
LDA $7EF36D LDA $7EF36D
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------