옷, 부츠, 그리고 모터사이클이 필요하다

발행: (2026년 6월 18일 PM 05:28 GMT+9)
11 분 소요

Source: Hacker News

Power Macintosh 에뮬레이션이 MAME에서 오랫동안 거의 진전이 없었던 이유 중 하나는 매우 디버깅하기가 지루했기 때문이다. 코드 표면이 넓고, PowerPC, 에뮬레이티드 680×0, 그리고 컴파일된 FORTH라는 세 가지 언어로 작성되어 있어, Code Fragment Manager와 같은 최신 부분에 익숙하지 않은 나는 680×0 코드베이스에 대한 이해도가 더 높다. 그래서 2026년 현재, Claude Code에게 MAME를 제어하고 디버깅할 수 있는지 물어봤다.它回复“예, 제한이 있다”고 하였으며, 몇 번의 시도 후에는 커스텀 Lua 부트 스크립트를 생성하고 MAME을 수정해 파일에 로그를 남기는 방식으로 작업하게 되었다.

그 후 I pointed it at the Pippin이라고 말했고 “That doesn’t boot and it makes me sad” (실은 그렇지 않다. 실제 문장은 내 이전 디버깅 시도에서 얻은 교훈이었다). 꽤 짧은 시간 안에,它发现了 Cuda 68HC05와의 통신이 MAME의 6522 VIA 에뮬레이션 결함으로 인해 실패하고 있음을 확인했다.

수정된 후에도 큰 진전은 없었지만, 약 1주일 뒤에는 MAME의 PowerPC 에뮬레이션에 반 dozen 개의 문제와 PCI 시대 Macintosh 하드웨어 지원에도 여러 문제가 있음을 찾아냈다. 이제 Pippin은 (조금 creepy한) 시작 사운드와 초기 “P!P P!N” 박스 로고를 재생하고, 화면 위에서 마우스 포인터를 움직일 수 있게 되어 마치 비밀이 아닌 맥처럼 보였다.

Vas는 PowerPC DRC에 anti-pattern이 있음을 발견했다. 이는 코드가 생성되고 캐시될 때와 실제 실행 시의 live machine state 대신 저장된 값을 사용하게 되는 현상으로, DRC를 작성할 때 실수로 쉽게 발생할 수 있다. 구체적인 원인을 찾을 수는 없지만, 이는 확실히 정확성 개선이며, 장기적으로는 조용히 도움이 될 것이다.

그에 더해 실제 PowerMac을 지원하기 위해 Pippin과 유사한 하드웨어를 가진 기기를 추가하고 싶었는데, Power Macintosh 7200이 적합했다 (이것은 Quadras에서 사용되는 익숙한 DAFB 비디오와 유사한 변형을 사용한다). 처음엔 Pippin에 적용된 모든 수정이 thanks를 받아 잘 진행 seemed 되었지만, 시작 디스크 폴링 루틴까지 도달했다.

하지만 온보드 비디오가 초기화되지 않는 문제가 있었다. Claude에게 이 점이 이제 나를 슬프게 만든다고 말했고,它发现了 PowerPC 601 에뮬레이션에 두 개의 버그가 있었다. 그 버그를 해결한 후, 메인 화면이 켜지고 부팅 검색 루틴의 익숙한 3.5″ 플로피가 표시된다.

하지만 디스크를 찾지 못했다는 의미의 깜빡이는 ?는 작동하지 않았다. 그래도 큰 진전이었고, 나는 그 aside에 두었다.

다음으로 기기가 슬프게 만든 것은 Power Macintosh 6100이 System 버전 7.5.0 이후의任何系统을 부팅하려고 시도할 때마다 freezing 되었다.

Claude는 이전 시스템 버전에서는 에뮬레이티드 680×0 코드와 대비되는 네이티브 PowerPC SCSI Manager가 존재한다는 점을 빠르게 파악했으며, 이를 위해 MAME이 PowerPC의 원자적 로드/스토어 명령을 잘못 에뮬레이션하고 있음을 추적했다.

이 명령들은 인터럽트 핸들러가 다른 장치가 메모리를 건드리고processor에 알려줄 때에도 안전하게 작동하도록 보장하기 위해 자주 사용된다.

Sega Model 2 MVP인 gm-matthew이 이를 해결하는 PR을 제출했으나, 검토 과정에서滞了.

저는 그 변경 사항을 가져와 적용했고, System 7.5.3과 7.5.5가 바로 Finder로 부팅되어 원활하게 실행되며(네이티브 PowerPC SCSI 드라이버 덕분에 더 효율적으로) 기뻤다.

변경 사항을 재테스트하면서 이 수정도 Pippin이 CD 삽입을 알리는 애니메이션으로 진전하게 했고, PowerMac 7200에는 누락된 깜빡이는 ?가 추가되었다는 것을 발견했다. 그만 괜찮았다!

그 후, Power Mac에 동봉되어 있던 유명한 그래프 계산기가 새로운 CPU의 수학적 향상된 점을 보여주기 위해 제공되었으나 MAME에서는 작동하지 않아 슬펐다.

Claude는 FPU 연산이 상태 플래그를 업데이트하지 않는다는 점을 빠르게 지적했으며, 이는 MAME의 PowerPC 코어가 원래 지원하도록 설계된 고도로 최적화된 아케이드 게임과 같이 자주 사용되지 않는다.

하지만 이는 컴퓨터 운영 체제와 특히 Apple의 SANE 부동소수점 라이브러리에게 매우 중요합니다.

현재 진행 중인 수정 사항은 그래프 계산기가 자체 데모의 2D 부분을 정상적으로 실행하도록 허용하지만, 3D 부분은 아직 작동하지 않는다. 따라서 어느 정도는 슬픔이 완화되었고, 여기서부터 더 진행 중입니다. (UPDATE: 3D는 이제 정상적으로 작동합니다. 601의 정렬 예외가 제대로 동작하지 않아 예상보다 큰 영향을 미치지 못했다고 증명할 수 있는 범위가 제한적입니다).

또한 AI는 특정 잘 정의된 장치의 펌웨어 바이너리 — 컴퓨터 키보드 Apple Extended Keyboard이나 마우스부터 디지털 합성기 digital synthesizer까지 — 를 분석하고 메모리 맵과 주요 서브루틴이 어디에 위치하며 어떤 역할을 하는지에 대한 훌륭한 초기 추측을 제공하는 데 매우 능숙합니다.

팁: 기기의 기능과 MAME의 unidasm 디스어셈버가 있는 위치를 알려 주세요.它可以 without, 하지만 그 정보를 제공하면 훨씬 빠르게 유용한 출력을 얻을 수 있습니다.

GPT 5.5 Pro (Codex를 통해) 저는 이 문제에 대해 특히 뛰어나며, Claude도 만만치 않습니다.

초기 이해가 확립된 후에는 “MIDI Note On 메시지의 데이터 흐름을 추적하고, 커스텀 사운드 칩의 각 레지스터에 대한 예상되는 기능을 묻는”과 같은 프롬프트를 작성하여 유용하고 실행 가능한 답변을 얻을 수 있습니다.

이 내용이 AI에 대한 전면적인 추천으로 보일 수 있도록 주의할 점이 몇 가지 있습니다. 첫째로, 모든 작업은 경험 많은 에뮬레이션 프로그래머(나)가 AI를 감독하고,它가 이론적 가능성은 있지만 내가 가능성이 낮다고 판단한 문제와 자주 충돌하며 “hey, stop that!”라고 중단시키는 과정에서 이루어졌습니다.

스포일러 알림: 나는 거의 항상 옳았다. AI는 여러 면에서 유용하며, “아, 0x123456에 있는 이 데이터 구조가 QuickDraw GrafPort다”와 같은 놀라운 제안을 무작위로 내놓기도 하지만, 데이터를 바탕으로 실제 결론을 내리거나 판단을 할 때는 빠르게 길을 잃을 수 있습니다.

둘째로, AI는 버그를 찾아냈지만 그 수정 작업은 내가 작성한 것이지(몇 안 되는 사소한 한 줄짜리 경우는 제외하고) 내가 개인적인 스타일과 네이밍 선호에 맞게 편집했다. MAME에는 아직 공식적인 AI 정책이 없으며, “vibe code”(감성 코드) 제출을 원하지 않는다(그리고 PR 설명을 AI가 쓰게 하면 나는 분명히 불편해지며, 팀 내 AI 회의론자들도 certamente 불편할 것이다). 자유롭게 AI를 활용해 역공학과 디버깅을 마음껏 할 수 있지만, 결국 MAME는 제출한 사람들이 이해하고 유지보수할 수 있는 코드가 필요합니다.

0 조회
Back to Blog

관련 글

더 보기 »

오픈클로에서 이전

hermes claw migrate imports your OpenClaw or legacy Clawdbot/Moldbot setup into Hermes. This guide covers exactly what gets migrated, the config key mappings, a...