/* * sprite_init — инициализировать спрайт: img + размер кадра из заголовка * getimage (uint16 w, uint16 h). Спрайт невидим (flags = 0) и нигде не * нарисован (drawn[*].on = 0) — первый sprite_show + sprite_update его * выведет. Для атласа после init перезадать s->w/s->h (размер кадра) и * s->sx/s->sy. См. docs/sprite-api-design.md §9.1. */ #include "../_bgi.h" #include void sprite_init(sprite_t *s, const void *img) { const uint8_t *p = (const uint8_t *)img; s->img = img; s->x = 0; s->y = 0; s->sx = 0; s->sy = 0; /* Размер кадра ≤ 255 (см. sprite.h) → младший байт uint16-заголовка; * старший байт для спрайта-кадра всегда 0. */ s->w = p[0]; s->h = p[2]; s->flags = 0; s->page = 0; /* img в обычной памяти (не W0-атлас) */ s->drawn[0].on = 0; s->drawn[1].on = 0; }