1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โครงการรีเวิร์สวิศวกรรมไบนารีต้นฉบับของเกมปี 1989 F-15 Strike Eagle II เพื่อสร้างซอร์สโค้ด C ขึ้นใหม่ ได้เข้าสู่ขั้นตอนทดสอบการเล่นจริงแล้ว
  • โค้ดและข้อมูลของไฟล์รันทั้งหมดรวมถึง egame, end ถูกย้ายมาเป็น C แล้ว และโค้ดส่วนใหญ่ที่เคยมีเฉพาะในแอสเซมบลีก็มี implementation ทดแทนใน C เตรียมไว้แล้ว
  • รีลีสล่าสุด v0.9.1 สามารถนำไปทดสอบได้โดยแทนที่ไฟล์รันต้นฉบับในเกมเวอร์ชัน 451.03 และส่วนขยาย Desert Storm
  • ไฟล์รันตัวใหม่จะไม่ผ่านหน้าตั้งค่า และจะถือว่าเป็น MCGA/VGA, ปิดเสียง, และไม่มีจอยสติ๊ก แต่หน้าสรุปภารกิจก่อนบิน การบิน และหน้าสรุปหลังภารกิจควรทำงานได้
  • เนื่องจากเป้าหมายคือการสร้างใหม่แบบ bug-for-bug ที่คงไว้แม้แต่บั๊กเหมือนต้นฉบับ พฤติกรรมที่มีอยู่ในเกมต้นฉบับจึงยังไม่ถือเป็นเป้าหมายของรายงานบั๊กในตอนนี้

ความคืบหน้าของโครงการสร้างใหม่ด้วย C

  • การสร้างใหม่ของ F-15 Strike Eagle II เป็นโครงการงานอดิเรกที่ทำการรีเวิร์สเอนจิเนียร์ไบนารีต้นฉบับเพื่อสร้างซอร์สโค้ด C ของเกมปี 1989 ขึ้นมาใหม่
  • เมื่อเพียงเดือนกว่า ๆ ก่อนหน้านี้ ยังดูเหมือนว่าจะต้องใช้เวลาอีกหลายปีกว่าจะย้ายไฟล์รันตัวที่สอง egame มาเป็น C ได้ และยังมีไฟล์รันตัวที่สาม end เหลืออยู่ด้วย
  • ตอนนี้โครงการคืบหน้าไปถึงขั้นต่อไปนี้แล้ว
    • สร้างใหม่ โค้ด C ของไฟล์รันทั้งหมด เสร็จแล้ว
    • ย้ายข้อมูลทั้งหมดจากแอสเซมบลีมาเป็น C
    • เขียน implementation ทดแทนใน C ที่เทียบเท่าการทำงานได้สำหรับโค้ดส่วนใหญ่ที่เคยมีเฉพาะในแอสเซมบลี
    • ตั้งชื่อที่มีความหมายให้กับรูทีนและโครงสร้างข้อมูลส่วนใหญ่
    • กำลังพิจารณาแยกรีโพซิทอรีสำหรับโครงการพอร์ตในอนาคตอันใกล้
  • มีการใช้เครื่องมือตรวจสอบว่า opcode ที่สร้างใหม่นั้นตรงกับต้นฉบับเพียงใด แต่ยังไม่สามารถจับบั๊กที่เกี่ยวข้องกับ data layout ได้ทั้งหมด
  • ตอนนี้เลยพ้นขั้นการตรวจว่า opcode ตรงกันหรือไม่ไปแล้ว และจำเป็นต้องทำให้ตัวเกมที่รันได้จริงคงสภาพการทำงานไว้ จึงต้องการการทดสอบจากภายนอก

วิธีทดสอบและปัญหาที่ควรรายงาน

  • ตัวที่ใช้ทดสอบคือรีลีสล่าสุด v0.9.1
  • เพียงนำไฟล์รันตัวใหม่ไปใส่ในโฟลเดอร์เกมที่มีเกมต้นฉบับเวอร์ชัน 451.03 และส่วนขยาย Desert Storm แล้วแทนที่ไฟล์รันต้นฉบับ
    • ควร สำรองข้อมูล ก่อนแทนที่
    • อาจต้องลบ f15.com ต้นฉบับเพื่อไม่ให้ f15.com เดิมถูกรันแทน f15.exe ตัวใหม่
  • ไฟล์รันตัวใหม่จะไม่เข้าสู่หน้าตั้งค่า
    • สมมติว่าใช้ จอแสดงผล MCGA/VGA
    • ไม่มีเสียง
    • ไม่มีจอยสติ๊ก
  • หากพบปัญหาระหว่างทดสอบ สามารถรายงานผ่าน GitHub Issues ได้
    • แครช
    • กราฟิกผิดเพี้ยน
    • ปุ่มกดไม่ทำงาน
    • หากจำเป็น ให้แนบภาพหน้าจอที่ถ่ายใน dosbox ด้วย Ctrl+F5
    • การระบุว่าได้ทำอะไรไปบ้างก่อนเกิดปัญหาจะช่วยให้การทำซ้ำและแก้ไขทำได้ง่ายขึ้น
  • โครงการนี้มีเป้าหมายเป็นการสร้างใหม่แบบ bug-for-bug ดังนั้นพฤติกรรมที่มีอยู่ในเกมต้นฉบับจึงควรถูกคงไว้
    • ในเกมต้นฉบับมีปัญหาอย่างวัตถุ 3D หายไป หรือเครื่องบินตกขึ้นไปทางท้องฟ้าเมื่อเชื้อเพลิงหมดขณะอยู่ในสภาพกลับหัว
    • ก่อนรายงาน ควรตรวจสอบก่อนว่าปัญหาเดียวกันนี้เกิดขึ้นในต้นฉบับด้วยหรือไม่

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

 
GN⁺ 4 시간 전
ความเห็นจาก Hacker News
  • มีเวอร์ชัน DOSที่เล่นได้
    ขั้นแรกคือทำวิศวกรรมย้อนกลับทั้งหมดเป็นแอสเซมบลี และขั้นที่สองคือแปลงแอสเซมบลีให้เป็นโค้ด C ที่คอมไพล์แล้วได้ไบนารีเหมือนกันทุกประการ งานนี้จะทำต่อบน DOS ไปเรื่อย ๆ จนไม่เหลือโค้ดแอสเซมบลี แล้วจากนั้นจึงจะเริ่มพอร์ตไป Linux และ Windows
    การทำวิศวกรรมย้อนกลับมีโอกาสทำให้เกิดบั๊กใหม่ได้ง่าย และก็ไม่ง่ายที่จะหาบั๊กทั้งหมดในโค้ดวิศวกรรมย้อนกลับที่เก่าขนาดนี้ แต่จนถึงตอนนี้ดูเหมือนว่าทุกอย่างจะทำงานได้
    ถ้าคุณมี F-15 เวอร์ชัน 451.03 และมี Dosbox หรือ DOS จริง ช่วยลองหาบั๊กที่ยังเปิดอยู่ให้หน่อย
    ดาวน์โหลด DOS รีลีสล่าสุดได้ที่นี่: https://github.com/neuviemeporte/f15se2-re/releases
    ไฟล์ f15_se2-*.zip มีไฟล์ executable ทดแทนสำหรับเกม DOS
    Air Force needs YOU!

    • ผมเป็นทหารผ่านศึก USAF โตมากับการเล่น F-15 Strike Eagle II และน่าเสียดายที่สำเนาของผมพังไปนานแล้ว เห็นโปรเจ็กต์นี้แล้วดีใจมาก
      แค่มีจุดเล็ก ๆ ส่วนตัวนิดเดียวที่จะทำให้เหล่าทัพอื่นเอาไปล้อว่าผมรักเก้าอี้แค่ไหน
      Air Force เขียนแยกเป็นสองคำ
    • ทำได้ดีมาก
      ดูเหมือนไม่จำเป็นต้องกดดันตัวเองกับพอร์ต Linuxมากนัก เพราะการรองรับผ่านอีมูเลเตอร์ดีมากและคนใช้กันแพร่หลาย ถ้ารันได้บนนั้นก็ถือว่าประสบความสำเร็จแล้ว
      ผมใช้ Lutris(https://lutris.net/) เพราะใช้งานสะดวก
      แต่คุณก็ดูเป็นคนที่ชอบงานระดับล่าง ดังนั้นเรื่องนี้อาจเป็นเควสต์ในตัวเองมากกว่าการได้เล่นเกมเรโทรเจ๋ง ๆ
    • ตอนนี้ผมก็กำลังทำวิศวกรรมย้อนกลับเกมอยู่สองสามเกมเหมือนกัน ทุกวันนี้ง่ายขึ้นมากเพราะ AI
      แต่ก็ยังกังวลว่าโดยรวมแล้วมันโอเคทางกฎหมายหรือเปล่า อยากรู้ว่าคุณคิดยังไงกับเรื่องนี้
  • ขอถามแบบมือใหม่ หวังว่าจะไม่ฟังดูในแง่ลบ
    การทุ่มเวลาเพื่อทำให้เกมเก่ากลับมารันได้เป็นเรื่องที่ดีมาก แต่ผมสงสัยว่าทำไมต้องดีคอมไพล์เกมที่จำลองการทำงานได้อยู่แล้วด้วย DOSbox อะไรทำนองนั้น เกมเก่าขนาดนี้ไม่น่าจะรันได้สบาย ๆ บนฮาร์ดแวร์สเปกต่ำมากอยู่แล้วไม่ใช่หรือ?

    • ประเด็นสำคัญไม่ใช่แค่การรันเกม แต่คือการเปิดให้แก้ไขดัดแปลงได้ การแพตช์เกมที่อยู่ในรูปไบนารีนั้นยากมากแบบเหลือเชื่อ และแทบเป็นไปไม่ได้เลยถ้าจะทำอะไรที่มากกว่าการแก้บั๊กง่าย ๆ
      ถ้ามีซอร์สโค้ด คุณสามารถเพิ่มฟีเจอร์ทั้งชุด พอร์ตไป Windows 10 หรือทำ 4K HDR, เท็กซ์เจอร์, โมเดลใหม่, ภารกิจใหม่ ได้เลย ข้อจำกัดแทบไม่มี
      อีกอย่าง การวิเคราะห์เกมจากคำสั่งแอสเซมบลีที่มีแค่ออฟเซ็ตข้อมูลแบบฮาร์ดโค้ดนั้นยากมาก แต่ถ้าเป็นโค้ด C คุณจะอ่านพฤติกรรมได้ตรง ๆ หรือแทรกโค้ดสำหรับ instrument/debug เพื่อทำความเข้าใจก็ได้
    • ตอนที่ผมเคยลองทำวิศวกรรมย้อนกลับเกมยุค DOS เมื่อหลายปีก่อน มันมีเหตุผลหลายอย่าง
      ผมอยากทำเอกสารฟอร์แมตไฟล์ ขุดข้อมูลเพื่อหาไฟล์สื่อที่ไม่ได้ใช้ ระบุและแก้บั๊กหนัก ๆ สร้างเครื่องมือม็อด และอยากเข้าใจว่าอะไรบางอย่างจากวัยเด็กที่ติดอยู่ในความทรงจำถูกสร้างขึ้นด้วยเทคนิคแบบไหน
      ผมอยากลดแรงเสียดทานในการรันบนระบบสมัยใหม่ และเปิดทางให้มีการปรับปรุงเสริมแบบเลือกได้ เช่น ความละเอียดสูงขึ้นหรือสลับเท็กซ์เจอร์
      สุดท้ายผมไม่มีความอดทนพอจะทำจนเสร็จ แต่ตอนนี้ก็รู้สึกว่าอาจจะทำได้แล้ว
    • เกมจำนวนมากที่อยู่บนฟลอปปีดิสก์มีรูปแบบป้องกันการคัดลอกดิสก์ที่อาศัยพฤติกรรมที่ไม่ได้มีเอกสารกำกับของไดรฟ์ดิสก์ในยุคนั้น ถึงขั้นที่ต้องใช้เครื่องมืออย่าง Greaseweazle เพื่อสร้างแผนที่ฟลักซ์แม่เหล็กทั้งหมดของฟลอปปีดิสก์ที่ถูกเก็บถาวรไว้
      อีกทั้งเกมเหล่านี้มักถูกสร้างมาให้รันได้บนฮาร์ดแวร์กราฟิกและเสียงหลายแบบ ทำให้ในทางปฏิบัติไดรเวอร์ถูกคอมไพล์รวมอยู่ในตัวเกมเลย
      [0] https://github.com/keirf/greaseweazle
  • เป็นเกมที่ผมเล่นเยอะมากตอนเด็ก ผมเล่น F-19 Stealth Fighter กับ F-117A Nighthawk Stealth Fighter ด้วย และเพิ่งรู้วันนี้เองว่าสองเกมนั้นออกก่อนและหลังเกมนี้ ผมยังเล่น F-14 Tomcat นิดหน่อยด้วย
    ถ้าอ่านถูกต้อง ดูเหมือนว่าการรันเกมนี้ยังต้องใช้ไฟล์เกมต้นฉบับอยู่ ดังนั้นสำหรับผมคงเป็นการอ่านบันทึกการพัฒนามากกว่าจะได้กลับไปขับเครื่องบินลำนี้อีกครั้ง

    • F-19 เป็นเกมที่ยอดเยี่ยม และเป็นหนึ่งในเกมของ Sid Meier ที่ผมชอบที่สุด
      ผมยังจำได้ว่าไปซื้อจาก Electronics Boutique ช่วงปลายยุค 1980 แล้วเอากลับมาเล่นบน Packard Bell 286 ที่บ้าน ระบบป้องกันการคัดลอกคือให้เปิดคู่มือไปหาเครื่องบินแล้วระบุให้ถูกต้อง สุดท้ายเลยจำเครื่องบินทั้งหมดในเกมได้ขึ้นใจ
      ผมยังซื้อจอยสติ๊ก Gravis Analog มาเพื่อเล่นเกมนี้ และยังเก็บแผ่นคีย์บอร์ดโอเวอร์เลย์ไว้อยู่เลย
      ผมอยากเห็นเกมนี้ถูกรีบูตแบบสมัยใหม่จริง ๆ
    • นี่ใช่เกมที่ให้เล่นแบบร่วมมือกันโดยแบ่งเป็นบทบาทที่นั่งหน้า/ที่นั่งหลังกับเพื่อนได้หรือเปล่า หรือเป็นภาค III?
      ผมเคยโทรหาเพื่อนทางโทรศัพท์บ้านอยู่นานเพื่อจูนค่าตั้งค่าโมเด็ม แล้วให้เขาวางสายก่อนโทรกลับมา จากนั้นก็เริ่มเกม แล้วก็หลุด แล้วโทรคุยกันใหม่ว่าเมื่อกี้เกิดอะไรขึ้น ทำแบบนี้ซ้ำไปมา
      ตอนที่มันใช้การได้ในที่สุด เราเล่นกันหนักมากจนแม่ของเพื่อนสั่งห้ามเล่นผ่านโมเด็ม เพราะมันยึดสายโทรศัพท์เส้นเดียวของบ้านไว้ทีละหลายชั่วโมง
      ผมอยากหาเกมจำลองการบินหรืออวกาศเกมอื่นที่มีมัลติเพลเยอร์แบบคล้ายกัน และก็อยากทำให้เกมนี้กลับมารันได้อีกเพื่อหลอกล่อเพื่อนกลับไปหาอดีต
    • บล็อกพัฒนานี้ดีมากจริง ๆ จัดว่าเป็นหนึ่งในบันทึกวิศวกรรมย้อนกลับสายเรโทรที่ดีที่สุดเลย อ่านเพลินแน่นอน
    • ชื่อพวกนี้ไม่ได้จดเครื่องหมายการค้าไว้หรือ? Lockheed น่าจะขายสิทธิ์เป็นรายได้เสริมได้เหมือนกัน
  • ทุกวันนี้การพอร์ตเกมง่ายแบบน่าเหลือเชื่อ
    https://robin.tooclever.org ใช้เวลาไม่ถึงวันในแง่ของเวลา API

    • เจ๋งมาก มีดัชนีรวมเกมที่ถูกพอร์ตแบบนี้หรือพอร์ตโอเพนซอร์สไหม?
  • ผมสงสัยว่า AI เหมาะกับการอนุมานโครงสร้างของโปรเจ็กต์ที่ถูกดีคอมไพล์ซึ่งไม่มีชื่อสัญลักษณ์หรือไม่
    นี่ไม่ใช่สายงานของผม แต่ผมประหลาดใจที่เห็น AI เข้าใจเจตนาของโครงสร้าง JavaScript ที่ไม่มี source map ได้ค่อนข้างดี

    • AI เก่งเหนือมนุษย์ในการอ่านและทำความเข้าใจแอสเซมบลี มันแทบไม่สนใจเลยว่าจะดีคอมไพล์มาแล้วหรือมีสัญลักษณ์หรือไม่ ถ้าไม่มีก็แค่ช้าลงนิดหน่อย
      ในบางกรณีมันเข้าใจcontrol flowที่ถูกทำให้อ่านยากอย่างหนักได้ด้วยตัวเองโดยไม่ต้องใช้เครื่องมือ
    • ใช่ ช่วยได้มากทีเดียว
  • ตอนนี้เรื่องนี้ขึ้น YouTube แล้ว: https://youtu.be/aIPKkOpIiF8

    • วิดีโอดี แต่เสียงบรรยายจาก AIน่ารำคาญ
  • ผมมีเพื่อนที่เคยบิน F15 ก็เลยส่งอันนี้ให้เขา

  • ชุมชนเกมเก่าแบบนี้ทำสิ่งที่น่าทึ่งมากในการทำให้เกมที่ตัวเองรักมีเสรีภาพสี่ประการครบถ้วน และเป็นแรงบันดาลใจจริง ๆ

  • ผมไม่เคยเล่นเกมนี้ แต่เคยเล่น Jane's F/A-18 และมันเป็นเกมที่ยอดเยี่ยม

    • แล้วก็มี Jane's USAF ด้วย!
  • ผมใช้เวลาไปมากกับการสะสมแผนที่ Dopplerระหว่างบินเพื่อใช้ยิง SLAM
    มันเป็นซิมูเลเตอร์ที่ยอดเยี่ยมพอ ๆ กับ Tornado ของ Digital Integrations และ Tornado เองก็ควรได้รีบูตจริง ๆ