31 #define SMACKER_PAL 0x01
32 #define SMACKER_FLAG_RING_FRAME 0x01
81 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C,
82 0x20, 0x24, 0x28, 0x2C, 0x30, 0x34, 0x38, 0x3C,
83 0x41, 0x45, 0x49, 0x4D, 0x51, 0x55, 0x59, 0x5D,
84 0x61, 0x65, 0x69, 0x6D, 0x71, 0x75, 0x79, 0x7D,
85 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9A, 0x9E,
86 0xA2, 0xA6, 0xAA, 0xAE, 0xB2, 0xB6, 0xBA, 0xBE,
87 0xC3, 0xC7, 0xCB, 0xCF, 0xD3, 0xD7, 0xDB, 0xDF,
88 0xE3, 0xE7, 0xEB, 0xEF, 0xF3, 0xF7, 0xFB, 0xFF
94 if(p->
buf[0] ==
'S' && p->
buf[1] ==
'M' && p->
buf[2] ==
'K'
95 && (p->
buf[3] ==
'2' || p->
buf[3] ==
'4'))
120 for(i = 0; i < 7; i++)
134 for(i = 0; i < 7; i++) {
140 if(smk->
frames > 0xFFFFFF) {
150 for(i = 0; i < smk->
frames; i++) {
153 for(i = 0; i < smk->
frames; i++) {
178 for(i = 0; i < 7; i++) {
253 uint8_t *pal = smk->
pal;
256 memcpy(oldpal, pal, 768);
266 sz += (t & 0x7F) + 1;
267 pal += ((t & 0x7F) + 1) * 3;
271 if (off + j > 0xff) {
273 "Invalid palette update, offset=%d length=%d extends beyond palette size\n",
278 while(j-- && sz < 256) {
279 *pal++ = oldpal[off + 0];
280 *pal++ = oldpal[off + 1];
281 *pal++ = oldpal[off + 2];
298 for(i = 0; i < 7; i++) {
304 if (!size || size > frame_size) {
323 if (frame_size < 0 || frame_size >= INT_MAX/2)
329 pkt->
data[0] = palchange;
330 memcpy(pkt->
data + 1, smk->
pal, 768);
332 if(ret != frame_size)
335 pkt->
size = ret + 769;
359 for(i = 0; i < 7; i++)