TECH 으로 돌아가기
TECH HACKER NEWS 1주 전 6분 읽기 21 READS

브라우저에서 되살아난 8비트 컴퓨터들 — CPU 클럭 한 틱까지 들여다보는 'Tiny Emulators'

요즘 웹 브라우저는 정말 못 하는 게 없는데요, 이번엔 40년 전 8비트 컴퓨터들이 통째로 브라우저 안으로 들어왔어요. 'Tiny Emulators'라는 프로젝트인데, 코모도어 64, ZX 스펙트럼 48k/128, 암스트래드 CPC 464/6128 같은 전설적인 홈 컴퓨터들을 설치 하나 없이 링크 클릭 한 번으로 실행할 수 있거든요. 서구권 기종뿐 아니라 동독에서 만들어진 KC85 시리즈(KC85/2, /3, /4)나 Z1013, Z9001 같은 우리에게는 낯선 기종들, 그리고 고전 아케이드 게임 '봄잭(Bombjack)'까지 들어 있어요.

그냥 에뮬레이터가 아니에요: '사이클 스텝' 방식

이 프로젝트의 진짜 매력은 정확도에 있어요. 에뮬레이터들이 'chips'라는 C 헤더 라이브러리로 만들어졌는데, '사이클 스텝(cycle-stepped)' 방식으로 동작하거든요. 이게 뭐냐면요, 보통의 에뮬레이터는 명령어 단위로 실행해요. CPU 명령어 하나를 통째로 처리하고 결과만 메모리에 반영하는 식이죠. 빠르고 만들기도 쉽지만, 실제 하드웨어의 미묘한 동작까지는 재현하지 못해요. 반면 사이클 스텝 방식은 CPU의 클럭 한 틱 한 틱을 그대로 흉내 내요. 실제 Z80이나 6502 같은 옛날 CPU는 명령어 하나를 처리하는 데 여러 클럭이 걸리는데, 그 중간 단계에서 칩의 핀에 어떤 신호가 오가는지까지 전부 시뮬레이션하는 거예요.

왜 이렇게까지 하냐고요? 옛날 게임이나 데모씬 작품 중에는 하드웨어의 미묘한 타이밍에 의존해서 화면 효과를 만드는 것들이 많거든요. 명령어 단위 에뮬레이터에서는 깨지는 화면이, 사이클 단위 에뮬레이터에서는 실기와 똑같이 나오는 거죠. 그리고 이 정확도가 학습 도구로서의 가치를 만들어요. Dear ImGui로 만든 디버깅 UI가 함께 제공되는데, 디스어셈블러와 메모리 에디터는 물론이고 칩의 핀 상태를 클럭 단위로 시각화해서 보여줘요. 컴퓨터 구조 교과서에서 그림으로만 보던 'CPU가 버스에 주소를 싣고, 메모리가 데이터를 돌려주는' 과정을 눈으로 직접 관찰할 수 있는 거예요.

기술 스택: C 코드가 WASM으로

구현도 흥미로워요. 전부 C로 작성됐고, Emscripten으로 WebAssembly(WASM)로 컴파일해서 브라우저에 올렸어요. WebAssembly가 뭐냐면, 브라우저에서 네이티브에 가까운 속도로 실행할 수 있는 바이너리 포맷이에요. 자바스크립트로 다시 짜지 않고도 C나 C++, Rust로 만든 프로그램을 웹에서 돌릴 수 있게 해주죠. 화면 출력, 오디오, 입력 처리는 sokol 헤더(sokol_app, sokol_gfx, sokol_audio)라는 싱글 파일 크로스플랫폼 라이브러리가 맡아요. 덕분에 같은 코드가 데스크톱 네이티브 앱으로도, 웹 앱으로도 빌드되거든요.

업계 맥락에서 보면

브라우저 에뮬레이션 자체는 새로운 게 아니에요. Internet Archive는 수천 개의 MS-DOS 게임을 브라우저에서 돌리고 있고, 자바스크립트로 처음부터 다시 짠 에뮬레이터들도 오래전부터 있었죠. 이 프로젝트가 다른 점은 접근 방식이에요. 자바스크립트로 재작성하는 대신, 잘 다듬어진 C 코드베이스를 WASM으로 컴파일해서 성능과 정확도를 챙기고, 데스크톱 빌드와 코드를 공유해요. 의존성 없이 헤더 파일 하나만 프로젝트에 넣으면 되는 '싱글 헤더 C 라이브러리' 문화의 대표적인 결과물이기도 하고요.

한국 개발자에게 주는 시사점

요즘 개발은 추상화 계층이 워낙 두꺼워서, 내 코드 아래에서 실제로 무슨 일이 일어나는지 볼 기회가 거의 없잖아요. 8비트 시스템은 CPU, 메모리 맵, 인터럽트까지 시스템 전체를 머릿속에 넣을 수 있는 규모라서, 컴퓨터 구조를 제대로 이해하고 싶은 분들에게 최고의 교재거든요. 디버거를 열어놓고 명령어 하나가 클럭 단위로 어떻게 실행되는지 따라가 보는 경험은 어떤 강의보다 생생해요. 그리고 기존 C/C++ 자산을 웹으로 가져가는 WASM 포팅의 모범 사례로도 참고할 가치가 충분하고요.

한 줄로 정리하면, '브라우저 탭 하나가 컴퓨터 구조 실습실이 됐다'예요. 여러분이 처음 만졌던 컴퓨터는 뭐였나요? 그리고 브라우저로 되살리고 싶은 옛날 소프트웨어가 있다면 뭔가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://floooh.github.io/tiny8bit-preview/index.html
SHARE
처리 중...