TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 23 READS

오우거 배틀 64, N64Recomp로 PC 네이티브 실행 99.05% 도달

오우거 배틀 64, N64Recomp로 PC 네이티브 실행 99.05% 도달
SOURCE IMAGE · HACKER NEWS

닌텐도 64용 전술 시뮬레이션 게임 '오우거 배틀 64: 로드리 캘리버'를 PC 네이티브 실행 파일로 옮기는 리컴파일 프로젝트가 99.05%까지 진행됐다. lfarroco가 공개한 이 저장소는 N64Recomp 툴체인을 이용한 정적 리컴파일(static recompilation) 방식을 쓴다. 에뮬레이션이 실행 시점에 게임의 기계어를 해석·변환하는 것과 달리, 정적 리컴파일은 원본 MIPS 코드를 미리 C 코드로 옮긴 뒤 이를 대상 플랫폼에서 다시 컴파일해 네이티브 바이너리를 만든다. 결과적으로 에뮬레이터 없이 PC에서 곧바로 돌아가는 실행 파일이 나오며, 이는 앞서 젤다의 전설 시리즈 이식에서 주목받은 접근이기도 하다.

진행 상황과 작업 방식

현재 게임의 주요 코드 세그먼트에 해당하는 807개 함수가 모두 C로 리컴파일됐다. 다음 이정표는 렌더링·입력·오디오를 담당하는 런타임 애플리케이션으로, 코드 변환은 사실상 마무리 단계지만 실제로 플레이 가능한 앱을 완성하는 작업이 남아 있는 셈이다. 세부 계획과 현재 상태, 기술적 발견은 저장소의 PLAN.md에 정리돼 있다.

눈에 띄는 대목은 이 작업의 대부분이 DeepSeek v4/v4.1 Flash 모델로 수행됐다는 저자의 설명이다. 리컴파일 과정에서 발생하는 방대한 함수 변환과 링크 순서 조정처럼 반복적이면서도 정확도가 요구되는 작업에 대형 언어 모델을 투입했다는 점에서, AI를 활용한 코드 이식 작업의 실제 사례로 참고할 만하다. 다만 저자는 모델이 '대부분'을 수행했다고만 밝혔을 뿐 구체적인 검증 방식이나 사람의 개입 비율은 공개하지 않았다.

ROM은 직접 준비해야 한다

이 저장소에는 저작권이 있는 게임 데이터가 전혀 포함돼 있지 않다. 사용자는 자신이 소유한 ROM 덤프를 직접 공급해야 하며, 요구되는 것은 USA Rev A 덤프(40MB)다. 16비트 바이트 스왑된 .n64 형식이거나 이미 변환된 .z64 형식이어야 하고, tools/convert_rom.py로 .n64를 .z64로 변환할 수 있다. 새로 클론한 저장소는 곧바로 빌드할 수 없다. 리컴파일된 C 코드는 각자의 ROM에서 생성되는 산출물이라 의도적으로 커밋되지 않았기 때문이다. 따라서 최초 1회 make regenerate를 실행해야 하며, 이 명령은 splat, MIPS 링크, 34개 뱅크 유닛, 메인 리컴파일, RSP 마이크로코드를 '동작하는 유일한 순서'로 실행한다.

앱을 실행하면 검은 시작 화면이 뜨고 ROM을 불러오라는 안내가 나온다. 화면을 클릭해 파일을 선택하거나, 창에 ROM을 끌어다 놓거나, 실행 파일 옆에 ROM을 두면 된다. ROM은 해시로 검증돼 저장되므로 이후 실행부터는 곧장 게임으로 진입한다. 배터리 세이브 데이터는 실행 파일 옆 saves/ 폴더에 저장된다.

배포와 실행 환경

배포 패키지는 단일 파일 형태로, SDL2가 정적 링크된다. make dist는 고정된 버전의 실제 SDL2를 한 번 받아 빌드하는데, 이는 Homebrew의 sdl2가 SDL3 기반 호환 셸이라 정적 라이브러리를 제공하지 않기 때문이다. 렌더러(tools/RT64)는 상위 커밋에 고정된 git 서브모듈로, SDL 2.0.22 미만 시스템에서는 별도의 일회성 패치가 필요하다. 예컨대 우분투 22.04는 SDL 2.0.20을 탑재하지만 SDL_GetWindowSizeInPixels는 2.0.22 이상을 요구한다. 이 패치는 git submodule update가 서브모듈을 초기화하며 패치를 지워버리므로, 업데이트 후 다시 적용해야 한다.

실행 조건은 비교적 가볍다. 64비트 PC와 렌더러가 지원하는 GPU가 있으면 되고, 키보드만으로도 플레이할 수 있다. XInput(윈도우) 또는 SDL 컨트롤러를 지원하는 게임패드는 선택 사항이며, 오디오 장치가 없으면 소리 없이 조용히 돌아간다. 윈도우에서는 Visual C++ 재배포 패키지가 필요 없는데, 패키지가 셰이더 컴파일러에 필요한 런타임을 자체 포함하기 때문이다. 시작하자마자 크래시가 난다면 먼저 그래픽 드라이버를 업데이트하고, 구형 GPU에서는 OGRE_CONSOLE=1로 부팅 로그 콘솔을 열거나 OGRE_GRAPHICS_API로 백엔드(vulkan 또는 d3d12)를 고정할 수 있다.

실무적으로 이 프로젝트는 정적 리컴파일이 소수의 대작 이식에 국한되지 않고, 툴체인과 AI 보조로 다른 N64 타이틀에도 확장될 수 있음을 보여주는 사례다. 동시에 한계도 분명하다. 코드 변환이 99% 수준이라도 실제로 플레이 가능한 런타임 앱은 아직 미완성이며, 실행에는 반드시 사용자가 합법적으로 확보한 ROM이 있어야 한다. 저작권은 Quest와 닌텐도에 있고, 프로젝트는 보존과 상호운용성 연구를 목적으로 하며 ROM이나 추출된 에셋의 배포는 금지된다는 점을 저자는 거듭 강조한다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/lfarroco/ogre-battle-64-recomp
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...