처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.31 32

젤다 황혼의 공주가 통째로 C 코드로 부활했다 - Dusklight 디컴파일 프로젝트

Hacker News 원문 보기
젤다 황혼의 공주가 통째로 C 코드로 부활했다 - Dusklight 디컴파일 프로젝트

게임큐브 명작이 소스코드로 돌아왔어요

혹시 게임큐브로 나온 '젤다의 전설: 황혼의 공주' 기억나세요? 2006년에 나와서 닌텐도 액션 어드벤처의 정점을 찍었다고 평가받는 그 게임이요. 그런데 최근 Dusklight라는 프로젝트가 이 게임의 전체 바이너리를 C 언어 소스코드로 완전히 복원하는 데 성공했어요. 닌텐도가 공식적으로 소스를 공개한 게 아니라, 팬 개발자들이 디스크에 들어있는 기계어 코드를 한 줄 한 줄 분석해서 원래의 C 코드로 되돌린 거죠.

이게 뭐가 대단하냐면요, 디컴파일이라는 작업 자체가 정말 어렵거든요. 컴파일러가 C 코드를 어셈블리어로 바꿀 때는 변수 이름이 사라지고, 함수 경계도 흐려지고, 최적화 때문에 원본과 전혀 다른 구조로 변형돼요. 이걸 거꾸로 되돌려서 "원래 닌텐도 개발자가 작성했을 코드와 똑같이 컴파일되는 C 코드"를 만들어야 해요. 즉 빌드해서 나오는 바이너리가 원본 디스크와 비트 단위로 일치해야 인정받는 거예요.

매치 디컴파일이라는 미친 짓

이런 작업을 업계에서는 매칭 디컴파일(matching decompilation)이라고 불러요. 그냥 비슷하게 동작하는 코드를 만드는 게 아니라, 컴파일 결과물이 원본과 1바이트도 다르지 않아야 한다는 게 핵심이에요. 왜 이렇게 엄격하게 하냐면, 그래야 "우리가 정말 원본을 복원했다"고 증명할 수 있고, 향후 패치나 모드를 만들 때도 안정성이 보장되거든요.

Dusklight 팀은 GameCube에서 사용한 PowerPC 아키텍처용 컴파일러(주로 Metrowerks CodeWarrior)의 정확한 버전과 옵션을 알아내야 했어요. 같은 C 코드라도 컴파일러 버전이 다르면 결과물이 달라지니까요. 함수 하나를 복원할 때마다 "이 어셈블리가 나오려면 원본 C는 어떻게 생겼을까?"를 추리하면서, 분기문의 위치, 레지스터 할당 순서, 인라인 함수의 동작까지 다 맞춰야 해요. 베테랑 개발자들이 모여서 몇 년씩 매달리는 이유가 있어요.

비슷한 프로젝트들과의 흐름

사실 닌텐도 게임 디컴파일은 이제 하나의 문화로 자리잡았어요. 슈퍼 마리오 64 디컴파일 프로젝트가 2019년에 완성된 게 시작이었고, 이후 젤다 오카리나 오브 타임, 무쥬라의 가면, 슈퍼 마리오 갤럭시 같은 작품들이 차례로 매칭 디컴파일에 성공했어요. 이 흐름의 정점에 있는 게 이번 황혼의 공주예요. 게임큐브 시대 게임 중에서는 거의 최초로 풀 사이즈 액션 어드벤처가 완전 디컴파일된 사례거든요.

이런 프로젝트들이 왜 중요하냐면, 단순히 "옛날 게임 PC에서 돌리려고"가 아니에요. 원래 게임을 PC나 다른 플랫폼으로 포팅할 수 있게 되고, 60fps 패치, 와이드스크린 지원, 그래픽 개선 같은 모드가 가능해져요. 슈퍼 마리오 64는 디컴파일 덕분에 레이트레이싱 버전, VR 버전, 심지어 PS Vita 포팅까지 나왔어요. 황혼의 공주도 비슷한 운명이 기대돼요.

법적인 회색지대

다만 이 작업은 법적으로 민감해요. 저작권법상 리버스 엔지니어링은 나라마다 해석이 다르고, 닌텐도는 팬 프로젝트에 특히 강경한 입장이에요. 그래서 이런 프로젝트들은 원본 게임의 리소스(텍스처, 모델, 사운드)는 포함하지 않고, 순수하게 코드만 공개해요. 사용자가 정품 디스크를 갖고 있어야 빌드할 수 있는 구조죠. Dusklight도 같은 방식으로 운영돼요.

한국 개발자가 배울 만한 점

게임 개발이나 임베디드를 안 한다고 해서 이 프로젝트가 무의미한 건 아니에요. 디컴파일 과정에서 쓰이는 도구들 — Ghidra, IDA Pro, m2c(MIPS to C) 같은 리버스 엔지니어링 도구들은 보안 분석, 악성코드 분석, 레거시 시스템 유지보수에서도 쓰이는 핵심 기술이에요. 오래된 시스템을 다루는 회사라면 "문서도 없고 소스도 사라진" 바이너리를 분석해야 하는 일이 종종 생기거든요. 그때 이런 커뮤니티의 노하우가 그대로 적용돼요.

또 컴파일러가 어떻게 동작하는지를 깊이 이해하게 되는 부수효과도 있어요. "왜 이 코드가 이렇게 최적화될까?"를 거꾸로 추적하는 경험은 성능 튜닝 능력을 크게 키워줍니다.

마무리

결국 Dusklight는 20년 된 명작 게임을 후대에 보존하려는 거대한 아카이브 프로젝트예요. 닌텐도가 언젠가 서비스를 종료해도, 이 코드가 있는 한 황혼의 공주는 영원히 살아남아요. 여러분이 좋아하는 옛날 게임 중에서, 이렇게 후대에 남기고 싶은 작품이 있나요? 그리고 이런 팬 디컴파일 문화에 대해 닌텐도가 좀 더 관대해질 수 있을까요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.