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.2.tar.gz (57.4 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.2-py3-none-any.whl (56.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sidwizard_driver-0.4.2.tar.gz
  • Upload date:
  • Size: 57.4 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.2.tar.gz
Algorithm Hash digest
SHA256 f47abff1e4f54d8ce3ef3646a0d1b3ebddb723c4a4cf374dd22288f9d4a494fd
MD5 42d34bebb6e520b4126d5191f199a349
BLAKE2b-256 6b5b279c8b40d3a66d0ed0e331f8e4462746f3a68d8fc7df73f03382a27669de

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidwizard_driver-0.4.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sidwizard_driver-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1f5f12cc421ac459bd11796a2148ca9c167d36e2b5fe56c879328517b1f9b041
MD5 1e6466071aa85e099c669c073c98bf51
BLAKE2b-256 7c9e6572798f6e57d15cd804802529bc2559cd8764dfaae219646174a61f56f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidwizard_driver-0.4.2-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