//Setup implementation #include #include #include "comconst.h" #include "setup.h" #include "pad.h" #include "arena.h" #include "worm.h" #define NUDGES 5 #define MAXCONTROLLERS 4 #define NEWPUNEADDR 0x801b0000 int CSetup::mWormX[7]={0, 63, 127, 191, 0, 63, 191}; int CSetup::mWormY[7]={115, 115, 115, 115, 184, 184, 184}; int CSetup::mWormW[7]={63, 64, 64, 64, 63, 64, 64}; int CSetup::mWormH[7]={69, 69, 69, 69, 69, 69, 69}; extern CPad* pad[MAXCONTROLLERS]; CSetup::CSetup() { GsIMAGE im; RECT rect; RECT crect; GsGetTimInfo((unsigned long*)(NEWPUNEADDR + 4), &im); rect.x=im.px; rect.y=im.py; rect.h=im.ph; rect.w=im.pw; LoadImage(&rect, im.pixel); crect.x=im.cx; crect.y=im.cy; crect.h=im.ch; crect.w=im.cw; LoadImage(&crect, im.clut); DrawSync(0); int tpage=GetTPage(1, 0, rect.x, rect.y); for (int g=0; gattribute=(unsigned long)1<<24; mWorms[g]->tpage=tpage; mWorms[g]->cx=im.cx; mWorms[g]->cy=im.cy; mWorms[g]->r=128; mWorms[g]->g=128; mWorms[g]->b=128; mWorms[g]->u=mWormX[g]; mWorms[g]->v=mWormY[g]; mWorms[g]->w=mWormW[g]; mWorms[g]->h=mWormH[g]; mWorms[g]->mx=0; mWorms[g]->my=0; mWorms[g]->scalex=2*ONE; mWorms[g]->scaley=2*ONE; mWorms[g]->rotate=0; } mTitle=new GsSPRITE; mTitle->attribute=(unsigned long)1<<24; mTitle->tpage=tpage; mTitle->cx=im.cx; mTitle->cy=im.cy; mTitle->r=128; mTitle->g=128; mTitle->b=128; mTitle->u=0; mTitle->v=0; mTitle->x=32-XOFFSET; mTitle->y=0-YOFFSET; mTitle->w=256; mTitle->h=115; mTitle->mx=0; mTitle->my=0; mTitle->scalex=2*ONE; mTitle->scaley=2*ONE; mTitle->rotate=0; for (int g=0; gx=(64+g*128)-XOFFSET; mWorms[mControllerColour[g]]->y=250-YOFFSET; GsSortSprite(mWorms[mControllerColour[g]], orderingTable, 0); } for (int g=0; gUpPressed()) { mNudge[g]++; if (mNudge[g] == NUDGES) { int oldcolour=mControllerColour[g]; do { mControllerColour[g]++; if (mControllerColour[g]>MAXCOLOURS) { mControllerColour[g]=0; } } while (mColourUsed[mControllerColour[g]]==TRUE); mNudge[g]=0; mColourUsed[oldcolour]=FALSE; if (mControllerColour[g]DownPressed()) { mNudge[g]++; if (mNudge[g]==NUDGES) { int oldcolour=mControllerColour[g]; do { mControllerColour[g]--; if (mControllerColour[g]<0) { mControllerColour[g]=MAXCOLOURS; } } while (mColourUsed[mControllerColour[g]]==TRUE); mNudge[g]=0; mColourUsed[oldcolour]=FALSE; if (mControllerColour[g]StartPressed()) && (!pad[g]->SelectPressed())) { for (int h=0; hSelectPressed()) && (pad[g]->StartPressed())) { return 2; } } return 1; }