Memory diagnostics (GBS0200–GBS0299)
WRAM, VRAM and ROM consumption - what your declarations reserve, and budgets that fail the build when exceeded.
GBS0201: Static allocation
Severity: Resource · Suppressible: yes · Shown live in the IDE
{0} reserves {1} bytes of WRAM.
GBS0202: Large struct passed by value
Severity: Resource · Suppressible: yes
'{0}' is {1} bytes and is passed by value, which copies it through the stack.
Pass it by 'ref' to copy a 2-byte pointer instead.
GBS0203: ROM allocation
Severity: Resource · Suppressible: yes · Shown live in the IDE
{0} reserves {1} bytes of ROM.
GBS0204: VRAM tile budget
Severity: Resource · Suppressible: yes
Background and window assets need {0} tiles of the {1} that region holds.
Background and window share one 256-tile region of video memory; sprites have their own. Every asset loaded at the same time has to fit together, and GB# counts them all because it can see them all. A total above the region is fine when screens replace each other at runtime - GB# cannot see load order, so it reports the sum rather than failing the build.
GBS0205: VRAM tile budget exceeded
Severity: Error · Suppressible: no
{0} needs {1} tiles by itself; the background/window region holds {2}.
No load order can make a single asset larger than the region work. Reduce its unique tile count - the asset table in the build report shows where the tiles are.
GBS0210: WRAM budget exceeded
Severity: Error · Suppressible: no
This game uses {0} bytes of work RAM; the declared budget is {1}.
The figure is what the linker placed, which includes the stack, shadow OAM and GBDK's own state as well as your static fields. Raise [assembly: MaxWRAM] if the budget was optimistic, or move data into ROM by making it 'static readonly'.
GBS0211: ROM budget exceeded
Severity: Error · Suppressible: no
The ROM is {0} bytes; the declared budget is {1}.
Raise [assembly: MaxROM], or reduce what the cartridge holds. The build report's asset table is usually where the bytes are.
GBS0212: ROM bank budget exceeded
Severity: Error · Suppressible: no
The cartridge declares {0} banks; the budget is {1}.
Raise [assembly: MaxROMBanks], or pack the existing banks more tightly. The build report shows how full each one is.