หน้าแรก / บทความ / Dev Tools
Dev Tools วิเคราะห์จากสเปค + รีวิว

วิเคราะห์และรีวิว: พอร์ต Babylonian Twins เกม Amiga ปี 1993 สู่ Godot ด้วย Claude อ่าน Assembly 68000

วิเคราะห์การพอร์ต Babylonian Twins เกม Amiga ปี 1993 มา Godot 4 โดยใช้ Claude อ่านโค้ด 68000 assembly กว่า 7 หมื่นบรรทัด พร้อมประเมินผลลัพธ์และข้อจำกัด

วิเคราะห์และรีวิว: พอร์ต Babylonian Twins เกม Amiga ปี 1993 สู่ Godot ด้วย Claude อ่าน Assembly 68000

Babylonian Twins คือเกม Amiga 500 ที่ออกในปี 1993 เขียนด้วย 68000 assembly ล้วนๆ ไม่มีซอร์สโค้ดภาษาอื่นเจือปน ผู้พัฒนาต้นฉบับตัดสินใจพอร์ตมันมา Godot 4 โดยให้ Claude รุ่น Fable 5 ที่ทำงานผ่าน Claude Code เข้าถึงไฟล์ต้นฉบับได้โดยตรง เพื่อช่วยไล่อ่านโค้ดเครื่องกว่า 72,758 บรรทัดที่กระจายอยู่ใน 26 ไฟล์

โจทย์ไม่ใช่แค่แปลงเกมให้รันได้บนเอนจินใหม่ แต่คือการตัดสินใจทีละจุดว่า logic ไหนควรรักษาไว้ตามต้นฉบับ ส่วนไหนควรเขียนใหม่ให้เข้ากับ Godot และจังหวะหรือข้อจำกัดแบบไหนที่เคยเป็นเอกลักษณ์ของเกมจนไม่ควรทิ้งไป

Babylonian Twins คือเกมอะไร ทำไมถึงคุ้มค่าจะปลุกกลับมา

Babylonian Twins เป็นเกมพัซเซิลแพลตฟอร์มที่ให้ผู้เล่นควบคุมตัวละครสองตัวพร้อมกัน วางขายเฉพาะบน Amiga 500 ในปี 1993 และไม่เคยมีเวอร์ชันพอร์ตอย่างเป็นทางการมาก่อน ทำให้ตัวเกมผูกติดกับฮาร์ดแวร์ยุคนั้นแทบทุกจุด ตั้งแต่จังหวะการวาดสไปรต์ไปจนถึงเอฟเฟกต์ copper list ที่ไล่สีท้องฟ้าและทำน้ำเป็นคลื่น

หน้าจอเกม Babylonian Twins เวอร์ชัน Amiga ต้นฉบับเทียบกับเวอร์ชัน Godot
ซ้าย: Amiga 500 ต้นฉบับปี 1993 / ขวา: เวอร์ชัน Godot 4

เกมแบบนี้แหละที่เป็นด่านทดสอบที่ดีของแนวคิด “ให้ LLM อ่านโค้ดเครื่องแทนคน” เพราะไม่มีเอกสารประกอบเหลืออยู่เลย มีแต่ไฟล์ assembly กับพฤติกรรมที่เห็นบนจอ

โจทย์จริง: assembly 68000 กว่า 7 หมื่นบรรทัดที่ไม่มีคอมเมนต์สักบรรทัด

โค้ดต้นฉบับทั้งหมด 72,758 บรรทัด กระจายอยู่ใน 26 ไฟล์ ไม่มีคอมเมนต์อธิบายเจตนาแม้แต่บรรทัดเดียว การแก้บั๊กหรือทำความเข้าใจกติกาเกมต้องอาศัยการเดาจากพฤติกรรมที่เห็นบนหน้าจอมากกว่าอ่านโค้ดตรงๆ แค่จะเปลี่ยนภาพหรือปรับเมนูก็เสี่ยงกระทบระบบอื่นโดยไม่รู้ตัว

ตรงนี้เองที่ Claude เข้ามามีบทบาท มันไล่อ่านคำสั่งทีละบล็อก อธิบายว่าค่าตัวแปรแต่ละตัวถูกใช้ทำอะไร และช่วยตามรอยเงื่อนไขของศัตรู การชน หรือจังหวะเปลี่ยนฉาก ให้กลายเป็นคำอธิบายที่มนุษย์อ่านแล้วเข้าใจได้ ก่อนจะนำไปเขียนใหม่เป็น GDScript

Claude อ่านโค้ดเครื่องแล้วแปลงเป็นระบบ Godot ได้แม่นแค่ไหน

ผลลัพธ์ที่ชัดที่สุดคือแผนที่ทั้งห้าด่านถูกดึงออกมาสร้างใหม่ได้ตรงกับต้นฉบับแบบพิกเซลต่อพิกเซล เมื่อเทียบกับภาพจับหน้าจอเก่าก็ไม่มีจุดต่างเลย เอฟเฟกต์ copper list อย่างไล่สีท้องฟ้าและคลื่นน้ำก็ถูกถอดรหัสกลับมาได้ รวมถึงสไปรต์แบบ planar ที่ต้องตีความทิศทางเฟรมซึ่งเดิมทีกำกวมมาก

ตัวอย่างโค้ด 68000 assembly ต้นฉบับพร้อมคำอธิบายที่ Claude สร้างขึ้นระหว่างพอร์ต
Claude ไล่อ่าน 68000 assembly แล้วอธิบายลำดับการทำงานก่อนแปลงเป็น GDScript

ทีมงานยังใช้ vasm ประกอบไฟล์ 1993 ต้นฉบับกลับมาเทียบ จนได้ไบนารีที่ตรงกับของเดิมทุกไบต์ ซึ่งช่วยยืนยันว่าความเข้าใจที่ Claude สรุปออกมานั้นตรงกับพฤติกรรมจริงของเกม ไม่ใช่แค่การเดาที่ฟังดูสมเหตุสมผล

สิ่งที่เปลี่ยนไปเทียบกับต้นฉบับปี 1993

Factor Amiga 500 ต้นฉบับ (1993)เวอร์ชัน Godot 4
ความถี่รีเฟรช 50Hz ตามฮาร์ดแวร์เดิม60Hz พร้อมโหมดคลาสสิกให้เลือกเล่นแบบ 50Hz
แผนที่และภาพ สไปรต์และ copper list ของ Amigaสร้างใหม่ตรงกับต้นฉบับระดับพิกเซล
การควบคุม จอยสติ๊กและคีย์บอร์ดยุค 90sรองรับเกมแพดและอุปกรณ์ปัจจุบัน
แพลตฟอร์ม จำกัดเฉพาะ Amiga 500iOS, Android, และ Steam (Windows/Mac/Linux)
โครงสร้างโค้ด 68000 assembly 72,758 บรรทัดฉากและสคริปต์ GDScript ที่แก้ไขได้ง่ายกว่า
เวอร์ชันต้นฉบับ -แนบเกมปี 1993 ตัวจริงไว้เป็นโหมดโบนัส

เวอร์ชัน iOS และ Android เปิดให้เล่นแล้ว ส่วน Steam จะตามมาในช่วงปลายปี 2026 พร้อมเดโมให้ทดลองก่อน จุดที่น่าสนใจคือทีมงานแนบเกมปี 1993 ตัวจริงไว้เป็นโหมดโบนัสในเวอร์ชันใหม่ด้วย ไม่ใช่แค่ทำวิดีโอเปรียบเทียบให้ดูเฉยๆ

บั๊กเก่าที่โผล่มาระหว่างการพอร์ต

การให้ Claude ไล่อ่านโค้ดทีละบรรทัดยังเผยบั๊กที่ซ่อนอยู่ในเวอร์ชันต้นฉบับมานานสามทศวรรษ เช่น AI ของทหารยามที่สามารถทำดาเมจผู้เล่นทะลุผ่านหินทึบได้ในบางจังหวะ และจุดที่ข้อความสอนวิธีเล่นบนประตูทางออกของด่านแรกไม่เคยแสดงผลจริง

ฉากในเกม Babylonian Twins เวอร์ชัน Godot ที่แสดงจุดบั๊กเดิมซึ่งถูกแก้ไขระหว่างการพอร์ต
บั๊ก AI ทหารยามและข้อความสอนเล่นที่หายไปในต้นฉบับ ถูกพบระหว่างไล่อ่านโค้ด

บั๊กแบบนี้ไม่มีทางเจอได้ถ้าแค่เล่นเทียบสองเวอร์ชันเฉยๆ ต้องอาศัยการอ่านเงื่อนไขในโค้ดจริงถึงจะรู้ว่าอะไรคือพฤติกรรมที่ตั้งใจ กับอะไรคือบั๊กที่หลุดมาตั้งแต่ปี 1993

ถ้าไม่ใช้ Godot กับ LLM มีทางเลือกอะไรบ้าง

Factor Godot + Claudeจำลองฮาร์ดแวร์เดิมเอนจินเชิงพาณิชย์Reverse engineer ไม่ใช้ LLM
ความแม่นยำ สูง เมื่อตรวจสอบกับไบนารีต้นฉบับสูงมากขึ้นกับการเขียนใหม่สูง แต่ใช้แรงคนมาก
เวลาในการพัฒนา เร็วขึ้นชัดเจนนานปานกลางถึงนานนานมาก
การควบคุมผลลัพธ์ สูง เพราะเขียนใหม่เป็นโค้ดที่แก้ได้จำกัดด้วยข้อจำกัดฮาร์ดแวร์เดิมปานกลางสูง แต่ต้องเข้าใจเองทั้งหมด
ดูแลระยะยาว ง่ายกว่า เพราะโค้ดอ่านออกยากขึ้นเรื่อยๆ เมื่อเครื่องมือเก่าหายากขึ้นกับใบอนุญาตเอนจินขึ้นกับเอกสารที่ทำไว้

การจำลองฮาร์ดแวร์เดิมยังให้ความแม่นยำสูงสุดถ้าต้องการประสบการณ์ต้นฉบับแบบเป๊ะทุกจุด แต่ดูแลรักษายากขึ้นเรื่อยๆ เมื่อเครื่องมือและความรู้เกี่ยวกับ Amiga หายากขึ้น ส่วนการ reverse engineer เองโดยไม่พึ่ง LLM ให้การควบคุมผลลัพธ์สูงเท่ากัน แต่ต้องแลกกับเวลาที่มากกว่าหลายเท่า

จุดแข็งที่เห็นชัด และข้อจำกัดที่ต้องยอมรับ

การให้ Claude อ่าน 68000 assembly ช่วยร่นเวลาทำความเข้าใจโค้ดเก่าที่ไม่มีเอกสารได้มาก และยังช่วยเจอบั๊กที่ซ่อนอยู่มาสามสิบปี แต่คำอธิบายที่ได้ก็ยังต้องผ่านการตรวจสอบกับไบนารีจริงทุกจุด อย่างที่ทีมงานใช้ vasm รีบิลด์เทียบให้ตรงกันแบบไบต์ต่อไบต์ ผมว่านี่คือขั้นตอนที่ขาดไม่ได้เลยครับ เพราะถ้าข้ามไปจะแยกไม่ออกเลยว่าอะไรคือพฤติกรรมเดิม กับอะไรคือความเข้าใจผิดที่หลุดเข้ามาระหว่างพอร์ต

ข้อดี

  • +อ่าน 68000 assembly กว่า 7 หมื่นบรรทัดและสรุปพฤติกรรมเกมได้เร็วกว่าคนไล่เอง
  • +ช่วยเจอบั๊กเดิมที่ซ่อนอยู่ในโค้ดมานานสามสิบปี เช่น AI ทหารยามที่ทำดาเมจทะลุกำแพง

ข้อเสีย

  • คำอธิบายของ LLM อาจผิด ต้องตรวจกับไบนารีต้นฉบับทุกจุดสำคัญ
  • แยกบั๊กจากโค้ดเดิมกับบั๊กที่เกิดระหว่างพอร์ตยังต้องใช้แรงคนตรวจสอบมาก

บทเรียนจากการชุบชีวิตเกมเก่าด้วย LLM

Babylonian Twins แสดงให้เห็นว่า LLM อย่าง Claude ทำหน้าที่ได้มากกว่าแค่แปลงโค้ดให้รันได้ มันช่วยตีความเจตนาของผู้สร้างเดิมที่ไม่มีเอกสารเหลืออยู่แล้ว และยังช่วยขุดบั๊กที่ซ่อนมาตั้งแต่ยุคที่เกมยังทดสอบด้วยมือล้วนๆ

สิ่งที่ยังต้องมีอยู่เสมอคือคนที่คอยตัดสินใจว่าอะไรควรรักษา อะไรควรเขียนใหม่ และอะไรอาจหายไปได้ระหว่างทาง สำหรับใครที่มีเกมเก่าค้างคาใจอยู่ นี่อาจเป็นจังหวะที่เหมาะจะเริ่มบันทึกว่าโค้ดทำงานอย่างไร ก่อนที่ไฟล์ต้นฉบับและความทรงจำของคนทำจะหายไปจริงๆ