오래된 ZX Spectrum 머신 코드와 Rust에서 코딩 에이전트 테스트

발행: (2026년 3월 1일 오전 12:00 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

소개

어렸을 때 저는 ZX Spectrum (Didaktik M)을 가지고 있었습니다. 그 기계로 게임을 많이 하지는 않았고—프로그래밍에 더 관심이 있었죠—하지만 제가 정말 좋아했던 게임이 하나 있었습니다: Jet Set Willy. 그 어처구니없는, 재밌는 레벨들을 풀면서 수십 개의 방, 그래픽, 트릭, 비밀이 어떻게 48 KB 코드 안에 들어갈 수 있는지 궁금해 했습니다.

수십 년이 지난 지금도 그 게임을 떠올립니다. 저는 정규 게이머가 되지는 않았고, 가끔 테트리스를 할 뿐이었습니다. 팬이 만든 머신코드 목록을 참고해 C와 C++로 Jet Set Willy를 PC용으로 다시 만들려 여러 차례 시도했지만 크게 진전하지 못했습니다.

어제는 AI 기반 코딩 에이전트를 사용해 온라인에서 찾은 디스어셈블리 소스를 바탕으로 Rust로 Jet Set Willy를 다시 작성해 보기로 했습니다.

Rust로 Jet Set Willy 다시 작성하기

AI는 원래 Z80 어셈블리를 관용적인 Rust 코드로 변환하는 데 도움을 주었습니다. 저는 음악, 그래픽, 게임 로직을 원본에 충실하게 유지하려고 신경을 썼으며, 그 결과 Rust 버전도 원본의 느낌을 잘 살렸습니다. 주요 과제는 다음과 같습니다:

  • Z80 하드웨어 레지스터를 Rust 추상화로 매핑하기.
  • 스프라이트 엔진을 구동하는 타이밍에 민감한 루틴을 재구현하기.
  • 원본 레벨 데이터의 정확한 동작을 보존하기.

하루도 채 안 되는 작업으로 게임을 다시 플레이할 수 있게 만들었습니다. 이제 전체 코드베이스가 Rust이므로 버그를 수정하거나 작은 트윅을 추가하는 것이 간단합니다.

결과

  • 60개의 방 모두 구현되었으며 Rust에서 정상적으로 컴파일됩니다.
  • 게임은 Z80 머신코드 없이 100 % Rust로 부드럽게 실행됩니다.
  • 저작권 제한으로 인해 소스 코드나 바이너리를 공개할 수 없으며, 프로젝트는 개인 용도로만 유지됩니다.

스크린샷

Jet Set Willy – 타이틀 화면

Jet Set Willy – 방 21

Jet Set Willy – 게임 오버 화면

30년 만에 내가 가장 좋아하는 게임을 다시 플레이할 수 있게 되었습니다. <3 Jet Set Willy

0 조회
Back to Blog

관련 글

더 보기 »

구리지 않은 시맨틱 무효화

캐싱 문제 웹 애플리케이션을 어느 정도 기간 동안 작업해 본 사람이라면 캐싱에 대한 상황을 잘 알 것입니다. 캐시를 추가하면 모든 것이 빨라지고, 그 다음에 누군가…

ClamAv와 Rust‑TUI

ClamAv와 Rust‑TUI의 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s...