전자종이 ESP32에서 30FPS로 실행하는 GameBoy [영상]

1 day ago 5

소형 전자종이 디스플레이가 달린 ESP32 보드에 맞춤형 드라이버를 구현해, 기본 드라이버에서 실제 약 2FPS에 그치던 GameBoy 실행 속도를 약 30FPS까지 높임 화면 갱신 파형을 줄이는 것만으로는 잔상과 회색화가 심해져, 픽셀별 상태와 구동 예산을 추적하고 필요한 픽셀에만 펄스를 가하는 방식으로 개선함 안료가 흑백 사이를 이동하는 도중 구동을 멈추고 전환별로 보정해, 디더링 없이 GameBoy의 실제 4단계 회색조를 구현함 게임을 플레이할 수 있는 수준에 도달했으며, 보드의 오디오 코덱과 스피커로 에뮬레이터 소리를 출력하고 USB로 연결하는 컨트롤러도 제작함 드라이버는 아직 미완성으로, 복잡한 장면에서는 30FPS 아래로 소폭 하락할 수 있고 일부 회색조 전환도 추가 보정이 필요함 느린 전자종이 UI에서 시작한 드라이버 개발 출발점은 이 보드로 Anki 카드, 음성 메모, 소형 전자책 리더 기능을 갖춘 개인용 기기를 만드는 작업이었음 메뉴 이동을 비롯한 UI가 지나치게 느렸고, 처음에는 전자종이의 한계로 받아들였음 기본 드라이버는 이론상 약 3FPS 수준이지만, 실제로는 약 2FPS에 그쳤음 Zeffray의 Paperboy가 빠른 전자종이 화면 구동이 가능하다는 영감을 줬지만, 하드웨어 차이로 드라이버를 그대로 이식할 수는 없었음 Paperboy의 패널은 행/열 인터페이스를 직접 노출함 이번 보드는 우회할 수 없는 전용 디스플레이 컨트롤러가 패널을 구동하므로, 해당 컨트롤러용 드라이버를 새로 만들어야 했음 파형을 줄여 얻은 속도와 화질 문제 전자종이는 LCD나 OLED와 달리 전하를 띤 검은색과 흰색 안료 입자로 이미지를 물리적으로 유지함 전기장을 바꿔 안료를 표면 쪽이나 반대쪽으로 이동시키면 픽셀이 검게 또는 희게 보임 일반적으로 여러 전기 펄스로 구성된 파형(waveform) 이 안료를 앞뒤로 움직인 뒤 새 이미지에 맞춰 배치해 이전 화면의 잔상을 줄이지만, 시간이 오래 걸림 기본 드라이버도 대체로 이런 방식으로 작동하며, WaveShare의 부분 갱신 사양은 약 300ms로 게임에 충분한 속도가 아니었음 표준 파형을 단계적으로 줄여 약 17단계를 2단계로 축소함 주변 처리까지 포함한 전체 갱신 시간이 약 50ms로 줄어 초당 약 20회 갱신에 접근함 대신 픽셀이 목표 명암에 도달할 시간이 부족해 이전 이미지가 뚜렷하게 남았고, 장시간 실행하면 화면 전체가 점점 회색으로 변했음 픽셀별 구동 예산으...

Read Entire Article