basil the great mouse detective
hello
i have a small problem with this game.when i have completed level 1,spectaculator 6.0 tries to find level 2.it find it,but it does not load it.i am using the file from the TZX vault(non erbe).does anyone else have this problem?.hope somebody can help.thank you.
colin
[ This Message was edited by: ladderman on 2004-03-24 19:22 ]
i have a small problem with this game.when i have completed level 1,spectaculator 6.0 tries to find level 2.it find it,but it does not load it.i am using the file from the TZX vault(non erbe).does anyone else have this problem?.hope somebody can help.thank you.
colin
[ This Message was edited by: ladderman on 2004-03-24 19:22 ]
Post edited by ladderman on
Comments
Basil and Mask use a strange custom loader that we're currently looking into. I wasn't able to fully playtest the TZX all the way through. Actually, I have more than one TZX of the said game so perhaps you may like to play test them ? The on in my old archive doesn't seem to match the Vaults, so we have at least one other TZX to try out.
Any chance of a snapshot so I can load level 2 and see what's up ?
Meanwhile you can download a CSW or WAV from my 'schemes' page, hopefully we'll get these TZXs correct at some point soon.
Cheers
Andy Barker
Steve forwaded me your snapshot (SZX) and I tested a few TZXs I had. Unfortunately I see what you mean by them not loading which means it's probably best we pull Basil and Mask for now. However, it worked fine from CSW and WAVs I tried so we just need to figure out how to store these tapes.
Our friend Mikie from the Czech Republic has helped us enormously with some other loaders and I believe he's looking at this loader at the moment. It may make the next update if he's able to figure out how to decode them :)
Thanks for your report. Meanwhile you could always use the CSW. I know CSWs/WAVs etc are a bit cumbersome to play with if they're multiloaders, but it's better than nowt for now ;)
Regards
Andy
If you can spare the time, I'll PM you with the required address (my old one is for messages <1MB). As long as they don't exceed 3MB in total, they should fit.
Thanks in advance, whatever the reply.
loader is designed so badly (apparently some stupid didn't get the concept of the edge triggered signal decoding), that it depends on the polarity of the
signal whether the game loads or not. Both TZXs loads fine into the real machine if
you convert them to WAV with the right polarity (you may have to use
Invert in CoolEdit), but may not load into an emulator. This is not an issue of the TZX but rather of the emulators (how they emulate the tape recorder output).
The original ROM routines are not sensitive to the polarity of the
signal and the custom loaders should be NOT. Thus the emulators (I think) emulate the tape output by flipping the respective bit rather than setting it to an absolute value - which is technically not the exact emulation of the tape but its easier to code and should be sufficient. However this (mis)feature allows to load the Gremlin 2
games into RS (I don't have any other emulators at hand) - if you fiddle with the CTRL+F7/SHIFT+F7 the right way
before each block, you should be able to catch the emulator in the
right polarity state.
One last note - this also applies to the CSW/WAV of the games,
fortunately the CSW is emulated (in RS) such that the polarity is right (for the loader - the first pulse must be LOW) so it loads fine.
Edit: Some of these statements are not entirely substantiated - read on...
[ This Message was edited by: Mikie on 2004-03-29 00:00 ]
Given that the EAR bit on port $FE can be either 0 or 1, how *should* we be emulating it? In a TZX, you can only stream the bits in and flip when you reach an edge. If the TZX block gives you correct initial polarity, then all is well and good, but many blocks don't allow for that.
According to the file format, any TZX block should have the EAR bit set to low when commencing playback - so I assume that anyone creating TZXs should take that into account, rather than emulators attempting to analyse a TZX block for polarity that doesn't exist.
Sorry, but all we *can* do is flip - there's no way we can do anything else, AFAICS.
D.
PS - I could be wrong, but that's my take on it :)
"This document refers to 'high' and 'low' pulse levels. Whether this is implemented as ear=1 and ear=0 respectively or the other way around is not important, as long as it is done consistently."
Thus the emulator may include an option whether 'low' on EAR is 0 or 1 :o) True and I have never said you can do anything else. I have read the TZX documentation again (shame on me for not rememebring it) and it appears that if everything is implemented by the book ("At the end of a 'Pause' block the 'current pulse level' is low. (Note that the first pulse will therefore not immediately produce an edge.)"), everything should load fine. My comment was based solely on observing the behaviour of RS and it seems that it does not implement this 'pause' feature in the right way.
D.
Here are the results (of course I switched off all the loading 'enhancements'):
ZX32 - no chance, I wasn't even able to get the PILOT for the frst (custom) block.
SPIN 4.1 - even the first block doesn't load
Spectaculator 6.1 - the first block loads but the second does not
RealSpectrum with the tape noise Simulation enabled - the first block loads but the second does not
RealSpectrum with the tape noise Simulation disabled (hidden in the ini file) - loads the whole TZX just fine, but ignores the pauses between blocks, so it fails loading the Mask.tzx
WinZ80 - loads the whole TZX just fine
Clearly the winner is WinZ80 :o)
In RS there is a bug - with noise enabled it should still maintain the consistency of the signal with the TZX definition. The behaviour with the noise disabled is even more strange.
Edit: I can e-mail the Basil.tzx to emu authors for testing before the next TZXVault update.
[ This Message was edited by: Mikie on 2004-03-29 13:24 ]
I wonder if there's an existing block that will change the polarity of the next block to be loaded ? Or if we introduced a polarity block or something, would that help ?
Obviously we're only talking about a small amount of TZXs, so if the updated format did have such a block, it would only be these TZXs that would have problems with older emus, and they don't work as it is now, so no loss there (if you see what I mean).
As long as the TZX utilities remember to only change the revision number of the TZX according to which blocks we used then we'll be okay. Most TZXs can be happy as v1.10, but it you used a C64 block for instance it would or should be v1.13. I'm not sure if the current tools use this ? That said, I dunno if the emulators check the version of the TZX file. Suppose anything not recognised is skipped anyway, so we should be okay.
Okay, I'll quit while I'm behind ;))))
Andy
So even this feature of not knowing the actual initial polarity is right - some of the tape decks change polarity so you never know the polarity of the signal with the real tape either. The guys at Sinclair/Nine Tiles were aware of this problem, so they based the design of the tape routines on the edge detection rather then on the level detection.
This is unfortunately not the case of the Gremlin 2 loader. However, since this applies also to the original tape (if your tape deck reverses polarity, you can throw the original tape out of the window), I think we should leave the TZX the way it is.
Better solution would be to have an option in the emulator to change the polarity (it's like switching the tape decks :o)
Ok, I can confirm that the game loads and is playable under SPIN 0.5 - However, this was only possible if I modified the way that some blocks behaved.
Anyhow, can anyone send me a snap of Basil at the end of level one, so I can test that SPIN gets the multiload right?
D.
You were right that the old one didn't load in SPIN - it does now, but I'd need to test the new one if it's any different.
D.
Otherwise, an e-mail to jsn at spectaculator d ot c o m, would be okay :)
Cheers,
Jon.
We're only talking about a small number of TZXs that would require emulator support to get them running. The Spin and Spectaculators teams have done this for +3 disks, so I guess everything should be sweet for them to implement.
I'll get some snaps and tzxs archived up and e-mail them to respective members ;).
GOC, you may wanna check the schemes page for samples that we keep harping on about:
http://newton.sunderland.ac.uk/~specfreak/Schemes/schemes.html
Regards
Andy
I was under the impression the the ULA itself can only recognise edges rather than "high" and "low" levels like a ZX81.
Plus just typing LOAD "" on my 48k with no tape player connected results in the border changing between cyan and red (ie. the ear bit is toggling anyway).
Can't see why the input level would just go 'low' in pauses between blocks on a real tape player. Then again, I'm not a hardware guy ;)
Jon.
_________________
--
Jonathan Needle
Spectaculator Creator
http://www.spectaculator.com/
[ This Message was edited by: jon needle on 2004-03-31 11:05 ]
I had a small problem with the pure tone block running on for an extra pulse that was screwing the new version.
Jon, the low/high thing makes sense - at least to me, it's not the ULA but the port itself that alters according to level coming in. I may be wrong, but that's how I saw tapes themselves, as high being anything sufficiently away from the centre line, low being the opposite. Odd that these tapes didn't like inverted polarity like that.
D.
I thought the description of it said that the circuit effectively detected edges rather than just reporting 0 for low state or 1 for high.
This is what I was getting at really.
I noticed that polarity affected the old basil tzx a while ago. I remember flipping the initial state of the EAR bit to get it to load. I presumed it was a duff TZX. How wrong I was ;)
Jon.
- make ear low after 1ms of pause
- make ear low on play back start
fixes both files :)
On a side note, this also fixes 'La Abadia del Crimen' :D
Might want to check that as well, Dunny. Make sure you're in 128k mode, though (as you'll think it's not working otherwise, like me initially!).
so perhaps this is another loader that wants checking out.
Cheers,
Jon.
Colin's snapshot wants to load 'level 2' from where the tzx label says [level 3]. Where [level 2] is, Basil reckons that's level 1. Does that mean you start on level 0?
It does load it though.
Just checking :)
Jon.
[ This Message was edited by: jon needle on 2004-04-02 10:02 ]