Duke Nukem: Zero Hour N64 ROM 리버스 엔지니어링 프로젝트 100% 달성

2 weeks ago 11

  • 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년대 클래식 콘솔 게임 소프트웨어의 완전한 소스 공개를 실현한 보기 드문 사례임
  • 게임 및 콘솔 리버스 엔지니어링 연구자, 젊은 개발자, 게임 이식 및 팬 게임 제작자 모두에게 값진 자원임

Read Entire Article