| |
Majikeyric
Registered: Sep 2002 Posts: 83 |
How does linecrunch work ?
Hi everybody !!!!
Can someone explain or point me to a web site where I could find information about linecrunch ???
I think it allows to scroll bitmaps but I don't know how ???
thanks. |
|
... 23 posts hidden. Click here to view all posts.... |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1424 |
Never mind, got it working now :D |
| |
Raistlin
Registered: Mar 2007 Posts: 771 |
I'm starting to code my first linecruncher (!) .. and hitting some snags. I can only get it to scroll 0-14px (!) instead of the 0-15px that I of course want...
Across 16 frames, I'm doing these D011 writes (VSYNC, HSYNC):-
Frame0: V01, H15 (D011 = $30) and V48, H09 (D011 = $31)
Frame1: V01, H15 (D011 = $31) and V49, H09 (D011 = $32)
...
Frame6: V01, H15 (D011 = $36) and V54, H09 (D011 = $37)
Frame7: V01, H15 (D011 = $37) and V54, H09 (D011 = $30)
Frame8: V01, H15 (D011 = $30)
Frame9: V01, H15 (D011 = $31)
..
Frame15: V01, H15 (D011 = $37)
These are the only $d011 writes that I do...
Frame7 and Frame8 end up the same .. so it seems that I have something out of step somehow - both frame 7 and 8 of course have a final $d011 value of $30... so I assume I'm doing -something- wrong here..?
Any help/advice at all would be great............ |
| |
Raistlin
Registered: Mar 2007 Posts: 771 |
One more small note with what I'm trying to do here ... I'm -hoping- that I can do 0-15px linecrunch-based scrolling without losing any of the vertical height of the screen .. ie. retaining all 24chars (192px). |
| |
Krill
Registered: Apr 2002 Posts: 3098 |
Still not quite sure what you want to achieve, tbh. :)
Linecrunching does not lose you any char rows, but the wrapping point (screen offset $03ff->0 mid-row) and shifted screen contents below that become a bit cumbersome to handle.
One crunched char row equals upscrolling by 7 rasterlines, and you'd normally combine linecrunching with FLD (empty lines filled with $3fff idle pattern) for pixel-wise hardware Y-scrolling. |
| |
Raistlin
Registered: Mar 2007 Posts: 771 |
Ahhh, thanks Krill! That was the last piece of the puzzle - and explains why I could only get 0-14px working instead of 0-15px (0-7px coming from the smooth scroll of D011 plus 0px or 7px depending on whether I crunched a line).
I have it working in my test function now... tomorrow I'll see whether I can get it working in a more useful way :-) |
| |
Krill
Registered: Apr 2002 Posts: 3098 |
Glad i could help!
So the missing piece of the puzzle was that you'd set YSCROLL again after the crunched line, so you'd have 0..7 pixels of scroll-range above plus another 0..7 pixels of scroll-range below the crunched rows?
Or that you'd need to crunch 3 char rows (not just 2) in order to scroll up by 15 pixels? =) |
| |
Digger
Registered: Mar 2005 Posts: 448 |
2025 and finally I am getting my head around to deepen my understanding of $d011 trickery.
So, is it possible to shorten all char lines to be 7 pixels high?
But WITHOUT charline duplication?
I want to force a badline every 7 rasterlines, and make VIC to read the new charline there. Possible? How? |
| |
Krill
Registered: Apr 2002 Posts: 3098 |
Shortening a char row to 7 (or fewer) rasterlines will prevent the row pointer from advancing to the next 40 chars.
You can still feed new char data by switching screen base via $D018/$DD00 prior to triggering the next badline.
The screen memory layout will be somewhat funky, with 40 chars at N*$0400 scattered all over the memory space.
$D800 colours will remain the same, though, unless you overwrite them between the occurance of two badlines. |
| |
Digger
Registered: Mar 2005 Posts: 448 |
Yeah, I know this mode and that's exactly what I do NOT want.
So no way to force advance the row pointer earlier? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11523 |
its called FLI :) |
Previous - 1 | 2 | 3 | 4 - Next |