#include "Sprite.h" void ProperInitialiseTexture(long TIMdata, GsIMAGE *imageInfo) { RECT rect; GsGetTimInfo((u_long *)(TIMdata+4), imageInfo); setRECT(&rect, imageInfo->px, imageInfo->py, imageInfo->pw, imageInfo->ph); LoadImage(&rect, imageInfo->pixel); DrawSync(0); if ((imageInfo->pmode>>3) & 0x01) { setRECT(&rect, imageInfo->cx, imageInfo->cy, imageInfo->cw, imageInfo->ch); LoadImage(&rect, imageInfo->clut); } DrawSync(0); } void InitSprite(GsSPRITE *sprite, GsIMAGE *imageInfo, int u, int v, int w, int h) { sprite->attribute = (imageInfo->pmode<<24) + (1<<28) + (1<<30); sprite->x = 0; sprite->y = 0; sprite->u = u; sprite->v = v; sprite->w = w; sprite->h = h; sprite->mx = sprite->my = 0; sprite->r = sprite->g = sprite->b = 128; sprite->scalex = sprite->scaley = ONE; sprite->cx = imageInfo->cx; sprite->cy = imageInfo->cy; sprite->rotate = 0; sprite->tpage = GetTPage(imageInfo->pmode, 1, (imageInfo->px>>6)<<6, (imageInfo->py>>7)<<7); } void DrawTimes(GsSPRITE *timeSprite, GsSPRITE *big, GsSPRITE *small, GsOT *WorldOT, long bestTime, long time, long *lapTimes) { int i; timeSprite->x = -14; timeSprite->y = -124; GsSortSprite(timeSprite, WorldOT, 0); // Lap time big->u = 0; big->x = 44; big->y = -124; small->y = -124; small->r = small->g = small->b = 128; DrawLapTime(big, small, WorldOT, time); if (bestTime > 0) { small->y = -112; small->x = 70; small->g = 64; small->b = 0; DrawSmallTime(small, WorldOT, bestTime); } small->g = 0; for (i=0; i<5; i++) { if (lapTimes[i] == 0) break; small->x = 70; small->y += 12; small->r -= 24; DrawSmallTime(small, WorldOT, lapTimes[i]); } } void DrawLapTime(GsSPRITE *big, GsSPRITE *small, GsOT *WorldOT, long time) { int milli, sec, min, num; GsSortSprite(big, WorldOT, 0); big->x += 12; milli = time % 100; sec = (time/100)%60; min = time/6000; num = (min/10)%10; big->u = (num+1)*12; GsSortSprite(big, WorldOT, 0); big->x += 12; num = min%10; big->u = (num+1)*12; GsSortSprite(big, WorldOT, 0); big->x += 12; big->u = 0; GsSortSprite(big, WorldOT, 0); big->x += 12; num = (sec/10)%10; big->u = (num+1)*12; GsSortSprite(big, WorldOT, 0); big->x += 12; num = sec%10; big->u = (num+1)*12; GsSortSprite(big, WorldOT, 0); small->x = big->x+12; small->u = 0; GsSortSprite(small, WorldOT, 0); small->x += 9; num = (milli/10)%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x += 9; num = milli%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); } void DrawSmallTime(GsSPRITE *small, GsOT *WorldOT, long time) { int milli, sec, min, num; milli = time % 100; sec = (time/100)%60; min = time/6000; num = (min/10)%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x += 9; num = min%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x += 9; small->u = 0; GsSortSprite(small, WorldOT, 0); small->x += 9; num = (sec/10)%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x += 9; num = sec%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x = small->x+9; small->u = 0; GsSortSprite(small, WorldOT, 0); small->x += 9; num = (milli/10)%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); small->x += 9; num = milli%10; small->u = (num+1)*12; GsSortSprite(small, WorldOT, 0); }