0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゲームボーイタイル表示の仕組み

0
Posted at

目的

ゲームボーイのタイル表示の仕組みを調べたので記録しておきます。

実験

截图 2026-09-07 21-04-08
rgbasm -o main.o main.asm && \
rgblink -o main.gb main.o && \
rgbfix -v -p 0xFF main.gb && \
../SameBoy-master/build/bin/SDL/sameboy main.gb
main.asm
SECTION "Entry", ROM0[$0100]
    jp start

SECTION "Main", ROM0[$0150]

start:
    di ; 割り込み禁止
    ld sp, $FFFE ; スタック設定
    
    ; 画面描画停止
    xor a
    ldh[$FF40], a
    
    ; 画面全体を白くする(タイル1を白で初期化して画面全体に適応)
    ld hl, white_tile ; 真っ白(全0)のデータが登録されているタイル
    ld de, $8000+1*16 ; タイル1の開始アドレス
    ld bc, 16         ; 1タイルのバイト数    
    call memcpy
        
    ; 画面全体にタイル1(真っ白)を登録する
    ld bc, 32*32
    ld hl, $9800
tile_init:
    ld [hl],1
    inc hl
    dec bc
    ld a, b
    or c
    jr nz, tile_init
        
    ;  実験用タイル0
    ld hl, tile
    ld de, $8000
    ld bc, 16
    call memcpy
    
    ld hl, $9800
    ld [hl],0    ; 実験用タイル
    
    ; パレット
    ld a, %11100100 ; 4色(11 10 01 00)を設定
    ld [$FF47], a
    
    ; 画面描画再開: BG有効
    ld a, %10010001
    ldh [$FF40], a

hang:
    jr hang
    
; メモリ複製関数
; HL=元, DE=先, BC=長さ
memcpy:
    ld a, [hl]
    ld [de], a
    inc hl
    inc de
    dec bc
    ld a, b      ; B==CならBC==0 (B==$FF,C==$FFの時は失敗する)
    or c
    jr nz,memcpy ; BC!=0なら繰り返す
    ret

; 1タイル = 16バイト(1pixel=2byte)
tile:
    db %11111111, %11111111
    db %00000000, %11111111
    db %11111111, %00000000
    db %01010101, %01010101
    db %00000000, %01010101
    db %01010101, %00000000
    db %00000000, %00000000
    db %00000000, %00000000

white_tile:
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
    db %00000000, %00000000
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?