1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-12-01 13:50:30 +00:00
8bitworkshop/presets/williams-z80/bitmap_rle.c
2017-04-01 13:34:24 -04:00

152 lines
27 KiB
C

#include <string.h>
typedef unsigned char byte;
typedef unsigned short word;
byte __at (0xc000) palette[16];
volatile byte __at (0xc800) input0;
volatile byte __at (0xc802) input1;
volatile byte __at (0xc804) input2;
byte __at (0xc900) rom_select;
volatile byte __at (0xcb00) video_counter;
byte __at (0xcbff) watchdog0x39;
byte __at (0xcc00) nvram[0x400];
byte __at (0x0) vidmem[152][256]; // 256x304x4bpp video memory
void main();
// start routine @ 0x0
// set stack pointer, enable interrupts
void start() {
__asm
LD SP,#0xc000
DI
__endasm;
main();
}
const byte example_tga[] = {
0x00,0x01,0x09,0x00,0x00,0x08,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x00,0x60,0x00,0x08,0x00,0x01,0x01,0x01,0x67,0x3b,0x4e,0x9f,0x43,0x58,0xc5,0x56,0xbe,0xac,0xa8,0xac,0xe3,0xe0,0xe0,0xde,0xab,0xbc,0xd6,0xa5,0x72,0xff,0x00,0xff,0x00,0xd1,0x00,0x02,0x01,0x03,0x03,0xaa,0x00,0xd1,0x00,0x01,0x03,0x03,0xab,0x00,0xd1,0x00,0x01,0x03,0x03,0xab,0x00,0xcf,0x00,0x02,0x01,0x03,0x03,0xac,0x00,0xd0,0x00,0x01,0x03,0x03,0xac,0x00,0xb3,0x00,0x02,0x03,0x03,0x00,0x82,0x03,0x95,0x00,0x01,0x03,0x03,0xad,0x00,0xb2,0x00,0x86,0x03,0x95,0x00,0x02,0x03,0x03,0x01,0xac,0x00,0xb1,0x00,0x83,0x03,0x03,0x01,0x01,0x03,0x03,0x94,0x00,0x01,0x03,0x03,0xae,0x00,0xb0,0x00,
0x00,0x01,0x82,0x03,0x04,0x00,0x01,0x01,0x06,0x03,0x94,0x00,0x00,0x03,0xaf,0x00,0xb0,0x00,0x82,0x03,0x04,0x01,0x01,0x03,0x03,0x06,0x95,0x00,0x00,0x03,0xaf,0x00,0xb0,0x00,0x01,0x03,0x03,0x82,0x01,0x82,0x03,0x90,0x00,0x05,0x01,0x03,0x03,0x01,0x03,0x03,0xaf,0x00,0xaf,0x00,0x82,0x03,0x01,0x01,0x01,0x82,0x03,0x91,0x00,0x84,0x03,0xb0,0x00,0xae,0x00,0x00,0x01,0x82,0x03,0x00,0x02,0x82,0x03,0x02,0x01,0x00,0x01,0x84,0x00,0x82,0x03,0x86,0x00,0x85,0x03,0x00,0x01,0xaf,0x00,0xae,0x00,0x8b,0x03,0x83,0x00,0x82,0x03,0x85,0x00,0x83,0x03,0x01,0x06,0x03,0xb1,0x00,0x96,0x00,0x08,0x05,0x03,0x06,0x03,0x03,0x06,0x03,0x06,0x06,0x82,0x03,0x01,0x05,0x06,0x82,
0x03,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x8c,0x03,0x00,0x06,0x8e,0x03,0x01,0x06,0x03,0x82,0x00,0x00,0x05,0x82,0x03,0x82,0x06,0x00,0x07,0x84,0x06,0x00,0x07,0x82,0x06,0x82,0x07,0x02,0x06,0x07,0x07,0x83,0x06,0x93,0x00,0x96,0x00,0x00,0x06,0x9c,0x03,0x82,0x01,0x87,0x03,0x00,0x02,0x88,0x03,0x02,0x02,0x03,0x03,0x84,0x00,0x05,0x03,0x01,0x02,0x03,0x02,0x07,0x84,0x02,0x00,0x07,0x83,0x02,0x05,0x07,0x02,0x07,0x07,0x02,0x02,0x82,0x07,0x00,0x06,0x93,0x00,0x97,0x00,0x06,0x03,0x03,0x01,0x02,0x01,0x01,0x03,0x82,0x01,0x04,0x03,0x03,0x01,0x01,0x03,0x85,0x01,0x85,0x03,0x84,0x01,0x82,0x03,0x00,0x02,0x83,0x03,0x00,0x01,0x88,0x03,0x02,0x02,0x03,0x06,
0x83,0x00,0x01,0x03,0x02,0x82,0x01,0x02,0x02,0x01,0x02,0x82,0x01,0x00,0x02,0x82,0x01,0x82,0x02,0x00,0x01,0x84,0x02,0x01,0x07,0x06,0x94,0x00,0x97,0x00,0x01,0x06,0x03,0x84,0x01,0x04,0x03,0x01,0x01,0x03,0x03,0x87,0x01,0x84,0x03,0x07,0x01,0x00,0x01,0x00,0x01,0x02,0x03,0x06,0x85,0x03,0x00,0x01,0x84,0x03,0x00,0x06,0x82,0x03,0x00,0x01,0x82,0x03,0x83,0x00,0x04,0x03,0x01,0x01,0x02,0x02,0x83,0x01,0x82,0x02,0x84,0x01,0x01,0x02,0x02,0x83,0x01,0x01,0x02,0x07,0x95,0x00,0x98,0x00,0x0a,0x03,0x03,0x01,0x01,0x00,0x01,0x03,0x01,0x01,0x03,0x03,0x88,0x01,0x04,0x03,0x03,0x01,0x01,0x00,0x83,0x01,0x00,0x02,0x82,0x03,0x00,0x01,0x83,0x03,0x00,0x01,0x8b,0x03,
0x83,0x00,0x0c,0x03,0x01,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x02,0x01,0x01,0x02,0x83,0x01,0x01,0x02,0x02,0x83,0x01,0x02,0x02,0x07,0x06,0x95,0x00,0x99,0x00,0x00,0x03,0x87,0x01,0x01,0x03,0x03,0x86,0x01,0x82,0x03,0x86,0x01,0x82,0x03,0x01,0x02,0x02,0x82,0x03,0x02,0x02,0x03,0x06,0x8a,0x03,0x83,0x00,0x00,0x02,0x84,0x01,0x02,0x07,0x02,0x02,0x86,0x01,0x08,0x02,0x01,0x01,0x02,0x01,0x01,0x02,0x02,0x07,0x96,0x00,0x99,0x00,0x01,0x03,0x03,0x83,0x01,0x04,0x03,0x01,0x01,0x03,0x03,0x86,0x01,0x02,0x03,0x06,0x03,0x84,0x01,0x00,0x02,0x82,0x03,0x82,0x01,0x82,0x03,0x00,0x02,0x85,0x03,0x01,0x01,0x06,0x84,0x03,0x82,0x00,0x02,0x03,0x01,0x00,0x83,0x01,0x05,
0x02,0x07,0x02,0x01,0x01,0x02,0x82,0x01,0x03,0x02,0x02,0x01,0x02,0x82,0x01,0x02,0x02,0x07,0x06,0x96,0x00,0x9a,0x00,0x01,0x03,0x03,0x83,0x01,0x04,0x03,0x01,0x01,0x03,0x03,0x84,0x01,0x82,0x03,0x00,0x02,0x84,0x01,0x82,0x03,0x82,0x01,0x00,0x02,0x83,0x03,0x00,0x02,0x83,0x03,0x0d,0x01,0x01,0x03,0x03,0x01,0x01,0x02,0x06,0x00,0x00,0x03,0x02,0x01,0x02,0x83,0x01,0x01,0x02,0x02,0x89,0x01,0x05,0x02,0x01,0x01,0x02,0x02,0x06,0x97,0x00,0x9a,0x00,0x01,0x06,0x03,0x83,0x01,0x04,0x03,0x01,0x01,0x03,0x03,0x84,0x01,0x82,0x03,0x84,0x01,0x83,0x03,0x83,0x01,0x83,0x03,0x06,0x01,0x01,0x02,0x03,0x02,0x00,0x02,0x83,0x00,0x00,0x02,0x83,0x03,0x00,0x00,0x90,0x01,
0x00,0x02,0x82,0x01,0x01,0x02,0x07,0x98,0x00,0x9b,0x00,0x01,0x03,0x03,0x82,0x01,0x05,0x03,0x03,0x01,0x01,0x03,0x03,0x83,0x01,0x82,0x03,0x83,0x01,0x82,0x03,0x0c,0x01,0x00,0x01,0x01,0x02,0x01,0x01,0x03,0x02,0x00,0x01,0x01,0x00,0x82,0x01,0x07,0x02,0x02,0x01,0x02,0x02,0x01,0x02,0x02,0x85,0x01,0x0c,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x02,0x83,0x01,0x02,0x02,0x02,0x06,0x98,0x00,0x9b,0x00,0x01,0x03,0x03,0x83,0x01,0x01,0x03,0x01,0x82,0x03,0x82,0x01,0x83,0x03,0x02,0x01,0x01,0x02,0x82,0x03,0x87,0x01,0x01,0x00,0x00,0x83,0x01,0x00,0x00,0x85,0x01,0x03,0x02,0x01,0x00,0x00,0x83,0x01,0x01,0x02,0x02,0x84,0x01,0x00,0x02,0x84,
0x01,0x83,0x02,0x03,0x01,0x02,0x02,0x06,0x99,0x00,0x9c,0x00,0x02,0x03,0x03,0x02,0x82,0x01,0x03,0x03,0x01,0x03,0x03,0x82,0x01,0x88,0x03,0x07,0x01,0x00,0x01,0x01,0x02,0x01,0x02,0x02,0x82,0x01,0x07,0x02,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x86,0x02,0x82,0x01,0x0a,0x02,0x02,0x01,0x02,0x02,0x01,0x02,0x02,0x01,0x02,0x02,0x82,0x01,0x82,0x02,0x04,0x01,0x01,0x02,0x07,0x06,0x99,0x00,0x9c,0x00,0x07,0x05,0x03,0x03,0x01,0x01,0x02,0x03,0x04,0x83,0x03,0x00,0x01,0x86,0x03,0x0a,0x01,0x00,0x01,0x02,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x82,0x02,0x09,0x01,0x02,0x01,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x84,0x02,0x00,0x01,0x83,0x02,0x08,0x01,0x02,0x01,0x02,
0x01,0x02,0x01,0x02,0x01,0x86,0x02,0x01,0x07,0x06,0x9a,0x00,0x9d,0x00,0x06,0x03,0x03,0x02,0x01,0x03,0x01,0x02,0x82,0x03,0x00,0x01,0x82,0x03,0x06,0x01,0x01,0x02,0x01,0x00,0x01,0x01,0x84,0x02,0x00,0x01,0x82,0x02,0x01,0x01,0x01,0x84,0x02,0x07,0x01,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x83,0x02,0x06,0x01,0x02,0x01,0x02,0x01,0x02,0x02,0x82,0x01,0x01,0x02,0x01,0x87,0x02,0x01,0x07,0x05,0x9a,0x00,0x9e,0x00,0x01,0x03,0x03,0x82,0x01,0x01,0x03,0x02,0x85,0x03,0x84,0x01,0x02,0x02,0x01,0x01,0x82,0x02,0x04,0x01,0x01,0x02,0x02,0x01,0x84,0x02,0x00,0x01,0x84,0x02,0x00,0x01,0x82,0x02,0x00,0x01,0x85,0x02,0x00,0x01,0x87,0x02,0x00,0x01,0x85,0x02,0x01,0x07,
0x06,0x9b,0x00,0x9e,0x00,0x04,0x05,0x03,0x01,0x03,0x01,0x87,0x03,0x83,0x01,0x02,0x02,0x02,0x03,0x98,0x02,0x00,0x01,0x86,0x02,0x00,0x01,0x8c,0x02,0x01,0x06,0x06,0x9b,0x00,0x9e,0x00,0x13,0x05,0x05,0x03,0x03,0x06,0x04,0x04,0x03,0x06,0x06,0x03,0x01,0x03,0x04,0x03,0x03,0x04,0x03,0x03,0x01,0x8c,0x02,0x08,0x03,0x06,0x03,0x04,0x03,0x06,0x03,0x04,0x06,0x82,0x03,0x89,0x02,0x0d,0x01,0x04,0x06,0x03,0x04,0x06,0x06,0x03,0x04,0x04,0x07,0x07,0x05,0x06,0x9b,0x00,0x86,0x00,0xa1,0x05,0x82,0x04,0x85,0x05,0x82,0x03,0x82,0x02,0x00,0x03,0x85,0x02,0x00,0x07,0x8a,0x05,0x00,0x03,0x87,0x02,0x00,0x07,0xaa,0x05,0x84,0x00,0x02,0x05,0x05,0x04,0x94,0x05,0x00,0x04,
0x8c,0x05,0x00,0x04,0x83,0x05,0x00,0x06,0x82,0x05,0x01,0x03,0x03,0x84,0x02,0x03,0x03,0x02,0x02,0x07,0x8b,0x05,0x00,0x03,0x85,0x02,0x0a,0x07,0x06,0x05,0x05,0x04,0x05,0x06,0x05,0x05,0x04,0x06,0x8b,0x05,0x00,0x04,0x83,0x05,0x07,0x04,0x05,0x04,0x05,0x05,0x06,0x05,0x04,0x85,0x05,0x03,0x04,0x05,0x06,0x05,0x82,0x00,0x86,0x05,0x00,0x06,0x92,0x05,0x04,0x04,0x05,0x04,0x05,0x06,0x82,0x05,0x03,0x04,0x05,0x05,0x04,0x82,0x05,0x00,0x04,0x85,0x05,0x82,0x03,0x01,0x02,0x03,0x83,0x02,0x05,0x07,0x07,0x05,0x04,0x05,0x04,0x87,0x05,0x00,0x03,0x84,0x02,0x00,0x07,0x82,0x05,0x00,0x06,0x85,0x05,0x07,0x04,0x05,0x05,0x04,0x05,0x06,0x05,0x06,0x85,0x05,0x00,0x04,
0x87,0x05,0x07,0x04,0x05,0x05,0x04,0x04,0x05,0x04,0x04,0x82,0x05,0x01,0x06,0x00,0x01,0x00,0x00,0x8d,0x05,0x00,0x04,0x89,0x05,0x04,0x06,0x05,0x06,0x05,0x04,0x84,0x05,0x00,0x04,0x88,0x05,0x07,0x04,0x05,0x05,0x04,0x04,0x05,0x03,0x03,0x85,0x02,0x00,0x03,0x8c,0x05,0x00,0x03,0x83,0x02,0x00,0x07,0x86,0x05,0x01,0x06,0x04,0x83,0x05,0x00,0x04,0x84,0x05,0x01,0x04,0x04,0x82,0x05,0x00,0x04,0x82,0x05,0x12,0x04,0x05,0x05,0x04,0x05,0x04,0x05,0x05,0x04,0x04,0x05,0x04,0x05,0x04,0x05,0x05,0x04,0x05,0x00,0x00,0x00,0x83,0x05,0x07,0x04,0x04,0x05,0x05,0x04,0x05,0x05,0x04,0x8a,0x05,0x0a,0x04,0x05,0x03,0x06,0x05,0x06,0x05,0x05,0x04,0x05,0x04,0x82,0x05,0x06,
0x04,0x05,0x05,0x04,0x05,0x04,0x04,0x83,0x05,0x00,0x04,0x82,0x05,0x12,0x06,0x03,0x03,0x02,0x03,0x03,0x02,0x07,0x07,0x05,0x06,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x82,0x05,0x0b,0x03,0x03,0x02,0x07,0x07,0x05,0x05,0x06,0x05,0x05,0x04,0x04,0x82,0x05,0x03,0x04,0x05,0x05,0x04,0x82,0x05,0x02,0x04,0x05,0x04,0x84,0x05,0x04,0x04,0x05,0x04,0x05,0x05,0x82,0x04,0x09,0x05,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x82,0x04,0x01,0x00,0x00,0x05,0x00,0x05,0x05,0x04,0x04,0x05,0x82,0x04,0x02,0x05,0x05,0x04,0x86,0x05,0x00,0x04,0x85,0x05,0x03,0x03,0x06,0x05,0x04,0x85,0x05,0x04,0x04,0x04,0x05,0x05,0x04,0x83,0x05,0x00,0x04,0x88,0x05,0x05,0x03,0x02,
0x03,0x02,0x02,0x07,0x88,0x05,0x00,0x06,0x83,0x05,0x06,0x03,0x07,0x02,0x07,0x05,0x05,0x04,0x8d,0x05,0x00,0x04,0x86,0x05,0x10,0x04,0x05,0x05,0x04,0x04,0x05,0x04,0x05,0x05,0x04,0x05,0x05,0x04,0x05,0x04,0x05,0x04,0x82,0x05,0x03,0x04,0x05,0x00,0x00,0x05,0x00,0x05,0x04,0x05,0x05,0x04,0x82,0x05,0x06,0x04,0x05,0x05,0x04,0x05,0x05,0x04,0x86,0x05,0x0b,0x04,0x05,0x06,0x03,0x06,0x05,0x06,0x05,0x04,0x05,0x04,0x04,0x83,0x05,0x04,0x04,0x04,0x05,0x05,0x04,0x82,0x05,0x15,0x04,0x05,0x04,0x05,0x06,0x05,0x06,0x05,0x03,0x03,0x02,0x02,0x03,0x07,0x05,0x06,0x06,0x04,0x04,0x05,0x04,0x06,0x85,0x05,0x03,0x03,0x02,0x07,0x07,0x86,0x05,0x07,0x04,0x05,0x04,0x05,
0x04,0x05,0x05,0x04,0x84,0x05,0x06,0x06,0x05,0x05,0x06,0x07,0x05,0x04,0x82,0x05,0x12,0x04,0x05,0x05,0x04,0x05,0x04,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x04,0x05,0x04,0x05,0x00,0x00,0x82,0x05,0x05,0x04,0x04,0x05,0x04,0x05,0x05,0x82,0x04,0x11,0x05,0x05,0x04,0x05,0x05,0x06,0x05,0x05,0x04,0x05,0x06,0x06,0x05,0x03,0x03,0x07,0x05,0x04,0x82,0x05,0x0c,0x04,0x05,0x05,0x06,0x05,0x06,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x83,0x05,0x13,0x04,0x05,0x05,0x04,0x05,0x03,0x03,0x02,0x04,0x07,0x05,0x05,0x04,0x05,0x05,0x04,0x04,0x05,0x04,0x04,0x82,0x05,0x09,0x06,0x05,0x03,0x03,0x07,0x05,0x05,0x04,0x05,0x04,0x84,0x05,0x82,0x06,0x0e,0x04,0x05,0x04,0x05,0x06,
0x04,0x05,0x04,0x04,0x05,0x06,0x07,0x07,0x05,0x04,0x83,0x05,0x82,0x04,0x05,0x05,0x06,0x04,0x05,0x04,0x05,0x82,0x04,0x02,0x05,0x04,0x05,0x82,0x00,0x00,0x05,0x84,0x04,0x02,0x05,0x04,0x04,0x8e,0x05,0x04,0x06,0x03,0x02,0x07,0x05,0x82,0x04,0x03,0x05,0x05,0x04,0x04,0x8a,0x05,0x11,0x04,0x04,0x05,0x05,0x04,0x05,0x04,0x05,0x06,0x03,0x02,0x02,0x07,0x05,0x04,0x05,0x04,0x04,0x84,0x05,0x07,0x04,0x05,0x05,0x04,0x05,0x03,0x07,0x06,0x86,0x05,0x02,0x04,0x05,0x04,0x8b,0x05,0x00,0x06,0x82,0x07,0x07,0x06,0x05,0x05,0x04,0x04,0x05,0x05,0x04,0x8b,0x05,0x83,0x00,0x06,0x05,0x04,0x04,0x05,0x05,0x04,0x04,0x82,0x05,0x00,0x06,0x82,0x03,0x08,0x04,0x06,0x03,0x04,
0x03,0x03,0x06,0x03,0x04,0x82,0x03,0x11,0x02,0x07,0x05,0x07,0x04,0x05,0x04,0x04,0x05,0x04,0x04,0x05,0x06,0x06,0x04,0x04,0x06,0x06,0x82,0x05,0x0f,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x04,0x05,0x03,0x02,0x07,0x05,0x05,0x04,0x04,0x82,0x05,0x14,0x04,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x03,0x06,0x05,0x05,0x06,0x05,0x05,0x04,0x05,0x04,0x05,0x04,0x82,0x05,0x16,0x07,0x06,0x05,0x05,0x06,0x06,0x07,0x06,0x05,0x06,0x07,0x02,0x07,0x07,0x06,0x05,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x8e,0x00,0x00,0x05,0x86,0x04,0x09,0x05,0x06,0x03,0x03,0x02,0x01,0x03,0x02,0x02,0x03,0x82,0x02,0x00,0x03,0x82,0x02,0x0f,0x03,0x02,0x07,0x05,0x04,0x05,0x04,0x04,0x05,
0x04,0x04,0x06,0x05,0x06,0x03,0x02,0x82,0x03,0x10,0x06,0x06,0x05,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x03,0x02,0x04,0x05,0x05,0x85,0x04,0x1d,0x05,0x04,0x05,0x04,0x05,0x05,0x06,0x05,0x03,0x07,0x05,0x06,0x05,0x04,0x05,0x05,0x04,0x05,0x04,0x05,0x05,0x06,0x03,0x07,0x06,0x05,0x06,0x07,0x07,0x03,0x83,0x07,0x02,0x02,0x07,0x07,0x82,0x04,0x05,0x05,0x04,0x05,0x04,0x04,0x05,0x8e,0x00,0x00,0x05,0x86,0x04,0x01,0x06,0x05,0x83,0x03,0x00,0x02,0x87,0x03,0x09,0x02,0x02,0x03,0x02,0x03,0x05,0x07,0x04,0x05,0x05,0x82,0x04,0x82,0x06,0x14,0x03,0x03,0x02,0x02,0x03,0x03,0x06,0x05,0x05,0x04,0x04,0x05,0x04,0x04,0x06,0x06,0x05,0x03,0x07,0x05,0x06,0x88,
0x04,0x08,0x05,0x04,0x04,0x06,0x04,0x05,0x06,0x07,0x05,0x82,0x04,0x11,0x05,0x04,0x05,0x04,0x04,0x05,0x06,0x03,0x07,0x07,0x06,0x06,0x07,0x03,0x07,0x07,0x06,0x07,0x82,0x02,0x0a,0x07,0x07,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x04,0x05,0x8e,0x00,0x01,0x05,0x05,0x84,0x04,0x01,0x05,0x04,0x82,0x05,0x07,0x06,0x05,0x06,0x06,0x05,0x05,0x03,0x05,0x84,0x03,0x82,0x02,0x00,0x05,0x83,0x04,0x0e,0x05,0x05,0x04,0x05,0x03,0x03,0x05,0x03,0x03,0x02,0x03,0x03,0x07,0x05,0x06,0x86,0x04,0x04,0x06,0x03,0x06,0x05,0x06,0x84,0x04,0x00,0x05,0x84,0x04,0x0a,0x05,0x04,0x04,0x05,0x06,0x05,0x05,0x04,0x05,0x04,0x06,0x82,0x04,0x0c,0x05,0x05,0x03,0x02,0x07,0x06,0x06,0x07,
0x03,0x07,0x02,0x03,0x07,0x83,0x02,0x05,0x07,0x07,0x05,0x04,0x04,0x05,0x84,0x04,0x00,0x05,0x88,0x00,0x00,0x05,0x83,0x00,0x00,0x05,0x88,0x04,0x00,0x05,0x83,0x04,0x01,0x06,0x05,0x82,0x04,0x00,0x06,0x82,0x05,0x82,0x03,0x05,0x07,0x05,0x07,0x04,0x04,0x05,0x82,0x04,0x0b,0x06,0x05,0x03,0x06,0x03,0x03,0x04,0x03,0x06,0x05,0x05,0x06,0x85,0x04,0x04,0x06,0x05,0x07,0x05,0x05,0x8e,0x04,0x03,0x05,0x06,0x05,0x05,0x86,0x04,0x0b,0x05,0x06,0x03,0x02,0x03,0x06,0x03,0x03,0x07,0x07,0x03,0x07,0x84,0x02,0x01,0x07,0x07,0x84,0x04,0x0b,0x05,0x04,0x04,0x05,0x04,0x05,0x04,0x05,0x05,0x04,0x05,0x06,0x82,0x04,0x00,0x05,0x82,0x00,0x01,0x00,0x05,0x89,0x04,0x01,0x05,
0x05,0x83,0x04,0x0a,0x05,0x05,0x04,0x04,0x06,0x05,0x05,0x03,0x03,0x02,0x05,0x83,0x04,0x02,0x05,0x04,0x04,0x8a,0x05,0x86,0x04,0x83,0x05,0x86,0x04,0x01,0x05,0x05,0x86,0x04,0x03,0x05,0x06,0x05,0x06,0x86,0x04,0x0a,0x05,0x03,0x02,0x07,0x06,0x07,0x07,0x03,0x02,0x03,0x07,0x82,0x02,0x00,0x07,0x82,0x02,0x01,0x07,0x05,0x85,0x04,0x02,0x05,0x04,0x05,0x89,0x04,0x00,0x05,0x82,0x00,0x03,0x00,0x05,0x04,0x05,0x93,0x04,0x04,0x05,0x05,0x03,0x04,0x05,0x8d,0x04,0x01,0x05,0x05,0x88,0x04,0x83,0x05,0x86,0x04,0x01,0x05,0x05,0x86,0x04,0x02,0x05,0x06,0x05,0x87,0x04,0x09,0x05,0x03,0x02,0x06,0x06,0x07,0x03,0x07,0x02,0x03,0x85,0x02,0x02,0x01,0x07,0x07,0x85,0x04,
0x03,0x05,0x04,0x05,0x05,0x8a,0x04,0x82,0x00,0x02,0x00,0x05,0x05,0x96,0x04,0x02,0x05,0x03,0x05,0x98,0x04,0x01,0x05,0x05,0x88,0x04,0x01,0x05,0x05,0x86,0x04,0x05,0x05,0x04,0x05,0x06,0x04,0x07,0x84,0x04,0x09,0x05,0x03,0x02,0x06,0x06,0x07,0x02,0x02,0x07,0x07,0x83,0x02,0x04,0x01,0x02,0x02,0x07,0x07,0x93,0x04,0x00,0x05,0x82,0x00,0x03,0x00,0x00,0x05,0x04,0x91,0x01,0x06,0x00,0x01,0x01,0x04,0x05,0x05,0x06,0x84,0x01,0x03,0x00,0x01,0x04,0x01,0x82,0x00,0x84,0x01,0x06,0x00,0x01,0x00,0x01,0x00,0x01,0x01,0x82,0x05,0x04,0x04,0x01,0x01,0x04,0x00,0x82,0x01,0x02,0x05,0x05,0x04,0x85,0x01,0x08,0x04,0x04,0x05,0x04,0x04,0x00,0x01,0x01,0x00,0x82,0x01,0x09,
0x05,0x03,0x06,0x06,0x03,0x02,0x07,0x07,0x02,0x07,0x86,0x02,0x05,0x07,0x07,0x04,0x01,0x04,0x01,0x86,0x04,0x01,0x01,0x04,0x82,0x01,0x00,0x00,0x82,0x01,0x00,0x05,0x82,0x00,0x82,0x00,0x01,0x05,0x01,0x83,0x00,0x01,0x01,0x00,0x88,0x01,0x85,0x00,0x03,0x04,0x05,0x05,0x01,0x85,0x00,0x01,0x01,0x05,0x8d,0x00,0x00,0x04,0x82,0x05,0x00,0x04,0x83,0x00,0x10,0x01,0x01,0x04,0x05,0x05,0x04,0x00,0x01,0x00,0x01,0x01,0x00,0x01,0x04,0x04,0x05,0x04,0x86,0x00,0x08,0x05,0x03,0x05,0x07,0x07,0x02,0x03,0x02,0x07,0x86,0x02,0x03,0x01,0x07,0x07,0x04,0x85,0x01,0x02,0x04,0x01,0x04,0x84,0x01,0x84,0x00,0x00,0x04,0x82,0x00,0x82,0x00,0x02,0x05,0x05,0x04,0x82,0x01,0x03,
0x00,0x01,0x00,0x00,0x83,0x01,0x00,0x04,0x82,0x01,0x08,0x00,0x01,0x00,0x00,0x01,0x04,0x05,0x05,0x01,0x85,0x00,0x02,0x04,0x05,0x04,0x8b,0x00,0x00,0x04,0x82,0x05,0x01,0x04,0x00,0x83,0x01,0x01,0x00,0x01,0x82,0x05,0x01,0x04,0x00,0x82,0x01,0x06,0x00,0x01,0x00,0x04,0x06,0x05,0x07,0x83,0x00,0x0a,0x01,0x00,0x00,0x04,0x05,0x05,0x07,0x03,0x02,0x03,0x07,0x82,0x02,0x00,0x01,0x83,0x02,0x03,0x01,0x07,0x07,0x04,0x84,0x01,0x00,0x04,0x89,0x01,0x03,0x00,0x01,0x00,0x04,0x82,0x00,0x84,0x00,0x82,0x05,0x8a,0x04,0x03,0x01,0x01,0x00,0x01,0x82,0x00,0x03,0x01,0x05,0x05,0x01,0x85,0x00,0x03,0x01,0x05,0x05,0x01,0x85,0x00,0x03,0x01,0x00,0x01,0x01,0x83,0x05,0x00,
0x04,0x82,0x01,0x00,0x00,0x82,0x01,0x0f,0x04,0x05,0x06,0x07,0x04,0x01,0x01,0x00,0x01,0x01,0x00,0x01,0x06,0x06,0x07,0x04,0x86,0x00,0x06,0x04,0x05,0x03,0x03,0x02,0x07,0x03,0x87,0x02,0x04,0x01,0x07,0x02,0x07,0x04,0x83,0x01,0x03,0x04,0x01,0x04,0x04,0x82,0x05,0x82,0x04,0x00,0x05,0x83,0x04,0x83,0x00,0x8f,0x00,0x82,0x05,0x84,0x01,0x08,0x00,0x01,0x04,0x05,0x05,0x01,0x00,0x01,0x01,0x82,0x00,0x02,0x04,0x05,0x05,0x89,0x04,0x05,0x05,0x05,0x03,0x04,0x05,0x04,0x86,0x01,0x04,0x05,0x03,0x02,0x07,0x04,0x86,0x01,0x0d,0x05,0x06,0x05,0x04,0x01,0x01,0x00,0x01,0x00,0x01,0x01,0x04,0x05,0x04,0x83,0x07,0x89,0x02,0x04,0x07,0x07,0x04,0x01,0x04,0x84,0x01,0x01,
0x04,0x05,0x8d,0x00,0x91,0x00,0x01,0x04,0x04,0x86,0x01,0x04,0x05,0x05,0x01,0x01,0x00,0x82,0x01,0x02,0x00,0x04,0x05,0x86,0x00,0x0b,0x05,0x06,0x05,0x05,0x06,0x04,0x07,0x05,0x05,0x01,0x01,0x04,0x83,0x01,0x05,0x04,0x05,0x03,0x07,0x06,0x04,0x86,0x01,0x05,0x04,0x05,0x07,0x05,0x01,0x00,0x82,0x01,0x04,0x00,0x01,0x01,0x05,0x05,0x82,0x03,0x89,0x02,0x08,0x01,0x01,0x04,0x04,0x01,0x01,0x04,0x04,0x01,0x82,0x04,0x8e,0x00,0x91,0x00,0x01,0x05,0x05,0x85,0x01,0x03,0x04,0x05,0x05,0x04,0x85,0x01,0x00,0x04,0x87,0x00,0x08,0x05,0x03,0x03,0x06,0x03,0x06,0x06,0x05,0x04,0x82,0x01,0x06,0x04,0x01,0x01,0x04,0x05,0x04,0x03,0x83,0x04,0x85,0x01,0x04,0x05,0x03,0x04,
0x05,0x02,0x85,0x01,0x82,0x04,0x04,0x05,0x03,0x02,0x03,0x03,0x85,0x02,0x05,0x07,0x02,0x02,0x07,0x07,0x04,0x82,0x01,0x04,0x04,0x01,0x04,0x01,0x05,0x8e,0x00,0x91,0x00,0x0a,0x05,0x04,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x05,0x05,0x86,0x01,0x00,0x04,0x88,0x00,0x06,0x06,0x03,0x02,0x03,0x06,0x05,0x05,0x83,0x04,0x0f,0x01,0x01,0x04,0x04,0x05,0x03,0x06,0x04,0x05,0x04,0x01,0x04,0x01,0x04,0x01,0x01,0x83,0x04,0x01,0x05,0x04,0x82,0x01,0x05,0x04,0x01,0x04,0x01,0x01,0x04,0x82,0x05,0x83,0x06,0x02,0x05,0x06,0x07,0x83,0x06,0x01,0x05,0x05,0x86,0x04,0x02,0x01,0x04,0x05,0x8d,0x00,0x02,0x00,0x04,0x06,0x82,0x05,0x04,0x04,0x06,0x05,0x04,0x06,0x82,0x05,0x10,
0x04,0x05,0x04,0x05,0x04,0x04,0x01,0x04,0x04,0x01,0x04,0x01,0x04,0x05,0x05,0x04,0x04,0x82,0x01,0x02,0x04,0x01,0x04,0x89,0x00,0x02,0x03,0x03,0x06,0x82,0x05,0x83,0x04,0x00,0x01,0x82,0x04,0x82,0x05,0x06,0x04,0x05,0x04,0x01,0x04,0x01,0x01,0x83,0x04,0x07,0x03,0x07,0x07,0x05,0x04,0x04,0x01,0x04,0x82,0x01,0x82,0x04,0x00,0x06,0x85,0x04,0x10,0x07,0x06,0x04,0x04,0x06,0x04,0x04,0x05,0x04,0x01,0x04,0x03,0x04,0x01,0x04,0x04,0x05,0x8c,0x04,0x01,0x00,0x00,0x00,0x05,0x95,0x04,0x08,0x03,0x01,0x04,0x04,0x05,0x05,0x01,0x04,0x01,0x84,0x04,0x89,0x00,0x06,0x06,0x03,0x07,0x05,0x05,0x04,0x05,0x92,0x04,0x09,0x01,0x04,0x04,0x02,0x07,0x05,0x04,0x01,0x04,0x01,
0x84,0x04,0x00,0x03,0x8d,0x04,0x00,0x05,0x8c,0x04,0x00,0x06,0x87,0x04,0x01,0x05,0x00,0x00,0x05,0x98,0x04,0x82,0x05,0x85,0x04,0x01,0x01,0x04,0x8a,0x00,0x01,0x03,0x06,0x82,0x05,0x94,0x04,0x05,0x05,0x03,0x02,0x07,0x07,0x05,0x82,0x04,0x00,0x02,0x8a,0x04,0x00,0x03,0x86,0x04,0x00,0x06,0x94,0x04,0x02,0x01,0x05,0x00,0x00,0x05,0x98,0x04,0x82,0x05,0x86,0x04,0x00,0x05,0x8a,0x00,0x03,0x06,0x05,0x05,0x06,0x82,0x05,0x82,0x04,0x01,0x05,0x05,0x87,0x04,0x0d,0x03,0x04,0x04,0x01,0x04,0x03,0x05,0x03,0x03,0x02,0x07,0x05,0x05,0x06,0x94,0x04,0x01,0x05,0x06,0x94,0x04,0x01,0x05,0x00,0x00,0x05,0x8a,0x04,0x01,0x06,0x06,0x8a,0x04,0x03,0x05,0x00,0x00,0x05,0x87,
0x04,0x8a,0x00,0x83,0x05,0x02,0x04,0x04,0x05,0x82,0x04,0x01,0x05,0x05,0x8d,0x04,0x07,0x05,0x03,0x03,0x02,0x07,0x07,0x05,0x05,0x84,0x04,0x00,0x06,0x8e,0x04,0x00,0x05,0x87,0x04,0x00,0x06,0x8c,0x04,0x01,0x05,0x00,0x02,0x05,0x05,0x06,0x83,0x04,0x03,0x06,0x04,0x04,0x05,0x83,0x04,0x03,0x06,0x06,0x04,0x05,0x83,0x04,0x01,0x06,0x05,0x82,0x00,0x03,0x05,0x06,0x04,0x06,0x83,0x04,0x00,0x05,0x8a,0x00,0x82,0x05,0x05,0x06,0x05,0x04,0x04,0x06,0x04,0x82,0x05,0x87,0x04,0x00,0x06,0x84,0x04,0x01,0x05,0x06,0x82,0x02,0x00,0x07,0x82,0x05,0x84,0x04,0x00,0x06,0x83,0x04,0x02,0x06,0x04,0x06,0x82,0x04,0x0c,0x06,0x04,0x06,0x04,0x05,0x05,0x04,0x05,0x04,0x04,0x06,
0x04,0x05,0x82,0x04,0x04,0x06,0x04,0x05,0x04,0x06,0x82,0x04,0x04,0x06,0x04,0x04,0x05,0x00,0x02,0x05,0x04,0x06,0x82,0x04,0x00,0x06,0x82,0x04,0x00,0x06,0x82,0x04,0x00,0x06,0x82,0x04,0x05,0x06,0x04,0x04,0x06,0x05,0x05,0x83,0x00,0x02,0x05,0x04,0x06,0x82,0x04,0x02,0x06,0x04,0x05,0x8a,0x00,0x04,0x05,0x06,0x05,0x05,0x04,0x82,0x06,0x19,0x05,0x05,0x06,0x06,0x05,0x04,0x06,0x06,0x04,0x04,0x05,0x04,0x06,0x06,0x04,0x04,0x06,0x04,0x05,0x03,0x03,0x02,0x03,0x07,0x06,0x06,0x84,0x05,0x0c,0x06,0x06,0x04,0x05,0x04,0x04,0x06,0x04,0x04,0x05,0x04,0x04,0x05,0x82,0x04,0x18,0x05,0x05,0x04,0x04,0x06,0x04,0x05,0x04,0x06,0x04,0x04,0x06,0x04,0x04,0x06,0x04,0x04,
0x05,0x04,0x04,0x06,0x04,0x04,0x05,0x00,0x95,0x05,0x85,0x00,0x84,0x05,0x00,0x06,0x82,0x05,0x89,0x00,0x89,0x05,0x02,0x06,0x03,0x07,0x82,0x05,0x02,0x06,0x05,0x04,0x88,0x05,0x04,0x03,0x02,0x07,0x03,0x06,0x82,0x07,0x00,0x00,0x87,0x05,0x00,0x06,0x84,0x05,0x00,0x06,0x87,0x05,0x01,0x06,0x04,0x86,0x05,0x00,0x06,0x89,0x05,0x00,0x00,0xb2,0x00,0x85,0x05,0x03,0x03,0x02,0x02,0x06,0x8d,0x05,0x06,0x03,0x02,0x02,0x06,0x06,0x02,0x03,0xad,0x00,0xb3,0x00,0x03,0x06,0x03,0x06,0x06,0x84,0x02,0x05,0x07,0x03,0x02,0x07,0x02,0x04,0x82,0x02,0x03,0x03,0x02,0x02,0x04,0x82,0x02,0x04,0x07,0x06,0x03,0x03,0x07,0xad,0x00,0xb3,0x00,0x00,0x06,0x83,0x03,0x06,0x02,0x01,
0x02,0x02,0x01,0x02,0x01,0x84,0x02,0x00,0x01,0x85,0x02,0x04,0x07,0x06,0x06,0x03,0x03,0xae,0x00,0xb4,0x00,0x00,0x06,0x82,0x03,0x86,0x02,0x02,0x01,0x02,0x01,0x87,0x02,0x04,0x03,0x03,0x06,0x07,0x02,0xaf,0x00,0xb4,0x00,0x00,0x06,0x82,0x03,0x03,0x02,0x01,0x02,0x01,0x87,0x02,0x00,0x01,0x85,0x02,0x03,0x07,0x06,0x02,0x03,0xaf,0x00,0xb5,0x00,0x83,0x03,0x83,0x02,0x05,0x01,0x02,0x02,0x01,0x02,0x01,0x86,0x02,0x03,0x03,0x06,0x03,0x07,0xb0,0x00,0xb5,0x00,0x00,0x05,0x82,0x03,0x8e,0x02,0x04,0x03,0x07,0x06,0x06,0x03,0xb1,0x00,0xb5,0x00,0x01,0x06,0x05,0x82,0x03,0x04,0x07,0x07,0x02,0x07,0x07,0x85,0x02,0x83,0x07,0x03,0x06,0x06,0x03,0x07,0xb1,0x00,0xa7,
0x00,0x85,0x05,0x84,0x00,0x84,0x05,0x03,0x06,0x07,0x07,0x06,0x84,0x05,0x04,0x06,0x07,0x02,0x03,0x02,0x85,0x05,0x02,0x07,0x06,0x06,0x85,0x05,0x83,0x00,0x82,0x05,0xa3,0x00,0xa7,0x00,0x86,0x05,0x82,0x00,0x85,0x05,0x82,0x06,0x86,0x05,0x03,0x07,0x02,0x07,0x06,0x85,0x05,0x01,0x06,0x07,0x86,0x05,0x82,0x00,0x84,0x05,0xa2,0x00,0xa7,0x00,0x86,0x05,0x82,0x00,0x86,0x05,0x01,0x06,0x07,0x86,0x05,0x02,0x06,0x07,0x07,0x86,0x05,0x01,0x06,0x00,0x86,0x05,0x01,0x00,0x00,0x86,0x05,0xa1,0x00,0xa7,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x06,0x06,0x82,0x05,0x00,0x00,0x82,0x05,0x02,0x07,0x03,0x07,0x82,
0x05,0x00,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x83,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0xa1,0x00,0xa6,0x00,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x82,0x00,0x82,0x05,0x05,0x00,0x00,0x05,0x05,0x06,0x06,0x83,0x05,0x00,0x00,0x82,0x05,0x06,0x07,0x07,0x06,0x05,0x05,0x00,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x83,0x00,0x05,0x05,0x05,0x00,0x00,0x05,0x05,0xa2,0x00,0xa6,0x00,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x82,0x00,0x82,0x05,0x05,0x00,0x00,0x05,0x05,0x06,0x07,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x07,0x02,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x83,0x00,0x01,0x05,0x05,0x83,0x00,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0xa2,0x00,0xa6,0x00,0x82,0x05,
0x03,0x00,0x00,0x05,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x83,0x05,0x05,0x06,0x06,0x05,0x05,0x00,0x00,0x82,0x05,0x06,0x07,0x02,0x06,0x05,0x05,0x00,0x00,0x82,0x05,0x83,0x00,0x01,0x05,0x05,0x83,0x00,0x82,0x05,0xa6,0x00,0xa6,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x03,0x02,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x83,0x00,0x01,0x05,0x05,0x84,0x00,0x82,0x05,0xa5,0x00,0xa6,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x86,0x05,0x02,0x06,0x02,0x07,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x82,0x00,0x82,0x05,0x84,
0x00,0x82,0x05,0xa5,0x00,0xa6,0x00,0x86,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x86,0x05,0x82,0x07,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x85,0x00,0x82,0x05,0xa4,0x00,0xa6,0x00,0x85,0x05,0x82,0x00,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x86,0x05,0x02,0x03,0x02,0x07,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x86,0x00,0x82,0x05,0xa3,0x00,0xa6,0x00,0x85,0x05,0x82,0x00,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x02,0x07,0x07,0x06,0x82,0x05,0x00,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x86,0x00,0x82,0x05,0xa3,0x00,0xa5,0x00,0x82,0x05,0x02,
0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x01,0x06,0x07,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x87,0x00,0x01,0x05,0x05,0xa3,0x00,0xa5,0x00,0x82,0x05,0x02,0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x01,0x07,0x06,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x83,0x00,0x01,0x05,0x05,0x88,0x00,0x01,0x05,0x05,0xa3,0x00,0xa5,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x01,0x07,0x06,0x82,0x05,0x01,0x00,0x00,0x82,0x05,0x83,0x00,0x01,0x05,
0x05,0x83,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0xa3,0x00,0xa5,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x01,0x06,0x06,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0xa3,0x00,0xa5,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0x01,0x00,0x00,0x88,0x05,0x00,0x07,0x82,0x05,0x03,0x00,0x00,0x05,0x05,0x83,0x00,0x82,0x05,0x83,0x00,0x82,0x05,0x00,0x00,0x82,0x05,0xa3,0x00,0xa5,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x85,0x05,0x82,0x00,0x87,0x05,0x01,0x00,0x00,0x86,
0x05,0x83,0x00,0x82,0x05,0x83,0x00,0x85,0x05,0xa4,0x00,0xa5,0x00,0x03,0x05,0x05,0x00,0x00,0x82,0x05,0x82,0x00,0x85,0x05,0x82,0x00,0x85,0x05,0x84,0x00,0x84,0x05,0x84,0x00,0x82,0x05,0x83,0x00,0x85,0x05,0xa4,0x00,0xb1,0x00,0x01,0x05,0x05,0x90,0x00,0x01,0x05,0x05,0x8f,0x00,0x01,0x05,0x05,0xa6,0x00,0xff,0x00,0xff,0x00
};
// http://paulbourke.net/dataformats/tga/
typedef struct {
char idlength;
char colourmaptype;
char datatypecode;
short colourmaporigin;
short colourmaplength;
char colourmapdepth;
short x_origin;
short y_origin;
short width;
short height;
char bitsperpixel;
char imagedescriptor;
struct { byte r,g,b; } palette[8];
byte data[0];
} TGAHeader;
void draw_tga(const byte* tgadata, byte x, byte y) {
const TGAHeader* hdr = (TGAHeader*) tgadata;
const byte* src = hdr->data;
byte* dest = &vidmem[x][y];
byte i,j,lastbyte;
for (i=0; i<8; i++) {
byte pal = 0;
pal |= (hdr->palette[i].r >> 5);
pal |= (hdr->palette[i].g >> 2) & 0x38;
pal |= (hdr->palette[i].b) & 0xc0;
palette[i] = pal;
}
for (j=0; j<hdr->height; j++) {
byte* start = dest;
i = 0;
lastbyte = 0;
while (i<hdr->width) {
byte count = *src++;
byte rle = count & 0x80;
byte color = 0;
if (rle) {
color = *src++; // fetch RLE byte
count &= 0x7f;
}
do {
if (!rle)
color = *src++; // fetch raw data
if ((i&1)==0) {
*dest = lastbyte = (color << 4); // even byte
} else {
*dest = lastbyte | color; // odd byte
dest += 256;
}
i++;
} while (count--);
}
dest = start+1;
watchdog0x39 = 0x39;
}
}
void clrscr() {
// doesn't work because memset uses LDIR
// and reads come from ROM
//memset(vidmem, 0, sizeof(vidmem));
word i = sizeof(vidmem)-1;
do {
vidmem[0][i] = 0;
watchdog0x39 = 0x39;
} while (i--);
}
void main() {
clrscr();
draw_tga(example_tga, 45, 76); // array, so no &
while (1) {
watchdog0x39 = 0x39;
}
}