# Quickstart Write a program for a classic console or computer, then build and play it without leaving VS Code. The extension includes the compilers, assemblers, and emulators from 8bitworkshop.com. Everything runs on your computer and works offline. A few platforms, such as Verilog, need an extra download the first time you choose them. ## Make your first program 1. Open an empty window (**File > New Window**). In the Explorer, click **New 8bitworkshop Project**. Or run **8bitworkshop: New Project...** from the Command Palette (Ctrl+Shift+P, or Cmd+Shift+P on a Mac). 2. Choose a platform, such as **NES** or **Atari 2600 (VCS)**. Platforms with a book show its title; click the link button to open it. 3. Choose where to start: - **Start here** lists a blank program for each language the platform supports, such as "Blank C program (cc65)". The first one is the usual choice. - The other groups are working examples, from "Hello World" to complete games. Move through the list to preview each one. 4. Choose a folder. 8bitworkshop copies the program there, opens it, and builds it. 5. Click **Run** (▷) at the top right of the editor. The emulator opens beside your code. 6. Click the emulator to play. The line under the screen shows the controls, such as "Arrows: joystick · Space: fire". Keys go to the game only while the emulator has focus; click your code to type again. Now change something, such as a color or a message. 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. ## Look at examples without copying them Run **8bitworkshop: Open Example**. Examples open read-only, and **Run** works on them straight away. To change one, click **Copy to Workspace** at the top right of the editor. ## Use code you already have **A folder.** Open it. If the code clearly targets one platform, for example it includes `neslib.h`, a notification says "This looks like an NES project" and shows why. Click **Use It**, or **Choose...** to pick another platform. If the folder holds several projects, click **Review** and check the ones to use. The main file then opens and builds; click **Run** in the notification to start the emulator. **A single file.** Right-click it in the Explorer or the editor and choose **8bitworkshop: Set as Main File**, then choose the platform. **A project from the 8bitworkshop website.** Projects the website pushed to GitHub have a link in their README that names the platform and the main file. Clone the repo and open it; there's nothing to answer. The first time you open it, the main file opens and builds. 8bitworkshop builds with its own tools. It reads Makefiles for clues about the platform but never runs them. If 8bitworkshop picks the wrong assembler, it says so: "This looks like ca65 code; `.asm` builds with dasm. [Use ca65]". ## The status bar The left side of the status bar shows the platform and the file that runs, such as **NES · game.c**. Click it to: - change the platform or the main file - go back to the main file, or run a different file (see below) - open **Project Settings** ## Run a different file To try a test program, such as `test_scroll.c`, open it and choose **Run This File** from the **...** menu at the top right of the editor. It keeps running that file: when you save a file it uses, it rebuilds and restarts it. The status bar shows **NES · test_scroll.c**. To go back, click the status bar and choose **Run Main File**. To keep a list of programs to switch between, click the status bar and choose **Add Launch Configuration**. The program then appears in the **Run and Debug** view's list, and F5 debugs the one you chose. **A folder of small programs**, like a set of exercises, has no main file. **Run** runs the program in the editor you're looking at. The status bar shows **NES · (active file)**. ## Build settings | Setting | Choices | |---|---| | `8bitworkshop.autoBuild` | `onType` (default): build as you type. `onSave`: build when you save. `off`: build with **8bitworkshop: Build** only. | | `8bitworkshop.reloadOnBuild` | `always` (default): restart the game after each successful build. `onSave`: restart it only when you save. `never`. | If the game restarting while you type gets in the way, set `reloadOnBuild` to `onSave`. Errors still update as you type. Some compilers, such as llvm-mos, build on a server. Those always wait until you save. ## Where your choices are saved 8bitworkshop saves the platform, main file, and build tool in `.vscode/settings.json`, whenever you choose or change one. Commit that file to pin an ambiguous answer or a folder with several projects; detection normally fills these in from your README and source. Your own settings stay in your user settings instead: `autoBuild` and `reloadOnBuild` (window settings). **Run This File** is just for you: VS Code remembers it on this computer, and it never changes a file. **Add Launch Configuration** saves to `.vscode/launch.json`. If you open a single file with no folder, there's nowhere to save, so the platform lasts until you close the window. Choose **Open Containing Folder** in the notification to keep it. ## Next steps - [Projects and the file that runs](projects.md): main files, test programs, folders of programs, and launch configurations. - [Platform detection](detection.md): how 8bitworkshop recognizes existing code, and how to fix a wrong guess. - [Building](building.md): build settings, errors, and where included files come from. - [The emulator](emulator.md): controls, focus, and the panel's buttons.