Skip to content

Releases: LichP/rtzx

v0.5.0

08 Mar 15:12

Choose a tag to compare

This release adds support for Spectrum payloads and .tap files, and adds support for MSX .tsx files.

Waveforms

  • Kansas City Standard waveform support

Blocks

  • Added Kansis City Standard Data Block
  • Change display for Custom Info block to show data as string, move hex presentation to extended display
  • Various refactoring for write support and changes to DataPayload
  • Change Standard Speed Data Block to use DataPayload directly

Data / tap

  • Support for Spectrum and MSX header payloads
  • B/C: Removed length from DataPayload, delegated to BinRead parsing on parent objects
  • B/C: Replaced read_payload mathod with as_payload and try_as_payload on DataPayload
  • Replaced TzxData::parse_from with BinRead trait read
  • Added TapeDataFile struct with support for reading TZX or TAP data

UI

  • Support for reading / playing .tap and .tsx files
  • Ensure inspect command correctly detects platform
  • Improved presentation of Custom Info blocks

v0.4.0

10 Jan 16:05

Choose a tag to compare

This release brings experimental support for Generalized Data Blocks, and makes some improvements to the playback. It is also the first version to be published to crates.io, with code refactored and documented to facilitate library usage.

Waveforms

  • Generalized waveform initial implementation (experimental).
  • Data waveform now uses a pulse iterator in similar fashion to generalized waveform.
  • Added .current_baud to trait and implemented for data and generalized waveforms.
  • B/C: Pulse::get_next_sample method renamed to next_sample.

Blocks

  • Generalized Data Blocks parsing and initial implementation (experimental).

Code

  • Many standard trait implementations and constructors added throughout to facilitate library usage.
  • Add lib.rs for library usage, adjusted imports in main.rs to use.

UI

  • Display pulse widths as number of samples with rounding for data and pilot waveforms (useful for figuring out potential adjustments to playback duration)
  • Show current baud for data and generalized waveforms

Edit 18/01

Added aarch64 Linux build.

v0.3.1

31 Dec 14:35

Choose a tag to compare

Bug fixes for Standard Speed Data Blocks.

Blocks

  • Bug: Fixed parsing of StandardSpeedDataBlock. (#2)
  • Bug: Fix StandardSpeedDataBlock start pulse high logic to ensure an edge is present between pilot and sync pulses.
  • Bug: Fix display format exception when PulseSequence contains no pulses.

v0.3.0

28 Dec 23:15

Choose a tag to compare

This release makes some big efficiency improvements to improve playback reliability, and adds a fine-grained playback duration option, which can help when loading CDTs that fail at standard playback speed.

Waveforms

  • Generalised pause with different variants, with pause blocks using zero variant rather than start low variant.
  • Pulses now use an external index from the parent waveform rather than implementing their own iterator index, allowing reuse.
  • Pulse length / duration no longer affected by platform selection for playback.
  • Pulse length / duration now controllable via new playback_duration_percent config option (--playback-duration-percent / -d cli arg).
  • Waveforms now reuse a single pulse updated from data payload rather than building massive vectors of pulses (improves playback performance).

Blocks

  • Blocks refactored to use data payloads structure.
  • Data payload parsing for standard CPC header and data blocks.

Audio

  • Refactored player to facilitate block seeking.
  • Default buffer size increased to 200ms and made configurable via --buffer-lenth-ms / -b cli arg.

UI

  • Added --waveforms / -w option to inspect command.
  • convert command --output / -o arg now optional, output filename defaults to same as input wilename with extension changed to .wav if not supplied.
  • Added --buffer-lenth-ms / -b and --playback-duration-percent / -d args for play and convert.
  • play: Played blocks list now shows CPC header / data payload details as extended information for data blocks where the payload parses.
  • play: Current waveform visualisation now rendered double-width on separate line, along with byte data for current row when data waveform is playing.
  • play: Added controls to seek backwards / forwards through blocks.

v0.2.0

18 Oct 15:46

Choose a tag to compare

This release brings improvements to parsing, audio playback at 44.1k sample rate for improved compatibility, and a bug fix for space toggle on Windows.

There is one breaking change: the --machine / -m command line option has been replaced with --platform / -p.

Blocks

  • Added parsing implementations for all missing block types except CSW Recording, Generalized Data Block, and the deprecated C64 block types.
  • Bug: Fixed parsing bugs in StopTapeIf48K, SetSignalLevel, and MessageBlock.
  • Connected all missing block types with parsing implementations in read_block, including for block types with implementations in 0.1.0 which were erroneously left out.
  • Improved robustness of parsing to ensure all valid TZX / CDT files can be parsed.

Audio

  • Changed hard coding of sample rate to be configurable, using 44.1k as default instead of 48k.
  • Initial support for configurable output buffer when playing back on an audio device.

UI

  • Bug: Fix double-toggle of pause on Windows caused by event firing on both key press and release.
  • Display extended block information in inspect and in playback complete blocks output.
  • B/C: Replace --machine / -m arg with --platform / -p.
  • Add --sample-rate / -s arg.

0.1.0

04 Oct 21:21

Choose a tag to compare

Initial release. Support for TZX and CDT playback with common block types.