jr puts REL
@done:
ret
-
+
+ ; counts how many times
+ ; a number fits into n
+ ; inputs:
+ ; a: a number
+ ; $1: factor
+ ; returns:
+ ; b: count
+#macro putn_count
+.beginscope
+ ld b, 0
+@again:
+ cp a, $1
+ jr z, @done REL
+ jr c, @done REL
+ sub a, $1
+ inc b
+ jr @again REL
+@done:
+.endscope
+#endmacro
+
; prints a number in decimal
; input:
; de: tile location
; a: the value
putn:
+ putn_count 100
+ ; print 100s if > 0
+ push af
+ ld a, b
+ cp a, 0
+ jr z, @skip_100s REL
+ add a, FONT_OFFSET+1
+ ld [de], a
+ inc de
+@skip_100s:
+ pop af
+
+ putn_count 10
+ ; print 10s if > 0
+ push af
+ ld a, b
+ cp a, 0
+ jr z, @skip_10s REL
+ add a, FONT_OFFSET+1
+ ld [de], a
+ inc de
+@skip_10s:
+ pop af
+
+ ; print remainder
add a, FONT_OFFSET+1
ld [de], a
ret