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)); }
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)); }
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)); }
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)); } }
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)); } }
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)); } }
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)); }
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)); }
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)); }
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)); } }
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)); }
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)); }