Mirai's Miscellaneous Misadventures
M49 / core / logos.c
#include <mimimi.h>
void mimimi_logo(struct mimimi_engine *engine, struct mimimi_logo *logo, struct mimimi_logo_line *lines, int count)
{
int i;
struct mimimi_image *image;
struct mimimi_logo_line *line;
logo->lines = lines;
logo->count = count;
for (i = 0 ; i < count ; i++)
{
line = logo->lines + i;
image = logo->images + i;
logo->y_offsets[i] = 8192;
image->colors = logo->colors[i];
image->width = line->size.width;
image->height = line->size.height;
mimimi_unpack_bits(image->width * image->height, image->colors, line->packed);
logo->textures[i] = (*engine->texture)(engine->data, image);
}
}
unsigned char mimimi_logo_tick(struct mimimi_engine *engine, struct mimimi_logo *logo, int x, int y)
{
int i;
struct mimimi_logo_line *line;
for (i = 0 ; i < logo->count ; i++)
{
line = logo->lines + i;
(*engine->stamp)(engine->data, x + line->position.x, y + line->position.y + logo->y_offsets[i] / 256, logo->textures[i]);
if (logo->y_offsets[i] <= 0) continue;
logo->y_offsets[i] = mimimi_div_down(logo->y_offsets[i] * 15, 16);
return 0;
}
return 1;
}