For double-buffering, a place must be provided for the system to store the extra information it needs. The system maintains these data, and does not expect the application to change them. The DBufPacket structure consists of the following members: BufY, BufX Lets the system keep track of where the object was located in the last frame (as compared to the Bob structure members called OldY and OldX that tell where the object was two frames ago). BufY and BufX provide for correct restoration of the background within the currently active drawing buffer. BufPath Assures that the system restores the backgrounds in the correct sequence; it relates to the VSprite members DrawPath and ClearPath. BufBuffer This field must be set to point to a buffer the same size as the Bob's SaveBuffer. This buffer is used to store the background for later restoration when the system moves the object. This buffer must be allocated from Chip memory. To create a double-buffered Bob, execute a code sequence similar to the following: struct Bob myBob = {0}; struct DBufPacket myDBufPacket = {0}; /* Allocate a DBufPacket for myBob same size as previous example */ if (NULL != (myDBufPacket.BufBuffer = AllocRaster(48, 20 * 5))) { /* tell Bob about its double buff status */ myBob.DBuffer = myDBufPacket; } The example routines makeBob() and freeBob() in the animtools.c listing at the end of this chapter show how to correctly allocate and free a double-buffered Bob.