* For NN=1 To the Number of Recordings
Moves dc.w Number_Of_Movements
* Pointers to the list of X coordinates
REPT Number_Of_Movements
dc.w (XMove_NN-Moves)/2 Offset to the X coordinates /2
Or zero if they are not defined
ENDR
* Location of the Y coordinates
REPT Number_Of_Movements
dc.w (YMove_NN-Moves)/2 Offset to Y coordinates /2
Or zero if they are not defined
ENDR
* Stores an eight byte name for each movement table
REPT Number_Of_Movements
dc.b "MoveName" 8 Bytes per move
ENDR
* Finally here are the movement definitions themselves
*
REPT Number_Of_Movements
XMove_NN dc.w Speed Recording speed in 1/50 sec
dc.w Length_Of_X_Move Length of table in Bytes
dcb.b ... XMove definition ...
YMove_NN
dcb.b ... YMove definition ...
ENDR
The movements are stored in the following way. The movement table uses the same format for both X and Y coordinates. It begins and ends with a value of zero, which terminates the list equally well if the movement is being played forwards or backwards.
%00000000 End of the move
%0ddddddd ddddddd holds the distance to be moved in pixels,
signed on 7 bits (-128 to +128)
This distance will be added to the current object
coordinate to get the new screen position
%1wwwwwww specifies the number of
1/50 counts to wait until the next
movement
The AMAL programs
AMAL command strings are stored in normal Ascii format.
Progs dc.w Number_Of_Programs Holds the number of AMAL programs
* Offset list
REPT Number_Of_Programs
dc.w (Prog_NN-Progs)/2 Distance to the NN'th program