刷新慢、残影重、对比度低——先别急着猜这是哪种屏幕。被动矩阵LCD和电子墨水屏,在这三件事上几乎是难兄难弟。也正因如此,用电子墨水屏做Game Boy模拟器,才成了一件说得通的事:那种黑灰底色的观感,本身就让人想起任天堂八十年代用在掌机上的灰绿LCD。
这次动手的是[Bo Made It]。他用一块Waveshare ESP32-S3-ePaper-1.54开发板,把帧率做到了30 FPS。
它和60帧那台,差在哪
熟悉这类项目的读者可能会问:之前不是已经有60 FPS的电子墨水屏显示器了吗,这台有什么特别?
问题问得合理。区别在于,[Bo]用的是一块随手挑的开发板,板子上自带波形表电子墨水控制器,而不是像[Wenting Zhang]那个项目一样,直接绕开控制器去驱动裸屏。换句话说,[Bo]是在控制器的限制之下做文章。
不过他也明确表示,[Wenting]的工作——尤其是那个电子墨水版PaperBoy项目——直接启发了这个项目和他的实现方式。
给每个像素发一份"预算"
既然要经过控制器这一层,事情就麻烦一些。但[Bo]发现,即便隔着控制器,依然可以寻址到单个像素。
他的做法是给每个像素一份"预算":根据这个像素需要改变多少,最多允许它接收8次脉冲。这一招把速度提上去了不少。
最妙的部分,是他实现Game Boy那套4位灰度的方式——说白了,是故意制造残影。
如果某个像素只是要浅一档或者深一档,那就不给它足够的驱动时间,让它翻不到底。这样灰度就出来了。
麻烦也跟着来了
代价是复杂度上升。从黑到"白"所需的时间,比从"白"到下一个更深的灰要长,每一种颜色过渡的精确时序都得单独算出来。
要把这些时序调准,需要大量校准工作。有意思的是,他用视频来帮忙把这个过程自动化了。
这套校准流程目前还在进行中,所以暂时还没有GitHub链接。[Bo]说等一切就绪会把所有东西开源,他也期待那一天的到来。
后面还有一台PDA
这个显示驱动不只会用在Game Boy模拟器上。[Bo]接下来打算拿它做一台类PDA设备,同样值得等一等。
如果你觉得这套思路听着耳熟,那大概是因为它和最近那个20 FPS的电子墨水屏改造项目,底层用的是同一套技术。
从60帧到30帧,从20帧到30帧,数字看着不大,但每一次都是在"这块屏天生不适合干这个"的前提下硬挤出来的。电子墨水屏的慢、残影、低对比,本来是缺点,到了这里反倒成了还原老掌机味道的素材。
热门跟贴