https://accentual.com/bmc64/ bg image(images/background.jpg) Logo Logo BMC64 | BMC128 | BMVIC20 | BMPLUS4 | BMPLUS4EMU (Pi3)| BMPET Donate with PayPal button * Become a Patron! BMC64 is a bare metal fork of VICE's C64 emulator optimized for the Raspberry Pi 3. (It will also work on RPi 2 and Zero models with reduced performance for some features.) 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.9-stable : Added REU to cartridge menu. Features * Quick boot time: 4.1 seconds! (over composite) * True 50hz/60hz smooth scrolling (no horizontal tearing or jitters!) * Low latency between input and audio/video * Excellent audio/video synchronization * No need to issue a shutdown sequence, just power off * Supports wiring real joysticks and a keyboard via GPIO pins (optional) Click Here for adapter build instructions * Supports a PCB for scanning a real C64 keyboard and joysticks for embedding a Pi inside a C64 shell (optional) See PCB Page for build info. * BMC64Lite version is also included for the Pi Zero. See BMC64Lite Info Page for how 'Lite' versions differ. master-unstable : Latest from master branch * If you're looking for a feature/fix that hasn't made it into a versioned release, you can try master builds here Links See CHANGELOG for latest changes Follow the lemon64.com thread GitHub Link: https://github.com/randyrossi/bmc64 See README.md file for BMC64 documentation Downloads BMC64 3.9 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.9.files.zip onto it. The Pi will boot from the first FAT partition. See below for ROM files you will need to provide yourself. * bmc64-3.9.files.zip For Pi 0|2|3 (MD5: c4e13267e252fe2e75d733d31d305172) OR 2) flash an image using bmc64-3.9.img.zip (300Mb partition). Again, see below for additional ROM files you need to provide. * bmc64-3.9.img.zip For Pi 0|2|3 (MD5: 368a5e79e1c3196482dc70542617455b) BMC64 Setup * Formatting an SD card + sudo fdisk /dev/sdb (make SURE /dev/sdb is the SDCard!) + Create your partition(s) + sudo mkfs.vfat /dev/sdbx (make SURE /dev/sdbx is the right partition!) * Burning an image to SD card + Linux: sudo dd if=bmc64-3.9.img of=/dev/sdx bs=64k (make SURE /dev/sdx is correct!) + Windows: Use etcher or Win32DiskManager * You MUST obtain at a minumum Commodore 64 KERNAL, CHARGEN, BASIC, and d1541II rom files and copy them to the sdcard into the C64 folder. The emulator will not run without them. These are available from many sites. + Example NOTE: You will have to rename files from the names you find here to the names the emulator expects above. For example, characters.901225-01.bin becomes CHARGEN. This is what your C64 dir should look like: /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 * Other disk drive ROM files are optional (dos1541, dos1571 and dos1581) * Copy to your SD card your .D64/.TAP/.CRT files to the disks, tapes, or carts folders. * All USB devices must be attached before you power on the PI. They must remain plugged in or the emulator will not function. * F12 brings up the menu (or Commodore Key+F7 if enabled) * README for more details. BMC128, BMVIC20, BMPLUS4, PET These 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 https://www.youtube.com/watch?v=b73BONBBZR8 Note: These measurements are specific to his monitor/TV and joystick testing program he used. +-------------------------------------------------------------------+ |Machine/ |Latency |Latency | | |Emulator |(Machine)|(Machine +|Notes | |over HDMI | |Display) | | |------------+---------+----------+---------------------------------| |Real C64 + | | | | |Framemeister|0ms |3 frames |HDMI using high speed camera | |HDMI | | | | |Upscaler | | | | |------------+---------+----------+---------------------------------| | | | |HDMI using high speed camera. | | | | |*Practically all latency | |Ultimate 64 |< .1ms |1-2 frames|introduced by TV/Monitor after | | | | |scaling since the U64 has no | | | | |frame buffer. | | | | |See video for measurement. | |------------+---------+----------+---------------------------------| |C64 Mini |unknown |6-7 frames|HDMI using high speed camera. | +-------------------------------------------------------------------+ 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. Oscilloscope pics to support the table below +-------------------------------------------------------------------+ |Machine/|Composite Video Lag |Audio |Notes | |Emulator| |Delay | | |--------+----------------------+------+----------------------------| |Real C64|0 frames |0ms |delayjoy.crt | |--------+----------------------+------+----------------------------| | | |~35ms | | |Ultimate|0 frames PAL Composite|analog|delayjoy.crt | |64 | |audio | | | | |port | | |--------+----------------------+------+----------------------------| | | | |8-bit Guy's latest | | | | |measurement for audio | |C64 Mini|N/A (see below) |~320ms|delaykey.crt | | | | |(Was previously 360ms before| | | | |firmware update) | |--------+----------------------+------+----------------------------| | | | |8-bit Guy's measurement for | |C64 Maxi|N/A (see below) |~110ms|audio | | | | |delaykey.crt | |--------+----------------------+------+----------------------------| | | | |Using default settings | | |2-4 frames USB Gamepad|~250ms|(200ms buffer). I was using | |Combian |3-4 frames Keyrah |analog|Fast SID engine. Could go as| | |(DB9) |audio |low as 135ms with buffer | | | |jack |size change to 80ms. | | | | |delayjoy.crt | |--------+----------------------+------+----------------------------| | | |~90ms |Progressive PAL composite | | |2 frames GPIO |analog|for video using | |BMC64 |2-3 frames USB |audio |oscilloscope, ReSid SID | | |3-4 frames Keyrah(DB9)|jack |Engine used | | | | |delayjoy.crt | +-------------------------------------------------------------------+ * 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! (c) 2019 Randy Rossi (randyrossi at gmail dot com) - All rights reserved (2019/01/30)