summaryrefslogtreecommitdiff
path: root/source/bank_00.asm
diff options
context:
space:
mode:
Diffstat (limited to 'source/bank_00.asm')
-rw-r--r--source/bank_00.asm136
1 files changed, 136 insertions, 0 deletions
diff --git a/source/bank_00.asm b/source/bank_00.asm
index 0f31041..d1de5cb 100644
--- a/source/bank_00.asm
+++ b/source/bank_00.asm
@@ -1,3 +1,4 @@
+INCLUDE "charmap.inc"
INCLUDE "hardware.inc"
INCLUDE "macros.inc"
@@ -1336,6 +1337,141 @@ function_00_1120::
jr nz, function_00_1120
ret
+SECTION "home_text", ROM0[$1883]
+text_print::
+ ld a, [w_bank_rom]
+ push af
+ ld a, BANK(string_table)
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+
+ ; Get string address
+ ld hl, string_table
+ ld a, [w_text_index + 0]
+ ld c, a
+ ld a, [w_text_index + 1]
+ ld b, a
+ sla c
+ rl b
+ add hl, bc
+ ld a, [hl+]
+ ld h, [hl]
+ ld l, a
+
+.loop
+ ld a, [hl]
+ and a
+ jr z, .done
+
+ ; Get text cooredinates
+ ld a, [w_text_pos_x]
+ ld b, a
+ inc hl
+ ld a, [w_text_pos_y]
+ inc a
+ inc a
+ ld c, a
+ inc hl
+
+.string_loop
+ ld a, [hl+]
+ ld e, a
+ ld a, [hl+]
+ ld d, a
+ and e
+ cp LOW(TX_END)
+ jr z, .loop
+
+ push bc
+ push hl
+ call text_draw_char
+ pop hl
+ pop bc
+
+ ; Leave one pixel between each character
+ add b
+ inc a
+ ld b, a
+ jr .string_loop
+
+.done
+ pop af
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+ ret
+
+; Returns:
+; a - character width
+; Parameters:
+; de - character to print
+; b - x position
+; c - y position
+text_draw_char:
+ ld a, [w_bank_rom]
+ push af
+ ld a, BANK(text_chars_offsets)
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+ push de
+
+ ; Get char address
+ sla e
+ rl d
+ ld hl, text_chars_offsets
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, gfx_text_chars_bw
+ add hl, de
+ ld a, l
+ ld [w_vwf_char_addr + 0], a
+ ld a, h
+ ld [w_vwf_char_addr + 1], a
+ ld a, BANK(gfx_text_chars_bw)
+ ld [w_vwf_char_bank], a
+
+ ld a, b
+ ld [w_vwf_char_start_x], a
+
+ ; Get character width
+ pop de
+ ld hl, text_chars_widths
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .done
+ push af
+ add b
+ ld [w_vwf_char_end_x], a
+
+ ; Draw ピ one pixel higher
+ ld a, e
+ cp "ピ"
+ jr nz, .not_pi
+ ld a, d
+ and a
+ jr nz, .not_pi
+ dec c
+.not_pi
+
+ ; Set y coordinates for the character
+ ld a, c
+ ld [w_vwf_char_start_y], a
+ add 9
+ ld [w_vwf_char_end_y], a
+
+ call vwf_char_draw
+ pop af
+
+.done
+ ld e, a
+ pop af
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+ ld a, e
+ ret
+
SECTION "function_00_24b7", ROM0[$24b7]
function_00_24b7::
xor a