aboutsummaryrefslogtreecommitdiff
path: root/game/text.asm
blob: 388b0bf0a57e344455306120fa0581fa3523137a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
;
; Bitmap font
;

;
; Write text on screen
;
; Expects a 4x8 font on "font" label.
;
; in: [a : x]: text to write
;     b, y: (x, y) dst coords
put_text:
    push y
    push b

put_text_loop:
    ld y, [a : x]
    cmp y, 0
    bz
    jmp put_text_exit

    sub y, 32

    push a
    push x

    rol y, 5
    ld x, y
    and x, 31
    and y, 224

    ld a, >font
    add a, x

    ld x, <font
    add x, y
    bo
    inc a

    call put_text_c

    pop x
    pop a

    inc x
    bo
    inc a

    pop b
    add b, 4
    push b

    jmp put_text_loop

put_text_exit:
    pop b
    pop y
    ret

put_text_c:
    ; settings mode
    ld y, 128
    ld b, 0xb0
    port b, y

    ; setup
    inc b

    ; addr: char sprite
    ld y, x
    port b, y
    ld y, a
    port b, y

    ; x
    ld y, [sp + 4]
    port b, y

    ; y
    ld y, [sp + 5]
    port b, y

    ; w
    ld y, 4
    port b, y
    ; h
    ld y, 8
    port b, y

    ; blit
    dec b
    ; write, transparent
    ld y, 3
    port b, y
    ret