Changing the way SCREEN$ is loaded
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!
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
Comments
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)
You can see it with Multiload
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.
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.
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.
Yep. That's what I meant!
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.
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!
Bytes:Chuntey - Spectrum tech blog.
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.
*Or pre-arranged-seemingly-random attributes (i.e. it would always be the same "random" attributes each time it's loaded).
http://retrospec.sgn.net/users/tomcat/yu/ZX/Cracks/MindTrap.zip
and here is thread abuot this routine:
http://www.worldofspectrum.org/forums/showthread.php?p=146069#post146069
http://zx-pk.ru/
Yep, just define a table with the filling.
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?
When I saw Arjun's post I immediately thought "I can't believe he missed Woody's crazy screen loaders!"
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.
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.
Bytes:Chuntey - Spectrum tech blog.
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.
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!)
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.
Tch... Sort it out, then!! :roll: ;-)
http://www.worldofspectrum.org/forums/showthread.php?t=3963
http://www.worldofspectrum.org/forums/showthread.php?t=2654
Heh, some of my loaders are doing both pixel filling, then attribute filling :p
You don't say :-) So where did they get the extra half bit then ?
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 ;-)