| |
mankeli
Registered: Oct 2010 Posts: 127 |
Is "Inverse FLI" possible?
Is it possible to do "Inverse FLI", ie. reset RC=0 on any line, but not trigger the actual badline DMA?
The VIC Article lists some relevant positions:
Quote:In the first phase of cycle 14 of each line, VC is loaded from VCBASE (VCBASE->VC) and VMLI is cleared. If there is a Bad Line Condition in this phase, RC is also reset to zero.
and
Quote:If there is a Bad Line Condition in cycles 12-54, BA is set low and the c-accesses are started.
But I guess there isn't an instruction that allows one to cancel the badline condition after the RC is reset? |
|
| |
Monte Carlos
Registered: Jun 2004 Posts: 355 |
Sounds like FLD to me. |
| |
mankeli
Registered: Oct 2010 Posts: 127 |
It's not FLD, FLD is just letting VIC to go to idle state and manipulating d011 to prevent the badline condition for N lines. This would be closer to the doubled text lines, but instead of letting RC to wrap from 7 to 0, this would reset it to 0 on any line. Just wondering if it's possible. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1402 |
I'm pretty sure it's too late to cancel the badline by then. Adjusting the timing on a simple test program, it goes straight from "reset never happens" to "entire line is fetched" - and only one write is required to cancel the badline condition (which itself can be initially set well in advance of the reset), so there's no scope for trying different timings from different instructions. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
The only way for RC to become 0 is because of a bad line. Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again (u can still change bank, font and screen and you can still choose if you want to fetch new chars pointer FLI, or keep old char pointers and save 40c FPP)
See https://www.linusakesson.net/programming/vic-timing/index.php |
| |
Krill
Registered: Apr 2002 Posts: 2940 |
Mankeli: Is this an academic question, or do you have some effect in mind?
Note that depending on what you want to do, workarounds may exist. Also note that things in bitmap mode sometimes work surprisingly different, and can do some things you cannot do in char mode. |
| |
mankeli
Registered: Oct 2010 Posts: 127 |
Krill: an effect that requires academic research of course
:D
.. but yeah, conclusions here were the same I reached too. Potentially this could work with some instruction with 3 writes in a row, and only ones that do that write to stack only. |
| |
Oswald
Registered: Apr 2002 Posts: 5074 |
Quote: The only way for RC to become 0 is because of a bad line. Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again (u can still change bank, font and screen and you can still choose if you want to fetch new chars pointer FLI, or keep old char pointers and save 40c FPP)
See https://www.linusakesson.net/programming/vic-timing/index.php
"Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again"
even if VCBASE would change, there is no badline to reload the character pointers. |
| |
mankeli
Registered: Oct 2010 Posts: 127 |
Originally I was thinking if it would be possible to have badlines and normal 8 line tall characters, but have the DMA always load the character pointers from the same address in the selected screen memory. (ie. have VCBASE to be constantly 0)
I think it should be possible to do this [have DMA always load graphics from same address] with 7px tall characters (as the VCBASE gets updated in the right border when RC=7).
With badline every 4 lines and two fonts (upper and lower half) it should be possible to fake 8px tall characters but it would be nice to skip the "unnecessary" badline :) |
| |
Oswald
Registered: Apr 2002 Posts: 5074 |
it is possible with 7 pix tall character rows. and your 2nd method should work aswell.
https://csdb.dk/forums/?roomid=11&topicid=84186&showallposts=1 |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1402 |
Do you actually want to reload the row every 8 rasters (like, will you be writing new values to them in the intervening lines, like I did for the 5 pixel high characters in Jam Ball 2), or is reading them once per frame then just repeating the same set of characters every row for the entire frame ok? |
... 6 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |