| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
3rd Line FLI
Is it possible without getting either linecrunch or FLD for each new character line? |
|
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting CruzerIs it possible without getting either linecrunch or FLD for each new character line? Not sure if i understand, but you want to have new colours (or chars) for every 3rd rasterline?
Pretty sure that's possible. But i have a hunch you just want to have a regular badline (no timing-exact $d011 manipulation required) whenever one of those "FLI lines" coincides with the badline (0th rasterline) of a new char row. |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Quoting KrillNot sure if i understand, but you want to have new colours (or chars) for every 3rd rasterline? Correct.
Quoting Krilli have a hunch you just want to have a regular badline (no timing-exact $d011 manipulation required) whenever one of those "FLI lines" coincides with the badline (0th rasterline) of a new char row. That's the least of my concerns. I have just experimented with doing timing-exact $d011 manipulation on every 3rd line, and this resulted in linecrunch for every char. So you first have a char row that's 8 pixels tall, then one that's 1 pixel tall, and so on.
Then I tried setting the d011 value that caused the linecrunch earlier, and that changed the linecrunch to FLD.
So ideally I would like 8 pixel high char rows with no gaps. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
But you just have to set a $d011 value such that (($d011 & $07 ) == ($d012 & $07)) is true, in other words, that the lowmost 3 bits of $d011 and $d012 are equal. Then make sure that this happens in the correct cycle (such that the first 3 chars of a char row show the FLI bug). |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
maybe you do the fli on bad line too ? |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting Oswaldmaybe you do the fli on bad line too ? This is why i said, "But i have a hunch you just want to have a regular badline (no timing-exact $d011 manipulation required) whenever one of those "FLI lines" coincides with the badline (0th rasterline) of a new char row."
However, in order not to get into FLD territory, you have to make sure that you never leave a char row and go into idle mode ($3fff et al.) - but this should really not happen if you set $d011 every 3 rasterlines to match the lowmost 3 bits of $d012.
Oh, and of course with setting it to the next badline (after FLI has been triggered) whenever that one would be the next "FLI line". |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
This is most definitely possible. Just make sure you reset $d011 after you've done the FLI otherwise you will in practice shorten the character line or cause FLD. Just like when you do f.e. 4x4 FLI by triggering evert 8th line in between normal bad lines. If you would forget to reset $d011 there you would create gaps and crunches.
(See LFT's eminent timing PDF) |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Yes, that "resetting" is setting $d011 so that the next badline is the next "FLI" line, which must be done whenever the current FLI line is rasterline 5 of a char row (next "FLI" line at rasterline 0 of next char row). |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
All of the above, but IIRC you can also avoid the "normal" badlines by only setting d011 to match raster just after the DMA would have completed (it's kind of like a very late FLI line)
This way you only lose 40 cycles to DMA on 8 lines out of 24, instead of 10 lines out of 24, and also only do the fetches you actually want. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Yes, that's extending the FLI bug area to more than 3 chars if you need the cycles and don't mind a smaller effect area. :) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Yes, you can extend it all the way to 43, and just inherit whatever screen values were there from the previous line.
I just can't remember how that prevents VIC-II from dropping into idle mode at the end of line 7 - I guess that only happens if the badline condition is false?
VIC Artikel or LFT's timing chart would elucidate I'm sure. |
| |
Dano
Registered: Jul 2004 Posts: 234 |
isn't that something like the rastermover from uncensored right before the rotating rasters?
that one sets new colors into the screen of the bitmap, then forces a $d011 after 6 lines.
but you with that you cannot force new bitmap data. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
I believe the aim here is to still have a new row every 8 lines, so you would indeed be able to display an entire bitmap.
Thinking about DMA timing a bit more, should be able to do something like this every 24 lines:
Normal char fetch on line 0
FLI fetches on lines 3,6,7,9,12,15,18,21
The fetch on line 7 can happen either at the start or the end of that line (23 or 63 cycles after the line 6 fetch), depending on whether you have useful things to do for the intermediate 40 cycles.
The FLI fetch on line 15 should already be forcing the follow through for line 16.
so, only 7 stable interrupts every 24 lines. (the normal fetch for line 0 of the next group can be queued just after the FLI fetch of line 21) |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting ChristopherJamYes, you can extend it all the way to 43, and just inherit whatever screen values were there from the previous line.
I just can't remember how that prevents VIC-II from dropping into idle mode at the end of line 7 - I guess that only happens if the badline condition is false?
VIC Artikel or LFT's timing chart would elucidate I'm sure. That would not be delayed DMA* but the case of "repeated char row", i think. And yeah, it's covered in VIC Artikel, IIRC.
* Rather "tardy DMA", actually, as whatever DMA hasn't happened at that point will not happen, but still the rest corresponding to right (ahead) of the current beam X position will. "Delayed DMA" is, for some reason, the canonical term for what's otherwise called VSP, i.e., hardware X hard-scrolling. |
| |
Digger
Registered: Mar 2005 Posts: 437 |
FLI every 3rd line... The question is: why would you do that? ;-D |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Cruzer magic! |
| |
HCL
Registered: Feb 2003 Posts: 728 |
..are you planning on displaying gfx (picture..) with that mode, or "just" doing effects with the color-blocks? The latter is probably easier since it allows for repeating the bitmap.. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
My bet is on a new iteration of something something PLASMA using char mode and new colours and chars for each new 3-scanline row. Or something. :) |
| |
Digger
Registered: Mar 2005 Posts: 437 |
Hope it’s not the same idea that I am doing with every 2nd line FLI ;-) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
if in doubt, you can always use it to scroll a giant bitmap, slowly. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Bitmap crawl compo in slightly more than a week! \:D/ |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
First time I tried to do 2nd line FLI was a bit of a headfuck - I had no idea why VIC was dropping into idle mode... |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: First time I tried to do 2nd line FLI was a bit of a headfuck - I had no idea why VIC was dropping into idle mode...
If RC==7 && d011&7!=d012&7 && cycle==58 => idle
By manipulating d011 after the DMA fetch but before c58 you break the condition |
| |
Hein
Registered: Apr 2004 Posts: 954 |
Quote: Bitmap crawl compo in slightly more than a week! \:D/
If all bitmaps start crawling now, that time they'll be done. Thank you. :) |
| |
HCL
Registered: Feb 2003 Posts: 728 |
Ok, i have a 3:rd line FLI-routine now that seems working. What next?! |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
scroll bitmaps, obviously |
| |
Trash
Registered: Jan 2002 Posts: 122 |
Quote: Ok, i have a 3:rd line FLI-routine now that seems working. What next?!
since Cruzer started the thread I guess you have to do a dypp scroller, a clever multicolortwister or possibly a plasma... If anyone else had started the thread a bitmapscroller would have been expected... |
| |
Hein
Registered: Apr 2004 Posts: 954 |
Quote: Ok, i have a 3:rd line FLI-routine now that seems working. What next?!
Brand it 'Real Trifli®' (Tri Fli or other graphic modes...). |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
oh yeah! interlace flicker while you scroll! |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Well duh and/or hello.
If it's not scrolling a non-integral number of pixels per frame, then it's not interlaced.
ps, JackAsser - yes, I got there eventually :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
scroll at 1 pixel every 2nd frame! YEAH! |