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. |
|
|
|
| |