Skip to main content

Python automation harness for driving SID-Wizard inside asid-vice — captures per-frame SID register writes from the real 6502 player.

Project description

sidwizard-driver

Python harness that drives SID-Wizard inside asid-vice and captures per-frame SID register writes from its real 6502 player. Output is a deduplicated (frame, reg, value) CSV — ground truth for verifying pure-Python SWM players like pysidwizard.

Built on vice-driver.

Install

pip install sidwizard-driver

Requires Docker (or compatible) and the asid-vice:latest image — see anarkiwi/asid-vice.

The SID-Wizard editor disk is fetched on demand from CSDB and cached under ~/.cache/sidwizard-driver/ (override with --d64 <path> or XDG_CACHE_HOME). Pre-fetch:

python -m sidwizard_driver.fetch

Usage

Boot smoke:

python -m sidwizard_driver.smoke

Capture a tune to CSV:

python -m sidwizard_driver.capture --swm tune.swm --frames 1500 --out tune.csv

Dump per-frame player ghost-register state:

python -m sidwizard_driver.ghost_dump --swm tune.swm --frames 60 --annotate --out ghost.csv

CSV schema

capture emits frame,reg,value (integers). Frame 0 is the first player tick after F1. reg is the SID register offset (0..0x18). Consecutive writes of the same value to the same register are collapsed.

ghost_dump emits frame,addr,value (with optional label column). Each frame yields rows for the per-voice zero-page block ($10..$80) plus six additional rows:

  • Three for the filter-program self-modifying operand bytes — labelled FLTCTRL / FLTPOSI / CWEPCNT. These live in the loaded player code ($1xxx) and let downstream tools reconstruct SID-Wizard's per-frame filter-table position + sweep counter, which are NOT in zero page.
  • Three for the per-voice DETUNER bytes (DETUNER_v0 / v1 / v2). DETUNER is in the CONST_VAR ZP region that INIPVAR doesn't clear; its base address varies by build, so it's discovered from the WRPITCH adc DETUNER,X operand and captured per voice.

License

Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sidwizard_driver-0.4.0.tar.gz (56.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sidwizard_driver-0.4.0-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file sidwizard_driver-0.4.0.tar.gz.

File metadata

  • Download URL: sidwizard_driver-0.4.0.tar.gz
  • Upload date:
  • Size: 56.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sidwizard_driver-0.4.0.tar.gz
Algorithm Hash digest
SHA256 7f561e37f107e72a58d20ebad7a638294beff0f267d05ab5245183bc115e80ab
MD5 d00a0714f1104e72143bbed2d3c54cf2
BLAKE2b-256 713aa3c246a5b485bed967959327c7954e3f13b913cfb8dc64d221ac32c6cfe4

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidwizard_driver-0.4.0.tar.gz:

Publisher: publish.yml on anarkiwi/sidwizard-driver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidwizard_driver-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sidwizard_driver-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 adb652bfc418240d792976f192cd027da651d0000425ce33a201535ee6cc01ab
MD5 d026ee01c9fd3c3deaa9267006e62c8c
BLAKE2b-256 f2dabdc7fa01f43d137b5683c46b6f29cd97a11f1481bd1b89cf8ca2baf52479

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidwizard_driver-0.4.0-py3-none-any.whl:

Publisher: publish.yml on anarkiwi/sidwizard-driver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page