81 lines
4.1 KiB
Markdown
81 lines
4.1 KiB
Markdown
------------------------ --------------------------------- --------------------
|
||
[Previous](43-06.html) [Table of Contents](index.html) [Next](44-02.html)
|
||
------------------------ --------------------------------- --------------------
|
||
|
||
Chapter 44\
|
||
Split Screens Save the Page Flipped Day {#Heading1}
|
||
----------------------------------------
|
||
|
||
### 640x480 Page Flipped Animation in 64K...Almost {#Heading2}
|
||
|
||
Almost doesn’t count, they say—at least in horseshoes and maybe a few
|
||
other things. This is especially true in digital circles, where if you
|
||
need 12 MB of hard disk to install something and you only have 10 MB
|
||
left (a situation that seems to be some sort of eternal law) you’re
|
||
stuck.
|
||
|
||
And that’s only infuriating until you dredge up the gumption to go in
|
||
there and free up some space. How would you feel if you were up against
|
||
an “almost-but-not-quite” kind of a wall that couldn’t be breached by
|
||
freeing up something elsewhere? Suppose you were within a few KB of
|
||
implementing a wonderful VGA animation scheme that provided lots of
|
||
screen space, square pixels, smooth motion and more than adequate
|
||
speed—but all the memory you have is all there is? What would you do?
|
||
|
||
Scream a little. Or throw something that won’t break easily. Then you
|
||
sit down and let your right brain do what it was designed to do. Sure
|
||
enough, there’s a way, and in this chapter I’ll explain how a little VGA
|
||
secret called *page splitting* can save the day for page flipped
|
||
animation in 640x480 mode. But to do that, I have to lay a little
|
||
groundwork first. Or maybe a lot of groundwork.
|
||
|
||
No horseshoes here.
|
||
|
||
#### A Plethora of Challenges {#Heading3}
|
||
|
||
In its simplest terms, computer animation consists of rapidly redrawing
|
||
similar images at slightly differing locations, so that the eye
|
||
interprets the successive images as a single object in motion over time.
|
||
The fact that the world is an analog realm and the images displayed on a
|
||
computer screen consist of discrete pixels updated at a maximum rate of
|
||
about 70 Hz is irrelevant; your eye can interpret both real-world images
|
||
and pixel patterns on the screen as objects in motion, and that’s that.
|
||
|
||
One of the key problems of computer animation is that it takes time to
|
||
redraw a screen, time during which the bitmap controlling the screen is
|
||
in an intermediate state, with, quite possibly, many objects erased and
|
||
others half-drawn. Even when only briefly displayed, a partially-updated
|
||
screen can cause flicker at best, and at worst can destroy the illusion
|
||
of motion entirely.
|
||
|
||
Another problem of animation is that the screen must update often enough
|
||
so that motion appears continuous. A moving object that moves just once
|
||
every second, shifting by hundreds of pixels each time it does move,
|
||
will appear to jump, not to move smoothly. Therefore, there are two
|
||
overriding requirements for smooth animation: 1) the bitmap must be
|
||
updated quickly (once per frame—60 to 70 Hz—is ideal, although 30 Hz
|
||
will do fine), and, 2) the process of redrawing the screen must be
|
||
invisible to the user; only the end result should ever be seen. Both of
|
||
these requirements are met by the program presented in Listings 44.1 and
|
||
44.2.
|
||
|
||
#### A Page Flipping Animation Demonstration {#Heading4}
|
||
|
||
The listings taken together form a sample animation program, in which a
|
||
single object bounces endlessly off other objects, with instructions and
|
||
a count of bounces displayed at the bottom of the screen. I’ll discuss
|
||
various aspects of Listings 44.1 and 44.2 during the balance of this
|
||
article. The listings are too complex and involve too much VGA and
|
||
animation knowledge for for me to discuss it all in exhaustive detail
|
||
(and I’ve covered a lot of this stuff earlier in the book); instead,
|
||
I’ll cover the major elements, leaving it to you to explore the finer
|
||
points—and, hope, to experiment with and expand on the code I’ll
|
||
provide.
|
||
|
||
------------------------ --------------------------------- --------------------
|
||
[Previous](43-06.html) [Table of Contents](index.html) [Next](44-02.html)
|
||
------------------------ --------------------------------- --------------------
|
||
|
||
* * * * *
|
||
|
||
Graphics Programming Black Book © 2001 Michael Abrash
|