Topics

UTTORI ASM · IN DEVELOPMENT

VS Code settings

Set project files, targets, output paths, and analysis behavior in VS Code.

  • asm.configFile - optional workspace-relative path to uttori-asm.config.json.
  • asm.plugins - plugin module specifiers or { module, options } objects.
  • asm.target - target contribution ID or alias.
  • asm.architecture - architecture contribution ID or alias.
  • asm.entryPoints - project entry-point files analysed as include roots.
  • asm.includePaths - extra include search paths relative to the workspace.
  • asm.buildOutput - output path (defaults to the target's output extension).
  • asm.baseImage - optional base image to patch when building.
  • asm.analysisProject - native evidence directory or analysis.json path, absolute or relative to each workspace folder. The selected source project's .uttori-local/project.json binding takes precedence; when neither is selected, projects are discovered automatically.
  • asm.analysis.maxWorkItems - static-analysis budget when regenerating disassembly (default 100,000). This counts CPU-state and call-path exploration, not imported trace events. Larger values consume more time and memory. Incomplete analysis still cannot discard known code.
  • asm.analysis.maxMemoryMiB - JavaScript heap budget for isolated analysis views and source workers (default 4096 MiB). Increase for unusually large analyses. Views reuse validated project caches and serialize requests. Cancellation is cooperative; synchronous steps finish their safe boundary. Total process memory can exceed the heap budget. See Uttori Analysis output for operation failures.
  • asm.trace.maxImportSizeMiB - native trace import file-size limit (default 2048 MiB / 2 GiB). Set it in the project's .vscode/settings.json, for example "asm.trace.maxImportSizeMiB": 4096 for a 4 GiB capture. Both import and routine reports read chunks incrementally, with progress and cancellation, instead of loading the entire recording into a JavaScript string. Project imports index distinct facts in SQLite. This setting is separate from the static-analysis budget.
  • asm.trace.indexMode - full is the default and only supported instruction index profile. It retains every supplied register, fetched byte, qualified PC, execution count and bus observation.

Instruction imports use SQLite for distinct facts and final records, so all profiles can exceed the in-memory library's 2M/8M record limits. Input-file and configured storage budgets still apply. The file-size limit is independent of the number of indexed facts: one instruction with a new register snapshot creates both an instruction record and a CPU-state record in the full index.

Workspace plugin configuration is disabled in restricted workspaces. Trust the workspace to activate uttori-asm.config.json or asm.plugins. The bundled SNES target remains available before trust is granted, including explicit builds and build on save. Analysis edits and live emulator launch require a trusted local filesystem workspace.

Capture and storage

  • asm.debug.traceMode defaults to lossless-instructions; modes are negotiated with the matching runtime. Instruction and bus capture are separate streams.
  • asm.debug.traceDetail defaults to full; explicit pc permits address-only legacy tracing. Full detail requires advertised runtime support.
  • asm.debug.captureSink defaults to stream; native-file requires a matching native file-capture runtime and a paused start.
  • asm.debug.captureContext defaults to true, adding WRAM, pre-action state, replay inputs, milestones and graphics evidence spanning the complete recording.
  • asm.debug.liveBusAnalysis defaults to false. Its asm.debug.liveBusMaxLagMiB backlog limit defaults to 256; overflow stops analysis while recording continues.
  • asm.analysis.cacheMaxMiB defaults to 256 for disposable projections. asm.analysis.storageMaxMiB defaults to 0, disabling the publication ceiling. Explicit editor choices override persisted policy.

Editor information

asm.editorInfo.preset defaults to compact. asm.editorInfo.inline.enabled and asm.editorInfo.hover.enabled independently default to true. Explicit inline.parts/hover.rows override presets; empty arrays hide that surface. Inline defaults are aligned placement, column 80, editorCodeLens.foreground color, a 120-character limit and · separator. Long source lines keep their own gap without moving other overlays. See editor information for templates, allowed fields and legacy-setting precedence.

Git source project roots, local bindings, generation recipes and layout/state limits live in the .uttori/ and .uttori-local/ contracts. Save their ordinary files and use the selected source workflow; fixed assembly output paths are not a substitute for a matching source build receipt.