Dự án reverse game DOS F-15 Strike Eagle II tuyển phi công thử nghiệm DOS
(neuviemeporte.github.io)- Dự án reverse engineering binary gốc của game F-15 Strike Eagle II năm 1989 để tái dựng mã nguồn C đã bước vào giai đoạn thử nghiệm chơi thực tế
- Mã và dữ liệu của mọi tệp thực thi, bao gồm
egame,end, đã được chuyển sang C, và phần lớn mã chỉ có ở assembly đã có bản thay thế bằng C - Bản phát hành mới nhất
v0.9.1có thể được dùng để thay thế tệp thực thi gốc trong game bản451.03và bản mở rộng Desert Storm để thử nghiệm - Tệp thực thi mới bỏ qua màn hình thiết lập và giả định MCGA/VGA, tắt âm thanh, không có joystick, nhưng phần briefing nhiệm vụ, bay và debriefing phải hoạt động
- Vì mục tiêu là tái dựng bug-for-bug để giữ lại cả các lỗi như bản gốc, nên những hành vi vốn đã tồn tại trong bản gốc hiện không thuộc phạm vi báo lỗi
Tiến độ của dự án tái dựng C
- Việc tái dựng F-15 Strike Eagle II là một dự án sở thích nhằm reverse engineering binary gốc để tạo lại mã nguồn C của game năm 1989
- Chỉ hơn một tháng trước, việc chuyển tệp thực thi thứ hai
egamesang C vẫn có vẻ sẽ còn mất thêm vài năm, và tệp thực thi thứ baendcũng vẫn còn lại - Hiện tại đã đạt đến các bước sau
- Hoàn tất tái dựng mã C cho mọi tệp thực thi
- Chuyển toàn bộ dữ liệu từ assembly sang C
- Viết các bản thay thế C tương đương về chức năng cho phần lớn mã chỉ có ở assembly
- Đặt tên có ý nghĩa cho phần lớn các routine và cấu trúc dữ liệu
- Đang xem xét tách nhánh kho lưu trữ cho dự án port trong thời gian gần
- Việc opcode được tái dựng có trung thành với bản gốc hay không được kiểm tra bằng công cụ, nhưng chưa thể bắt hết mọi lỗi liên quan đến bố cục dữ liệu
- Giờ đây không chỉ cần xác nhận opcode khớp, mà còn phải duy trì một bản game thực sự chạy được, nên cần thử nghiệm từ bên ngoài
Cách thử nghiệm và các vấn đề cần báo cáo
- Đối tượng thử nghiệm là bản phát hành mới nhất v0.9.1
- Chỉ cần đặt tệp thực thi mới vào thư mục game có bản gốc
451.03và bản mở rộng Desert Storm để thay thế các tệp thực thi gốc- Cần sao lưu trước khi thay thế
- Có thể cần xóa
f15.comgốc để tránh việcf15.comgốc chạy thay chof15.exemới
- Tệp thực thi mới không vào màn hình thiết lập
- Giả định màn hình MCGA/VGA
- Không có âm thanh
- Không có joystick
- Nếu gặp vấn đề trong lúc thử nghiệm, có thể báo qua GitHub Issues
- Crash
- Lỗi hiển thị đồ họa
- Phím bấm không hoạt động
- Nếu cần, đính kèm ảnh chụp màn hình chụp bằng
Ctrl+F5trong dosbox - Ghi lại bạn đã thực hiện những thao tác gì trước khi lỗi xảy ra sẽ giúp tái hiện và sửa lỗi
- Dự án này đặt mục tiêu tái dựng bug-for-bug, nên các hành vi cũng xuất hiện trong game gốc cần được giữ nguyên
- Bản gốc có các lỗi như vật thể 3D biến mất, hoặc máy bay rơi lên phía bầu trời khi hết nhiên liệu trong lúc bị lật ngược
- Trước khi báo cáo, nên kiểm tra xem vấn đề tương tự có xảy ra trong bản gốc hay không
1 bình luận
Ý kiến trên Hacker News
Có bản DOS có thể chơi được
Bước đầu tiên là dịch ngược toàn bộ sang assembler, và bước thứ hai là thay assembler bằng mã C đã biên dịch sao cho giống nhị phân. Công việc này sẽ tiếp tục trên DOS cho đến khi không còn mã assembler nào nữa, sau đó sẽ bắt đầu port sang Linux và Windows
Dịch ngược rất dễ kéo theo lỗi mới, và không dễ tìm hết mọi lỗi trong đoạn mã dịch ngược cũ như thế này, nhưng đến giờ có vẻ mọi thứ đều hoạt động
Nếu bạn có F-15 bản 451.03 và có Dosbox hoặc DOS thật, hãy thử tìm các lỗi còn mở
Có thể tải bản phát hành DOS mới nhất tại đây: https://github.com/neuviemeporte/f15se2-re/releases
Tệp
f15_se2-*.zipchứa file thực thi thay thế cho game DOSAir Force needs YOU!
Chỉ có một chi tiết rất nhỏ và mang tính cá nhân khiến các quân chủng khác có cớ để nói về việc tôi yêu cái ghế của mình đến mức nào
Air Force là hai từ
Có lẽ không cần quá áp lực về bản port Linux. Hỗ trợ từ trình giả lập đã quá tốt và được dùng rất rộng rãi, nên nếu chạy được ở đó thì cũng có thể xem là thành công rồi
Tôi dùng Lutris(https://lutris.net/) vì nó tiện
Nhưng bạn có vẻ là kiểu người thích đào sâu tầng thấp, nên bản thân việc này có khi cũng là một nhiệm vụ riêng, hơn là chỉ để chơi một game retro hay
Nhưng tôi vẫn lo không biết xét tổng thể thì điều này có ổn về mặt pháp lý không. Muốn nghe suy nghĩ của mọi người về chuyện đó
Câu hỏi của người mới. Mong là không nghe tiêu cực
Tôi thấy thật tuyệt khi bỏ thời gian để làm cho game cũ chạy được, nhưng tôi thắc mắc vì sao lại decompile một game vốn có thể giả lập bằng DOSbox. Với game cũ đến mức này thì chẳng phải nó vẫn chạy rất tốt trên phần cứng cấu hình cực thấp sao?
Nếu có mã nguồn, bạn có thể thêm hẳn tính năng mới, port sang Windows 10, làm 4K HDR, texture, model mới, nhiệm vụ mới. Giới hạn gần như không còn
Ngoài ra, phân tích game chỉ dựa trên các lệnh assembly với offset dữ liệu được hardcode là cực kỳ khó. Nếu là mã C thì bạn có thể đọc trực tiếp hành vi của nó, hoặc chèn mã đo đạc/gỡ lỗi để hiểu rõ hơn
Tôi muốn tài liệu hóa định dạng file, lục dữ liệu để tìm media không dùng đến, xác định rồi sửa các lỗi nghiêm trọng, tạo công cụ mod, và hiểu xem thứ đã in sâu trong ký ức tuổi thơ mình được làm ra bằng những kỹ thuật nào
Tôi cũng muốn giảm ma sát khi chạy nó trên hệ thống hiện đại, đồng thời cho phép các cải tiến tùy chọn như độ phân giải cao hơn hay thay texture
Cuối cùng tôi không đủ kiên nhẫn để hoàn thành, nhưng giờ thì tôi nghĩ có lẽ mình làm được
Ngoài ra, các game như vậy thường được làm để chạy trên nhiều loại phần cứng đồ họa/âm thanh khác nhau, nên về cơ bản driver đã được biên dịch sẵn vào trong game
[0] https://github.com/keirf/greaseweazle
Đây là game tôi chơi rất nhiều khi còn nhỏ. Tôi cũng chơi F-19 Stealth Fighter và F-117A Nighthawk Stealth Fighter, và hôm nay mới biết hai game đó ra đời trước và sau game này. Tôi cũng chơi F-14 Tomcat một chút
Nếu tôi đọc đúng thì để chạy được cái này cần có file game gốc. Vì vậy có lẽ tôi sẽ đọc nhật ký phát triển hơn là thực sự lái lại chiếc máy bay này
Tôi vẫn nhớ đã mua nó ở Electronics Boutique vào cuối những năm 1980 và chơi trên chiếc Packard Bell 286 ở nhà. Chống sao chép của nó là bắt bạn tìm và nhận diện máy bay trong sách hướng dẫn, và kết quả là tôi thuộc lòng toàn bộ số máy bay xuất hiện trong game
Tôi còn mua cả joystick Gravis Analog để chơi, và đến giờ vẫn còn giữ lớp phủ bàn phím
Tôi rất muốn thấy một bản reboot hiện đại của game này
Tôi đã gọi điện bàn dây cho bạn mình rất lâu để chỉnh cấu hình modem, rồi bảo cậu ấy gọi lại, sau đó vào game, rồi lại bị ngắt, rồi lại gọi nhau xem lần này có chuyện gì xảy ra
Khi cuối cùng cũng chạy được thì chúng tôi chơi liên tục đến mức mẹ của cậu ấy cấm chơi qua modem vì chiếm đường dây điện thoại duy nhất hàng tiếng đồng hồ
Tôi rất muốn tìm lại kiểu multiplayer tương tự trong các game mô phỏng bay hoặc mô phỏng không gian khác, và cũng muốn làm cho game này chạy lại để câu bạn mình bằng ký ức xưa
Dạo này việc port game dễ đến mức khó tin
https://robin.tooclever.org mất chưa tới một ngày tính theo thời gian API
Tôi thắc mắc liệu AI có phù hợp để suy ra cấu trúc của một dự án decompile khi không có tên symbol hay không
Đây không phải lĩnh vực của tôi, nhưng tôi đã ngạc nhiên khi thấy AI nắm bắt khá tốt ý đồ cấu trúc của JavaScript không có source map
Trong một số trường hợp, nó thậm chí có thể tự hiểu luồng điều khiển bị làm rối rất nặng mà không cần công cụ
Câu chuyện này giờ đã lên YouTube: https://youtu.be/aIPKkOpIiF8
Tôi có một người bạn từng lái F15 nên đã gửi cái này cho anh ấy
Những cộng đồng game cũ kiểu này làm được những điều đáng kinh ngạc để giành lấy bốn quyền tự do cho các tựa game họ yêu thích, và điều đó thực sự truyền cảm hứng
Tôi chưa chơi game này, nhưng đã chơi Jane's F/A-18 và đó là một game tuyệt vời
Tôi đã dành rất nhiều thời gian để chồng bản đồ Doppler trong lúc bay nhằm dùng cho việc phóng SLAM
Đây là một trình mô phỏng xuất sắc cùng với Tornado của Digital Integrations, và Tornado thì thực sự cần một bản reboot