Dikembangkan emulator Game Boy bernama CAMLBOY di OCaml yang berjalan di browser dan smartphone pada 60 FPS.
Proyek bertujuan mempelajari pemrograman OCaml skala menengah dengan fokus keterbacaan, maintainability, dan kompilasi ke JavaScript via js_of_ocaml.
Arsitektur emulator memisahkan CPU, GPU, timer, joypad, dan cartridge terhubung melalui bus yang merutekan akses berdasarkan alamat memori.
Loop utama menggunakan metode catch up: jalankan instruksi CPU, lalu majukan timer dan GPU berdasarkan siklus yang dikonsumsi.
Antarmuka modul dibangun dengan Addressable_intf.S untuk 8-bit dan Word_addressable_intf.S untuk 16-bit agar kode dapat digunakan ulang.
CPU diimplementasi sebagai functor untuk memungkinkan injeksi mock bus dalam unit testing dan meningkatkan testabilitas.
Instruction set Game Boy diimplementasi dengan GADT agar tipe argumen dan hasil dapat diparameterisasi secara statis.
First-class modules digunakan untuk memilih jenis cartridge pada runtime berdasarkan data ROM.
Pengujian integrasi dilakukan menggunakan test ROM dan ppx_expect untuk memastikan fungsionalitas dan mendeteksi regresi.
Optimasi kinerja dilakukan berdasarkan profil Chrome, meningkatkan FPS dengan optimasi modul oam_table, tile_data, timer, tile_map, dan penggunaan Bigstringaf.unsafe_get.
Inlining pada js_of_ocaml dinonaktifkan untuk meningkatkan performa JavaScript hingga 100 FPS di browser dan ~1000 FPS native.
Benchmark headless menunjukkan perbandingan FPS pada berbagai backend compiler OCaml dan dampak akurasi emulator.
Get notified when new stories are published for "Berita Peretas 🇮🇩 Bahasa Indonesia"