Date : Mon, 04 Feb 2002 16:01:18 -0000
From : "Richard Gellman" <R.Gellman@...>
Subject: Re: Firetrack
>Does anyone know how Firetrack's scrolling works? I'm trying to fix it in
>B-em (it's jumpy at the moment).
Dont ask.
It works by reprogramming the 6845 at a very fast rate, such that the number
of lines per character is changed, and the total scanline adjust is changed.
This results in the whole screen being moved by a line at a time, without
any physical movement of data. At the same time, the screen address is
reprogrammed to provide wraparound, so that when the screen is scrolled, the
new data automatically appears in the new lines at the top of the screen.
There is also some scanline-based palette switching so that the top and
bottom of the whole screen are blanked off, as these are used for storing
the data for the screen scroll.
The only way to keep track of all this is to actually determine verticall
screen offset on the fly (i.e. as the frame is being drawn).
BeebEm's method of vertical screen offset is to just take the current CRTC
values are perform an evil equation to convert that to number lines to shift
the whole screen. This works for almost everything except Firetrack.
I haven't entirely worked out how to do this, because it involves rewriting
a lot of code, and using the total height generated by the previous frame as
a guide to where the current frame starts, e.g. if frame 2 generates 264
lines, then frame 3 must have line 132 as dead centre. Either that or doing
some devious data re-arrangement at time of writing the screen data to the
PC screen.
Its complicated :)
-- Richard Gellman
<Serious bit>
This email is sent to you as personal communication or to a specific mailing
list ONLY, and does not contain any form of comercial advertsing (spam). By
replying to this email you legally agree that you will honour this in a
similar fashion, and you will not send any commercial email to this email
address, or subscribe this email address to any mailing list without prior
permission. Failure to adhere to this may result in criminal prosecution
under the misuse of information laws applicable in all countries.
<end of serious bit>