include "charmap.inc" include "video.inc" section "home/text.asm@data", rom0 gfx_font: incbin "assets/tetrisfont.1bpp" .end section "home/text.asm@vram", vram ds $2D tiles v_font_dash_period: ds 2 tiles ds $1 tiles v_font_numbers: ds 10 tiles ds $7 tiles v_font_uppercase: ds 26 tiles ds $6 tiles v_font_lowercase: ds 26 tiles section "home/text.asm", rom0 prints:: ; hl: String ; de: Tilemap position ld a, [hli] cp "$" ret z call lcd_blank_wait ; TODO: Really hackish. ld [de], a inc de jr prints print_dec_3digit:: ; a: Number ; de: Tilemap positon push af call lcd_blank_wait xor a ld [de], a inc de ld [de], a inc de ld [de], a pop af ld l, 3 .loop ld c, 10 call divide add "0" call lcd_blank_wait ld [de], a ld a, b and a ret z dec de dec l jr nz, .loop ret print_hex_4digit:: ; hl: Number ; de: Tilemap position ld a, h swap a call print_hex_1digit ld a, h call print_hex_1digit ld a, l swap a call print_hex_1digit ld a, l jr print_hex_1digit print_hex_2digit:: ; a: Number ; de: Tilemap position ld b, a swap a call print_hex_1digit ld a, b jr print_hex_1digit print_hex_1digit: and $f add "0" cp "9" + 1 jr c, .skip add "A" - "0" - $a .skip call lcd_blank_wait ld [de], a inc de ret font_load:: ld hl, gfx_font ld de, v_font_numbers ld bc, (10 tiles) / 2 call memcpy_double ld de, v_font_uppercase ld bc, (26 tiles) / 2 call memcpy_double ld hl, gfx_font + (10 tiles) / 2 ld de, v_font_lowercase ld bc, (26 tiles) / 2 call memcpy_double ld de, v_font_dash_period + (1 tiles) ld bc, (1 tiles) / 2 call memcpy_double ld de, v_font_dash_period ld bc, (1 tiles) / 2 jp memcpy_double