1 คะแนน โดย GN⁺ 2024-05-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ความผิดพลาดของมาสเตอร์ดิสก์ Space Quest II

  • 22 พฤษภาคม 2024
  • ภายนอกของดิสก์นี้ดูไม่มีอะไรพิเศษ แต่ข้อมูลที่บันทึกอยู่ภายในมีบางสิ่งที่ Sierra On-Line คงไม่เคยรู้มาก่อน และคงไม่ต้องการให้รวมอยู่ด้วย
  • หากคุณมีฟลอปปีดิสก์ 720KB ของคอลเล็กชันเกมผจญภัย Sierra คุณไม่ได้เป็นคนเดียว
  • เวอร์ชัน 2.0D และ 2.0F ของ Space Quest II ไม่ได้หายาก

รายการไดเรกทอรีธรรมดา ๆ

  • เมื่อดูรายการไฟล์บนดิสก์ ก็ไม่มีอะไรผิดสังเกต
  • หากดูรายการของเวอร์ชัน 2.0D ก็ไม่ต่างจากดิสก์เกม Sierra อื่น ๆ
  • ไทม์สแตมป์แสดงว่าไฟล์ข้อมูลหลักของเกม (PICDIR, LOGDIR, VIEWDIR, SNDDIR, VOL.0, VOL.1) ถูกสร้างขึ้นเมื่อวันที่ 14 มีนาคม 1988
  • ไฟล์ .OVL ถูกสร้างเมื่อวันที่ 15 มีนาคม 1988 และโค้ด AGI interpreter ถูกสร้างเมื่อวันที่ 18 มีนาคม 1988
  • สิ่งที่ผิดปกติในรายการไดเรกทอรีคือพื้นที่ "ที่ไม่ได้ใช้งาน" ของดิสก์มีมากกว่าพื้นที่ที่ใช้งานอยู่ โดยมีการใช้ไป 302,918 ไบต์ และแสดงว่ามี 402,432 ไบต์ที่ไม่ได้ใช้งาน

การใช้ hex editor

  • หากต้องการดูให้ละเอียดว่าบนดิสก์มีอะไรอยู่ จำเป็นต้องใช้เครื่องมือที่เรียกว่า hex editor
  • ในยุค 1980 มักใช้ Norton Utilities และในปัจจุบัน HxD Hex Editor ที่เขียนโดย Maël Hörz เป็นทางเลือกที่ยอดเยี่ยม
  • บนฟลอปปีดิสก์ DOS ที่ฟอร์แมตใหม่แล้ว เซกเตอร์ที่ไม่ได้ใช้งานควรถูกเติมด้วยค่าไบต์ 0xF6
  • ดิสก์ 2 ของ Space Quest II เวอร์ชัน 2.0D เป็นไปตามกรณีนี้ แต่ดิสก์ 1 ไม่มีเซกเตอร์ที่ถูกเติมด้วยไบต์ 0xF6 เลย
  • เซกเตอร์ที่ไม่ได้ใช้งานของดิสก์ 1 กลับถูกเติมด้วยสิ่งที่ดูเหมือนซอร์สโค้ดภาษา C
  • สิ่งนี้ชี้อย่างชัดเจนว่ามาสเตอร์ดิสก์เคยถูกใช้เพื่อวัตถุประสงค์อื่นมาก่อน และหลังจากลบไฟล์แล้วก็ไม่ได้ฟอร์แมตอย่างถูกต้อง

ซอร์สโค้ดของ AGI interpreter

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

ประวัติการแก้ไขของไฟล์ซอร์ส

  • ไฟล์ซอร์สบางไฟล์มีประวัติการเปลี่ยนแปลงอยู่ในคอมเมนต์ส่วนหัว
  • ตัวอย่างเช่น คอมเมนต์ส่วนหัวของไฟล์ซอร์ส ANIMATE.C มีชื่อไฟล์ คำอธิบายหน้าที่ ชื่อคอมไพเลอร์ (MWC) และประวัติการเปลี่ยนแปลง
  • โปรแกรมเมอร์ใช้ตัวย่อชื่อของตนเพื่อระบุตัวเอง
  • JAS คือ Jeff Stephenson ซึ่งเป็นโปรแกรมเมอร์หลักที่ทำงานกับโค้ด AGI interpreter และ DCI คือ Chris Iden
  • มีการกล่าวถึง Robert Heitman เช่นกัน แต่เขามุ่งเน้นหลักไปที่เครื่องมือกราฟิก

แผนที่หน่วยความจำของ AGI.EXE

  • ดิสก์ 1 แบบ 720KB ของ SQ2 2.0D ยังมีแผนที่หน่วยความจำของไฟล์ปฏิบัติการ AGI.EXE รวมอยู่ด้วย
  • แผนที่หน่วยความจำนี้ให้รายการโมดูลและไฟล์ซอร์สที่ประกอบกันเป็น AGI interpreter
  • มีการกล่าวถึงไฟล์ซอร์สทั้งหมด 98 ไฟล์ โดยในนั้น 71 ไฟล์รวมอยู่ในดิสก์ SQ2 อย่างครบถ้วน
  • นั่นหมายความว่าดิสก์ SQ2 มีซอร์สโค้ด AGI interpreter อยู่ประมาณ 70%

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

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

เรื่องนี้เกิดขึ้นได้อย่างไร?

  • เมื่อมีการเตรียมเกมเวอร์ชันใหม่ จะมีการสร้างมาสเตอร์ดิสก์ "สำเนาสำหรับการผลิต" เพื่อใช้กับเครื่องทำสำเนาดิสก์ FormMaster
  • เครื่องนี้จะคัดลอกทุกไบต์บนดิสก์
  • ดิสก์ 1 ของ Space Quest II เวอร์ชัน 2.0D และ 2.0F ถูกนำมาใช้โดยไม่ได้ฟอร์แมต
  • ผลที่ตามมาคือดิสก์ SQ2 หลายแสนแผ่นมีซอร์สโค้ด AGI interpreter อยู่ 70%

วิกฤตที่รอดพ้นมาได้

  • แทบจะแน่นอนว่าเป็นความผิดพลาดที่ไม่ได้ตั้งใจ
  • ทั้ง Sierra คู่แข่ง และลูกค้า ต่างก็ไม่สังเกตเห็นเรื่องนี้
  • มีการค้นพบครั้งแรกในเดือนตุลาคม 2016 โดยผู้ใช้ออนไลน์ชื่อ NewRisingSun
  • เนื่องจากเรื่องนี้เกิดขึ้นในช่วงท้ายยุค AGI จึงไม่ได้กลายเป็นปัญหาใหญ่
  • นี่เป็นเรื่องราวด้านโบราณคดีดิจิทัลที่น่าสนใจ และทำให้เราได้เห็นว่า Sierra On-Line เขียน AGI interpreter กันอย่างไร

สำหรับผู้ที่สนใจ มีการอัปโหลดซอร์สโค้ด AGI interpreter ที่ดึงออกมาได้ไว้ใน GitHub repository: https://github.com/lanceewing/agi

ลองดู AGILE ซึ่งเป็น AGI interpreter แบบเว็บ โดยอิมพลีเมนต์นี้ได้รับแนวทางจากซอร์สโค้ด AGI ดั้งเดิม


ความเห็นของ GN⁺

  • คุณค่าของโบราณคดีดิจิทัล: บทความนี้แสดงให้เห็นความสำคัญของโบราณคดีดิจิทัล ซอฟต์แวร์และข้อมูลเก่า ๆ มีคุณค่าทั้งในเชิงประวัติศาสตร์และเทคนิค
  • บทเรียนจากความผิดพลาดด้านความปลอดภัย: เหตุการณ์นี้ตอกย้ำความสำคัญของการรักษาความปลอดภัยและการจัดการข้อมูล เมื่อต้องจัดการกับข้อมูลอ่อนไหว จำเป็นต้องมีการตรวจสอบและฟอร์แมตอย่างรอบคอบเสมอ
  • หลักฐานของความก้าวหน้าทางเทคโนโลยี: ซอร์สโค้ด AGI interpreter แสดงให้เห็นความก้าวหน้าทางเทคนิคของการพัฒนาเกมในยุค 1980 ซึ่งอาจสร้างแรงบันดาลใจให้กับนักพัฒนายุคปัจจุบัน
  • พลังของโอเพนซอร์ส: การที่ซอร์สโค้ดดั้งเดิมถูกเปิดเผย ทำให้นักพัฒนายุคปัจจุบันมีโอกาสศึกษาและนำไปใช้กับโปรเจกต์ใหม่ ๆ ได้
  • ความเสี่ยงจากคู่แข่ง: หากซอร์สโค้ดนี้ถูกค้นพบโดยคู่แข่งในเวลานั้น ความได้เปรียบทางการแข่งขันของ Sierra On-Line คงได้รับความเสียหายอย่างมาก เรื่องนี้เตือนให้เห็นถึงความสำคัญของการปกป้องทรัพย์สินทางปัญญาขององค์กร

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

 
GN⁺ 2024-05-24
ความเห็นจาก Hacker News

สรุปรวมคอมเมนต์จาก Hacker News

  • Double Dragon II: The Revenge for DOS (1989)

    • เกมนี้ถูกแจกจ่ายบนฟลอปปีดิสก์สองแผ่น และในหนึ่งในแผ่นนั้นมีซอร์สโค้ดทั้งหมดอยู่ในไฟล์ archive ที่ถูกลบไปแล้ว แม้มองไม่เห็นด้วยคำสั่ง DIR แต่ก็สามารถกู้คืนได้ง่าย
  • การทำรีเวิร์สเอนจิเนียริง ROM ของซินธิไซเซอร์

    • ระหว่างการทำรีเวิร์สเอนจิเนียริง ROM ของซินธิไซเซอร์เมื่อไม่นานมานี้ มีการค้นพบบางส่วนของตารางสัญลักษณ์เฟิร์มแวร์และบล็อกโค้ดของระบบพัฒนาใน ROM ของ Yamaha DX9 การค้นพบลักษณะนี้ช่วยให้เข้าใจเครื่องมือพัฒนาในอดีตได้ลึกซึ้งยิ่งขึ้น
  • ความทรงจำเกี่ยวกับเกมในวัยเด็ก

    • เกมนี้เป็นส่วนสำคัญของวัยเด็ก และในชีวิตปัจจุบันก็ยากที่จะรู้สึกถึง "ความเชื่อมโยง" แบบเดียวกันได้ Space Quest 2, 3, 4 ให้ความรู้สึกราวกับเป็นส่วนหนึ่งของ DNA
  • ความลับของเอนจิน AGI

    • ดูเหมือนว่าเอนจิน AGI จะไม่ได้มีความลับพิเศษอะไรที่คู่แข่งจะได้ประโยชน์จากการรั่วไหล Sierra ประสบความสำเร็จเพราะทุ่มเทอย่างมากกับกราฟิกและการเขียนเรื่องราว
  • แผนที่หน่วยความจำและซอร์สโค้ด

    • หากมีแผนที่หน่วยความจำ ซอร์สโค้ดบางส่วน และเครื่องมือรีเวิร์สเอนจิเนียริง ก็น่าจะสามารถประกอบทุกอย่างกลับขึ้นมาใหม่ได้
  • HxD Hex Editor

    • เครื่องมือสมัยใหม่ที่ยอดเยี่ยมตัวหนึ่งคือ HxD Hex Editor ซึ่งเขียนโดย Maël Hörz ส่วนผู้ใช้ macOS ก็น่าลองดู Hex Fiend
  • ROM ของ Air Fortress

    • Air Fortress เวอร์ชัน Famicom มีข้อมูลจำนวนมากที่หลุดติดมาโดยไม่ตั้งใจ คาร์ทริดจ์ญี่ปุ่นมีขนาด 128+128KB ส่วนเวอร์ชัน NES ของสหรัฐถูกลดลงเหลือ 128+32KB
  • อาร์ติแฟกต์จากการปล่อยรีลีสแบบทำมือ

    • ในอดีต อาร์ติแฟกต์ที่ปล่อยรีลีสด้วยงานทำมือมักมีข้อมูลตกค้างรวมอยู่ด้วย แต่ปัจจุบันเรื่องแบบนี้ลดลงเพราะมี CICD และระบบบิลด์อัตโนมัติ
  • การค้นพบซอร์สโค้ด

    • ไม่มีใครสังเกตเลยว่ามีซอร์สโค้ดรวมอยู่ในดิสก์ เรื่องนี้ชวนให้นึกถึงการค้นพบล่าสุดเกี่ยวกับ Tetris และ Super Mario Bros. อินเทอร์เน็ตและอีมูเลเตอร์ช่วยให้เกมเก่า ๆ ได้มีชีวิตใหม่อีกครั้ง
  • คอมเมนต์ประวัติการเปลี่ยนแปลง

    • คอมเมนต์ประวัติการเปลี่ยนแปลงสะท้อนให้เห็นถึงรายละเอียดและความประณีต และชวนให้นึกถึงบทความ 'No Silver Bullet' ซึ่งสื่อว่าซอฟต์แวร์ยังคงถูกเขียนทีละบรรทัดโดยโปรแกรมเมอร์