diff --git a/animations/27c3.c b/animations/27c3.c new file mode 100644 index 0000000..52a7b32 --- /dev/null +++ b/animations/27c3.c @@ -0,0 +1,60 @@ +#include +#include + +#include "../compat/pgmspace.h" +#include "bitmapscroller.h" +#include "27c3.h" + + +static uint8_t logo_27c3_getChunk(unsigned int const nBitPlane, + unsigned int const nChunkX, + unsigned int const nChunkY, + unsigned int const nFrame) +{ + assert(nBitPlane < 2); + assert(nChunkX < 7); + assert(nChunkY < 16); + + static uint8_t aBitmap [2][16][7] PROGMEM = + {{{0x08, 0x00, 0x40, 0x04, 0x00, 0x40, 0x00}, // bit plane 0 + {0x08, 0x00, 0x40, 0x04, 0x00, 0x40, 0x00}, + {0x08, 0x00, 0x40, 0x04, 0x00, 0x40, 0x00}, + {0x0F, 0xF0, 0x7F, 0x04, 0x00, 0x7F, 0x00}, + {0x00, 0x10, 0x01, 0x04, 0x70, 0x01, 0x00}, + {0x00, 0x10, 0x01, 0x04, 0x10, 0x01, 0x00}, + {0x08, 0x00, 0x00, 0x04, 0x10, 0x40, 0x00}, + {0x08, 0x00, 0x00, 0x04, 0x10, 0x40, 0x00}, + {0x08, 0x00, 0x00, 0x04, 0x10, 0x40, 0x00}, + {0x08, 0x7F, 0xFF, 0x04, 0x1E, 0x7F, 0x00}, + {0x08, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00}, + {0x08, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00}, + {0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00}, + {0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00}, + {0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00}, + {0x0F, 0xFF, 0xF9, 0x07, 0xFF, 0xFF, 0xF0}}, + + {{0x0F, 0xFE, 0x7F, 0xE7, 0xFE, 0x7F, 0xF0}, // bit plane 1 + {0x0F, 0xFE, 0x7F, 0xE7, 0xFE, 0x7F, 0xF0}, + {0x0F, 0xFE, 0x7F, 0xE7, 0xFE, 0x7F, 0xF0}, + {0x08, 0x0E, 0x40, 0xE7, 0xFE, 0x40, 0xF0}, + {0x00, 0x1E, 0x01, 0xE7, 0x8E, 0x01, 0xF0}, + {0x00, 0x1E, 0x01, 0xE7, 0x9E, 0x01, 0xF0}, + {0x0F, 0xFF, 0xFF, 0xE7, 0x9E, 0x7F, 0xF0}, + {0x0F, 0xFF, 0xFF, 0xE7, 0x9E, 0x7F, 0xF0}, + {0x0F, 0xFF, 0xFF, 0xE7, 0x9E, 0x7F, 0xF0}, + {0x0F, 0x80, 0x00, 0xE7, 0x90, 0x40, 0xF0}, + {0x0F, 0x80, 0x01, 0xE7, 0x80, 0x01, 0xF0}, + {0x0F, 0x80, 0x01, 0xE7, 0x80, 0x01, 0xF0}, + {0x0F, 0xFF, 0xF9, 0xE7, 0xFF, 0xFF, 0xF0}, + {0x0F, 0xFF, 0xF9, 0xE7, 0xFF, 0xFF, 0xF0}, + {0x0F, 0xFF, 0xF9, 0xE7, 0xFF, 0xFF, 0xF0}, + {0x08, 0x00, 0x01, 0xE4, 0x00, 0x00, 0x00}}}; + + return pgm_read_byte(&aBitmap[nBitPlane][nChunkY][nChunkX]); +} + +void logo_27c3() +{ + // width 56, height 16, 2 bitplanes (4 colors), 600 frames à 50ms (20 fps) + bitmap_scroll(56, 16, 2, 600, 50, logo_27c3_getChunk); +} diff --git a/animations/27c3.h b/animations/27c3.h new file mode 100644 index 0000000..eba3309 --- /dev/null +++ b/animations/27c3.h @@ -0,0 +1,6 @@ +#ifndef LOGO_27C3_H_ +#define LOGO_27C3_H_ + +void logo_27c3(); + +#endif /* LOGO_27C3_H_ */ diff --git a/animations/Makefile b/animations/Makefile index b81b83b..e53c98d 100644 --- a/animations/Makefile +++ b/animations/Makefile @@ -45,4 +45,8 @@ ifeq ($(ANIMATION_AMPHIBIAN),y) SRC += amphibian.c endif +ifeq ($(ANIMATION_LOGO_27C3),y) + SRC += 27c3.c +endif + include $(TOPDIR)/rules.mk diff --git a/animations/config.in b/animations/config.in index 8db2bab..6f64de5 100644 --- a/animations/config.in +++ b/animations/config.in @@ -18,6 +18,7 @@ comment "Animations" dep_bool_menu "Bitmap Scroller" ANIMATION_BMSCROLLER y $RANDOM_SUPPORT dep_bool "LABOR Logo" ANIMATION_LABORLOGO $ANIMATION_BMSCROLLER dep_bool "Amphibian" ANIMATION_AMPHIBIAN $ANIMATION_BMSCROLLER + dep_bool "27c3 Logo" ANIMATION_LOGO_27C3 $ANIMATION_BMSCROLLER endmenu comment "Special Animations" diff --git a/display_loop.c b/display_loop.c index 89f1095..e14107e 100644 --- a/display_loop.c +++ b/display_loop.c @@ -13,6 +13,7 @@ #include "animations/ltn_ant.h" #include "animations/amphibian.h" #include "animations/laborlogo.h" +#include "animations/27c3.h" #include "borg_hw/borg_hw.h" #include "can/borg_can.h" #include "random/prng.h" @@ -156,6 +157,12 @@ void display_loop(){ break; #endif +#ifdef ANIMATION_LOGO_27C3 + case 17: + logo_27c3(); + break; +#endif + #ifdef ANIMATION_TESTS case 31: test_level1();