basil the great mouse detective

edited April 2004 in MIA/STP/SDP
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 ]
Post edited by ladderman on

Comments

  • edited March 2004
    Hi,

    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
  • edited March 2004
    Hi Colin,

    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
  • GOCGOC
    edited March 2004
    Err, Andy, seeing as how you have the CSWs for Mask and Basil, do you think you could mail them to me too or show me a link :) ? I'd really appreciate it.

    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.
  • edited March 2004
    Don't worry, a TZX is on its way, it will be in the next TZXVault update...
  • edited March 2004
    However there might be a problem with the TZXs of Basil (and Mask too :o) - the
    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 ]
  • edited March 2004
    On 2004-03-28 22:32, Mikie wrote:
    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.

    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 :)
  • edited March 2004
    The TZX documentation says:

    "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)
    Given that the EAR bit on port $FE can be either 0 or 1, how *should* we be emulating it? Sorry, but all we *can* do is flip - there's no way we can do anything else, AFAICS.
    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.
  • edited March 2004
    On 2004-03-28 23:57, Mikie wrote:
    The TZX documentation says:

    [Snip]

    Thus the emulator may include an option whether 'low' on EAR is 0 or 1 :o)
    Aye, for the purists among us who have to have it just so - I might point out however (as woody has done) that the only *real* way to get it done right is to load from a WAV :)
    True and I have never said you can do anything else.
    Actually, I'm not having a "go" - it's just that your post brings up an interesting point. The TZX format is undergoing (or should be, but isn't, and if it does will probably get ignored by all bar one emulator, and it's not SPIN) changes which make it more flexible. Figuring out how we can get level information into the blocks without breaking it for older emus will be quite a challenge, and one that may need to be addressed.

    D.
  • edited March 2004
    I have made some experiments with this 'sensitive' TZX (Basil). I have double checked that it's done correctly, so that if an emulator implements the TZX EXACTLY by the rules it must load.
    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 ]
  • edited March 2004
    Very interesting !!!.

    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
  • edited March 2004
    I'd vote for not messing with the TZX file concerning the polarity. It should capture (to some precision) the tape content right?
    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)
  • edited March 2004
    On 2004-03-29 03:07, Mikie wrote:
    I have made some experiments with this 'sensitive' TZX (Basil).

    SPIN 4.1 - even the first block doesn't load

    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.
  • edited March 2004
    Remember Dunny, we are not talking about the old TZX available here at WOS, but about the new one that is going to be in the next TZXVault update...
  • edited March 2004
    If that's any different to the TZX I just downloaded from the Vault, then could you please send me a copy to test?

    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.
  • edited March 2004
    Maybe someone can post a url for new tzx and snapshot for testing....

    Otherwise, an e-mail to jsn at spectaculator d ot c o m, would be okay :)

    Cheers,

    Jon.

  • edited March 2004
    Would a block with a single pulse of length 0 be suitable as a polarity changing block? An emulator would have to make the next pulse the same polarity as the previous 'real' pulse.
  • edited March 2004
    We don't need any block for changing polarity. All we need is the information whether the 'low' is 0 or 1 on EAR, which I think is better to leave to an emulator rather then incoroprate this informatin into the TZX.
  • edited March 2004
    Yep, I agree with Mikie, we don't really want to add extra blocks that in effect will alter the original source if you ever wanted to transfer back to tape.

    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
  • edited March 2004
    FWIW, I'm very uncomfortable with all this polarity malarky ;)

    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 ]
  • edited March 2004
    SPIN 0.5 loads *both* tapes - from the TZX vault (current version, $11 blocks) and the version Mikie's done for us, with the Pure Tone/Pulses/Pure Data block.

    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.
  • edited March 2004
    Hmm.. I seem to remember looking at the patent for the ear circuit (which Geoff pointed me to).

    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.
  • edited March 2004
    Google for "Schmitt Trigger" :)
  • edited March 2004
    Okay, a couple of changes to the source to comply (oops) with the TZX spec:
    - 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.
  • edited April 2004
    Not sure the labels are right in that new TZX file.

    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 ]
  • edited April 2004
    OK, my fault, I wasn't playing it long enough to find out the labels, so I was assuming you start on level 1. Apparently the first one is level 0 (strange), so Andy please edit the labels.
Sign In or Register to comment.