; LCD を非表示 MACRO lcd_OFF xor a ld [rLCDC], a ENDM ; LCD を表示 ; タイルデータは 8000-8FFF として 256 枚を使用 ; BG 有効 (OBJ は影響なし) MACRO lcd_ON ld a, LCDC_ON | LCDC_BLOCK01 | LCDC_PRIO_ON ld [rLCDC], a ENDM ; VRAM (8000-9FFF) をバンク 0 でアクセス MACRO bg_VBK_SEL0 ld a, %0000_0000 ldh [$FF4F], a ENDM ; VRAM (8000-9FFF) をバンク 1 でアクセス MACRO bg_VBK_SEL1 ld a, %0000_0001 ldh [$FF4F], a ENDM SECTION "bg", ROM0 ; VRAM (8000-9FFF) をゼロクリア bg_Init:: ld hl, $8000 .loop: xor a ld [hli], a ld a, h cp $A0 jr nz, .loop ret ; 文字列をタイルマップへ転送 ; hl: 文字列 (終端コードは $FF) ; de: 9800/9C00 マップ bg_DisplayMsg:: ld a, [hl+] cp -1 ret z ld [de], a inc de jr bg_DisplayMsg ; カラーパレットを初期化 (BG 表示用) bg_InitPalette_CGB: MACRO SET_BG_COLOR ; R,G,B DEF __col = ((\3)<<10) | ((\2)<<5) | (\1) ld a, LOW(__col) ldh [$FF69], a ld a, HIGH(__col) ldh [$FF69], a ENDM ld a, %10000000 ; Inc | addr:0 ldh [$FF68], a SET_BG_COLOR 31,31,31 SET_BG_COLOR 24,24,24 SET_BG_COLOR 12,12,12 SET_BG_COLOR 0, 0, 0 ret NEWCHARMAP bg_AsciiMap CHARMAP " ", $00 CHARMAP "!", $01 CHARMAP "\"", $02 CHARMAP "#", $03 CHARMAP "$", $04 CHARMAP "%", $05 CHARMAP "&", $06 CHARMAP "'", $07 CHARMAP "(", $08 CHARMAP ")", $09 CHARMAP "*", $0A CHARMAP "+", $0B CHARMAP ",", $0C CHARMAP "-", $0D CHARMAP ".", $0E CHARMAP "/", $0F CHARMAP "0", $10 CHARMAP "1", $11 CHARMAP "2", $12 CHARMAP "3", $13 CHARMAP "4", $14 CHARMAP "5", $15 CHARMAP "6", $16 CHARMAP "7", $17 CHARMAP "8", $18 CHARMAP "9", $19 CHARMAP ":", $1A CHARMAP ";", $1B CHARMAP "<", $1C CHARMAP "=", $1D CHARMAP ">", $1E CHARMAP "?", $1F CHARMAP "@", $20 CHARMAP "A", $21 CHARMAP "B", $22 CHARMAP "C", $23 CHARMAP "D", $24 CHARMAP "E", $25 CHARMAP "F", $26 CHARMAP "G", $27 CHARMAP "H", $28 CHARMAP "I", $29 CHARMAP "J", $2A CHARMAP "K", $2B CHARMAP "L", $2C CHARMAP "M", $2D CHARMAP "N", $2E CHARMAP "O", $2F CHARMAP "P", $30 CHARMAP "Q", $31 CHARMAP "R", $32 CHARMAP "S", $33 CHARMAP "T", $34 CHARMAP "U", $35 CHARMAP "V", $36 CHARMAP "W", $37 CHARMAP "X", $38 CHARMAP "Y", $39 CHARMAP "Z", $3A CHARMAP "[", $3B CHARMAP "\\", $3C CHARMAP "]", $3D CHARMAP "^", $3E CHARMAP "_", $3F CHARMAP "`", $40 CHARMAP "a", $41 CHARMAP "b", $42 CHARMAP "c", $43 CHARMAP "d", $44 CHARMAP "e", $45 CHARMAP "f", $46 CHARMAP "g", $47 CHARMAP "h", $48 CHARMAP "i", $49 CHARMAP "j", $4A CHARMAP "k", $4B CHARMAP "l", $4C CHARMAP "m", $4D CHARMAP "n", $4E CHARMAP "o", $4F CHARMAP "p", $50 CHARMAP "q", $51 CHARMAP "r", $52 CHARMAP "s", $53 CHARMAP "t", $54 CHARMAP "u", $55 CHARMAP "v", $56 CHARMAP "w", $57 CHARMAP "x", $58 CHARMAP "y", $59 CHARMAP "z", $5A CHARMAP "\{", $5B CHARMAP "|", $5C CHARMAP "\}", $5D CHARMAP "~", $5E ;CHARMAP DEL, $5F ; 文字フォントをタイル VRAM ($8000) へ転送 bg_InitFont:: ld hl, .Font_ASCII ld bc, .Font_ASCII_END - .Font_ASCII ld de, $8000 .copy_font: ld a, [hl+] ld [de], a inc de dec bc ld a, b or c jr nz, .copy_font ret .Font_ASCII: ; 2bpp なので 1 文字 16 バイト DB $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$08,$0C,$08,$0C,$08,$0C, $08,$0C,$08,$0C,$00,$00,$08,$0C DB $00,$00,$24,$36,$24,$36,$00,$36, $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$24,$36,$7E,$7F,$24,$7F, $24,$36,$7E,$7F,$24,$7F,$00,$36 DB $10,$18,$38,$3C,$54,$7E,$50,$7A, $38,$3C,$14,$1E,$54,$7E,$38,$3C DB $00,$00,$00,$00,$12,$32,$24,$36, $08,$0C,$10,$18,$22,$36,$04,$26 DB $00,$00,$18,$1C,$24,$3E,$24,$36, $18,$1C,$2C,$3E,$26,$36,$3A,$3B DB $00,$00,$0C,$0E,$0C,$0E,$10,$1C, $00,$18,$00,$00,$00,$00,$00,$00 DB $00,$00,$04,$06,$08,$0C,$10,$18, $10,$18,$10,$18,$08,$0C,$04,$06 DB $00,$00,$40,$60,$20,$30,$10,$18, $10,$18,$10,$18,$20,$30,$40,$60 DB $00,$00,$00,$00,$44,$66,$28,$3C, $7C,$7E,$28,$3C,$44,$66,$00,$00 DB $00,$00,$00,$00,$10,$18,$10,$18, $7C,$7E,$10,$7E,$10,$18,$00,$18 DB $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$30,$38,$30,$38,$20,$30 DB $00,$00,$00,$00,$00,$00,$00,$00, $7C,$7E,$00,$7E,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$30,$38,$30,$38,$00,$38 DB $00,$00,$00,$00,$02,$02,$04,$06, $08,$0C,$10,$18,$20,$30,$00,$20 DB $00,$00,$18,$1C,$24,$3E,$24,$36, $2C,$3E,$34,$3E,$24,$36,$18,$1C DB $00,$00,$08,$0C,$18,$1C,$08,$1C, $08,$0C,$08,$0C,$08,$0C,$1C,$1E DB $00,$00,$18,$1C,$24,$3E,$24,$36, $04,$06,$08,$0C,$10,$18,$3C,$3E DB $00,$00,$18,$1C,$24,$3E,$24,$36, $08,$0C,$24,$36,$24,$36,$18,$1C DB $00,$00,$08,$0C,$18,$1C,$28,$3C, $48,$6C,$7C,$7E,$08,$0C,$08,$0C DB $00,$00,$3C,$3E,$20,$3E,$20,$30, $3C,$3E,$04,$06,$24,$36,$18,$1C DB $00,$00,$18,$18,$24,$3E,$20,$36, $38,$38,$24,$3E,$24,$36,$18,$1C DB $00,$00,$3C,$3E,$24,$3E,$04,$36, $08,$0E,$08,$0C,$10,$1C,$10,$18 DB $00,$00,$18,$1C,$24,$3E,$24,$36, $18,$1C,$24,$3E,$24,$36,$18,$1C DB $00,$00,$18,$1C,$24,$3E,$24,$36, $1C,$1E,$04,$0E,$24,$36,$18,$1C DB $00,$00,$30,$38,$30,$38,$00,$38, $00,$00,$30,$38,$30,$38,$00,$38 DB $00,$00,$30,$38,$30,$38,$00,$38, $00,$00,$30,$38,$30,$38,$20,$30 DB $00,$00,$00,$00,$06,$06,$18,$1C, $60,$70,$18,$1C,$06,$06,$00,$00 DB $00,$00,$00,$00,$7C,$7E,$00,$7E, $00,$00,$7C,$7E,$00,$7E,$00,$00 DB $00,$00,$00,$00,$60,$70,$18,$1C, $06,$0E,$18,$1C,$60,$70,$00,$00 DB $00,$00,$38,$3C,$44,$7E,$44,$66, $18,$1C,$10,$18,$00,$00,$10,$18 DB $00,$00,$3C,$3C,$42,$7E,$5A,$7E, $5A,$7E,$5E,$7E,$46,$7E,$28,$3C DB $00,$00,$18,$1C,$24,$3E,$24,$36, $3C,$3E,$24,$3E,$24,$36,$24,$36 DB $00,$00,$38,$3C,$24,$3E,$24,$36, $38,$3C,$24,$3E,$24,$36,$38,$3C DB $00,$00,$18,$1C,$24,$3E,$20,$36, $20,$30,$24,$36,$24,$36,$18,$1C DB $00,$00,$38,$3C,$24,$3E,$24,$36, $24,$36,$24,$36,$24,$36,$38,$3C DB $00,$00,$3C,$3E,$20,$3E,$20,$30, $38,$3C,$20,$3C,$20,$30,$3C,$3E DB $00,$00,$3C,$3E,$20,$3E,$20,$30, $38,$3C,$20,$3C,$20,$30,$20,$30 DB $00,$00,$38,$3C,$44,$7E,$40,$66, $40,$60,$4E,$6E,$44,$66,$3C,$3C DB $00,$00,$44,$66,$44,$66,$44,$66, $7C,$7E,$44,$7E,$44,$66,$44,$66 DB $00,$00,$38,$3C,$10,$3C,$10,$18, $10,$18,$10,$18,$10,$18,$38,$3C DB $00,$00,$1C,$1E,$04,$1E,$04,$06, $04,$06,$24,$36,$24,$36,$18,$1C DB $00,$00,$24,$36,$24,$36,$28,$3C, $30,$38,$28,$3C,$24,$36,$24,$36 DB $00,$00,$20,$30,$20,$30,$20,$30, $20,$30,$20,$30,$20,$30,$3C,$3E DB $00,$00,$44,$66,$6C,$7E,$6C,$7E, $54,$7E,$44,$7E,$44,$66,$44,$66 DB $00,$00,$44,$66,$64,$66,$64,$76, $54,$7E,$4C,$6E,$44,$66,$44,$66 DB $00,$00,$38,$3C,$44,$7E,$44,$66, $44,$66,$44,$66,$44,$66,$38,$3C DB $00,$00,$78,$7C,$44,$7E,$44,$66, $44,$66,$78,$7C,$40,$60,$40,$60 DB $00,$00,$38,$3C,$44,$7E,$44,$66, $44,$66,$4C,$6E,$4C,$6E,$3C,$3E DB $00,$00,$78,$7C,$44,$7E,$44,$66, $44,$66,$78,$7C,$44,$7E,$44,$66 DB $00,$00,$38,$3C,$44,$7E,$40,$62, $38,$3C,$04,$0E,$44,$66,$38,$3C DB $00,$00,$7C,$7E,$10,$7E,$10,$18, $10,$18,$10,$18,$10,$18,$10,$18 DB $00,$00,$44,$66,$44,$66,$44,$66, $44,$66,$44,$66,$44,$66,$38,$3C DB $00,$00,$44,$66,$44,$66,$44,$66, $28,$3C,$28,$3C,$10,$18,$10,$18 DB $00,$00,$44,$66,$44,$66,$44,$66, $54,$7E,$6C,$7E,$6C,$7E,$44,$66 DB $00,$00,$44,$66,$44,$66,$28,$2C, $10,$18,$28,$3C,$44,$66,$44,$66 DB $00,$00,$44,$66,$44,$66,$28,$3C, $10,$18,$10,$18,$10,$18,$10,$18 DB $00,$00,$7C,$7E,$04,$7E,$08,$0C, $10,$18,$10,$18,$20,$30,$7C,$7E DB $00,$00,$1C,$1E,$10,$1E,$10,$18, $10,$18,$10,$18,$10,$1E,$1C,$1E DB $00,$00,$00,$00,$40,$60,$20,$30, $10,$18,$08,$0C,$04,$06,$00,$00 DB $00,$00,$70,$78,$10,$78,$10,$18, $10,$18,$10,$18,$10,$78,$70,$78 DB $00,$00,$08,$08,$14,$1C,$00,$14, $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$7C,$7E,$00,$7E DB $00,$00,$30,$38,$30,$38,$08,$1C, $00,$04,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$18,$1C,$04,$06, $1C,$1E,$24,$36,$1C,$3E,$00,$1E DB $00,$00,$20,$30,$20,$30,$38,$3C, $24,$36,$24,$36,$38,$3C,$00,$18 DB $00,$00,$00,$00,$1C,$1C,$20,$3E, $20,$30,$20,$30,$1C,$3E,$00,$1C DB $00,$00,$04,$06,$04,$06,$1C,$1E, $24,$3E,$24,$36,$1C,$1E,$00,$1E DB $00,$00,$00,$00,$00,$00,$38,$3C, $44,$66,$7C,$7E,$40,$60,$38,$3C DB $00,$00,$00,$00,$08,$0C,$14,$1E, $10,$18,$3C,$3C,$10,$18,$00,$18 DB $00,$00,$00,$00,$1C,$1C,$24,$36, $1C,$1E,$04,$06,$18,$1C,$00,$00 DB $00,$00,$00,$00,$20,$30,$20,$30, $38,$3C,$24,$3E,$24,$36,$00,$36 DB $00,$00,$00,$00,$00,$00,$10,$18, $00,$00,$10,$18,$10,$18,$00,$18 DB $00,$00,$00,$00,$08,$0C,$00,$00, $08,$0C,$08,$0C,$08,$0C,$10,$18 DB $00,$00,$00,$00,$20,$30,$22,$32, $24,$36,$38,$3C,$24,$36,$00,$36 DB $00,$00,$00,$00,$10,$18,$10,$18, $10,$18,$10,$18,$10,$18,$00,$18 DB $00,$00,$00,$00,$00,$00,$28,$3C, $54,$56,$54,$56,$54,$56,$00,$56 DB $00,$00,$00,$00,$00,$00,$38,$3C, $44,$7E,$44,$66,$44,$66,$00,$66 DB $00,$00,$00,$00,$00,$00,$38,$3C, $44,$7E,$44,$66,$44,$66,$38,$3C DB $00,$00,$00,$00,$78,$7C,$44,$7E, $44,$66,$78,$7C,$40,$60,$00,$60 DB $00,$00,$00,$00,$3C,$3E,$44,$7E, $44,$66,$3C,$3E,$04,$06,$00,$06 DB $00,$00,$00,$00,$00,$00,$28,$38, $34,$34,$20,$30,$20,$30,$00,$30 DB $00,$00,$00,$00,$18,$1C,$20,$22, $18,$1C,$04,$06,$18,$3C,$00,$18 DB $00,$00,$00,$00,$10,$18,$38,$3C, $10,$18,$10,$18,$0C,$0C,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $24,$36,$24,$36,$1C,$1E,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $22,$36,$14,$1C,$08,$08,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $54,$7E,$54,$7E,$28,$3C,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00, $24,$36,$18,$1C,$14,$1C,$00,$36 DB $00,$00,$00,$00,$00,$00,$24,$36, $24,$36,$14,$1C,$08,$0C,$30,$38 DB $00,$00,$00,$00,$00,$00,$3C,$3E, $08,$0C,$10,$18,$3C,$3E,$00,$3C DB $00,$00,$0C,$0C,$10,$18,$10,$18, $20,$30,$10,$18,$10,$18,$0C,$0C DB $00,$00,$10,$18,$10,$18,$00,$18, $00,$00,$10,$18,$10,$18,$00,$18 DB $00,$00,$20,$30,$10,$18,$10,$18, $08,$0C,$10,$18,$10,$18,$20,$30 DB $00,$00,$00,$00,$00,$00,$32,$32, $4C,$7E,$00,$4C,$00,$00,$00,$00 DB $00,$00,$64,$66,$54,$76,$54,$76, $54,$76,$54,$76,$66,$77,$00,$66 .Font_ASCII_END