mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-12-28 05:29:33 +00:00
43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
#ifndef _SPRITES_H
|
|
#define _SPRITES_H
|
|
|
|
#include "common.h"
|
|
|
|
typedef struct SpriteShadow {
|
|
struct {
|
|
byte x; /* X coordinate */
|
|
byte y; /* Y coordinate */
|
|
} spr_pos[8];
|
|
byte spr_hi_x; /* High bits of X coordinate */
|
|
byte spr_ena; /* Enable sprites */
|
|
byte spr_exp_y; /* Expand sprites in Y dir */
|
|
byte spr_bg_prio; /* Priority to background */
|
|
byte spr_mcolor; /* Sprite multicolor bits */
|
|
byte spr_exp_x; /* Expand sprites in X dir */
|
|
byte spr_color[8]; /* Colors for the sprites */
|
|
byte spr_shapes[8]; /* sprite shapes */
|
|
} SpriteShadow;
|
|
|
|
/* sprite shadow buffer */
|
|
extern SpriteShadow sprshad;
|
|
|
|
/* set one or more sprite patterns from a byte array */
|
|
void sprite_set_shapes(const void* sprite_data,
|
|
byte index,
|
|
byte count);
|
|
/* clear all sprites from shadow buffer */
|
|
void sprite_clear();
|
|
/* draw a sprite into shadow buffer */
|
|
void sprite_draw(byte index, word x, byte y, byte shape);
|
|
/* update sprite registers */
|
|
void sprite_update(byte* screenmem);
|
|
|
|
/* get the closest sprite collision
|
|
given the set of collision flags */
|
|
byte sprite_get_closest_collision(byte index, byte spr_coll);
|
|
|
|
// bit lookup table
|
|
extern const byte BITS[8];
|
|
|
|
#endif
|