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