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.1.tar.gz (57.3 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.1-py3-none-any.whl (56.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sidwizard_driver-0.4.1.tar.gz
  • Upload date:
  • Size: 57.3 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.1.tar.gz
Algorithm Hash digest
SHA256 16276aed9b3c6672f791bb6a67cc2823b8890a4fdffa1c5fb3f996be542ffbed
MD5 bc8f6c4c12aa9050f81ba7fd712348e4
BLAKE2b-256 894f5377ca57859d610a2e58c8ba9ed18795a1a357c3c49723adc9364a91dfa1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sidwizard_driver-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc36bed238c655c7a95903032720fdb38ff8698013d9cd8008c1f682b287fb9c
MD5 bc2d6c49ff48e2fffb11f47c8c04c6f1
BLAKE2b-256 1bf670477bfc9c44acb8cf758cb4c74dd7eb477bddccad67a4a1ef543521cb94

See more details on using hashes here.

Provenance

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