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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
; copy the name and level of the card at wLoadedCard1 to wDefaultText
; a = length in number of tiles (the resulting string will be padded with spaces to match it)
_CopyCardNameAndLevel:
push bc
push de
ld [wCardNameLength], a
ld hl, wLoadedCard1Name
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wDefaultText
push de
call CopyText ; copy card name to wDefaultText
pop hl
ld a, [hli]
cp TX_HALFWIDTH
jp z, _CopyCardNameAndLevel_HalfwidthText
; the name doesn't start with TX_HALFWIDTH
; this doesn't appear to be ever the case (unless caller manipulates wLoadedCard1Name)
ld a, [wCardNameLength]
ld c, a
ld a, [wLoadedCard1Type]
cp TYPE_ENERGY
jr nc, .level_done ; jump if energy or trainer
ld a, [wLoadedCard1Level]
or a
jr z, .level_done
inc c
inc c
ld a, [wLoadedCard1Level]
cp 10
jr c, .level_done
inc c ; second digit
.level_done
ld hl, wLoadedCard1Name
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wDefaultText
push de
call CopyText
pop hl
push de
ld e, c
call GetTextLengthInTiles
add e
ld c, a
pop hl
push hl
.fill_loop
ld a, $70
ld [hli], a
dec c
jr nz, .fill_loop
ld [hl], TX_END
pop hl
ld a, [wLoadedCard1Type]
cp TYPE_ENERGY
jr nc, .done
ld a, [wLoadedCard1Level]
or a
jr z, .done
ld a, TX_SYMBOL
ld [hli], a
ld [hl], SYM_Lv
inc hl
ld a, [wLoadedCard1Level]
cp 10
jr c, .one_digit
ld [hl], TX_SYMBOL
inc hl
ld b, SYM_0 - 1
.first_digit_loop
inc b
sub 10
jr nc, .first_digit_loop
add 10
ld [hl], b ; first digit
inc hl
.one_digit
ld [hl], TX_SYMBOL
inc hl
add SYM_0
ld [hl], a ; last (or only) digit
inc hl
.done
pop de
pop bc
ret
; the name starts with TX_HALFWIDTH
_CopyCardNameAndLevel_HalfwidthText:
ld a, [wCardNameLength]
inc a
add a
ld b, a
ld hl, wDefaultText
.find_end_text_loop
dec b
ld a, [hli]
or a ; TX_END
jr nz, .find_end_text_loop
dec hl
ld a, [wLoadedCard1Type]
cp TYPE_ENERGY
jr nc, .level_done
ld a, [wLoadedCard1Level]
or a
jr z, .level_done
ld c, a
ld a, " "
ld [hli], a
dec b
ld a, "L"
ld [hli], a
dec b
ld a, "v"
ld [hli], a
dec b
ld a, c
cp 10
jr c, .got_level
push bc
ld b, "0" - 1
.first_digit_loop
inc b
sub 10
jr nc, .first_digit_loop
add 10
ld [hl], b ; first digit
inc hl
pop bc
ld c, a
dec b
.got_level
ld a, c
add "0"
ld [hli], a ; last (or only) digit
dec b
.level_done
push hl
ld a, " "
.fill_spaces_loop
ld [hli], a
dec b
jr nz, .fill_spaces_loop
ld [hl], TX_END
pop hl
pop de
pop bc
ret
|