Table of Contents

Class Metasprites

Namespace
GB
Assembly
GBSharp.Framework.dll

Drawing an animated hardware sprite made of several sub-sprites, from a [Metasprite] asset.

public static class Metasprites
Inheritance
Metasprites
Inherited Members

Remarks

Thin wrappers over GBDK's own move_metasprite_ex family (gb/metasprites.h). Which hardware sprites and which tiles a frame uses are arguments on every call, never implicit state this class keeps for you.

Methods

HideRange(byte, byte)

Hides hardware sprites from up to (not including) to.

[Native("hide_sprites_range")]
public static void HideRange(byte from, byte to)

Parameters

from byte
to byte

Remarks

Frames vary in how many sub-sprites they need. After moving to a new frame, hide from its Move(MetaspriteAsset, byte, byte, byte, byte, byte) return value up to the previous frame's, or the sprites that frame is no longer using stay on screen.

Load(MetaspriteAsset)

Uploads a sheet's tiles and, on Game Boy Color, its palettes.

[Native("gbs_metasprite_load")]
public static void Load(MetaspriteAsset sheet)

Parameters

sheet MetaspriteAsset

Move(MetaspriteAsset, byte, byte, byte, byte, byte)

Moves one frame of a metasprite to the absolute position x, y.

[Native("gbs_metasprite_move")]
public static byte Move(MetaspriteAsset sheet, byte frame, byte baseTile, byte baseSprite, byte x, byte y)

Parameters

sheet MetaspriteAsset

The converted sheet, already loaded with Load(MetaspriteAsset).

frame byte

Which frame to draw, in the order the sheet's frames were declared.

baseTile byte

The first tile this frame's sub-sprites were uploaded to.

baseSprite byte

The first hardware sprite to use; the frame uses as many as it needs from there.

x byte

Absolute screen X of the frame's origin, in pixels.

y byte

Absolute screen Y of the frame's origin, in pixels.

Returns

byte

How many hardware sprites this frame used.

Remarks

Different frames of the same metasprite can use different numbers of sub-sprites. When switching frames, hide the ones the previous frame used and this one did not - HideRange(byte, byte) from this frame's return value onward, before drawing the new one, does that.

MoveFlippedX(MetaspriteAsset, byte, byte, byte, byte, byte)

[Native("gbs_metasprite_move_flip_x")]
public static byte MoveFlippedX(MetaspriteAsset sheet, byte frame, byte baseTile, byte baseSprite, byte x, byte y)

Parameters

sheet MetaspriteAsset
frame byte
baseTile byte
baseSprite byte
x byte
y byte

Returns

byte

MoveFlippedXy(MetaspriteAsset, byte, byte, byte, byte, byte)

[Native("gbs_metasprite_move_flip_xy")]
public static byte MoveFlippedXy(MetaspriteAsset sheet, byte frame, byte baseTile, byte baseSprite, byte x, byte y)

Parameters

sheet MetaspriteAsset
frame byte
baseTile byte
baseSprite byte
x byte
y byte

Returns

byte

MoveFlippedY(MetaspriteAsset, byte, byte, byte, byte, byte)

[Native("gbs_metasprite_move_flip_y")]
public static byte MoveFlippedY(MetaspriteAsset sheet, byte frame, byte baseTile, byte baseSprite, byte x, byte y)

Parameters

sheet MetaspriteAsset
frame byte
baseTile byte
baseSprite byte
x byte
y byte

Returns

byte