-
Duke Nukem: Zero Hour의 Nintendo 64 ROM을 완벽하게 디컴파일링한 오픈소스 프로젝트 소개임
- 이 리포지토리는 원게임 소프트웨어의 모든 소스 코드를 되살리는 작업을 100% 달성함
- 사용자는 직접 게임의 ROM을 소유해야 하며, 원본 US 또는 프랑스판 ROM을 통해 전체 빌드와 테스트가 가능함
- 기존에 존재하던 디컴파일 프로젝트들과 비교해, 완벽한 기능적 호환성과 디버깅 툴 지원으로 기술적 우위를 가짐
- 이 프로젝트는 게임 엔진 연구, 변형, 이식, 그리고 엔진 분석에 매우 가치 있는 자료임
프로젝트 의의와 경쟁력
- Duke Nukem: Zero Hour는 Nintendo 64 플랫폼에서 독점적으로 발매된 유명 액션 게임임
- 본 오픈소스 프로젝트는 해당 게임의 전체 ROM을 C, Python 등으로 완전하게 디컴파일링해 소스 코드 레벨에서 재구성함
- 다른 N64 디컴파일 프로젝트와 달리 완벽한 호환성을 확보, 정상적인 ROM 빌드와 실행, 소스 코드 기반 디버깅, 멀티 버전 지원까지 제공함
- 게임 엔진 구조와 90년대 콘솔 게임 개발 노하우를 연구하는 데 탁월한 자료적 가치를 지님
- 여러 자동 분석/디컴파일 툴(asm-differ, mips2c, splat, decomp-permuter 등)이 프로젝트에 통합되어 개발자의 효율성을 극대화함
주요 기능 및 구조
전체 구조
- 프로젝트는 다중 언어로 구성되어 있으며, C(95% 이상), Python, Roff, C++, Makefile, Shell 등으로 각 파트가 나뉨
- 주요 디렉터리:
- .github/workflows: CI 및 자동화 설정
- include, libs, src: 게임 소스 및 라이브러리, 헤더 관리
- tools: 분석, 추출, 변환 도구
- versions: US/FR 등 여러 게임 버전 동시 지원 구조
- 약 370회 가까이 커밋되어 활발하게 유지 관리됨
빌드 및 사용 방법 요약
- Ubuntu 20.04 기준 환경 및 Docker 지원
- ROM 추출, 비트 단위 비교, 비정상 일치(NON_MATCHING) 모드 지원
-
프랑스어 버전과 미국 버전 ROM을 모두 지원, 사용자 필요에 따라 옵션 지정 가능
-
Docker 환경 및 Mutagen Extension을 활용하여 다양한 OS(WIN/Mac/Linux) 호환성 제공
디버깅 및 개발 도구
- gdb와 mupen64plus 기반 소스 코드 레벨 디버깅 지원(현재 Windows 우선)
- Visual Studio Code 및 Native Debug Extension과의 연동 지원
- 핵심 자동화 및 분석 도구:
- asm-differ: 어셈블리 수준 소스/타깃 비교
- decomp-permuter: 코드 재조정 및 자동 점수화
- mips2c: MIPS 어셈블리에서 C로 코드 변환
- splat: rom 구조 분석 툴
활용 방안
- 게임 리버스 엔지니어링, 이식, 엔진 분석, 고전 게임 개선 프로젝트의 소스 활용 가능성
- 역사적 보존 및 교육적 연구 목적에도 매우 적합함
- 다양한 플랫폼과 버전에 대한 유지보수 및 업데이트가 활발히 진행 중임
결론
- 이 오픈소스 프로젝트는 90년대 클래식 콘솔 게임 소프트웨어의 완전한 소스 공개를 실현한 보기 드문 사례임
- 게임 및 콘솔 리버스 엔지니어링 연구자, 젊은 개발자, 게임 이식 및 팬 게임 제작자 모두에게 값진 자원임