Skip to content

RetroC64/retroc64.github.io

Repository files navigation

layout title og_type
simple
Home
website

Programming the Commodore 64
with .NET

Build, assemble, run and debug C64 programs
without leaving your IDE...
Retro development, reimagined through modern tooling!

Get Started > Examples > ▶ Watch .NET Conf 2025 Demo
🚀 Zero Friction Dev Loop

Emit PRG/D64 and auto-launch live coding into VICE straight from .NET.

Introduction >
🖥️ Fluent Assembler

With Asm6502 Labels, sections, data blocks, helpers, and source mapping back to C#.

Assembler >
🎨 Sprite Tooling

Draw in Skia and convert to C64 sprite bytes automatically.

Sprites >
🎵 SID Tooling

Loader, relocator, and player (target address and ZP ranges).

Music >
🧪 Core Helpers

Ideal for quick demos and prototyping and Core helpers - C64Assembler with Zero-Page allocator, raster IRQ setup, Sprites classes, PRG and D64 images files...

Helpers >
🐞 Debugging

With VS Code, inspect registers, memory, VIC/SID registers, breakpoints, execution control (step-in- step-over…), view disassembly…

Debugging >
🍿 RetroC64 .NET Conf 2025 Demo
<iframe id="youtubeVideo" data-base="https://www.youtube.com/embed/IjJDY7YwrSo" src="https://www.youtube.com/embed/IjJDY7YwrSo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<script> var modal = document.getElementById('youtubeModal'); var playTimer; // delay handle // Start auto-load/autoplay 0.5s after modal is fully shown modal.addEventListener('shown.bs.modal', function () { clearTimeout(playTimer); playTimer = setTimeout(function () { var iframe = document.getElementById('youtubeVideo'); var base = iframe.getAttribute('data-base'); iframe.src = base + '?autoplay=1&rel=0'; }, 150); }); // If user closes before delay fires, cancel it modal.addEventListener('hide.bs.modal', function () { clearTimeout(playTimer); }); // Stop playback by resetting src after modal fully hidden modal.addEventListener('hidden.bs.modal', function () { var iframe = document.getElementById('youtubeVideo'); iframe.src = iframe.getAttribute('data-base'); }); </script>

About

Official website for RetroC64

Resources

Stars

Watchers

Forks