GBDK 2020 Docs  4.3.0
API Documentation for GBDK 2020
metasprites.h File Reference
#include <msx/hardware.h>
#include <types.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  metasprite_t
 

Macros

#define metasprite_end   -128
 
#define METASPR_ITEM(dy, dx, dt, a)   {(dy),(dx),(dt),(a)}
 
#define METASPR_TERM   {metasprite_end}
 

Typedefs

typedef struct metasprite_t metasprite_t
 

Functions

void hide_sprites_range (uint8_t from, uint8_t to) Z88DK_CALLEE PRESERVES_REGS(iyh
 
uint8_t move_metasprite_ex (const metasprite_t *metasprite, uint8_t base_tile, uint8_t base_prop, uint8_t base_sprite, uint8_t x, uint8_t y)
 
uint8_t move_metasprite (const metasprite_t *metasprite, uint8_t base_tile, uint8_t base_sprite, uint8_t x, uint8_t y)
 
void hide_metasprite (const metasprite_t *metasprite, uint8_t base_sprite)
 

Variables

const void * __current_metasprite
 
uint8_t __current_base_tile
 
uint8_t __render_shadow_OAM
 
static uint8_t iyl
 

Macro Definition Documentation

◆ metasprite_end

#define metasprite_end   -128

◆ METASPR_ITEM

#define METASPR_ITEM (   dy,
  dx,
  dt,
 
)    {(dy),(dx),(dt),(a)}

◆ METASPR_TERM

#define METASPR_TERM   {metasprite_end}

Typedef Documentation

◆ metasprite_t

typedef struct metasprite_t metasprite_t

Metasprite sub-item structure

Parameters
dy(int8_t) Y coordinate of the sprite relative to the metasprite origin (pivot)
dx(int8_t) X coordinate of the sprite relative to the metasprite origin (pivot)
dtile(uint8_t) Start tile relative to the metasprites own set of tiles
props(uint8_t) Property Flags

Metasprites are built from multiple metasprite_t items (one for each sub-sprite) and a pool of tiles they reference. If a metasprite has multiple frames then each frame will be built from some number of metasprite_t items (which may vary based on how many sprites are required for that particular frame).

A metasprite frame is terminated with a {metasprite_end} entry.

Function Documentation

◆ hide_sprites_range()

void hide_sprites_range ( uint8_t  from,
uint8_t  to 
)

Hides all hardware sprites in range from <= X < to

Parameters
fromstart OAM index
tofinish OAM index

◆ move_metasprite_ex()

uint8_t move_metasprite_ex ( const metasprite_t metasprite,
uint8_t  base_tile,
uint8_t  base_prop,
uint8_t  base_sprite,
uint8_t  x,
uint8_t  y 
)
inline

Moves metasprite to the absolute position x and y

Parameters
metaspritePointer to the first struct of the metasprite (for the desired frame)
base_tileNumber of the first tile where the metasprite's tiles start
base_propBase sprite property flags (unused on this platform)
base_spriteNumber of the first hardware sprite to be used by the metasprite
xAbsolute x coordinate of the sprite
yAbsolute y coordinate of the sprite

Moves metasprite to the absolute position x and y (with no flip on the X or Y axis). Hardware sprites are allocated starting from base_sprite, using tiles starting from base_tile.

Sets:

  • __current_metasprite = metasprite;
  • __current_base_tile = base_tile;
Returns
Number of hardware sprites used to draw this metasprite

◆ move_metasprite()

uint8_t move_metasprite ( const metasprite_t metasprite,
uint8_t  base_tile,
uint8_t  base_sprite,
uint8_t  x,
uint8_t  y 
)
inline

Obsolete

◆ hide_metasprite()

void hide_metasprite ( const metasprite_t metasprite,
uint8_t  base_sprite 
)
inline

Hides a metasprite from the screen

Parameters
metaspritePointer to first struct of the desired metasprite frame
base_spriteNumber of hardware sprite to start with

Sets:

  • __current_metasprite = metasprite;

Variable Documentation

◆ __current_metasprite

const void* __current_metasprite
extern

◆ __current_base_tile

uint8_t __current_base_tile
extern

◆ __render_shadow_OAM

uint8_t __render_shadow_OAM
extern

◆ iyl

uint8_t iyl
Initial value:
{
__asm__("ei")