dexmac221/C64AIToolChain
요약
C64AIToolChain은 GitHub Copilot 에이전트를 활용해 Commodore 64용 게임을 개발하는 창의적 벤치마크 툴체인입니다. AI가 하드웨어 제약 사항을 이해하고 코드 분석, 버그 수정, 에셋 생성을 수행하며 복잡한 시스템에서의 자율적 문제 해결 능력을 테스트합니다.
핵심 포인트
- GitHub Copilot 에이전트를 통한 C/어셈블리 게임 개발 프로세스 구축
- 6502 CPU 및 64KB RAM 등 엄격한 하드웨어 제약 조건 하의 성능 측정
- 메모리 레이아웃 중첩 등 복잡한 시스템 버그의 자율적 탐지 및 수정
- 기존 게임 메커니즘을 결합한 독창적인 게임 설계 및 생성 능력 검증
- ASCII 아트 및 비트맵을 C64 에셋으로 변환하는 에셋 파이프라인 포함
C64AIToolChain은 **AI 에이전트를 위한 창의적 벤치마크 (creative benchmark)**로 설계된 Commodore 64 개발 툴체인입니다. 이 툴체인은 Visual Studio Code 내의 GitHub Copilot (에이전트 모드)에서 AI 모델을 사용하여 Commodore 64용 C 및 어셈블리 게임을 개발합니다.
테스트 완료: Google Gemini 3 · Claude Opus 4.6
에이전트는 VS Code의 GitHub Copilot을 통해 워크스페이스에 대한 접근 권한을 부여받으며, 다음과 같은 작업을 수행하도록 요청받습니다:
분석 (Analyze): 프로젝트 구조, 기존 게임, 그리고 개발 규칙 (AGENT_RULES.md, AGENT_HOWTO.md)을 분석합니다.
이해 (Understand): 제약 사항 (6502 CPU, 64KB RAM, VIC-II, SID, cc65 컴파일러)을 이해합니다.
게임 생성 (Generate a game): 클래식 클론 게임을 만들거나, 창의적 벤치마크를 위해 기존 게임의 메커니즘을 결합하여 완전히 새로운 오리지널 게임을 생성합니다.
이는 게임 디자인, 시스템 프로그래밍 (systems programming), 하드웨어 제약 (hardware constraints), 메모리 레이아웃 (memory layout), 시각적 디버깅 (visual debugging), 그리고 반복적인 개선 (iterative refinement)과 같은 지속적이고 다중 도메인적인 자율 문제 해결 능력을 테스트합니다. 이 모든 과정은 단일한 중단 없는 세션 내에서 이루어집니다. 패턴 인식 중심의 ARC-AGI, 격리된 버그 수정 중심의 SWE-bench, 또는 함수 수준의 생성을 다루는 HumanEval과 같은 벤치마크와 달리, 이 툴체인은 복잡하고 제약이 많은 시스템을 컨텍스트 내에 유지하며 작동하는 제품을 출시하는 에이전트의 능력을 측정합니다.
모든 .prg 파일은 cc65가 필요 없이 VICE에서 직접 로드할 수 있도록 사전 컴파일되어 포함되어 있습니다.
GitHub Copilot을 통해 Claude Opus 4.6이 완전히 생성한 (클론이 아닌) 오리지널 게임입니다. 에이전트는 기존 코드베이스를 분석하고 Asteroids (운석 분할), Space Invaders (파괴 가능한 방패), 그리고 Arkanoid (파워업 드롭)의 메커니즘을 결합하여 새로운 것을 설계했습니다.
1,581줄의 C 코드 · 14개의 커스텀 캐릭터 · 4개의 하드웨어 스프라이트 (hardware sprites) · 3보이스 SID 사운드 · 패럴랙스 스타필드 (parallax starfield) · 콤보 점수 산정 · UFO 보너스 · 데모 AI · 점진적 웨이브 난이도.
에이전트는 커스텀 cc65 링커 설정이 필요한 치명적인 메모리 레이아웃 중첩 (memory layout overlap) 문제를 포함하여 7개의 버그를 자율적으로 찾아내고 수정했습니다. 전체 보고서: articles/METEOR_STORM.md
Uridium 스타일의 드레드노트(dreadnought) 질주 느낌에서 영감을 받은 독창적인 저고도 공격 게임으로, C와 6502 어셈블리 (Assembly) 혼합 프로젝트로 제작되었습니다. Dreadline은 하드웨어 스프라이트 (Hardware sprites), 생성된 멀티컬러 스프라이트 아트, 비트맵으로 제작된 고해상도 커스텀 캐릭터 덱, 그리고 어셈블리 행 스크롤러 (Row scroller)를 결합하여 순정 C64에서 배경이 부드럽게 움직이도록 구현했습니다.
에셋 파이프라인 (Asset pipeline) 또한 실험의 일부입니다: spritegen.py는 편집 가능한 ASCII 아트를 C64 멀티컬러 스프라이트로 변환하며, bggen.py는 deck_bitmap.pgm을 중복 제거된 커스텀 문자셋 (Charset) 및 스크린 및 컬러 맵으로 변환합니다. 전체 상세 보고서: articles/DREADLINE.md
C (cc65)로 작성된 아케이드 클래식의 충실한 재현입니다. 55종의 커스텀 픽셀 아트 외계인 (애니메이션 포함), 4개의 파괴 가능한 방패, UFO 미스터리 함선, 그리고 완전한 SID 사운드 효과를 갖추고 있습니다. 비주얼은 Google Gemini 3 VLM을 사용하여 검증되었습니다.
8비트 고정 소수점 (Fixed-point) 공 물리 엔진, 스프라이트 기반의 패들 (Paddle)과 공, 다중 타격 벽돌, 그리고 5단계 난이도를 갖춘 Breakout/Arkanoid 클론입니다. 스프라이트 X 좌표를 단일 바이트 (0–255) 범위 내로 유지하기 위해 제한된 27열 플레이필드 (Playfield)를 사용합니다.
두 가지 버전이 있습니다: C (pacman_c/, 권장) 및 6502 어셈블리 (Assembly) (pacman/). C 버전은 유령 AI 및 충돌 감지 기능이 포함된 완전한 기능을 제공합니다. 어셈블리 버전은 순수 어셈블리 생성의 어려움을 보여줍니다. 여기서 컴파일러는 레지스터/메모리 관리에서 AI의 환각 (Hallucination)을 방지하는 "가드레일 (Guard rail)" 역할을 합니다.
이 툴체인 (Toolchain)을 위한 최초의 개념 증명 (Proof-of-concept) 게임입니다. 제로 페이지 최적화 (Zero-page optimization), CIA 타이머를 통한 하드웨어 난수 생성기 (RNG), 그리고 게임이 스스로 플레이되는 AI 데모 모드가 적용된 6502 어셈블리로 작성되었습니다. 이는 툴체인의 시각적 피드백 루프를 통해 검증되었습니다.
이 저장소에는 몇 가지 추가적인 C64 데모와 게임도 포함되어 있습니다:
| 게임 | 디렉토리 | 설명 |
|---|---|---|
| Tetris | tetris_v1/ , tetris_v2/ | 클래식 블록 퍼즐의 두 가지 버전 |
| Pong | pong/ | 클래식 투 패들 (two-paddle) 게임 |
| Breakout | breakout/ | 벽돌 깨기 게임 |
| Bounce | bounce/ | 공 튀기기 (ball bouncing) 데모 |
| Plasma | plasma/ | 클래식 플라즈마 (plasma) 효과 데모 |
| Starfield | starfield/ | 스크롤되는 별 패럴랙스 (star parallax) 효과 |
| Rasterbars | rasterbars/ | VIC-II 래스터 바 (raster bar) 컬러 효과 |
| Fire | fire/ | 불꽃 (fire) 애니메이션 효과 |
| Scroller | scroller/ | 텍스트 스크롤링 (text scrolling) 데모 |
| Matrix | matrix/ | 커스텀 한자 문자셋을 사용한 매트릭스 레인 (Matrix rain) 효과 |
| Christmas | christmas/ | 시즌용 PETSCII 아트 디스플레이 |
graph TD
AI[AI Agent / User] -->|C 또는 ASM 코드 작성| Code[소스 코드]
Code -->|cc65| Binary[.prg 파일]
...
AI 모델 (테스트 완료):
Google Gemini 3 — 클래식 게임 클론 (Space Invaders, Arkanoid, Pac-Man, Pong, Tetris 등)
Claude Opus 4.6 (VS Code의 GitHub Copilot을 통해 사용) — 독창적인 게임 제작 (METEOR STORM), 메모리 레이아웃 수정을 포함한 자율 디버깅 (autonomous debugging)
IDE: GitHub Copilot 에이전트 모드가 포함된 Visual Studio Code
컴파일러 (Compiler): cc65 (6502/6510 크로스 컴파일러 (cross-compiler), C 및 어셈블리 (assembly))
에뮬레이터 (Emulator): VICE (x64sc, 리모트 모니터 (remote monitor) 모드로 실행)
VLM: 게임 출력의 시각적 검증을 위한 비전 모델 (예: qwen3-vl)이 탑재된 Ollama
브릿지 (Bridge): 소켓 통신 (socket communication) 및 시각적 피드백을 처리하는 Python 3 스크립트 (ai_toolchain.py, vlm_look.py)
cc65: 크로스 컴파일러 (Cross-compiler) 스위트.
VICE: Commodore 에뮬레이터 (-remotemonitor를 지원해야 함).
Python 3: 툴체인 브릿지용.
# 저장소 클론 (Clone the repo)
git clone https://github.com/dexmac221/C64AIToolChain.git
cd C64AIToolChain
...
모든 게임 디렉토리에는 사전 컴파일된 .prg 파일이 포함되어 있습니다. 바로 실행하세요:
cd meteor
./run_vice.sh
환경 실행: 리모트 모니터가 활성화된 상태로 VICE를 시작합니다. cd snake ./run_vice.sh
툴체인 실행 (Run the Toolchain): 별도의 터미널에서 Python 브릿지를 시작합니다. 이는 C64 화면을 ASCII로 시각화하여, AI 에이전트가 게임 상태를 확인할 수 있게 합니다. python3 ai_toolchain.py
반복 (Iterate): 소스 코드를 수정하고, 다시 빌드한 뒤, 핫 리로드 (hot-reload) 합니다: ./build.sh && python3 reload_game.py
환경 문제(특히 VS Code나 다른 IDE에서 실행할 때)를 처리하는 유니버설 VICE 런처입니다. 문제가 되는 환경 변수를 정리하고 x64sc와 x64 실행 파일을 모두 시도합니다.
# 기본값(snake/snake.prg)으로 실행
./run_vice.sh
# 특정 PRG 파일 실행
...
시스템의 눈입니다. localhost:6510에 연결하여 메모리 범위 $0400-$07E7 (스크린 RAM)을 덤프(dump)하고 이를 ASCII로 렌더링합니다. 이를 통해 AI는 다음 사항을 확인할 수 있습니다:
- 스네이크(snake)가 올바르게 생성되었는가?
- 벽이 제대로 그려지고 있는가?
- 점수가 업데이트되고 있는가?
시각적 피드백 루프의 "두뇌"입니다. VICE로부터 스크린샷을 찍어 로컬 Ollama 인스턴스(qwen3-vl 또는 유사 모델 실행 중)로 전송하고, 게임 상태(스프라이트, 텍스트, 글리치)에 대한 구조화된 분석을 반환합니다. 이를 통해 에이전트는 게임 화면을 "보고", ai_toolchain.py(텍스트 RAM만 확인 가능)가 놓칠 수 있는 시각적 요소들을 검증할 수 있습니다.
시스템의 손입니다. 디스크 이미지를 분리하고, 새로운 PRG를 로드하며, 에뮬레이터 창을 유지한 채 프로그램 실행을 재시작하는 지루한 과정을 자동화합니다.
리모트 모니터를 통해 VICE로부터 스크린샷을 캡처합니다. 여러 형식을 지원합니다.
# PNG 스크린샷 찍기 (기본값)
./screenshot.sh myscreen
# GIF 스크린샷 찍기
...
- Commodore 64의 제약: 왜 Gemini 3가 테트리스 테스트를 통과한 첫 번째 AI인가
- 나는 Claude와 Gemini가 1982년 컴퓨터용 테트리스를 작성하게 만들었다
- Claude 4.6과 Commodore 64: LLM이 스스로 게임을 작성하고, 빌드하고, 플레이테스트할 때
- METEOR STORM: 전체 창작 과정 로그
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기