* 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