public static void DrawInBitmap(this Tilemap tilemap, GraphicsBank tileSet, Bitmap bm) { for (int tileY = 0; tileY < tilemap.TilesY; ++tileY) { for (int tileX = 0; tileX < tilemap.TilesX; ++tileX) { Tilemap.TilemapEntry tileEntry = tilemap.TileMap[tileY, tileX]; Tile tile = tileSet.Tiles[tileEntry.TileId]; tile.DrawInBitmap(bm, tileX * Tile.Width, tileY * Tile.Height, tileEntry.XFlip, tileEntry.YFlip, tileEntry.Palette * 16); } } }
public static Bitmap ToBitmap(this GraphicsBank tiles, Palette palette) { int widthTiles = tiles.TilesX; int heightTiles = tiles.TilesY; var bm = new Bitmap(widthTiles * Tile.Width, heightTiles * Tile.Height, tiles.Format.AsPixelFormat()); palette.Apply(bm); tiles.DrawInBitmap(bm); return(bm); }
public static Bitmap ToBitmap(this Tilemap tilemap, GraphicsBank tileSet, Palette palette) { int widthTiles = tilemap.TilesX; int heightTiles = tilemap.TilesY; var bm = new Bitmap(widthTiles * Tile.Width, heightTiles * Tile.Height, PixelFormat.Format8bppIndexed); palette.Apply(bm); tilemap.DrawInBitmap(tileSet, bm); return(bm); }
private static void DrawInBitmap1DMapping(this OAMEntry oam, Bitmap bm, GraphicsBank graphics, int xOffset, int yOffset) { for (uint tileY = 0; tileY < oam.TilesY; ++tileY) { for (uint tileX = 0; tileX < oam.TilesX; ++tileX) { uint tileIndex = oam.TileIndex; tileIndex += tileX + oam.TilesX * tileY; var tile = graphics.Tiles[tileIndex]; oam.DrawInBitmap(bm, tile, tileX, tileY, xOffset, yOffset); } } }
public static void DrawInBitmap2DMapping(this OAMEntry oam, Bitmap bm, GraphicsBank graphics, int xOffset, int yOffset) { uint baseX = oam.TileIndex % graphics.TilesX; uint baseY = oam.TileIndex / graphics.TilesX; uint subTileWidth = (graphics.TilesX == 0xFFFF) ? oam.TilesX : graphics.TilesX; for (uint tileY = 0; tileY < oam.TilesY; ++tileY) { for (uint tileX = 0; tileX < oam.TilesX; ++tileX) { uint subTileYIndex = baseY + tileY; uint subTileXIndex = baseX + tileX; uint tileIndex = subTileXIndex + subTileYIndex * subTileWidth; var tile = graphics.Tiles[tileIndex]; oam.DrawInBitmap(bm, tile, tileX, tileY, xOffset, yOffset); } } }
public static void DrawInBitmap(this GraphicsBank tiles, Bitmap bm) { if (!tiles.CanBeDrawnStandalone) { throw new NotSupportedException("Graphicsbank can't be drawn independently"); } int widthTiles = tiles.TilesX; int heightTiles = tiles.TilesY; for (int tileY = 0; tileY < heightTiles; ++tileY) { for (int tileX = 0; tileX < widthTiles; ++tileX) { var tile = tiles.Tiles[tileY * tiles.TilesX + tileX]; tile.DrawInBitmap(bm, tileX * Tile.Width, tileY * Tile.Height); } } }
public static void DrawInBitmap(this NCER.AnimationCell cell, Bitmap bm, NCER.MappingFormat mapping, GraphicsBank graphics, int xOffset = 0, int yOffset = 0) { foreach (var oam in cell.oams) { oam.DrawInBitmap(bm, mapping, graphics, xOffset, yOffset); } }
public static void DrawInBitmap(this OAMEntry oam, Bitmap bm, Animation.NCER.MappingFormat mapping, GraphicsBank graphics, int xOffset, int yOffset) { if (mapping == Animation.NCER.MappingFormat.CM_2D) { oam.DrawInBitmap2DMapping(bm, graphics, xOffset, yOffset); } else { oam.DrawInBitmap1DMapping(bm, graphics, xOffset, yOffset); } }