shithub: pokecrystal

Download patch

ref: d93d17b43b0c45d2e22bb9e3d0b0d036d2a5ff0b
parent: 2c36afc6c320bb9fb5ac361b4a28f697cf7b6319
author: yenatch <[email protected]>
date: Tue Sep 3 14:58:16 EDT 2013

split out game time functions into engine/game_time.asm

--- /dev/null
+++ b/engine/game_time.asm
@@ -1,0 +1,132 @@
+ResetGameTime: ; 208a
+	xor a
+	ld [GameTimeCap], a
+	ld [GameTimeHours], a
+	ld [GameTimeHours + 1], a
+	ld [GameTimeMinutes], a
+	ld [GameTimeSeconds], a
+	ld [GameTimeFrames], a
+	ret
+; 209e
+
+
+GameTimer: ; 209e
+
+	nop
+
+	ld a, [rSVBK]
+	push af
+	ld a, 1
+	ld [rSVBK], a
+
+	call UpdateGameTimer
+
+	pop af
+	ld [rSVBK], a
+	ret
+; 20ad
+
+
+UpdateGameTimer: ; 20ad
+; Increment the game timer by one frame.
+; The game timer is capped at 999:59:59.00.
+
+
+; Don't update if game logic is paused.
+	ld a, [$c2cd]
+	and a
+	ret nz
+
+; Is the timer paused?
+	ld hl, GameTimerPause
+	bit 0, [hl]
+	ret z
+
+; Is the timer already capped?
+	ld hl, GameTimeCap
+	bit 0, [hl]
+	ret nz
+
+
+; +1 frame
+	ld hl, GameTimeFrames
+	ld a, [hl]
+	inc a
+
+	cp 60 ; frames/second
+	jr nc, .second
+
+	ld [hl], a
+	ret
+
+
+.second
+	xor a
+	ld [hl], a
+
+; +1 second
+	ld hl, GameTimeSeconds
+	ld a, [hl]
+	inc a
+
+	cp 60 ; seconds/minute
+	jr nc, .minute
+
+	ld [hl], a
+	ret
+
+
+.minute
+	xor a
+	ld [hl], a
+
+; +1 minute
+	ld hl, GameTimeMinutes
+	ld a, [hl]
+	inc a
+
+	cp 60 ; minutes/hour
+	jr nc, .hour
+
+	ld [hl], a
+	ret
+
+
+.hour
+	xor a
+	ld [hl], a
+
+; +1 hour
+	ld a, [GameTimeHours]
+	ld h, a
+	ld a, [GameTimeHours + 1]
+	ld l, a
+	inc hl
+
+
+; Cap the timer after 1000 hours.
+	ld a, h
+	cp 1000 / $100
+	jr c, .ok
+
+	ld a, l
+	cp 1000 % $100
+	jr c, .ok
+
+	ld hl, GameTimeCap
+	set 0, [hl]
+
+	ld a, 59 ; 999:59:59.00
+	ld [GameTimeMinutes], a
+	ld [GameTimeSeconds], a
+	ret
+
+
+.ok
+	ld a, h
+	ld [GameTimeHours], a
+	ld a, l
+	ld [GameTimeHours + 1], a
+	ret
+; 210f
+
--- a/main.asm
+++ b/main.asm
@@ -515,137 +515,7 @@
 ; 208a
 
 
-ResetGameTime: ; 208a
-	xor a
-	ld [GameTimeCap], a
-	ld [GameTimeHours], a
-	ld [GameTimeHours + 1], a
-	ld [GameTimeMinutes], a
-	ld [GameTimeSeconds], a
-	ld [GameTimeFrames], a
-	ret
-; 209e
-
-
-GameTimer: ; 209e
-
-	nop
-
-	ld a, [rSVBK]
-	push af
-	ld a, 1
-	ld [rSVBK], a
-
-	call UpdateGameTimer
-
-	pop af
-	ld [rSVBK], a
-	ret
-; 20ad
-
-
-UpdateGameTimer: ; 20ad
-; Increment the game timer by one frame.
-; The game timer is capped at 999:59:59.00.
-
-
-; Don't update if game logic is paused.
-	ld a, [$c2cd]
-	and a
-	ret nz
-
-; Is the timer paused?
-	ld hl, GameTimerPause
-	bit 0, [hl]
-	ret z
-
-; Is the timer already capped?
-	ld hl, GameTimeCap
-	bit 0, [hl]
-	ret nz
-
-
-; +1 frame
-	ld hl, GameTimeFrames
-	ld a, [hl]
-	inc a
-
-	cp 60 ; frames/second
-	jr nc, .second
-
-	ld [hl], a
-	ret
-
-
-.second
-	xor a
-	ld [hl], a
-
-; +1 second
-	ld hl, GameTimeSeconds
-	ld a, [hl]
-	inc a
-
-	cp 60 ; seconds/minute
-	jr nc, .minute
-
-	ld [hl], a
-	ret
-
-
-.minute
-	xor a
-	ld [hl], a
-
-; +1 minute
-	ld hl, GameTimeMinutes
-	ld a, [hl]
-	inc a
-
-	cp 60 ; minutes/hour
-	jr nc, .hour
-
-	ld [hl], a
-	ret
-
-
-.hour
-	xor a
-	ld [hl], a
-
-; +1 hour
-	ld a, [GameTimeHours]
-	ld h, a
-	ld a, [GameTimeHours + 1]
-	ld l, a
-	inc hl
-
-
-; Cap the timer after 1000 hours.
-	ld a, h
-	cp 1000 / $100
-	jr c, .ok
-
-	ld a, l
-	cp 1000 % $100
-	jr c, .ok
-
-	ld hl, GameTimeCap
-	set 0, [hl]
-
-	ld a, 59 ; 999:59:59.00
-	ld [GameTimeMinutes], a
-	ld [GameTimeSeconds], a
-	ret
-
-
-.ok
-	ld a, h
-	ld [GameTimeHours], a
-	ld a, l
-	ld [GameTimeHours + 1], a
-	ret
-; 210f
+INCLUDE "engine/game_time.asm"
 
 
 Function210f: ; 210f