Sharpie is a 16-bit fantasy console implemented in C#. It is a powerhouse designed to get in your way as little as possible while mimicking how old NES- and SNES-era games were programmed. It features its own custom Assembly language that facilitates most of what you'd need to not pull your hair out in the process of making a game.
- CPU: 16-bit custom architecture.
- Registers: 16 general-purpose registers (R0-R15).
- Memory: 64KB of addressable space.
- Color: An internal 32-color palette and 16 active colors at any time, with support for color swapping.
- Graphics: Sprite-based rendering with a 256x256 internal display and a text overlay.
- Audio: 8 monophonic channels that can play audio simultaneously, with support for Square, Triangle, Sawtooth and Noise waveforms as well as up to 128 distinct instruments.
- Input: Support for up to two players.
The Sharpie SDK handles your entire development pipeline.
- Assembler: A lightning-fast CLI (and soon™ a GUI) that turns
.asmcode into.shrcartridges. - Syntax Highlighting: First-class support for Neovim and VS Code (located in
tools/editor-support).
- Grab the Release: Download the build you need from the Releases tab.
- Setup your Editor: Follow the instructions in
tools/editor-supportto get those opcodes looking pretty. - Write Code:
.INCLUDE "my_sprites.asm" LDI r1, $01 ; Load a value OUT_R r1 ; Print it to the console
- Assemble:
Sharpie.Sdk -i mygame.asm - Run:
Drag your
.shrfile onto the Sharpie Runner and watch the magic happen.
If you'd like to ask something specific about the Sharpie, feel free to open an Issue or a Discussion. The Wiki also contains much more nuanced info about the console's architecture.
/src: The C# source code for the Sharpie as well as the runner interfaces./tools: The SDK, Assembler, and Editor support files./assets: Logos, icons, and release materials.
Sharpie, the Sharpie Logo and the Sharpie BIOS are all licensed under the LGPL License. See LICENSE.md for the boring legal details.
There are plans for standalone self-contained Sharpie ROM support by packaging them with a runner of your choice. No ETA on that yet, but stay tuned. However:
The intent is to enable the creation and distribution of games.
While third-party runners are more than welcome, we discourage the monetization of standalone runner implementations as we believe the ecosystem works best when commercial value is centered on games rather than platforms.