| |
The Phantom
Registered: Jan 2004 Posts: 360 |
Turning screen off/on
Hey all...
Here I am with another perplexing question. Well, for me anyway.
I've been experimenting with code stuffs while having the screen turned off and am impressed with the results.
I was in deep conversation with Elwix last night, talking about this and he thinks it can be done. I myself, could not figure it out. So I'll ask the question, regardless of how it will make me look.
Is it possible to turn off say, HALF the screen while having graphics displayed on the other half?
I'm not looking for code, I just want to know if it is possible, and if you have done it, how difficult it was (if at all).
Thanks for taking the time to read this :D |
|
| |
Mixer
Registered: Apr 2008 Posts: 452 |
Depends on which of the many possible halves you wish to be visible and which not. |
| |
T.M.R Account closed
Registered: Dec 2001 Posts: 749 |
Quoting The PhantomIs it possible to turn off say, HALF the screen while having graphics displayed on the other half?
No, the VIC-II won't let you mix and match like that. |
| |
algorithm
Registered: May 2002 Posts: 705 |
Just fake a blank screen area :-) alternatively you can use a similar method as in removing side borders. Which makes that whole line equivelant to d020. But need to do this every line with precise timing obviously |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Using d011 with a simple raster split won't cut it. Turning off the screen normally is done to remove bad lines and get more performance / more stable timing (as in digi playback). You can semi-turn of the screen by altering $d011 every 7th scan line to prevent bad lines from occur. This is essentially a variant of a trick called FLD. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
You can turn on/off ALL screen area, setting (or clearing) the DEN bit of $D011 during an arbitrary cycle of raster line $30.
This work only for ALL screen area.
As stated by Algorithm, you can do just the opposite of the "open side border" trick, closing it for all screen lenght...
Badlines still where they are.
I suppose that "the thing that amazes you" is the fact that, with screen "turned off", no badlines are active, so you have more (cpu) time to "do things"... |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
inverse of sideborder removing logically shouldnt happen, hence there is side and middle border unit, right? any explanation on it ? trick shoud be done on the left border? |
| |
tlr
Registered: Sep 2003 Posts: 1790 |
Quote: inverse of sideborder removing logically shouldnt happen, hence there is side and middle border unit, right? any explanation on it ? trick shoud be done on the left border?
It's completely logical. Just change the 38/40 column bit so the left side compare to stop rendering the border misses. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Quote: inverse of sideborder removing logically shouldnt happen, hence there is side and middle border unit, right? any explanation on it ? trick shoud be done on the left border?
Vic "turn on" border on cycle 56 and "turn off" border in cycle 17 of the next line.
Doing "the trick" here should keep border closed. |
| |
Perplex
Registered: Feb 2009 Posts: 255 |
Using the trick Jackasser mentioned you can also display a fullscreen hires bitmap image without badlines, though with the limitation that colours will be the same for each row. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting PerplexUsing the trick Jackasser mentioned you can also display a fullscreen hires bitmap image without badlines, though with the limitation that colours will be the same for each row. Hmm, it's different, i think. Jackasser's approach is moving the screen out of the way by setting YSCROLL in $d011 as rarely as possible, which is once for 7 raster lines. But your suggestion is a variant of line-crunching, which is setting $d011 every line, beginning in the last raster line of a char row.
The Phantom: What is it that you want to achieve? Generally Jackasser's suggestion is the easiest way to get rid of badlines in an arbitrary screen area while displaying graphics data in the remainder. There's also a way to turn off all badlines and thus graphics rendering with just a few writes to $d011 once a frame, so you can display sprites without badline interference. |
| |
The Phantom
Registered: Jan 2004 Posts: 360 |
Nice.
I was playing with splits with the screen turned off. What amazed me so much was I was able to get 13 splits per scan line, without the bad line. I made no "real" effort to do this, so I imagine a lot more can be done.
For the last couple weeks, I've been trying to accomplish the same results without turning the screen off, but cannot. I can't get more than 10 splits (per line) with the screen on.
With the help being offered here, I know my efforts won't be for nothing. So keep helping everyone :D
It IS appreciated. Thanks everyone :D |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
so afterall there's just one border drawing mechanism, and side and top/bottm logics to toggle it ? what if with screen off we do an inverse sideborder removal? guess nothing :) |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Horizontal flip/flop works only if DEN bit is set. If you want to open side border in top/bottom border area, you need to "open" also the top/bottom border, otherwise nothing happen. |
| |
algorithm
Registered: May 2002 Posts: 705 |
You can have a full screen non bad line mode with sprites only via the approach of removing top and bottom border only that you would use values such as $03 then $0b. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
I've been meaning to ask the same question, partly prompted by the loading thread over at Release id #139503 : Spindle 2.0
Bashing $d011 at least once every seven lines was the best I could come up with too. |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Quoting ChristopherJam
Bashing $d011 at least once every seven lines was the best I could come up with too.
As algorirhm stated, you can have a bottom/top open border with fullscreen without badlines (and no gfx), but where sprites are allowed, or have a normal screen with same condition clearing DEN bit on line $30 and set it again in $31-33.
You need to fight against cycles used by sprites anyway. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Yes, but I want (eg) 16 rows of chars fetched normally, and the next 191 lines completely free of DMA without having to tickle VIC on a regular basis. Not doable, so far as I'm aware.
Ah well. ldy $d012:lda killtable,y:sta $d011 from time to time when I know I'm free is still better than dealing with 43 cycles ripped from under my feet mid transfer. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
"43 cycles ripped from under my feet mid transfer."
thats the spirit! my precioussssss!! (cycles) :)
|