- Game Bub adalah perangkat genggam emulasi retro berbasis FPGA open source yang mendukung game "Game Boy, Game Boy Color, Game Boy Advance"
- Dapat menggunakan kartrid game fisik, dan juga menjalankan game yang diemulasikan melalui file ROM yang disimpan di kartu microSD
- Sebelumnya belum ada emulator FPGA open source yang dapat memutar kartrid asli seperti ini, dan salah satu tujuan utamanya adalah mengerjakan semuanya sendiri serta memahami setiap komponennya
- Karena itu, PCB dirancang sendiri, firmware ditulis sendiri, emulator Game Boy dan Game Boy Advance untuk FPGA (menggunakan Chisel HDL) juga dibuat sendiri, serta casing cetak 3D pun didesain sendiri
- Mendukung Game Link Cable sehingga multiplayer juga dimungkinkan dalam mode GB dan GBA
- Mencakup fitur seperti output HDMI (menggunakan dock), motor getar, jam waktu nyata, dan dirancang agar bisa diperluas lewat pembaruan perangkat lunak di masa depan
- Dibangun di atas PCB 6 lapis yang dilengkapi Xilinx XC7A100T FPGA, lalu dikemas dalam enclosure cetak 3D kustom
Tujuan proyek
- Membuat perangkat genggam FPGA mandiri dengan baterai isi ulang
- Meminimalkan biaya dan kompleksitas, serta sebisa mungkin menggunakan komponen komersial
- Dapat menjalankan game Game Boy / Game Boy Color / Game Boy Advance
- Mendukung kartrid fisik dan file ROM berbasis kartu microSD
- Menyediakan UI yang intuitif dan overlay dalam game
- Mengintegrasikan layar, speaker, dan output headphone
- Mendukung output HDMI
- Mempertimbangkan kemungkinan ekspansi di masa depan (dukungan sistem lain, Wi-Fi, dll.)
- Mengembangkan core emulator FPGA sendiri, serta merancang hardware dan driver sendiri agar sistem dapat dipahami sepenuhnya
Pandangan tentang retro gaming berbasis FPGA
- Klaim bahwa "gaming berbasis FPGA lebih akurat daripada emulasi perangkat lunak" adalah pemasaran yang berlebihan
- FPGA juga merupakan emulator, dan hanya akan bekerja seakurat yang diprogramkan
- Emulator perangkat lunak juga bisa memiliki akurasi yang sangat tinggi, serta jauh lebih mudah diakses
- Keunggulan terbesar emulator berbasis FPGA adalah mudah terhubung dengan hardware fisik (kartrid, kabel link, dll.)
Gambaran desain hardware
- Struktur FPGA + mikrokontroler (MCU): FPGA menangani emulasi inti, sementara MCU menangani pemrosesan UI, pemuatan ROM, manajemen daya, dan sebagainya
- Dukungan Wi-Fi dan Bluetooth: menggunakan modul ESP32-S3 (namun Bluetooth Classic tidak didukung)
- Layar: LCD 320x480 berukuran 3,5 inci (layar game dapat diperbesar 2x)
- Baterai dan manajemen daya: baterai lithium-ion, menggunakan IC pengisian TI BQ2407x, serta mencakup fuel gauge IC MAX17048 untuk memeriksa status daya
- Audio: menggunakan codec audio TLV320DAC3101 untuk mendukung output stereo dan pengaturan volume digital
- Perangkat input: mengadopsi tombol klik yang digunakan pada GBA SP untuk memberikan rasa kontrol yang baik
- Memori: menggunakan SDRAM 32MB untuk menyimpan ROM yang diemulasikan
- Kartrid dan port link: kartrid fisik dapat dihubungkan langsung, serta mencakup fungsi deteksi peralihan GBA/GBC
- Fitur lain: mencakup IMU (sensor gerak), jam waktu nyata (RTC), dan motor getar
Desain dan pengujian PCB
- Desain PCB dilakukan menggunakan KiCad
- FPGA (Artix-7) menggunakan paket BGA sehingga dirancang sebagai PCB 6 lapis
- Pada pengujian prototipe pertama, sebagian besar fungsi bekerja dengan normal, meski ditemukan beberapa masalah manajemen daya
- Pengujian awal dilakukan dengan MicroPython, lalu firmware MCU ditulis dalam Rust
Pengembangan GUI dan firmware
- GUI berbasis Rust diimplementasikan menggunakan framework UI Slint
- Kecepatan pembaruan LCD dioptimalkan, dan dirancang agar FPGA menggerakkan layar secara langsung, bukan MCU
- Ditambahkan fitur transfer data menggunakan TinyUSB agar microSD dapat dikenali sebagai USB Mass Storage
Penambahan dukungan Game Boy Advance
- Implementasi CPU ARM7TDMI (struktur pipeline 3 tahap)
- Komponen hardware GBA seperti PPU, DMA, timer, audio, dan lainnya diimplementasikan langsung di FPGA
- Untuk mendukung kartrid fisik, protokol bus khusus milik GBA dianalisis dan direproduksi di FPGA
- Mendukung multiplayer GBA-GBA melalui kabel link serta koneksi ke GameCube
Revisi hardware kedua
- PCB dan enclosure didesain ulang untuk menerapkan desain yang lebih tipis dan ergonomis
- Posisi tombol disesuaikan agar memberikan rasa kontrol yang mirip GBA SP
- Port HDMI dihapus, lalu dirancang dock kustom berbasis USB-C untuk menambahkan output HDMI dan dukungan controller
- Kaca penutup LCD dibuat kustom untuk menghadirkan desain yang lebih premium
Desain dock dan output HDMI
- Dock dirancang dengan metode output sinyal HDMI kustom melalui port USB-C
- Menggunakan MCU berbasis Raspberry Pi Pico W sehingga dukungan controller nirkabel dimungkinkan
- Dock menyediakan fungsi hub USB sehingga controller kabel juga dapat dihubungkan
Rencana ke depan dan kemungkinan ekspansi
- Menyelesaikan dock dan mengimplementasikan dukungan controller Bluetooth
- Meningkatkan akurasi emulator Game Boy Advance lebih lanjut dengan target lulus pengujian mGBA
- Meneliti emulasi kabel link nirkabel (implementasi GBA Wireless Adapter berbasis Wi-Fi)
- Meninjau dukungan fitur tambahan seperti komunikasi IR Game Boy, sensor surya Boktai, dan Game Boy Camera
Daftar harapan produksi (jika produksi massal dimungkinkan)
- Panel LCD kustom beresolusi 720x480 (mendukung pembesaran 3x untuk GBA)
- Enclosure cetak injeksi dan tombol berkualitas tinggi
- Paket baterai kustom (optimasi efisiensi ruang internal)
- Penggunaan SRAM dan SDRAM berbasis BGA (memungkinkan desain PCB yang lebih kecil)
Open source dan referensi
- Source code dan skematik proyek: GitHub
- Dokumentasi hardware Game Boy dan GBA: Pan Docs, GBATEK
- Alat open source: KiCad, FreeCAD, Chisel, Verilator, Slint, dll.
Ringkasan
- Game Bub bukan sekadar konsol game retro, melainkan proyek menantang yang memperluas kemungkinan emulasi berbasis FPGA
- Ke depannya, berbagai fitur ekspansi akan terus ditambahkan dan proyek ini akan berkembang bersama komunitas open source
3 komentar
Dulu perangkat seperti ini kadang dibuat rumahan dengan
fpgalalu hanya diperdagangkan di kalangan orang yang tahu, ternyata ada juga yang bersifat open source. Menarik juga.CPU-nya bahkan diimplementasikan langsung dengan FPGA ya! Saya penasaran dengan jumlah baris kodenya jadi coba cari-cari... ternyata FPGA bisa diprogram dengan Scala, bukan sesuatu seperti Verilog. Saya kaget karena ternyata lebih sederhana dari yang saya kira.
https://github.com/elipsitz/gamebub/…
Katanya, penggemar paling hebat di antara para penggemar adalah para geek Barat... haha
Komentar Hacker News
Proyek yang sangat keren. Tulisan blognya disusun dengan sangat teliti, jadi enak dibaca. Saya sempat penasaran apakah bisa dihubungkan ke GameCube, dan ternyata itu sudah disebut di blog
Terima kasih untuk proyek keren ini dan tulisan yang menyertainya. Saya suka hal-hal seperti ini
Saya punya Analogue Pocket, tapi fakta bahwa perangkat itu memakai FPGA tidak terlalu berarti bagi saya. Saya penasaran apakah benar ada perbedaan besar dibanding emulasi perangkat lunak
Saya penasaran berapa total biaya PCB yang sudah terpasang komponen. Mungkin sekitar 60-70
Saya suka open source hardware, tapi saya selalu bertanya-tanya apa yang terjadi kalau komponennya dihentikan produksinya
Masalah MISO pada display controller memang terkenal buruk. Saya pertama kali menemukannya beberapa tahun lalu. Rekomendasinya adalah memakai tri-state buffer pada jalur chip select atau memisahkan bus
Mungkin ini pemikiran bodoh karena saya tidak punya pengalaman hardware, tapi sistem lama seperti NES, SNES, dan Genesis relatif sederhana. Paten juga ada masa berlakunya. Saya penasaran kenapa tidak ada rekreasi hardware yang lewat SoC bisa mengemulasikan sistem-sistem itu hampir sempurna. Proyek FPGA tampaknya yang paling mendekati, tapi FPGA terasa mahal dibanding desain CPU berusia 40 tahun dan RAM 1kb
Proyek yang keren. UI yang dibangun dengan Rust dan Slint itu sangat keren. Itu framework GUI yang sedang saya kerjakan
Fantastis. Saya tidak tahu apakah dia menjelaskan alasan memilih layout vertikal. Di ranah FPGA yang sudah ada, semuanya bergaya GBC. Saya penasaran apakah itu sekadar selera pribadi atau ada alasan lain
Tulisan yang luar biasa. Saya tidak terlalu tertarik pada handheld game, tetapi saya selalu tertarik pada keputusan desain masa kini terkait display, enclosure, daya baterai, dan konektivitas. Integrasi Pico W bagus sekali. Itu salah satu item pengembangan yang diremehkan dalam beberapa tahun terakhir. Terima kasih sudah berbagi