เขียนเกม บนเครื่อง 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. |
|
|
|
| |