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,
|  |  | a
| ) |  | {(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

  from | start OAM index
  to | finish 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

  metasprite | Pointer to the first struct of the metasprite (for the desired frame)
  base_tile | Number of the first tile where the metasprite's tiles start
  base_prop | Base sprite property flags (unused on this platform)
  base_sprite | Number of the first hardware sprite to be used by the metasprite
  x | Absolute x coordinate of the sprite
  y | Absolute 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

  metasprite | Pointer to first struct of the desired metasprite frame
  base_sprite | Number 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")