ProductPromotion
Logo

Rust

made by https://0x3d.site

GitHub - kondrak/rust64: Commodore 64 emulator written in Rust
Commodore 64 emulator written in Rust. Contribute to kondrak/rust64 development by creating an account on GitHub.
Visit Site

GitHub - kondrak/rust64: Commodore 64 emulator written in Rust

GitHub - kondrak/rust64: Commodore 64 emulator written in Rust

CI

Rust64 - a C64 emulator written in Rust

This is my attempt to study the Rust programming language and have fun at the same time. The goal is to present in the least obfuscated way how the Commodore 64 works and what's happening behind the scenes once you start a program. Emulation is cycle based and fairly accurate at this point.

The emulator has a built-in visual debugger which lets you view the contents of each memory page in RAM, Color RAM, VIC registers, CIA registers and SID registers. The VIC window is a ICU64-style raster debugger where each pixel represents one VIC cycle and any events occuring at that time.

Major dependencies

Requires Rust 1.58.0 or higher to compile and run.

Youtube demo #1:

Screenshot

Youtube demo #2:

Screenshot

Screenshot:

Screenshot

Build instructions

cargo build
cargo run --release

You can pass a .prg file as a command line parameter to load it into memory once the emulator boots (just type RUN to start the program):

cargo run --release prgs/colors.prg

To run with double-sized window:

cargo run --release x2 prgs/colors.prg

To run with double-sized window and debug windows enabled:

cargo run --release x2 debugger prgs/colors.prg

C64 and special key mappings

ESC     - Run/Stop
END     - Restore
TAB     - Control
LCTRL   - C=
`       - <-
-       - +
INS     - &
HOME    - CLR/Home
BSPACE  - INST/DEL
[       - @
]       - *
DEL     - ^
;       - :
'       - ;
\       - =
F11     - start asm output to console (very slow!)
F12     - reset C64
RCTRL   - joystick fire button
NUMLOCK - toggle between joystick ports 1 and 2 (default: port 2)

In debugger window:
PGUP/PGDWN - flip currently displayed memory page
HOME/END   - switch currently displayed memory banks between RAM, Color RAM, VIC, CIA and SID

TODO

  • serial bus/disk drives (d64, t64, tap)
  • implement remaining undocumented ops
  • switch from SDL2 to cpal for audio once it supports OSX
  • improve SID emulation

Known Issues

  • missing serial bus may cause some very specific programs to perform incorrectly or get stuck in infinite loops
  • elaborate programs that require very precise timing are not running correctly yet

This is an on-off WIP project, so update frequency may vary.

Resources

The following documents and websites have been used to create this emulator:

Special thanks

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory