Claude Code가 1993년 Amiga 68000 어셈블리 7만여 줄을 읽어 Godot 포트와 원본 재출시를 만든 과정
- 작성자는 Claude Code에 2010년판 C++ 34,000줄과 1993년판 68000 어셈블리 72,758줄을 각각 Godot 4로 옮기게 하고, 현대판 안에서 원본을 실행하는 세 번째 작업까지 완료했다고 밝힘
- 에이전트는 파일시스템과 터미널에서 코드를 편집하고 vasm으로 원본을 재어셈블한 뒤 바이너리를 비교했으며, FS-UAE로 Amiga 결과물을 부팅해 검사함
- 에이전트가
--drive,--probe,--screenshot같은 명령행 옵션을 추가해 프레임 단위 입력, 좌표와 속도, 스위치·문·열쇠 상태를 기록하게 함 - 작성자는 1년 전 여러 차례 힌트가 필요했던 바이너리 레벨 포맷 해석을 이번에는 단 한 번의 실행으로 끝냈다고 적음
- 자동 검증은 스크립트 컴파일과 레벨 빌드에 한정됐고, 현대판 화면 비교와 조작감 평가는 자동화하지 않아 작성자가 스크린샷과 플레이로 확인했음
Hacker News opinions
Claude Code가 만든 도구와 작업 과정을 공학 가이드로 내주면 좋겠음. 바이너리 리버싱을 해봤지만 이런 결과는 보기 드묾.
나도 DOS 게임을 SDL로 포팅하면서 비슷하게 작업 중임. 에이전트가 매번 처음부터 환경을 만들지 않도록 지식 베이스, 스킬, 패치를 담은 저장소를 만들고 있음.
관심 있는 주제인데도 글의 AI 문체가 너무 거슬려서 끝까지 읽기 힘들었음. 프로젝트에 애정이 있다면 자기 말로 써서 공유했으면 함.
AI 문체가 약간 보이긴 해도 이 이야기를 읽지 않을 이유는 아니라고 봄. AI가 글 정리를 도왔기에 이런 사연 자체가 공개됐을 수도 있음.
에이전트가 낡고 비표준적인 하드웨어 해킹 코드를 어디까지 해석하는지 보고 싶었음. 몇 군데 틀린 부분이 있었다는 점도 오히려 신뢰가 감.
512KB에서 어셈블리로 이 정도 화면을 만든 게 대단함. Amiga 500을 쓰다가 386으로 넘어가니 오히려 퇴보처럼 느껴졌던 기억이 남.
포트와 글을 Claude가 만들고 작성자도 AI가 한 일을 나중에 분석했다면, 사람에게 질문할 이유가 뭔지 모르겠음. 저장소나 작업 대화 기록을 공개해서 Claude에게 직접 물어볼 수 있으면 좋겠음.
나는 포트가 끝난 몇 주 뒤에야 분석해서 108바이트 차이를 알았음. Claude의 설명도 완전히 납득하지 못했고, 어셈블러나 Amiga 500과 M5 MacBook 환경, 33년 전 메모리 덤프 저장 방식 차이일 수 있음.
원본이 있으면 UAE에서 돌리는 편이 낫다고 봄. Godot 포트라고 부르면서 Amiga 이름을 내세우려면 UAE에서 실제 코드가 돌아가는 모습도 보여줘야 신뢰할 수 있음.
원본 Amiga판도 글 하단 링크에서 무료로 받을 수 있음. 이 글은 원본을 대체한다는 주장보다 1990년대 어셈블리를 AI와 읽고 출시 준비를 한 경험에 관한 글임.
원본과 포트를 UAE에서 같은 입력으로 나란히 돌려 비교하지 않았다면 '플레이 감각이 맞다'는 말만으로는 부족함. 108바이트 차이도 그냥 넘길 일이 아님.
같은 동작을 하는 68000 명령어도 인코딩이 다를 수 있고, 어셈블러가 더 짧은 형태로 정규화할 수도 있음. 차이 난 바이트가 어떤 명령어인지 먼저 보면 판단할 수 있음.
내가 궁금한 건 성능과 메모리 사용량임. 2010년 C++ 포트와 이번 Godot판이 원본보다 얼마나 더 많은 자원을 쓰는지 수치가 필요함.