message.c[](3 message.cHhdB@LLLPTEXTCWIE[](3#include #include #include #include #include "message.h" static char* messageptr; // Current position in message static int messxpos; // X position of letter pointed to by message ptr static short sinewave; // Sine value for waveyness. static u_char messon = 0; void StartMessage(char* messptr) { // Initialise variables and switch message on. messageptr = messptr; messxpos = 320; sinewave = 0; messon = 1; } void PlotMessage(GsOT* OT) { GsSPRITE letterspr; int letterno = 0; int x = messxpos; short sine = sinewave; char letter; if (messon) { InitGsSprite(&letterspr); // Plot each letter of message until no more will // fit on screen or end of message has been reached while (x<320 && *(messageptr+letterno)!=0) { letterspr.x = x; letterspr.y = 120+(DJsin(sine)>>8); // Calculate y value of letter letter = *(messageptr+letterno); if (letter!=32) { CalcLetterPos(&letterspr, letter); // Find tpage, u & v values for letter GsSortFastSprite(&letterspr, OT, 3); } x+=16; letterno++; if ((sine+=256) >= 4096) sine-=4096; } } } u_char Message() { u_char retval = 0; if (messon) { // Move message left if ((messxpos-=2) == -16) { // Move onto new letter if ((sinewave+=256) >= 4096) sinewave-=4096; messxpos = 0; messageptr++; if (*(messageptr)==0) {retval = 1; messon = 0;} } // Move sine wave if ((sinewave+=64) >= 4096) sinewave-=4096; } return retval; }ZZR message.cPreferencesrozentallerTEXTCWIE[]H Monaco,m,m( ZZR6RMPSRMWBB*LR