12 poin oleh GN⁺ 2025-02-14 | 3 komentar | Bagikan ke WhatsApp
  • 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

 
blurblah 2025-02-17

Dulu perangkat seperti ini kadang dibuat rumahan dengan fpga lalu hanya diperdagangkan di kalangan orang yang tahu, ternyata ada juga yang bersifat open source. Menarik juga.

 
botplaysdice 2025-02-15

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

 
GN⁺ 2025-02-14
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

    • Salah satu keuntungan kompatibilitas kartrid asli adalah tidak perlu memikirkan memory mapper. Saya cukup familiar dengan berbagai mapper di NES, tapi tidak yakin apakah kartrid GB bekerja dengan cara yang sama. Perangkat keras khusus seperti kamera, getar, atau mesin jahit sepertinya juga akan berfungsi dengan kartrid asli tanpa dukungan khusus
    • Jika mendukung pemuatan ROM, saya penasaran apakah semua mapper harus diemulasikan di FPGA
  • Terima kasih untuk proyek keren ini dan tulisan yang menyertainya. Saya suka hal-hal seperti ini

    • Saya sempat kecewa ketika melihat komentar sebelumnya karena banyak respons seperti "kenapa hal seperti ini ada?". Kebanyakan dari mereka bahkan belum pernah mencoba 1% dari proyek seberani ini. Proyek ini keren dan merupakan pengalaman belajar yang menyenangkan
    • Saya sudah mengirimkannya ke tip line Hack-A-Day, jadi mungkin akan ada artikel tentang ini dalam beberapa hari ke depan
  • 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 tahu perbedaan antara keduanya, tapi saya tidak mengerti kenapa emulasi perangkat lunak tidak bisa sebagus emulasi FPGA. Melakukannya lewat perangkat lunak terasa lebih fleksibel
  • Saya penasaran berapa total biaya PCB yang sudah terpasang komponen. Mungkin sekitar 60-70

    • Terima kasih untuk tulisan blog dan penjelasannya, rasanya bagus juga kalau ini dimasukkan ke repositori
    • Saya sedang mencoba desain serupa dan berencana memakai RP2350B dan ESP32-C61 sebagai system controller. Akan bagus kalau ada chip dan layout pad yang mendukung legacy BT
    • Menambahkan port USB untuk mendukung sesuatu seperti adaptor nirkabel USB 8bitdo juga bisa jadi opsi. Dukungan legacy BT bisa berubah menjadi pekerjaan tambahan yang malah merusak proyek. Cara lain adalah mengekspos koneksi SPI ke bagian dalam agar orang bisa mengutak-atik controller apa pun yang mereka inginkan
  • Saya suka open source hardware, tapi saya selalu bertanya-tanya apa yang terjadi kalau komponennya dihentikan produksinya

    • Maintainer bisa memperbarui daftar komponen, tapi mungkin akan dibutuhkan beberapa komponen berbeda karena masalah kompatibilitas. Kalau di tengah membeli komponen ternyata semuanya sudah tidak tersedia, saya jadi bertanya-tanya harus bagaimana. Salah satu cara adalah maintainer menjual kit komponen. Namun mungkin ada masalah terkait hukum IP
  • 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

    • Masalah power domain juga sering terjadi. Pada kebanyakan perangkat, IO terdiri dari Vdd, dioda ESD, pin IO, dioda ESD, dan ground. Jika Vdd memiliki jalur resistif ke ground, akan timbul masalah. Ini terjadi ketika IC catu daya memiliki resistor pembuangan keluaran atau transistor yang memungkinkan arus mengalir ke ground. Dalam kasus ini, pin IO akhirnya memiliki dioda paralel ke ground. Kalau tidak hati-hati, arus maksimum yang bisa disediakan driver akan mengalir melalui dioda tersebut
  • 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