Claude (Opus 4.5)가 어린 시절 게임을 현대 Windows에서 실행되도록 패치하는 방법을 찾아냈다
Claude (Opus 4.6) figured out how to patch my childhood game to play it on modern Windows
TL;DR Highlight
1996년 출시된 16-bit 게임 Tonka Construction을 현대 Windows에서 돌리기 위해 Claude가 WING32.dll을 패치하는 방법을 스스로 고안해냈다. DOSBox 없이도 플레이 가능하게 만든 실전 역공학 사례.
Who Should Read
레거시 소프트웨어 호환성 문제를 다루는 개발자, 또는 오래된 Windows 애플리케이션을 현대 환경에서 실행해야 하는 사람. AI를 활용한 바이너리 패치나 DLL 번역 작업에 관심 있는 개발자.
Core Mechanics
- Tonka Construction(1996)은 16-bit 애플리케이션으로, Windows XP 이후의 64-bit 운영체제에서는 기본적으로 실행이 불가능하다. 64-bit Windows는 16-bit 코드를 직접 실행하는 레이어 자체가 없기 때문이다.
- 기존 방법은 DOSBox 같은 에뮬레이터를 설치하고 드라이버까지 따로 구성해야 했는데, 설정 과정이 번거롭고 게임 경험도 좋지 않았다.
- Claude Opus 4.5가 제안한 해결책은 WING32.dll을 직접 패치해서 해당 DLL이 하는 API 호출을 현대 Windows API로 번역(shim)하는 방식이다. GPU 호환성 레이어인 DXVK가 DirectX 호출을 Vulkan으로 번역하는 것과 같은 원리다.
- 결과물은 'TonkaReconstruction'이라는 이름으로 GitHub에 오픈소스로 공개되었으며, 별도의 에뮬레이터 없이 현대 Windows에서 게임을 실행할 수 있게 해준다.
- 이 사례는 Claude가 단순한 코드 작성을 넘어, 바이너리 레벨의 호환성 문제를 분석하고 창의적인 DLL shimming 해결책을 스스로 설계할 수 있음을 보여준다.
Evidence
- 실제 사용자가 1996년 게임 Tonka Construction을 현대 Windows에서 실행하는 데 성공했으며, 그 결과물을 GitHub(github.com/Quackster/TonkaReconstruction)에 공개해 누구나 사용할 수 있게 했다.
- Claude가 단순히 'DOSBox 써라'는 식의 우회책을 제안한 것이 아니라, DXVK 방식에서 아이디어를 얻은 DLL 번역 레이어라는 근본적인 해결책을 스스로 설계했다는 점이 커뮤니티에서 주목받았다.
- DOSBox 기반의 기존 방법과 비교했을 때, 이 패치 방식은 별도 에뮬레이터 설치 없이 게임을 직접 실행할 수 있어 사용 경험이 훨씬 낫다고 포스트 작성자가 밝혔다.
How to Apply
- 비슷하게 오래된 16-bit 또는 32-bit 레거시 앱이 현대 Windows에서 안 돌아간다면, Claude에게 해당 앱이 의존하는 DLL 목록과 오류 메시지를 보여주고 'DXVK처럼 API 번역 레이어를 만들 수 있냐'고 물어보자.
- 레거시 소프트웨어의 DLL shimming 작업을 시작할 때, Claude에게 원본 DLL의 exported function 목록을 분석시키고 각 함수를 현대 WinAPI로 매핑하는 래퍼 코드를 생성해달라고 요청해볼 수 있다.
- TonkaReconstruction GitHub 레포(github.com/Quackster/TonkaReconstruction)를 직접 참고해서 WING32.dll 패치 구조를 살펴보면, 비슷한 레거시 게임/앱 패치 작업의 출발점으로 삼을 수 있다.
Terminology
16-bit 애플리케이션1990년대 초중반 Windows 3.x 시대에 만들어진 구식 실행 파일 형식. 현대 64-bit Windows는 이 형식을 직접 실행하는 기능(WoW16)이 제거되어 있어 기본적으로 실행 불가.
DLL shimming기존 DLL 파일을 대체하는 가짜 DLL을 만들어, 애플리케이션의 API 호출을 가로채서 현대 환경에 맞게 번역하거나 수정하는 기법. Windows 호환성 레이어에서 널리 사용된다.
DXVKDirectX API 호출을 Vulkan API로 번역해주는 오픈소스 레이어. 주로 Linux에서 Windows 게임을 돌리는 데 쓰이며, 이번 패치의 설계 모델이 되었다.
WING32.dllWindows Image for Games(WinG)의 32-bit DLL로, 1990년대 Windows 게임들이 빠른 화면 출력을 위해 사용하던 구식 그래픽 라이브러리. 현대 Windows에서는 제대로 동작하지 않는다.