Sufficiency Economy
Group Blog
 
All blogs
 
เขียนเกม บนเครื่อง Nintendo DS : Vertical Blank Interrupts

Vertical Blank Interrupts
การ update ภาพที่อยู่บนหน้าจอ ระบบจะดำเนินการโดยเขียนข้อมูลจาก บน ซ้ายสุด (0,0) แล้วเคลื่อนที่ไปทางขวามือ จนสุด ก็จะได้ข้อมูลบรรทัดที่หนึ่ง(255,0) ต่อจากนั้น จะทำการเลื่อนไปเขียนข้อมูลบรรทัดที่สองโดยเริ่มจากซ้ายมือสุด(0,1) ไปทางขวามือ จะเห็นได้ว่ามีช่วงเวลาว่างขณะที่การเลื่อนไปเขียนข้อมูลด้านซ้ายมือ ซึ่งเราเรียกว่า Horizontal Bank Interrupts ซึ่งเป็นเวลาไม่ค่อยมาก แต่เมื่อเขียนข้อมูลจนถึงบรรทัดสุดท้ายตำแหน่ง (255,191) จะมีการเลื่อนไปเขียนข้อมูลที่ (0,0) อีกครั้ง ซึ่งช่วงเวลานี้เรียกว่า Vertical Blank Interrupts ซึ่งจะนานว่า HBlank
จากตัวอย่างที่แล้ว ที่ภาพกระพริบก็เนื่องจาก เราได้เขียนข้อมูลเข้า memory ในช่วงที่ระบบกำลัง Update ข้อมูล ดังนั้นเพื่อไม่ให้เกิดลักษณะดังกล่าว จึงต้องรอให้เกิด Vertical Blank ก่อน แล้วจึงเขียนข้อมูล
หรือพูดอีกอย่างหนึ่งว่าเขียนข้อมูลขณะที่ ระบบกำลังเลือนไปเขียนข้อมูลที่ (0,0) แต่อย่างไรก็ตาม ถ้าเราใช้เวลาในการเขียนข้อมูลมาก (คิดว่าเกิน 1/20 วินาที) ก็จะทำให้เกิดภาพกระพริบได้เหมือนกัน เพราะเลยช่วง VBlank นั้นเอง คำสั่งก็คือ
การตั้งการ Interrupts
irqInit();
irqSet(IRQ_VBLANK, 0);
irqEnable(IRQ_VBLANK);

และ การตรวจสอบการเกิด VBlank
swiWaitForVBlank();

ส่วนคำสั่ง powerON( POWER_LCD | POWER_2D_B );
เป็นการตั้งค่าเริ่มต้นเกี่ยวกับการแสดงผล เพื่อให้ Register ต่างๆ มีค่าที่เหมาะสมก่อนใช้งาน



Create Date : 05 กรกฎาคม 2551
Last Update : 5 กรกฎาคม 2551 20:18:23 น. 0 comments
Counter : 612 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.