1 คะแนน โดย GN⁺ 2024-05-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ใน Space Quest II 2.0D/2.0F 720KB Disk 1 ของ Sierra On-Line มีซอร์สโค้ดของ AGI interpreter ที่ไม่ปรากฏในรายชื่อไฟล์หลงเหลืออยู่ เป็นกรณีที่ความผิดพลาดในการเตรียมมาสเตอร์ดิสก์ถูกทำซ้ำลงบนดิสก์เชิงพาณิชย์ตามเดิม
  • ใน DOS FAT การลบไฟล์ไม่ได้ลบข้อมูลจริง ๆ แต่เพียงทำเครื่องหมายเซกเตอร์ว่า ไม่ได้ใช้งาน ดังนั้นหากใช้ดิสก์ที่ไม่ได้ฟอร์แมตเป็นมาสเตอร์ ข้อมูลเดิมอาจติดไปกับสำเนาทั้งหมดได้
  • พื้นที่ “free” 402,432 ไบต์ของ Disk 1 ไม่ได้มีค่าถมจากการฟอร์แมต 0xF6 แต่มีซอร์ส C/Assembly หลงเหลืออยู่ และเมื่อดึงออกมาพบ 93 ไฟล์ มากกว่า 15,000 บรรทัด คิดเป็นราว 70% ของซอร์ส AGI interpreter
  • เนื่องจากอุปกรณ์ทำสำเนา FormMaster คัดลอกทุกเซกเตอร์ของดิสก์แบบไบต์ต่อไบต์ ไม่ใช่ระดับไฟล์ จึงเป็นไปได้ว่า ข้อมูลที่ถูกลบแล้ว ซึ่งไม่อยู่ในรายชื่อไฟล์จริงถูกแพร่ไปยังดิสก์สำหรับลูกค้าและร้านค้าปลีกด้วย
  • ความผิดพลาดนี้เกิดขึ้นในเดือนมีนาคม 1988 ช่วงปลายยุค AGI และถูกฝังเงียบอยู่จนกระทั่ง NewRisingSun ค้นพบเป็นที่รู้จักครั้งแรกในเดือนตุลาคม 2016 กลายเป็นหลักฐานโบราณคดีดิจิทัลที่ช่วยส่องดูการทำงานของ AGI ของ Sierra ในอีก 36 ปีต่อมา

ร่องรอยที่ไม่ปรากฏจากรายชื่อไฟล์เพียงอย่างเดียว

  • ฟลอปปีดิสก์ 720KB ของ Space Quest II เวอร์ชัน 2.0D และ 2.0F ภายนอกไม่มีสิ่งพิเศษ และรายชื่อไฟล์ก็ดูเหมือนดิสก์เกม Sierra ทั่วไป
  • ในไดเรกทอรีของ 2.0D ไม่มีไฟล์เพิ่มเติมที่น่าสงสัย และไฟล์ข้อมูลหลักอย่าง PICDIR, LOGDIR, VIEWDIR, SNDDIR, VOL.0, VOL.1 ถูกสร้างเมื่อวันที่ 14 มีนาคม 1988
  • ไฟล์ .OVL มี timestamp วันที่ 15 มีนาคม 1988 ส่วนโค้ด AGI interpreter มี timestamp วันที่ 18 มีนาคม 1988 จึงทิ้งร่องรอยว่าการเตรียม Space Quest II 2.0D ที่สำนักงาน Sierra ดำเนินอยู่เป็นเวลาหนึ่งสัปดาห์
  • พื้นที่ที่ใช้บนดิสก์แสดงเป็น 302,918 ไบต์ และพื้นที่ “free” เป็น 402,432 ไบต์ ทำให้พื้นที่ว่างมีขนาดใหญ่กว่าพื้นที่ที่ใช้แล้ว

พื้นที่ไม่ได้ใช้งานที่เผยให้เห็นด้วย hex editor

  • ใน DOS เซกเตอร์ที่ไม่ได้ใช้งานของฟลอปปีดิสก์ที่ฟอร์แมตใหม่โดยปกติจะถูกเติมด้วยค่าถมจากการฟอร์แมตคือ 0xF6
  • Disk 2 ของ Space Quest II 2.0D มีเซกเตอร์ที่ไม่ได้ใช้งานถูกเติมด้วย 0xF6 แต่ Disk 1 ไม่มีเซกเตอร์ไม่ได้ใช้งานที่ถูกเติมด้วย 0xF6 เลย
  • ใน Disk 1 ความยาวมากที่สุดของไบต์ 0xF6 ที่ต่อเนื่องกันมีเพียง 2 ไบต์ และแม้พื้นที่เกินครึ่งจะเป็น “free” แต่จริง ๆ แล้วมีข้อมูลเก่าหลงเหลืออยู่
  • ในพื้นที่ที่ถูกทำเครื่องหมายว่าไม่ได้ใช้งานมี ข้อความที่ดูเหมือนซอร์สโค้ด C อยู่ ซึ่งชี้อย่างชัดเจนว่าดิสก์นี้เคยถูกใช้เพื่อวัตถุประสงค์อื่นก่อนจะถูกใช้เป็นมาสเตอร์ Space Quest II Disk 1
  • ในระบบไฟล์ DOS FAT การลบไฟล์ไม่ได้ลบข้อมูลจริง แต่เพียงทำเครื่องหมายให้เซกเตอร์นำกลับมาใช้ใหม่ได้ ดังนั้นหากไฟล์ใหม่ไม่เขียนทับ เนื้อหาเดิมก็จะยังคงอยู่

ซอร์สโค้ด AGI interpreter ที่หลงเหลืออยู่

  • เมื่อดึงข้อความ ASCII จากพื้นที่ที่ไม่ได้ใช้งาน พบ ฟังก์ชัน C เช่น DisplayStatusLine และ StatusLineOn
  • DisplayStatusLine เป็นโค้ดที่แสดงบรรทัดข้อความซึ่งรวมคะแนนปัจจุบันและสถานะเสียง on/off และเชื่อมโยงกับแถบสถานะสีขาวด้านบนของหน้าจอ Space Quest II
  • โค้ดนี้ไม่ใช่ข้อมูลเกม แต่เป็นซอร์สโค้ดที่อยู่ใน AGI interpreter เอง ของ Sierra
  • ในเซกเตอร์ที่ไม่ได้ใช้งานมีซอร์สโค้ดจำนวนมาก และเนื่องจากโค้ดถูกเก็บอยู่ในเซกเตอร์ที่ต่อเนื่องกัน จึงดึงออกมาและแยกเป็นรายไฟล์ได้ค่อนข้างง่าย
  • ที่ส่วนต้นของแต่ละไฟล์มีคอมเมนต์ระบุชื่อไฟล์ซอร์ส ทำให้หาจุดแบ่งได้ง่าย และผลการแยกได้ทั้งหมด 93 ไฟล์
    • ไฟล์ซอร์ส C 75 ไฟล์
    • ไฟล์ซอร์ส Assembly 16 ไฟล์
    • ไฟล์ DOS BAT 2 ไฟล์
  • โค้ดทั้งหมดมี มากกว่า 15,000 บรรทัด และไฟล์ส่วนใหญ่มีสภาพสมบูรณ์
  • ในดิสก์นี้มีซอร์สโค้ด AGI interpreter ของ Sierra On-Line ประมาณ 70% พร้อมทั้งคอมเมนต์และประวัติการเปลี่ยนแปลง

ประวัติการเปลี่ยนแปลงและร่องรอยนักพัฒนา

  • คอมเมนต์ header ที่ส่วนต้นของไฟล์ซอร์สบางไฟล์มี Change History รวมอยู่ด้วย
  • header ของ ANIMATE.C มีชื่อไฟล์ซอร์ส คำอธิบายสั้น ๆ ว่า “จัดการแอนิเมชันหนึ่งรอบใน adventure game” และข้อมูลอย่าง compile: MWC
  • MWC ดูเหมือนจะหมายถึงคอมไพเลอร์ C ของ Mark Williams ซึ่งใช้กันมากในเวลานั้น
  • ในประวัติการเปลี่ยนแปลงมีวันที่ เวลา ตัวย่อชื่อผู้แก้ไข และคำอธิบายการเปลี่ยนแปลง
  • ในบรรดาตัวย่อ JAS ตรงกับ Jeff Stephenson ผู้ทำงานหลักกับโค้ด AGI interpreter ส่วน DCI ตรงกับ Chris Iden
  • Robert Heitman ก็ปรากฏด้วย แต่จุดสนใจหลักของเขาคือเครื่องมือกราฟิกอย่าง Picture Editor และ View Editor ขณะที่ Jeff Stephenson และ Chris Iden รับผิดชอบโค้ด interpreter เป็นหลัก

เมโมรีแมปของ AGI.EXE และการคำนวณ 70%

  • ใน Space Quest II 2.0D 720KB Disk 1 นอกจากไฟล์ซอร์ส 93 ไฟล์แล้ว ยังมี เมโมรีแมปของไฟล์ปฏิบัติการ AGI.EXE มากกว่า 2,000 บรรทัด
  • ในเกม AGI สำหรับวางจำหน่าย ชื่อไฟล์ปฏิบัติการของ interpreter จะเป็นเพียง AGI และไม่สามารถรันโดยตรงได้ แต่ระหว่างการพัฒนามีการใช้ interpreter ที่รันได้โดยตรงพร้อมนามสกุล .EXE
  • ใครบางคนที่ Sierra สร้างเมโมรีแมปของ AGI.EXE หรือก็คือ AGI interpreter เมื่อวันที่ 7 ตุลาคม 1987
  • วันที่นี้สอดคล้องกับข้อเท็จจริงที่ว่าคอมเมนต์ล่าสุดในประวัติการเปลี่ยนแปลงของซอร์สโค้ดอยู่ในเดือนกันยายน 1987
  • เมโมรีแมปให้รายชื่อโมดูลและไฟล์ซอร์สที่ประกอบเป็น AGI interpreter ได้ค่อนข้างครบถ้วน
  • ไฟล์ซอร์สที่แตกต่างกันซึ่งปรากฏในเมโมรีแมปมี 98 ไฟล์ และในจำนวนนั้นมีไฟล์ที่อยู่ในดิสก์ SQ2 แบบสมบูรณ์ 71 ไฟล์
  • จากสัดส่วนนี้ จึงคำนวณว่าในดิสก์ Space Quest II มีซอร์สโค้ด AGI interpreter อยู่ประมาณ 70%
  • บางโมดูลมีเพียงไฟล์ header ของ C จึงไม่ถูกนับรวมในการคำนวณนี้

AGI ในฐานะทรัพย์สินทางปัญญาของ Sierra

  • Sierra On-Line เผชิญช่วงเวลาทางธุรกิจที่ยากลำบากราวช่วงเปิดตัว King’s Quest ในปี 1984 และ Ken Williams ต้องเลิกจ้างพนักงานราว 100 คน ลดจำนวนจากประมาณ 130 คนเหลือราว 30 คน
  • หลังจากนั้น ความสำเร็จของระบบเกมผจญภัย AGI และเกมที่สร้างขึ้นบนระบบดังกล่าวช่วยเปลี่ยนสถานการณ์ของบริษัท
  • ช่วงปลายปี 1984 King’s Quest เข้าสู่ 20 อันดับแรกของชาร์ตยอดขายซอฟต์แวร์เกมคอมพิวเตอร์ และอยู่บนชาร์ตต่อเนื่องประมาณครึ่งปีก่อนการเปิดตัว King’s Quest II
  • ข้อตกลงกับ Tandy Radio Shack ซึ่งทำให้สามารถขายเกมเวอร์ชัน Tandy ในร้าน Radio Shack ก็ช่วยได้เช่นกัน
  • ตั้งแต่ปี 1985 ถึง 1988 เกม AGI ขายดีอย่างต่อเนื่อง และ AGI interpreter เป็นทั้งช่องทางรายได้สำคัญและ ทรัพย์สินทางปัญญา แกนหลักของ Sierra On-Line
  • การที่ซอร์สโค้ด AGI interpreter 70% ถูกทำสำเนาเป็นจำนวนมากและส่งไปยังลูกค้านับหมื่นหรือนับแสนราย ถือเป็นความผิดพลาดครั้งใหญ่สำหรับ Sierra

ผลกระทบจากมาสเตอร์ดิสก์ที่ลืมฟอร์แมต

  • เมื่อ Sierra เตรียมปล่อยเกมใหม่ จะสร้าง มาสเตอร์ดิสก์ production copy สำหรับใช้กับอุปกรณ์ทำสำเนาดิสก์ FormMaster
  • FormMaster ไม่ได้คัดลอกเฉพาะไฟล์จากมาสเตอร์ดิสก์ แต่คัดลอกทุกเซกเตอร์ของดิสก์แบบไบต์ต่อไบต์ ไม่ว่าจะถูกใช้งานอยู่หรือไม่
  • ใน Space Quest II 2.0D และ 2.0F Disk 1 วิธีนี้ทำให้ 402,432 ไบต์ ที่ไม่ได้ถูกใช้เป็นไฟล์จริงถูกคัดลอกไปด้วย
  • ในขั้นตอนเตรียมมาสเตอร์ดิสก์ จำเป็นต้องฟอร์แมตดิสก์อย่างสมบูรณ์ก่อนคัดลอกไฟล์เกม และ Sierra ก็ทำขั้นตอนนี้อย่างถูกต้องในดิสก์เกมต้นฉบับส่วนใหญ่
  • สำหรับ Space Quest II 2.0D Disk 1 ดูเหมือนว่าใครบางคนลืมขั้นตอนการฟอร์แมตนี้ และดิสก์เดียวกันก็ถูกใช้กับ 2.0F ด้วย
  • ผลคือมีความเป็นไปได้ว่าดิสก์ SQ2 หลายแสนแผ่นที่ส่งถึงลูกค้าและร้านค้าปลีกมีซอร์สโค้ด AGI interpreter 70% ซ่อนอยู่ภายใน

กรณีโบราณคดีดิจิทัลที่เพิ่งเป็นที่รู้ในปี 2016

  • เหตุการณ์นี้แทบจะแน่นอนว่าเป็นความผิดพลาดโดยไม่ตั้งใจ และดูเหมือนว่า Sierra คู่แข่ง หรือลูกค้า ต่างก็ไม่ได้สังเกตเห็นในเวลานั้น
  • การค้นพบที่เป็นที่รู้จักครั้งแรกเกิดขึ้นโดยผู้ใช้ออนไลน์ NewRisingSun ในเดือนตุลาคม 2016
  • การที่เหตุการณ์นี้เกิดขึ้นช่วงปลายยุค AGI ก็มีความสำคัญเช่นกัน
    • ในเดือนมีนาคม 1988 Sierra ได้พัฒนาระบบเกมผจญภัย SCI แล้ว
    • กำลังจะเปิดตัว King’s Quest IV ซึ่งเป็นเกมแรกที่ใช้ SCI
  • หากช่วงเวลาที่ซอร์สโค้ด AGI interpreter อาจถูกเปิดเผยโดยความผิดพลาดเกิดเร็วขึ้นอีกเพียง 1–2 ปี ก็อาจกลายเป็นปัญหาที่ใหญ่กว่านี้ได้
  • ซอร์สโค้ด AGI interpreter ที่ถูกดึงออกมาถูกอัปโหลดไว้ใน GitHub repository
  • การใช้งาน AGILE ซึ่งเป็น AGI interpreter แบบเว็บ เดิมได้รับความช่วยเหลือบางส่วนจากซอร์สโค้ด AGI

1 ความคิดเห็น

 
GN⁺ 2024-05-24
ความคิดเห็นจาก Hacker News
  • Double Dragon II: The Revenge เวอร์ชัน DOS ปี 1989 ถูกแจกจ่ายบนฟลอปปีดิสก์ 2 แผ่น และหนึ่งในนั้นมีไฟล์บีบอัดที่ลบแล้วซึ่งบรรจุซอร์สโค้ดทั้งหมดอยู่
    แม้จะมองไม่เห็นด้วยคำสั่ง DIR แต่ก็สามารถกู้คืนได้ง่าย: https://tcrf.net/Double_Dragon_II:The_Revenge(DOS)

    • เวลาเปิด ROM ดูแล้วเจอกรณีที่ ชื่อไดเรกทอรีและไฟล์ ถูกฝังลงไปในซิลิคอนตรงๆ ระหว่างขั้นตอนคอมไพล์นี่สนุกเสมอ
      น่าขำตรงที่แม้ในยุคที่ไบต์ทุกไบต์มีมูลค่าเป็นเงินจริงๆ ก็ยังมีหลายกรณีที่รายการ FAT ของใครบางคนถูกเบิร์นลงไปในตลับเกมด้วย
      https://forums.nesdev.org/viewtopic.php?t=17324
    • อาจเป็นคำถามงี่เง่านิดหน่อย แต่ฉันสงสัยว่าเรื่องแบบนี้เกิดขึ้นได้อย่างไร
      เขาน่าจะทำเกมจนเสร็จแล้วสร้าง มาสเตอร์ดิสก์ สักอย่างเพื่อส่งไปโรงงานผลิตจำนวนมาก เลยสงสัยว่าไฟล์บีบอัดที่ลบแล้วเข้าไปอยู่ในมาสเตอร์ได้อย่างไร หรือว่าคัดลอกผิดแล้วค่อยมาลบก่อนวางขาย?
    • นี่คือ เกมมัลติเพลเยอร์ เกมที่สองที่ฉันเคยเล่น ตอนที่ไปบ้านเพื่อนแล้วได้ลองบนคอมพิวเตอร์ของพ่อเพื่อน
      เกมแรกก็เป็น Spacewar! เวอร์ชัน DOS บนเครื่องเดียวกันนี่แหละ ถ้าจำไม่ผิด พอไปถึงบอสเกมจะค้าง เลยไม่เคยเล่น Double Dragon II จนจบ แต่ก็เป็นความทรงจำที่ดี
  • ช่วงนี้ฉันทำ การวิศวกรรมย้อนกลับ ROM ของซินธิไซเซอร์ เยอะมาก
    ใน ROM ของ Yamaha DX9 มีเศษของตารางสัญลักษณ์เฟิร์มแวร์อยู่ในพื้นที่ว่างที่เหลือในไบนารี[0] และยังมีบล็อกโค้ด 6303 ขนาดใหญ่ที่ดูเหมือนจะมาจากระบบพัฒนาอยู่ด้วย เวลาบังเอิญเจออะไรแบบนี้มันให้ความรู้สึกน่าทึ่งจริงๆ ฉันอินกับเรื่องแนวนี้มากจนรู้สึกเหมือนเป็นนักโบราณคดีซอฟต์แวร์ที่ได้แอบมองอดีต และก็หลุดเข้าโพรงกระต่ายลึกเพื่อหาว่า Yamaha ใช้เครื่องมือพัฒนาอะไร แม้จะยังหาข้อสรุปชัดเจนไม่ได้ แต่การได้อ่านเอกสารเครื่องมือพัฒนาในยุคนั้นก็ยิ่งทำให้รู้สึกขอบคุณเวิร์กโฟลว์สมัยใหม่
    0: https://ajxs.me/blog/Hacking_the_Yamaha_DX9_To_Turn_It_Into_...

    • ฉันก็ชอบงานวิศวกรรมย้อนกลับฝั่งซินธิไซเซอร์เหมือนกัน เลยเคยวิเคราะห์ Yamaha A-sampler และทำเครื่องมือจัดการให้ผู้ใช้ดิสก์ Yamaha A-sampler ทำงานพื้นฐานได้เร็วขึ้น
      ฉันใช้ BeBox วิเคราะห์ raw I/O และเซกเตอร์ดิสก์แบบ raw เยอะมาก เพราะ BeOS มีเครื่องมือที่เหมาะกับการแฮ็กระบบไฟล์มาก จากนั้นก็เอาไปสร้างไดรเวอร์ระบบไฟล์สำหรับ Windows ซึ่งทำงานได้ดีพอจน Yamaha ให้การสนับสนุน ถ้าวันไหนคุณมีไฟอยากวิศวกรรมย้อนกลับ Yamaha ROM สำหรับ A-sampler ก็อยากให้ติดต่อมา ฉันสนใจด้านนี้มาก งาน DX9/DX7 ก็ดีมาก และในฐานะคนที่ใช้ซินธิไซเซอร์ทั้งสองตัวมาตั้งแต่ตอนวางขาย มันน่าสนุกจริงๆ
  • เกมนี้มีอิทธิพลกับวัยเด็กของฉันอย่างรุนแรงมาก จนพอมองย้อนจากตอนนี้กลับไป มันแทบให้ความรู้สึกเหมือนความฝัน
    ถ้าจะลองจินตนาการว่าทุกวันนี้มีเกมอะไรที่ทำให้รู้สึก ผูกพัน แบบเดียวกัน ก็ดูเป็นไปไม่ได้ เพราะทุกอย่างรอบตัวตอนนี้ดูเหมือนเป็นแค่เกม รายการ หรือสิ่งของ แต่ Space Quest 2, 3, 4 กลับพันอยู่กับ DNA ของฉันราวกับเป็นส่วนพื้นฐานของตัวตน

    • Space Quest III คือเกม Sierra เกมแรกของฉัน และมันมีพลังแบบนั้นจริงๆ
      เกม Sierra ช่วงนั้นพิเศษมาก โดยเฉพาะ Police Quest II, LSL III และ Hero's Quest ที่ฉันเล่นเยอะในช่วงใกล้ๆ กัน เกม Sierra แบบข้อความบน EGA มีอะไรบางอย่างที่เหมือนเวทมนตร์ และสำหรับฉันมันเป็นจุดเชื่อมทางอารมณ์และความคิดสร้างสรรค์ที่พอดีอย่างยิ่งระหว่าง Infocom กับเวอร์ชัน VGA แบบชี้แล้วคลิกในภายหลัง
    • ฉันเริ่มจากภาค 6 แต่หลังจากนั้นก็ย้อนกลับไปเล่นภาค 1~5 และแน่นอนว่ามันกลายเป็นส่วนหนึ่งของบุคลิกแกนกลางของฉัน
      Space Quest ยังผูกพันกับเรื่องราว อินเทอร์เน็ตยุคแรก ที่ฉันชอบที่สุดด้วย ตอนที่เว็บไซต์ส่วนใหญ่ยังโฮสต์อยู่บน Geocities และโดยนักศึกษามหาวิทยาลัยที่ว่างจัด มีแฟนไซต์ Space Quest อยู่แห่งหนึ่ง ฉันส่งอีเมลไปหาผู้ดูแลหนึ่งในเว็บ SQ ใหญ่ๆ บอกว่าฉันชอบเกมกับเว็บไซต์นั้น ตอนนั้นฉันอายุราว 14 ปี และเขาตอบกลับมาว่าสามารถส่งเกมต้นฉบับให้ฉันได้ในราคาประมาณ 40 ดอลลาร์ เป็นชุดต้นฉบับครบพร้อมกล่องและฟลอปปีดิสก์ทั้งหมด ราวปี 1997 การส่งเงิน 40 ดอลลาร์ให้คนแปลกหน้าที่อยู่อีกฟากประเทศแล้วหวังว่าเขาจะส่งของมาจริงๆ ก็ชวนกังวลอยู่บ้าง แต่เขาก็ส่งมาจริงๆ ไม่กี่สัปดาห์ต่อมาเกมทั้งหมดก็มาถึงตรงตามคำอธิบาย และฉันดีใจมาก มันทำให้ฉันกลายเป็นผู้ศรัทธาเต็มตัวในชั่วข้ามคืน และยังเป็นเหมือนแกนสุริยะของความมองโลกในแง่ดีที่ฉันยึดไว้จนถึงทุกวันนี้ Jess ถ้าคุณยังอยู่ที่ไหนสักแห่ง คุณคือของจริง หวังว่าสักวันเราจะได้เจอกันอีก
    • ฉันก็รู้สึกคล้ายกันมาก
      พ่อของฉันทำงานที่โรงถลุงเหล็ก และเป็นเพื่อนกับ คนดูแลคอมพิวเตอร์ ที่นั่น เขาให้สำเนา SQ2 มาให้ลองเล่นที่บ้าน ฉันเล่นเกมนั้นอย่างบ้าคลั่ง แต่ตอนนั้นยังเด็กมากจึงงงกับหลายส่วน พอไปต่อไม่ได้จริงๆ ฉันจะขอให้พ่อถามคนดูแลคอมพิวเตอร์คนนั้นว่าต้องผ่านจุดนั้นอย่างไร และดูเหมือนว่าแทนที่จะบอกคำตอบตรงๆ เขาจะให้คำใบ้อย่างใจดี ผ่านมา 35 ปีแล้ว แต่ฉันยังจำความฝันหลายครั้งที่เกี่ยวกับเกมนั้นได้ค่อนข้างละเอียด มันมีอิทธิพลมากจริงๆ
    • ฉันก็รู้สึกแบบเดียวกัน แต่โดยเฉพาะกับ Space Quest II
      SQ I ฉันเล่นทีหลังมาก และ SQ III ก็ไม่โดนใจฉันแรงขนาดนั้น ที่เหลือก็ไม่ใช่เกม EGA ที่พิมพ์ข้อความป้อนคำสั่งแล้ว SQ II ทำให้ความทรงจำผุดขึ้นมามากมาย และฉันก็เรียนภาษาอังกฤษจากมันได้พอสมควร ฉันยังจำความพอใจตอนค้นพบว่าคุณสามารถทำ “rub berries” กับ Roger Wilco ได้
    • ตอนช่วยสิ่งมีชีวิตช่วงต้นเกม ฉันดีใจมากที่ free little dude ถูกกินไป
      นี่เป็นเกมแรกที่ฉันเล่นในแนวนี้ และตอนอายุราวสิบขวบ ฉันก็ติดมันอยู่เป็นสัปดาห์ๆ
  • ไม่คิดว่าเอนจิน AGI จะมี ซอร์สลับ พิเศษอะไรถึงขั้นที่คู่แข่งจะได้ประโยชน์มากจากการรั่วไหลนี้
    อาจมีตัวอย่างอื่นก็ได้ แต่ Hugo's House of Horrors เป็นเกมสไตล์ AGI ที่คนคนเดียวสร้างขึ้นหลายปีให้หลัง สิ่งที่ทำให้เกมของ Sierra ประสบความสำเร็จเกินกว่าความแปลกใหม่ระยะแรกของกราฟิกแอดเวนเจอร์ คือการทุ่มเทอย่างมหาศาลในการทำกราฟิกและเขียนตัวเกมจริง ๆ ไม่ได้แปลว่าเทคโนโลยีไม่มีความสำคัญเลย แต่สัดส่วนของมันในผลงานสุดท้ายนั้นค่อนข้างเล็ก

    • ในยุคนั้นการหาข้อมูลและโค้ดตัวอย่างที่ใช้ประโยชน์ได้ยากกว่ามาก
      การเรียนรู้จากซอฟต์แวร์ที่ใช้งานได้จริงและการสร้างมันขึ้นมานั้นยากกว่ายุคนี้อย่างมหาศาล และแทบไม่มีอะไรให้ยึดเป็นฐานเลย บน MS-DOS แทบไม่มีโอเพนซอร์สที่มีความหมาย และยิ่งไม่มีโอเพนซอร์สเกมเอนจินด้วยซ้ำ ในสภาพแวดล้อมแบบนั้น ถ้า ซอร์ส AGI รั่วไหลออกไปอย่างกว้างขวาง อย่างน้อยมันก็น่าจะมีความหมายมากพอสมควรในฐานะแบบพิมพ์เขียวที่แสดงให้เห็นว่าเกมพีซียอดนิยมที่สุดในเวลานั้นถูกสร้างขึ้นอย่างไร
    • บางครั้งก็สงสัยว่าโค้ดต้นฉบับที่รั่วไหลมีคุณค่าจริงแค่ไหน
      โดยเฉพาะถ้าเป็นโค้ดที่ไม่ได้มีความลับอย่างคีย์หรือแบ็กดอร์ที่แฮ็กเกอร์จะเอาไปใช้ในทางที่ผิดได้ ยิ่งน่าสงสัยเข้าไปใหญ่ โค้ดที่รั่วไหลย่อมไม่มีไลเซนส์อยู่แล้ว ดังนั้นถ้าไม่อยากโดนฟ้อง ก็เอาไปใช้ซ้ำตรง ๆ ในผลิตภัณฑ์ของตัวเองไม่ได้ สุดท้ายก็ต้องอ่านโค้ดนั้น ทำความเข้าใจเทคนิค แล้วนำไปประยุกต์ใช้กับงานของตัวเองโดยไม่ให้มีกลิ่นของการละเมิดลิขสิทธิ์ ซึ่งโดยมากยากกว่าการทำใหม่ตั้งแต่ต้นเสียอีก ต่อให้มีกรณีที่ได้เปรียบจริง ก็ยังสงสัยว่ามันจะกลายเป็นความได้เปรียบทางการแข่งขันจริง ๆ บ่อยแค่ไหน นักพัฒนายังเลือกเขียนโค้ดใหม่แม้จะมีโอเพนซอร์สที่มีเอกสารดีและไลเซนส์แบบผ่อนปรนให้อยู่แล้ว การอ่านโค้ดมักยากกว่าการเขียน และแม้แต่การคอมไพล์ใหม่เฉย ๆ ก็อาจยังยาก แค่อาจช่วยให้การทำสำเนาง่ายขึ้นเล็กน้อย แต่เกมสมัยนั้นก็มักถูกแคร็กและแจกจ่ายภายในไม่กี่วันอยู่แล้ว และโค้ดป้องกันการคัดลอกก็อาจไม่ได้รวมอยู่ในซอร์สด้วยซ้ำ
    • ฟังดูเหมือนคำพูดของคนที่โตมาใน “ยุคที่สร้างอะไรสักอย่างได้โดยไม่ต้องใช้ ASM หรือ C”
      จำนวนคนที่พูดภาษาพวกนั้นได้เองก็น่าจะน้อยกว่าหลายหลักอยู่แล้ว และคนที่สร้างอะไรที่มีความสอดคล้องด้วยมันได้ก็น้อยยิ่งกว่า
    • ตอนนั้น อัตราการเรียนรู้ ของโครงข่ายประสาทภายในแทบจะถูกเร่งขึ้นไปเกือบสุดแล้ว
      ทุกวันนี้มันลดลงเร็วมาก ทำให้สิ่งที่เราเจอในตอนนี้มีพลังในการกำหนดค่าน้ำหนักภายในไม่มากเท่ากับเมื่อก่อน
  • ชอบ คอมเมนต์ประวัติการเปลี่ยนแปลง มากจริง ๆ
    มันแสดงให้เห็นถึงความละเอียดรอบคอบและความเป็นช่างฝีมือในระดับสูง ในยุคก่อนที่เครื่องมือจัดการซอร์สจะทำให้เรื่องพวกนี้มองเห็นได้ชัดเจนกว่ามาก พูดตามตรง แม้หลังจาก CVS/SVN/Git แล้ว หลายคนก็ยังทำให้มันชัดเจนไม่ได้อยู่ดี เรื่องนี้ยังทำให้นึกถึงบทความชื่อดัง ‘No Silver Bullet’[1] ที่เขียนในปี 1986 ซึ่งคาดการณ์ว่าซอฟต์แวร์ต่อจากนั้นก็จะยังคงเป็นสิ่งที่โปรแกรมเมอร์ต้องค่อย ๆ เขียนคำสั่งทีละบรรทัดอย่างยากลำบากต่อไป โค้ดเอนจินเกมและคอมเมนต์ในโพสต์ต้นทางดูคล้ายกับสิ่งที่ฉันเองก็น่าจะเขียนในวันนี้มาก ซึ่งสำหรับฉันมันแทบจะเป็นการสนับสนุนคำทำนายนั้นแม้ผ่านไปเกือบ 40 ปีแล้ว
    [1] https://en.wikipedia.org/wiki/No_Silver_Bullet

    • ทุกวันนี้ก็ยังเห็นข้อความ commit ของ git อย่าง “fix” หรือ “stuff” เยอะเกินไปอยู่ดี
  • ในเวอร์ชัน Famicom ของ Air Fortress มีของที่ถูกใส่ไว้ใน ROM โดยไม่ได้ตั้งใจมากจนน่าเหลือเชื่อ
    มีทั้งโค้ด ASM ที่ยังไม่ถูกคอมไพล์ รายการไดเรกทอรีของ MS-DOS สตริงจาก EXE ตัวหนึ่งที่ใช้ตอนบิลด์เกม และอีกหลายอย่าง ตลับเวอร์ชันญี่ปุ่นมีขนาด 128+128KB ต่อมาพอทำเวอร์ชันอเมริกาสำหรับ NES ก็พบว่าข้อมูลกราฟิกเกือบทั้งหมดใน 128KB เป็นกราฟิกซ้ำหรือไม่ได้ใช้ และกราฟิกที่เป็นเอกลักษณ์จริง ๆ มีเพียงราว 36KB จึงลบภาพดาวเคราะห์ภาพหนึ่งในฉากจบออกเพื่อลดกราฟิกลงเหลือ 32KB แล้ววางจำหน่ายด้วยตลับ 128+32KB แทน 128+128KB
    Source: https://tcrf.net/Air_Fortress

  • เรื่องแบบนี้เกิดขึ้นบ่อยมากจริง ๆ
    The Cutting Room Floor ลิสต์ไว้ราว 500 เกม ตั้งแต่กรณีที่มีโค้ดถูกใส่มาโดยบังเอิญเพียงเล็กน้อย ไปจนถึงกรณีที่ใส่มาแทบทั้งหมด
    https://tcrf.net/Category:Games_with_uncompiled_source_code

    • ลองเช็กเร็ว ๆ แล้ว ดูเหมือนกรณีโค้ดเอนจิน AGI ที่ยังไม่คอมไพล์บน ดิสก์ Space Quest II แผ่นนี้ยังไม่มีอยู่ในนั้น
      สงสัยว่าคนอื่นจะมองเหมือนกันไหม บนดิสก์ของ King's Quest III ก็เกิดเรื่องแบบเดียวกัน และจริง ๆ แล้วดูเหมือนจะเกิดขึ้นแทบจะช่วงเวลาเดียวกับกรณีของ Space Quest II เลย
  • ส่วนที่ชอบที่สุดคือดูเหมือนว่าไม่มีใครค้นพบ ซอร์สโค้ด ที่วางอยู่บนดิสก์นี้เลยตลอดหนึ่งชั่วอายุคน
    “น่าทึ่งที่ดูเหมือนทั้ง Sierra, คู่แข่ง และลูกค้า ต่างก็ไม่ได้สังเกตว่ามีเรื่องนี้เกิดขึ้น และมันเพิ่งถูกค้นพบในอีกหลายสิบปีต่อมา การค้นพบครั้งแรกที่ทราบกันคือโดยผู้ใช้ออนไลน์ชื่อ NewRisingSun ในเดือนตุลาคม 2016” มันยังทำให้นึกถึงการค้นพบครั้งใหญ่ล่าสุดเกี่ยวกับ Tetris และ Super Mario Bros. ตอนเด็ก ๆ ที่เล่นเกมเหล่านี้ ฉันเคยคิดว่าพอผ่านไปหลายสิบปีมันคงเหลือเป็นเพียงวัตถุโบราณที่ถูกลืม และคงรันไม่ได้แล้วนอกจากโดยนักสะสมสายฮาร์ดคอร์ที่สุดเท่านั้น แต่อินเทอร์เน็ตและอีมูเลเตอร์ได้ปลุกชีวิตใหม่ให้เกมยุคแรกและโลกคอมพิวติ้งยุคแรกเหล่านั้น

    • ดูเหมือนประโยคสุดท้ายจะให้คำตอบอยู่แล้ว
      น่าจะมีคนเจอไฟล์ที่ถูกลบแน่ ๆ แต่ก่อนอินเทอร์เน็ตจะแพร่หลาย จึงมีโอกาสสูงที่มันจะไม่ถูกเผยแพร่อย่างกว้างขวางหรือไม่ได้ถูกบันทึกไว้
    • มีคนใช้เครื่องมือสมัยใหม่อย่าง flux imaging เพื่อเก็บรักษาซอฟต์แวร์เก่าและทำสำเนาดิสก์ได้อย่างสมบูรณ์
      ระหว่างอิมเมจดิสก์เหล่านี้ ใครสักคนอาจพบข้อมูลที่ยังหลงเหลืออยู่ในพื้นที่ว่างก็ได้
  • ระหว่างปี 1987 ถึง 1993 ได้เตรียม มาสเตอร์ดิสก์ ราวเก้าแผ่นสำหรับแอป Mac สองตัว
    ใช้ฟลอปปีดิสก์แผ่นใหม่ทุกครั้ง และมีเช็กลิสต์ยาวสำหรับตรวจสอบว่าดิสก์ถูกต้อง โชคดีที่ทุกอย่างออกมาดี โดยเฉพาะบางแผ่นถูกใช้เพื่อผลิตดิสก์ถึง 100,000 แผ่น ดีแล้วที่ทุกวันนี้ไม่มีใครต้องทำงานแบบนี้แล้ว

    • ทุกวันนี้ก็ยังทำอะไรคล้ายกันอยู่ เพียงแต่ชื่อมันคือ Docker layer
      เคยเห็นเลเยอร์แบบนี้: base, เพิ่มเครื่องมือ, เพิ่มซอร์สโค้ด, คอมไพล์, ลบซอร์สโค้ด, ลบเครื่องมือที่เพิ่ม, ปล่อยออกใช้จริง แล้วก็เกิดสถานการณ์แบบ “ทำไม Docker image มันใหญ่ขนาดนี้? เอาน่า พื้นที่เก็บข้อมูลก็ถูกอยู่แล้ว...” ทั้งที่ก็มีวิธีแก้ง่าย ๆ อย่าง multi-stage build ( https://docs.docker.com/build/building/multi-stage/ ) แต่ถ้าไม่รู้ว่าในมุมมองปัจจุบันของ Docker image ยังรวมเลเยอร์ก่อนหน้าทั้งหมดอยู่ด้วย ความผิดพลาดแบบนี้ก็ยังเกิดขึ้นได้เป็นครั้งคราว
  • ในยุคที่ยังสร้างผลลัพธ์สำหรับรีลีสกันด้วยมือ มักมีของตกค้างที่ไม่ได้ตั้งใจจะปล่อยออกไปรวมอยู่บ่อย ๆ
    อย่างเช่นคอนเทนต์ที่ถูกตัดออก[1] หรือ debug symbol[2] ตอนที่ฉันบังเอิญเจอ debug symbol ที่ซ่อนอยู่ใน data archive ของเดโมเวอร์ชันวิดีโอเกมที่กำลัง reverse engineer อยู่ มันทั้งนอกความคาดหมายและช่วยได้มากทีเดียว ทุกวันนี้ด้วย CI/CD, automated build และแนวปฏิบัติการพัฒนาสมัยใหม่อื่น ๆ เรื่องแบบนี้น่าจะเกิดขึ้นน้อยลง
    [1] https://tcrf.net
    [2] https://www.retroreversing.com/games/symbols

    • สงสัยว่าแนวปฏิบัติที่ดีอย่าง CI/CD อาจไม่ได้แพร่หลายในงานพัฒนาเกมมากอย่างที่คิด
    • CI/CD pipeline ก็อาจให้ผลตรงกันข้ามได้
      ถ้าไม่มีข้อผิดพลาด ก็ไม่มีใครไปไล่อ่านคอนโซลเอาต์พุตหลายพันบรรทัด และถึงแพ็กเกจรีลีสสุดท้ายจะมีของที่ไม่จำเป็นปนมาเยอะเกินไป การทดสอบก็มักจะยังผ่านอยู่ดี ดังนั้นสัญชาตญาณของฉันกลับมองตรงข้าม มันอาจเกิดขึ้นบ่อยกว่าเดิม หรืออย่างน้อย CI/CD ก็อาจทำให้เรื่องแบบนี้เกิดได้ง่ายกว่าการบิลด์แบบแมนนวล ปัจจัยอื่นก็อาจมีส่วนด้วย