summaryrefslogtreecommitdiff
path: root/home/bcd.asm
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-09-07 20:30:27 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-09-07 20:49:20 -0700
commit61ce00763a3f4cb7e2d2f1aa49a2a7eed848aec3 (patch)
tree77c07339de49b6bbb2ac59375033da8f2999510c /home/bcd.asm
parent023bacc23fa0e400ca7ae5b7c9e507f6a6b87c8b (diff)
Move some code out of home.asm
Diffstat (limited to 'home/bcd.asm')
-rwxr-xr-xhome/bcd.asm109
1 files changed, 109 insertions, 0 deletions
diff --git a/home/bcd.asm b/home/bcd.asm
new file mode 100755
index 0000000..49055ad
--- /dev/null
+++ b/home/bcd.asm
@@ -0,0 +1,109 @@
+; This file contains functions to handle adding and retrieving BCD (binary coded decimal) values.
+
+Func_3500:
+ ld hl, wScoreToAdd
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld bc, wScoreToAdd
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ret
+
+AddBCDEToCurBufferValue: ; 0x351c
+ ld hl, wScoreToAdd
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld bc, wScoreToAdd
+ callba AddBigBCD6FromQueue
+ ret
+
+AddBCDEToJackpot: ; 0x3538
+; Add BCD value bcde to [wCurrentJackpot]. Cap at $99999999.
+ ld hl, wCurrentJackpot
+ ld a, [hl]
+ add e
+ daa
+ ld [hli], a
+ ld a, [hl]
+ adc d
+ daa
+ ld [hli], a
+ ld a, [hl]
+ adc c
+ daa
+ ld [hli], a
+ ld a, [hl]
+ adc b
+ daa
+ ld [hli], a
+ ret nc
+ ld hl, wCurrentJackpot
+ ld a, $99
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+RetrieveJackpot: ; 0x3556
+; Retrieves a 4-byte BCD value at wCurrentJackpot
+ ld a, [wCurrentJackpot]
+ ld e, a
+ ld a, [wCurrentJackpot + 1]
+ ld d, a
+ ld a, [wCurrentJackpot + 2]
+ ld c, a
+ ld a, [wCurrentJackpot + 3]
+ ld b, a
+ ret
+
+Func_3567:
+; BCD add bc to hl
+ ld a, l
+ add c
+ daa
+ ld l, a
+ ld a, h
+ adc b
+ daa
+ ld h, a
+ ret
+
+Func_3570:
+; BCD add de to hl
+ ld a, l
+ add e
+ daa
+ ld l, a
+ ld a, h
+ adc d
+ daa
+ ld h, a
+ ret
+
+Func_3579: ; 0x3579
+; Delete 4-byte BCD value at wCurrentJackpot
+ ld hl, wCurrentJackpot
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret