Files
8bitworkshop/extension/package.json
T

534 lines
16 KiB
JSON

{
"name": "8bitworkshop",
"displayName": "8bitworkshop — Retro 8-bit Dev",
"description": "Build, run, and debug 8-bit programs — NES, Atari, C-64, and more — with 8bitworkshop's 6502/Z80/6809 assemblers, compilers, and emulators",
"keywords": [
"retro",
"vintage",
"8-bit",
"8bit",
"6502",
"assembly",
"assembler",
"emulator",
"NES",
"Famicom",
"Atari 2600",
"Atari VCS",
"Atari 7800",
"Atari 8-bit",
"Commodore 64",
"C64",
"VIC-20",
"ColecoVision",
"MSX",
"ZX Spectrum",
"Apple II",
"Game Boy",
"Sega Master System",
"Z80",
"6809",
"ca65",
"dasm",
"homebrew",
"game development",
"Verilog",
"HDL",
"hardware design",
"retrogaming"
],
"version": "0.1.0",
"publisher": "8bitworkshop",
"icon": "images/icon.png",
"galleryBanner": {
"color": "#0d0d3b",
"theme": "dark"
},
"preview": true,
"license": "GPL-3.0",
"repository": {
"type": "git",
"url": "https://github.com/sehugg/8bitworkshop.git",
"directory": "extension"
},
"bugs": {
"url": "https://github.com/sehugg/8bitworkshop/issues"
},
"homepage": "https://8bitworkshop.com",
"engines": {
"vscode": "^1.90.0"
},
"categories": [
"Programming Languages",
"Debuggers"
],
"main": "./out/extension.js",
"activationEvents": [
"onStartupFinished",
"workspaceContains:README.md",
"workspaceContains:**/*.dasm",
"workspaceContains:**/*.ca65",
"workspaceContains:**/*.acme",
"workspaceContains:**/*.xa",
"workspaceContains:**/*.nesasm",
"workspaceContains:**/*.z",
"workspaceContains:**/*.xasm",
"workspaceContains:**/*.lwasm",
"workspaceContains:**/*.vasm",
"workspaceContains:**/*.armips"
],
"contributes": {
"commands": [
{
"command": "8bitworkshop.newProject",
"title": "New Project...",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.openExample",
"title": "Open Example",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.copyToWorkspace",
"title": "Copy to Workspace",
"category": "8bitworkshop",
"icon": "$(copy)"
},
{
"command": "8bitworkshop.downloadToolchains",
"title": "Prepare Toolchains",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.build",
"title": "Build",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.run",
"title": "Run",
"category": "8bitworkshop",
"icon": "$(play)"
},
{
"command": "8bitworkshop.debug",
"title": "Debug",
"category": "8bitworkshop",
"icon": "$(debug-alt)"
},
{
"command": "8bitworkshop.runThisFile",
"title": "Run This File",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.runMainFile",
"title": "Run Main File",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.followActiveEditor",
"title": "Follow Active Editor",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.setMainFile",
"title": "Set as Main File",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.changeMainFile",
"title": "Change Main File...",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.selectPlatform",
"title": "Change Platform...",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.detectProjects",
"title": "Detect Projects",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.addLaunchConfiguration",
"title": "Add Launch Configuration",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.projectMenu",
"title": "Project Options",
"category": "8bitworkshop"
},
{
"command": "8bitworkshop.reset",
"title": "Reset Emulator",
"category": "8bitworkshop",
"icon": "$(debug-restart)"
},
{
"command": "8bitworkshop.pause",
"title": "Pause Emulator",
"category": "8bitworkshop",
"icon": "$(debug-pause)"
},
{
"command": "8bitworkshop.resume",
"title": "Resume Emulator",
"category": "8bitworkshop",
"icon": "$(debug-continue)"
},
{
"command": "8bitworkshop.stop",
"title": "Stop Emulator",
"category": "8bitworkshop",
"icon": "$(debug-stop)"
},
{
"command": "8bitworkshop.mute",
"title": "Mute Emulator",
"category": "8bitworkshop",
"icon": "$(mute)"
},
{
"command": "8bitworkshop.unmute",
"title": "Unmute Emulator",
"category": "8bitworkshop",
"icon": "$(unmute)"
}
],
"configuration": {
"title": "8bitworkshop",
"properties": {
"8bitworkshop.platform": {
"type": "string",
"default": "",
"scope": "resource",
"description": "Target platform id (e.g. c64, nes, vcs, gb).",
"markdownDescription": "Target platform id (`nes`, `c64`, `vcs`, ...). Set by New Project, Set as Main File, or detection."
},
"8bitworkshop.mainFile": {
"type": "string",
"default": "",
"scope": "resource",
"description": "Main source file, relative to the workspace folder. Leave empty to run whichever program is open."
},
"8bitworkshop.tool": {
"type": "string",
"default": "",
"scope": "resource",
"description": "Tool for the main file, when it isn't the platform's usual tool for the extension (ca65 for a .asm file, say)."
},
"8bitworkshop.folders": {
"type": "object",
"default": {},
"scope": "resource",
"markdownDescription": "Projects in subdirectories: directory (relative to the workspace folder) → `{ \"platform\", \"mainFile\", \"tool\" }`. The most specific directory wins.",
"additionalProperties": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"mainFile": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"platform"
]
}
},
"8bitworkshop.autoBuild": {
"type": "string",
"enum": [
"onType",
"onSave",
"off"
],
"default": "onType",
"enumDescriptions": [
"Build as you type, after a short pause.",
"Build when you save.",
"Build only with the Build command."
],
"markdownDescription": "When to build. Tools that build on a server (llvm-mos) always wait for a save."
},
"8bitworkshop.reloadOnBuild": {
"type": "string",
"enum": [
"always",
"onSave",
"never"
],
"default": "always",
"enumDescriptions": [
"Restart the game after each successful build.",
"Restart it only when you save; typing still updates errors.",
"Keep the running game until you Run again."
],
"markdownDescription": "When a successful build restarts the running game."
},
"8bitworkshop.exportRom": {
"type": "boolean",
"default": false,
"description": "Write each successful build's ROM to the export folder."
},
"8bitworkshop.exportRomPath": {
"type": "string",
"default": "bin",
"scope": "resource",
"description": "Folder for exported ROMs, relative to the main file's directory."
},
"8bitworkshop.toolchainPath": {
"type": "string",
"default": "",
"description": "Directory containing src/worker (toolchain assets), such as an 8bitworkshop checkout. When empty, toolchains download on first use.",
"scope": "machine"
},
"8bitworkshop.assetUrl": {
"type": "string",
"default": "",
"description": "Server (or local directory) to download toolchains from, tried before the default servers. Downloads are checked against hashes built into the extension.",
"scope": "machine"
}
}
},
"languages": [
{
"id": "8bws-6502",
"aliases": [
"6502 Assembly",
"6502"
],
"extensions": [
".dasm",
".ca65",
".xa",
".nesasm"
],
"configuration": "./out/syntaxes/8bws-6502.language-configuration.json"
},
{
"id": "8bws-z80",
"aliases": [
"Z80 Assembly",
"Z80"
],
"extensions": [
".z",
".zmac",
".sgb"
],
"configuration": "./out/syntaxes/8bws-z80.language-configuration.json"
},
{
"id": "8bws-6809",
"aliases": [
"6809 Assembly",
"6809"
],
"extensions": [
".xasm",
".lwasm"
],
"configuration": "./out/syntaxes/8bws-6809.language-configuration.json"
}
],
"grammars": [
{
"language": "8bws-6502",
"scopeName": "source.asm.6502",
"path": "./out/syntaxes/8bws-6502.tmLanguage.json"
},
{
"language": "8bws-z80",
"scopeName": "source.asm.z80",
"path": "./out/syntaxes/8bws-z80.tmLanguage.json"
},
{
"language": "8bws-6809",
"scopeName": "source.asm.6809",
"path": "./out/syntaxes/8bws-6809.tmLanguage.json"
}
],
"menus": {
"editor/title": [
{
"command": "8bitworkshop.run",
"when": "8bitworkshop.canRun && activeWebviewPanelId != '8bitworkshop.emulator'",
"group": "navigation"
},
{
"command": "8bitworkshop.debug",
"when": "8bitworkshop.canRun && activeWebviewPanelId != '8bitworkshop.emulator' && !inDebugMode",
"group": "navigation"
},
{
"command": "8bitworkshop.copyToWorkspace",
"when": "resourceScheme == 8bws-preset",
"group": "navigation@0"
},
{
"command": "8bitworkshop.pause",
"when": "activeWebviewPanelId == '8bitworkshop.emulator' && 8bitworkshop.emuRunning",
"group": "navigation@1"
},
{
"command": "8bitworkshop.resume",
"when": "activeWebviewPanelId == '8bitworkshop.emulator' && !8bitworkshop.emuRunning",
"group": "navigation@1"
},
{
"command": "8bitworkshop.reset",
"when": "activeWebviewPanelId == '8bitworkshop.emulator'",
"group": "navigation@2"
},
{
"command": "8bitworkshop.stop",
"when": "activeWebviewPanelId == '8bitworkshop.emulator'",
"group": "navigation@3"
},
{
"command": "8bitworkshop.mute",
"when": "activeWebviewPanelId == '8bitworkshop.emulator' && !8bitworkshop.muted",
"group": "navigation@0"
},
{
"command": "8bitworkshop.unmute",
"when": "activeWebviewPanelId == '8bitworkshop.emulator' && 8bitworkshop.muted",
"group": "navigation@0"
},
{
"command": "8bitworkshop.runThisFile",
"when": "8bitworkshop.canRun",
"group": "8bitworkshop@1"
}
],
"editor/context": [
{
"command": "8bitworkshop.setMainFile",
"when": "resourceScheme == file",
"group": "8bitworkshop@1"
}
],
"explorer/context": [
{
"command": "8bitworkshop.setMainFile",
"when": "!explorerResourceIsFolder",
"group": "8bitworkshop@1"
}
],
"commandPalette": [
{
"command": "8bitworkshop.downloadToolchains",
"when": "8bitworkshop.canDownloadToolchains"
},
{
"command": "8bitworkshop.copyToWorkspace",
"when": "resourceScheme == 8bws-preset"
},
{
"command": "8bitworkshop.pause",
"when": "8bitworkshop.emuRunning"
},
{
"command": "8bitworkshop.resume",
"when": "!8bitworkshop.emuRunning"
}
]
},
"viewsWelcome": [
{
"view": "explorer",
"contents": "Make a program for a classic console or computer.\n[New 8bitworkshop Project](command:8bitworkshop.newProject)\n[Open 8bitworkshop Example](command:8bitworkshop.openExample)"
}
],
"breakpoints": [
{ "language": "c" },
{ "language": "cpp" },
{ "language": "8bws-6502" },
{ "language": "8bws-z80" },
{ "language": "8bws-6809" }
],
"debuggers": [
{
"type": "8bitworkshop",
"label": "8bitworkshop",
"languages": [],
"configurationAttributes": {
"launch": {
"properties": {
"platform": {
"type": "string",
"description": "Platform id (nes, c64, ...). Defaults to the project's."
},
"mainFile": {
"type": "string",
"description": "The program to run, relative to the workspace folder."
},
"tool": {
"type": "string",
"description": "Tool for the main file, if not the usual one."
},
"stopOnEntry": {
"type": "boolean",
"description": "Stop before the program's first instruction instead of running.",
"default": false
},
"script": {
"type": "string",
"description": "Commands to run once the program is loaded, as in the Debug Console (e.g. \"break main; key SPACE\")."
}
}
}
},
"configurationSnippets": [
{
"label": "8bitworkshop: Run a program",
"body": {
"type": "8bitworkshop",
"request": "launch",
"name": "Run ${1:main.c}",
"mainFile": "${1:main.c}"
}
}
]
}
]
},
"scripts": {
"build": "node scripts/build.mjs && node out/presetindex.js && node out/syntaxes.js",
"watch": "node scripts/build.mjs --watch",
"typecheck": "tsc --noEmit -p .",
"assets": "node scripts/build.mjs && node out/assetpack.js",
"assets-quick": "node scripts/build.mjs && node out/assetpack.js --quality 8",
"test": "npm run build && mocha --timeout 60000 out/test/*.test.js",
"vscode:prepublish": "npm run build",
"package": "npm run assets-quick && vsce package --no-dependencies",
"package:release": "npm run assets && vsce package --no-dependencies",
"vsce-publish": "npm run assets && vsce publish --no-dependencies",
"ovsx-publish": "npm run package:release && npx ovsx publish $npm_package_name-$npm_package_version.vsix"
},
"devDependencies": {
"@types/vscode": "~1.90.0",
"@vscode/vsce": "^4.0.0",
"vscode-oniguruma": "^2.0.1",
"vscode-textmate": "^9.3.2"
},
"capabilities": {
"untrustedWorkspaces": {
"supported": "limited",
"description": "Builds and emulation run sandboxed. 8bitworkshop.toolchainPath is ignored, since it loads code.",
"restrictedConfigurations": [
"8bitworkshop.toolchainPath"
]
}
}
}