Prev: FD9C Up: Map Next: FE7F
FDA4: Prints a single character: unpacks its position and blits the glyph bitmap to screen
Unpacks a packed row/column position byte from (HL) into a screen address, then blits the character's 8-row bitmap via LDI (one of two colour paths, selected by a carry test partway through).
Used by the routine at print_string's loop, and directly by run_title_screen and read_new_key_definition ($FF7F) wherever only one character needs printing.
print_character FDA4 LD C,(HL)
FDA5 RL C
FDA7 EX AF,AF'
FDA8 SRL C
FDAA INC HL
FDAB LD E,(HL)
FDAC INC HL
FDAD LD D,(HL)
FDAE INC HL
FDAF PUSH HL
FDB0 LD A,D
FDB1 RRA
FDB2 RRA
FDB3 RRA
FDB4 AND $03
FDB6 ADD A,$58
FDB8 LD H,A
FDB9 LD L,E
FDBA EXX
FDBB EX (SP),HL
FDBC PUSH DE
FDBD PUSH BC
print_character_0 FDBE LD A,(HL)
FDBF AND $7F
FDC1 PUSH HL
FDC2 CALL print_character_1
FDC5 POP HL
FDC6 BIT 7,(HL)
FDC8 INC HL
FDC9 JR Z,print_character_0
FDCB EXX
FDCC POP BC
FDCD POP DE
FDCE POP HL
FDCF EXX
FDD0 RET
print_character_1 FDD1 SUB $20
FDD3 JR NZ,print_character_2
FDD5 EXX
FDD6 INC E
FDD7 INC L
FDD8 EXX
FDD9 RET
print_character_2 FDDA LD C,$12
FDDC CP $21
FDDE JR NC,print_character_3
FDE0 LD C,$0B
FDE2 CP $10
FDE4 JR NC,print_character_3
FDE6 LD C,$00
FDE8 DEC A
FDE9 JR Z,print_character_4
FDEB INC C
FDEC SUB $07
FDEE JR Z,print_character_4
FDF0 INC C
FDF1 DEC A
FDF2 JR Z,print_character_4
FDF4 INC C
FDF5 SUB $03
FDF7 JR Z,print_character_4
FDF9 INC C
FDFA JR print_character_4
print_character_3 FDFC SUB C
FDFD LD C,A
print_character_4 FDFE LD A,C
FDFF RLCA
FE00 LD B,A
FE01 RLCA
FE02 ADD A,B
FE03 ADD A,C
FE04 LD B,$00
FE06 RL B
FE08 LD C,A
FE09 LD HL,($800C)
FE0C ADD HL,BC
FE0D EXX
FE0E PUSH DE
FE0F INC E
FE10 EXX
FE11 POP DE
FE12 EX AF,AF'
FE13 JR C,print_character_5
FE15 EX AF,AF'
FE16 LD A,(HL)
FE17 LD (DE),A
FE18 INC D
FE19 LDI
FE1B DEC E
FE1C INC D
FE1D LD A,(HL)
FE1E LD (DE),A
FE1F INC D
FE20 LDI
FE22 DEC E
FE23 INC D
FE24 LD A,(HL)
FE25 LD (DE),A
FE26 INC D
FE27 LDI
FE29 DEC E
FE2A INC D
FE2B LD A,(HL)
FE2C LD (DE),A
FE2D INC D
FE2E LDI
FE30 LD A,E
FE31 ADD A,$1F
FE33 LD E,A
FE34 LD A,D
FE35 SUB $07
FE37 LD D,A
FE38 LD A,(HL)
FE39 LD (DE),A
FE3A INC D
FE3B LDI
FE3D DEC E
FE3E INC D
FE3F LD A,(HL)
FE40 LD (DE),A
FE41 INC D
FE42 LDI
FE44 DEC E
FE45 INC D
FE46 LD A,(HL)
FE47 LD (DE),A
FE48 INC D
FE49 LDI
FE4B DEC E
FE4C INC D
FE4D XOR A
FE4E LD (DE),A
FE4F EXX
FE50 LD B,L
FE51 SET 6,C
FE53 LD (HL),C
FE54 LD A,L
FE55 ADD A,$20
FE57 LD L,A
FE58 RES 6,C
FE5A LD (HL),C
FE5B LD L,B
FE5C INC L
FE5D EXX
FE5E RET
print_character_5 FE5F EX AF,AF'
FE60 LDI
FE62 DEC E
FE63 INC D
FE64 LDI
FE66 DEC E
FE67 INC D
FE68 LDI
FE6A DEC E
FE6B INC D
FE6C LDI
FE6E DEC E
FE6F INC D
FE70 LDI
FE72 DEC E
FE73 INC D
FE74 LDI
FE76 DEC E
FE77 INC D
FE78 LDI
FE7A EXX
FE7B LD (HL),C
FE7C INC L
FE7D EXX
FE7E RET
Prev: FD9C Up: Map Next: FE7F