13 static int logo_width, logo_height;
14 static long start_time;
18 if(!(logo = img_load_pixels("data/msglogo.jpg", &logo_width, &logo_height, IMG_FMT_BGRA32))) {
19 fprintf(stderr, "failed to load logo image\n");
25 void intro_cleanup(void)
27 img_free_pixels(logo);
30 void intro_start(void)
33 key_event = intro_keyb;
35 start_time = time_msec;
42 void fade_image(void *dest, void *src, uint16_t fade);
49 tm = time_msec - start_time;
51 fade = tm * 256 / FADE_DUR;
52 } else if(tm < FADE_DUR * 2) {
54 } else if(tm < FADE_DUR * 3) {
55 fade = 256 - (tm - 2 * FADE_DUR) * 256 / FADE_DUR;
62 fade_image(fb_pixels, logo, fade);
67 uint16_t *dest = fb_pixels;
68 for(i=0; i<640*480; i++) {
69 uint32_t pix = *src++;
70 uint16_t r = (uint16_t)UNPACK_R32(pix) * fade / 256;
71 uint16_t g = (uint16_t)UNPACK_G32(pix) * fade / 256;
72 uint16_t b = (uint16_t)UNPACK_B32(pix) * fade / 256;
73 *dest++ = PACK_RGB16(r, g, b);
78 blit_frame(fb_pixels, 0);
81 void intro_keyb(int key, int pressed)