; 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