전자책 리더기에 쓰이는 e-잉크 화면은 잔상이 심하게 남고 화면 전환이 느려서 '게임'과는 가장 거리가 먼 디스플레이로 꼽힌다. 그런데 엔지니어 웬팅 장(Wenting Zhang)이 단종된 M5Stack의 e-잉크 개발보드 'PaperS3'로 초당 60프레임짜리 게임보이 에뮬레이터를 구동하는 데 성공했다. 프로젝트 이름은 기기 이름을 그대로 딴 'PaperBoy'. 느려터진 전자잉크 화면에서 어떻게 이런 프레임이 나왔는지, 그 과정을 정리했다.
원래는 뭐였나 — 단종된 e-잉크 개발보드
PaperS3는 원래 게임과 전혀 관계없는 물건이었다. IoT 모니터링, 스마트홈 제어, 전자 라벨 같은 용도를 염두에 두고 M5Stack이 내놓은 개발보드로, ESP32-S3 듀얼코어 프로세서에 4.7형 960×540 해상도 e-잉크 디스플레이(16단계 그레이스케일)를 얹었다. 8MB PSRAM, microSD 슬롯, 정전식 터치패널(GT911), 자이로 센서, 1800mAh 배터리까지 갖춰 저전력 IoT 프로토타이핑용으로는 훌륭한 스펙이었다. 문제는 이미 단종됐다는 것 — 지금은 중고 물량이나 남은 재고를 찾아야 구할 수 있다.
e-잉크의 숙명을 깬 방법
e-잉크 화면이 느린 근본적인 이유는 전체 화면을 한 번에 다시 그리는 '웨이브폼(waveform)' 갱신 방식 때문이다. 장이 주목한 건 PaperS3가 SPI 직렬 인터페이스가 아니라 로우·컬럼을 직접 제어하는 병렬 드라이버 인터페이스를 쓴다는 점이었다. 이 덕분에 표준 웨이브폼 갱신 절차를 건너뛰고 화면 일부만 부분 갱신하는 방식으로 최대 60Hz까지 끌어올릴 수 있었다. 흑백밖에 표현 못 하는 한계는 게임보이 원본 해상도(160×144)를 3배로 확대해 여러 흑백 패턴을 조합하는 방식으로 회색조를 흉내 냈다. 화면 방향을 뒤집어 상대적으로 덜 갱신되는 영역을 활용하면 패널 수명을 두 배로 늘릴 수 있다는 점도 함께 확인됐다. 에뮬레이션 엔진은 세 가지 대안을 테스트한 끝에 대부분의 게임에서 30~60FPS 성능을 보여준 CrankBoy를 채택했다.
소리 없는 기기에서 소리 내기
PaperS3에는 애초에 오디오 출력 하드웨어가 없다. 있는 거라곤 단일음만 낼 수 있는 부저 하나뿐이다. 장은 이 한계를 PC 스피커 시절 방식으로 우회했다 — 사각파(square wave)를 소프트웨어적으로 조합해 게임보이 특유의 사운드를 흉내 낸 것이다. 정교한 음악 재생은 무리지만, 효과음 정도는 그럴듯하게 재현된다. 리뷰어들은 여기에 I2S 오디오 칩을 추가하면 음질이 크게 개선될 거라는 의견을 내놓기도 했다.
컨트롤과 세이브 — 터치스크린과 블루투스 패드
조작은 화면 하단에 그려진 터치스크린 D패드와 A·B 버튼으로 이뤄진다. 이 영역은 게임 화면과 달리 계속 다시 그릴 필요가 없어 갱신 부담이 적다. 여기에 블루투스 LE 조이패드 지원도 추가해 물리 컨트롤러 연결도 가능하다. 화면 상단의 'SAVE'·'LOAD' 버튼을 터치하면 퀵세이브·퀵로드도 즉시 실행된다 — 오리지널 게임보이에는 없던, 에뮬레이터이기에 가능한 편의 기능이다.
어디서 구할 수 있나
가장 큰 걸림돌은 하드웨어 자체다. PaperS3가 이미 단종된 탓에 이 프로젝트를 그대로 재현하려면 중고 매물이나 남은 재고를 찾아야 한다. 다행히 소프트웨어 쪽은 완전히 공개돼 있다 — ESP-IDF 기반 소스 코드는 깃랩(gitlab.com/zephray/paperboy)에 올라와 있고, 미리 빌드된 펌웨어는 M5Stack의 공식 플래싱 툴인 M5Burner를 통해 바로 설치할 수 있다. 같은 ESP32-S3 칩으로 MSX 에뮬레이션에 VGA 출력까지 시연한 사례도 있어, 저전력 레트로 에뮬레이션이라는 방향성 자체는 앞으로도 여러 프로젝트로 이어질 가능성이 크다.