Initial conversion to markdown
This commit is contained in:
parent
a96a114403
commit
5e10794a24
362 changed files with 67353 additions and 0 deletions
81
44-01.md
Normal file
81
44-01.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
------------------------ --------------------------------- --------------------
|
||||
[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
|
||||
Loading…
Reference in a new issue