mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2026-10-25 15:05:25 +00:00
443 lines
13 KiB
JSON
443 lines
13 KiB
JSON
{
|
|
"name": "8bitworkshop",
|
|
"displayName": "8bitworkshop",
|
|
"description": "Build and run retro 8-bit programs with the 8bitworkshop toolchains and emulators",
|
|
"version": "0.1.0",
|
|
"publisher": "8bitworkshop",
|
|
"icon": "images/icon.png",
|
|
"preview": true,
|
|
"license": "GPL-3.0",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/sehugg/8bitworkshop.git"
|
|
},
|
|
"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": "Download All Toolchains",
|
|
"category": "8bitworkshop"
|
|
},
|
|
{
|
|
"command": "8bitworkshop.build",
|
|
"title": "Build",
|
|
"category": "8bitworkshop"
|
|
},
|
|
{
|
|
"command": "8bitworkshop.run",
|
|
"title": "Run",
|
|
"category": "8bitworkshop",
|
|
"icon": "$(play)"
|
|
},
|
|
{
|
|
"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": "",
|
|
"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": "",
|
|
"description": "Main source file, relative to the workspace folder. Leave empty to run whichever program is open."
|
|
},
|
|
"8bitworkshop.tool": {
|
|
"type": "string",
|
|
"default": "",
|
|
"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": {},
|
|
"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.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.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.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)"
|
|
}
|
|
],
|
|
"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."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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 5",
|
|
"test": "npm run build && mocha --timeout 60000 out/test/*.test.js",
|
|
"vscode:prepublish": "npm run build",
|
|
"package": "vsce package --no-dependencies",
|
|
"vsce-publish": "vsce publish --no-dependencies",
|
|
"ovsx-publish": "npm run package && 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"
|
|
]
|
|
}
|
|
}
|
|
}
|