Sufficiency Economy
Group Blog
 
All blogs
 
Gameboy Programming [1] : แสดง background

หลักการแสดงภาพ background 
1. รอช่วง VBank เพื่อ copy ข้อมูลลง VRAM แต่ตัวอย่างที่แสดงเอาง่ายคือรอ VBank และปิดหน้าจอเลย หุๆ ใช้ register ชื่อrLY และ rLCDC
2. ตำแหน่งของ VRAM ที่ไว้ใส่ Background มี 2 method (8000 และ 8800)จำนวน Tile มากสุดคือ 256
block การเก็บข้อมูล Tile มี 3 block  คือ
block 0 : $8000-87FF
block 1 : $8800-8FFF
block 3 : $9000-97FF
เราเลือก method 8800 คือ เก็บข้อมูลที่  block3(1-128) ด้วย block1(129-256)
หมายเหตุ สำหรับ sprite จะเก็บที่ block 0 เสมอ ทำให้มีการซ้อนทับข้อมูลTile(ใช้ข้อมูลร่วมกันระหว่าง background กับ Tile) ใน block1
3. กำหนดสี palette มี 4 สี คือ white, light gray, dark gray และ black 00, 01, 10, 11 ตามลำดับ ใช้ register ชื่อ rBGP 
ld a, %11100100
ld [rBGP], a
แสดงว่า index 0 คือ white -> index 3 คือ black
4. โครงสร้างของ Tile : 1 Tile ใช้ 2 plane ถ้าต้องการเขียนกล่องสี่เหลี่ยม จะมีข้อมูลประมาณนี้
;Plane1
;11111111 $FF
;10000001 $81
;10000001
;10000001
;10000001
;10000001
;10000001
;11111111

;Plane2
;11111111
;10000001
;10000001
;10000001
;10000001
;10000001
;10000001
;11111111

โดยการเรียงจะสลับ plane1 และ plane2 คนละ 1 byte คือ
db $FF,$FF,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$FF,$FF 

5. การเขียนข้อมูล เชียนเป็น function ? ประมาณนี้ source: de และ destination : hl
Memcpy:
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or c
jr nz, Memcpy
ret

ตัวอย่างโปรแกรม มั่วๆ เป็นตามนี้
source code

load assember จาก https://rgbds.gbdev.io
พิมพ์ make




Create Date : 24 ตุลาคม 2563
Last Update : 24 ตุลาคม 2563 13:53:04 น. 0 comments
Counter : 693 Pageviews.

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.