- ผู้สร้างได้นำเกม "Another World" มาสร้างใหม่เป็นฮาร์ดแวร์โดยใช้ FPGA รุ่น UP5K
- เกมทำงานบนเครื่องเสมือน (VM) ที่เรียกใช้ blitter และ rasterizer เพื่อสร้างกราฟิก
- ผู้สร้างได้พัฒนาอิมพลีเมนต์ฮาร์ดแวร์ของ VM, blitter และ rasterizer บน FPGA
- การออกแบบนี้อยู่ภายในข้อจำกัดด้านทรัพยากรของ FPGA และใช้หน่วยความจำ SPRAM ขนาด 128KB
- ผู้สร้างเริ่มต้นจากการทำความเข้าใจการไหลของข้อมูลผ่านข้อมูลเกมและโค้ด
- การออกแบบมี SoC ที่เชื่อมทุกอย่างเข้าด้วยกันและเพิ่มการรีเฟรชหน้าจอ
- framebuffer ใช้บล็อก SPRAM และ framebuffer แต่ละตัวแมปเข้ากับบล็อก SPRAM ได้อย่างพอดี
- คอนโทรลเลอร์แสดงผลสตรีมพิกเซลที่ 25 MHz และใช้ double buffering เพื่อป้องกันการกะพริบ
- blitter สามารถคัดลอกเนื้อหาจาก framebuffer หนึ่งไปยังอีก framebuffer หรือเติม framebuffer ด้วยสีเดียว
- ผู้สร้างประสบความสำเร็จในการสร้างเกมขึ้นใหม่บนฮาร์ดแวร์ที่รันได้บนบอร์ด FPGA หลายรุ่น
- บทความนี้พูดถึงการอิมพลีเมนต์ blitter และ rasterizer ภายในเอนจินเกม
- ยูนิต blitter จะคัดลอกพิกเซลในช่วง vblank ส่วนยูนิต rasterizer จะวาดรูปหลายเหลี่ยมลงบน framebuffer
- blitter จะตรวจสอบ start pulse และเติมสีหากมีการระบุไว้
- rasterizer อ่านจุดยอดของรูปหลายเหลี่ยมจาก dual-port BRAM เพื่อวาดรูปหลายเหลี่ยมเว้า
- rasterizer ใช้เทคนิค palette trick เพื่อรองรับความโปร่งใส และสามารถคัดลอกพิกเซลจาก source framebuffer อื่นได้
- เอนจินเกมมีเอนจินวาดฟอนต์รวมอยู่ด้วย และรองรับฉากหลังที่เรนเดอร์ไว้ล่วงหน้า
- กระบวนการบิลด์รวมถึงการคัดลอกไฟล์ข้อมูลเกม และรันการจำลองหรือเล่นเกมบนฮาร์ดแวร์แพลตฟอร์มอื่น
- บทความนี้กล่าวถึงการพัฒนาฮาร์ดแวร์ดีไซน์ที่ทำงานบน FPGA สำหรับเกม Another World
- ผู้สร้างยังระบุว่ายังมีงานอีกหลายอย่างที่ต้องทำให้เสร็จ เช่น ทดสอบเกม ปรับแต่งไทมิง แก้ปัญหาการเรนเดอร์ และเพิ่มดนตรี
- ผู้สร้างยังกล่าวถึงการเชื่อมส่วนอื่น ๆ ของเกมและความเป็นไปได้ในการบันทึกสถานะเกม
- การนำฮาร์ดแวร์ชุดนี้ไปใช้สร้างเกมหรือเดโมอื่นก็ถูกกล่าวถึงว่าเป็นโปรเจกต์ในอนาคตที่น่าสนใจ
- บทความนี้ให้ลิงก์ไปยังแหล่งข้อมูลที่เกี่ยวข้องกับชุดบล็อกซีรีส์ พอร์ต และเครื่องมือต่าง ๆ
- ดีไซน์ Silice ที่ใช้ในโปรเจกต์นี้อยู่ภายใต้สัญญาอนุญาต MIT ส่วน C++ พอร์ตที่ดัดแปลงแล้วยังคงใช้สัญญาอนุญาต GPL เดิม
- บทความนี้ยังอธิบายคำสำคัญอย่าง framebuffer, rasterizer, blitter และเครื่องเสมือน (VM) สำหรับผู้อ่านที่ไม่คุ้นเคยกับวงการนี้
1 ความคิดเห็น
ความเห็นจาก Hacker News