Changing the way SCREEN$ is loaded

edited October 2008 in Sinclair Miscellaneous
The way the speccy loads in a SCREEN$ is interesting - top two-thirds first, then middle and finally the bottom, which is due to the way the speccy display is laid out no doubt.

I was wondering... is it technically possible that one may write a SAVEr and a corresponding LOADer so that the bytes making up the display file are saved in such a manner that when you load them in the display file is filled in line by line from top to bottom. Or column by column or variations thereof?

Don't tell me it's already been done! I'd like to see it!
Post edited by Arjun on
«1

Comments

  • jpjp
    edited October 2008
    Multiload springs to mind, but there are many, many more.
  • edited October 2008
    Arjun wrote: »
    The way the speccy loads in a SCREEN$ is interesting - top two-thirds first, then middle and finally the bottom, which is due to the way the speccy display is laid out no doubt.

    I was wondering... is it technically possible that one may write a SAVEr and a corresponding LOADer so that the bytes making up the display file are saved in such a manner that when you load them in the display file is filled in line by line from top to bottom. Or column by column or variations thereof?

    Just copy the ROM-loader and saver and alter the INC to whatever way you want it (Most easy is bottom-up, so make it a DEC)

    but the easiest way is to use MULTILOAD as mentioned above
    (but not as much fun as doing it yourself)

    Don't tell me it's already been done! I'd like to see it!

    You can see it with Multiload
  • edited October 2008
    I seem to recall Shadowfire having a custom loader that puts the screen up in an unusual order.
  • LCDLCD
    edited October 2008
    FancyLoad from SM-1 Multiface suite by Kobrahsoft which I have uploaded, but you need a Multiface for it:
    http://www.worldofspectrum.org/infoseek.cgi?regexp=^SM1+Multiface+Suite$&pub=^Kobrahsoft$
    can do it too (You can set the order of columns, it has generally more possibilitys than Multiload), but I have problems OCRing the instruction. Not only it is poorly printed with a 9-pin printer, but it is also printed wry.
    Maybe I can include some fancy loading setups in my Retro-X later.
  • edited October 2008
    Arjun wrote: »
    is it technically possible that one may write a SAVEr and a corresponding LOADer so that the bytes making up the display file are saved in such a manner that when you load them in the display file is filled in line by line from top to bottom.

    Since the screen$ loading is just like any other loading, i.e. placing bytes from tape into memory locations, it can be done any way you like. The default way is to load the bytes in order, that is from 16384 and forward, but since the strang way the memory is mapped onto the screen you will have the effect you describe (top third first and so on).

    The trick is to write a new saver that will save the screen bytes in a non-linear order (memory-wise) but that maps to the bytes actual location on the screen. After that you will have to write a loader that will understand that the bytes loaded from tape should be placed in these different non-default order in memory.

    I think there is some good tutorials in old Sinclair Users articles called Hewson Helpline on how to write such a custom loader.
  • edited October 2008
    Here is a disassembly of the default ROM loader, perhaps it will give any hints:

    http://www.worldofspectrum.org/ldbytes.html

    However, I seem to remember some good articles in the SU mentioned above, I shall see if I can find them.
  • edited October 2008
    Rickard wrote: »
    The trick is to write a new saver that will save the screen bytes in a non-linear order (memory-wise) but that maps to the bytes actual location on the screen. After that you will have to write a loader that will understand that the bytes loaded from tape should be placed in these different non-default order in memory.

    Yep. That's what I meant!
    jp wrote: »
    Multiload springs to mind, but there are many, many more.

    Sounds promising. Will give it a try. The manual for Multiload doesn't make it clear as to whether the attributes are finally loaded in this way or that the "filling-in" itself is done in myriad ways. It's the latter I'm interested in, really.
    Rickard wrote: »
    Here is a disassembly of the default ROM loader, perhaps it will give any hints:

    http://www.worldofspectrum.org/ldbytes.html

    Didn't realise it was available on WoS! So then, writing your own SAVE/LOAD routine is a matter of taking the above and changing it to your needs eh? Nice!
  • edited October 2008
    Arjun wrote: »
    So then, writing your own SAVE/LOAD routine is a matter of taking the above and changing it to your needs eh? Nice!

    That is most likely the easiest way to do it. You could also quite easy (if I remember correctly) change the border colours when loading from the usual blue and yellow to something more cool like black and blue, or perhaps black-black, which most often looks best with a nice loading screen I think.
  • edited October 2008
    Is it possible to have random* attributes filled when loading a screen?

    *Or pre-arranged-seemingly-random attributes (i.e. it would always be the same "random" attributes each time it's loaded).
  • jpjp
    edited October 2008
    I'm sure 'piters' had done something to that effect, and posted here, with the Everyone's a Wally screen. Can't quite find the post about now though.
  • edited October 2008
    ZnorXman wrote: »
    Is it possible to have random* attributes filled when loading a screen?

    *Or pre-arranged-seemingly-random attributes (i.e. it would always be the same "random" attributes each time it's loaded).

    Yep, just define a table with the filling.
  • edited October 2008
    I seem to remember there was a game which loaded the screen in an everdecreasing circle.
    I wanna tell you a story 'bout a woman I know...
  • edited October 2008
    I may still have the sources for one of my loaders where the screen was saved/reloaded in whatever order you selected by "colouring in" the screen in the required pattern :p
  • edited October 2008
    Many Alcatraz loader games were lazy and just used to fill the screen line by line in this way even though they had the ability to do any pattern.

    There was an Alcatraz style loader published in Program Pitstop at one point, but it just filled character squares from the top at a time where Alcatraz could fill one character square from the top or bottom or a line of character squares from top to bottom. There may have been other options too.

    Has anybody ever hacked the screen loader from Alcatraz Loader and made a utility to make your own?
  • edited October 2008
    Woody wrote: »
    I may still have the sources for one of my loaders where the screen was saved/reloaded in whatever order you selected by "colouring in" the screen in the required pattern :p

    When I saw Arjun's post I immediately thought "I can't believe he missed Woody's crazy screen loaders!"
  • jpjp
    edited October 2008
    mulder wrote: »
    Many Alcatraz loader games were lazy and just used to fill the screen line by line in this way even though they had the ability to do any pattern.

    There was an Alcatraz style loader published in Program Pitstop at one point, but it just filled character squares from the top at a time where Alcatraz could fill one character square from the top or bottom or a line of character squares from top to bottom. There may have been other options too.

    Has anybody ever hacked the screen loader from Alcatraz Loader and made a utility to make your own?

    There are Alkatraz mastering routines here and here
  • edited October 2008
    jp wrote: »
    There are Alkatraz mastering routines here and here

    Ah, brilliant, missed these! Thanks :)

    Now, any idea how to use them? I can't get anything to load in Spin it seems. The disks seem different to the carts. Trying to load the utils 2.50.mdr always results in file not found after getting the 'run' program going.
  • edited October 2008
    zxbruno wrote: »
    When I saw Arjun's post I immediately thought "I can't believe he missed Woody's crazy screen loaders!"

    I did indeed. But then again, I was specifically talking about the "pixel filling" in of the display file in a specific order rather than the attributes being filled in. Multi-load does the latter.
  • jpjp
    edited October 2008
    mulder wrote: »
    Ah, brilliant, missed these! Thanks :)

    Now, any idea how to use them? I can't get anything to load in Spin it seems. The disks seem different to the carts. Trying to load the utils 2.50.mdr always results in file not found after getting the 'run' program going.

    Yup, the 2.50 mdr is slightly stuffed - the "run code" file looks to be fecked, but I think the rest of the files are good. Check out the "Alkatraz Utils.mdr" this seems to "RUN" with no problems - I'm not completely sure how to drive the whole package though. There is also a really unique assembler amongst this bunch of images, very microdrive friendly and looks to be a fairly slick 'custom' job.
  • edited October 2008
    Fighting Warrior and Fairlight (maybe Fairlight II) used fancy screen loaders. Also don't forget Technician Ted!
  • edited October 2008
    MrCheese wrote: »
    Fighting Warrior and Fairlight (maybe Fairlight II) used fancy screen loaders.

    Two other very good is Xevious (very fancy!) and Auf Wiedersehen Monty (on 128k models the screen is drawn with three colours per 8x8bit square!)
  • edited October 2008
    Slightly off topic, but I didn't really want to start a whole new thread for such a (hopefully) simple question...

    Whenever I try to turn the volume down in Screen$, it just sets itself back to the default volume straight away. Anyone know what I'm doing wrong?
  • edited October 2008
    GreenCard wrote: »
    Slightly off topic, but I didn't really want to start a whole new thread for such a (hopefully) simple question...

    Whenever I try to turn the volume down in Screen$, it just sets itself back to the default volume straight away. Anyone know what I'm doing wrong?

    It's a known bug.

    D.
  • edited October 2008
    Dunny wrote: »
    It's a known bug.

    D.

    Tch... Sort it out, then!! :roll: ;-)
  • edited October 2008
    Arjun wrote: »
    I did indeed. But then again, I was specifically talking about the "pixel filling" in of the display file in a specific order rather than the attributes being filled in. Multi-load does the latter.

    Heh, some of my loaders are doing both pixel filling, then attribute filling :p
  • edited October 2008
    Rickard wrote: »
    Auf Wiedersehen Monty (on 128k models the screen is drawn with three colours per 8x8bit square!)

    You don't say :-) So where did they get the extra half bit then ?
  • edited October 2008
    Tom-Cat wrote: »
    You don't say :-) So where did they get the extra half bit then ?

    I do not follow you! Which extra half bit?
  • edited October 2008
    Rickard wrote: »
    I do not follow you! Which extra half bit?

    Was joking :-) ... since it is really hard to display 3 colours per 8x8 square ...
    The effect is really only to change the video page on a certain line... the other video page could have something more interesting than just 15 colour pattern though, and you would actullay be able to see 4 colours per 8x8 square ;-)
Sign In or Register to comment.