Displaying a graphic on the Gameduino…

June 9, 2011 | Arduino, Gameduino | By: Mark VandeWettering

Okay, so yesterday I did some sprite animation and learned a bit about how color maps work on the Gameduino. I didn’t have a lot of time to tinker with the Gameduino tonight, but I did want to test my understanding of sprites, so I made a simple little program to display my brainwagon logo (blue Mark and his wagon o’ brains) on the left using the Arduino.

There are a few things that you have to understand.

First, there is memory for 64 sprite images, each one being 16×16 pixels. But that’s if you use 8 bit colormaps. If you choose to just use 4 bit maps, you can get twice as many. I rescaled my logo to be 96×128 pixels (a convenient multiple of 16) and used the netpbm utilities to convert it down to just 16 colors. Normally, that would be 6*8 = 48 sprite images, but since we are just using 16 colors, we end up with using 24 sprites. I wrote a shell script and a small C program to use the netpbm to dump the raw bits, and then used John’s python “compress” function to compress the array into an array that can be stored in flash memory. The net result is the following display, followed by the code used to display it.

#include
#include
#include

static PROGMEM prog_uchar data[] = {

0xc1, 0×21, 0×20, 0x8a, 0×10, 0×61, 0×22, 0xc0, 0xcc, 0×04, 0×44, 0×20,
0×84, 0x7d, 0×18, 0×86,
0×63, 0×04, 0x9a, 0x0a, 0xe4, 0×08, 0×35, 0×93, 0x0e, 0xa2, 0x4c, 0×05,
0×90, 0×61, 0xc1, 0×86,
0×73, 0×18, 0×87, 0×08, 0xc1, 0xa1, 0×11, 0×11, 0xa2, 0xc2, 0×33, 0×80,
0×71, 0xe0, 0xc0, 0×85,
0×39, 0×00, 0×70, 0×05, 0xa0, 0×28, 0×51, 0×82, 0×03, 0×10, 0x0f, 0x8e,
0×70, 0x8d, 0xc0, 0xf0,
0xc6, 0×13, 0x4f, 0×01, 0x1d, 0×03, 0×82, 0×03, 0×22, 0xbc, 0×13, 0×38,
0xb8, 0×52, 0×23, 0xbd,
0×33, 0×34, 0xbc, 0xe3, 0x3f, 0×53, 0xd4, 0xa4, 0×77, 0×46, 0×25, 0×51,
0xfc, 0×45, 0xc8, 0×40,
0×62, 0xc6, 0×11, 0xff, 0xe1, 0xd0, 0x1e, 0xf1, 0xdf, 0×04, 0xb1, 0×80,
0×59, 0×54, 0xfa, 0×07,
0x3e, 0×66, 0×31, 0×01, 0xf0, 0xf9, 0×21, 0×24, 0xe6, 0x0b, 0×23, 0x3c,
0x7c, 0×22, 0xf2, 0x2b,
0xe2, 0x5f, 0xc4, 0×07, 0x3c, 0×87, 0xe0, 0xa0, 0×10, 0×21, 0xea, 0x2b,
0xdf, 0×42, 0×85, 0×08,
0x1c, 0×11, 0×64, 0xf8, 0x2d, 0×44, 0xcd, 0xf7, 0x7f, 0×04, 0xc4, 0×75,
0×36, 0x7e, 0×38, 0x7d,
0×50, 0x0c, 0x5c, 0x8e, 0x8a, 0xfb, 0xfe, 0×18, 0×55, 0×01, 0xa8, 0×39,
0xdc, 0×65, 0xe9, 0xd2,
0×85, 0x2a, 0×22, 0x1c, 0×13, 0x0e, 0×17, 0×55, 0xb0, 0×60, 0xf1, 0×42,
0xa5, 0x0b, 0xa6, 0x6e,
0xc9, 0xf1, 0xaa, 0x0b, 0×16, 0xa8, 0×00, 0xe4, 0xcd, 0×34, 0x6d, 0×64,
0xa1, 0xa2, 0xc5, 0x0b,
0×14, 0×10, 0×50, 0x8c, 0×79, 0×71, 0×29, 0×07, 0xc5, 0×01, 0xa0, 0x0b,
0x0a, 0×17, 0×26, 0x4c,
0×78, 0×59, 0xb6, 0xcc, 0×18, 0×30, 0xe0, 0xb0, 0×54, 0xac, 0×19, 0x0a,
0×90, 0xd8, 0×60, 0×65,
0x8b, 0xb1, 0xe5, 0×70, 0×00, 0×15, 0x1e, 0xaa, 0×14, 0×53, 0xb6, 0×62,
0x8b, 0×15, 0×67, 0xce,

0×80, 0×79, 0xb1, 0xaa, 0x0c, 0×58, 0×90, 0×21, 0×43, 0×61, 0×42, 0×25,
0×37, 0xe2, 0xc2, 0×96,
0xe5, 0×42, 0×04, 0xc5, 0xfa, 0xdf, 0×83, 0xe9, 0x0a, 0×54, 0×84, 0xc7,
0x4d, 0×84, 0x4e, 0×74,
0×89, 0×12, 0×11, 0x1f, 0x1f, 0×91, 0xd0, 0xa6, 0xa2, 0x2b, 0x3e, 0xca,
0×63, 0×03, 0xde, 0x2b,
0×00, 0×04, 0x7f, 0xa2, 0xe0, 0×97, 0×89, 0×60, 0×51, 0×46, 0x4c, 0×86,
0×83, 0xe0, 0×78, 0x7c,
0x4b, 0×51, 0xa6, 0x0c, 0x9b, 0×32, 0x6a, 0xd4, 0×74, 0×42, 0x2a, 0xfe,
0xc5, 0x7d, 0x4c, 0x0d,
0×53, 0xa6, 0xc3, 0×49, 0xd4, 0×67, 0xbc, 0xa2, 0xa8, 0×08, 0x0a, 0×98,
0xf0, 0×08, 0xc8, 0xa0,
0x8a, 0xcc, 0×28, 0×82, 0×00, 0x4b, 0×57, 0×24, 0×27, 0xb7, 0×00, 0×81,
0x0a, 0×81, 0×02, 0xd0,
0x0d, 0×51, 0xa3, 0×42, 0xd5, 0×18, 0×31, 0xaa, 0xc6, 0×14, 0x0e, 0×42,
0×45, 0x2b, 0xe0, 0xc6,
0×94, 0×35, 0×07, 0×08, 0xda, 0×95, 0×62, 0xc7, 0×80, 0x1d, 0×23, 0x6e,
0x8c, 0xa2, 0×85, 0x0b,
0xa7, 0xce, 0×14, 0×00, 0×00, 0×60, 0xd0, 0×94, 0xa9, 0xc5, 0×86, 0×17,
0x2f, 0×56, 0xa5, 0×02,
0×85, 0×09, 0xa4, 0x0e, 0×95, 0x1b, 0×30, 0×60, 0xda, 0xa1, 0x2b, 0x8f,
0×08, 0xe5, 0x4a, 0×95,
0xc6, 0×83, 0×30, 0xae, 0xcc, 0xa8, 0×59, 0xe5, 0x0e, 0x1c, 0x3a, 0×42,
0xa4, 0xc0, 0×94, 0×29,
0×15, 0×26, 0x5c, 0xac, 0×30, 0×60, 0×00, 0×34, 0×40, 0xe7, 0xca, 0x8d,
0x2a, 0x5c, 0x6d, 0xd0,
0xb4, 0x2b, 0x0f, 0×07, 0xe1, 0×02, 0xf0, 0xe0, 0×39, 0xe8, 0×40, 0x0f,
0xff, 0xf0, 0xc3, 0×11,
0xff, 0xe1, 0x9f, 0×31, 0×86, 0xe3, 0xbf, 0xe0, 0xf3, 0×17, 0x0b, 0×96,
0xca, 0x2f, 0xff, 0xfa,
0x6f, 0xff, 0xf6, 0x6b, 0xf0, 0xf0, 0xcb, 0xfb, 0xf0, 0x5f, 0xf4, 0xf8,
0xdf, 0xf2, 0xfe, 0xc0,

0×13, 0x7e, 0×82, 0x4f, 0×52, 0xf2, 0×79, 0×84, 0x9f, 0xe0, 0×00, 0×54,
0x0c, 0×38, 0x3c, 0×43,
0×25, 0×70, 0xc2, 0×43, 0x8c, 0×99, 0xb0, 0×57, 0x1c, 0x9f, 0×01, 0xc0,
0xc5, 0xb2, 0x2d, 0xc6,
0x8c, 0×39, 0×83, 0xe2, 0×45, 0x8b, 0×17, 0×28, 0×50, 0xa0, 0×01, 0×72,
0×66, 0x4c, 0×39, 0x2c,
0×02, 0×93, 0×17, 0x2c, 0xd6, 0xa0, 0×01, 0×01, 0×00, 0xca, 0xdd, 0xb2,
0×63, 0xce, 0×80, 0×41,
0×01, 0xe6, 0xec, 0xca, 0×96, 0x6b, 0xae, 0xdc, 0xb9, 0×71, 0×65, 0xca,
0×37, 0x2e, 0×32, 0×91,
0×73, 0×78, 0xb0, 0xe6, 0x0a, 0x0c, 0×00, 0×07, 0x6b, 0×60, 0×81, 0xc7,
0×63, 0×26, 0×70, 0xb6,
0xc5, 0×10, 0×20, 0×70, 0x0e, 0x1c, 0×38, 0x5a, 0×65, 0xc6, 0x3c, 0x1e,
0×39, 0×03, 0×01, 0×19,
0×17, 0xdc, 0xd9, 0×72, 0×07, 0×96, 0×10, 0xc0, 0xd9, 0xc6, 0×03, 0×63,
0xd6, 0x0c, 0x6d, 0x5b,
0×64, 0xc7, 0xd7, 0x3a, 0xf7, 0×44, 0×00, 0xc0, 0xcd, 0x5a, 0x5a, 0xf0,
0×06, 0×96, 0×12, 0xd6,
0xf8, 0xf2, 0xe5, 0xca, 0x1c, 0×22, 0×75, 0×07, 0xce, 0x1c, 0xf4, 0×07,
0×57, 0x0e, 0x0c, 0×28,
0xb8, 0×75, 0xe0, 0xdc, 0×99, 0×43, 0xab, 0xd6, 0x2c, 0×04, 0×00, 0×65,
0x5a, 0xee, 0x1c, 0×44,
0×83, 0×75, 0×06, 0x0c, 0x2c, 0×94, 0×07, 0×07, 0xe6, 0xd6, 0xac, 0xcd,
0×81, 0x3d, 0x0b, 0xd6,
0x2d, 0×70, 0×67, 0xce, 0×90, 0×69, 0x1f, 0xd0, 0xe3, 0×67, 0xcf, 0x9e,
0×25, 0xdb, 0xf6, 0x2c,
0×32, 0xe5, 0×47, 0x0f, 0x9e, 0x3e, 0xb8, 0×70, 0xe9, 0xd2, 0xb5, 0xcb,
0xd6, 0x2e, 0x3b, 0xab,
0×41, 0×10, 0×14, 0xa1, 0×40, 0×97, 0x6d, 0×04, 0xc2, 0xad, 0x8f, 0×22,
0×08, 0x4f, 0xb8, 0xce,
0xd8, 0xd2, 0xa5, 0×46, 0xd7, 0×99, 0x5d, 0×66, 0xcc, 0xec, 0×86, 0×07,
0x5b, 0×66, 0x6c, 0x9d,

0×59, 0×73, 0xeb, 0×36, 0x1d, 0×92, 0×83, 0x1b, 0×37, 0×66, 0xf1, 0×11,
0x9a, 0×74, 0×03, 0×01,
0x5a, 0x7c, 0×70, 0xe3, 0x1b, 0x0e, 0x6c, 0×81, 0×71, 0×67, 0xe6, 0x8c,
0x1b, 0x3b, 0×86, 0xc0,
0×80, 0×03, 0xd7, 0x0e, 0x4d, 0×83, 0×70, 0xe1, 0×02, 0xd2, 0×02, 0×38,
0×75, 0x6e, 0xfc, 0xf8,
0×32, 0x4b, 0×06, 0xe6, 0×91, 0×20, 0x4c, 0×98, 0x5a, 0×66, 0xc0, 0×46,
0×02, 0x1a, 0xc3, 0×19,
0xf8, 0×03, 0x0e, 0×00, 0xe2, 0×51, 0xc0, 0×42, 0x7c, 0×01, 0xd8, 0x0a,
0×58, 0×04, 0x6e, 0xc0,
0×40, 0x2b, 0×30, 0×60, 0x4c, 0x2c, 0×70, 0x6e, 0x6c, 0×01, 0×04, 0×00,
0x3b, 0x8e, 0x1c, 0xa1,
0×69, 0×03, 0xaa, 0×56, 0xac, 0×30, 0×01, 0×95, 0xf1, 0×14, 0xdf, 0×00,
0x8e, 0x1b, 0×50, 0×80,
0x0c, 0xb5, 0×46, 0×80, 0×68, 0xd1, 0xce, 0x9c, 0×39, 0×75, 0×17, 0×00,
0×54, 0xe9, 0×41, 0×63,
0x0a, 0x0d, 0x1e, 0x5f, 0×75, 0xe2, 0xc4, 0xd9, 0xb3, 0x1b, 0xc0, 0xfc,
0×56, 0×70, 0x3b, 0xc0,
0x8a, 0×15, 0xbb, 0×18, 0x6c, 0xad, 0×71, 0x0f, 0×04, 0xbe, 0xd6, 0×98,
0×72, 0×03, 0×08, 0xb6,
0×03, 0xcc, 0x5a, 0xb3, 0x9e, 0×00, 0x6c, 0×99, 0x5b, 0×67, 0xc6, 0×94,
0×29, 0×30, 0xa0, 0xc0,
0×80, 0×99, 0×35, 0x7b, 0×96, 0×01, 0×11, 0xde, 0xcc, 0xb8, 0x2e, 0×81,
0×51, 0xa3, 0×60, 0xb9,
0x6b, 0xd3, 0xa6, 0x3d, 0×00, 0xb4, 0×69, 0xd5, 0xaa, 0x9d, 0x6a, 0×78,
0×08, 0×14, 0xc4, 0×56,
0x9b, 0xde, 0×08, 0xe0, 0×86, 0x8c, 0x5b, 0×78, 0xa0, 0x0e, 0x0f, 0xd0,
0x0a, 0x0d, 0×82, 0×05,
0xa6, 0×56, 0×99, 0×72, 0xe4, 0xc8, 0×81, 0x2b, 0×05, 0xaa, 0x0d, 0×22,
0×70, 0×65, 0×02, 0×45,
0×67, 0×06, 0×30, 0xe5, 0×01, 0xa8, 0x4c, 0×29, 0×52, 0xa4, 0xf0, 0xb4,
0x2a, 0x0d, 0x0f, 0x6d,

0x1a, 0×73, 0×42, 0x2b, 0xc7, 0×20, 0xc8, 0×06, 0xe4, 0×50, 0×91, 0xc5,
0xa7, 0×19, 0×31, 0×62,
0×04, 0×07, 0×90, 0xe2, 0×00, 0×08, 0x2e, 0×35, 0xe1, 0xa0, 0×26, 0x0c,
0×01, 0×23, 0xd6, 0x1c,
0×00, 0×88, 0×15, 0x8b, 0×11, 0xa1, 0×22, 0x1c, 0xf4, 0×68, 0xa6, 0xec,
0×98, 0×32, 0×65, 0xc8,
0×01, 0×08, 0×03, 0×86, 0x0c, 0×15, 0×70, 0xdc, 0xd0, 0×81, 0x1c, 0x1b,
0x9c, 0xe3, 0×51, 0×07,
0x0f, 0×10, 0x3c, 0×68, 0xe9, 0×86, 0xa3, 0×47, 0×47, 0x2a, 0×86, 0×53,
0×00, 0xe8, 0xe4, 0×08,
0x0e, 0x2a, 0x0f, 0×30, 0×88, 0xe3, 0×20, 0x1e, 0xc3, 0×41, 0×97, 0×46,
0x7d, 0x1a, 0×75, 0×83,
0xe6, 0xa3, 0×87, 0×33, 0xe0, 0×00, 0xe4, 0xc1, 0×83, 0×17, 0×47, 0x7e,
0xbc, 0×79, 0×73, 0xd2,
0xa0, 0×46, 0×45, 0x3b, 0×89, 0×10, 0xa1, 0x0a, 0×34, 0×38, 0x8e, 0x9c,
0×38, 0×70, 0xd0, 0xd5,
0×08, 0×22, 0xc2, 0×51, 0×54, 0×00, 0×00, 0×05, 0x0a, 0×80, 0×57, 0×00,
0xe8, 0×50, 0×11, 0x1e,
0x8a, 0×55, 0×04, 0×80, 0x2a, 0xd5, 0xe0, 0×14, 0xa8, 0×02, 0×05, 0x8a,
0×97, 0x2e, 0x3d, 0x7a,
0×50, 0×24, 0×44, 0x3c, 0x0a, 0×55, 0x0d, 0x2a, 0x3c, 0x0b, 0×02, 0×06,
0x0f, 0×18, 0x3a, 0×22,
0×50, 0xa0, 0×50, 0×55, 0xf1, 0xa0, 0x4a, 0×21, 0×00, 0xe0, 0x7c, 0×86,
0×82, 0×86, 0x2a, 0×51,
0×82, 0xc4, 0×09, 0x0a, 0x8f, 0×70, 0×00, 0xfa, 0×16, 0x2d, 0xd0, 0×93,
0×69, 0×21, 0x5a, 0×54,
0×21, 0×28, 0×54, 0xa6, 0x4c, 0×39, 0×70, 0×16, 0x2c, 0×40, 0×81, 0×80,
0×25, 0xd0, 0xa8, 0×29,
0×53, 0xe1, 0xa5, 0x5c, 0xb9, 0x6a, 0×30, 0x3c, 0×54, 0×80, 0xa0, 0×25,
0xd0, 0×60, 0×78, 0x0c,
0×44, 0×78, 0x2a, 0×03, 0×66, 0×91, 0xad, 0x5b, 0xba, 0xce, 0x9c, 0×41,
0xe3, 0×06, 0x0d, 0x9a,

0x5e, 0xb8, 0×74, 0xdd, 0x3a, 0xa3, 0×46, 0xdb, 0xa9, 0xb5, 0×70, 0×70,
0×16, 0×52, 0×01, 0×60,
0×97, 0xa9, 0×55, 0x6b, 0xae, 0x9d, 0×86, 0×04, 0×34, 0x6d, 0xdc, 0xc0,
0xce, 0×03, 0×38, 0x7b,
0xf6, 0xec, 0xda, 0xb6, 0xe7, 0xc0, 0x9d, 0×56, 0xae, 0×21, 0×00, 0×90,
0×23, 0×30, 0×60, 0xdc,
0xac, 0xbb, 0×75, 0xea, 0xce, 0x1d, 0×44, 0xd0, 0xbc, 0x6d, 0×67, 0×03,
0×05, 0×07, 0×14, 0xdc,
0xba, 0×85, 0x6e, 0×95, 0x9d, 0x3d, 0×76, 0×14, 0x1d, 0xba, 0×72, 0x6e,
0xd7, 0×82, 0×05, 0xeb,
0xb6, 0xed, 0x5a, 0xe5, 0xc7, 0x8e, 0x5f, 0×26, 0×58, 0xb7, 0×67, 0xd1,
0×22, 0xd3, 0x9c, 0xb0,
0xc7, 0×36, 0×08, 0xe2, 0xa2, 0×00, 0x0a, 0×82, 0×35, 0×53, 0x6b, 0x6c,
0×83, 0xc1, 0x2e, 0xbb,
0xd4, 0×64, 0x1b, 0×00, 0x7c, 0x6d, 0x5b, 0×67, 0×67, 0×37, 0×38, 0xe3,
0×80, 0x9d, 0xd5, 0×70,
0xb4, 0x6b, 0x8d, 0xb5, 0×75, 0×86, 0×56, 0×99, 0×31, 0x4d, 0xe5, 0xe8,
0×62, 0xc6, 0xda, 0×76,
0×67, 0×54, 0×47, 0x1a, 0×24, 0×66, 0×18, 0xf0, 0xe5, 0xc6, 0x2d, 0x1c,
0×18, 0xa4, 0×66, 0×41,
0xa4, 0×51, 0×71, 0xc5, 0×87, 0×05, 0xab, 0xa9, 0xb5, 0x1a, 0x4c, 0×99,
0×65, 0×07, 0×53, 0xb6,
0xb4, 0×59, 0×33, 0×68, 0×88, 0×90, 0xe2, 0xcd, 0x2a, 0×00, 0×42, 0×01,
0x2a, 0×74, 0xd7, 0×14,
0×68, 0xbb, 0xa3, 0xe8, 0×94, 0×36, 0×05, 0x0a, 0xb4, 0×02, 0×22, 0×12,
0x6c, 0×29, 0×47, 0×46,
0xdd, 0xc1, 0×24, 0xd8, 0×02, 0×05, 0×00, 0×00, 0×07, 0x0b, 0x0c, 0×38,
0×84, 0×87, 0×46, 0xde,
0xba, 0xa1, 0×43, 0xd0, 0×06, 0×01, 0xa2, 0×36, 0x6d, 0xc0, 0×21, 0xea,
0×55, 0x2b, 0×54, 0×34,
0×72, 0×00, 0x0a, 0×80, 0×73, 0xe0, 0xc6, 0×41, 0×63, 0×78, 0xe9, 0×56,
0x1d, 0x1e, 0xc8, 0×94,

0×01, 0xfb, 0×85, 0xdf, 0xe0, 0×07, 0x4e, 0x1f, 0×30, 0xa8, 0x5a, 0×15,
0x0a, 0×15, 0xa4, 0x2f,
0×29, 0xe0, 0xea, 0×05, 0xab, 0×17, 0xb8, 0×56, 0x8d, 0xe1, 0xa9, 0×48,
0x9c, 0×00, 0xbd, 0xd0,
0×99, 0×43, 0x8b, 0×00, 0xe8, 0xda, 0xa1, 0×42, 0×53, 0×08, 0×95, 0xab,
0×02, 0×71, 0xa2, 0xf4,
0×72, 0×03, 0xc6, 0x0d, 0x2c, 0×30, 0x6d, 0xc8, 0xb5, 0×86, 0×27, 0xd2,
0xf0, 0×02, 0×06, 0x0c,
0×38, 0×58, 0xe0, 0x6a, 0×81, 0×03, 0xd5, 0xa6, 0×94, 0x2a, 0×52, 0xe5,
0xea, 0×44, 0×35, 0×07,
0×77, 0x6e, 0xc7, 0xa8, 0x5d, 0xab, 0×36, 0xa0, 0x4e, 0×01, 0xaa, 0x4e,
0x4f, 0xbd, 0xda, 0xa8,
0×05, 0×82, 0x5e, 0×68, 0×40, 0×99, 0×01, 0×75, 0×18, 0x9e, 0×02, 0xb4,
0×21, 0×03, 0xce, 0x3d,
0x3f, 0xc0, 0×72, 0xe3, 0xaa, 0x8d, 0xab, 0×33, 0×85, 0xe1, 0×55, 0x0e,
0×71, 0×11, 0×10, 0xda,
0xc1, 0x6a, 0xe3, 0xe7, 0x0c, 0xa0, 0xc2, 0xf6, 0×54, 0x0b, 0x2c, 0×13,
0xc3, 0×03, 0×18, 0×43,
0xa0, 0xd4, 0×01, 0x2a, 0×55, 0x2a, 0×28, 0x3e, 0×16, 0xa0, 0×21, 0×02,
0×80, 0x1b, 0×53, 0xa0,
0×14, 0×80, 0x2a, 0×15, 0xaa, 0x5a, 0xab, 0xd2, 0xa0, 0×08, 0×80, 0x4d,
0xe0, 0xa7, 0×15, 0×28,
0×04, 0×84, 0x6a, 0xd5, 0xa9, 0xae, 0x4d, 0x6d, 0xd0, 0×35, 0×04, 0×80,
0×46, 0×68, 0xc0, 0×20,
0×68, 0x0c, 0x4f, 0x6a, 0xd4, 0xe1, 0×42, 0xdb, 0×80, 0x4f, 0×80, 0×08,
0x4d, 0x1b, 0×05, 0xae,
0xca, 0xc4, 0x8a, 0×63, 0xc1, 0×03, 0×84, 0x0e, 0x1d, 0xa2, 0xcd, 0×99,
0×32, 0×65, 0×42, 0×95,
0×42, 0×05, 0×01, 0xa0, 0x1c, 0×04, 0x0c, 0×18, 0xb4, 0×78, 0xa8, 0×32,
0×67, 0xc8, 0×94, 0×08,
0×55, 0x0a, 0×54, 0x0f, 0×80, 0x6a, 0×11, 0×11, 0×08, 0×42, 0×85, 0×50,
0xd3, 0xa2, 0×44, 0xa9,

0×52, 0xa1, 0×22, 0×10, 0×54, 0xe1, 0×48, 0×00, 0x1d, 0xc1, 0xa1, 0x5a,
0xa9, 0xaa, 0×70, 0x0c,
0x0f, 0×55, 0xa0, 0×82, 0×32, 0×98, 0xc0, 0×21, 0×42, 0×55, 0x0c, 0xba,
0×74, 0xc1, 0×82, 0xa5,
0x2b, 0x3f, 0×03, 0xc0, 0×15, 0×45, 0x8a, 0×41, 0×49, 0x8b, 0xa6, 0x6b,
0xd7, 0xa1, 0×10, 0xc0,
0xae, 0xe9, 0xd1, 0×86, 0×08, 0×15, 0x2a, 0x3c, 0xad, 0×50, 0x5d, 0xb9,
0×88, 0×40, 0×07, 0×10,
0xe5, 0×05, 0xa0, 0×54, 0xa9, 0xf2, 0xfc, 0xc9, 0×73, 0xe1, 0×82, 0×96,
0x6f, 0x8a, 0xfa, 0xc2,
0×29, 0×70, 0x5c, 0xd1, 0×92, 0×45, 0xd5, 0xab, 0xbf, 0xe8, 0×88, 0x8d,
0×44, 0x0e, 0x0f, 0x5d,
0xbe, 0×28, 0×48, 0×94, 0×28, 0x5b, 0×82, 0xc4, 0×48, 0×92, 0×98, 0×09,
0x3e, 0xc2, 0×43, 0×97,
0x2c, 0×49, 0xb2, 0xe3, 0×51, 0xb6, 0x7c, 0xa9, 0×12, 0xe5, 0xcb, 0xf3,
0×21, 0×03, 0×56, 0x0f,
0xc8, 0×94, 0×59, 0x1a, 0×12, 0xfd, 0x7b, 0x0c, 0×87, 0xf0, 0xf4, 0×01,
0×43, 0×86, 0x0c, 0×59,
0xb2, 0×13, 0×20, 0x1e, 0xb2, 0×21, 0x3c, 0xd2, 0×43, 0×46, 0×78, 0xc9,
0×92, 0×19, 0x5a, 0×81,
0×10, 0×19, 0xbe, 0×64, 0×64, 0×84, 0x0c, 0xc9, 0×92, 0×65, 0×87, 0xaf,
0x7c, 0×45, 0x8f, 0xa0,
0xc1, 0xa9, 0×45, 0x0b, 0×96, 0×18, 0×59, 0xb7, 0×64, 0xc9, 0xba, 0×05,
0×06, 0xbc, 0xbe, 0×40,
0xb5, 0×02, 0x8d, 0x4e, 0×43, 0×83, 0×37, 0x6b, 0xee, 0xbc, 0xb9, 0×03,
0×02, 0xc0, 0×01, 0×39,
0xb0, 0xf0, 0×50, 0xad, 0xd5, 0×39, 0xed, 0×00, 0×38, 0x8d, 0×80, 0×70,
0x4e, 0x5d, 0×83, 0x6e,
0xd0, 0x0a, 0×14, 0×28, 0xd5, 0xed, 0xda, 0×76, 0×80, 0x6a, 0x0c, 0×00,
0×84, 0xa0, 0×95, 0x2a,
0x8c, 0×30, 0xd6, 0xfa, 0xe8, 0×69, 0×45, 0×08, 0×14, 0xa0, 0×42, 0xa5,
0×10, 0×69, 0×87, 0×06,

0xeb, 0xc8, 0×84, 0x0a, 0×54, 0xa9, 0×52, 0×70, 0xe0, 0×54, 0x2b, 0×55,
0×97, 0x1f, 0×09, 0×65,
0×55, 0×65, 0x6a, 0xa8, 0×57, 0×18, 0×01, 0xea, 0xd4, 0×01, 0xac, 0×08,
0xdb, 0x0c, 0xad, 0xda,
0×56, 0xa9, 0×52, 0×75, 0x7a, 0×24, 0×00, 0xc0, 0×68, 0×40, 0×58, 0×08,
0×56, 0x2d, 0xda, 0x0a,
0x0f, 0×90, 0xe8, 0×01, 0×82, 0×43, 0x0a, 0×12, 0×64, 0×65, 0x3a, 0×64,
0xc7, 0×80, 0×55, 0×78,
0xa2, 0x0c, 0x0f, 0×84, 0xe0, 0xc3, 0×53, 0×35, 0×55, 0xaa, 0×16, 0xe2,
0x0b, 0×65, 0x7a, 0xa0,
0×06, 0x0a, 0x5e, 0xb5, 0×42, 0×85, 0x5c, 0x5d, 0xc7, 0x0f, 0x7a, 0xa4,
0xba, 0xd1, 0×83, 0xaf,
0×41, 0×70, 0xd0, 0x5d, 0xe5, 0×97, 0x4e, 0×94, 0xe8, 0xc2, 0×13, 0×88,
0xba, 0xce, 0×40, 0xe0,
0x2a, 0xbf, 0×74, 0xa2, 0xd6, 0x0a, 0xb3, 0×32, 0×40, 0x2a, 0x8c, 0×00,
0×05, 0xb4, 0x5c, 0xc5,
0×97, 0x6e, 0x8d, 0xb0, 0×35, 0xa2, 0×07, 0xa9, 0x5a, 0x9d, 0×42, 0×55,
0xba, 0x5c, 0xd9, 0xb5,
0×60, 0×37, 0×80, 0xed, 0×59, 0xb5, 0xcb, 0x5d, 0xa9, 0×30, 0×01, 0×62,
0xa1, 0×41, 0×83, 0xc7,
0x8e, 0x5d, 0×18, 0×58, 0x0d, 0×02, 0xbe, 0xec, 0×76, 0×42, 0xa9, 0xc0,
0xb8, 0xb1, 0x6b, 0x2d,
0×22, 0xdc, 0x5a, 0×85, 0xaa, 0x4c, 0xac, 0xd8, 0xf0, 0×64, 0xcb, 0×36,
0x1c, 0xc2, 0×83, 0×69,
0×26, 0×70, 0×55, 0xab, 0x4c, 0×58, 0×48, 0xc4, 0×61, 0×78, 0x5b, 0xb3,
0xc7, 0×51, 0x6d, 0x7c,
0xc4, 0×46, 0x7c, 0×24, 0×84, 0×35, 0×66, 0xf1, 0xc1, 0x8c, 0x1d, 0×40,
0xb5, 0xc2, 0×84, 0×31,
0x8b, 0x0f, 0×66, 0xcc, 0xc2, 0x9b, 0x1b, 0x3f, 0×80, 0×62, 0xc3, 0×33,
0x0c, 0×02, 0×28, 0xbe,
0xf8, 0×71, 0×14, 0x1a, 0x1f, 0×21, 0×11, 0×10, 0×81, 0xcc, 0×35, 0×00,
0xb8, 0x0d, 0×40, 0xfc,

0×26, 0×45, 0×07, 0xb2, 0xe5, 0×38, 0×01, 0×62, 0xe3, 0×24, 0×28, 0xf9,
0×71, 0xe5, 0x0b, 0×54,
0x5d, 0×01, 0×58, 0xa3, 0x1b, 0×00, 0×54, 0×03, 0×88, 0×22, 0×35, 0×68,
0×40, 0xc7, 0×61, 0x3c,
0xf9, 0x4e, 0×12, 0×30, 0xee, 0x1c, 0×99, 0×71, 0x6b, 0x8f, 0xfe, 0xb0,
0×36, 0×80, 0xc0, 0×01,
0×70, 0×67, 0×66, 0x9d, 0x2b, 0×30, 0×60, 0×73, 0xd1, 0x1e, 0x7c, 0×81,
0×33, 0×07, 0x1b, 0x0e,
0x1c, 0×00, 0×30, 0×50, 0xaa, 0x2c, 0x1c, 0xfa, 0×43, 0x6c, 0x6c, 0×70,
0xe0, 0×06, 0×36, 0×00,
0xb8, 0×71, 0×54, 0xb7, 0×07, 0xca, 0xc4, 0×89, 0×15, 0xee, 0×43, 0×46,
0×00, 0×49, 0×96, 0x2d,
0×51, 0xb6, 0x7c, 0xf9, 0×12, 0×03, 0×41, 0x7e, 0xf8, 0xca, 0×92, 0x1a,
0x9a, 0xf2, 0xfd, 0×07,
0×80, 0x8f, 0×04, 0×91, 0×25, 0x2f, 0x0c, 0xe0, 0xd3, 0x0f, 0×00, 0xf8,
0×71, 0×90, 0xd1, 0×52,
0xe4, 0xc1, 0x0e, 0x0d, 0xfd, 0xe8, 0xe5, 0×87, 0xa7, 0x1c, 0x3f, 0×85,
0xe8, 0×83, 0×36, 0x6c,
0xf9, 0xe4, 0xd5, 0×87, 0×83, 0x4f, 0×39, 0xf1, 0×11, 0×40, 0×34, 0×74,
0×11, 0×55, 0x9d, 0×11,
0×30, 0xf3, 0xd3, 0x8f, 0x1f, 0×18, 0×11, 0×09, 0×43, 0×97, 0x6e, 0xa8,
0xf0, 0xcb, 0×51, 0x3e,
0x1c, 0×37, 0×70, 0x3a, 0×89, 0×86, 0×23, 0xaa, 0×50, 0x3d, 0xfa, 0xf3,
0xaa, 0×55, 0x2a, 0x1c,
0×38, 0x7e, 0×06, 0×41, 0×05, 0×09, 0×59, 0x5e, 0xe1, 0xc1, 0×83, 0xef,
0xd1, 0x8b, 0x2f, 0×99,
0x6e, 0x3a, 0×48, 0×85, 0x2a, 0xd5, 0xf2, 0xfc, 0xf9, 0×93, 0xef, 0xd1,
0xbf, 0×47, 0×79, 0×79,
0xd8, 0×07, 0xaa, 0×54, 0xaa, 0×53, 0×27, 0×31, 0x3c, 0xfc, 0xcb, 0x8b,
0x8a, 0xf1, 0xf0, 0xe5,
0x1b, 0xa2, 0x6e, 0xa5, 0xe1, 0xa1, 0×40, 0x5e, 0×19, 0xf8, 0×97, 0x2a,
0×71, 0x3e, 0x7c, 0xfb,

0xd6, 0xac, 0×44, 0×89, 0x6a, 0xa5, 0xaa, 0xd5, 0x6d, 0xd4, 0x7e, 0xf8,
0xf0, 0×24, 0x5b, 0xa6,
0x4a, 0x9c, 0x4a, 0×44, 0xaa, 0×53, 0xad, 0×30, 0x7c, 0x7c, 0x5d, 0×03,
0×46, 0×85, 0xea, 0xd5,
0x2b, 0×55, 0xa4, 0×30, 0×82, 0xce, 0×43, 0xa2, 0×44, 0×99, 0xf8, 0×55,
0xaa, 0×57, 0xa8, 0x4e,
0xa1, 0×12, 0×85, 0xe4, 0×62, 0×41, 0xa5, 0x4a, 0×94, 0x3a, 0×51, 0xea,
0xd6, 0×09, 0x1b, 0x3d,
0xe8, 0×02, 0×50, 0xad, 0×00, 0×95, 0xab, 0×14, 0×40, 0x1f, 0x9e, 0xba,
0xe1, 0×03, 0×05, 0x0d,
0xba, 0×20, 0×54, 0xa9, 0xa2, 0×95, 0×13, 0xf1, 0xa9, 0x5f, 0×37, 0×55,
0xd4, 0×80, 0xc0, 0×15,
0×44, 0×78, 0xc0, 0×52, 0x9f, 0x1e, 0x3c, 0×51, 0x6a, 0×84, 0×49, 0×11,
0xa9, 0×56, 0xa4, 0x0a,
0×15, 0xc4, 0×87, 0xae, 0xf0, 0xe0, 0xa9, 0×13, 0xbd, 0x7e, 0x9a, 0xb4,
0×91, 0xea, 0xd6, 0x9a,
0x0f, 0xe1, 0xa9, 0×12, 0×24, 0x4f, 0xfe, 0×08, 0xc3, 0×83, 0×26, 0x3a,
0xdd, 0xfa, 0xf2, 0×51,
0×15, 0xa8, 0x7a, 0×40, 0×19, 0x0e, 0xf0, 0×69, 0xc2, 0×44, 0x0a, 0×51,
0x9f, 0xf2, 0xf4, 0x3c,
0×89, 0×78, 0×48, 0×87, 0xf0, 0xd0, 0xa9, 0×91, 0x1e, 0×52, 0×45, 0xe1,
0×05, 0×32, 0x2d, 0xc3,
0x0b, 0x3e, 0x3d, 0xa0, 0×00, 0xe2, 0×51, 0×15, 0x7a, 0×84, 0xf1, 0xa0,
0x9f, 0x3e, 0x4c, 0x9d,
0×14, 0xf5, 0×81, 0×06, 0×15, 0x5e, 0xe1, 0×90, 0x8e, 0xee, 0×61, 0xea,
0xa6, 0×07, 0x0e, 0×78,
0x3c, 0×29, 0×08, 0x0f, 0xfe, 0xf1, 0xe0, 0x3e, 0x1e, 0×91, 0xa6, 0xb3,
0xa2, 0×78, 0×86, 0x0d,
0×15, 0x2a, 0×52, 0×84, 0×00, 0×40, 0×65, 0×80, 0×02, 0×45, 0xa8, 0xc3,
0×83, 0x3e, 0x7d, 0xf8,
0×54, 0xfb, 0×82, 0×37, 0×02, 0×54, 0×05, 0xa0, 0×48, 0xd1, 0x6a, 0xe8,
0×77, 0x1f, 0x0e, 0x1a,

0×35, 0x6a, 0×45, 0x8d, 0x4a, 0×17, 0x8a, 0xf0, 0x8a, 0×47, 0xfa, 0xf0,
0xd6, 0×40, 0xa3, 0×76,
0x5d, 0x3a, 0×40, 0xa4, 0×83, 0×22, 0x8a, 0×14, 0xa9, 0×06, 0×00, 0x5d,
0x6a, 0xd4, 0xa8, 0×16,
0×02, 0×34, 0×70, 0xc2, 0×84, 0x0a, 0xe4, 0xcb, 0x2d, 0×00, 0xf8, 0×06,
0×21, 0x5f, 0xae, 0x5c,
0×81, 0×85, 0xa7, 0×30, 0×76, 0x6c, 0xd9, 0×32, 0x0b, 0×40, 0xe6, 0xcc,
0×98, 0xb2, 0×63, 0×06,
0×54, 0×59, 0×78, 0xf0, 0x8b, 0xa7, 0×04, 0xe2, 0xca, 0x0f, 0×18, 0×50,
0xa5, 0×42, 0×85, 0xc7,
0×67, 0×02, 0×58, 0x0b, 0xc0, 0xf8, 0x0a, 0x8f, 0xf4, 0xe0, 0x1b, 0×81,
0x6c, 0xe3, 0x8b, 0x2b,
0×37, 0×60, 0xe1, 0xc9, 0×94, 0xa9, 0xdd, 0×78, 0xb2, 0x9e, 0x1f, 0x4c,
0xc3, 0xd3, 0x9c, 0×30,
0x8e, 0×05, 0×18, 0×50, 0xdc, 0xe3, 0x4b, 0×68, 0x7d, 0xb0, 0x6e, 0xc0,
0x3c, 0xa8, 0x4f, 0×76,
0x4c, 0×99, 0×01, 0x2f, 0x0f, 0xb1, 0xbc, 0x1b, 0xa0, 0xbe, 0×86, 0×81,
0x5f, 0x7f, 0×00, 0x8f,
0x0f, 0xe1, 0xbc, 0×38, 0×16, 0×47, 0×00, 0x8d, 0×01, 0xb8, 0xf0, 0×76,
0xe5, 0x9a, 0x1e, 0×45,
0×68, 0×01, 0×00, 0×17, 0x9a, 0×36, 0×86, 0xe9, 0×21, 0x4c, 0xac, 0×40,
0x5b, 0xb6, 0xd8, 0×69,
0xe3, 0xce, 0×80, 0xbb, 0xdd, 0×86, 0×60, 0xa8, 0x4c, 0xb8, 0×50, 0xb3,
0×62, 0×59, 0xb1, 0×62,
0xca, 0x1a, 0x2e, 0x5d, 0xbb, 0×03, 0×01, 0xdc, 0xa2, 0×35, 0xee, 0xf9,
0×61, 0xd4, 0×96, 0×03,
0×77, 0x4e, 0xed, 0×72, 0×63, 0×46, 0x1d, 0×98, 0xb2, 0xf1, 0×50, 0×50,
0x0f, 0×62, 0×69, 0xc1,
0×66, 0xa7, 0x4f, 0x9b, 0×03, 0×06, 0xcc, 0xa9, 0×59, 0xb3, 0x6a, 0xad,
0x3f, 0xc4, 0x0a, 0xa5,
0xe1, 0x4b, 0xa2, 0x7c, 0xf9, 0xea, 0×03, 0×50, 0x9d, 0x6a, 0xa5, 0x2a,
0×15, 0×86, 0×06, 0x0c,

0x1f, 0xbe, 0×23, 0×40, 0xbd, 0x7e, 0xfa, 0×14, 0xdd, 0xd1, 0×86, 0×08,
0x5a, 0×95, 0×52, 0xd9,
0x3a, 0x7c, 0xf8, 0×92, 0×27, 0x1f, 0xa6, 0x7b, 0xf7, 0x2e, 0x1d, 0xba,
0×77, 0xe8, 0x5a, 0×83,
0x4a, 0xa5, 0×34, 0x7c, 0xf8, 0xf4, 0xe7, 0×33, 0x1c, 0xc2, 0xc2, 0×69,
0×40, 0×38, 0×74, 0×09,
0×41, 0×75, 0×78, 0xf8, 0xf2, 0x2a, 0x5f, 0×22, 0xbd, 0×26, 0×70, 0x6f,
0xd3, 0xa9, 0x6d, 0x8b,
0×14, 0×75, 0xd3, 0×71, 0xe1, 0xcb, 0xb7, 0xbc, 0×00, 0×70, 0xe7, 0xda,
0xa1, 0×55, 0×76, 0xbc,
0×39, 0×31, 0×82, 0xa8, 0×23, 0×01, 0x7d, 0x4b, 0×92, 0xa7, 0xcf, 0x9d,
0x6d, 0x5e, 0xbc, 0×18,
0×42, 0xd4, 0x8d, 0×48, 0x0f, 0x1c, 0×17, 0×15, 0×21, 0×41, 0xaa, 0×56,
0xd7, 0×30, 0×61, 0×42,
0xd1, 0xac, 0x5b, 0xab, 0x6e, 0x1d, 0xb0, 0×06, 0xc2, 0×97, 0×24, 0xa9,
0×30, 0xf5, 0xc3, 0xd7,
0xaf, 0x1b, 0×26, 0×64, 0xd7, 0x4e, 0xe9, 0xa8, 0×90, 0×31, 0×08, 0xbe,
0xa4, 0×86, 0×06, 0x4d,
0×97, 0×01, 0×60, 0×93, 0×89, 0x6d, 0x3d, 0×30, 0×74, 0xc8, 0×20, 0×21,
0xcb, 0xa3, 0x7c, 0xff,
0×34, 0x6d, 0xea, 0xd4, 0xe2, 0xc5, 0x8b, 0×16, 0×19, 0x7a, 0x7c, 0xb8,
0×80, 0×01, 0x4b, 0xab,
0x7e, 0xf9, 0xb0, 0x7d, 0×06, 0×40, 0×44, 0×48, 0×91, 0×11, 0×17, 0×30,
0×64, 0×00, 0xd0, 0×07,
0x9f, 0×66, 0x7a, 0×05, 0×01, 0×94, 0xf0, 0xd4, 0xa1, 0×63, 0x3b, 0xd4,
0xab, 0×04, 0×19, 0×00,
0x2a, 0×55, 0x2a, 0×01, 0×22, 0×27, 0×01, 0×74, 0xc0, 0×50, 0xa5, 0xe0,
0×36, 0×54, 0xaa, 0x7e,
0xca, 0xa0, 0×38, 0x8f, 0xf0, 0×54, 0xa1, 0x4a, 0xb4, 0×50, 0×85, 0x4a,
0xd5, 0×09, 0×14, 0xa8,
0×54, 0xa1, 0x4e, 0xfd, 0xee, 0xe9, 0xc3, 0xd7, 0xa7, 0x3b, 0×20, 0×34,
0xe8, 0×42, 0×05, 0x0a,

0×90, 0×22, 0×45, 0xe1, 0xe1, 0×10, 0xbe, 0xc6, 0×69, 0xd0, 0×07, 0x5b,
0×97, 0x2e, 0x1e, 0x1a,
0xc2, 0x8b, 0×26, 0×44, 0xfd, 0x1a, 0xa1, 0xc2, 0xd3, 0xaa, 0x3d, 0x3c,
0×74, 0×85, 0×27, 0xa0,
0xe9, 0×80, 0×08, 0x1f, 0x2a, 0×54, 0xad, 0x1a, 0×35, 0×85, 0×27, 0xa2,
0xf8, 0xa0, 0x0d, 0×85,
0×26, 0x7c, 0xf8, 0xf4, 0×60, 0xc3, 0xbb, 0×89, 0×02, 0x8c, 0×07, 0x4d,
0xae, 0×29, 0×95, 0×45,
0x3e, 0×06, 0×14, 0x6a, 0xd0, 0×80, 0xc2, 0xc1, 0×35, 0x6d, 0x9d, 0xb0,
0xa9, 0xea, 0xd6, 0xa8,
0x3b, 0×37, 0×34, 0×82, 0×06, 0×10, 0x8e, 0x0e, 0×21, 0xd2, 0x4c, 0×03,
0xd8, 0×10, 0×61, 0xb5,
0×25, 0×40, 0xda, 0xce, 0xc3, 0xc1, 0×29, 0x5d, 0×98, 0x1a, 0×35, 0xf6,
0×43, 0x5f, 0×80, 0×42,
0×45, 0xcb, 0xa9, 0xc3, 0x7f, 0×70, 0xfa, 0×03, 0xf4, 0xa8, 0×96, 0×25,
0x2a, 0×14, 0xb4, 0x1c,
0×84, 0×45, 0x3c, 0×38, 0x9c, 0x0f, 0x7d, 0xbd, 0×89, 0x4a, 0×57, 0×38,
0xa6, 0×85, 0xbb, 0xc0,
0×58, 0×09, 0x8d, 0xa8, 0×02, 0×00, 0×96, 0×83, 0×70, 0x0c, 0x0f, 0xd7,
0×14, 0xa1, 0xba, 0×73,
0xe8, 0xc0, 0×15, 0x2d, 0×57, 0xe1, 0xe0, 0×28, 0xbc, 0xd1, 0xe9, 0x0b,
0×06, 0×47, 0xae, 0×02,
0×20, 0x9c, 0x9d, 0xba, 0×86, 0×07, 0x4e, 0x5f, 0×18, 0×44, 0×60, 0xb8,
0×38, 0xa2, 0xaa, 0x4e,
0x1f, 0xb8, 0×38, 0x4c, 0xcb, 0×70, 0x2e, 0×07, 0×75, 0xf1, 0×81, 0x8a,
0x2b, 0x3b, 0x7d, 0xda,
0×80, 0×51, 0×63, 0xc6, 0xd6, 0×99, 0×55, 0x6b, 0x5c, 0xd5, 0x0a, 0×13,
0xaa, 0x1a, 0x1c, 0x3b,
0xbd, 0×60, 0xf5, 0xea, 0×75, 0xcb, 0×96, 0xae, 0×56, 0×85, 0xe1, 0×60,
0×54, 0×80, 0x3a, 0×75,
0xec, 0xb4, 0×26, 0×23, 0x3d, 0x7b, 0x4c, 0xdd, 0×81, 0×13, 0×26, 0xcc,
0xb4, 0xa8, 0xf0, 0xd4,

0xae, 0x4c, 0×59, 0×02, 0xd0, 0xb5, 0×06, 0x0f, 0x6a, 0x5a, 0×08, 0×30,
0×21, 0x4e, 0x5c, 0x7e,
0×24, 0×46, 0x0d, 0×38, 0×65, 0xca, 0xce, 0×99, 0x5a, 0×81, 0xa2, 0×44,
0×89, 0x6b, 0x0c, 0x7d,
0xca, 0×05, 0×28, 0xd7, 0×06, 0x8b, 0×82, 0x3d, 0x6a, 0x5a, 0×45, 0×87,
0xa7, 0×38, 0xad, 0xfa,
0×54, 0xab, 0×52, 0x8e, 0x4c, 0×97, 0xeb, 0xfa, 0xd0, 0×27, 0×20, 0xbc,
0xb8, 0xc3, 0×53, 0×28,
0x4a, 0xb9, 0×72, 0x5d, 0×14, 0×99, 0xd9, 0xd5, 0x2a, 0x4c, 0×94, 0×08,
0×75, 0xaa, 0×79, 0xc1,
0×53, 0x1a, 0x1f, 0x0a, 0×74, 0×51, 0xa5, 0xc6, 0×96, 0x9f, 0xc0, 0×04,
0×08, 0x0d, 0×50, 0xf4,
0xc2, 0x8b, 0×41, 0×39, 0xb0, 0xe5, 0x2d, 0×50, 0×98, 0×80, 0xdc, 0×08,
0x0f, 0×70, 0xaa, 0×84,
0×29, 0×60, 0x0d, 0×15, 0x1a, 0×53, 0xd6, 0×02, 0×84, 0x0a, 0×07, 0xad,
0x4a, 0×55, 0×78, 0xe6,
0×43, 0×78, 0×68, 0xa3, 0xca, 0×40, 0×94, 0×68, 0×81, 0x1c, 0xc3, 0×93,
0x5f, 0x7d, 0×30, 0×60,
0x0d, 0×34, 0x3c, 0×55, 0×89, 0×12, 0x4a, 0×11, 0×94, 0x6a, 0×78, 0xfc,
0×14, 0×70, 0×60, 0xc5,
0x5b, 0xa9, 0x5e, 0xa8, 0xb6, 0xc2, 0×43, 0×34, 0×44, 0×56, 0xa0, 0xe1,
0xe9, 0×53, 0xc4, 0×80,
0×95, 0xea, 0xf0, 0xd0, 0x0a, 0x2b, 0x3e, 0×44, 0×81, 0xa3, 0×15, 0x9e,
0×00, 0×68, 0xf1, 0×52,
0xa8, 0×14, 0×98, 0x3e, 0x5a, 0xe1, 0×49, 0×03, 0×86, 0x1f, 0x1d, 0x3a,
0×54, 0×88, 0×50, 0xa5,
0x5a, 0xe1, 0x4b, 0xb4, 0×86, 0×62, 0xd5, 0x2a, 0xe0, 0xc0, 0xf0, 0×11,
0x1e, 0x2a, 0×54, 0×05,
0×84, 0xea, 0x5f, 0×68, 0x0d, 0×50, 0x2a, 0×48, 0xe8, 0×70, 0×91, 0×00,
0x3a, 0×78, 0xa0, 0×40,
0×01, 0xe0, 0×17, 0×14, 0xf4, 0×81, 0x9a, 0xd8, 0×00, 0×91, 0×01, 0×34,
0×02, 0×00, 0×86, 0x8e,

0x1b, 0xd0, 0xcd, 0x8b, 0×47, 0x2e, 0×88, 0xc0, 0×21, 0×22, 0×08, 0×54,
0xc8, 0xd0, 0×01, 0x8b,
0×22, 0x3d, 0xd8, 0x3a, 0×74, 0×91, 0×08, 0×40, 0x1c, 0×01, 0×10, 0×09,
0×05, 0×08, 0x4e, 0×23,
0×64, 0x2a, 0xe1, 0×14, 0×19, 0×84, 0×49, 0×11, 0xc6, 0×55, 0×01, 0xe2,
0×04, 0x2a, 0×51, 0×12,
0x9a, 0×84, 0×89, 0×04, 0×60, 0×44, 0×90, 0×22, 0×88, 0x0f, 0xa3, 0×10,
0×21, 0xf1, 0×11, 0×56,
0×81, 0x4d, 0×90, 0x1c, 0×41, 0x2c, 0xe1, 0x1f, 0×95, 0×44, 0xc3, 0×13,
0x4b, 0xf8, 0×13, 0×21,
0×49, 0x2e, 0x3e, 0×52, 0×23, 0x1f, 0xd2, 0×23, 0x2a, 0×02, 0x0a, 0×37,
0x3e, 0xa2, 0xa4, 0xc3,
0x2b, 0x2c, 0xf2, 0×15, 0x1f, 0x3e, 0x9c, 0xe9, 0×89, 0xb9, 0x7c, 0×49,
0xe7, 0×03, 0×56, 0x9c,
0xb5, 0×81, 0×23, 0x3d, 0x3b, 0x9a, 0×20, 0×51, 0xa2, 0xb8, 0×53, 0×32,
0xbf, 0×22, 0x3a, 0x3e,
0×08, 0×92, 0x8c, 0×45, 0×57, 0×01, 0xe8, 0xc0, 0×75, 0×00, 0×38, 0x0d,
0x0c, 0×77, 0xee, 0x3e,
0×42, 0x9f, 0×83, 0×08, 0xa0, 0×10, 0x2e, 0xf0, 0xe8, 0xb9, 0xd3, 0xf7,
0×09, 0×61, 0×01, 0×00,
0xb6, 0x6b, 0×87, 0x4e, 0x9d, 0x3a, 0×08, 0×83, 0xf0, 0×70, 0×47, 0x0f,
0x9e, 0×26, 0×42, 0xc4,
0×75, 0×87, 0×93, 0×53, 0×77, 0xf2, 0xe0, 0xc5, 0×17, 0×69, 0xe2, 0xe1,
0xe9, 0xce, 0×41, 0×20,
0×84, 0×87, 0xbe, 0xf4, 0xe4, 0x5d, 0×15, 0xa4, 0×35, 0xba, 0×73, 0×54,
0x9a, 0xe1, 0×05, 0x4f,
0×35, 0×14, 0×52, 0×04, 0×70, 0x6b, 0xac, 0xa5, 0xf8, 0×94, 0xe7, 0×94,
0×36, 0×10, 0x2d, 0×38,
0×70, 0xe0, 0×92, 0xe5, 0×28, 0x9c, 0xc2, 0×43, 0xa9, 0x4b, 0×27, 0×50,
0×14, 0×87, 0×27, 0×81,
0×70, 0×76, 0×27, 0×51, 0×25, 0×14, 0×27, 0×90, 0×15, 0×63, 0xce, 0×00,
0xa2, 0xe1, 0xed, 0×10,

0×89, 0×12, 0x2d, 0x8e, 0×35, 0×87, 0×07, 0xe9, 0x6f, 0xe8, 0xc1, 0×70,
0×70, 0xa2, 0×45, 0×89,
0xe6, 0xf0, 0xed, 0×01, 0×77, 0xee, 0x9d, 0xc4, 0×26, 0×60, 0xc7, 0×90,
0×05, 0xc7, 0×07, 0×51,
0x7c, 0×23, 0×10, 0×17, 0x8e, 0xe3, 0×83, 0×88, 0×62, 0xca, 0x8e, 0×15,
0×63, 0xc1, 0×82, 0xf5,
0×08, 0xdc, 0xb9, 0×76, 0×12, 0x1f, 0×50, 0×24, 0x2b, 0xce, 0xc0, 0xf0,
0xc0, 0×18, 0x9e, 0x4e,
0xd3, 0×21, 0×00, 0xa1, 0×68, 0xa6, 0x4c, 0×39, 0x3e, 0×70, 0x2b, 0x0d,
0xcf, 0x5e, 0×08, 0×00,
0×57, 0x4e, 0x5c, 0×46, 0×85, 0x3a, 0xdd, 0x8c, 0×98, 0xea, 0×63, 0×00,
0x0b, 0×94, 0×42, 0xa5,
0xca, 0xd8, 0xc1, 0×52, 0×25, 0x4a, 0xd4, 0×47, 0×50, 0xa4, 0×47, 0x8f,
0xb6, 0x6e, 0×45, 0x4a,
0xc3, 0×43, 0x1f, 0xab, 0xf0, 0×02, 0×07, 0x8f, 0x1d, 0x3b, 0x7a, 0xfa,
0×02, 0×40, 0xab, 0x5e,
0×78, 0xe1, 0×65, 0xd5, 0x1e, 0x3d, 0x7b, 0×11, 0×00, 0x2f, 0xbc, 0×99,
0x2a, 0×14, 0×28, 0×90,
0x1d, 0×43, 0xd6, 0xe1, 0xc1, 0×94, 0x5d, 0×36, 0×28, 0×55, 0xab, 0×95,
0x2b, 0×58, 0×61, 0xc2,
0×14, 0xaa, 0×06, 0×40, 0x8f, 0×29, 0x2b, 0×26, 0xaa, 0×54, 0×63, 0x0d,
0x0f, 0xde, 0xf9, 0xa9,
0×50, 0×11, 0×68, 0x7a, 0×14, 0xa9, 0xd0, 0×02, 0xa5, 0x5a, 0x5d, 0xf8,
0xa8, 0×56, 0xa5, 0×15,
0x1e, 0x6c, 0×26, 0x8c, 0×61, 0×85, 0xa7, 0x5e, 0x8e, 0xe1, 0x0d, 0×95,
0x1d, 0x6b, 0×26, 0x5c,
0×20, 0x6b, 0×89, 0x0f, 0x6d, 0×40, 0xe3, 0x4b, 0×17, 0×43, 0x7e, 0xe1,
0×01, 0×98, 0×31, 0x2b,
0xa0, 0xe1, 0xc1, 0x4f, 0×65, 0x7c, 0×80, 0×66, 0xa5, 0×11, 0x1c, 0x4b,
0×26, 0×40, 0×80, 0×04,
0×03, 0×50, 0xbd, 0x5c, 0×55, 0×97, 0×07, 0x6f, 0×56, 0x1c, 0xc1, 0×31,
0×89, 0x8f, 0x5b, 0×60,

0xcd, 0x2f, 0xbc, 0×59, 0xb3, 0×52, 0x0a, 0×90, 0×31, 0xe3, 0xf0, 0×00,
0xcc, 0×92, 0x1d, 0x5b,
0xb6, 0x4a, 0×45, 0×09, 0×60, 0xad, 0x4b, 0x9d, 0xea, 0xf0, 0×52, 0xac,
0x2b, 0x3c, 0×98, 0×29,
0×55, 0x2e, 0x9c, 0×35, 0×20, 0×75, 0x0a, 0xc2, 0x1b, 0×94, 0×46, 0xaa,
0x6c, 0xd7, 0×43, 0×98,
0×56, 0×85, 0x0a, 0×55, 0xe9, 0×62, 0xc5, 0×59, 0xb1, 0×12, 0×25, 0xb0,
0xe9, 0xf1, 0×15, 0×26,
0x4e, 0×18, 0×09, 0xc2, 0×44, 0×02, 0×18, 0x0b, 0×11, 0x9c, 0×24, 0×43,
0x2a, 0xbc, 0×95, 0×10,
0×91, 0xa2, 0×25, 0×00, 0xa0, 0×50, 0×09, 0xc0, 0xf8, 0×08, 0xc1, 0×00,
0×64, 0xa2, 0×05, 0×49,
0×00, 0x0c, 0×03, 0×10, 0×18, 0×94, 0xa1, 0×84, 0x6c, 0×78, 0xa2, 0×84,
0x4d, 0x1b, 0×15, 0xe0,
0×50, 0x0c, 0×44, 0×90, 0xa0, 0×51, 0×23, 0xa4, 0x4a, 0×91, 0×21, 0x6a,
0×54, 0xa0, 0×40, 0×02,
0×04, 0x1d, 0×06, 0×00, 0×01, 0xa2, 0×86, 0×44, 0×89, 0×11, 0×02, 0xd4,
0xb0, 0xc3, 0×23, 0×14,
0×00, 0×22, 0×44, 0x8d, 0×08, 0×12, 0×05, 0×06, 0×08, 0×10, 0×30, 0×70,
0xe8, 0x4c, 0×17, 0×80,
0xd0, 0xd0, 0xad, 0×31, 0x1c, 0×35, 0×30, 0×80, 0×44, 0xcd, 0×91, 0×43,
0×87, 0xb4, 0×20, 0×50,
0×82, 0×04, 0x1b, 0×22, 0×24, 0x8a, 0×94, 0xa8, 0×41, 0×84, 0×07, 0x0f,
0x6a, 0×00, 0×84, 0×45,
0×00, 0×84, 0×43, 0×60, 0×06, 0×40, 0×58, 0×40, 0x0b, 0x0a, 0x4a, 0x9a,
0×10, 0×21, 0×82, 0xa6,
0×49, 0×23, 0×42, 0xad, 0xa1, 0×01, 0×55, 0xa3, 0x6e, 0×46, 0×61, 0×01,
0×28, 0×00, 0×80, 0×01,
0×02, 0x0d, 0×00, 0×10, 0×82, 0×90, 0×00, 0×10, 0×80, 0×66, 0×02, 0x4c,
0x8d, 0x2a, 0×55, 0x6a,
0×02, 0×40, 0×55, 0xf8, 0xc7, 0×80, 0×18, 0×31, 0x6a, 0×02, 0×21, 0xfe,
0×23, 0×28, 0xcd, 0xb3,

0xde, 0x0c, 0xed, 0×00, 0xa0, 0×48, 0x8f, 0x9e, 0x3b, 0xd7, 0×01, 0xe0,
0×68, 0x2c, 0x9c, 0×06,
0xc4, 0x5a, 0×80, 0×06, 0x0d, 0x0e, 0x1c, 0xbc, 0×08, 0x8a, 0×24, 0×47,
0×80, 0×00, 0×02, 0×05,
0x1a, 0x1e, 0xe0, 0xf4, 0xd1, 0×76, 0xe4, 0×20, 0×80, 0×01, 0×76, 0×45,
0x7c, 0×26, 0×04, 0×42,
0×44, 0×10, 0×28, 0×44, 0×54, 0x7c, 0×84, 0×55, 0×60, 0x8e, 0×25, 0×02,
0x0d, 0×10, 0x1c, 0×84,
0x0d, 0xba, 0×28, 0×00, 0xba, 0×02, 0×00, 0xc2, 0×43, 0×43, 0xb8, 0×04,
0×10, 0×32, 0x4d, 0x9f,
0×11, 0x1f, 0xa1, 0xa4, 0x2f, 0×00, 0×82, 0xf0, 0×15, 0xd2, 0xa2, 0×33,
0×10, 0x6a, 0xd4, 0xaa,
0×31, 0×00, 0xb4, 0x6a, 0xd5, 0×37, 0×04, 0x0e, 0x1d, 0x0d, 0xe5, 0×77,
0×42, 0xd4, 0×08, 0×11,
0xa1, 0x6e, 0x8a, 0x0e, 0×03, 0×88, 0×22, 0×44, 0×44, 0xa8, 0×51, 0x4f,
0×12, 0×20, 0x4d, 0×90,
0×74, 0xeb, 0×46, 0xf4, 0×29, 0×81, 0x1f, 0×46, 0xaa, 0x4c, 0x7d, 0×47,
0×80, 0×80, 0x0a, 0×00,
0×30, 0×01, 0×61, 0×22, 0×40, 0×45, 0xfc, 0×45, 0×40, 0xaa, 0×51, 0xf3,
0xff, 0x7f, 0×11, 0xc1,
0xe1, 0x1f, 0xa3, 0xfc, 0xd4, 0xa9, 0×53, 0xc8, 0x9b, 0×35, 0xaf, 0×22,
0xd0, 0xa2, 0×85, 0x2a,
0×58, 0×65, 0×42, 0×85, 0×86, 0×43, 0×40, 0xf0, 0×63, 0xc7, 0x4f, 0xa1,
0×02, 0x5d, 0xb4, 0×78,
0xeb, 0×13, 0xab, 0×56, 0×28, 0xb8, 0×08, 0×04, 0xc7, 0x4e, 0x9f, 0xba,
0xa5, 0xa0, 0xa8, 0×51,
0x9f, 0x5a, 0×65, 0xea, 0xe0, 0×85, 0x0f, 0×20, 0x0d, 0×14, 0×34, 0×51,
0xd2, 0xa8, 0x4e, 0xac,
0×40, 0xa7, 0×05, 0×18, 0x1f, 0x8c, 0×34, 0×84, 0×07, 0×07, 0×07, 0x8a,
0xf2, 0×41, 0xac, 0x3d,
0x7a, 0xb7, 0xa1, 0x8f, 0×51, 0×18, 0×50, 0x4a, 0×00, 0x0d, 0x8a, 0×54,
0×27, 0×00, 0x3b, 0x7b,

0xee, 0xe0, 0×81, 0xa6, 0×64, 0x9b, 0×12, 0×24, 0×48, 0x0e, 0×14, 0×28,
0×10, 0×24, 0×50, 0×28,
0x3c, 0×76, 0xec, 0×28, 0x5e, 0×05, 0x6d, 0×86, 0xba, 0x5d, 0x6b, 0×12,
0xa4, 0×48, 0×90, 0×20,
0xa1, 0xf4, 0xa8, 0×32, 0×64, 0xc8, 0×31, 0×00, 0x1d, 0xea, 0×56, 0xad,
0x5a, 0×74, 0×00, 0x6a,
0×84, 0x4d, 0x9b, 0×22, 0xed, 0xc0, 0×70, 0x0d, 0x1b, 0xb5, 0xa2, 0×00,
0×88, 0x0f, 0×41, 0x1a,
0×10, 0×20, 0xd0, 0×90, 0x1b, 0×10, 0×20, 0×69, 0xd2, 0xf4, 0×17, 0xe1,
0xf5, 0xff, 0×21, 0×50,
0x1e, 0×02, 0×02, 0xa0, 0x0a, 0×02, 0×02, 0×00, 0×02, 0×54, 0xa8, 0xfe,
0xe2, 0×10, 0×54, 0×89,
0x0a, 0×00, 0×53, 0×26, 0x4c, 0×99, 0×42, 0xa1, 0×23, 0×00, 0×68, 0xe8,
0×51, 0×83, 0×46, 0x0f,
0x9f, 0xcf, 0×30, 0×11, 0x1e, 0×26, 0×74, 0xa8, 0×08, 0×03, 0x3d, 0×70,
0xf4, 0×44, 0xc4, 0x3f,
0×88, 0xf9, 0x2f, 0×35, 0xb1, 0×60, 0×06, 0x8c, 0x1a, 0×33, 0xf1, 0xa9,
0xc6, 0x0c,
};

void
setup()
{
delay(250) ;

GD.begin() ;

GD.ascii() ;

// setup the color map
GD.wr16 (PALETTE16A + 0, RGB (234, 215, 180));
GD.wr16 (PALETTE16A + 2, RGB (90, 105, 78));
GD.wr16 (PALETTE16A + 4, RGB (177, 214, 153));
GD.wr16 (PALETTE16A + 6, RGB (225, 233, 240));
GD.wr16 (PALETTE16A + 8, RGB (186, 209, 238));
GD.wr16 (PALETTE16A + 10, RGB (95, 69, 43));
GD.wr16 (PALETTE16A + 12, RGB (192, 134, 82));
GD.wr16 (PALETTE16A + 14, RGB (213, 141, 154));
GD.wr16 (PALETTE16A + 16, RGB (234, 234, 237));
GD.wr16 (PALETTE16A + 18, RGB (162, 201, 215));
GD.wr16 (PALETTE16A + 20, RGB (229, 234, 224));
GD.wr16 (PALETTE16A + 22, RGB (158, 139, 154));
GD.wr16 (PALETTE16A + 24, RGB (238, 246, 242));
GD.wr16 (BG_COLOR, RGB (238, 246, 242));
GD.wr16 (PALETTE16A + 26, RGB (190, 47, 49));
GD.wr16 (PALETTE16A + 28, RGB (91, 19, 27));
GD.wr16 (PALETTE16A + 30, RGB (87, 119, 158));

GD.uncompress(RAM_SPRIMG, data) ;
int i ;

for (i = 0×20; i < 0x80; i++) {
GD.setpal(4 * i + 0, TRANSPARENT);
GD.setpal(4 * i + 3, RGB(51,102,153));
}

int x, y, s ;

for (y=0, s=0; y<128; y+=16) {
for (x=0; x<96; x+=32, s++) {
GD.sprite(2*s, x+32, y+32, s, 4, 0, 0) ;
GD.sprite(2*s+1, x+48, y+32, s, 6, 0, 0) ;
}
}

GD.putstr(25, 12, "Brainwagon Demo") ;
}

void
loop()
{
for (;;) ;
}

Share Button
Be Sociable, Share!

Comments

Comment from Adrian
Time 6/14/2011 at 2:13 pm

Hello!

My gameduino just arrived yesterday. I’ve started looking for resources online and I found your site. I read that you are using “John’s python compress function”. Would you mind showing how you did that and from where did you get that function? I’ve been looking for that but I’m only reaching dead ends. Thanks!

Comment from Mark VandeWettering
Time 6/14/2011 at 2:46 pm

I found the “compress.py” file on http://excamera.com/files/gameduino/python/gameduino/

Write a comment






9 × four =