클로드(Claude)가 1991년 DOS 게임의 버그를 수정했고 이제 우리 아이가 그 마법을 다시 경험할 수 있게 되었다
요약
작성자가 오래된 DOS 게임의 버그를 수정하는 과정에서 Claude AI의 도움을 받았습니다. Claude는 EXE 파일을 분석하여 사운드 카드와 MPU 포트 관련 근본적인 원인을 파악했고, 3바이트 패치를 제안했습니다. 이 패치 덕분에 오랫동안 작동하지 않던 레트로 게임이 성공적으로 구동되었습니다.
핵심 포인트
- Claude가 DOS 게임의 버그를 분석하고 해결책을 제시함.
- 사운드 카드(MPU)와 포트 관련 기술적 원인을 깊이 있게 파악함.
- 3바이트 패치라는 정교한 코딩 지식으로 문제를 해결함.
이것이 어떤 사람들이 새로운 행성을 발견하는 것과 비견될 정도는 아니지만, 오늘 있었던 사소한 성공 덕분에 저는 말 그대로(메리엄-웹스터식의 단어 의미로) 웃음으로 들떠서 이 아주 짧은 이야기를 여러분께 전하고 싶었습니다. 최근 저는 유혹을 이기지 못하고 FB Marketplace에서 오래된 Pentium 75 컴퓨터를 구매했습니다. 개인 데이터 복구 및 아카이빙을 위해 수십 개의 5.25인치 디스크를 읽을 방법이 필요했고, 게다가 저는 레트로 게임에 약한 사람이거든요. 실제 시대의 PC가 두 마리 토끼를 잡는 것 같았습니다. 지난 한 주 동안 데이터를 아카이브하는(30년 동안 자기 기록 매체가 안정적으로 유지된 것에 찬사를!) 재미를 많이 느꼈고, 물론 오래된 하드웨어로도 놀았습니다. 실제 CRT의 찰칵거림과 사라짐, 기계식 하드 드라이브의 윙윙거리는 소리, 플로피 드라이브가 작동하는 '웅' 하는 소리. 정말 마법 같았습니다. 제가 어렸을 때(10살) 아끼던 게임 중 하나는 The Learning Company의 Operation Neptune입니다. 저는 수년 동안 DOSBox를 사용해서 몇 번 플레이했지만, 실제 하드웨어에 적합한 후보라고 생각했습니다. 며칠 전 플로피에 옮겨서 실행해 보았고, VGA와 Adlib의 영광을 약 30초 동안 만끽한 후 종료하며 아들이 곧 해보게 할 계획이었습니다. '곧'은 오늘 오후가 되었지만... 작동하지 않았습니다. 시도할 수 있는 모든 것을 해봤습니다. 파일을 다시 전송했습니다. 다른 FreeDOS 부팅 패턴을 사용해 봤습니다. BIOS 설정을 재확인했습니다. 다른 프로그램들도 여전히 실행되는지, 심지어 기능하는 사운드까지 포함했는지 확인했습니다. 소용없었습니다. 그래서 원래의 바이너리 게임 파일과 문제 설명을 Claude에게 건넸고, 정말 놀라운 결과를 보여주었습니다. 5분 만에 EXE를 분해하고, 실행 경로를 추적했으며, 발생 가능한 근본 원인을 파악했고, 새로운 EXE 사본에 3바이트 패치를 적용했는데, 제가 그것을 복사하자마자 첫 시도에 작동했습니다.
Claude의 응답 발췌: 게임의 사운드 라이브러리는 다음 순서로 사운드 장치를 선택합니다: Roland MT-32 (MPU-401 MIDI 포트를 통해) → AdLib → Tandy/PS1 → PC 스피커. 이 프로그램은 리셋을 보내고 표준 FEh "OK" 응답을 기다림으로써 330h 포트에서 MPU-401이 있는지 확인합니다. 그 확인 과정에는 타임아웃이 있습니다. 나중에 명령을 전송하는 루틴에는 그런 타임아웃이 없습니다. 음표를 재생하기 위해 D7h를 사용하는데, 이 명령어는 오리지널 Roland MPU-401의 "지능형 모드(intelligent mode)"에만 존재하는 것입니다. 대부분의 사운드 카드 MIDI 포트(Sound Blaster 16, 대부분의 복제품, 많은 최신 레트로 카드)는 UART 전용입니다. 이들은 리셋에는 응답하므로 게임은 Roland이 있다고 판단하지만, D7h를 절대 인정하지 않습니다. 결국 게임은 무한 루프에서 영원히 기다리게 되어 기계가 멈춥니다(lock). 이틀 전에는 작동했던 이유를 확실하게 말할 수는 없습니다. 그 한 번의 실행 동안 MPU가 응답하지 않았거나 제대로 응답하지 않은 무언가가 있었을 것입니다. 가능성: 다른 카드 모드나 설정, 당시 로드되었던 SoftMPU 같은 TSR(Terminate and Stay Resident) 프로그램, 또는 MPU 비활성화. 그 기계에는 어떤 사운드 카드가 있나요? 당신의 어린 시절 기억도 설득력이 있습니다: Sound Blaster 16이 장착된 90년대 가족용 PC는 정확히 이렇게 멈췄을 것입니다. 저는 ON_NOMPU.EXE를 만들었는데, 이 파일은 3바이트(파일 오프셋 0x1FB06 : BA 31 03 → EB 18 90)를 변경합니다. MPU 감지 부분이 이제 곧바로 "찾을 수 없음" 종료 지점으로 점프하므로, 게임이 330h 포트를 건드리지 않습니다. 그러면 스스로 AdLib을 선택해야 합니다. 믿기 힘들고 놀랍습니다. /u/jrowberg 제출 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI (top/week)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기