Login
Back to forumSee the full topicGo to last reply

Posted By

TLC
on 2010-12-11
11:14:26
 Re: Vertical splitting

Tailored something together today; you can find the pieces here: http://coroners.no-ip.hu/split . I hope 1.) the download works (tell me if it's broken, will work out something), 2.) it helps somehow.

The stuff has been coded in monitor, so there's no source file.

How does it work?...

1.) IRQ would fire somewhere before the first badlines.
2.) timing is stabilized.
3.) Wait until the first and second badlines go down. (That's mandatory -- else, there'd be no valid screen + color data).
4.) load 7 to X
5.) Some cycles before the character area of line #5, write ((X and 7) or $18) to $ff06.
6.) Wait
7.) Somewhere on the line (so that the write to $ff06 would happen before character #25 of the line), write ((X and 7) or $38) to $ff06.
8.) wait some, so that from 5.) to 9.) take exactly 65 cycles
9.) inx, if X is less than a reasonable value, go to 5.). (Reasonable value = number of lines to go - 7)
10.) cleanup; goodbye

It should be possible to optimize the process; however, the basic principle seems to work.

I didn't read and use $ff1d in this example; I chose to use a counter + a suitable start valueinstead, and incremented that counter with each scanlines. It should be equally possible to base something similar on $ff1d.

All in all, the only important point in this experiment is, that if you a.) use some suitable value for the low bits of $ff06, which is constantly offset from $ff1d's value by 2 or more -- , b.) set textmode some cycles before the character area would start, using the value of "a.)" as bits 0..2 of your value to be written to $ff06, c.) set bitmap mode at your position of the screen using the above value for bits 0..2 , then it should just work. As the value used here is constantly offset from $ff1d, no badlines would occur until the effect is stopped.

(Now, thinking over when I'm writing this comment, b.) is possibly unneccessary ie. the value which is used to set character mode might possibly just be constant, with no neccessary fiddling with its low 3 bits; but I haven't tried that).

HTH...





Back to top


Copyright © Plus/4 World Team, 2001-2024