- Duke Nukem: Zero Hour เป็นโครงการโอเพนซอร์สที่ดีคอมไพล์ ROM สำหรับ Nintendo 64 ได้อย่างสมบูรณ์
- โปรเจกต์นี้ได้ ฟื้นฟูซอร์สโค้ดทั้งหมดของซอฟต์แวร์เกมต้นฉบับ ให้ครบ 100%
- ผู้ใช้ต้องเป็นเจ้าของ ROM ของเกมเอง และสามารถคอมไพล์และทดสอบได้เต็มรูปแบบผ่าน ROM ต้นฉบับเวอร์ชันสหรัฐฯ หรือฝรั่งเศส
- เมื่อเทียบกับโครงการดีคอมไพล์ที่มีมาก่อนหน้าแล้ว โครงการนี้มีจุดเด่นทางเทคนิคด้วย ความเข้ากันได้การทำงานที่สมบูรณ์และการรองรับเครื่องมือดีบัก
- โครงการนี้เป็นแหล่งข้อมูลที่มีคุณค่าอย่างมากสำหรับ การวิจัย การดัดแปลง การพอร์ต และการวิเคราะห์เอนจินเกม
ความสำคัญและความสามารถในการแข่งขัน
- Duke Nukem: Zero Hour เป็นเกมแอ็กชันชื่อดังที่วางจำหน่ายแบบเฉพาะบนแพลตฟอร์ม Nintendo 64
- โครงการโอเพนซอร์สนี้ได้ดีคอมไพล์ ROM ทั้งหมดของเกมดังกล่าว ด้วย C, Python และภาษาอื่น ๆ อย่างครบถ้วน แล้วนำไปสร้างโครงสร้างใหม่ระดับซอร์สโค้ด
- แตกต่างจากโครงการดีคอมไพล์ของ N64 อื่น ๆ โครงการนี้ได้รับการรับรองความเข้ากันได้อย่างสมบูรณ์ โดยรองรับการสร้างและรัน ROM ปกติ การดีบักระดับซอร์สโค้ด รวมถึงรองรับหลายเวอร์ชัน
- มีคุณค่าเชิงต้นแบบสูงในการศึกษาโครงสร้างเอนจินเกมและความรู้การพัฒนาเกมคอนโซลในยุค 1990
- เครื่องมือวิเคราะห์/ดีคอมไพล์อัตโนมัติหลายตัว (เช่น asm-differ, mips2c, splat, decomp-permuter ฯลฯ) ถูกนำมาบูรณาการในโปรเจกต์เพื่อเพิ่มประสิทธิภาพนักพัฒนาให้สูงสุด
คุณสมบัติหลักและโครงสร้าง
โครงสร้างโดยรวม
- โครงการนี้พัฒนาด้วยหลายภาษา โดยประกอบด้วยส่วนต่าง ๆ ที่เขียนด้วย C (มากกว่า 95%), Python, Roff, C++, Makefile และ Shell
- ไดเรกทอรีหลัก:
- .github/workflows: การตั้งค่า CI และการทำงานอัตโนมัติ
- include, libs, src: การจัดการซอร์สโค้ดเกม ไลบรารี และไฟล์ Header
- tools: เครื่องมือสำหรับวิเคราะห์ สกัด และแปลง
- versions: โครงสร้างที่รองรับหลายเวอร์ชันของเกม เช่น US/FR
- มีการ commit เกือบ 370 ครั้ง แสดงถึงการดูแลรักษาอย่างแข็งขัน
สรุปการ build และการใช้งาน
- รองรับสภาพแวดล้อม Ubuntu 20.04 และ Docker
- รองรับการสกัด ROM, การเปรียบเทียบระดับบิต และโหมด NON_MATCHING
- รองรับ ROM เวอร์ชันฝรั่งเศสและเวอร์ชันสหรัฐฯ และอนุญาตให้กำหนดตัวเลือกตามความต้องการของผู้ใช้
- ใช้สภาพแวดล้อม Docker และ Mutagen Extension เพื่อรองรับความเข้ากันได้ระหว่างระบบปฏิบัติการต่าง ๆ (WIN/Mac/Linux)
เครื่องมือดีบักและการพัฒนา
- รองรับการดีบักระดับซอร์สโค้ดด้วย gdb และ mupen64plus (ปัจจุบันให้ความสำคัญกับ Windows เป็นหลัก)
- รองรับการเชื่อมต่อกับ Visual Studio Code และ Native Debug Extension
- เครื่องมืออัตโนมัติและวิเคราะห์หลัก:
- asm-differ: เปรียบเทียบซอร์สและโค้ดเป้าหมายในระดับแอสเซมบลี
- decomp-permuter: ปรับลำดับโค้ดและให้คะแนนอัตโนมัติ
- mips2c: แปลงโค้ดจาก MIPS assembly เป็น C
- splat: เครื่องมือวิเคราะห์โครงสร้าง ROM
การนำไปใช้
- เปิดโอกาสสำหรับการรีเวิร์สวิศวกรรมเกม การพอร์ต การวิเคราะห์เอนจิน และการใช้ซอร์สสำหรับโครงการปรับปรุงเกมคลาสสิก
- เหมาะอย่างยิ่งสำหรับการอนุรักษ์ทางประวัติศาสตร์และการศึกษางานวิจัยทางการศึกษา
- การดูแลรักษาและอัปเดตสำหรับหลายแพลตฟอร์มและหลายเวอร์ชันยังคงดำเนินไปอย่างคึกคัก
สรุป
- โครงการโอเพนซอร์สนี้เป็นตัวอย่างที่หายากซึ่งทำให้การเปิดเผยซอร์สโค้ดเต็มรูปแบบของซอฟต์แวร์เกมคอนโซลคลาสสิกยุค 1990s เป็นจริง
- เป็นทรัพยากรที่มีค่ามากสำหรับนักวิจัยด้านรีเวิร์สวิศวกรรมเกมและคอนโซล นักพัฒนารุ่นใหม่ ผู้พอร์ตเกม และผู้สร้างเกมแฟนๆ
1 ความคิดเห็น
ความเห็นบน Hacker News