[comp.sys.apple2] Smooth Scroll for Graphics in Assembly - How?

marekp@pnet91.cts.com (Marek Pawlowski) (11/10/90)

   I am looking for advice in the area of graphics scrolling on the screen. 
When I have a routine which DRAW's (EQU $F601) a shape, then XDRAW's (EQU
$F65D) over the same shape, then increments the X position by one, and does
the process over again, the shape moves along with a very annoying flicker.

   Instead, I would like the effect of the shape sliding, without any major
flickering.  Are there suggestions/corrections as to how I can do this?

   All help appreciated, as usual.


/* Marek Pawlowski, marekp@{generic|pnet91|contact|bkj386|torag|aunix}.uucp */
/* President, Intelligent Twist Software, 250 Harding Blvd, PO BOX 32017    */
/* Richmond Hill, Ontario, L4C 9M7, CANADA.				    */

C489030@UMCVMB.MISSOURI.EDU (Greg Hodgdon) (11/10/90)

well, as long as you're using shape tables, you can completley eliminate
annoying flicker by using both hi res pages to do your animation:
Address $E6 tells the applesoft hires routines which page you're drawing
on: $20 for page 1, $40 for page 2.
  using this, you can draw/erase on the 'hidden' page while displaying
the previous screen.
  ie.  $C054   display page 1
       $E6:40  erase/draw on page 2
       $C055   display page 2
       $e6:20  erase/draw on page 1
       etc

a better (faster) way would be to use block shapes which erase themselves
as they're being drawn, but this involves either writing your own routines
for drawing and managing the shapes or using a package like the Graphics
Magician, which'll has a bunch of routines for doing all kinds of things
with shapes.  gee. whatever happened to penguin software anyway?

  ciao!

    greg hodgdon     c489030@umcvmb.missouri.edu

'The Grateful Dead use ORCA/M' - Mike Westerfield in a Nibble interview

p.s. marek P - I would'v responded in mail but i couldn't decipher that
               humongo address!

MQUINN%UTCVM@PUCC.PRINCETON.EDU (11/11/90)

On Fri, 9 Nov 90 22:00:04 GMT <info-apple-request@APPLE.COM> said:
>   I am looking for advice in the area of graphics scrolling on the screen.
>When I have a routine which DRAW's (EQU $F601) a shape, then XDRAW's (EQU
>$F65D) over the same shape, then increments the X position by one, and does
>the process over again, the shape moves along with a very annoying flicker.
>
>   Instead, I would like the effect of the shape sliding, without any major
>flickering.  Are there suggestions/corrections as to how I can do this?
>
>   All help appreciated, as usual.

(I assume you're talking about the old hi-res screen (280x192)?)  There are
two hi-res screens that you may DRAW/XDRAW to.  You can use a technique called
page flipping.  What you do is, draw the latest update of the animation on the
screen that isn't visible, then switch video to that screen and update the
previous screen, then switch back and so on.

The first graphics screen resides at $2000-$3FF7 and the second graphics
screen resides at $4000-$5FF7.  To switch between these pages, do either a
read or a write to locations $C055 and $C054.  If you are currently in the
first graphics screen ($2000) and want to switch the display to the 2nd screen,
then do a LDA $C055.  The first page will dissappear and the 2nd one will
appear.  To switch back to the first screen, do a LDA $C054.

You have to tell the ROM based graphics routines which screen you want to
draw to.  You have to do a poke to some location between $0000-$03FF.
I can't recall at the moment what it is (it's been a few years).  Anyone else
want to help out?

Anyway, with this technique, everytime you are erasing an old image, you're
looking at a different screen where the image is 'static'.  So you never see
any erasing.  When you flip screens, the newly updated shape is already there.

Hope this helps.


>/* Marek Pawlowski, marekp@{generic|pnet91|contact|bkj386|torag|aunix}.uucp */
>/* President, Intelligent Twist Software, 250 Harding Blvd, PO BOX 32017    */
>/* Richmond Hill, Ontario, L4C 9M7, CANADA.				    */

 ______________________________________
|                                      |
| BITNET--   mquinn@utcvm              |
| pro-line-- mquinn@pro-gsplus.cts.com |
|______________________________________|