ความผิดพลาดของมาสเตอร์ดิสก์ Space Quest II
(lanceewing.github.io)ความผิดพลาดของมาสเตอร์ดิสก์ 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 ความคิดเห็น
ความเห็นจาก Hacker News
สรุปรวมคอมเมนต์จาก Hacker News
Double Dragon II: The Revenge for DOS (1989)
DIRแต่ก็สามารถกู้คืนได้ง่ายการทำรีเวิร์สเอนจิเนียริง ROM ของซินธิไซเซอร์
ความทรงจำเกี่ยวกับเกมในวัยเด็ก
ความลับของเอนจิน AGI
แผนที่หน่วยความจำและซอร์สโค้ด
HxD Hex Editor
ROM ของ Air Fortress
อาร์ติแฟกต์จากการปล่อยรีลีสแบบทำมือ
การค้นพบซอร์สโค้ด
คอมเมนต์ประวัติการเปลี่ยนแปลง