Game Bub是一款基于FPGA的開源復(fù)古仿真掌機(jī),支持Game Boy、Game Boy Color和Game Boy Advance游戲。
項(xiàng)目簡(jiǎn)介
Game Bub可以播放物理卡帶,以及從SD卡加載的ROM格式的模擬卡帶,支持多人游戲GB和GBA模式下的Game Link Cable。
同時(shí)還具有許多額外的功能:例如通過(guò)自定義擴(kuò)展塢的HDMI視頻輸出、震動(dòng)馬達(dá)、實(shí)時(shí)時(shí)鐘等。此外硬件在設(shè)計(jì)時(shí)考慮了可擴(kuò)展性,允許通過(guò)軟件改進(jìn)擴(kuò)展其功能。
Game Bub具有定制設(shè)計(jì)的6層PCB,主控芯片采用Xilinx XC7A100T FPGA。
FPGA將按鍵輸入直連到游戲卡帶(通過(guò)電平轉(zhuǎn)換器支持3.3v GBA和5v?Game Boy),并將音頻和視頻輸出到揚(yáng)聲器和顯示器。
微控制器采用ESP32-S3,負(fù)責(zé)處理UI、從microSD卡讀取ROM文件、初始化外設(shè)(顯示器、DAC、IMU)、處理上電排序、并加載FPGA配置。
硬件集成了內(nèi)存、顯示器、揚(yáng)聲器、可充電電池、GB/GBA?墨盒插槽,所有這些都封裝在定制的3D打印外殼中。
微控制器固件
固件采用Rust編寫,基于Slint GUI框架設(shè)計(jì)圖形用戶界面。GUI在MCU上渲染,然后將渲染的framebuffer發(fā)送到FPGA。Slint支持部分渲染,僅更新屏幕中已更改的部分,從而提高了性能。FPGA維護(hù)framebuffer副本,并負(fù)責(zé)驅(qū)動(dòng)顯示器。
開源鏈接
作者Lipsitz在他的網(wǎng)站上提供了非常詳細(xì)的項(xiàng)目設(shè)計(jì)文章:https://eli.lipsitz.net/posts/introducing-gamebub
硬件設(shè)計(jì)文件、固件、FPGA軟件源代碼均已在GitHub開源:https://github.com/elipsitz/gamebub