8bitworkshop for VS Code
The original online 8-bit IDE, now in VS Code!
Write programs for classic consoles and computers, then build and play them without leaving VS Code.
This extension bundles the assemblers, compilers, and emulators from 8bitworkshop.com.
Supported platforms include 6502, Z80, and 6809 CPUs:
- NES / Famicom
- Atari 2600 (VCS), Atari 7800, and Atari 8-bit computers
- Commodore 64 and VIC-20
- ColecoVision, MSX, ZX Spectrum, Amstrad CPC
- Apple II, Game Boy, Sega Master System, PC Engine
- Arcade hardware (Galaxian, Space Invaders, Pac-Man, Williams, VIC Dual, Atari Vector)
Supported programming languages include:
- Assembler with DASM, ca65, zmac, and more
- C with CC65, SDCC, and more
- BASIC with batariBASIC and FastBASIC
- Verilog for hardware design
- ...and others! There's a lot going on in here!
All building and emulation runs on your computer. The toolchains and examples are included; only a few platforms, such as Verilog, download an extra component the first time you use them.
Get started
- Open an empty window. In the Explorer, click New 8bitworkshop Project, or run 8bitworkshop: New Project... from the Command Palette.
- Choose a platform, such as NES or Atari 2600 (VCS).
- Choose a blank program or an example, then a folder to copy it to.
- Click Run (▷) at the top right of the editor. The emulator opens beside your code.
- Click the emulator to play. Click your code to type again.
Change something and the game rebuilds and restarts as you type. Errors appear as red underlines and in the Problems panel, and the last version that built keeps running until you fix them.
To look at the included examples without copying them, run 8bitworkshop: Open Example.
To use code you already have, open its folder: the extension detects the appropriate platform and main file.
Settings
Project settings, saved in .vscode/settings.json:
| Setting | What it does |
|---|---|
8bitworkshop.platform |
The platform, such as nes, c64, or vcs |
8bitworkshop.mainFile |
The file that runs. Empty: the file in the editor |
8bitworkshop.tool |
The build tool, when it isn't the usual one for the file |
8bitworkshop.folders |
Projects in subfolders |
8bitworkshop.exportRomPath |
Folder for exported ROMs, relative to the main file (bin by default) |
Your local user settings:
| Setting | What it does |
|---|---|
8bitworkshop.autoBuild |
onType (default), onSave, or off |
8bitworkshop.reloadOnBuild |
always (default), onSave, or never |
8bitworkshop.exportRom |
Write each successful build's ROM to the export folder |
8bitworkshop.toolchainPath |
Use a local 8bitworkshop checkout instead of the included toolchains |
8bitworkshop.assetUrl |
Server or local directory to download toolchains from, tried before the default servers |
Commands
Every command is under 8bitworkshop: in the Command Palette; several also appear in the editor title bar, the Explorer, or Project Options.
| Command | What it does |
|---|---|
| New Project... | Create a project from an example or a blank program |
| Open Example | Open a bundled example without copying it |
| Copy to Workspace | Copy the open example into your workspace |
| Set as Main File | Make the active file the one that runs |
| Change Main File... | Pick the main file from the workspace |
| Change Platform... | Build the project for another platform |
| Detect Projects | Scan the folder for projects and platforms |
| Add Launch Configuration | Write a run configuration to .vscode/launch.json; F5 debugs it, with step back |
| Project Options | Open the project menu |
| Build | Build without running |
| Run | Build and run in the emulator |
| Debug | Build and debug in the emulator, with breakpoints and step back |
| Run This File | Run the active file, without changing the project |
| Run Main File | Run the project's main file |
| Follow Active Editor | Run whichever program is in the editor |
| Reset / Pause / Resume / Stop / Mute / Unmute Emulator | Control the emulator panel |
| Download All Toolchains | Fetch every platform's toolchain for offline use |
More
License
GPL-3.0. The included components (toolchains, emulators, libraries, firmware, etc.) keep their own licenses; see THIRD-PARTY-NOTICES.md.
