blob: 5adafe8d71ff7fd8fe924b9f3b80747698c28421 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include <incbin.h>
#include <stdio.h>
#include <unistd.h>
INCBIN(APPLE, "data/apple.bin");
#define APPLE_WIDTH 256
#define APPLE_HEIGHT 144
#define APPLE_FPS 12
#define APPLE_FRAMES 2630
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
// returned from drm
static uint32_t *fb;
static int width, height, bpp, scale;
// meta
static size_t frame = 0;
static size_t frame_size;
static size_t ticks_off;
static void draw_frame(void)
{
size_t offset = frame_size * frame;
for (int y = 0; y < APPLE_HEIGHT * scale; y++) {
for (int x = 0; x < APPLE_WIDTH * scale; x++) {
uint8_t color =
gAPPLEData[offset + ((x / scale) + (y / scale) * APPLE_WIDTH)];
fb[x + y * width] = (color << 16) | (color << 8) | (color << 0);
}
}
frame = ((ticks() - ticks_off) / (1000 / APPLE_FPS));
if (frame >= APPLE_FRAMES)
exit(0);
}
int main(void)
{
printf("all your apple belong to bad\n");
if (drm((void **)&fb, &width, &height, &bpp)) {
fprintf(stderr, "failure!\n");
return 1;
}
ticks_off = ticks();
frame_size = APPLE_WIDTH * APPLE_HEIGHT;
scale = MIN(width / APPLE_WIDTH, height / APPLE_HEIGHT);
while (1)
draw_frame();
return 0;
}
|