BMC64 | BMC128 | BMVIC20 | BMPLUS4 | BMPLUS4EMU (Pi3)| BMPET
BMC64 is a bare metal fork of VICE's C64 emulator optimized for the Raspberry Pi. It has 50hz/60hz smooth scrolling, low video/audio latency and a number of other features that make it perfect for building your own C64 replica machine. For more details visit the github link below.
v3.4 - Pi3 Fast Resampling, Custom GPIO & more
BMC64 is a bare metal C64 Emulator (using VICE) for the Raspberry Pi (Models 2 & 3). There is no bloated O/S to boot and the emulator has direct access to hardware resulting in better performance than the Linux based distributions. VICE dependencies are satisfied using circle-stdlib. An option to switch to VIC20, C128, PLUS/4, PET models is included in v3.3+
BMC64 3.4 Release
NOTE: Since Version 3.0, all supported machines for all supported Pi models are distributed in one release image.
You have two options for installation:
1) format a FAT32 SD card and/or partition and unzip bmc64-3.4.files.zip onto it. The Pi will boot from the first FAT partition. See below for ROM files you will need to provide yourself.
2) flash an image using bmc64-3.4.img.zip (300Mb partition). Again, see below for additional ROM files you need to provide.
/C64 kernal chargen basic d1541II (recommended) rpi_sym.vkm bootstat.txt /C128 See BMC128 details page /VIC20 See BMVIC20 details page /PLUS4 See BMPLUS4 details page /PLUS4EMU (Pi3 Only) See BMPLUS4EMU details page /PET See BMPET details page
BMC128, BMVIC20, BMPLUS4, PETThese machines are now bundled with the main BMC64 release v3.3 or higher. Refer to the tabs above for those machines on how to setup their ROM dirs.
Stats (C64 Machine)The following end-to-end latency measurements were reported by _ C64 CUSTOMS _'s video "C64 Hardware -TheC64 mini Input Lag Test" video
Note: These measurements are specific to his monitor/TV and joystick testing program he used.
Below are my measurements for composite video/audio out and how they compare to other systems. These and are specific to the joy testing program I used. The joy tester is a modification of the 8-bit guy's key delay test and is included with BMC64. It polls joy port 2 in a tight loop and plays a beep and color change when a button press is detected.
C64 mini/maxi audio measurements were made by The 8-bit Guy.
Since the emulator is operating at the frame resolution, I decided to measure lag in terms of frames rather than ms duration. My definition is as follows:
A lag of X frames means that if the circuit for the button press is closed somewhere within frame 1, the mid-screen transition will appear somewhere within frame X+1.
Button presses will happen mid-way through frame 1. A lag of X means the mid-screen transition caused by delayjoy.crt will appear mid-way through frame X+1. So a lag of 2 frames means the transition will occur somewhere in the 3rd frame. On average you'll get a 40ms delay between button press and transition. Best case possible is 20ms. Worst possible will be 60ms. This does not mean games will necessarily react within 2 frames as the game itself may only poll the joyport once per frame anyway, in which case even with a 2 frame lag, the game may still only react to the input change on the 4th frame.
* 8-bit guy measured HDMI video lag for the C64 mini/maxi to be around 90ms which would make the raster transition show up somewhere in the 4th frame. I don't have the equipment to measure HDMI lag, only composite.
Thanks!Special thanks goes out to my friend Ryan Daum for his advice and technical guidance on this project!
© 2019 Randy Rossi (randyrossi at gmail dot com) - All rights reserved (2019/01/30)