Skip to content

RetroC64/RetroC64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

128 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetroC64 ci NuGet

The RetroC64 SDK brings genuine Commodore 64 development directly into your C# and .NET workflow. Build, assemble, and run real 6510 programs without leaving your IDE - no external toolchain required!

✨ Features

  • 🚀 Zero-friction dev loop - Emit PRG/D64 and auto-launch live coding into VICE straight from .NET.
  • 🧱 Fluent 6510 assembler with Asm6502 - Labels, sections, data blocks, helpers, and source mapping back to C#.
  • 🧪 BASIC integration - Ideal for quick demos and prototyping.
  • ⚙️ Core helpers - C64Assembler with Zero-Page allocator, raster IRQ setup, memory, and CPU/NMI utilities from RetroC64.Core assembly.
  • 🎨 Sprite pipeline with SkiaSharp - Draw in Skia and convert to C64 sprite bytes automatically.
  • 🎵 SID tooling - Loader, relocator, and player (target address and ZP ranges).
  • 💾 Disk and program formats - D64 and PRG support.
  • 🔌 Cross-platform - Targets net9.0+.
  • 🐞 First-class VS Code debugging
    • Attach to debugger: Connect to RetroC64 debugger running on port 6503 (default)
    • Register access: Full read-write access to CPU registers, CPU flags, stack, and zero page addresses
    • Hardware registers: Access to VIC and SID registers
    • Breakpoints: Set code breakpoints and data breakpoints (watchpoints)
    • Execution control: Step-in, step-over, step-out, pause, and continue
    • Memory inspection: View RAM contents
    • Code analysis: View disassembly Debugger Example

📦 Install

Make sure you have the .NET SDK 9.0 or higher installed.

Then, you simply need to add the RetroC64 NuGet to your .NET project:

dotnet add package RetroC64

🚀 Quick Start

Create this simple Program.cs:

using Asm6502;
using RetroC64;
using RetroC64.App;
using static RetroC64.C64Registers;

// A program is a command line app that builds and runs a 6510 assembly program.
return await C64AppBuilder.Run<HelloAsm>(args);

/// <summary>
/// A simple assembler program that changes the background and border colors.
/// </summary>
public class HelloAsm : C64AppAsmProgram
{
    protected override Mos6502Label Build(C64AppBuildContext context, C64Assembler asm)
    {
        asm.Label(out var start)
            .BeginCodeSection("Main")
            .LDA_Imm(COLOR_RED)
            .STA(VIC2_BG_COLOR0)
            .LDA_Imm(COLOR_GREEN)
            .STA(VIC2_BORDER_COLOR)
            .InfiniteLoop()
            .EndCodeSection();
        return start;
    }
}

Run: dotnet watch -- run with launch VICE and allow live coding. It will display the following screen:

HelloAsm Example

See the emulator setup section in the user guide.

🧪 Examples

Go to the Examples repository for more examples.

📖 User Guide

For more details on how to use RetroC64, please visit the user guide.

🪪 License

This software is released under the BSD-2-Clause license.

🤗 Author

Alexandre Mutel aka xoofx.

About

RetroC64 SDK - Bringing modern .NET development to the legendary Commodore 64

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors