- Duke Nukem: Zero Hour là dự án mã nguồn mở giới thiệu việc decompile hoàn toàn ROM Nintendo 64 của game này
- Kho lưu trữ này đã đạt được mục tiêu khôi phục toàn bộ mã nguồn gốc của phần mềm game ở mức 100%
- Người dùng phải sở hữu ROM của chính game; việc build và kiểm thử toàn bộ có thể thực hiện qua ROM US hoặc bản Pháp gốc
- So với các dự án decompile đã có trước đó, dự án này có lợi thế kỹ thuật nhờ sự tương thích chức năng hoàn hảo và hỗ trợ công cụ debug
- Dự án này là tài nguyên rất có giá trị cho nghiên cứu, biến đổi, porting và phân tích engine game
Ý nghĩa và lợi thế cạnh tranh
- Duke Nukem: Zero Hour là một tựa game hành động nổi tiếng, phát hành độc quyền trên nền tảng Nintendo 64
- Dự án mã nguồn mở này đã decompile toàn bộ ROM của game bằng C, Python, v.v., tái cấu trúc ở cấp độ mã nguồn
- Khác với các dự án decompile N64 khác, nó đạt sự tương thích hoàn hảo, cho phép build và chạy ROM ổn định, debug dựa trên mã nguồn, cùng hỗ trợ đa phiên bản
- Dự án có giá trị tài liệu xuất sắc cho nghiên cứu cấu trúc engine game và kinh nghiệm phát triển game console thập niên 1990
- Nhiều công cụ phân tích/decompile tự động (asm-differ, mips2c, splat, decomp-permuter, v.v.) đã được tích hợp để tối ưu hiệu suất làm việc cho nhà phát triển
Chức năng chính và kiến trúc
Cấu trúc tổng thể
- Dự án được xây dựng đa ngôn ngữ, gồm các phần bằng C (trên 95%), Python, Roff, C++, Makefile, Shell, v.v.
- Thư mục chính:
- .github/workflows: Cài đặt CI và tự động hóa
- include, libs, src: Mã nguồn game, thư viện và quản lý header
- tools: Công cụ phân tích, trích xuất, chuyển đổi
- versions: Cơ chế hỗ trợ đồng thời nhiều phiên bản game như US/FR
- Được duy trì rất tích cực với khoảng gần 370 lần commit
Tóm tắt build và cách sử dụng
- Hỗ trợ môi trường Ubuntu 20.04 và Docker
- Hỗ trợ trích xuất ROM, so sánh theo từng bit, và chế độ NON_MATCHING
- Hỗ trợ cả ROM bản Pháp và bản Mỹ, cho phép chỉ định tùy chọn theo nhu cầu người dùng
- Tận dụng môi trường Docker và Mutagen Extension để đảm bảo tương thích trên nhiều OS (WIN/Mac/Linux)
Công cụ debug và phát triển
- Hỗ trợ debug cấp mã nguồn dựa trên gdb và mupen64plus (hiện tại ưu tiên Windows)
- Hỗ trợ tích hợp với Visual Studio Code và Native Debug Extension
- Các công cụ tự động hóa và phân tích cốt lõi:
- asm-differ: So sánh source/target ở mức assembly
- decomp-permuter: Sắp xếp lại mã và tự chấm điểm
- mips2c: Chuyển mã từ assembly MIPS sang C
- splat: Công cụ phân tích cấu trúc ROM
Ứng dụng
- Khả năng tận dụng mã nguồn cho nghiên cứu reverse engineering game, porting, phân tích engine, cũng như dự án cải tiến game cổ điển
- Cũng rất phù hợp cho mục tiêu bảo tồn lịch sử và nghiên cứu giáo dục
- Việc bảo trì và cập nhật cho nhiều nền tảng và phiên bản đang diễn ra rất tích cực
Kết luận
- Dự án mã nguồn mở này là một trong rất ít trường hợp đã thực hiện phát hành đầy đủ mã nguồn phần mềm game console classic những năm 1990
- Đây là tài nguyên giá trị cho các nhà nghiên cứu reverse engineering game và console, lập trình viên trẻ, cũng như người làm porting và tạo fangame
1 bình luận
Ý kiến trên Hacker News