//* preset.c - sprite preset initialization etc. //* System library headers #include #include //* Application headers #include "main.h" #include "procs.h" //*------------------------------------------------------------------------------------------ //* PresetSprite - Sets scp to preset values //*------------------------------------------------------------------------------------- void PresetSprite(register struct SCTRL *scp, register int presetIdx) { register struct SCTRL *sctrlDp=&preset[presetIdx].sctrl; register GsSPRITE *spriteDp=&preset[presetIdx].sprite; register GsSPRITE *shadDp=&preset[presetIdx].shad; //* Make sure spriteLink, shadLink, sectorLink and freeLink are preserved sctrlDp->spriteLink = scp->spriteLink; sctrlDp->shadLink = scp->shadLink; sctrlDp->sectorLink = scp->sectorLink; sctrlDp->freeLink = scp->freeLink; //* Set sprite to preset values *scp = *sctrlDp; *scp->spriteLink = *spriteDp; *scp->shadLink = *shadDp; } //*------------------------------------------------------------------------------------------ //* SetSpritePresets //*------------------------------------------------------------------------------------- void SetSpritePresets(void) { //* //* Default settings for a 'clean' pool sprite //* //* Set sprite control SCTRL default settings preset[PRESET_POOL_DEFAULT].sctrl.wx = 0; preset[PRESET_POOL_DEFAULT].sctrl.wy = 0; preset[PRESET_POOL_DEFAULT].sctrl.wxMid = 0; preset[PRESET_POOL_DEFAULT].sctrl.wyMid = 0; preset[PRESET_POOL_DEFAULT].sctrl.shadHW = 16; preset[PRESET_POOL_DEFAULT].sctrl.accelX = 0; preset[PRESET_POOL_DEFAULT].sctrl.accelY = 0; preset[PRESET_POOL_DEFAULT].sctrl.speed = 0; preset[PRESET_POOL_DEFAULT].sctrl.repsPerFrame = 0; preset[PRESET_POOL_DEFAULT].sctrl.frameCount = 0; preset[PRESET_POOL_DEFAULT].sctrl.currFrame = 0; preset[PRESET_POOL_DEFAULT].sctrl.alive = 0; preset[PRESET_POOL_DEFAULT].sctrl.aliveLinkF = NULL; preset[PRESET_POOL_DEFAULT].sctrl.aliveLinkB = NULL; preset[PRESET_POOL_DEFAULT].sctrl.dir = 0; preset[PRESET_POOL_DEFAULT].sctrl.moveCount = 0; preset[PRESET_POOL_DEFAULT].sctrl.moveMax = 0; preset[PRESET_POOL_DEFAULT].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_POOL_DEFAULT].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_POOL_DEFAULT].sctrl.ID = ID_SOFT_ICSAL; preset[PRESET_POOL_DEFAULT].sctrl.subID = NORMAL; preset[PRESET_POOL_DEFAULT].sctrl.lifeCount = 0; preset[PRESET_POOL_DEFAULT].sctrl.bbXOff = 0; preset[PRESET_POOL_DEFAULT].sctrl.bbYOff = 0; preset[PRESET_POOL_DEFAULT].sctrl.bbW = 0; preset[PRESET_POOL_DEFAULT].sctrl.bbH = 0; preset[PRESET_POOL_DEFAULT].sctrl.topOff = 0; preset[PRESET_POOL_DEFAULT].sctrl.imHit = 0; preset[PRESET_POOL_DEFAULT].sctrl.high = 0; preset[PRESET_POOL_DEFAULT].sctrl.shadBase = 0; preset[PRESET_POOL_DEFAULT].sctrl.shadStat = 1; preset[PRESET_POOL_DEFAULT].sctrl.isLight = 0; preset[PRESET_POOL_DEFAULT].sctrl.unintICSAL = 0; preset[PRESET_POOL_DEFAULT].sctrl.ICSALop = NULL; preset[PRESET_POOL_DEFAULT].sctrl.ICSALloopStart = NULL; preset[PRESET_POOL_DEFAULT].sctrl.ICSALdataLoopStart = NULL; preset[PRESET_POOL_DEFAULT].sctrl.ICSALdataStart = NULL; preset[PRESET_POOL_DEFAULT].sctrl.ICSALdata = NULL; preset[PRESET_POOL_DEFAULT].sctrl.ICSALloopCount = 0; preset[PRESET_POOL_DEFAULT].sctrl.freeLink = NULL; //* Will be properly set by PutSprite() preset[PRESET_POOL_DEFAULT].sctrl.sectorLink = NULL; //* Will be properly set by PutSprite() preset[PRESET_POOL_DEFAULT].sctrl.spriteLink = NULL; //* Will be properly set by PutSprite() preset[PRESET_POOL_DEFAULT].sctrl.shadLink = NULL; //* Will be properly set by PutSprite() preset[PRESET_POOL_DEFAULT].sctrl.target = NULL; //* Set actual sprite GsSPRITE default settings preset[PRESET_POOL_DEFAULT].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_POOL_DEFAULT].sprite.w = 32; preset[PRESET_POOL_DEFAULT].sprite.h = 32; preset[PRESET_POOL_DEFAULT].sprite.tpage = GetTPage(0, 0, timData[TIM_WNOISE].px, timData[TIM_WNOISE].py); preset[PRESET_POOL_DEFAULT].sprite.u = 0; preset[PRESET_POOL_DEFAULT].sprite.v = 0; preset[PRESET_POOL_DEFAULT].sprite.cx = timData[TIM_WNOISE].cx; preset[PRESET_POOL_DEFAULT].sprite.cy = timData[TIM_WNOISE].cy; preset[PRESET_POOL_DEFAULT].sprite.r = preset[PRESET_POOL_DEFAULT].sprite.g = preset[PRESET_POOL_DEFAULT].sprite.b = 128; preset[PRESET_POOL_DEFAULT].sprite.mx = 0; preset[PRESET_POOL_DEFAULT].sprite.my = 0; preset[PRESET_POOL_DEFAULT].sprite.scalex = ONE; preset[PRESET_POOL_DEFAULT].sprite.scaley = ONE; preset[PRESET_POOL_DEFAULT].sprite.rotate = 0; //* Set shadow GsSPRITE default settings preset[PRESET_POOL_DEFAULT].shad.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_3 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_POOL_DEFAULT].shad.w = 32; preset[PRESET_POOL_DEFAULT].shad.h = 20; preset[PRESET_POOL_DEFAULT].shad.tpage = GetTPage(0, 2, timData[TIM_SHADZ].px, timData[TIM_SHADZ].py); preset[PRESET_POOL_DEFAULT].shad.u = SHAD_32WIDE; preset[PRESET_POOL_DEFAULT].shad.v = 0; preset[PRESET_POOL_DEFAULT].shad.cx = timData[TIM_SHADZ].cx; preset[PRESET_POOL_DEFAULT].shad.cy = timData[TIM_SHADZ].cy; preset[PRESET_POOL_DEFAULT].shad.r = preset[PRESET_POOL_DEFAULT].shad.g = preset[PRESET_POOL_DEFAULT].shad.b = 128; preset[PRESET_POOL_DEFAULT].shad.mx = 0; preset[PRESET_POOL_DEFAULT].shad.my = 0; preset[PRESET_POOL_DEFAULT].shad.scalex = ONE; preset[PRESET_POOL_DEFAULT].shad.scaley = ONE; preset[PRESET_POOL_DEFAULT].shad.rotate = 0; //* //* Settings for a normal bullet //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_NORMAL_BULLET] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_NORMAL_BULLET].sctrl.ID = ID_BULLET; preset[PRESET_NORMAL_BULLET].sctrl.subID = BULLET_NORMAL; preset[PRESET_NORMAL_BULLET].sctrl.bbXOff = 1; preset[PRESET_NORMAL_BULLET].sctrl.bbYOff = 3; preset[PRESET_NORMAL_BULLET].sctrl.bbW = 6; preset[PRESET_NORMAL_BULLET].sctrl.bbH = 4; preset[PRESET_NORMAL_BULLET].sctrl.topOff = 5; preset[PRESET_NORMAL_BULLET].sctrl.shadHW = 4; preset[PRESET_NORMAL_BULLET].sctrl.ICSALop = bulletPath; preset[PRESET_NORMAL_BULLET].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_ON + A_DISPLAY_OFF); preset[PRESET_NORMAL_BULLET].sprite.w = 8; preset[PRESET_NORMAL_BULLET].sprite.h = 8; preset[PRESET_NORMAL_BULLET].sprite.tpage = GetTPage(0, 0, timData[TIM_BULLET].px, timData[TIM_BULLET].py); preset[PRESET_NORMAL_BULLET].sprite.u = ((timData[TIM_BULLET].px<<2) % 256); preset[PRESET_NORMAL_BULLET].sprite.v = timData[TIM_BULLET].py; preset[PRESET_NORMAL_BULLET].sprite.cx = timData[TIM_BULLET].cx; preset[PRESET_NORMAL_BULLET].sprite.cy = timData[TIM_BULLET].cy; preset[PRESET_NORMAL_BULLET].shad.w = 8; preset[PRESET_NORMAL_BULLET].shad.u = SHAD_8WIDE; preset[PRESET_NORMAL_BULLET].shad.r = preset[PRESET_NORMAL_BULLET].shad.g = preset[PRESET_NORMAL_BULLET].shad.b = 64; //* //* Settings for a normal bullet blur1 //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_NORMAL_BULLET_BLUR1] = preset[PRESET_NORMAL_BULLET]; preset[PRESET_NORMAL_BULLET_BLUR1].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_4 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_NORMAL_BULLET_BLUR1].sprite.tpage = GetTPage(0, 3, timData[TIM_BULLET].px, timData[TIM_BULLET].py); preset[PRESET_NORMAL_BULLET_BLUR1].sprite.u = ((timData[TIM_BULLET].px<<2) % 256) + 8; preset[PRESET_NORMAL_BULLET_BLUR1].sctrl.ID = ID_SOFT_ICSAL; preset[PRESET_NORMAL_BULLET_BLUR1].sctrl.subID = NORMAL; preset[PRESET_NORMAL_BULLET_BLUR1].sctrl.ICSALop = NULL; preset[PRESET_NORMAL_BULLET_BLUR1].shad.r = preset[PRESET_NORMAL_BULLET_BLUR1].shad.g = preset[PRESET_NORMAL_BULLET_BLUR1].shad.b = 32; //* //* Settings for a normal bullet blur2 //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_NORMAL_BULLET_BLUR2] = preset[PRESET_NORMAL_BULLET_BLUR1]; preset[PRESET_NORMAL_BULLET_BLUR2].sprite.u = ((timData[TIM_BULLET].px<<2) % 256) + 16; preset[PRESET_NORMAL_BULLET_BLUR2].shad.r = preset[PRESET_NORMAL_BULLET_BLUR2].shad.g = preset[PRESET_NORMAL_BULLET_BLUR2].shad.b = 16; //* //* Settings for a gun smoke sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_GUNSMOKE] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_GUNSMOKE].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_GUNSMOKE].sprite.w = 16; preset[PRESET_GUNSMOKE].sprite.h = 16; preset[PRESET_GUNSMOKE].sprite.tpage = GetTPage(0, 1, timData[TIM_GUNSMOKE].px, timData[TIM_GUNSMOKE].py); preset[PRESET_GUNSMOKE].sprite.u = ((timData[TIM_GUNSMOKE].px<<2) % 256); preset[PRESET_GUNSMOKE].sprite.v = timData[TIM_GUNSMOKE].py; preset[PRESET_GUNSMOKE].sprite.cx = timData[TIM_GUNSMOKE].cx; preset[PRESET_GUNSMOKE].sprite.cy = timData[TIM_GUNSMOKE].cy; preset[PRESET_GUNSMOKE].sctrl.bbXOff = 4; preset[PRESET_GUNSMOKE].sctrl.bbYOff = 7; preset[PRESET_GUNSMOKE].sctrl.bbW = 8; preset[PRESET_GUNSMOKE].sctrl.bbH = 8; preset[PRESET_GUNSMOKE].sctrl.topOff = 10; preset[PRESET_GUNSMOKE].sctrl.isLight = 1; preset[PRESET_GUNSMOKE].sctrl.shadHW = 8; preset[PRESET_GUNSMOKE].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_GUNSMOKE].sctrl.currLock = RunThisTime(LOCK_ALTFRAMES); preset[PRESET_GUNSMOKE].sctrl.ICSALop = gunSmoke; preset[PRESET_GUNSMOKE].shad.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_GUNSMOKE].shad.w = 16; preset[PRESET_GUNSMOKE].shad.u = SHAD_16WIDE; preset[PRESET_GUNSMOKE].shad.r = preset[PRESET_GUNSMOKE].shad.g = preset[PRESET_GUNSMOKE].shad.b = 200; //* //* Settings for a 'Rainbow Death' bullet //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_RBOW_BULLET] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_RBOW_BULLET].sctrl.ID = ID_BULLET; preset[PRESET_RBOW_BULLET].sctrl.subID = BULLET_RAIN_DEATH; preset[PRESET_RBOW_BULLET].sctrl.bbXOff = 3; preset[PRESET_RBOW_BULLET].sctrl.bbYOff = 3; preset[PRESET_RBOW_BULLET].sctrl.bbW = 10; preset[PRESET_RBOW_BULLET].sctrl.bbH = 4; preset[PRESET_RBOW_BULLET].sctrl.topOff = 10; preset[PRESET_RBOW_BULLET].sctrl.isLight = 1; preset[PRESET_RBOW_BULLET].sctrl.shadHW = 8; preset[PRESET_RBOW_BULLET].sctrl.ICSALop = rainDeathFire; preset[PRESET_RBOW_BULLET].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_RBOW_BULLET].sprite.w = 16; preset[PRESET_RBOW_BULLET].sprite.h = 16; preset[PRESET_RBOW_BULLET].sprite.tpage = GetTPage(0, 0, timData[TIM_RBOW_FIRE].px, timData[TIM_RBOW_FIRE].py); preset[PRESET_RBOW_BULLET].sprite.u = ((timData[TIM_RBOW_FIRE].px<<2) % 256); preset[PRESET_RBOW_BULLET].sprite.v = timData[TIM_RBOW_FIRE].py; preset[PRESET_RBOW_BULLET].sprite.cx = timData[TIM_RBOW_FIRE].cx; preset[PRESET_RBOW_BULLET].sprite.cy = timData[TIM_RBOW_FIRE].cy; preset[PRESET_RBOW_BULLET].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_RBOW_BULLET].shad.w = 16; preset[PRESET_RBOW_BULLET].shad.u = SHAD_16WIDE; //preset[PRESET_RBOW_BULLET].shad.r = preset[PRESET_RBOW_BULLET].shad.g = preset[PRESET_RBOW_BULLET].shad.b = 64; //* //* Settings for a 'Rainbow Death' bullet blur1 //* //* Make same as PRESET_RBOW_BULLET so only differing members have to be set preset[PRESET_RBOW_BULLET_BLUR1] = preset[PRESET_RBOW_BULLET]; preset[PRESET_RBOW_BULLET_BLUR1].sctrl.ID = ID_SOFT_ICSAL; preset[PRESET_RBOW_BULLET_BLUR1].sctrl.subID = NORMAL; preset[PRESET_RBOW_BULLET_BLUR1].sctrl.ICSALop = NULL; // preset[PRESET_RBOW_BULLET_BLUR1].sctrl.shadStat = 0; preset[PRESET_RBOW_BULLET_BLUR1].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_RBOW_BULLET_BLUR1].sprite.tpage = GetTPage(0, 1, timData[TIM_RBOW_FIRE].px, timData[TIM_RBOW_FIRE].py); preset[PRESET_RBOW_BULLET_BLUR1].sprite.r = preset[PRESET_RBOW_BULLET_BLUR1].sprite.g = preset[PRESET_RBOW_BULLET_BLUR1].sprite.b = 32; //preset[PRESET_RBOW_BULLET_BLUR1].shad.r = preset[PRESET_RBOW_BULLET_BLUR1].shad.g = preset[PRESET_RBOW_BULLET_BLUR1].shad.b = 64; //* //* Settings for a 'Rainbow Death' bullet blur2 //* //* Make same as PRESET_RBOW_BULLET so only differing members have to be set preset[PRESET_RBOW_BULLET_BLUR2] = preset[PRESET_RBOW_BULLET_BLUR1]; preset[PRESET_RBOW_BULLET_BLUR2].sprite.r = preset[PRESET_RBOW_BULLET_BLUR2].sprite.g = preset[PRESET_RBOW_BULLET_BLUR2].sprite.b = 16; //* //* Settings for a 'Fruit Drop' bullet //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FDROP_BULLET] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FDROP_BULLET].sctrl.ID = ID_BULLET; preset[PRESET_FDROP_BULLET].sctrl.subID = BULLET_FRUIT_DROP; preset[PRESET_FDROP_BULLET].sctrl.bbXOff = 3; preset[PRESET_FDROP_BULLET].sctrl.bbYOff = 3; preset[PRESET_FDROP_BULLET].sctrl.bbW = 10; preset[PRESET_FDROP_BULLET].sctrl.bbH = 4; preset[PRESET_FDROP_BULLET].sctrl.topOff = 10; preset[PRESET_FDROP_BULLET].sctrl.shadHW = 8; preset[PRESET_FDROP_BULLET].sctrl.ICSALop = fdropPath; preset[PRESET_FDROP_BULLET].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_FDROP_BULLET].sprite.w = 16; preset[PRESET_FDROP_BULLET].sprite.h = 16; preset[PRESET_FDROP_BULLET].sprite.tpage = GetTPage(0, 0, timData[TIM_FDROP_FIRE].px, timData[TIM_FDROP_FIRE].py); //preset[PRESET_FDROP_BULLET].sprite.u = ((timData[TIM_FDROP_FIRE].px<<2) % 256); preset[PRESET_FDROP_BULLET].sprite.v = timData[TIM_FDROP_FIRE].py; preset[PRESET_FDROP_BULLET].sprite.cx = timData[TIM_FDROP_FIRE].cx; preset[PRESET_FDROP_BULLET].sprite.cy = timData[TIM_FDROP_FIRE].cy; preset[PRESET_FDROP_BULLET].shad.w = 16; preset[PRESET_FDROP_BULLET].shad.u = SHAD_16WIDE; //preset[PRESET_FDROP_BULLET].shad.r = preset[PRESET_FDROP_BULLET].shad.g = preset[PRESET_FDROP_BULLET].shad.b = 64; //* //* Settings for a 'Fruit Drop' bullet blur //* //* Make same as PRESET_RBOW_BULLET so only differing members have to be set preset[PRESET_FDROP_BULLET_BLUR] = preset[PRESET_FDROP_BULLET]; preset[PRESET_FDROP_BULLET_BLUR].sctrl.ID = ID_SOFT_ICSAL; preset[PRESET_FDROP_BULLET_BLUR].sctrl.subID = NORMAL; preset[PRESET_FDROP_BULLET_BLUR].sctrl.shadStat = 0; preset[PRESET_FDROP_BULLET_BLUR].sctrl.ICSALop = NULL; preset[PRESET_FDROP_BULLET_BLUR].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_4 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_FDROP_BULLET_BLUR].sprite.tpage = GetTPage(0, 3, timData[TIM_FDROP_FIRE].px, timData[TIM_FDROP_FIRE].py); //preset[PRESET_FDROP_BULLET_BLUR].shad.r = preset[PRESET_FDROP_BULLET_BLUR].shad.g = preset[PRESET_FDROP_BULLET_BLUR].shad.b = 64; //* //* Settings for a 'Fruit Drop build-up' sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FDROP_BUILDUP] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FDROP_BUILDUP].sctrl.bbXOff = 3; preset[PRESET_FDROP_BUILDUP].sctrl.bbYOff = 3; preset[PRESET_FDROP_BUILDUP].sctrl.bbW = 10; preset[PRESET_FDROP_BUILDUP].sctrl.bbH = 4; preset[PRESET_FDROP_BUILDUP].sctrl.topOff = 8; preset[PRESET_FDROP_BUILDUP].sctrl.shadBase = 6; preset[PRESET_FDROP_BUILDUP].sctrl.shadHW = 8; preset[PRESET_FDROP_BUILDUP].sctrl.ICSALop = fdropBuildup; preset[PRESET_FDROP_BUILDUP].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_FDROP_BUILDUP].sprite.w = 16; preset[PRESET_FDROP_BUILDUP].sprite.h = 16; preset[PRESET_FDROP_BUILDUP].sprite.tpage = GetTPage(0, 0, timData[TIM_FDROP_FIRE].px, timData[TIM_FDROP_FIRE].py); preset[PRESET_FDROP_BUILDUP].sprite.u = ((timData[TIM_FDROP_FIRE].px<<2) % 256) + 128; preset[PRESET_FDROP_BUILDUP].sprite.v = timData[TIM_FDROP_FIRE].py; preset[PRESET_FDROP_BUILDUP].sprite.cx = timData[TIM_FDROP_FIRE].cx; preset[PRESET_FDROP_BUILDUP].sprite.cy = timData[TIM_FDROP_FIRE].cy; preset[PRESET_FDROP_BUILDUP].shad.w = 16; preset[PRESET_FDROP_BUILDUP].shad.u = SHAD_16WIDE; //* //* Settings for the 8 fruit sprites //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_APPLE] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FRUIT_APPLE].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_APPLE].px, timData[TIM_FRUIT_APPLE].py); preset[PRESET_FRUIT_APPLE].sprite.u = ((timData[TIM_FRUIT_APPLE].px<<2) % 256); preset[PRESET_FRUIT_APPLE].sprite.v = timData[TIM_FRUIT_APPLE].py; preset[PRESET_FRUIT_APPLE].sprite.cx = timData[TIM_FRUIT_APPLE].cx; preset[PRESET_FRUIT_APPLE].sprite.cy = timData[TIM_FRUIT_APPLE].cy; //preset[PRESET_FRUIT_APPLE].sctrl.ID = ID_PICKUP; preset[PRESET_FRUIT_APPLE].sctrl.subID = PICKUP_FRUIT_APPLE; preset[PRESET_FRUIT_APPLE].sctrl.bbW = 24; preset[PRESET_FRUIT_APPLE].sctrl.bbH = 8; preset[PRESET_FRUIT_APPLE].sctrl.bbXOff = 4; preset[PRESET_FRUIT_APPLE].sctrl.bbYOff = 8; preset[PRESET_FRUIT_APPLE].sctrl.topOff = 22; preset[PRESET_FRUIT_APPLE].sctrl.high = 240; preset[PRESET_FRUIT_APPLE].sctrl.ICSALop = fruitFall; preset[PRESET_FRUIT_APPLE].sctrl.shadStat = 0; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_ORANGE] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_ORANGE].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_ORANGE].px, timData[TIM_FRUIT_ORANGE].py); preset[PRESET_FRUIT_ORANGE].sprite.u = ((timData[TIM_FRUIT_ORANGE].px<<2) % 256); preset[PRESET_FRUIT_ORANGE].sprite.v = timData[TIM_FRUIT_ORANGE].py; preset[PRESET_FRUIT_ORANGE].sprite.cx = timData[TIM_FRUIT_ORANGE].cx; preset[PRESET_FRUIT_ORANGE].sprite.cy = timData[TIM_FRUIT_ORANGE].cy; preset[PRESET_FRUIT_ORANGE].sctrl.subID = PICKUP_FRUIT_ORANGE; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_LEMON] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_LEMON].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_LEMON].px, timData[TIM_FRUIT_LEMON].py); preset[PRESET_FRUIT_LEMON].sprite.u = ((timData[TIM_FRUIT_LEMON].px<<2) % 256); preset[PRESET_FRUIT_LEMON].sprite.v = timData[TIM_FRUIT_LEMON].py; preset[PRESET_FRUIT_LEMON].sprite.cx = timData[TIM_FRUIT_LEMON].cx; preset[PRESET_FRUIT_LEMON].sprite.cy = timData[TIM_FRUIT_LEMON].cy; preset[PRESET_FRUIT_LEMON].sctrl.bbYOff = 10; preset[PRESET_FRUIT_LEMON].sctrl.subID = PICKUP_FRUIT_LEMON; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_MELON] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_MELON].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_MELON].px, timData[TIM_FRUIT_MELON].py); preset[PRESET_FRUIT_MELON].sprite.u = ((timData[TIM_FRUIT_MELON].px<<2) % 256); preset[PRESET_FRUIT_MELON].sprite.v = timData[TIM_FRUIT_MELON].py; preset[PRESET_FRUIT_MELON].sprite.cx = timData[TIM_FRUIT_MELON].cx; preset[PRESET_FRUIT_MELON].sprite.cy = timData[TIM_FRUIT_MELON].cy; preset[PRESET_FRUIT_MELON].sctrl.subID = PICKUP_FRUIT_MELON; preset[PRESET_FRUIT_MELON].sctrl.topOff = 14; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_CHERRY] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_CHERRY].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_CHERRY].px, timData[TIM_FRUIT_CHERRY].py); preset[PRESET_FRUIT_CHERRY].sprite.u = ((timData[TIM_FRUIT_CHERRY].px<<2) % 256); preset[PRESET_FRUIT_CHERRY].sprite.v = timData[TIM_FRUIT_CHERRY].py; preset[PRESET_FRUIT_CHERRY].sprite.cx = timData[TIM_FRUIT_CHERRY].cx; preset[PRESET_FRUIT_CHERRY].sprite.cy = timData[TIM_FRUIT_CHERRY].cy; preset[PRESET_FRUIT_CHERRY].sctrl.subID = PICKUP_FRUIT_CHERRY; preset[PRESET_FRUIT_CHERRY].sctrl.bbYOff = 10; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_PEAR] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_PEAR].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_PEAR].px, timData[TIM_FRUIT_PEAR].py); preset[PRESET_FRUIT_PEAR].sprite.u = ((timData[TIM_FRUIT_PEAR].px<<2) % 256); preset[PRESET_FRUIT_PEAR].sprite.v = timData[TIM_FRUIT_PEAR].py; preset[PRESET_FRUIT_PEAR].sprite.cx = timData[TIM_FRUIT_PEAR].cx; preset[PRESET_FRUIT_PEAR].sprite.cy = timData[TIM_FRUIT_PEAR].cy; preset[PRESET_FRUIT_PEAR].sctrl.subID = PICKUP_FRUIT_PEAR; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_SBERRY] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_SBERRY].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_SBERRY].px, timData[TIM_FRUIT_SBERRY].py); preset[PRESET_FRUIT_SBERRY].sprite.u = ((timData[TIM_FRUIT_SBERRY].px<<2) % 256); preset[PRESET_FRUIT_SBERRY].sprite.v = timData[TIM_FRUIT_SBERRY].py; preset[PRESET_FRUIT_SBERRY].sprite.cx = timData[TIM_FRUIT_SBERRY].cx; preset[PRESET_FRUIT_SBERRY].sprite.cy = timData[TIM_FRUIT_SBERRY].cy; preset[PRESET_FRUIT_SBERRY].sctrl.subID = PICKUP_FRUIT_SBERRY; //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_GRAPES] = preset[PRESET_FRUIT_APPLE]; preset[PRESET_FRUIT_GRAPES].sprite.tpage = GetTPage(0, 0, timData[TIM_FRUIT_GRAPES].px, timData[TIM_FRUIT_GRAPES].py); preset[PRESET_FRUIT_GRAPES].sprite.u = ((timData[TIM_FRUIT_GRAPES].px<<2) % 256); preset[PRESET_FRUIT_GRAPES].sprite.v = timData[TIM_FRUIT_GRAPES].py; preset[PRESET_FRUIT_GRAPES].sprite.cx = timData[TIM_FRUIT_GRAPES].cx; preset[PRESET_FRUIT_GRAPES].sprite.cy = timData[TIM_FRUIT_GRAPES].cy; preset[PRESET_FRUIT_GRAPES].sctrl.subID = PICKUP_FRUIT_GRAPES; preset[PRESET_FRUIT_GRAPES].sctrl.bbYOff = 10; //* //* Settings for the fruit splash sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_SPLASH] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FRUIT_SPLASH].sprite.tpage = GetTPage(0, 0, timData[TIM_FDROP_SPLASH].px, timData[TIM_FDROP_SPLASH].py); preset[PRESET_FRUIT_SPLASH].sprite.u = ((timData[TIM_FDROP_SPLASH].px<<2) % 256); preset[PRESET_FRUIT_SPLASH].sprite.v = timData[TIM_FDROP_SPLASH].py; preset[PRESET_FRUIT_SPLASH].sctrl.shadStat = 0; preset[PRESET_FRUIT_SPLASH].sctrl.frameLock = LOCK_3FRAMES; preset[PRESET_FRUIT_SPLASH].sctrl.currLock = RunNextTime(LOCK_3FRAMES); preset[PRESET_FRUIT_SPLASH].sctrl.ICSALop = fruitSplash; //* //* Settings for enemy explosion fireball component sprites //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_EXPLODE_FIREBALL] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_EXPLODE_FIREBALL].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_ON + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_EXPLODE_FIREBALL].sprite.w = preset[PRESET_EXPLODE_FIREBALL].sprite.h = 16; preset[PRESET_EXPLODE_FIREBALL].sprite.tpage = GetTPage(0, 1, timData[TIM_XPLODE1].px, timData[TIM_XPLODE1].py); preset[PRESET_EXPLODE_FIREBALL].sprite.u = ((timData[TIM_XPLODE1].px<<2) % 256); preset[PRESET_EXPLODE_FIREBALL].sprite.v = timData[TIM_XPLODE1].py; preset[PRESET_EXPLODE_FIREBALL].sprite.cx = timData[TIM_XPLODE1].cx; preset[PRESET_EXPLODE_FIREBALL].sprite.cy = timData[TIM_XPLODE1].cy; preset[PRESET_EXPLODE_FIREBALL].sprite.r = preset[PRESET_EXPLODE_FIREBALL].sprite.g = preset[PRESET_EXPLODE_FIREBALL].sprite.b = 255; preset[PRESET_EXPLODE_FIREBALL].sprite.mx = preset[PRESET_EXPLODE_FIREBALL].sprite.my = 8; preset[PRESET_EXPLODE_FIREBALL].sctrl.speed = 1; preset[PRESET_EXPLODE_FIREBALL].sctrl.bbW = 12; //* Set BB params for ICSAL handle_sprite_over_wall preset[PRESET_EXPLODE_FIREBALL].sctrl.bbH = 8; preset[PRESET_EXPLODE_FIREBALL].sctrl.bbXOff = 2; preset[PRESET_EXPLODE_FIREBALL].sctrl.bbYOff = 8; preset[PRESET_EXPLODE_FIREBALL].sctrl.shadHW = 8; preset[PRESET_EXPLODE_FIREBALL].sctrl.isLight = 1; preset[PRESET_EXPLODE_FIREBALL].sctrl.ICSALop = enemyExplode; preset[PRESET_EXPLODE_FIREBALL].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_EXPLODE_FIREBALL].shad.u = SHAD_16WIDE; preset[PRESET_EXPLODE_FIREBALL].shad.w = 16; //* //* Settings for enemy explosion body sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_EXPLODE_BODY] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_EXPLODE_BODY].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_EXPLODE_BODY].sprite.tpage = GetTPage(0, 1, timData[TIM_BODYBANG].px, timData[TIM_BODYBANG].py); preset[PRESET_EXPLODE_BODY].sprite.u = ((timData[TIM_BODYBANG].px<<2) % 256); preset[PRESET_EXPLODE_BODY].sprite.v = timData[TIM_BODYBANG].py; preset[PRESET_EXPLODE_BODY].sprite.cx = timData[TIM_BODYBANG].cx; preset[PRESET_EXPLODE_BODY].sprite.cy = timData[TIM_BODYBANG].cy; preset[PRESET_EXPLODE_BODY].sctrl.bbW = 32; //* Needed for shadow positioning preset[PRESET_EXPLODE_BODY].sctrl.isLight = 1; preset[PRESET_EXPLODE_BODY].sctrl.frameLock = LOCK_3FRAMES; preset[PRESET_EXPLODE_BODY].sctrl.currLock = RunThisTime(LOCK_3FRAMES); preset[PRESET_EXPLODE_BODY].sctrl.ICSALop = bodyBang; preset[PRESET_EXPLODE_BODY].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); //* //* Settings for enemy explosion coin sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_EXPLODE_COIN] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_EXPLODE_COIN].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_OFF); preset[PRESET_EXPLODE_COIN].sprite.w = 16; preset[PRESET_EXPLODE_COIN].sprite.h = 18; preset[PRESET_EXPLODE_COIN].sprite.tpage = GetTPage(0, 0, timData[TIM_COIN].px, timData[TIM_COIN].py); preset[PRESET_EXPLODE_COIN].sprite.u = ((timData[TIM_COIN].px<<2) % 256); preset[PRESET_EXPLODE_COIN].sprite.v = timData[TIM_COIN].py; preset[PRESET_EXPLODE_COIN].sprite.cx = timData[TIM_COIN].cx; preset[PRESET_EXPLODE_COIN].sprite.cy = timData[TIM_COIN].cy; preset[PRESET_EXPLODE_COIN].sctrl.ID = ID_PICKUP; preset[PRESET_EXPLODE_COIN].sctrl.bbW = 12; preset[PRESET_EXPLODE_COIN].sctrl.bbH = 6; preset[PRESET_EXPLODE_COIN].sctrl.bbXOff = 2; preset[PRESET_EXPLODE_COIN].sctrl.bbYOff = 4; preset[PRESET_EXPLODE_COIN].sctrl.speed = 1; preset[PRESET_EXPLODE_COIN].sctrl.repsPerFrame = 4; preset[PRESET_EXPLODE_COIN].sctrl.frameCount = 4; preset[PRESET_EXPLODE_COIN].sctrl.dir = DIR_DOWN; preset[PRESET_EXPLODE_COIN].sctrl.topOff = 12; preset[PRESET_EXPLODE_COIN].sctrl.shadHW = 8; preset[PRESET_EXPLODE_COIN].sctrl.shadStat = 0; preset[PRESET_EXPLODE_COIN].sctrl.ICSALop = coinEnemy; preset[PRESET_EXPLODE_COIN].sctrl.lifeCount = COIN_FRAME_LIFE; preset[PRESET_EXPLODE_COIN].shad.u = SHAD_16WIDE; preset[PRESET_EXPLODE_COIN].shad.w = 16; //* //* Settings for enemy ghost introduced with level manager //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_ENEMY_GHOST] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_ENEMY_GHOST].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_ENEMY_GHOST].sprite.tpage = GetTPage(0, 0, timData[TIM_ENEMY1].px, timData[TIM_ENEMY1].py); preset[PRESET_ENEMY_GHOST].sprite.cx = timData[TIM_ENEMY1].cx; preset[PRESET_ENEMY_GHOST].sprite.cy = timData[TIM_ENEMY1].cy; preset[PRESET_ENEMY_GHOST].sctrl.ID = ID_ENEMY; preset[PRESET_ENEMY_GHOST].sctrl.speed = 1; preset[PRESET_ENEMY_GHOST].sctrl.repsPerFrame = 4; preset[PRESET_ENEMY_GHOST].sctrl.frameCount = 4; preset[PRESET_ENEMY_GHOST].sctrl.currFrame = 0; preset[PRESET_ENEMY_GHOST].sctrl.bbXOff = 2; preset[PRESET_ENEMY_GHOST].sctrl.bbYOff = 11; preset[PRESET_ENEMY_GHOST].sctrl.bbW = 28; preset[PRESET_ENEMY_GHOST].sctrl.bbH = 10; preset[PRESET_ENEMY_GHOST].sctrl.topOff = 23; preset[PRESET_ENEMY_GHOST].sctrl.ICSALop = enemyEnter; preset[PRESET_ENEMY_GHOST].sctrl.moveCount = 1; preset[PRESET_ENEMY_GHOST].sctrl.moveMax = 50; //* //* Settings for enemy UFO introduced with level manager //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_ENEMY_UFO] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_ENEMY_UFO].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_ENEMY_UFO].sprite.tpage = GetTPage(0, 0, timData[TIM_UFO].px, timData[TIM_UFO].py); preset[PRESET_ENEMY_UFO].sprite.v = timData[TIM_UFO].py; preset[PRESET_ENEMY_UFO].sprite.u = ((timData[TIM_UFO].px<<2) % 256); preset[PRESET_ENEMY_UFO].sprite.cx = timData[TIM_UFO].cx; preset[PRESET_ENEMY_UFO].sprite.cy = timData[TIM_UFO].cy; preset[PRESET_ENEMY_UFO].sctrl.ID = ID_ENEMY; preset[PRESET_ENEMY_UFO].sctrl.high = UFO_HOVER_HEIGHT; preset[PRESET_ENEMY_UFO].sctrl.speed = 1; preset[PRESET_ENEMY_UFO].sctrl.repsPerFrame = 2; preset[PRESET_ENEMY_UFO].sctrl.frameCount = 4; preset[PRESET_ENEMY_UFO].sctrl.currFrame = 0; preset[PRESET_ENEMY_UFO].sctrl.bbXOff = 2; preset[PRESET_ENEMY_UFO].sctrl.bbYOff = 11; preset[PRESET_ENEMY_UFO].sctrl.bbW = 28; preset[PRESET_ENEMY_UFO].sctrl.bbH = 10; preset[PRESET_ENEMY_UFO].sctrl.topOff = 23; preset[PRESET_ENEMY_UFO].sctrl.ICSALop = ufoEnter; preset[PRESET_ENEMY_UFO].sctrl.moveCount = 1; preset[PRESET_ENEMY_UFO].sctrl.moveMax = 50; //* //* Settings for enemy shot, crashing enemy UFO //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_SHOT_UFO] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_SHOT_UFO].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_ON + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_SHOT_UFO].sprite.tpage = GetTPage(0, 0, timData[TIM_UFO].px, timData[TIM_UFO].py); preset[PRESET_SHOT_UFO].sprite.v = timData[TIM_UFO].py; preset[PRESET_SHOT_UFO].sprite.u = ((timData[TIM_UFO].px<<2) % 256); preset[PRESET_SHOT_UFO].sprite.cx = timData[TIM_UFO].cx; preset[PRESET_SHOT_UFO].sprite.cy = timData[TIM_UFO].cy; preset[PRESET_SHOT_UFO].sprite.mx = 16; preset[PRESET_SHOT_UFO].sprite.my = 16; preset[PRESET_SHOT_UFO].sctrl.speed = 1; preset[PRESET_SHOT_UFO].sctrl.repsPerFrame = 2; preset[PRESET_SHOT_UFO].sctrl.frameCount = 4; preset[PRESET_SHOT_UFO].sctrl.currFrame = 0; preset[PRESET_SHOT_UFO].sctrl.bbXOff = 2; preset[PRESET_SHOT_UFO].sctrl.bbYOff = 11; preset[PRESET_SHOT_UFO].sctrl.bbW = 28; preset[PRESET_SHOT_UFO].sctrl.bbH = 10; preset[PRESET_SHOT_UFO].sctrl.topOff = 23; preset[PRESET_SHOT_UFO].sctrl.ICSALop = ufoCrash; //* //* Settings for PolyCart (blank) introduced with level manager //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_POLYCART] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_POLYCART].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_POLYCART].sprite.w = 16; preset[PRESET_POLYCART].sprite.h = 16; preset[PRESET_POLYCART].sprite.tpage = GetTPage(0, 0, timData[TIM_POLYCART].px, timData[TIM_POLYCART].py); preset[PRESET_POLYCART].sprite.v = timData[TIM_POLYCART].py+32; preset[PRESET_POLYCART].sprite.u = ((timData[TIM_POLYCART].px<<2) % 256); preset[PRESET_POLYCART].sprite.cx = timData[TIM_POLYCART].cx; preset[PRESET_POLYCART].sprite.cy = timData[TIM_POLYCART].cy; preset[PRESET_POLYCART].sctrl.ID = ID_PICKUP; preset[PRESET_POLYCART].sctrl.bbXOff = 2; preset[PRESET_POLYCART].sctrl.bbYOff = 4; preset[PRESET_POLYCART].sctrl.bbW = 12; preset[PRESET_POLYCART].sctrl.bbH = 6; preset[PRESET_POLYCART].sctrl.topOff = 12; preset[PRESET_POLYCART].sctrl.shadBase = 3; preset[PRESET_POLYCART].sctrl.ICSALop = cartShow; preset[PRESET_POLYCART].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a mine introduced with level manager //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_MINE] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_MINE].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_MINE].sprite.w = 16; preset[PRESET_MINE].sprite.h = 12; preset[PRESET_MINE].sprite.tpage = GetTPage(0, 0, timData[TIM_MINE].px, timData[TIM_MINE].py); preset[PRESET_MINE].sprite.v = timData[TIM_MINE].py; preset[PRESET_MINE].sprite.u = ((timData[TIM_MINE].px<<2) % 256); preset[PRESET_MINE].sprite.cx = timData[TIM_MINE].cx; preset[PRESET_MINE].sprite.cy = timData[TIM_MINE].cy; preset[PRESET_MINE].sctrl.ID = ID_MINE; preset[PRESET_MINE].sctrl.subID = MINE_PRIMED; preset[PRESET_MINE].sctrl.bbXOff = 3; preset[PRESET_MINE].sctrl.bbYOff = 7; preset[PRESET_MINE].sctrl.bbW = 10; preset[PRESET_MINE].sctrl.bbH = 6; preset[PRESET_MINE].sctrl.topOff = 4; preset[PRESET_MINE].sctrl.shadBase = 4; preset[PRESET_MINE].sctrl.ICSALop = mineFlash; preset[PRESET_MINE].sctrl.frameLock = LOCK_5FRAMES; preset[PRESET_MINE].sctrl.currLock = RunThisTime(LOCK_5FRAMES); //* //* Settings for a milk bottle pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_MILKBOT] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_MILKBOT].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_MILKBOT].sprite.w = 16; preset[PRESET_PICKUP_MILKBOT].sprite.h = 32; preset[PRESET_PICKUP_MILKBOT].sprite.tpage = GetTPage(0, 0, timData[TIM_MILKBOT].px, timData[TIM_MILKBOT].py); preset[PRESET_PICKUP_MILKBOT].sprite.v = timData[TIM_MILKBOT].py; preset[PRESET_PICKUP_MILKBOT].sprite.u = ((timData[TIM_MILKBOT].px<<2) % 256); preset[PRESET_PICKUP_MILKBOT].sprite.cx = timData[TIM_MILKBOT].cx; preset[PRESET_PICKUP_MILKBOT].sprite.cy = timData[TIM_MILKBOT].cy; preset[PRESET_PICKUP_MILKBOT].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_MILKBOT].sctrl.subID = PICKUP_MILKBOT; preset[PRESET_PICKUP_MILKBOT].sctrl.bbXOff = 3; preset[PRESET_PICKUP_MILKBOT].sctrl.bbYOff = 6; preset[PRESET_PICKUP_MILKBOT].sctrl.bbW = 10; preset[PRESET_PICKUP_MILKBOT].sctrl.bbH = 6; preset[PRESET_PICKUP_MILKBOT].sctrl.topOff = 20; preset[PRESET_PICKUP_MILKBOT].sctrl.shadBase = 3; preset[PRESET_PICKUP_MILKBOT].sctrl.ICSALop = animMilkbot; preset[PRESET_PICKUP_MILKBOT].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a blitter burger pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_BURGER] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_BURGER].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_BURGER].sprite.w = 16; preset[PRESET_PICKUP_BURGER].sprite.h = 32; preset[PRESET_PICKUP_BURGER].sprite.tpage = GetTPage(0, 0, timData[TIM_BURGER].px, timData[TIM_BURGER].py); preset[PRESET_PICKUP_BURGER].sprite.v = timData[TIM_BURGER].py; preset[PRESET_PICKUP_BURGER].sprite.u = ((timData[TIM_BURGER].px<<2) % 256); preset[PRESET_PICKUP_BURGER].sprite.cx = timData[TIM_BURGER].cx; preset[PRESET_PICKUP_BURGER].sprite.cy = timData[TIM_BURGER].cy; preset[PRESET_PICKUP_BURGER].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_BURGER].sctrl.subID = PICKUP_BURGER; preset[PRESET_PICKUP_BURGER].sctrl.bbXOff = 2; preset[PRESET_PICKUP_BURGER].sctrl.bbYOff = 9; preset[PRESET_PICKUP_BURGER].sctrl.bbW = 12; preset[PRESET_PICKUP_BURGER].sctrl.bbH = 8; preset[PRESET_PICKUP_BURGER].sctrl.topOff = 8; preset[PRESET_PICKUP_BURGER].sctrl.shadBase = 2; preset[PRESET_PICKUP_BURGER].sctrl.ICSALop = animBurger; preset[PRESET_PICKUP_BURGER].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a piggy bank pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_PIGGY] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_PIGGY].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_PIGGY].sprite.w = 16; preset[PRESET_PICKUP_PIGGY].sprite.h = 32; preset[PRESET_PICKUP_PIGGY].sprite.tpage = GetTPage(0, 0, timData[TIM_PIGGY].px, timData[TIM_PIGGY].py); preset[PRESET_PICKUP_PIGGY].sprite.v = timData[TIM_PIGGY].py; preset[PRESET_PICKUP_PIGGY].sprite.u = ((timData[TIM_PIGGY].px<<2) % 256); preset[PRESET_PICKUP_PIGGY].sprite.cx = timData[TIM_PIGGY].cx; preset[PRESET_PICKUP_PIGGY].sprite.cy = timData[TIM_PIGGY].cy; preset[PRESET_PICKUP_PIGGY].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_PIGGY].sctrl.subID = PICKUP_PIGGY; preset[PRESET_PICKUP_PIGGY].sctrl.bbXOff = 2; preset[PRESET_PICKUP_PIGGY].sctrl.bbYOff = 8; preset[PRESET_PICKUP_PIGGY].sctrl.bbW = 12; preset[PRESET_PICKUP_PIGGY].sctrl.bbH = 8; preset[PRESET_PICKUP_PIGGY].sctrl.topOff = 8; preset[PRESET_PICKUP_PIGGY].sctrl.shadBase = 3; preset[PRESET_PICKUP_PIGGY].sctrl.ICSALop = animPiggy; preset[PRESET_PICKUP_PIGGY].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for moon ring pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_MOONRING] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_MOONRING].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_MOONRING].sprite.w = 16; preset[PRESET_PICKUP_MOONRING].sprite.h = 12; preset[PRESET_PICKUP_MOONRING].sprite.tpage = GetTPage(0, 0, timData[TIM_MOONRING].px, timData[TIM_MOONRING].py); preset[PRESET_PICKUP_MOONRING].sprite.v = timData[TIM_MOONRING].py; preset[PRESET_PICKUP_MOONRING].sprite.u = ((timData[TIM_MOONRING].px<<2) % 256); preset[PRESET_PICKUP_MOONRING].sprite.cx = timData[TIM_MOONRING].cx; preset[PRESET_PICKUP_MOONRING].sprite.cy = timData[TIM_MOONRING].cy; preset[PRESET_PICKUP_MOONRING].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_MOONRING].sctrl.subID = PICKUP_MOONRING; preset[PRESET_PICKUP_MOONRING].sctrl.bbXOff = 2; preset[PRESET_PICKUP_MOONRING].sctrl.bbYOff = 8; preset[PRESET_PICKUP_MOONRING].sctrl.bbW = 12; preset[PRESET_PICKUP_MOONRING].sctrl.bbH = 8; preset[PRESET_PICKUP_MOONRING].sctrl.topOff = 4; preset[PRESET_PICKUP_MOONRING].sctrl.shadBase = 3; preset[PRESET_PICKUP_MOONRING].sctrl.ICSALop = animOrbit; preset[PRESET_PICKUP_MOONRING].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a Blitter Beans pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_BEANS] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_BEANS].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_BEANS].sprite.w = 16; preset[PRESET_PICKUP_BEANS].sprite.h = 32; preset[PRESET_PICKUP_BEANS].sprite.tpage = GetTPage(0, 0, timData[TIM_BEANS].px, timData[TIM_BEANS].py); preset[PRESET_PICKUP_BEANS].sprite.v = timData[TIM_BEANS].py; preset[PRESET_PICKUP_BEANS].sprite.u = ((timData[TIM_BEANS].px<<2) % 256); preset[PRESET_PICKUP_BEANS].sprite.cx = timData[TIM_BEANS].cx; preset[PRESET_PICKUP_BEANS].sprite.cy = timData[TIM_BEANS].cy; preset[PRESET_PICKUP_BEANS].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_BEANS].sctrl.subID = PICKUP_BEANS; preset[PRESET_PICKUP_BEANS].sctrl.bbXOff = 2; preset[PRESET_PICKUP_BEANS].sctrl.bbYOff = 6; preset[PRESET_PICKUP_BEANS].sctrl.bbW = 10; preset[PRESET_PICKUP_BEANS].sctrl.bbH = 6; preset[PRESET_PICKUP_BEANS].sctrl.topOff = 12; preset[PRESET_PICKUP_BEANS].sctrl.shadBase = 3; preset[PRESET_PICKUP_BEANS].sctrl.ICSALop = animBeans; preset[PRESET_PICKUP_BEANS].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a Holosphere pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_HOLOBALL] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_HOLOBALL].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_PICKUP_HOLOBALL].sprite.w = 16; preset[PRESET_PICKUP_HOLOBALL].sprite.h = 16; preset[PRESET_PICKUP_HOLOBALL].sprite.tpage = GetTPage(0, 1, timData[TIM_HOLOBALL].px, timData[TIM_HOLOBALL].py); preset[PRESET_PICKUP_HOLOBALL].sprite.v = timData[TIM_HOLOBALL].py; preset[PRESET_PICKUP_HOLOBALL].sprite.u = ((timData[TIM_HOLOBALL].px<<2) % 256); preset[PRESET_PICKUP_HOLOBALL].sprite.cx = timData[TIM_HOLOBALL].cx; preset[PRESET_PICKUP_HOLOBALL].sprite.cy = timData[TIM_HOLOBALL].cy; preset[PRESET_PICKUP_HOLOBALL].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_HOLOBALL].sctrl.subID = PICKUP_HOLOBALL; preset[PRESET_PICKUP_HOLOBALL].sctrl.bbXOff = 3; preset[PRESET_PICKUP_HOLOBALL].sctrl.bbYOff = 6; preset[PRESET_PICKUP_HOLOBALL].sctrl.bbW = 10; preset[PRESET_PICKUP_HOLOBALL].sctrl.bbH = 6; preset[PRESET_PICKUP_HOLOBALL].sctrl.topOff = 12; preset[PRESET_PICKUP_HOLOBALL].sctrl.high = 0; preset[PRESET_PICKUP_HOLOBALL].sctrl.isLight = 1; preset[PRESET_PICKUP_HOLOBALL].sctrl.shadBase = 2; preset[PRESET_PICKUP_HOLOBALL].sctrl.ICSALop = animHoloBall; preset[PRESET_PICKUP_HOLOBALL].sctrl.lifeCount = PICKUP_FRAME_LIFE; preset[PRESET_PICKUP_HOLOBALL].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_PICKUP_HOLOBALL].sctrl.currLock = LOCK_ALTFRAMES; preset[PRESET_PICKUP_HOLOBALL].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); //* //* Settings for a Battery pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_BATTERY] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_BATTERY].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_BATTERY].sprite.w = 16; preset[PRESET_PICKUP_BATTERY].sprite.h = 32; preset[PRESET_PICKUP_BATTERY].sprite.tpage = GetTPage(0, 0, timData[TIM_BATTERY].px, timData[TIM_BATTERY].py); preset[PRESET_PICKUP_BATTERY].sprite.v = timData[TIM_BATTERY].py; preset[PRESET_PICKUP_BATTERY].sprite.u = ((timData[TIM_BATTERY].px<<2) % 256); preset[PRESET_PICKUP_BATTERY].sprite.cx = timData[TIM_BATTERY].cx; preset[PRESET_PICKUP_BATTERY].sprite.cy = timData[TIM_BATTERY].cy; preset[PRESET_PICKUP_BATTERY].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_BATTERY].sctrl.subID = PICKUP_BATTERY; preset[PRESET_PICKUP_BATTERY].sctrl.bbXOff = 3; preset[PRESET_PICKUP_BATTERY].sctrl.bbYOff = 6; preset[PRESET_PICKUP_BATTERY].sctrl.bbW = 10; preset[PRESET_PICKUP_BATTERY].sctrl.bbH = 6; preset[PRESET_PICKUP_BATTERY].sctrl.topOff = 24; preset[PRESET_PICKUP_BATTERY].sctrl.shadBase = 4; preset[PRESET_PICKUP_BATTERY].sctrl.ICSALop = animBattery; preset[PRESET_PICKUP_BATTERY].sctrl.lifeCount = PICKUP_FRAME_LIFE; //* //* Settings for a POW! flash sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_POWFLASH] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_POWFLASH].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_POWFLASH].sprite.w = 32; preset[PRESET_POWFLASH].sprite.h = 32; preset[PRESET_POWFLASH].sprite.tpage = GetTPage(0, 1, timData[TIM_POWFLASH].px, timData[TIM_POWFLASH].py); preset[PRESET_POWFLASH].sprite.v = timData[TIM_POWFLASH].py; preset[PRESET_POWFLASH].sprite.u = ((timData[TIM_POWFLASH].px<<2) % 256); preset[PRESET_POWFLASH].sprite.cx = timData[TIM_POWFLASH].cx; preset[PRESET_POWFLASH].sprite.cy = timData[TIM_POWFLASH].cy; preset[PRESET_POWFLASH].sctrl.bbXOff = 0; preset[PRESET_POWFLASH].sctrl.bbYOff = 0; preset[PRESET_POWFLASH].sctrl.bbW = 32; preset[PRESET_POWFLASH].sctrl.bbH = 1; preset[PRESET_POWFLASH].sctrl.topOff = 8; preset[PRESET_POWFLASH].sctrl.isLight = 1; preset[PRESET_POWFLASH].sctrl.shadStat = 0; preset[PRESET_POWFLASH].sctrl.ICSALop = babyPowflash; //* //* Settings for the 8 orbiting moon ball sprites //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_MOONBALL1] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_MOONBALL1].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_MOONBALL1].sprite.w = 8; preset[PRESET_MOONBALL1].sprite.h = 8; preset[PRESET_MOONBALL1].sprite.tpage = GetTPage(0, 0, timData[TIM_MOONBALL].px, timData[TIM_MOONBALL].py); preset[PRESET_MOONBALL1].sprite.v = timData[TIM_MOONBALL].py; preset[PRESET_MOONBALL1].sprite.u = ((timData[TIM_MOONBALL].px<<2) % 256); preset[PRESET_MOONBALL1].sprite.cx = timData[TIM_MOONBALL].cx; preset[PRESET_MOONBALL1].sprite.cy = timData[TIM_MOONBALL].cy; preset[PRESET_MOONBALL1].sctrl.ID = ID_MOONBALL; preset[PRESET_MOONBALL1].sctrl.accelX = 0; //* Set for use in orbitBall ICSAL proc preset[PRESET_MOONBALL1].sctrl.accelY = 18; preset[PRESET_MOONBALL1].sctrl.high = 7; preset[PRESET_MOONBALL1].sctrl.bbXOff = 1; //* Note: change update_orbit if altering bb settings! preset[PRESET_MOONBALL1].sctrl.bbYOff = 3; preset[PRESET_MOONBALL1].sctrl.bbW = 6; preset[PRESET_MOONBALL1].sctrl.bbH = 4; preset[PRESET_MOONBALL1].sctrl.topOff = 5; preset[PRESET_MOONBALL1].sctrl.dir = DIR_RIGHT; preset[PRESET_MOONBALL1].sctrl.ICSALop = orbitBall+160; //* Jump past raw data! preset[PRESET_MOONBALL1].sctrl.shadHW = 4; // preset[PRESET_MOONBALL1].sctrl.frameLock = LOCK_ALTFRAMES; // preset[PRESET_MOONBALL1].sctrl.currLock = RunThisTime(LOCK_ALTFRAMES); preset[PRESET_MOONBALL1].shad.u = SHAD_8WIDE; preset[PRESET_MOONBALL1].shad.w = 8; //preset[PRESET_MOONBALL1].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_MOONBALL2] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL2].sctrl.accelX = -23; preset[PRESET_MOONBALL2].sctrl.accelY = 12; preset[PRESET_MOONBALL3] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL3].sctrl.accelX = -30; preset[PRESET_MOONBALL3].sctrl.accelY = 0; preset[PRESET_MOONBALL4] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL4].sctrl.accelX = -23; preset[PRESET_MOONBALL4].sctrl.accelY = -12; preset[PRESET_MOONBALL5] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL5].sctrl.accelX = 0; preset[PRESET_MOONBALL5].sctrl.accelY = -18; preset[PRESET_MOONBALL6] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL6].sctrl.accelX = 23; preset[PRESET_MOONBALL6].sctrl.accelY = -12; preset[PRESET_MOONBALL7] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL7].sctrl.accelX = 30; preset[PRESET_MOONBALL7].sctrl.accelY = 0; preset[PRESET_MOONBALL8] = preset[PRESET_MOONBALL1]; preset[PRESET_MOONBALL8].sctrl.accelX = 23; preset[PRESET_MOONBALL8].sctrl.accelY = 12; //* //* Settings for a bonus score sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_BONUS_SCORE] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_BONUS_SCORE].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_BONUS_SCORE].sprite.w = 32; preset[PRESET_BONUS_SCORE].sprite.h = 16; preset[PRESET_BONUS_SCORE].sprite.tpage = GetTPage(0, 0, timData[TIM_BONUS].px, timData[TIM_BONUS].py); preset[PRESET_BONUS_SCORE].sprite.v = timData[TIM_BONUS].py; preset[PRESET_BONUS_SCORE].sprite.u = ((timData[TIM_BONUS].px<<2) % 256); preset[PRESET_BONUS_SCORE].sprite.cx = timData[TIM_BONUS].cx; preset[PRESET_BONUS_SCORE].sprite.cy = timData[TIM_BONUS].cy; preset[PRESET_BONUS_SCORE].sctrl.high = 612; preset[PRESET_BONUS_SCORE].sctrl.bbXOff = 2; preset[PRESET_BONUS_SCORE].sctrl.bbYOff = 8; preset[PRESET_BONUS_SCORE].sctrl.bbW = 12; preset[PRESET_BONUS_SCORE].sctrl.bbH = 8; preset[PRESET_BONUS_SCORE].sctrl.topOff = 8; preset[PRESET_BONUS_SCORE].sctrl.isLight = 1; preset[PRESET_BONUS_SCORE].sctrl.shadStat = 0; preset[PRESET_BONUS_SCORE].sctrl.ICSALop = showBonus; preset[PRESET_BONUS_SCORE].sctrl.frameLock = LOCK_3FRAMES; preset[PRESET_BONUS_SCORE].sctrl.currLock = RunThisTime(LOCK_3FRAMES); //* //* Settings for a bonus multiplier sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_BONUS_MULTY] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_BONUS_MULTY].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_BONUS_MULTY].sprite.w = 32; preset[PRESET_BONUS_MULTY].sprite.h = 12; preset[PRESET_BONUS_MULTY].sprite.tpage = GetTPage(0, 0, timData[TIM_MULTY].px, timData[TIM_MULTY].py); preset[PRESET_BONUS_MULTY].sprite.v = timData[TIM_MULTY].py; preset[PRESET_BONUS_MULTY].sprite.u = ((timData[TIM_MULTY].px<<2) % 256); preset[PRESET_BONUS_MULTY].sprite.cx = timData[TIM_MULTY].cx; preset[PRESET_BONUS_MULTY].sprite.cy = timData[TIM_MULTY].cy; preset[PRESET_BONUS_MULTY].sctrl.high = 600; preset[PRESET_BONUS_MULTY].sctrl.bbXOff = 2; preset[PRESET_BONUS_MULTY].sctrl.bbYOff = 8; preset[PRESET_BONUS_MULTY].sctrl.bbW = 12; preset[PRESET_BONUS_MULTY].sctrl.bbH = 8; preset[PRESET_BONUS_MULTY].sctrl.topOff = 8; preset[PRESET_BONUS_MULTY].sctrl.isLight = 1; preset[PRESET_BONUS_MULTY].sctrl.shadStat = 0; preset[PRESET_BONUS_MULTY].sctrl.ICSALop = showMulty; preset[PRESET_BONUS_MULTY].sctrl.frameLock = LOCK_3FRAMES; preset[PRESET_BONUS_MULTY].sctrl.currLock = RunThisTime(LOCK_3FRAMES); //* //* Settings for a fruit bonus sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_BONUS] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FRUIT_BONUS].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_ON + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_FRUIT_BONUS].sprite.w = 32; preset[PRESET_FRUIT_BONUS].sprite.h = 16; preset[PRESET_FRUIT_BONUS].sprite.tpage = GetTPage(0, 1, timData[TIM_FR_BONUS].px, timData[TIM_FR_BONUS].py); preset[PRESET_FRUIT_BONUS].sprite.v = timData[TIM_FR_BONUS].py; preset[PRESET_FRUIT_BONUS].sprite.u = ((timData[TIM_FR_BONUS].px<<2) % 256); preset[PRESET_FRUIT_BONUS].sprite.cx = timData[TIM_FR_MULTY].cx; preset[PRESET_FRUIT_BONUS].sprite.cy = timData[TIM_FR_MULTY].cy; //* Use same CLUT (avoids cache reload?) preset[PRESET_FRUIT_BONUS].sprite.mx = 31; preset[PRESET_FRUIT_BONUS].sprite.my = 8; preset[PRESET_FRUIT_BONUS].sprite.r = preset[PRESET_FRUIT_BONUS].sprite.g = preset[PRESET_FRUIT_BONUS].sprite.b = 64; preset[PRESET_FRUIT_BONUS].sctrl.high = 608; preset[PRESET_FRUIT_BONUS].sctrl.bbXOff = 0; preset[PRESET_FRUIT_BONUS].sctrl.bbYOff = 0; preset[PRESET_FRUIT_BONUS].sctrl.bbW = 32; preset[PRESET_FRUIT_BONUS].sctrl.bbH = 1; // preset[PRESET_FRUIT_BONUS].sctrl.topOff = 8; preset[PRESET_FRUIT_BONUS].sctrl.isLight = 1; preset[PRESET_FRUIT_BONUS].sctrl.shadStat = 0; preset[PRESET_FRUIT_BONUS].sctrl.ICSALop = showFRbonus; // preset[PRESET_FRUIT_BONUS].sctrl.frameLock = LOCK_3FRAMES; // preset[PRESET_FRUIT_BONUS].sctrl.currLock = RunThisTime(LOCK_3FRAMES); //* //* Settings for a fruit bonus multiplier sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_FRUIT_MULTY] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_FRUIT_MULTY].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_ON + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_FRUIT_MULTY].sprite.w = 32; preset[PRESET_FRUIT_MULTY].sprite.h = 16; preset[PRESET_FRUIT_MULTY].sprite.tpage = GetTPage(0, 1, timData[TIM_FR_MULTY].px, timData[TIM_FR_MULTY].py); preset[PRESET_FRUIT_MULTY].sprite.v = timData[TIM_FR_MULTY].py; preset[PRESET_FRUIT_MULTY].sprite.u = ((timData[TIM_FR_MULTY].px<<2) % 256); preset[PRESET_FRUIT_MULTY].sprite.cx = timData[TIM_FR_MULTY].cx; preset[PRESET_FRUIT_MULTY].sprite.cy = timData[TIM_FR_MULTY].cy; preset[PRESET_FRUIT_MULTY].sprite.mx = -1; preset[PRESET_FRUIT_MULTY].sprite.my = 8; preset[PRESET_FRUIT_MULTY].sprite.r = preset[PRESET_FRUIT_MULTY].sprite.g = preset[PRESET_FRUIT_MULTY].sprite.b = 64; preset[PRESET_FRUIT_MULTY].sctrl.high = 608; preset[PRESET_FRUIT_MULTY].sctrl.bbXOff = 0; preset[PRESET_FRUIT_MULTY].sctrl.bbYOff = 0; preset[PRESET_FRUIT_MULTY].sctrl.bbW = 32; preset[PRESET_FRUIT_MULTY].sctrl.bbH = 1; // preset[PRESET_FRUIT_MULTY].sctrl.topOff = 8; preset[PRESET_FRUIT_MULTY].sctrl.isLight = 1; preset[PRESET_FRUIT_MULTY].sctrl.shadStat = 0; preset[PRESET_FRUIT_MULTY].sctrl.ICSALop = showFRbonus; // preset[PRESET_FRUIT_MULTY].sctrl.frameLock = LOCK_3FRAMES; // preset[PRESET_FRUIT_MULTY].sctrl.currLock = RunThisTime(LOCK_3FRAMES); //* //* Settings for the 16 mine explosion component sprites //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_MINE_COMP1] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_MINE_COMP1].sctrl.accelX = 2; preset[PRESET_MINE_COMP1].sctrl.accelY = 0; preset[PRESET_MINE_COMP1].sctrl.bbXOff = 1; preset[PRESET_MINE_COMP1].sctrl.bbYOff = 3; preset[PRESET_MINE_COMP1].sctrl.bbW = 6; preset[PRESET_MINE_COMP1].sctrl.bbH = 4; preset[PRESET_MINE_COMP1].sctrl.topOff = 5; preset[PRESET_MINE_COMP1].sctrl.shadHW = 4; preset[PRESET_MINE_COMP1].sctrl.ICSALop = mineExplode; preset[PRESET_MINE_COMP1].sctrl.ICSALloopStart = mineExplode; preset[PRESET_MINE_COMP1].sctrl.ICSALloopCount = 2; preset[PRESET_MINE_COMP1].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP1].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP1].sctrl.dir = DIR_RIGHT; //* Needed for handle_sprite_over_wall preset[PRESET_MINE_COMP1].sctrl.isLight = 1; preset[PRESET_MINE_COMP1].sprite.attribute = (A_4BIT_CLUT + A_BRIGHT_ON + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_MINE_COMP1].sprite.w = 8; preset[PRESET_MINE_COMP1].sprite.h = 8; preset[PRESET_MINE_COMP1].sprite.tpage = GetTPage(0, 1, timData[TIM_MINECOMP].px, timData[TIM_MINECOMP].py); preset[PRESET_MINE_COMP1].sprite.u = ((timData[TIM_MINECOMP].px<<2) % 256); preset[PRESET_MINE_COMP1].sprite.v = timData[TIM_MINECOMP].py; preset[PRESET_MINE_COMP1].sprite.cx = timData[TIM_MINECOMP].cx; preset[PRESET_MINE_COMP1].sprite.cy = timData[TIM_MINECOMP].cy; preset[PRESET_MINE_COMP1].sprite.r = preset[PRESET_MINE_COMP1].sprite.g = preset[PRESET_MINE_COMP1].sprite.b = 255; preset[PRESET_MINE_COMP1].shad.w = 8; preset[PRESET_MINE_COMP1].shad.u = SHAD_8WIDE; //preset[PRESET_MINE_COMP1].shad.r = preset[PRESET_MINE_COMP1].shad.g = preset[PRESET_MINE_COMP1].shad.b = 64; preset[PRESET_MINE_COMP1].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_MINE_COMP2] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP2].sctrl.accelX = 2; preset[PRESET_MINE_COMP2].sctrl.accelY = -1; preset[PRESET_MINE_COMP2].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP2].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP2].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP2].sctrl.dir = DIR_UP_RIGHT; preset[PRESET_MINE_COMP3] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP3].sctrl.accelX = 1; preset[PRESET_MINE_COMP3].sctrl.accelY = -1; preset[PRESET_MINE_COMP3].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP3].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP3].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP3].sctrl.dir = DIR_UP_RIGHT; preset[PRESET_MINE_COMP4] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP4].sctrl.accelX = 1; preset[PRESET_MINE_COMP4].sctrl.accelY = -2; preset[PRESET_MINE_COMP4].sctrl.frameLock = LOCK_2FRAMES; preset[PRESET_MINE_COMP4].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP4].sctrl.ICSALloopCount = 4; preset[PRESET_MINE_COMP4].sctrl.dir = DIR_UP_RIGHT; //* Up preset[PRESET_MINE_COMP5] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP5].sctrl.accelX = 0; preset[PRESET_MINE_COMP5].sctrl.accelY = -1; preset[PRESET_MINE_COMP5].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP5].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP5].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP5].sctrl.dir = DIR_UP; preset[PRESET_MINE_COMP6] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP6].sctrl.accelX = -1; preset[PRESET_MINE_COMP6].sctrl.accelY = -2; preset[PRESET_MINE_COMP6].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP6].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP6].sctrl.ICSALloopCount = 3; preset[PRESET_MINE_COMP6].sctrl.dir = DIR_UP_LEFT; preset[PRESET_MINE_COMP7] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP7].sctrl.accelX = -1; preset[PRESET_MINE_COMP7].sctrl.accelY = -1; preset[PRESET_MINE_COMP7].sctrl.frameLock = LOCK_2FRAMES; preset[PRESET_MINE_COMP7].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP7].sctrl.ICSALloopCount = 5; preset[PRESET_MINE_COMP7].sctrl.dir = DIR_UP_LEFT; preset[PRESET_MINE_COMP8] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP8].sctrl.accelX = -2; preset[PRESET_MINE_COMP8].sctrl.accelY = -1; preset[PRESET_MINE_COMP8].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP8].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP8].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP8].sctrl.dir = DIR_UP_LEFT; //* Left preset[PRESET_MINE_COMP9] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP9].sctrl.accelX = -2; preset[PRESET_MINE_COMP9].sctrl.accelY = 0; preset[PRESET_MINE_COMP9].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP9].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP9].sctrl.ICSALloopCount = 2; preset[PRESET_MINE_COMP9].sctrl.dir = DIR_LEFT; preset[PRESET_MINE_COMP10] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP10].sctrl.accelX = -2; preset[PRESET_MINE_COMP10].sctrl.accelY = 1; preset[PRESET_MINE_COMP10].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP10].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP10].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP10].sctrl.dir = DIR_DOWN_LEFT; preset[PRESET_MINE_COMP11] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP11].sctrl.accelX = -2; preset[PRESET_MINE_COMP11].sctrl.accelY = 2; preset[PRESET_MINE_COMP11].sctrl.frameLock = LOCK_2FRAMES; preset[PRESET_MINE_COMP11].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP11].sctrl.ICSALloopCount = 6; preset[PRESET_MINE_COMP11].sctrl.dir = DIR_DOWN_LEFT; preset[PRESET_MINE_COMP12] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP12].sctrl.accelX = -1; preset[PRESET_MINE_COMP12].sctrl.accelY = 2; preset[PRESET_MINE_COMP12].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP12].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP12].sctrl.ICSALloopCount = 3; preset[PRESET_MINE_COMP12].sctrl.dir = DIR_DOWN_LEFT; //* Down preset[PRESET_MINE_COMP13] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP13].sctrl.accelX = 0; preset[PRESET_MINE_COMP13].sctrl.accelY = 1; preset[PRESET_MINE_COMP13].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP13].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP13].sctrl.ICSALloopCount = 2; preset[PRESET_MINE_COMP13].sctrl.dir = DIR_DOWN; preset[PRESET_MINE_COMP14] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP14].sctrl.accelX = 1; preset[PRESET_MINE_COMP14].sctrl.accelY = 2; preset[PRESET_MINE_COMP14].sctrl.frameLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP14].sctrl.currLock = LOCK_NOFRAMES; preset[PRESET_MINE_COMP14].sctrl.ICSALloopCount = 1; preset[PRESET_MINE_COMP14].sctrl.dir = DIR_DOWN_RIGHT; preset[PRESET_MINE_COMP15] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP15].sctrl.accelX = 1; preset[PRESET_MINE_COMP15].sctrl.accelY = 1; preset[PRESET_MINE_COMP15].sctrl.frameLock = LOCK_2FRAMES; preset[PRESET_MINE_COMP15].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP15].sctrl.ICSALloopCount = 4; preset[PRESET_MINE_COMP15].sctrl.dir = DIR_DOWN_RIGHT; preset[PRESET_MINE_COMP16] = preset[PRESET_MINE_COMP1]; preset[PRESET_MINE_COMP16].sctrl.accelX = 2; preset[PRESET_MINE_COMP16].sctrl.accelY = 1; preset[PRESET_MINE_COMP16].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_MINE_COMP16].sctrl.currLock = 0x0aaaafff; preset[PRESET_MINE_COMP16].sctrl.ICSALloopCount = 3; preset[PRESET_MINE_COMP16].sctrl.dir = DIR_DOWN_RIGHT; //* //* Settings for a range HUD sprite //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_RANGE_HUD] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_RANGE_HUD].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_RANGE_HUD].sprite.w = 0; preset[PRESET_RANGE_HUD].sprite.h = 16; preset[PRESET_RANGE_HUD].sprite.tpage = GetTPage(0, 0, timData[TIM_RANGEHUD].px, timData[TIM_RANGEHUD].py); preset[PRESET_RANGE_HUD].sprite.v = timData[TIM_RANGEHUD].py; preset[PRESET_RANGE_HUD].sprite.u = ((timData[TIM_RANGEHUD].px<<2) % 256); preset[PRESET_RANGE_HUD].sprite.cx = timData[TIM_RANGEHUD].cx; preset[PRESET_RANGE_HUD].sprite.cy = timData[TIM_RANGEHUD].cy; preset[PRESET_RANGE_HUD].sctrl.high = 620; preset[PRESET_RANGE_HUD].sctrl.isLight = 1; //* To prevent RGB alteration preset[PRESET_RANGE_HUD].sctrl.shadStat = 0; preset[PRESET_RANGE_HUD].sctrl.ICSALop = rangeHUD; //* //* Settings for R,G,B Blitter Boy decoy sprites //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_DECOY_BOYR] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_DECOY_BOYR].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_DECOY_BOYR].sprite.w = 32; preset[PRESET_DECOY_BOYR].sprite.h = 0; preset[PRESET_DECOY_BOYR].sprite.tpage = GetTPage(0, 1, timData[TIM_BLITBOY].px, timData[TIM_BLITBOY].py); preset[PRESET_DECOY_BOYR].sprite.v = 36;//timData[TIM_BLITBOY].py; preset[PRESET_DECOY_BOYR].sprite.u = ((timData[TIM_BLITBOY].px<<2) % 256); preset[PRESET_DECOY_BOYR].sprite.cx = timData[TIM_BLITBOY].cx; preset[PRESET_DECOY_BOYR].sprite.cy = timData[TIM_BLITBOY].cy; preset[PRESET_DECOY_BOYR].sprite.r = 64; preset[PRESET_DECOY_BOYR].sprite.g = 0; preset[PRESET_DECOY_BOYR].sprite.b = 0; preset[PRESET_DECOY_BOYR].sctrl.ID = ID_DECOY; preset[PRESET_DECOY_BOYR].sctrl.bbXOff = 8; preset[PRESET_DECOY_BOYR].sctrl.bbYOff = 8; preset[PRESET_DECOY_BOYR].sctrl.bbW = 15; preset[PRESET_DECOY_BOYR].sctrl.bbH = 7; preset[PRESET_DECOY_BOYR].sctrl.topOff = 27; preset[PRESET_DECOY_BOYR].sctrl.speed = 1; preset[PRESET_DECOY_BOYR].sctrl.accelY = 1; preset[PRESET_DECOY_BOYR].sctrl.repsPerFrame = 4; preset[PRESET_DECOY_BOYR].sctrl.frameCount = 1; //* Triggers immediate movement! preset[PRESET_DECOY_BOYR].sctrl.dir = DIR_DOWN; preset[PRESET_DECOY_BOYR].sctrl.isLight = 1; //* To prevent RGB alteration preset[PRESET_DECOY_BOYR].sctrl.shadBase = 2; preset[PRESET_DECOY_BOYR].sctrl.ICSALop = decoyWander; preset[PRESET_DECOY_BOYR].sctrl.moveCount = 60; preset[PRESET_DECOY_BOYR].sctrl.moveMax = 60; preset[PRESET_DECOY_BOYR].sctrl.frameLock = LOCK_ALTFRAMES; preset[PRESET_DECOY_BOYR].sctrl.currLock = LOCK_ALTFRAMES; preset[PRESET_DECOY_BOYR].shad.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_2 + A_TRANS_ON + A_DISPLAY_ON); preset[PRESET_DECOY_BOYG] = preset[PRESET_DECOY_BOYR]; preset[PRESET_DECOY_BOYG].sprite.r = 0; preset[PRESET_DECOY_BOYG].sprite.g = 64; preset[PRESET_DECOY_BOYG].sprite.b = 0; preset[PRESET_DECOY_BOYG].sctrl.shadStat = 0; preset[PRESET_DECOY_BOYG].sctrl.ICSALop = NULL; //* Controlled by main red sprite's ICSAL proc preset[PRESET_DECOY_BOYG].sctrl.bbYOff = 0; preset[PRESET_DECOY_BOYG].sctrl.ID = ID_SOFT_ICSAL; preset[PRESET_DECOY_BOYB] = preset[PRESET_DECOY_BOYR]; preset[PRESET_DECOY_BOYB].sprite.r = 0; preset[PRESET_DECOY_BOYB].sprite.g = 0; preset[PRESET_DECOY_BOYB].sprite.b = 64; preset[PRESET_DECOY_BOYB].sctrl.shadStat = 0; preset[PRESET_DECOY_BOYB].sctrl.ICSALop = NULL; //* Controlled by main red sprite's ICSAL proc preset[PRESET_DECOY_BOYB].sctrl.bbYOff = 0; preset[PRESET_DECOY_BOYB].sctrl.ID = ID_SOFT_ICSAL; //* //* Settings for a SURVIVE flag pickup //* //* First, 'clean' this preset so only differing members have to be set preset[PRESET_PICKUP_FLAG] = preset[PRESET_POOL_DEFAULT]; preset[PRESET_PICKUP_FLAG].sprite.attribute = (A_BRIGHT_ON + A_4BIT_CLUT + A_ROTATE_OFF + A_TRATE_1 + A_TRANS_OFF + A_DISPLAY_ON); preset[PRESET_PICKUP_FLAG].sprite.w = 16; preset[PRESET_PICKUP_FLAG].sprite.h = 14; preset[PRESET_PICKUP_FLAG].sprite.tpage = GetTPage(0, 0, timData[TIM_FLAG].px, timData[TIM_FLAG].py); preset[PRESET_PICKUP_FLAG].sprite.v = timData[TIM_FLAG].py; preset[PRESET_PICKUP_FLAG].sprite.u = ((timData[TIM_FLAG].px<<2) % 256); preset[PRESET_PICKUP_FLAG].sprite.cx = timData[TIM_FLAG].cx; preset[PRESET_PICKUP_FLAG].sprite.cy = timData[TIM_FLAG].cy; preset[PRESET_PICKUP_FLAG].sctrl.ID = ID_PICKUP; preset[PRESET_PICKUP_FLAG].sctrl.subID = PICKUP_FLAG; preset[PRESET_PICKUP_FLAG].sctrl.bbXOff = 2; preset[PRESET_PICKUP_FLAG].sctrl.bbYOff = 2; preset[PRESET_PICKUP_FLAG].sctrl.bbW = 10; preset[PRESET_PICKUP_FLAG].sctrl.bbH = 4; preset[PRESET_PICKUP_FLAG].sctrl.topOff = 12; preset[PRESET_PICKUP_FLAG].sctrl.shadBase = 4; preset[PRESET_PICKUP_FLAG].sctrl.ICSALop = animFlag; preset[PRESET_PICKUP_FLAG].sctrl.lifeCount = PICKUP_FRAME_LIFE; }