ความผิดพลาดของมาสเตอร์ดิสก์ Space Quest II
(lanceewing.github.io)- ใน 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
Double Dragon II: The Revenge เวอร์ชัน DOS ปี 1989 ถูกแจกจ่ายบนฟลอปปีดิสก์ 2 แผ่น และหนึ่งในนั้นมีไฟล์บีบอัดที่ลบแล้วซึ่งบรรจุซอร์สโค้ดทั้งหมดอยู่
แม้จะมองไม่เห็นด้วยคำสั่ง
DIRแต่ก็สามารถกู้คืนได้ง่าย: https://tcrf.net/Double_Dragon_II:The_Revenge(DOS)น่าขำตรงที่แม้ในยุคที่ไบต์ทุกไบต์มีมูลค่าเป็นเงินจริงๆ ก็ยังมีหลายกรณีที่รายการ 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_...
ฉันใช้ BeBox วิเคราะห์ raw I/O และเซกเตอร์ดิสก์แบบ raw เยอะมาก เพราะ BeOS มีเครื่องมือที่เหมาะกับการแฮ็กระบบไฟล์มาก จากนั้นก็เอาไปสร้างไดรเวอร์ระบบไฟล์สำหรับ Windows ซึ่งทำงานได้ดีพอจน Yamaha ให้การสนับสนุน ถ้าวันไหนคุณมีไฟอยากวิศวกรรมย้อนกลับ Yamaha ROM สำหรับ A-sampler ก็อยากให้ติดต่อมา ฉันสนใจด้านนี้มาก งาน DX9/DX7 ก็ดีมาก และในฐานะคนที่ใช้ซินธิไซเซอร์ทั้งสองตัวมาตั้งแต่ตอนวางขาย มันน่าสนุกจริงๆ
เกมนี้มีอิทธิพลกับวัยเด็กของฉันอย่างรุนแรงมาก จนพอมองย้อนจากตอนนี้กลับไป มันแทบให้ความรู้สึกเหมือนความฝัน
ถ้าจะลองจินตนาการว่าทุกวันนี้มีเกมอะไรที่ทำให้รู้สึก ผูกพัน แบบเดียวกัน ก็ดูเป็นไปไม่ได้ เพราะทุกอย่างรอบตัวตอนนี้ดูเหมือนเป็นแค่เกม รายการ หรือสิ่งของ แต่ Space Quest 2, 3, 4 กลับพันอยู่กับ DNA ของฉันราวกับเป็นส่วนพื้นฐานของตัวตน
เกม Sierra ช่วงนั้นพิเศษมาก โดยเฉพาะ Police Quest II, LSL III และ Hero's Quest ที่ฉันเล่นเยอะในช่วงใกล้ๆ กัน เกม Sierra แบบข้อความบน EGA มีอะไรบางอย่างที่เหมือนเวทมนตร์ และสำหรับฉันมันเป็นจุดเชื่อมทางอารมณ์และความคิดสร้างสรรค์ที่พอดีอย่างยิ่งระหว่าง Infocom กับเวอร์ชัน VGA แบบชี้แล้วคลิกในภายหลัง
Space Quest ยังผูกพันกับเรื่องราว อินเทอร์เน็ตยุคแรก ที่ฉันชอบที่สุดด้วย ตอนที่เว็บไซต์ส่วนใหญ่ยังโฮสต์อยู่บน Geocities และโดยนักศึกษามหาวิทยาลัยที่ว่างจัด มีแฟนไซต์ Space Quest อยู่แห่งหนึ่ง ฉันส่งอีเมลไปหาผู้ดูแลหนึ่งในเว็บ SQ ใหญ่ๆ บอกว่าฉันชอบเกมกับเว็บไซต์นั้น ตอนนั้นฉันอายุราว 14 ปี และเขาตอบกลับมาว่าสามารถส่งเกมต้นฉบับให้ฉันได้ในราคาประมาณ 40 ดอลลาร์ เป็นชุดต้นฉบับครบพร้อมกล่องและฟลอปปีดิสก์ทั้งหมด ราวปี 1997 การส่งเงิน 40 ดอลลาร์ให้คนแปลกหน้าที่อยู่อีกฟากประเทศแล้วหวังว่าเขาจะส่งของมาจริงๆ ก็ชวนกังวลอยู่บ้าง แต่เขาก็ส่งมาจริงๆ ไม่กี่สัปดาห์ต่อมาเกมทั้งหมดก็มาถึงตรงตามคำอธิบาย และฉันดีใจมาก มันทำให้ฉันกลายเป็นผู้ศรัทธาเต็มตัวในชั่วข้ามคืน และยังเป็นเหมือนแกนสุริยะของความมองโลกในแง่ดีที่ฉันยึดไว้จนถึงทุกวันนี้ Jess ถ้าคุณยังอยู่ที่ไหนสักแห่ง คุณคือของจริง หวังว่าสักวันเราจะได้เจอกันอีก
พ่อของฉันทำงานที่โรงถลุงเหล็ก และเป็นเพื่อนกับ คนดูแลคอมพิวเตอร์ ที่นั่น เขาให้สำเนา SQ2 มาให้ลองเล่นที่บ้าน ฉันเล่นเกมนั้นอย่างบ้าคลั่ง แต่ตอนนั้นยังเด็กมากจึงงงกับหลายส่วน พอไปต่อไม่ได้จริงๆ ฉันจะขอให้พ่อถามคนดูแลคอมพิวเตอร์คนนั้นว่าต้องผ่านจุดนั้นอย่างไร และดูเหมือนว่าแทนที่จะบอกคำตอบตรงๆ เขาจะให้คำใบ้อย่างใจดี ผ่านมา 35 ปีแล้ว แต่ฉันยังจำความฝันหลายครั้งที่เกี่ยวกับเกมนั้นได้ค่อนข้างละเอียด มันมีอิทธิพลมากจริงๆ
SQ I ฉันเล่นทีหลังมาก และ SQ III ก็ไม่โดนใจฉันแรงขนาดนั้น ที่เหลือก็ไม่ใช่เกม EGA ที่พิมพ์ข้อความป้อนคำสั่งแล้ว SQ II ทำให้ความทรงจำผุดขึ้นมามากมาย และฉันก็เรียนภาษาอังกฤษจากมันได้พอสมควร ฉันยังจำความพอใจตอนค้นพบว่าคุณสามารถทำ “rub berries” กับ Roger Wilco ได้
นี่เป็นเกมแรกที่ฉันเล่นในแนวนี้ และตอนอายุราวสิบขวบ ฉันก็ติดมันอยู่เป็นสัปดาห์ๆ
ไม่คิดว่าเอนจิน AGI จะมี ซอร์สลับ พิเศษอะไรถึงขั้นที่คู่แข่งจะได้ประโยชน์มากจากการรั่วไหลนี้
อาจมีตัวอย่างอื่นก็ได้ แต่ Hugo's House of Horrors เป็นเกมสไตล์ AGI ที่คนคนเดียวสร้างขึ้นหลายปีให้หลัง สิ่งที่ทำให้เกมของ Sierra ประสบความสำเร็จเกินกว่าความแปลกใหม่ระยะแรกของกราฟิกแอดเวนเจอร์ คือการทุ่มเทอย่างมหาศาลในการทำกราฟิกและเขียนตัวเกมจริง ๆ ไม่ได้แปลว่าเทคโนโลยีไม่มีความสำคัญเลย แต่สัดส่วนของมันในผลงานสุดท้ายนั้นค่อนข้างเล็ก
การเรียนรู้จากซอฟต์แวร์ที่ใช้งานได้จริงและการสร้างมันขึ้นมานั้นยากกว่ายุคนี้อย่างมหาศาล และแทบไม่มีอะไรให้ยึดเป็นฐานเลย บน MS-DOS แทบไม่มีโอเพนซอร์สที่มีความหมาย และยิ่งไม่มีโอเพนซอร์สเกมเอนจินด้วยซ้ำ ในสภาพแวดล้อมแบบนั้น ถ้า ซอร์ส AGI รั่วไหลออกไปอย่างกว้างขวาง อย่างน้อยมันก็น่าจะมีความหมายมากพอสมควรในฐานะแบบพิมพ์เขียวที่แสดงให้เห็นว่าเกมพีซียอดนิยมที่สุดในเวลานั้นถูกสร้างขึ้นอย่างไร
โดยเฉพาะถ้าเป็นโค้ดที่ไม่ได้มีความลับอย่างคีย์หรือแบ็กดอร์ที่แฮ็กเกอร์จะเอาไปใช้ในทางที่ผิดได้ ยิ่งน่าสงสัยเข้าไปใหญ่ โค้ดที่รั่วไหลย่อมไม่มีไลเซนส์อยู่แล้ว ดังนั้นถ้าไม่อยากโดนฟ้อง ก็เอาไปใช้ซ้ำตรง ๆ ในผลิตภัณฑ์ของตัวเองไม่ได้ สุดท้ายก็ต้องอ่านโค้ดนั้น ทำความเข้าใจเทคนิค แล้วนำไปประยุกต์ใช้กับงานของตัวเองโดยไม่ให้มีกลิ่นของการละเมิดลิขสิทธิ์ ซึ่งโดยมากยากกว่าการทำใหม่ตั้งแต่ต้นเสียอีก ต่อให้มีกรณีที่ได้เปรียบจริง ก็ยังสงสัยว่ามันจะกลายเป็นความได้เปรียบทางการแข่งขันจริง ๆ บ่อยแค่ไหน นักพัฒนายังเลือกเขียนโค้ดใหม่แม้จะมีโอเพนซอร์สที่มีเอกสารดีและไลเซนส์แบบผ่อนปรนให้อยู่แล้ว การอ่านโค้ดมักยากกว่าการเขียน และแม้แต่การคอมไพล์ใหม่เฉย ๆ ก็อาจยังยาก แค่อาจช่วยให้การทำสำเนาง่ายขึ้นเล็กน้อย แต่เกมสมัยนั้นก็มักถูกแคร็กและแจกจ่ายภายในไม่กี่วันอยู่แล้ว และโค้ดป้องกันการคัดลอกก็อาจไม่ได้รวมอยู่ในซอร์สด้วยซ้ำ
จำนวนคนที่พูดภาษาพวกนั้นได้เองก็น่าจะน้อยกว่าหลายหลักอยู่แล้ว และคนที่สร้างอะไรที่มีความสอดคล้องด้วยมันได้ก็น้อยยิ่งกว่า
ทุกวันนี้มันลดลงเร็วมาก ทำให้สิ่งที่เราเจอในตอนนี้มีพลังในการกำหนดค่าน้ำหนักภายในไม่มากเท่ากับเมื่อก่อน
ชอบ คอมเมนต์ประวัติการเปลี่ยนแปลง มากจริง ๆ
มันแสดงให้เห็นถึงความละเอียดรอบคอบและความเป็นช่างฝีมือในระดับสูง ในยุคก่อนที่เครื่องมือจัดการซอร์สจะทำให้เรื่องพวกนี้มองเห็นได้ชัดเจนกว่ามาก พูดตามตรง แม้หลังจาก CVS/SVN/Git แล้ว หลายคนก็ยังทำให้มันชัดเจนไม่ได้อยู่ดี เรื่องนี้ยังทำให้นึกถึงบทความชื่อดัง ‘No Silver Bullet’[1] ที่เขียนในปี 1986 ซึ่งคาดการณ์ว่าซอฟต์แวร์ต่อจากนั้นก็จะยังคงเป็นสิ่งที่โปรแกรมเมอร์ต้องค่อย ๆ เขียนคำสั่งทีละบรรทัดอย่างยากลำบากต่อไป โค้ดเอนจินเกมและคอมเมนต์ในโพสต์ต้นทางดูคล้ายกับสิ่งที่ฉันเองก็น่าจะเขียนในวันนี้มาก ซึ่งสำหรับฉันมันแทบจะเป็นการสนับสนุนคำทำนายนั้นแม้ผ่านไปเกือบ 40 ปีแล้ว
[1] https://en.wikipedia.org/wiki/No_Silver_Bullet
ในเวอร์ชัน 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
สงสัยว่าคนอื่นจะมองเหมือนกันไหม บนดิสก์ของ King's Quest III ก็เกิดเรื่องแบบเดียวกัน และจริง ๆ แล้วดูเหมือนจะเกิดขึ้นแทบจะช่วงเวลาเดียวกับกรณีของ Space Quest II เลย
ส่วนที่ชอบที่สุดคือดูเหมือนว่าไม่มีใครค้นพบ ซอร์สโค้ด ที่วางอยู่บนดิสก์นี้เลยตลอดหนึ่งชั่วอายุคน
“น่าทึ่งที่ดูเหมือนทั้ง Sierra, คู่แข่ง และลูกค้า ต่างก็ไม่ได้สังเกตว่ามีเรื่องนี้เกิดขึ้น และมันเพิ่งถูกค้นพบในอีกหลายสิบปีต่อมา การค้นพบครั้งแรกที่ทราบกันคือโดยผู้ใช้ออนไลน์ชื่อ NewRisingSun ในเดือนตุลาคม 2016” มันยังทำให้นึกถึงการค้นพบครั้งใหญ่ล่าสุดเกี่ยวกับ Tetris และ Super Mario Bros. ตอนเด็ก ๆ ที่เล่นเกมเหล่านี้ ฉันเคยคิดว่าพอผ่านไปหลายสิบปีมันคงเหลือเป็นเพียงวัตถุโบราณที่ถูกลืม และคงรันไม่ได้แล้วนอกจากโดยนักสะสมสายฮาร์ดคอร์ที่สุดเท่านั้น แต่อินเทอร์เน็ตและอีมูเลเตอร์ได้ปลุกชีวิตใหม่ให้เกมยุคแรกและโลกคอมพิวติ้งยุคแรกเหล่านั้น
น่าจะมีคนเจอไฟล์ที่ถูกลบแน่ ๆ แต่ก่อนอินเทอร์เน็ตจะแพร่หลาย จึงมีโอกาสสูงที่มันจะไม่ถูกเผยแพร่อย่างกว้างขวางหรือไม่ได้ถูกบันทึกไว้
ระหว่างอิมเมจดิสก์เหล่านี้ ใครสักคนอาจพบข้อมูลที่ยังหลงเหลืออยู่ในพื้นที่ว่างก็ได้
ระหว่างปี 1987 ถึง 1993 ได้เตรียม มาสเตอร์ดิสก์ ราวเก้าแผ่นสำหรับแอป Mac สองตัว
ใช้ฟลอปปีดิสก์แผ่นใหม่ทุกครั้ง และมีเช็กลิสต์ยาวสำหรับตรวจสอบว่าดิสก์ถูกต้อง โชคดีที่ทุกอย่างออกมาดี โดยเฉพาะบางแผ่นถูกใช้เพื่อผลิตดิสก์ถึง 100,000 แผ่น ดีแล้วที่ทุกวันนี้ไม่มีใครต้องทำงานแบบนี้แล้ว
เคยเห็นเลเยอร์แบบนี้: 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 ก็อาจทำให้เรื่องแบบนี้เกิดได้ง่ายกว่าการบิลด์แบบแมนนวล ปัจจัยอื่นก็อาจมีส่วนด้วย