Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > $d011 trickery – duplicated text lines
2011-04-29 21:39
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.
2011-04-29 22:24
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.
2011-04-29 22:29
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.
2011-04-30 10:11
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..


2011-04-30 10:43
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.
2011-04-30 11:00
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!
2011-04-30 11:20
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.
2011-04-30 11:26
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.
2011-04-30 11:31
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..

2011-04-30 14:11
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?
2011-05-01 00:59
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
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Martin Piper
Frostbyte/Artline De..
The Phantom
Guests online: 131
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Bromance  (9.6)
10 Memento Mori  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Booze  (9.7)
3 Stormbringer  (9.7)
4 Fungus  (9.6)
5 Grim Reaper  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.04 sec.