Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
07094 Media Support Major Always Sep 4, 2018, 22:57 Aug 19, 2020, 10:34
Tester nippur72 View Status Public Platform
Assigned To Robbbert Resolution Fixed OS
Status [?] Resolved Driver
Version 0.201 Fixed in Version 0.224 Build
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 07094: laser500: cassette WAV files cannot be loaded/saved from/to a real machine
Description WAV files produced by the tape emulator are about 15% faster than they should be, and thus cannot be loaded onto a real machine.

At the same time a file from a real machine won't load in the emulator unless it's slowed down by 15% via some external audio tool.
Steps To Reproduce 0) unzip the attached file ""
1) open laser500 emulator
2) at READY prompt type CRUN and press RETURN
3) "WAITING" in reverse is displayed one row below
4) open UI Panel -> File Manager -> cassette (cass) (might need pressing Scroll Lock to enable UI panel)
5) choose the file "from_real_hardware.wav" from unzipped folder
6) at this point you should be hearing the waveform playing but nothing happens, the program is not loaded
7) open UI Panel -> File Manager -> cassette (cass)
8) choose the file "from_real_hardware_speeded_15_percent.wav" or "from_emulator", and see how both load

This proves the emulator can load its own files or files from real hardware that are speeded up by ~ 15%
Additional Information The attached file "" contains:

from_emulator.wav: waveform generated in MESS
from_real_hardware: waveform generated on a real Laser 500 and sampled on a PC
from_real_hardware_speeded_15_percent: the real hardware waveform increased in speed by 15% with the audio tool "Audacity".

There is also the image "compared.png" which shows MESS vs REAL waveform side by side, where it can be seen that MESS is visibly shorter / faster.

One more info: I checked the file "src/lib/formats/vt_cas.cpp" and the numbers seem correct. According to the reference manual, the shortest HI or LO duration should be 277 microseconds, which indeed correspond to 3 samples at 10800 Hz in the source code.

I should mention also that vt1 (Laser110 family) and vt2 (Laser500 family) share the same numbers, and they could be reunited into one single common code in vt_cass.cpp. In VT1, the numbers are: 1 sample at 3600 Hz which is 277 microseconds as in VT2. The bit encoding is also the same.
Github Commit
Regression Version
Affected Sets / Systems laser500
Attached Files
zip file icon (963,185 bytes) Sep 5, 2018, 16:03 Uploaded by nippur72
waveforms for reproducing the bug
There are no relationship linked to this issue.
User avatar
Sep 4, 2018, 23:33
Could you please provide an example "from original hardware" wave and "from emulation" wave (attach them as a .zip) and some instruction on how to use the machine to load/save cassette images? It would go some way to allow people to confirm the issue and help devs by providing those example images.
User avatar
Sep 5, 2018, 16:30
@Tafoid I've updated the report with an attached file and all the info that might help. I tried to be more detailed as possible. I tried to look for the bug in the source code myself, but all seems correct to me.