34
#include "raster-sprite-cache.h"
31
35
#include "raster-sprite-status.h"
32
36
#include "raster-sprite.h"
36
void raster_sprite_status_init(raster_sprite_status_t *s,
37
unsigned int num_sprites)
41
static void raster_sprite_status_init(raster_sprite_status_t *status,
42
unsigned int num_sprites)
44
status->num_sprites = num_sprites;
45
status->cache_init_func = raster_sprite_cache_init;
47
status->draw_function = NULL;
48
status->draw_partial_function = NULL;
49
status->cache_function = NULL;
51
if (num_sprites > 0) {
52
status->sprites = lib_malloc(sizeof(*status->sprites) * num_sprites);
53
status->sprite_data_1 = lib_malloc(sizeof(DWORD) * num_sprites);
54
status->sprite_data_2 = lib_malloc(sizeof(DWORD) * num_sprites);
56
status->sprites = NULL;
57
status->sprite_data_1 = NULL;
58
status->sprite_data_2 = NULL;
61
raster_sprite_status_reset(status);
64
static void raster_sprite_status_shutdown(raster_sprite_status_t *status,
65
unsigned int num_sprites)
67
if (num_sprites > 0) {
68
lib_free(status->sprites);
69
lib_free(status->sprite_data_1);
70
lib_free(status->sprite_data_2);
74
void raster_sprite_status_new(raster_t *raster, unsigned int num_sprites)
76
raster->sprite_status = (raster_sprite_status_t *)lib_malloc(
77
sizeof(raster_sprite_status_t));
78
raster_sprite_status_init(raster->sprite_status, num_sprites);
81
void raster_sprite_status_destroy(raster_t *raster)
83
if (raster->sprite_status) {
84
raster_sprite_status_shutdown(raster->sprite_status,
85
raster->sprite_status->num_sprites);
86
lib_free(raster->sprite_status);
90
void raster_sprite_status_reset(raster_sprite_status_t *status)
41
s->num_sprites = num_sprites;
43
s->draw_function = NULL;
49
s->mc_sprite_color_1 = 0;
50
s->mc_sprite_color_2 = 0;
52
if (num_sprites > 0) {
53
s->sprites = xmalloc (sizeof (*s->sprites) * num_sprites);
54
s->sprite_data_1 = xmalloc (sizeof (DWORD) * num_sprites);
55
s->sprite_data_2 = xmalloc (sizeof (DWORD) * num_sprites);
58
s->sprite_data_1 = NULL;
59
s->sprite_data_2 = NULL;
62
s->sprite_data = s->sprite_data_1;
63
s->new_sprite_data = s->sprite_data_2;
65
for (i = 0; i < num_sprites; i++)
66
raster_sprite_init (&s->sprites[i]);
69
raster_sprite_status_t *raster_sprite_status_new (unsigned int num_sprites)
71
raster_sprite_status_t *new_status;
74
= (raster_sprite_status_t *)xmalloc(sizeof(raster_sprite_status_t));
75
raster_sprite_status_init(new_status, num_sprites);
94
status->visible_msk = 0;
96
status->new_dma_msk = 0;
98
status->mc_sprite_color_1 = 0;
99
status->mc_sprite_color_2 = 0;
101
memset(status->sprite_data_1, 0, sizeof(DWORD) * status->num_sprites);
102
memset(status->sprite_data_2, 0, sizeof(DWORD) * status->num_sprites);
104
status->sprite_data = status->sprite_data_1;
105
status->new_sprite_data = status->sprite_data_2;
107
for (i = 0; i < status->num_sprites; i++)
108
raster_sprite_reset(&status->sprites[i]);
80
111
void raster_sprite_status_set_draw_function(raster_sprite_status_t *status,