| |
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. |
|
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Yup, basically make FLI, but use more cycles, so the bug gets pushed all the way into the right border. On the left side of the bug you'll have repeated char rows. So you won't get rid of badlines, but most (maybe all) of the DMA cycles are skipped. |
| |
assiduous Account closed
Registered: Jun 2007 Posts: 343 |
you have to do the exact opposite- create a badline condition (set d011 low bits to match those of the current raster line) before cycle 58 of the 8th line. rc will overflow to 0 in cycle 58 and if you prevent badlines afterwards the row will be duplicated. |
| |
Testa Account closed
Registered: Oct 2004 Posts: 197 |
Assiduous: i thought that when you do the lsb match of $d011 and $d012 before cycle 58 in rc7 , rc will be reset
to zero and vcbase will not be increment by 40.
But you still have a badline condition otherwise the charpointers will not displayed for the second time...
correct me if iam wrong..
|
| |
Digger
Registered: Mar 2005 Posts: 421 |
Hmmm, getting a bit confused now. Graham says two $d011 accesses are enough (http://noname.c64.org/csdb/forums/?roomid=11&topicid=34379#34476)
Cruzer's FLI trick worked but I am looking to save as much raster time as I can, by triggering stable timer IRQ every x lines to repeat the char row. |
| |
Digger
Registered: Mar 2005 Posts: 421 |
Ha! I think I've done it by experimenting :D Will share the source once I tidy it up. Thanks for all the suggestions! |
| |
assiduous Account closed
Registered: Jun 2007 Posts: 343 |
Testa: when rc is incremented in cycle 58 (7->0) the VIC stays in the display state. it will just use the content of the internal buffers from the last dma fetch,you dont need another dma fetch to repeat the char row. as Graham said only 2 d011 accesses are needed to repeat a char row -1 to assert a badline condition in cycles 54-57 of the line 7,the other to prevent badline when rc=7 is reached again. |
| |
fenek Account closed
Registered: Apr 2002 Posts: 3 |
Quote: Ha! I think I've done it by experimenting :D Will share the source once I tidy it up. Thanks for all the suggestions!
You can check code in 640x800 Pirate part in "Sweet Infection".
Sweet Infection
It works as you want.
Display routine trigger IRQ every x lines to repeat the first char row and change $d018/$dd00 to get one of 25 different rows of picture.
As far as I remember when you disable badline with $d011 you must add 40-4(6) cycles, because this is long line.
|
| |
Testa Account closed
Registered: Oct 2004 Posts: 197 |
assiduous: yep i see now.... but i'am still confused.
i have an old source: i repeat the first char row
al the way down with only one $d011 write each 8th line.
if i have used this trick to create 25 text swingers
upper scroll style (no linecrunch)
i remember that you also can abort the duplicated char-raw earlier then rc7.. so you can display more then 25 char-raws.. or do i mess up things here...
edit: oh see now.. i checked my source, i do line
doubeling, i display the first char row over and
over again by fetching the same 40 charpointers again.
you can also do the same without fetching the same
charpointers again. this wil give you some more
free cycles: 40 minus the lda $xx sta $d011 writes to
prevent the badline..
|
| |
Digger
Registered: Mar 2005 Posts: 421 |
@Fenek: Thanks! I've seen this part before and I was impressed! Was wondering how did you do it :) I suppose the only disadvantage is the fragmented memory you have to use 25 charset banks (only 80 * 8 = $280 bytes each though, right?) Do you use double buffering there at all? |
| |
SIDWAVE Account closed
Registered: Apr 2002 Posts: 2238 |
Wizz did this in 1988:
Broken Ass!
Notice the release id nr :) |
... 53 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 - Next |