Claude로 만든 GBA용 슈퍼 마리오 64 디메이크, 마리오 물리 엔진은 원본과 비트 단위로 동일
A Super Mario 64 demake for the GBA built with Claude. Mario’s physics are bit-identical to the original
핵심 요약
Claude를 활용해 GBA 환경에서 원본과 동일한 물리 엔진을 구현한 슈퍼 마리오 64 디메이크 프로젝트입니다.
- GBA 이식 — 16.8MHz ARM7 환경에서 소프트웨어 3D로 구동됨
- 물리 엔진 — 원본과 비트 단위로 동일한 마리오 움직임 구현
- Claude 활용 — 에이전트 세션을 통해 코드 작성 및 최적화 수행
- ROM 임포트 — 사용자의 ROM을 활용해 실제 모델과 레벨 데이터 사용 가능

Claude를 써서 GBA용 슈퍼 마리오 64 디메이크를 만들었는데, 마리오 물리 엔진은 원작이랑 비트 단위까지 똑같이 구현했다.
본문:
LLM한테 코딩은 안 시키고 방향만 잡았을 때 디메이크를 어디까지 뽑아낼 수 있을지 실험해 보려고 Claude로 이걸 만들었다. 내가 프로젝트랑 방향성, 트레이드오프를 정하면 Claude가 코드 짜고 테스트하고 툴까지 다 만들었음.
저장소: https://github.com/Kodoque1/sm64-gba (MIT 라이선스, 무료)
이게 뭔데?
-
SM64의 움직임이랑 충돌 코드를 GBA 제약 조건(FPU 없는 16.8 MHz ARM7)에서 돌아가게 만듦.
-
플레이 가능한 데모: 레벨 4개, 소프트웨어 3D, 게임 원본 애니메이션 데이터로 움직이는 마리오.
-
libsm64 스타일의 선택적 임포트 기능: 니가 가진 ROM을 읽어서 마리오 모델이랑 레벨 메시를 그대로 가져옴. 저장소에는 닌텐도 데이터 하나도 안 들어있음.
Claude는 어떻게 썼냐?
지시는 간단하게 내렸다("비트 단위로 똑같이", "이제 최적화해", "부드러운 데모 만들고, 안 되면 적당히 타협해"). Claude는 툴체인이랑 헤드리스 에뮬레이터가 포함된 에이전트 세션에서 알아서 프로파일링하고, 다시 쓰고, 검증까지 다 하더라.
설계 논의할 때가 제일 재밌었음. 마리오 애니메이션 구현 가능하냐고 물어보니까 Claude가 마리오 본체는 못 그리겠다고 거절하더니, 대신 실제 애니메이션 데이터로 움직이는 나무 인형을 만들어 오더라. 내가 신체 부위별로 스프라이트 하나씩 쓰자고 하니까, 그건 타원체(ellipsoid)로 하는 게 낫다고 하더라고. 타원체 외곽선은 항상 타원이라 GBA 아핀 스프라이트로 그리기 딱 좋거든. 내가 스프라이트 아틀라스 쓰자고 했을 때는 왜 그게 안 되는지 설명해주면서, 내 ROM에서 실제 로우 폴리곤 메시를 렌더링하자고 제안하더라.
직접 해보기 (무료)
-
make fetch && make demo치면 mGBA에서 돌아가는 ROM(인형 버전)이 빌드됨. -
니 ROM 쓸 거면:
make import ROM=sm64.z64 && make demo -
make demo-check치면 물리 엔진 제대로 돌아가는지 다시 검사함.

