Page 2 of 3

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 3:13 pm
by NML32
Is there a tool to convert to wav?

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 3:15 pm
by Hodor
NML32 wrote: Thu Apr 15, 2021 3:13 pm Is there a tool to convert to wav?
This one, for example: https://tsx.eslamejor.com/files/tzx2wav.zip

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 3:16 pm
by jca

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 3:32 pm
by jca
After thinking some I guess you do not have anything to do in the menu but type CLOAD and once the file is loaded RUN.
Is this the correct way to do it?

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 3:50 pm
by Hodor
jca wrote: Thu Apr 15, 2021 3:32 pm After thinking some I guess you do not have anything to do in the menu but type CLOAD and once the file is loaded RUN.
Is this the correct way to do it?
You´re right. The very same behavior as the real computer.

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 6:28 pm
by LamerDeluxe
I found a cas2wav utility said to work for the 328, but it only runs under DOS.

Re: Spectravideo SV-328

Posted: Thu Apr 15, 2021 6:33 pm
by jca
LamerDeluxe wrote: Thu Apr 15, 2021 6:28 pm I found a cas2wav utility said to work for the 328, but it only runs under DOS.
AO486 to the rescue.

Re: Spectravideo SV-328

Posted: Fri Apr 16, 2021 4:45 pm
by LamerDeluxe
jca wrote: Thu Apr 15, 2021 6:33 pm
LamerDeluxe wrote: Thu Apr 15, 2021 6:28 pm I found a cas2wav utility said to work for the 328, but it only runs under DOS.
AO486 to the rescue.
That should work, or DOSBox.

Re: Spectravideo SV-328

Posted: Fri Apr 16, 2021 6:42 pm
by jca
Another cool thing would be to run, on the Linux side, a CAS player outputing into an audio dongle looping back into the ADC. Self contained and not using too much storage space

Re: Spectravideo SV-328

Posted: Fri Apr 16, 2021 9:31 pm
by LamerDeluxe
jca wrote: Fri Apr 16, 2021 6:42 pm Another cool thing would be to run, on the Linux side, a CAS player outputing into an audio dongle looping back into the ADC. Self contained and not using too much storage space
Now that would be a really fun solution :lol:

Re: Spectravideo SV-328

Posted: Sat Apr 17, 2021 12:29 pm
by LamerDeluxe
I've tested the cas 2 wav converter, that I posted here, with DOSBox and it works. You need to add the attached file to the same folder you are running this from. I'm using AmpShell to easily add a folder as the C drive.

Most of the commercial games that you load with CLOAD (which loads software written in basic) load a small loader at first. So pause the wav audio as soon as 'ok' is displayed. Then enter 'run' and start the wav playback again. If you get an error, just try the whole procedure again.

Other games load with BLOAD (binary, games written in assembly) like this: bload"NINJA",r

Where 'ninja' is the game name and should be in caps. If you don't know the correct name, just use whatever name when loading and a 'skipping' message will appear with the correct name to load. Then use the bload command with that name.

It was fun to use the ADC adapter to load a game.

Re: Spectravideo SV-328

Posted: Sat Apr 17, 2021 10:28 pm
by pgimeno
Here's a converter in Python, it even runs in MiSTer's Linux:

http://www.formauri.es/personal/pgimeno ... cas2wav.py

Usage: python svi_cas2wav.py input_file.cas output_file.wav

If using '-' as input file name, standard input is used instead. If using '-' as output file name, standard output is used instead.

Edit (Apr 21): Updated to fix issues with a few .cas files.

Re: Spectravideo SV-328

Posted: Sun Apr 18, 2021 1:31 am
by MiSTer_Kirk
Blimey!! Didn't see this. A Spectravideo SV-328 core.
Always wanted one of these, but they go for silly money on ebay. And now we have it on Mister, even better.
Tried Hero, International Karate, and the Hyper Sports games, didn't realise if the core had locked or not - it was the slow tape loading taking much longer than expected to load.

Re: Spectravideo SV-328

Posted: Sun Apr 25, 2021 11:05 am
by fpganoob
25/04/2021 Version:

Tape Load:
- Audio In
- CAS from OSD : First load CAS file on OSD and then exec command on SVI (cload, bload, ...). MAX 256KB.

Please Test and Report!!! :D

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 1:53 pm
by breiztiger
hi
very good work !!!
can we have tape sound please ?
thanks in advance

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 2:10 pm
by ron
For tape sound , from basic prompt type:

SOUND ON

That's all.
Regards

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 2:13 pm
by breiztiger
ok cool
is that right also on real computer ?

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 4:59 pm
by ron
breiztiger wrote: Tue Apr 27, 2021 2:13 pm ok cool
is that right also on real computer ?
From SVI 300 Series Computer Quick Reference Card
SOUND [ON] [OFF]
To turn sound of the cassette audio on or off.

From SVI328 Basic Reference Manual (Page 247)
To write value directly to the register of PSG.

rampa said it does not work on real SVI :shock:

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 6:53 pm
by LamerDeluxe
I tested .cas files with some BLOAD games and it works perfectly. Of course you won't know how far along loading is, but it only takes a few minutes.

I also tried it with some games that do multi-load. You load them with CLOAD, then type run, this starts a loader that loads the rest of the game. This doesn't seem to work. It does work with ADC, but you have to quickly stop the audio when the first load ends.

Does the virtual tape get stopped when loading ends? Does it work correctly when loading the next part from tape? I tried this with Zaxxon, which I think has been converted from another system.

I also had an instance where I changed the .cas file, but had to rewind it for it to load.

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 8:29 pm
by fpganoob
Multiblock Cas works.
With the ADC load you have to stop the audio manually, but on the Cas load, the cas file "stops" automatically, and too starts again alone.
So you just have to cload the first block, and then run...

What happens when you try to load zaxxon cas?
Have you tested the same Zaxxon by adc?

Yes, until i release a new version, better you rewind after load cas.

Re: Spectravideo SV-328

Posted: Tue Apr 27, 2021 10:38 pm
by LamerDeluxe
fpganoob wrote: Tue Apr 27, 2021 8:29 pm What happens when you try to load zaxxon cas?
Have you tested the same Zaxxon by adc?
It doesn't seem to load the next part. Maybe I should leave it loading for a an even longer time. I should check one against the duration of a wav version.

Re: Spectravideo SV-328

Posted: Wed Apr 28, 2021 4:53 am
by fpganoob
Hummm...
Maybe the Cas is broken.
Check that CAS is Right :
- Test that CAS on Emulator.
- Try to load a Wav coming from that CAS (or directly the CAS if you have how to do it) by ADC.

Re: Spectravideo SV-328

Posted: Wed Apr 28, 2021 7:43 am
by LamerDeluxe
fpganoob wrote: Wed Apr 28, 2021 4:53 am Hummm...
Maybe the Cas is broken.
Check that CAS is Right :
- Test that CAS on Emulator.
- Try to load a Wav coming from that CAS (or directly the CAS if you have how to do it) by ADC.
That could be, I will test some more, thanks!

Re: Spectravideo SV-328

Posted: Sat May 01, 2021 12:04 pm
by fpganoob
Later version build the same April 25 :

Changelog :
// - Rewind on CAS load or Reset
// - LED_Disk on Tape Load

Re: Spectravideo SV-328

Posted: Sat May 01, 2021 11:24 pm
by pgimeno
I'm having the same problem with Zaxxon. With OpenMSX the .CAS file works, but with this core it doesn't. (OpenMSX added SVI CAS support very recently, in fact as the result of me writing the converter; you need to compile from source if you want to use it).

I've noticed that after finishing loading, there are remaining bytes before the next header starts. Could that be an issue?

Would it be possible to output the .CAS to audio as it loads, similar to the Tape Sound option of the Spectrum core? That would give hints as to what may be going wrong. It would also be useful to know that the CAS has finished, instead of having to wait an indeterminate amount of time.

Re: Spectravideo SV-328

Posted: Sun May 02, 2021 7:59 am
by fpganoob
pgimeno wrote: Sat May 01, 2021 11:24 pm I've noticed that after finishing loading, there are remaining bytes before the next header starts. Could that be an issue?
Sure, must be only 0x00(1Byte) between end block and the next header starts.
https://wiki.kasettilamerit.fi/wiki/ind ... ectravideo
pgimeno wrote: Sat May 01, 2021 11:24 pm Would it be possible to output the .CAS to audio as it loads, similar to the Tape Sound option of the Spectrum core? That would give hints as to what may be going wrong.
Sure, Basic supports "sound on".

Re: Spectravideo SV-328

Posted: Sun May 02, 2021 4:39 pm
by pgimeno
fpganoob wrote: Sun May 02, 2021 7:59 am Sure, must be only 0x00(1Byte) between end block and the next header starts.
https://wiki.kasettilamerit.fi/wiki/ind ... ectravideo
That link does not provide the format of a .CAS file, it only contains the encoding of data on tape. Many, if not most, of the existing .CAS files contain extra data between the end of a block and the start of the next block. The block separator in a .CAS is 16 times 0x55 + 0x7F, a 17-byte identifier; when it occurs, my converter to WAV generates a silence followed by 200 times 0x55 to serve as a sync signal, then a 0x7F (all in raw mode, no stop bits). I tested about half the TOSEC collection with that before I considered it robust enough.

MSX .CAS files have a similar layout, except that they use 8 fixed random-ish bytes that have to be aligned to an 8-byte boundary, therefore it's almost guaranteed that spaces will happen.
fpganoob wrote: Sun May 02, 2021 7:59 am Sure, Basic supports "sound on".
Thanks, it's pretty clear what the issue is now.

Re: Spectravideo SV-328

Posted: Sun May 02, 2021 5:38 pm
by fpganoob
pgimeno wrote: Sun May 02, 2021 4:39 pm
fpganoob wrote: Sun May 02, 2021 7:59 am Sure, must be only 0x00(1Byte) between end block and the next header starts.
https://wiki.kasettilamerit.fi/wiki/ind ... ectravideo
That link does not provide the format of a .CAS file, it only contains the encoding of data on tape. Many, if not most, of the existing .CAS files contain extra data between the end of a block and the start of the next block. The block separator in a .CAS is 16 times 0x55 + 0x7F, a 17-byte identifier; when it occurs, my converter to WAV generates a silence followed by 200 times 0x55 to serve as a sync signal, then a 0x7F (all in raw mode, no stop bits). I tested about half the TOSEC collection with that before I considered it robust enough.
That's the info i've used.
Where is the specification of SVI CAS files? Which info is coded in the extra data between blocks? Why those cas has that extra data?
I dont like the idea of detect a header just by 16 X 0x55. What happens if a file has these bytes and is not a header? by now i like more the STOP flag, (motor off and Byte 0x00), bytes after that must be the header.

Re: Spectravideo SV-328

Posted: Sun May 02, 2021 9:15 pm
by pgimeno
fpganoob wrote: Sun May 02, 2021 5:38 pm That's the info i've used.
Where is the specification of SVI CAS files? Which info is coded in the extra data between blocks? Why those cas has that extra data?
I dont like the idea of detect a header just by 16 X 0x55. What happens if a file has these bytes and is not a header? by now i like more the STOP flag, (motor off and Byte 0x00), bytes after that must be the header.
I don't know of any specification of SVI CAS files; I reverse engineered them from the files themselves. I know that the MSX CAS files follow almost the same pattern, except they changed the header bytes to something less likely to appear in a file: 1F A6 DE BA CC 13 7D 74 and added the restriction that it needs to start in a position multiple of 8. Still, files with that byte sequence can't be encoded in MSX CAS files. Like with the SVI, it's just a flaw in the file format design.

Note the header is the 16 X 0x55 plus the single byte 0x7F, which must also be encoded in raw form (no start bit) and therefore not a data byte. That additional byte makes it less likely to appear by chance in a file.

Most of the time the extra data are zeros, and I suspect it's noise due to deficient filtering during the conversion from audio to CAS.

Some files that work in the core, also have additional zeros before the next header. Alien 8 has 10 and they are audible at the beginning of the loading of the next block. Maybe Zaxxon just has too many? It has 22 zeros. It comes from the Spectravideo TOSEC collection at archive.org.

Edit: Indeed, Zaxxon works when removing the extra zeros with this simple Python program:

Code: Select all

import sys
python3 = sys.version_info.major >= 3
read = sys.stdin.read if not python3 else sys.stdin.buffer.read
write = sys.stdout.write if not python3 else sys.stdout.buffer.write
data = bytearray(read())
data[0xA8:0xB4] = b''
write(data)
Usage: python fixZaxxon.py < "Zaxxon (1982)(Coleco)[h Buggy Software][CLOAD + RUN].cas" > ZaxxonFixed.cas

Re: Spectravideo SV-328

Posted: Mon May 03, 2021 2:23 pm
by kathleen
Thank you @pgimeno,

Just tried on my side and Zaxxon, after having it fixed with your python code, works like a charm ! Brillant !