Claude가 1991년 DOS 게임의 버그를 수정해줘서 아이와 함께 추억을 되살릴 수 있게 됐네요
Claude fixed a bug in a DOS game from 1991 and now my kid can relive the magic
핵심 요약
Claude가 90년대 DOS 게임의 사운드 카드 호환성 문제를 분석하고 바이너리 패치를 통해 해결해준 감동적인 사례입니다.
- 레트로 게임 복구 — 1991년 작 'Operation Neptune'을 실제 90년대 PC에서 구동함
- Claude의 디버깅 — EXE 파일을 분석해 사운드 카드 인식 오류를 찾아내고 3바이트 패치를 생성함
- 기술적 원인 — Roland MPU-401 호환성 문제로 인해 사운드 카드 인식 과정에서 무한 루프가 발생함
- 추억 공유 — 아버지가 어린 시절 즐기던 게임을 자녀와 함께 DOS 환경에서 직접 플레이함
누가 보면 행성이라도 새로 발견한 줄 알겠지만, 오늘 내가 겪은 소소한 성공 때문에 진짜 말 그대로(메리엄-웹스터 사전적 의미로) 웃음이 터져서 미칠 것 같더라. 그래서 이 짧은 썰 좀 풀어보려고.
얼마 전에 페이스북 마켓플레이스에서 펜티엄 75 구형 컴퓨터를 충동구매했거든. 개인 데이터 복구랑 아카이빙 하려고 5.25인치 디스크 10여 장을 읽을 방법이 필요하기도 했고, 무엇보다 내가 레트로 게임에 환장하잖아. 시대에 딱 맞는 PC 한 대 있으면 일석이조겠다 싶었지. 지난 일주일 동안 데이터 아카이빙하면서 진짜 재밌게 놀았어(30년 동안 멀쩡하게 버텨준 자기 매체에 박수를!). 물론 구형 하드웨어 만지는 것도 개꿀잼이었고. CRT 모니터의 그 특유의 깜빡임이랑 페이드 효과, 기계식 하드 드라이브 돌아가는 소리, 플로피 드라이브 윙윙거리는 소리까지. 진짜 마법 같더라니까.
내가 10살 때 엄청 좋아했던 게임 중에 The Learning Company에서 만든 Operation Neptune이라는 게 있어. 그동안 DOSBox로 몇 번 돌려보긴 했는데, 이번에 진짜 하드웨어로 돌려보면 딱이겠다 싶었지. 며칠 전에 플로피 디스크로 옮겨서 실행해 봤는데, VGA랑 Adlib 사운드 감성에 30초 정도 젖어 있다가 나중에 아들내미 시켜주려고 껐거든. "나중에"가 오늘 오후가 됐는데... 갑자기 실행이 안 되는 거야. 뭘 해도 PC가 멈춰버려서 Ctrl+Alt+Del만 계속 눌러댔지.
생각나는 건 다 해봤어. 파일 다시 옮겨보고, FreeDOS 부팅 방식도 바꿔보고, BIOS 설정도 다시 확인하고. 다른 프로그램들은 잘 돌아가는지, 소리는 제대로 나오는지까지 다 체크했지.
근데 안 돼.
그래서 그냥 게임 원본 바이너리 파일을 Claude한테 던져주고 문제 상황을 설명했거든? 와, 근데 이 새끼가 진짜 일을 냈어.
5분 만에 EXE 파일을 디스어셈블해서 실행 경로 추적하더니, 원인을 딱 짚어내고는 EXE 복사본에 3바이트 패치를 적용해 주더라. 파일 옮겨서 실행하니까 바로 한 방에 성공함.
Claude가 보내준 답변 내용 일부야:
이 게임 사운드 라이브러리가 사운드 장치를 찾는 순서가 Roland MT-32(MPU-401 MIDI 포트 경유) → AdLib → Tandy/PS1 → PC 스피커 순이야. 포트 330h에 MPU-401이 있는지 확인하려고 리셋 신호를 보내고 표준
FEh"OK" 응답을 기다리는데, 이 체크 과정에 타임아웃이 있어. 근데 나중에 명령 보내는 루틴에는 타임아웃이 없거든.
음을 재생할 때
D7h라는 명령어를 쓰는데, 이게 오리지널 Roland MPU-401의 "인텔리전트 모드"에만 있는 거야. 대부분 사운드 카드의 MIDI 포트(사운드 블라스터 16이나 그 복제판, 요즘 나오는 레트로 카드들)는 UART 전용이거든. 얘네는 리셋 신호에 응답을 하니까 게임은 Roland가 있는 줄 알고 착각하는데, 정작D7h명령은 못 알아먹는 거지. 그래서 게임이 무한 루프에 빠져서 멈추는 거야.

