Assets diagnostics (GBS0600–GBS0699)
The asset pipeline. Anything wrong with an image is reported against your C# declaration, with the fix in the message.
GBS0601: Too many colours
Severity: Error · Suppressible: no
'{0}' contains {1} colours. A 2bpp palette holds 4.
Reduce the image to 4 colours, or target Game Boy Color, where each 8x8 tile can use its own 4-colour palette out of 8.
GBS0602: Tile uses too many colours
Severity: Error · Suppressible: no
The tile at ({0},{1}) in '{2}' uses {3} colours.
On Game Boy Color every 8x8 tile draws from one 4-colour palette. Recolour this tile, or align the artwork to the 8-pixel grid so colour changes fall on tile boundaries.
GBS0603: Too many palettes
Severity: Error · Suppressible: no
'{0}' needs {1} background palettes; the Game Boy Color has 8.
Share colours between tiles so their palettes merge. Colours that appear in the same tile must live in the same palette, so moving one colour can free a whole palette.
GBS0604: Tile budget exceeded
Severity: Error · Suppressible: no
'{0}' has {1} unique tiles after deduplication. A tileset holds at most {2}.
Repeat more of the artwork so tiles deduplicate, or split the image into two assets and load them into different halves of the screen.
GBS0605: Dimensions not tile-aligned
Severity: Error · Suppressible: no
'{0}' is {1}x{2} pixels. Tiles are 8x8, so both dimensions must be multiples of 8.
Pad or crop the image so its width and height are multiples of 8.
GBS0606: Asset not found
Severity: Error · Suppressible: no
Asset '{0}' was not found. Looked in: {1}
Asset paths are relative to the file that declares them, then to the project's Assets folder. Check the name and the extension.
GBS0607: Unsupported image feature
Severity: Error · Suppressible: no
'{0}' uses {1}, which GB# cannot read.
Re-export the image as a non-interlaced PNG with 8 bits per channel. Most editors call this "PNG-24" or "PNG-8".
GBS0608: Malformed image
Severity: Error · Suppressible: no
'{0}' is not a readable PNG: {1}
The file may be truncated or may not be a PNG at all. Opening it in an image editor is the fastest way to confirm.
GBS0609: Invalid asset declaration
Severity: Error · Suppressible: no
'{0}' is marked [Asset] but {1}.
An asset field must be static and typed TileMap, TileSet, SpriteAsset, MetaspriteAsset or FontAsset. For example: [Asset("forest.png")] static TileMap Forest;
GBS0610: Asset support unavailable
Severity: Error · Suppressible: no
'{0}' declares an asset, but this compiler host has no asset pipeline.
This is a GB# configuration problem, not a problem with your code. Build with 'gbsharp build'.
GBS0611: Map too large
Severity: Error · Suppressible: no
'{0}' is {1}x{2} tiles. GB# converts maps up to {3}x{3}.
The limit is what fits in one ROM bank: a 128x128 map is 16 KB. Crop the image, or split it into several assets and load them as the camera moves.
GBS0612: Colours on an original Game Boy
Severity: Warning · Suppressible: no
'{0}' uses colours the original Game Boy cannot show.
The four colours will be assigned to the four shades by brightness. Set "target": "gbc" in gbsharp.json to keep the colours.
GBS0613: Asset used as a value
Severity: Error · Suppressible: no
'{0}' is an asset and can only be passed to a loader such as Background.Load.
An asset is data in ROM, not a value you can copy. Pass it to the framework member that loads it.
GBS0614: Flip deduplication unavailable
Severity: Error · Suppressible: no
DedupeFlips is set on '{0}', but a Game Boy background map has no flip bits.
Remove DedupeFlips, or target Game Boy Color, where each map cell carries X and Y flip flags.
GBS0615: Binary asset too large
Severity: Error · Suppressible: no
'{0}' is {1} bytes; a binary asset holds at most {2}.
The length is handed to your code as a 16-bit value, so it cannot describe more than 64 KB. Split the file, or address it in chunks with separate [Binary] fields.
GBS0620: Asset ROM cost
Severity: Resource · Suppressible: no
{0} places {1} bytes in ROM: {2} tiles ({3} unique), {4}x{5} map.
GBS0621: Shared asset
Severity: Info · Suppressible: no
'{0}' and '{1}' name the same image and share one copy in ROM.
GBS0622: Binary asset ROM cost
Severity: Resource · Suppressible: yes
{0} places {1} bytes in ROM.
GBS0623: Map larger than the hardware map
Severity: Info · Suppressible: yes
'{0}' is {1}x{2} tiles; the hardware background map is 32x32.
Background.Load copies as much as fits. Use Background.DrawRegion to copy a window of the map instead, which is how a world larger than one screen scrolls.
GBS0624: Tall sprite height not aligned
Severity: Error · Suppressible: no
'{0}' is {1} pixels tall; TallSprites needs a multiple of 16.
Each 8x16 sprite is one 16-pixel-tall column on the sheet. Pad or crop the image so its height is a multiple of 16.
GBS0625: Metasprite sheet not divisible into frames
Severity: Error · Suppressible: no
'{0}' is {1}x{2} tiles; that does not divide evenly into {3}x{4}-tile frames.
The sheet is a grid of same-sized frames, read left-to-right then top-to-bottom. Pad the image, or change FrameWidth/FrameHeight so they divide the sheet evenly.
GBS0626: Metasprite has too many sub-sprites
Severity: Error · Suppressible: no
'{0}' needs {1} sub-sprite records across its frames; that does not fit a uint8_t offset table.
Use fewer frames, smaller frames, or drop more of each frame's fully-transparent tiles so fewer sub-sprites are needed.
GBS0627: Font sheet has the wrong shape
Severity: Error · Suppressible: no
'{0}' is {1}x{2} tiles; a font with {3} characters needs a sheet {3}x1 tiles.
Font sheets are one row of 8x8 glyphs, one tile per character in Characters, left to right. Pad or crop the image so its width is Characters.Length tiles and its height is exactly one tile.
GBS0628: Font characters required
Severity: Error · Suppressible: no
'{0}' is marked [Font] but Characters is empty.
Set Characters to the character set in the order the glyphs appear on the sheet, for example [Font("font.png", Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 .,!?")].