แหกกฎบอร์ดเกม! สร้างเครื่องเกม 12 เหลี่ยม (Dodecahedron) รันโค้ด Assembly ดิบๆ บน Raspberry Pi 3

Bare-metal Dodecahedron Game Console
เครื่องเล่นเกมพกพารูปทรง 12 เหลี่ยมที่ทำงานด้วยสถาปัตยกรรม Bare-metal บน Raspberry Pi 3

สวัสดีชาว Maker และสายเรโทรเกมเมอร์ทุกคนครับ! 🎮 ถ้าพูดถึงระบบคอมพิวเตอร์ทั่วไป "ระบบปฏิบัติการ" (OS) อย่าง Windows หรือ Linux คือสิ่งที่ขาดไม่ได้ใช่ไหมครับ? แต่มันก็แลกมาด้วยการกินทรัพยากร (RAM Overhead) มหาศาล ซึ่งในยุคเครื่องเกมระดับตำนานอย่าง NES หรือ Famicom เขา ไม่มี OS นะครับ เปิดเครื่องปุ๊บทำงานปั๊บ!

ด้วยความหลงใหลในยุคคลาสสิก คุณ [Inkbox] จึงตัดสินใจหยิบบอร์ด Raspberry Pi 3 ที่ฝุ่นจับมาตั้งแต่ปี 2016 มาปัดฝุ่นใหม่ เพื่อสร้างเครื่องเกมพกพาทรง 12 เหลี่ยม (Dodecahedron) พร้อมตั้งเป้าว่า "จะต้องเขียนเกมลงไปแบบดิบๆ ไม่ผ่าน OS (Bare-metal) ด้วยภาษา Assembly!"

ทำไมต้องทรง 12 เหลี่ยม? (Hardware Design) 🎲

เหตุผลที่คุณ Inkbox เลือกทรงนี้ เขาบอกขำๆ ว่าเพราะชื่อ GameCube มันโดนจดลิขสิทธิ์ไปแล้วไงล่ะ! (ฮา) แม้ว่ารูปทรงนี้อาจจะใส่กระเป๋ายากไปหน่อย แต่มันถูกออกแบบมาให้ "จับถนัดมือ" สุดๆ ครับ:

  • สองด้านของรูปทรง 12 เหลี่ยม ถูกเจาะใส่ปุ่มกดฝั่งละ 6 ปุ่ม
  • ปุ่มทั้งหมดต่อเข้าขา GPIO ของ Pi ผ่านวงจร Schmitt trigger เพื่อป้องกันปุ่มเบิ้ล (Hardware debounce)
  • เพิ่มความคลาสสิกด้วยการใช้ "ตลับเกม" ที่ดัดแปลงเอา SD Card มาแปะบนแผ่น PCB ขนาดใหญ่ ซึ่งเป็นไอเดียเจ๋งๆ จาก a project we featured before. ที่เคยนำเสนอไปครับ

💡 Maker's Tip: การทำเครื่องเกมพกพาแบบนี้ การออกแบบและพิมพ์เคส 3D คือหัวใจสำคัญเลยครับ!

หากเพื่อนๆ มีไอเดียอยากสร้าง Gadget ล้ำๆ หรือหาอะไหล่ทำเครื่องเกม (เช่น บอร์ด Raspberry Pi, จอแสดงผล, ปุ่มกด Arcade) แวะมาช้อปปิ้งได้ที่ร้านเราเลยครับ หรือถ้าอยากได้เคสเกมทรงแปลกๆ ทาง Globalbyte Shop ก็มี บริการรับปริ้นท์ 3D (3D Printing Service) ช่วยสานฝันให้เป็นจริง! ทัก LINE OA มาปรึกษาได้เลยครับ!

ความโหดของภาษา Assembly (Bare-Metal Programming) 💻

ความพีคของโปรเจกต์นี้ไม่ได้อยู่ที่รูปทรงครับ แต่อยู่ที่การเขียนโปรแกรม! การทำ programming bare-metal games for a Rasberry Pi 3 ด้วยสถาปัตยกรรม ARM Assembly คือการเข้าไปคุยกับซีพียูตรงๆ โดยไม่มี OS มาคอยช่วยจัดการหน่วยความจำให้

ในหน้า GitHub อาจจะยังไม่มีคู่มือละเอียดมากนัก แนะนำให้ watch the video เพื่อดูขั้นตอนการสร้างครับ (ช่วงนาทีที่ 7 เป็นต้นไปจะเป็นเรื่องโค้ดดิ้ง) ถึงแม้เขาจะไม่ได้มานั่งอธิบายโค้ดเกม PacMan ทีละบรรทัด แต่เขาก็ใจดีเปิดซอร์สโค้ดเกมให้เราเข้าไปแกะดูได้ที่นี่เลย does have it in the repository (และมีไฟล์ STL สำหรับปริ้นท์เคสแจกด้วยนะ!)

⚠️ ข้อควรรู้สำหรับสายโค้ดดิ้ง (Coding Alert)

ท้ายที่สุดแล้ว ถึงเครื่องนี้จะเกิดมาเพื่อรันโค้ดดิบๆ แต่คุณ Inkbox ก็มีทำตลับเกมสำหรับรันระบบ RetroPi เพื่อใช้เล่น Emulator เกมเก่าๆ ได้ด้วย (ซึ่งเราก็เดาว่าเครื่องนี้น่าจะโดนเอาไปใช้เล่น RetroPi ซะมากกว่ารันโค้ด Assembly แหละครับ 😂)

วิดีโอ: Making A Bare Metal Portable Game Console 🎬

📚 แหล่งข้อมูลศึกษาเพิ่มเติม (หลงรัก Assembly):

สำหรับใครที่มี a soft spot (ความชื่นชอบ) ในการเขียนภาษา Assembly เพื่อรีดประสิทธิภาพสูงสุดของฮาร์ดแวร์ เราขอแนะนำบทความเกี่ยวกับการเขียนแอสเซมบลีบนสถาปัตยกรรมต่างๆ ไม่ว่าจะเป็น good old 6502, the open-source RISC V architecture, or even the absolute monster of op codes that is x86. ให้ไปเสพความรู้กันต่อครับ!

*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากบทความเทคโนโลยีต่างประเทศ การเขียนโปรแกรมแบบ Bare-metal ต้องอาศัยความเข้าใจเชิงลึกเกี่ยวกับสถาปัตยกรรมของซีพียู (ARM) หากสนใจแนะนำให้ ศึกษาจาก Repository ต้นฉบับ หรือดูวิดีโอสาธิตอย่างละเอียดเพื่อทำความเข้าใจกระบวนการทำงานครับ

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี