There's nothing wrong with my raster code; it appears to work properly when I
have it switch background colors instead of altering the scroll register, and
it even works great with horizontal smooth scrolling. The problem is that on
vertical scrolling, there's several lines' worth of flicker at the split
point. Rather than blending smoothly into the non-scrolling rows, the
scrolling area appears to jump up and down on the first scrolling row. Does
anyone know why this is? (I'll post my code if anyone would like to take a
look at it.) Any suggestions on a good way to perform this type of screen
split on the C-64?
- Firebug
>There's nothing wrong with my raster code; it appears to work properly when I
>have it switch background colors instead of altering the scroll register, and
>it even works great with horizontal smooth scrolling. The problem is that on
>vertical scrolling, there's several lines' worth of flicker at the split
>point. Rather than blending smoothly into the non-scrolling rows, the
>scrolling area appears to jump up and down on the first scrolling row. Does
>anyone know why this is? (I'll post my code if anyone would like to take a
>look at it.) Any suggestions on a good way to perform this type of screen
>split on the C-64?
The value of the y scroll register can't be changed while within a
cursorline this way. Try to make the smooth scroll with the FLD effect
instead of the scroll register. Delay the start of a new line by x
rasterlines and make the screen black for 8-x lines with an illegal
gfx-mode.
Ciao,
Marc 'BlackJack' Rintsch
If I were you, I would make the lowest row of the stationary text row
with sprites. They are able to hide the flicker, and they look quite
nice. Also you can use a non-documented mode for that.
One another way to do that is just have actually 5 stationary lines, but
have a binary scroll inside the 5th line. It might sound hard, but it is
able to do that.
--
*Pekka "Pihti" Takala *pekka....@pp.inet.fi
*asm sw developer *home: +358-6-8311341
*cellular: +358-40-5670465
If I were you, I would make the lowest row of the stationary text row
BlackJack:
> The value of the y scroll register can't be changed while within a
> cursorline this way.
That's not strictly true, it *can* be changed but the timing is more
than a little tricky...
> Try to make the smooth scroll with the FLD effect instead of the
> scroll register.
[Wonders if I should point out that FLD is *done* with the vertical
scroll register...? Nah. =-]
> Delay the start of a new line by x rasterlines and make the screen
> black for 8-x lines with an illegal gfx-mode.
What's actually happening is that the system generally hates splitting
$D011 - the flicker is caused by this inability on the VIC-II's part.
The way to mask it is, as Marc says, for the eight rasterlines where
you're doing the split to mask it off by setting an illegal mode -
turing on bitmap at the same time as extended colour mode works (set the
$20 and $40 bits of $D011).
The jumping up and down is being caused by the $D011 bug that produces
FLD, if you allow a badline to be delayed by moving it just before the
raster gets to it, you can make the remaining part of the screen jump
down a character. There are a few ways to counter this, either have a
series of different timing values for all eight possibilities during the
"mask" area (which has to allow for the badline moving up and down as
$D011 changes as well as the cycles used by any sprites passing over
that space) or modify the map copy routine to offset itself by a
character to counter the glitches (cheating, but it works).
Either that or scroll the *entire* screen and don't worry about it, but
that really *is* cheating. [Looks at own game Cyberwing and goes *very*
quiet... =-]
--
Jason =-)
_______________________________________________________________________
TMR / / / / / / / /\
/ /__/ / / /__/ / / / /__/ Email: t...@c64.org / /
/ /\_/ / /__ / / / / __// TMR_C0S on IRC / /
/ /__/ / / / / / / / / / http://www.tmr.cosine.org.uk / /
/_____/_____/_____/__/__/__/_____/_____________________________________/ /
\_____\_____\_____\__\__\__\_____\_____________________________________\/