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 > Smooth horizontal bitmap scroller ($d016)
2011-01-16 22:55
8bitforever
Account closed

Registered: Oct 2009
Posts: 48
Smooth horizontal bitmap scroller ($d016)

8bitforever is back after a 14 month coding break.
I´m trying hard to develop a $d016 bitmap (koala pic) scroller. But it flickers sporadicly.
The jitter/flicker is a 1 char movement of the bitmap.

<-<-<-<-<-
__________
|JJOKOKOK|
|JJOKOKOK|
|JJOKOKOK|
|JJOKOKOK|
__________

JJ=Jitter or flicker area. This can happen in 15-25% of the screen area.
OK=Perfect smooth scrolling of the bitmap (koala pic).
<-=Horizontal Scroll direction.

No VSP/HSP suggestions please.
1) Why do I have jitter/flicker in 15-25% of the screen area ?
2) Suggestions on how get rid of the jitter/flicker ?

 
... 7 posts hidden. Click here to view all posts....
 
2011-01-17 10:10
8bitforever
Account closed

Registered: Oct 2009
Posts: 48
Jackasser,
Actually it´s only a four char high bitmap.
So I don´t undeerstand why I cannot get rid of the jitter/flicker ?
2011-01-17 10:17
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: Jackasser,
Actually it´s only a four char high bitmap.
So I don´t undeerstand why I cannot get rid of the jitter/flicker ?


4 char high bitmap with colors = (320+80)*4 = 1600. lda+sta = 8c => 1600*8 = 12800 ~= 69% cpu usage completly unrolled. Are you 100% sure you copy fast enough and also do it behind the raster beam?

1) Copy fast, really fast.
2) Start the copy just when the raster beam have passed those 4 chars.
3) update $d016 before you reach the chars again.
2011-01-17 10:52
8bitforever
Account closed

Registered: Oct 2009
Posts: 48
Thanks Jackasser,
going to check the code tonight again.
2011-01-17 12:25
Skate

Registered: Jul 2003
Posts: 494
it's been already said but problem is not about scrolling bitmap. you can have the same problem with a standard 1x1 char scroller as well. it's all about $d012. put a "inc $d020" before scroll routine and "dec $d020" after scroll routine and see if scrolling area is clean.

4 character lines (32 raster lines) are ideal for playing music. use that area for music and start scrolling from the bottom of that area.

if you try to scroll 4 char lines high bitmap using standard loops ( no unrolled code), you're gonna need 16410 cycles which takes %83.5 CPU. Since 4 character area means ~%10 CPU and it's enough for playing music, if you don't have much more things going on in the screen, you don't need to spend too much memory.
2011-01-17 15:25
TWW

Registered: Jul 2009
Posts: 545
You should/could still double-buffer it though if you are planning to do something more on that screen...


frame 1: Flipp buffer and scroll $d800 data

frame 2-7: Pull 2'nd buffer (bitmap & $0400 collors)

frame 8: flipp buffer and scroll $d800 data

frame 9-15: Pull 1'st buffer (Bitmap $ $0400 collors)

do from beginning!

You need to place out the graphics to scroll in both buffers aswell and in the correct time. Buit seeing your nice ascii gfx up there I'm sure you'll figgure it out 8-D

You should get away with a fraction of the raster time needed distributing it on 8 frames instead of doing it all on one.

Ofcourse it would eat more R-Time the faster the scroller goes (i.e scrolling 2 pixels at the time means you need to move the gfx faster)...

anyways, where was I....
2011-01-17 17:22
Digger

Registered: Mar 2005
Posts: 437
Or slow everything down (let's say you increment $D016 every 50 frames) and then trace carefully what happens in each shift. You'll get the point where the jitter appears and then it's easy to investigate further from there.
2011-01-17 22:35
8bitforever
Account closed

Registered: Oct 2009
Posts: 48
Thank you very much,
problem solved due to your excellent suggestions !
Thank you once again !
2011-01-19 14:24
Nitro
Account closed

Registered: Aug 2008
Posts: 13
About Digger's post: there's much better method, pressing ALT plus + enters pause mode, where you can step through individual frames by again using ALT and +.
Alt+Pause resumes normal work.
2011-01-22 17:20
Digger

Registered: Mar 2005
Posts: 437
@Nitro: Nice, is this in VICE?
2011-01-24 21:58
Zielok

Registered: Mar 2009
Posts: 6
Yes, this is in Vice.
Previous - 1 | 2 - 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
Acidchild/Padua
Chesser/Blazon
ΛΛdZ
csabanw
Xiny6581/Dees Produc..
CopAss/Leader
Fulgore/Excess/TREX
Guests online: 89
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Crackers
1 Mr. Z  (9.9)
2 Antitrack  (9.8)
3 OTD  (9.8)
4 Fungus  (9.8)
5 S!R  (9.8)

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