| |
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.... |
| |
Krill
Registered: Apr 2002 Posts: 2995 |
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: 694 |
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: 2995 |
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: 445 |
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: 2995 |
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: 445 |
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: 11430 |
its called FLI :) |
| |
Oswald
Registered: Apr 2002 Posts: 5102 |
this is an xy problem whatever you can solve with 7 pixel high char rows should be solvable with 8 line high ones |
| |
Krill
Registered: Apr 2002 Posts: 2995 |
Quoting Oswaldthis is an xy problem whatever you can solve with 7 pixel high char rows should be solvable with 8 line high ones I thought XY problem as well, but for other reasons. =)
Digger: As in really, why is a scattered memory layout such a big problem that it invalidates the entire technique for your purposes? |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1411 |
You could possibly do something ungodly with alternating 6 line rows with 8 line rows, so RC would go 01234501234567, but do a FLI fetch on the 8th line to fetch from a second char screen.
In char mode you'd be alternating between two screens, and using the first 14ish rows of each screen. You'd have to use a couple of charsets, where the second one is rotated down a line, and also duplicates line 7 into line 0 for use on line 7 of the even char rows.
(so, you only move on to the next row address every second char row, but it's a lot closer to what you're asking for than never advancing) |
Previous - 1 | 2 | 3 | 4 - Next |