SharpProspero

A C# SDK and toolchain for building homebrew that runs on the console. Write it in C#; the ahead-of-time compiler turns it into a self-contained ELF, the linker packs it into either an installable application module or a position-independent payload, and nothing extra has to ship alongside — no runtime pack, no separate linker, no start file, no stub library.

Two executable forms come out of the same C#:

  • Application modules the console installs and launches from the home screen. Full lifecycle, full device-service surface. See Application Modules.
  • Payloads a small loader maps into a process that is already running. No install, no signature, kernel access through the pipe primitive. See Payloads.

Start here

  1. Getting started takes an empty project to a running application in a few steps.
  2. Setup installs the toolchain for Windows and Linux (both x64).
  3. Application Modules covers the API surface for homebrew titles.
  4. Payloads covers the runtime bring-up, the kernel-access surface, and the payload API.
  5. Extras collects the tips per form and the package metadata every title carries.

The documentation

Section What it covers
Getting started From an empty folder to a running module.
Setup The per-operating-system install and doctor.ps1.
Application Modules The API surface for homebrew titles: the application host, graphics, input, audio, media, networking, memory, interface toolkit, data and utilities, system services, modules and libraries, samples, and the application-promotion pattern.
Payloads An overview, how to build one, the runtime bring-up, the resolver cascade, the kernel-access surface, the SPRX declarations, the payload API, the samples, the send path, the daemon that promotes a running application, and troubleshooting.
Extras Tips per form and the sce_sys/param.json fields.
Toolchain The architecture, the compile-link-pack pipeline, and the modules-versus-payloads comparison.
References Bindings, the signed and unsigned forms, module offsets, and the command reference.
Help Troubleshooting for the build, the pack, the install, and the run.

Not sure where a type lives? Every page names the namespace it documents, and the search box (press s) indexes the whole site.

What it gives you

  • Interop bindings for the device services a module uses: display output, controller input and output, audio output and microphone input, files and directories, image decode and encode, the real-time clock, the entropy source, and the user and system services. See Bindings.
  • A drawing layer: a framebuffer surface with fills, lines, circles, opaque and alpha-blended copies, in-place image effects, PNG, JPEG, BMP, TGA, and GIF decode with PNG, JPEG, BMP, and TGA encode, a bitmap font and a scalable TrueType font, over a double-buffered display. See Graphics.
  • A graphics-processor layer: the command interface, a command buffer, render-target, blend, depth-stencil and viewport state, image and sampler descriptors, surface tiling, and a lit 3D mesh renderer over it. See GPU command layer.
  • An application host: derive from ProsperoApp, override OnFrame, call Run. See Application host.
  • An interface toolkit: build screens out of controls driven by the controller, so you do not draw the interface by hand. See Interface toolkit.
  • Audio, media and networking: an output port paced to the audio clock, a mixer, synthesis and filters, a microphone port, compressed-audio and video decoding, and TCP, UDP and HTTP. See Audio, Media, and Networking.
  • System services: save data, on-screen dialogs, trophies, screen capture, package install, and firmware compatibility. See System services.
  • A payload API: SharpProspero.Payload provides the network, filesystem, process, notification, and kernel-access surface a payload uses instead of the application host. The CRT emits the syscall gateway, the resolver cascade, and per-field kernel accessors so a payload can walk the process list and modify credentials without a dynamic linker. See Payloads.
  • A toolchain that stands alone: the linker supplies its own start object and its own module stubs, so a build needs no separate linker, start file, or stub library. Its commands inspect, strip, retarget, convert and package a module. See Toolchain and the command reference.

Requirements

  • .NET 10 SDK, on Windows or Linux (x64 only).
  • The compile step runs on Linux; on Windows the build uses WSL for it automatically. See the build pipeline.

pwsh doctor.ps1 in the SDK folder checks a machine and prints what to set for anything missing.

License

GPL-3.0-or-later. Copyright (C) SvenGDK 2026.


Copyright © SvenGDK 2026. Distributed under the GPL-3.0-or-later license.

This site uses Just the Docs, a documentation theme for Jekyll.