| |
Digger
Registered: Mar 2005 Posts: 421 |
$d011 trickery duplicated text lines
Does any one know the $d011 trick to repeat the first char row? I am trying to cancel badlines on the 8th line of each charline (between cycles 54-57) but it doesn't work. The first line gets duplicated but only twice. |
|
... 53 posts hidden. Click here to view all posts.... |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1378 |
Quoting Oswaldif only 7 lines rows possible then its pointless I guess.
Eh, I used a new instance of row 0 every 5 rasters in Jam Ball 2 to keep my framebuffer size down and thought that was reasonably worthwhile :)
Alternately (assuming you can afford to lose another 60 or so cycles) you could do two badlines at the start of every group of eight and use one charset/bitmap for the first line and another for the remaining seven. |
| |
Oswald
Registered: Apr 2002 Posts: 5017 |
what if I do the "no badline" row repeat on the last pixel row of a char row, but then manually make a badline in the next raster line ? can this be done ?:P |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1378 |
Sadly not. The issue is that each “no badline” row repeat secretly updates the row pointer to the next row, so the moment you do a DMA you’d get a later row than what you want,
(Useful for other effects of course, like double buffering half res d800) |
| |
Oswald
Registered: Apr 2002 Posts: 5017 |
what you describe sounds like the normal behaviour ? rc to 0 and next row read up. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1378 |
Yes, except it doesn't actually fetch the characters, so the internal row buffer remains unchanged. |
| |
Oswald
Registered: Apr 2002 Posts: 5017 |
ok while we're at it can you explain last row stretch with internal counters? I'm staring at the VIC article but the more I stare at it the less sense it makes. like RC is never incremented after reaching 7 by these rules:
"In the first phase of cycle 58, the VIC checks if RC=7. If so, the video
logic goes to idle state and VCBASE is loaded from VC (VC->VCBASE). If
the video logic is in display state afterwards (this is always the case
if there is a Bad Line Condition), RC is incremented."
so RC=7, we go to idle state, thus RC is not incremented hence it is only incremented in display state.
I'm thinking of stretching the last pixel row, to get the 8 high char line I want.
ok not possible hence my last is 7th not 8th, and that stretch only works on 8th.
only straw left is repeat 1st line but that adds only a badline, urgh. |
| |
Oswald
Registered: Apr 2002 Posts: 5017 |
ok I guess I get it, if *sometime later* there is badline then will we go back to display state and increment rc. whenever. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1378 |
Yup, exactly.
Lft's done a nice PDF of the timing, you can find it at https://www.linusakesson.net/programming/vic-timing/ |
| |
JackAsser
Registered: Jun 2002 Posts: 1989 |
Quote: Yup, exactly.
Lft's done a nice PDF of the timing, you can find it at https://www.linusakesson.net/programming/vic-timing/
Yes. Do read this. It takes a while to understand how to interpret it but once you learn it all VIC-tricks are easy to figure out. |
| |
Oswald
Registered: Apr 2002 Posts: 5017 |
already used this pdf, but not the how rc /vc works part, that still needs a lot of thinking :)
fex, I can not explain how/why last row stretch works. |
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 - Next |