Ejemplo n.º 1
0
        private IEnumerable <Sprite> Brick10Coins(int x, int y)
        {
            x -= 4;
            y -= 8;
            var tile = new ChrTile(0x2C, 2, LayerPriority.Priority3, 0);

            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex += 0x0F;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y + 8, tile));

            tile.TileIndex = 0x2E;
            x += 8;
            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex += 0x0F;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y + 8, tile));
        }
Ejemplo n.º 2
0
        private IEnumerable <Sprite> FlagPole(int x, int y)
        {
            y  = 0x30;
            x += 8;

            var index = 4 - (((AnimationFrame + (x >> 1)) / 12 % 3) << 1);

            var tile = new ChrTile(0x120 + index, 5, LayerPriority.Priority2, 0);

            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex += 0x0F;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y + 8, tile));

            x    += 0x60;
            y    += 0x40;
            index = ((AnimationFrame + (x >> 1)) >> 2) & 6;
            tile  = new ChrTile(0x104 + index, 5, LayerPriority.Priority0, 0);
            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex += 0x0F;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y + 8, tile));
        }
Ejemplo n.º 3
0
        private IEnumerable <Sprite> BeanStalk(int x, int y)
        {
            var tile = new ChrTile(0x12C, 5, LayerPriority.Priority3, 0);

            for (y -= 0x10; y > 0x10; y -= 0x10)
            {
                tile.TileIndex = 0x12C;
                yield return(new Sprite(x, y, tile));

                tile.TileIndex++;
                yield return(new Sprite(x + 8, y, tile));

                tile.TileIndex += 0x0F;
                yield return(new Sprite(x, y + 8, tile));

                tile.TileIndex++;
                yield return(new Sprite(x + 8, y + 8, tile));
            }

            tile = new ChrTile(0x12A, 5, LayerPriority.Priority3, 0);
            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex += 0x0F;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y + 8, tile));
        }
Ejemplo n.º 4
0
        private IEnumerable <Sprite> Goomba(int x, int y)
        {
            y++;
            var tile = new ChrTile(0xC6, 1, LayerPriority.Priority2, 0);

            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            y += 8;
            if (((AnimationFrame + (x >> 1)) & 8) >> 3 == 0)
            {
                tile.TileIndex++;
                yield return(new Sprite(x, y, tile));

                tile.TileIndex++;
                yield return(new Sprite(x + 8, y, tile));
            }
            else
            {
                tile.TileIndex += 2;
                tile.XFlipped   = true;
                yield return(new Sprite(x, y, tile));

                tile.TileIndex--;
                yield return(new Sprite(x + 8, y, tile));
            }
        }
Ejemplo n.º 5
0
        private IEnumerable <Sprite> BalanceRopeLift(int x, int y)
        {
            var tile = new ChrTile(0x87, 6, LayerPriority.Priority2, 0);

            x -= 4;
            y -= 0x10;
            for (var i = 0; i <= 0x30; i += 8)
            {
                yield return(new Sprite(x + i, y, tile));
            }
        }
Ejemplo n.º 6
0
        private IEnumerable <Sprite> ShortLiftUp(int x, int y)
        {
            var tile = new ChrTile(0x87, 6, LayerPriority.Priority2, 0);

            y -= ((AnimationFrame << 6) / 75) + (x >> 4);
            y &= 0xFF;
            x += 8;
            for (var i = 0; i <= 0x18; i += 8)
            {
                yield return(new Sprite(x + i, y, tile));
            }
        }
Ejemplo n.º 7
0
        private IEnumerable <Sprite> Mushroom(int x, int y, int palette)
        {
            var tile = new ChrTile(0xE9, palette, LayerPriority.Priority2, 0);

            yield return(new Sprite(x, y - 8, tile));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y - 8, tile));

            tile.TileIndex = 0x78;
            yield return(new Sprite(x, y, tile, TileProperties.Transparent));

            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile, TileProperties.Transparent));
        }
Ejemplo n.º 8
0
        private IEnumerable <Sprite> BuzzyBeetle(int x, int y)
        {
            y += 2;
            var index = (((AnimationFrame + (x << 1)) & 8) >> 1);
            var tile  = new ChrTile(0xAA + index, 5, LayerPriority.Priority2, TileFlip.Horizontal);

            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x, y, tile));

            tile.TileIndex++;
            y += 8;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x, y, tile));
        }
Ejemplo n.º 9
0
        private IEnumerable <Sprite> SpringBoard(int x, int y)
        {
            var tile = new ChrTile(0xF2, 6, LayerPriority.Priority2, 0);

            yield return(new Sprite(x, y, tile));

            tile.TileFlip = TileFlip.Horizontal;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileFlip = TileFlip.Veritcal;
            yield return(new Sprite(x, y + 0x10, tile));

            tile.TileFlip = TileFlip.Both;
            yield return(new Sprite(x + 8, y + 0x10, tile));

            tile.TileIndex++;
            tile.TileFlip = 0;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileFlip = TileFlip.Horizontal;
            yield return(new Sprite(x + 8, y + 8, tile));
        }
Ejemplo n.º 10
0
        private IEnumerable <Sprite> FireBarCounterClockwise(int x, int y)
        {
            var tile = new ChrTile(
                0xBE + ((AnimationFrame & 4) >> 2),
                4,
                LayerPriority.Priority2,
                (TileFlip)((AnimationFrame & 0x0C) >> 2));

            x += 4;
            y -= 12;

            var rate  = 0x70;
            var angle = -((((AnimationFrame & ~3) >> 1) + (x >> 1)) % rate) * 2 * PI / rate;

            for (var i = 0; i < 6; i++)
            {
                yield return(new Sprite(
                                 x + (int)(8 * i * Cos(angle)),
                                 y + (int)(8 * i * Sin(angle)),
                                 tile));
            }
        }
Ejemplo n.º 11
0
        private IEnumerable <Sprite> KoopaTroopa(int x, int y, int palette)
        {
            var index = (((AnimationFrame + (x >> 1)) & 8) >> 3) * 5;

            y -= 7;
            var tile = new ChrTile(0xA0 + index, palette, LayerPriority.Priority2, TileFlip.Horizontal);

            yield return(new Sprite(x, y, tile));

            y += 8;
            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x, y, tile));

            y += 8;
            tile.TileIndex++;
            yield return(new Sprite(x + 8, y, tile));

            tile.TileIndex++;
            yield return(new Sprite(x, y, tile));
        }
Ejemplo n.º 12
0
        private IEnumerable <Sprite> PiranhaPlant(int x, int y)
        {
            if (RomData.AreaNumber == 0x25)
            {
                //yield break;
            }

            var index = ((AnimationFrame + (x >> 1)) & 0x10) == 0 ? 0xE5 : 0xEC;

            x += 8;
            y -= PirhanaPlantOffset(AnimationFrame - (x >> 2));

            var tile = new ChrTile(index, 5, 0, 0);

            yield return(new Sprite(x, y, tile));


            tile.TileIndex++;
            yield return(new Sprite(x, y + 8, tile));

            tile.TileIndex--;
            tile.TileFlip = TileFlip.Horizontal;
            x            += 8;
            yield return(new Sprite(x, y, tile));


            tile.TileIndex++;
            yield return(new Sprite(x, y + 8, tile));

            y += 0x10;
            tile.TileIndex    = 0xEB;
            tile.PaletteIndex = 2;
            yield return(new Sprite(x, y, tile));

            tile.TileFlip = 0;
            yield return(new Sprite(x - 8, y, tile));
        }