-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TZX tape format support #58
Comments
Hmm txz read support sounds amazing. In the other issue you mentioned something about tzx write support. What did you mean about that? |
Having had a brief look, writing this format on the fly would be very involved... I mentioned it previously as the emulator doesn't really have a way to save to tape... the way the audio output is handled I doubt it is stable enough to be read back. I'm terms of reading tzx, I'll have a read through the spec and have a think about it. If I build a framework for it, I could implement one block type at a go. |
In my opinion, If it takes too much of the system, just reading from tzx or tap files should be enough. After all this format is meant for PC in general... right? (for archiving the old tapes) |
I'v just noticed that you've made the first steps into adding TZX support: the selecting part of the process and some header identification. It's looking nice and clean. I've been off the last couple of days, busy with some tapes... dumping, editing, converting. Found about 14 tapes in a local antiques shop that are still waiting to be checked out. |
Yes, just starting. TZX looks like it has quite a lot to it. I am trying to dream up a way to keep the code small and still support lots of the differnt options... I hope you find some gems in your new tape collection! |
Until now I found at least 4 important not dumped programs/games and a few modified games from the Europe's Eastern Block 90's period (the old unregulated days). I made a pause for now, as I've been tinkering to fix the 'go into protection blinking red light mode' of the Sony stereo system I've been using to dump the tapes. I've been meaning to fix it for a while now (at least 5 years) but since it did not happen once while dumping tapes I just left it as it were. While searching for information on some dumps I did manage to find some new possible additions for the collection, as in programs and games, dumped as tzx from Italian magazines. I'm not fluent in Italian but I now enough to understand them games. |
The TZX format does not seem to have been written with memory constraints in mind for decoding. The blocks in the 2X range seem to want to be able hop backwards and forwards through the file structure. The blocks in the 1X range look more achievable in the little memory left to work in... but I don't know what percentage of TZX that would give access to. |
Just a quick update. I've finally got a framework which I hope will be good enough to add the various block type decoders to. Currently, it just reads block type 10 (the standard timings) but it works nice and efficiently. I'm not sure how I am going to get test tzx files to try out the other block types as I implement them. Is this something you know about or could help with? |
Hello! Been busy these days and finished parsing those tapes. |
Thanks for the links and glad you still fancy helping. If I suggest a block type I am going to try and implement would you be able to make a tzx containing that block type? The idea would be something not copyrighted and obvious as to whether it had loaded correctly; in most cases a screen save would be ideal. I could then add these to the project as a test set (or you could directly pull-request them into a test folder). It would be really good to have these with the project so I can tell if future bug 'fixes' have broken something. I've already implemented block type 10, and will look at 11 next (the turbo loader block). I've not published any binaries yet, but if you are interested in trying any of it directly let me know and I will start pushing updates to https://github.com/fruit-bat/pico-zxspectrum/tree/feature/tzx Some of the more esoteric block types may need some thought as to what makes a good test for them... but we could worry about that later - I only get the odd hour here and there to write this stuff anyhow! |
Another good place to get tzx files with turbo blocks that can be downloaded for free would be itch.io. I'd have to dig for some files with turbo blocks though. As an alternative, I would be willing to insert myself into the Z80 assembler in order to build at least a screen that can be loaded as a turbo block. Reverse engineering an already available tzx with turbo blocks would be the way I would go. As for testing, let me just build a test tzx first and then we can proceed to the testing phase. |
Excellent... and I now have prototype Block 11 code ready to test :-) |
So: Then I found this free piece of code from mcleoud-ideafix |
Fantastic, and I love the image. Helped me sort out a handful of silly mistakes. Block type 11 now working :-) The following block types now have prototype code for them: ID 12 - Pure Tone If you can come up with some tests for those that would be great. |
Unfortunately, after searching far and wide I could not find some info on how to test those blocks... I'll still search a way but in the meanwhile have a look at this. |
And since the last comment, I found someone with some info on those blocks. Back in the days there was some company in the region that used a block like the above as a sort of protection from copying those tapes. Will investigate further. |
Thanks for investigating. I have been using playtzx.c as a reference. It needs far too much memory to use directly but is a handy guide for at least most of the block types. |
Sorry to say, things are on hold for a while. |
Very sorry about your dad. I never know what to say at such times but for what it is worth I send my best wishes. Also, will be very glad to have you back on the project when circumstances allow. |
There is now an alpha release: I'm proud of the 'Generalized data block', which was quite tricky implement. It has some notable omissions:
Also, most of the 'information' blocks are just skipped. |
Hello again. |
Good to have you back. The idea for the pure tone test sounds interesting. You have some good contacts! |
Well... I'm working on many angles right now... ever since I got into finding and dumping these tapes, I've tried to keep ahead but things are catching up. You know your project was the starter for this, right?! Thanks by the way! I found some new tapes along the way, with old software that can't be found anywhere else. Also it's a very nice way to remind me about my dad. He bought me my first Home Computer back in 1993. Also he loved to learn about history. I got the computer bug ever since back then and now it's mixed in with his history bug. |
Tested a couple of games with the alpha build.
I had some problems with |
New binary available with support for the TZX 'Select' block. This block is used for selecting 48k/128k or trainer/normal loads. P.S. The uf2 still sends lots of debug to the serial port, which may slow it down a bit. |
Hy.. |
I've been really struggling to work out why some of the pure tone blocks are not recognized. I wondered if they were down to CPU cycles being miss counted so I have tried a new CPU implementation. I prefer this one as it can be kept separate from the emulator source. It comes with it's own test suite and is being looked after by its author - great! ...but on the down site it made no difference to the tape loading issues (grr)... will keep trying :-) |
I've been off for a few days, I found new tapes, had to repair some electronics that got all my time, instructed a friend (with a huge collection of all sorts) on how to dump from cassette to PC, I'm also working on sorting the dumps I already made... busy days and I feel exhausted... I'm not off your project yet... just distracted with other stuff for now. When there's another bin file, I'll dig into it and test things out. I still have to find a working (affordable) ZX Spectrum to test with PlayTZX, but for now, for the dumping process, I found an 5,25 floppy drive. Don't know if it works yet. |
Need to decide the scope and feasibility of this issue.
The text was updated successfully, but these errors were encountered: