megadev-graphics
Megadev graphics
Work with the game's existing renderer, clock and art direction. Megadev exposes VDP registers and BIOS services; it does not provide SGDK's sprite engine, ResComp structures or DMA queue policy. Verify the selected toolchain's headers and calling conventions before using an API. The Mega CD still displays through the base Mega Drive VDP.
Plan what is resident
Identify the configured resolution, table addresses, pattern ranges, palette lines and upload owner before adding graphics. Read layout and budgets when placing art, setting sprite limits or interpreting tile counts. Validate the actual settings rather than assuming the Lab's map is universal.
Keep conversion in the asset pipeline. Graphics consumes prepared patterns, maps, palettes and frame metadata with an agreed layout. A larger sprite or image is not automatically a single hardware sprite, and sprite frame patterns have a different order from a background map. The Lab includes prepared data and its own validator; installing another skill is not required to build it.
Render through one frame owner
Use frame submission for foreground/interrupt responsibilities, safe publication, BIOS integration and source lifetimes. Prepare immutable frame data outside the interrupt; submit only bounded work during VBlank. Do not load files, decompress, wait or run game simulation in that callback. Disabling interrupts alone does not turn active display into VBlank.
Use scrolling and sprites for camera transforms, plane periods, Window HUD, priority and animation timing. Cull before submission, admit important actors first and handle rejected sprites explicitly. Animation is frame selection over the game's clock; it does not require a separate timer per object.
Use palette effects for palette ownership, fades, cycling and flash effects. Preserve the base palette, protect UI colors and commit changes through the same frame owner. Dithering is an asset choice to inspect at native size, not a requirement for every background. Shadow/highlight is a separate optional rendering contract, not extra palette entries that appear automatically.